Wat is van invloed op het aantal processorcores? Multicore-processor. Wat is centrale verwerkingseenheid?

  • zelfstudie

In dit artikel zal ik proberen de terminologie te beschrijven die wordt gebruikt om systemen te beschrijven die in staat zijn om meerdere programma's parallel uit te voeren, dat wil zeggen multicore, multiprocessor, multithreaded. De verschillende soorten parallellisme in IA-32 CPU's zijn op verschillende tijdstippen en op een enigszins inconsistente manier verschenen. Het is vrij gemakkelijk om hierin in de war te raken, vooral als je bedenkt dat besturingssystemen zorgvuldig details verbergen voor niet al te geavanceerde applicaties.

Het doel van het artikel is om aan te tonen dat met alle mogelijke configuraties van multiprocessor-, multicore- en multithreaded-systemen voor programma's die erop draaien, mogelijkheden worden gecreëerd voor zowel abstractie (het negeren van verschillen) als om rekening te houden met de specifieke kenmerken (het vermogen om programmatisch de configuratie achterhalen).

Waarschuwing voor merken ®, ™, in het artikel

Mine legt uit waarom werknemers van het bedrijf auteursrechten moeten gebruiken in openbare communicatie. In dit artikel moest ik ze vrij vaak gebruiken.

processor

Natuurlijk is de oudste, meest gebruikte en controversiële term 'processor'.

In de moderne wereld is een processor wat we kopen in een mooie Retail-doos of een niet erg mooi OEM-pakket. Een ondeelbare entiteit die wordt aangesloten op een socket op het moederbord. Zelfs als er geen connector is en niet kan worden verwijderd, dat wil zeggen, als deze stevig is gesoldeerd, is het één chip.

Mobiele systemen (telefoons, tablets, laptops) en de meeste desktops hebben één processor. Werkstations en servers hebben soms twee of meer processors op één moederbord.

Het ondersteunen van meerdere CPU's in één systeem vereist talrijke ontwerpwijzigingen. Het is minimaal noodzakelijk om hun fysieke verbinding te verzekeren (voorzie meerdere sockets op het moederbord), het oplossen van problemen met het identificeren van processors (zie verderop in dit artikel, evenals mijn opmerking), onderhandelen over geheugentoegangen en het leveren van interrupts (de interrupt controller moet interrupts naar meerdere processors kunnen routeren) en natuurlijk ondersteuning vanuit het besturingssysteem. Helaas kon ik geen documentaire vinden over de oprichting van het eerste multiprocessorsysteem op Intel-processors, maar Wikipedia beweert dat Sequent Computer Systems ze al in 1987 heeft geleverd met behulp van Intel 80386-processors. Brede ondersteuning voor meerdere chips in één systeem komt beschikbaar beginnend met Intel® Pentium.

Als er meerdere processors zijn, heeft elk van hen zijn eigen connector op het bord. Tegelijkertijd heeft elk van hen volledige onafhankelijke kopieën van alle bronnen, zoals registers, uitvoerders, caches. Ze delen een gemeenschappelijk geheugen - RAM. Het geheugen kan er op verschillende en nogal niet-triviale manieren mee in verband worden gebracht, maar dat is een verhaal apart dat buiten het bestek van dit artikel valt. Het is belangrijk dat in elk scenario voor de uitvoerbare programma's de illusie wordt gewekt van een uniform gedeeld geheugen dat beschikbaar is voor alle processors in het systeem.


Klaar voor de start! Intel® Desktop Board D5400XS

Kern

Historisch gezien verscheen multi-core in Intel IA-32 later dan Intel® HyperThreading, maar in de logische hiërarchie komt het daarna.

Het lijkt erop dat als het systeem meer processors heeft, de prestaties hoger zijn (op taken die alle bronnen kunnen gebruiken). Als de communicatiekosten tussen hen echter te hoog zijn, wordt alle winst van parallellisme teniet gedaan door lange vertragingen bij de overdracht van gedeelde gegevens. Dit is precies wat wordt waargenomen in systemen met meerdere processors - zowel fysiek als logisch zijn ze erg ver van elkaar. Om in een dergelijke omgeving effectief te communiceren, moeten gespecialiseerde bussen zoals Intel® QuickPath Interconnect worden uitgevonden. Het energieverbruik, de omvang en de prijs van de uiteindelijke oplossing nemen natuurlijk niet af van dit alles. Hoge integratie van componenten zou te hulp moeten komen - circuits die delen van een parallel programma uitvoeren, moeten dichter bij elkaar worden gesleept, bij voorkeur op één kristal. Met andere woorden, één processor moet er meerdere organiseren kernen, in alles identiek aan elkaar, maar zelfstandig werkend.

Intel's eerste multi-core IA-32-processors werden in 2005 geïntroduceerd. Sindsdien is het gemiddelde aantal cores in server-, desktop- en nu mobiele platforms gestaag gegroeid.

In tegenstelling tot twee single-coreprocessors op hetzelfde systeem, die alleen geheugen delen, kunnen twee cores ook caches en andere bronnen delen die verantwoordelijk zijn voor interactie met geheugen. Meestal blijven de caches van het eerste niveau privé (elke kern heeft zijn eigen), terwijl het tweede en derde niveau gedeeld of gescheiden kunnen worden. Deze organisatie van het systeem maakt het mogelijk om vertragingen in de gegevenslevering tussen aangrenzende kernen te verminderen, vooral als ze aan een gemeenschappelijke taak werken.


Een microfoto van een Intel quad-coreprocessor, codenaam Nehalem. Afzonderlijke kernen, een gedeelde L3-cache, evenals QPI-koppelingen naar andere processors en een gemeenschappelijke geheugencontroller worden toegewezen.

Hyperthreading

Tot ongeveer 2002 was de enige manier om een ​​IA-32-systeem te krijgen dat twee of meer programma's parallel kon uitvoeren, het gebruik van multiprocessorsystemen. De Intel® Pentium® 4, evenals de Xeon-lijn, codenaam Foster (Netburst), introduceerde een nieuwe technologie - hyperthreading of hyperthreading - Intel® HyperThreading (hierna HT genoemd).

Er is niets nieuws onder de zon. HT is een speciaal geval van wat de literatuur simultane multithreading (SMT) noemt. In tegenstelling tot "echte" kernen, die volledige en onafhankelijke kopieën zijn, wordt in het geval van HT slechts een deel van de interne knooppunten gedupliceerd in één processor, die primair verantwoordelijk is voor het opslaan van de registers van de architecturale staat. De uitvoerende knooppunten die verantwoordelijk zijn voor het organiseren en verwerken van gegevens blijven in het enkelvoud en worden op elk moment door maximaal één van de threads gebruikt. Net als kernels delen hyperthreads caches onderling, maar vanaf welk niveau hangt het af van het specifieke systeem.

Ik zal niet proberen alle voor- en nadelen van ontwerpen met SMT in het algemeen en met HT in het bijzonder uit te leggen. De geïnteresseerde lezer kan een vrij gedetailleerde bespreking van de technologie vinden in vele bronnen, en natuurlijk op Wikipedia. Ik zal echter het volgende belangrijke punt opmerken, dat de huidige limieten op het aantal hyperthreads in echte producten verklaart.

Streamlimieten
Wanneer is de aanwezigheid van "oneerlijke" multicore in de vorm van HT gerechtvaardigd? Als een toepassingsthread niet in staat is om alle uitvoerende knooppunten in de kernel te laden, kunnen ze worden "geleend" naar een andere thread. Dit is typisch voor toepassingen die een "bottleneck" hebben, niet in berekeningen, maar in gegevenstoegang, dat wil zeggen dat ze vaak cachemissers genereren en moeten wachten tot gegevens uit het geheugen worden afgeleverd. Op dit moment zal de kernel zonder HT gedwongen worden inactief te zijn. De aanwezigheid van HT stelt u in staat om snel vrije uitvoerende knooppunten naar een andere architecturale staat te schakelen (omdat deze zojuist is gedupliceerd) en de instructies ervan uit te voeren. Dit is een speciaal geval van een techniek die latentie verbergen wordt genoemd, wanneer een lange operatie, waarbij nuttige bronnen inactief zijn, wordt gemaskeerd door de parallelle uitvoering van andere taken. Als de toepassing al een hoog gebruik van kernelbronnen heeft, zal de aanwezigheid van hyperthreads het niet versnellen - hier zijn "eerlijke" kernels nodig.

Typische desktop- en servertoepassingsscenario's voor machine-architecturen voor algemene doeleinden hebben het potentieel voor gelijktijdigheid mogelijk gemaakt door HT. Dit potentieel is echter snel “opgebruikt”. Misschien om deze reden is het aantal hardware-hyperthreads op bijna alle IA-32-processors niet groter dan twee. In typische scenario's zou de winst van het gebruik van drie of meer hyperthreads klein zijn, maar het verlies in kristalgrootte, stroomverbruik en kosten is aanzienlijk.

Een andere situatie wordt waargenomen bij typische taken die worden uitgevoerd op videoversnellers. Daarom worden deze architecturen gekenmerkt door het gebruik van SMT-technieken met een groot aantal threads. Aangezien de Intel® Xeon Phi-coprocessors (geïntroduceerd in 2010) ideologisch en genealogisch vrij dicht bij videokaarten staan, kunnen ze vier hyperthreading op elke kern - een configuratie die uniek is voor IA-32.

Logische processor

Van de drie beschreven "niveaus" van parallellisme (processors, cores, hyperthreads), kunnen sommige of alle ontbreken in een bepaald systeem. Dit wordt beïnvloed door BIOS-instellingen (multi-core en multithreading zijn onafhankelijk uitgeschakeld), micro-architecturale functies (bijvoorbeeld HT ontbrak in Intel® Core ™ Duo, maar werd geretourneerd met de release van Nehalem) en systeemgebeurtenissen (multiprocessor-servers kunnen uitgevallen processors uitzetten bij storingen en verder "vliegen" op de rest). Hoe is deze multi-tier dierentuin van gelijktijdigheid zichtbaar voor het besturingssysteem en, uiteindelijk, voor de applicatie?

Verder geven we voor het gemak het aantal processors, kernen en threads in sommige systemen aan met de drievoudige ( x, ja, z), waar x is het aantal processors ja is het aantal kernen in elke processor, en z- het aantal hyperthreads in elke kern. Hierna noem ik dit triple topologie- een gevestigde term die weinig te maken heeft met het onderdeel wiskunde. Werk P = xyz definieert het aantal entiteiten met de naam logische processors systemen. Het definieert het totale aantal onafhankelijke gelijktijdige applicatieprocescontexten in een gedeeld geheugensysteem dat het besturingssysteem in overweging moet nemen. Ik zeg "geforceerd" omdat het de volgorde van uitvoering van twee processen op verschillende logische processors niet kan controleren. Dit geldt ook voor hyperthreads: hoewel ze "sequentieel" op dezelfde kern werken, wordt de specifieke volgorde bepaald door de hardware en is deze niet beschikbaar voor het bewaken of besturen van programma's.

Meestal verbergt het besturingssysteem de kenmerken van de fysieke topologie van het systeem waarop het draait voor de eindtoepassingen. Bijvoorbeeld de volgende drie topologieën: (2, 1, 1), (1, 2, 1) en (1, 1, 2) - het besturingssysteem wordt weergegeven in de vorm van twee logische processors, hoewel de eerste twee processors, de tweede - twee kernen en de derde heeft slechts twee threads.


Windows Taakbeheer toont 8 logische processors; maar hoeveel is het in processors, cores en hyperthreads?


Linux top toont 4 logische processors.

Dit is best handig voor applicatieontwikkelaars - ze hebben niet te maken met de hardwarefuncties die voor hen vaak niet relevant zijn.

Topologie definitie programmatisch

Natuurlijk schept abstractie van topologie in een enkel aantal logische processors in sommige gevallen voldoende grond voor verwarring en misverstanden (in verhitte internetgeschillen). Computertoepassingen die de maximale prestaties uit hardware willen persen, hebben gedetailleerde controle nodig over waar hun threads worden geplaatst: dichter bij elkaar op aangrenzende hyperthreads, of, omgekeerd, verder weg op verschillende processors. De snelheid van communicatie tussen logische processors in een enkele kern of processor is veel hoger dan de snelheid van gegevensoverdracht tussen processors. De mogelijkheid van heterogeniteit in de organisatie van RAM bemoeilijkt ook het beeld.

Informatie over de topologie van het systeem als geheel, evenals de positie van elke logische processor in IA-32, is beschikbaar met behulp van de CPUID-instructie. Sinds het verschijnen van de eerste multiprocessorsystemen is het logische processoridentificatieschema verschillende keren uitgebreid. Tot op heden zijn delen ervan opgenomen in bladen 1, 4 en 11 van de CPUID. Welk blad u moet bekijken, kan worden bepaald aan de hand van het volgende stroomschema uit het artikel:

Ik zal u hier niet vervelen met alle details van de afzonderlijke onderdelen van dit algoritme. Mocht er interesse ontstaan, dan kan het volgende deel van dit artikel hieraan worden gewijd. Ik zal de geïnteresseerde lezer verwijzen naar, waarin deze kwestie zo gedetailleerd mogelijk wordt behandeld. Hier zal ik eerst kort beschrijven wat APIC is en hoe het zich verhoudt tot topologie. Overweeg dan om te werken met blad 0xB (elf in decimaal), wat momenteel het laatste woord is in "apicostroenie".

APIC-ID
Lokale APIC (advanced programmeerbare interruptcontroller) is een apparaat (nu onderdeel van de processor) dat verantwoordelijk is voor het werken met interrupts die naar een specifieke logische processor komen. Elke logische processor heeft zijn eigen APIC. En elk van hen in het systeem moet een unieke APIC-ID-waarde hebben. Dit nummer wordt gebruikt door interruptcontrollers voor adressering bij het bezorgen van berichten, en door alle anderen (bijvoorbeeld het besturingssysteem) om logische processors te identificeren. De specificatie voor deze interruptcontroller is geëvolueerd van de Intel 8259 PIC via Dual PIC, APIC en xAPIC naar x2APIC.

Momenteel heeft de breedte van het nummer dat is opgeslagen in de APIC-ID de volledige 32 bits bereikt, hoewel dit in het verleden beperkt was tot 16, en zelfs eerder - slechts 8 bits. Tegenwoordig zijn de overblijfselen van vroeger verspreid over de CPUID, maar alle 32 bits van de APIC-ID worden geretourneerd in CPUID.0xB.EDX. Elke logische processor, die onafhankelijk de CPUID-instructie uitvoert, retourneert zijn eigen waarde.

Opheldering van familiebanden
De APIC ID-waarde op zich zegt niets over de topologie. Om erachter te komen welke twee logische processors zich in dezelfde fysieke processor bevinden (dat wil zeggen, ze zijn "broers" van hyperthreads), welke twee zich in dezelfde processor bevinden en welke zich in totaal verschillende processors bevinden, moet u hun APIC ID-waarden vergelijken . Afhankelijk van de mate van relatie, zullen sommige van hun stukjes hetzelfde zijn. Deze informatie is opgenomen in de CPUID.0xB-sublijsten, die zijn gecodeerd met behulp van de ECX-operand. Elk van hen beschrijft de positie van het bitveld van een van de topologieniveaus in EAX (meer precies, het aantal bits dat in de APIC-ID naar rechts moet worden verschoven om de lagere topologieniveaus te verwijderen), evenals de type van dit niveau - hyperthread, core of processor - in ECX.

Logische processors die zich in dezelfde kern bevinden, hebben dezelfde APIC-ID-bits, behalve de bits die tot het SMT-veld behoren. Voor logische processors in dezelfde processor, alle bits behalve de Core- en SMT-velden. Aangezien het aantal sublijsten voor CPUID.0xB kan groeien, zal dit schema het mogelijk maken om de beschrijving van topologieën met meer niveaus te ondersteunen, mocht dit in de toekomst nodig zijn. Bovendien zal het mogelijk zijn om tussenliggende niveaus in te voeren tussen de bestaande.

Een belangrijk gevolg van de organisatie van dit schema is dat er "gaten" kunnen zijn in de verzameling van alle APIC-ID's van alle logische processors in het systeem; ze zullen niet opeenvolgend gaan. In een multicore-processor met uitgeschakelde HT kunnen alle APIC-ID's bijvoorbeeld even zijn, aangezien het minst significante bit dat verantwoordelijk is voor het coderen van het hyperstream-nummer altijd nul zal zijn.

Merk op dat CPUID.0xB niet de enige informatiebron is over logische processors die beschikbaar zijn voor het besturingssysteem. Een lijst van alle beschikbare processors, samen met hun APIC ID-waarden, is gecodeerd in de MADT ACPI-tabel.

Besturingssystemen en topologie

Besturingssystemen bieden logische informatie over de processortopologie aan toepassingen via hun eigen interfaces.

Op Linux is topologie-informatie opgenomen in het / proc / cpuinfo pseudo-bestand en de dmidecode-opdrachtuitvoer. In het onderstaande voorbeeld filter ik de cpuinfo-inhoud op een quad-coresysteem zonder HT, waarbij alleen de topologiegerelateerde items overblijven:

Verborgen tekst

[e-mail beveiligd]: ~ $ cat / proc / cpuinfo | grep "processor \ | fysiek \ id \ | broers en zussen \ | core \ | cores \ | apicid" processor: 0 fysiek id: 0 broers en zussen: 4 core id: 0 cpu-cores: 2 apicid: 0 aanvankelijke apicide: 0 processor: 1 fysieke id: 0 broers en zussen: 4 kern-id: 0 cpu-kernen: 2 apicide: 1 aanvankelijke apicide: 1 processor: 2 fysieke id: 0 broers en zussen: 4 kern-id: 1 cpu-kernen: 2 apicide: 2 aanvankelijke apicide: 2 processor: 3 fysieke id: 0 broers en zussen: 4 kern-id: 1 cpu-kernen: 2 apicide: 3 aanvankelijke apicide: 3

In FreeBSD wordt de topologie gerapporteerd via het sysctl-mechanisme in de variabele kern.sched.topology_spec als XML:

Verborgen tekst

[e-mail beveiligd]: ~ $ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 DRAAD groepSMT-groep 2, 3 DRAAD groepSMT-groep 4, 5 DRAAD groepSMT-groep 6, 7 DRAAD groepSMT-groep

In MS Windows 8 kan topologie-informatie worden bekeken in Taakbeheer.

Bij het kopen van een processor proberen veel mensen iets abrupter te kiezen, met meerdere cores en een hoge kloksnelheid. Maar tegelijkertijd weten maar weinig mensen wat het aantal processorcores daadwerkelijk beïnvloedt. Waarom bijvoorbeeld een gewone en pretentieloze dual-coreprocessor sneller kan zijn dan een quad-coreprocessor, of dat hetzelfde "procent" met 4 cores sneller zal zijn dan een "processor" met 8 cores. Dit is een behoorlijk interessant onderwerp dat zeker de moeite waard is om nader te onderzoeken.

Invoering

Voordat ik begin te begrijpen wat het aantal processorkernen beïnvloedt, wil ik een kleine uitweiding maken. Tot een paar jaar geleden waren CPU-ontwerpers ervan overtuigd dat productietechnologieën die zo snel evolueren, "stenen" zouden produceren met kloksnelheden tot 10 GHz, waardoor gebruikers problemen met slechte prestaties zouden vergeten. Er werd echter geen succes geboekt.

Hoe het technische proces zich ook ontwikkelde, die Intel, die AMD liep tegen puur fysieke beperkingen aan, die de productie van "prots" met een klokfrequentie tot 10 GHz simpelweg niet toestonden. Toen werd besloten om niet te focussen op frequenties, maar op het aantal cores. Zo begon een nieuwe race voor de productie van krachtigere en efficiëntere processor "kristallen", die tot op de dag van vandaag voortduurt, maar niet zo actief als in het begin.

Intel- en AMD-processors

Tegenwoordig zijn Intel en AMD directe concurrenten op de processormarkt. Kijkend naar inkomsten en verkoop, hebben de Blues een duidelijk voordeel, hoewel de Reds de laatste tijd proberen bij te blijven. Beide bedrijven hebben een goed aanbod van kant-en-klare oplossingen voor alle gelegenheden - van een eenvoudige processor met 1-2 cores tot echte monsters waarin het aantal cores groter is dan 8. Meestal worden dergelijke "stenen" gebruikt op speciaal werkende "computers" die een smalle focus hebben...

Intel

Dus vandaag heeft Intel 5 soorten processors: Celeron, Pentium en i7. Elk van deze "stenen" heeft een ander aantal kernen en is ontworpen voor verschillende taken. Celeron heeft bijvoorbeeld slechts 2 cores en wordt voornamelijk gebruikt op kantoor- en thuiscomputers. Pentium, of, zoals het ook wel "stump" wordt genoemd, wordt ook thuis gebruikt, maar heeft al veel betere prestaties, voornamelijk dankzij de Hyper-Threading-technologie, die nog twee virtuele cores "toevoegt" aan de fysieke twee cores , die threads worden genoemd ... Het dual-core "percentage" werkt dus als de meest budgettaire quad-coreprocessor, hoewel dit niet helemaal correct is, maar dit is het belangrijkste punt.

Wat de Core-lijn betreft, is de situatie ongeveer hetzelfde. Het jongere model met nummer 3 heeft 2 cores en 2 threads. De oudere lijn - Core i5 - heeft al 4 of 6 cores, maar mist de Hyper-Threading-functie en heeft geen extra threads, behalve 4-6 standaard. En het laatste - core i7 - dit zijn topprocessors, die in de regel 4 tot 6 cores en twee keer zoveel threads hebben, dat wil zeggen, 4 cores en 8 threads of 6 cores en 12 threads .

AMD

Nu is het de moeite waard om AMD te noemen. De lijst met "kiezelstenen" van dit bedrijf is enorm, het heeft geen zin om alles op te sommen, omdat de meeste modellen gewoon verouderd zijn. Het is misschien de moeite waard om de nieuwe generatie op te merken, die in zekere zin "Intel" - Ryzen, "kopieert". Deze lijn bevat ook modellen met de nummers 3, 5 en 7. Het belangrijkste verschil met de blauwe van Ryzen is dat het jongste model meteen volledige 4 cores levert, terwijl het oudere model er niet 6, maar acht heeft. Bovendien varieert het aantal threads. Ryzen 3 - 4 threads, Ryzen 5 - 8-12 (afhankelijk van het aantal cores - 4 of 6) en Ryzen 7 - 16 threads.

Het is de moeite waard om nog een regel "rood" te noemen - FX, die in 2012 verscheen, en in feite wordt dit platform al als verouderd beschouwd, maar dankzij het feit dat nu steeds meer programma's en games multithreading beginnen te ondersteunen, de De Vishera-lijn heeft opnieuw aan populariteit gewonnen, die samen met de lage prijzen alleen maar groeit.

Welnu, wat betreft de geschillen over de frequentie van de processor en het aantal kernen, dan is het in feite juister om naar de tweede te kijken, aangezien iedereen al lang de klokfrequenties heeft bepaald, en zelfs de topmodellen van Intel werken op nominaal 2, 7, 2, 8, 3 GHz. Daarnaast kan met overklokken altijd de frequentie omhoog, maar in het geval van een dual-core processor zal dit niet veel effect hebben.

Hoe kom je erachter hoeveel kernen?

Als iemand niet weet hoe hij het aantal processorcores moet bepalen, kan dit eenvoudig en eenvoudig worden gedaan, zelfs zonder afzonderlijke speciale programma's te downloaden en te installeren. U hoeft alleen maar naar "Apparaatbeheer" te gaan en op de kleine pijl naast het item "Processors" te klikken.

U kunt meer gedetailleerde informatie krijgen over welke technologieën uw "steen" ondersteunt, welke klokfrequentie het heeft, het revisienummer en nog veel meer met behulp van een speciaal en klein programma CPU-Z. Je kunt het gratis downloaden op de officiële website. Er is een versie die geen installatie vereist.

Het voordeel van twee kernen:

Wat zou het voordeel van een dual-coreprocessor kunnen zijn? In veel dingen, bijvoorbeeld in games of applicaties, bij de ontwikkeling waarvan single-threaded werken de belangrijkste prioriteit was. Neem bijvoorbeeld het spel Wold of Tanks. De meest voorkomende dual-coreprocessors zoals Pentium of Celeron zullen behoorlijk goede prestaties leveren, terwijl sommige FX van AMD of INTEL Core veel meer van hun mogelijkheden zullen gebruiken, en het resultaat zal ongeveer hetzelfde zijn.

De betere 4 cores

Hoe kunnen 4 cores beter zijn dan twee? Betere prestatie. Quad-core "stenen" zijn ontworpen voor serieuzer werk, waar eenvoudige "hennep" of "selerons" het gewoon niet aankunnen. Elk grafisch 3D-programma zoals 3Ds Max of Cinema4D is hier een goed voorbeeld van.

Tijdens het weergaveproces gebruiken deze programma's de maximale computerbronnen, inclusief RAM en processor. Dual-core CPU's zullen erg achterblijven in de verwerkingstijd van renders, en hoe complexer de scène, hoe langer het duurt. Maar processors met vier cores zullen deze taak veel sneller aan, omdat ook extra threads hen te hulp zullen komen.

Natuurlijk kun je een budget-"procyclist" uit de Core i3-familie nemen, bijvoorbeeld de 6100, maar 2 cores en 2 extra threads zullen nog steeds inferieur zijn aan een volwaardige quad-coreprocessor.

6 en 8 kernen

Nou, en het laatste segment van multi-cores - processors met zes en acht cores. Hun hoofddoel is in principe precies hetzelfde als dat van de CPU hierboven, alleen zijn ze nodig waar gewone "vieren" het niet aankunnen. Daarnaast bouwen zij aan de hand van "stenen" met 6 en 8 cores volwaardige profielcomputers die voor bepaalde werkzaamheden zullen worden "geslepen", bijvoorbeeld videobewerking, 3D-programma's voor modelleren, renderen van kant-en-klare zware scènes met een groot aantal polygonen en objecten, enz. .d.

Bovendien laten dergelijke multi-cores zich heel goed zien in het werken met archivers of in toepassingen waar een goede rekenkracht nodig is. In games die zijn geoptimaliseerd voor multithreading, is er geen gelijke aan dergelijke processors.

Wat is van invloed op het aantal processorkernen

Dus wat kan het aantal kernen nog meer beïnvloeden? Allereerst om het energieverbruik te verhogen. Ja, hoe geweldig het ook klinkt, maar het is zo. U hoeft zich niet al te veel zorgen te maken, want in het dagelijks leven zal dit probleem bij wijze van spreken niet opvallen.

De tweede is verwarming. Hoe meer cores, hoe beter het koelsysteem nodig is. AIDA64-programma zal helpen om de temperatuur van de processor te meten. Bij het opstarten moet u op "Computer" klikken en vervolgens "Sensoren" selecteren. Het is noodzakelijk om de temperatuur van de processor te controleren, want als deze constant oververhit raakt of bij te hoge temperaturen werkt, zal deze na een tijdje gewoon doorbranden.

Dual-coreprocessors zijn niet bekend met een dergelijk probleem, omdat ze respectievelijk niet al te hoge prestaties en warmteafvoer hebben, maar multi-coreprocessors - ja. De "heetste" stenen worden beschouwd als van AMD, vooral de FX-serie. Neem bijvoorbeeld de FX-6300. De processortemperatuur in het AIDA64-programma ligt rond de 40 graden en deze is in de ruststand. Onder belasting zal het cijfer groeien en als er oververhitting optreedt, wordt de computer uitgeschakeld. Dus bij het kopen van een multi-core processor mag je een koeler niet vergeten.

Wat is nog meer van invloed op het aantal processorcores? Multitasking. Dual-core "processen" zullen geen stabiele prestaties kunnen leveren wanneer in twee, drie of meer programma's tegelijk wordt gewerkt. Het eenvoudigste voorbeeld zijn streamers op internet. Naast het feit dat ze een game op hoge instellingen spelen, hebben ze een parallel lopend programma waarmee je de gameplay online op internet kunt uitzenden, een internetbrowser met verschillende open pagina's werkt ook, waar de speler in de regel , leest opmerkingen van mensen die ernaar kijken en houdt andere informatie in de gaten. Niet elke multi-core processor kan voldoende stabiliteit bieden, laat staan ​​dual- en single-core processors.

Het is ook de moeite waard om een ​​paar woorden te zeggen over het feit dat multi-coreprocessors een zeer nuttig ding hebben dat "L3-cache van het derde niveau" wordt genoemd. Deze cache heeft een bepaalde hoeveelheid geheugen, die constant verschillende informatie registreert over het uitvoeren van programma's, uitgevoerde acties, enz. Dit alles is nodig om de snelheid van de computer en zijn prestaties te verhogen. Als een persoon bijvoorbeeld vaak Photoshop gebruikt, wordt deze informatie opgeslagen in het geheugen van de pap en wordt de tijd voor het starten en openen van het programma aanzienlijk verkort.

Samenvatten

Als we het gesprek samenvatten over wat het aantal processorkernen beïnvloedt, kunnen we tot één simpele conclusie komen: als je goede prestaties, snelheid, multitasking, werken in zware applicaties, de mogelijkheid om comfortabel moderne games te spelen, enz. is een processor met vier kernen of meer. Als u een eenvoudige "computer" voor kantoor- of thuisgebruik nodig heeft, die tot een minimum wordt beperkt, dan heeft u 2 cores nodig. In elk geval moet u bij het kiezen van een processor eerst al uw behoeften en taken analyseren en pas daarna eventuele opties overwegen.

De processor is het belangrijkste computerapparaat dat logische en rekenkundige bewerkingen uitvoert en alle componenten van de computer bestuurt. De processor is een miniatuur rechthoekige dunne siliciumplaat, die een groot aantal transistors herbergt die alle functies uitvoeren die door de processor worden uitgevoerd. Een siliconen plaatje is erg kwetsbaar en aangezien elke beschadiging eraan zal leiden tot het uitvallen van de processor, wordt het in een plastic of keramische behuizing geplaatst.

1. Inleiding 2. Processorkern 2.1. Hoe de processorkern werkt 2.2. Manieren om de prestaties van de processorkern te verbeteren 2.2.1. Pijpleidingen 2.2.2. Superscalariteit 2.2.3. Parallelle gegevensverwerking 2.2.4. Hyper-threading-technologie 2.2.5. Turbo Boost-technologie. 2.2.6. Efficiëntie van de uitvoering van opdrachten. 2.3 Manieren om het stroomverbruik van de processorkern te verminderen 3. Cachegeheugen

1. Inleiding.

Een moderne processor is een complex en hightech apparaat dat de nieuwste ontwikkelingen op het gebied van computertechnologie en aanverwante wetenschapsgebieden omvat.

De meeste moderne processors bestaan ​​uit:

    een of meer kernels die alle instructies uitvoeren;

    verschillende niveaus van cachegeheugen (meestal 2 of drie niveaus), waardoor de interactie van de processor met RAM wordt versneld;

    RAM-controller;

    systeembuscontroller (DMI, QPI, HT, enz.);

En het wordt gekenmerkt door de volgende parameters:

    type microarchitectuur;

    klok frequentie;

    een reeks uitvoerbare opdrachten;

    het aantal cacheniveaus en hun grootte;

    het type en de snelheid van de systeembus;

    de grootte van de verwerkte woorden;

    de aan- of afwezigheid van een ingebouwde geheugencontroller;

    het type RAM dat wordt ondersteund;

    de hoeveelheid adresseerbaar geheugen;

    de aan- of afwezigheid van een ingebouwde grafische kern;

    energieverbruik.

Een vereenvoudigd blokschema van een moderne multi-coreprocessor wordt getoond in figuur 1.

Laten we beginnen met onze bespreking van het processorapparaat met zijn belangrijkste onderdeel - de kernel.

2. De kern van de processor.

De processorkern is het belangrijkste onderdeel, dat alle functionele blokken bevat en alle logische en rekenkundige bewerkingen uitvoert.

Figuur 1 toont een blokschema van het processorkernapparaat. Zoals u in de afbeelding kunt zien, bestaat elke processorkern uit verschillende functionele blokken:

    ophalen blok instructies;

    blokken voor decoderingsinstructies;

    gegevensbemonsteringsblokken;

    controle blok;

    blokken voor het uitvoeren van instructies;

    blokken voor het opslaan van resultaten;

    werkblok met interrupts;

    reeks registers;

    de commandoteller.

Instructie ophaalblok leest instructies op het adres dat is opgegeven in de commandoteller. Het leest meestal meerdere instructies per klokcyclus. Het aantal leesbare instructies wordt bepaald door het aantal decodeerblokken, aangezien het nodig is om de decodeerblokken zoveel mogelijk te laden bij elke werkcyclus. Om de ophaaleenheid optimaal te laten werken, is er een vertakkingsvoorspeller in de processorkern.

Overgangsvoorspeller probeert te bepalen welke reeks opdrachten wordt uitgevoerd nadat de vertakking is gemaakt. Dit is nodig om de belasting van de processorkernpijplijn na de voorwaardelijke sprong te maximaliseren.

Decodeerblokken, zoals de naam al aangeeft, zijn blokken die instructies decoderen, d.w.z. bepalen wat de processor moet doen en welke aanvullende gegevens nodig zijn om de instructie uit te voeren. Deze taak is erg moeilijk voor de meeste moderne commerciële verwerkers op basis van het CISC-concept. Het feit is dat de lengte van instructies en het aantal operanden niet vastligt, en dit bemoeilijkt het leven van processorontwikkelaars enorm en maakt het decoderingsproces een niet-triviale taak.

Vaak moeten individuele complexe instructies worden vervangen door microcode - een reeks eenvoudige instructies die gezamenlijk dezelfde actie uitvoeren als één complexe instructie. De microcodeset wordt geflitst in het ROM dat in de processor is ingebouwd. Bovendien vereenvoudigt de microcode de ontwikkeling van de processor, omdat het niet nodig is om complexe kernelblokken te maken voor het uitvoeren van individuele opdrachten, en het repareren van de microcode veel gemakkelijker is dan het elimineren van een fout in het functioneren van het blok.

In moderne processors zijn er meestal 2-4 instructie-decodeerblokken, bijvoorbeeld in Intel Core 2-processors, elke kern bevat twee van dergelijke blokken.

Blokken voor het ophalen van gegevens het ophalen van gegevens uit het cachegeheugen of RAM die nodig zijn om de huidige instructies uit te voeren. Gewoonlijk bevat elke processorkern verschillende blokken voor het ophalen van gegevens. Intel Core-processors gebruiken bijvoorbeeld twee ophaalblokken voor elke kern.

Besturingsblok op basis van gedecodeerde instructies regelt het de werking van blokken voor het uitvoeren van instructies, verdeelt de belasting ertussen en zorgt voor tijdige en correcte uitvoering van instructies. Het is een van de belangrijkste blokken van de processorkern.

Blokken voor het uitvoeren van instructies bevatten verschillende blokken van verschillende typen:

ALU - rekenkundige logische eenheid;

FPU - een apparaat voor het uitvoeren van drijvende-kommabewerkingen;

Blokken voor het afhandelen van uitbreidingen van instructiesets. Aanvullende instructies worden gebruikt om de verwerking van gegevensstromen, versleuteling en ontsleuteling, videocodering, enzovoort te versnellen. Hiervoor worden extra registers en logische sets in de processorkern geïntroduceerd. Op dit moment zijn de meest populaire uitbreidingen van instructiesets:

MMX (Multimedia Extensions) - een reeks instructies ontwikkeld door Intel om het coderen en decoderen van streaming audio- en videogegevens te versnellen;

SSE (Streaming SIMD Extensions) is een reeks instructies die door Intel zijn ontwikkeld voor het uitvoeren van dezelfde reeks bewerkingen op een reeks gegevens met een parallel rekenproces. De sets van commando's worden voortdurend verbeterd en op dit moment zijn er herzieningen: SSE, SSE2, SSE3, SSSE3, SSE4;

ATA (Application Targeted Accelerator) is een reeks instructies die door Intel zijn ontwikkeld om de werking van gespecialiseerde software te versnellen en het stroomverbruik te verminderen bij het werken met dergelijke programma's. Deze instructies kunnen bijvoorbeeld worden gebruikt bij het berekenen van checksums of het zoeken naar gegevens;

3DNow is een instructieset die door AMD is ontwikkeld om de mogelijkheden van de MMX-instructieset uit te breiden;

AES (Advanced Encryption Standard) is een reeks instructies die door Intel zijn ontwikkeld om de werking van applicaties te versnellen met behulp van gegevenscodering met hetzelfde algoritme.

Opslageenheid voor resultaten biedt een record van het resultaat van de uitvoering van de instructie in RAM op het adres dat is gespecificeerd in de verwerkte instructie.

Blokkering onderbreken. Het werken met interrupts is een van de belangrijkste taken van de processor, waardoor deze tijdig op gebeurtenissen kan reageren, de programmastroom kan onderbreken en de benodigde acties kan uitvoeren. Door de aanwezigheid van interrupts is de processor in staat tot pseudo-parallelle werking, d.w.z. tot het zogenaamde multitasken.

Het afhandelen van onderbrekingen is als volgt. De processor controleert voor het starten van elke cyclus op een onderbrekingsverzoek. Als er een onderbreking moet worden verwerkt, slaat de processor op de stapel het adres op van de instructie die hij had moeten uitvoeren en de gegevens die zijn ontvangen nadat de laatste instructie was uitgevoerd, en gaat verder met het uitvoeren van de functie voor het afhandelen van onderbrekingen.

Na het einde van de uitvoering van de onderbrekingsservicefunctie, worden de gegevens die erop zijn opgeslagen uit de stapel gelezen en hervat de processor de uitvoering van de herstelde taak.

registreert- ultrasnel willekeurig toegankelijk geheugen (toegang tot registers is meerdere malen sneller dan toegang tot het cachegeheugen) van een kleine omvang (enkele honderden bytes), dat deel uitmaakt van de processor, voor tijdelijke opslag van tussenresultaten van instructie-uitvoering. Verwerkersregisters zijn onderverdeeld in twee soorten: registers voor algemene doeleinden en speciale registers.

Registers voor algemene doeleinden worden gebruikt bij het uitvoeren van rekenkundige en logische bewerkingen, of specifieke bewerkingen van aanvullende instructiesets (MMX, SSE, enz.).

Registers voor speciale doeleinden bevatten systeemgegevens die nodig zijn om de processor te laten werken. Dergelijke registers omvatten bijvoorbeeld controleregisters, systeemadresregisters, debugregisters, enz. De toegang tot deze registers is sterk gereguleerd.

Commando teller- register met het adres van de opdracht die de processor bij de volgende werkcyclus zal beginnen uit te voeren.

Invoering.

Een moderne processor is een complex en hightech apparaat dat de nieuwste ontwikkelingen op het gebied van computertechnologie en aanverwante wetenschapsgebieden omvat.

De meeste moderne processors bestaan ​​uit:

  • een of meer kernels die alle instructies uitvoeren;
  • verschillende niveaus van cachegeheugen (meestal 2 of drie niveaus), waardoor de interactie van de processor met RAM wordt versneld;
  • RAM-controller;
  • systeembuscontroller (DMI, QPI, HT, enz.);

En het wordt gekenmerkt door de volgende parameters:

  • type microarchitectuur;
  • klok frequentie;
  • een reeks uitvoerbare opdrachten;
  • het aantal cacheniveaus en hun grootte;
  • het type en de snelheid van de systeembus;
  • de grootte van de verwerkte woorden;
  • de aan- of afwezigheid van een ingebouwde geheugencontroller;
  • het type RAM dat wordt ondersteund;
  • de hoeveelheid adresseerbaar geheugen;
  • de aan- of afwezigheid van een ingebouwde grafische kern;
  • energieverbruik.

Een vereenvoudigd blokschema van een moderne multi-coreprocessor wordt getoond in figuur 1.

Laten we beginnen met onze bespreking van het processorapparaat met zijn belangrijkste onderdeel - de kernel.

De processorkern is het belangrijkste onderdeel, dat alle functionele blokken bevat en alle logische en rekenkundige bewerkingen uitvoert.

Figuur 1 toont een blokschema van het processorkernapparaat. Zoals u in de afbeelding kunt zien, bestaat elke processorkern uit verschillende functionele blokken:

  • ophalen blok instructies;
  • blokken voor decoderingsinstructies;
  • gegevensbemonsteringsblokken;
  • controle blok;
  • blokken voor het uitvoeren van instructies;
  • blokken voor het opslaan van resultaten;
  • werkblok met interrupts;
  • ROM met microcode;
  • reeks registers;
  • de commandoteller.

Instructie ophaalblok leest instructies op het adres dat is opgegeven in de commandoteller. Het leest meestal meerdere instructies per klokcyclus. Het aantal leesbare instructies wordt bepaald door het aantal decodeerblokken, aangezien het nodig is om de decodeerblokken zoveel mogelijk te laden bij elke werkcyclus. Om de ophaaleenheid optimaal te laten werken, is er een vertakkingsvoorspeller in de processorkern.

Overgangsvoorspeller probeert te bepalen welke reeks opdrachten wordt uitgevoerd nadat de vertakking is gemaakt. Dit is nodig om de belasting van de processorkernpijplijn na de voorwaardelijke sprong te maximaliseren.

Decodeerblokken, zoals de naam al aangeeft, zijn blokken die instructies decoderen, d.w.z. bepalen wat de processor moet doen en welke aanvullende gegevens nodig zijn om de instructie uit te voeren. Deze taak is erg moeilijk voor de meeste moderne commerciële verwerkers op basis van het CISC-concept. Het feit is dat de lengte van instructies en het aantal operanden niet vastligt, en dit bemoeilijkt het leven van processorontwikkelaars enorm en maakt het decoderingsproces een niet-triviale taak.



Vaak moeten individuele complexe instructies worden vervangen door microcode - een reeks eenvoudige instructies die gezamenlijk dezelfde actie uitvoeren als één complexe instructie. De microcodeset wordt geflitst in het ROM dat in de processor is ingebouwd. Bovendien vereenvoudigt de microcode de ontwikkeling van de processor, omdat het niet nodig is om complexe kernelblokken te maken voor het uitvoeren van individuele opdrachten, en het repareren van de microcode veel gemakkelijker is dan het elimineren van een fout in het functioneren van het blok.

In moderne processors zijn er meestal 2-4 instructie-decodeerblokken, bijvoorbeeld in Intel Core 2-processors, elke kern bevat twee van dergelijke blokken.

Blokken voor het ophalen van gegevens het ophalen van gegevens uit het cachegeheugen of RAM die nodig zijn om de huidige instructies uit te voeren. Gewoonlijk bevat elke processorkern verschillende blokken voor het ophalen van gegevens. Intel Core-processors gebruiken bijvoorbeeld twee ophaalblokken voor elke kern.

Besturingsblok op basis van gedecodeerde instructies regelt het de werking van blokken voor het uitvoeren van instructies, verdeelt de belasting ertussen en zorgt voor tijdige en correcte uitvoering van instructies. Het is een van de belangrijkste blokken van de processorkern.

Blokken voor het uitvoeren van instructies bevatten verschillende blokken van verschillende typen:

ALU - rekenkundige logische eenheid;

FPU - een apparaat voor het uitvoeren van drijvende-kommabewerkingen;

Blokken voor het afhandelen van uitbreidingen van instructiesets. Aanvullende instructies worden gebruikt om de verwerking van gegevensstromen, versleuteling en ontsleuteling, videocodering, enzovoort te versnellen. Hiervoor worden extra registers en logische sets in de processorkern geïntroduceerd. Op dit moment zijn de meest populaire uitbreidingen van instructiesets:

MMX (Multimedia Extensions) - een reeks instructies ontwikkeld door Intel om het coderen en decoderen van streaming audio- en videogegevens te versnellen;

SSE (Streaming SIMD Extensions) is een reeks instructies die door Intel zijn ontwikkeld voor het uitvoeren van dezelfde reeks bewerkingen op een reeks gegevens met een parallel rekenproces. De sets van commando's worden voortdurend verbeterd en op dit moment zijn er herzieningen: SSE, SSE2, SSE3, SSSE3, SSE4;

ATA (Application Targeted Accelerator) is een reeks instructies die door Intel zijn ontwikkeld om de werking van gespecialiseerde software te versnellen en het stroomverbruik te verminderen bij het werken met dergelijke programma's. Deze instructies kunnen bijvoorbeeld worden gebruikt bij het berekenen van checksums of het zoeken naar gegevens;

3DNow is een instructieset die door AMD is ontwikkeld om de mogelijkheden van de MMX-instructieset uit te breiden;

AES (Advanced Encryption Standard) is een reeks instructies die door Intel zijn ontwikkeld om de werking van applicaties te versnellen met behulp van gegevenscodering met hetzelfde algoritme.

Opslageenheid voor resultaten biedt een record van het resultaat van de uitvoering van de instructie in RAM op het adres dat is gespecificeerd in de verwerkte instructie.

Blokkering onderbreken. Het werken met interrupts is een van de belangrijkste taken van de processor, waardoor deze tijdig op gebeurtenissen kan reageren, de programmastroom kan onderbreken en de benodigde acties kan uitvoeren. Door de aanwezigheid van interrupts is de processor in staat tot pseudo-parallelle werking, d.w.z. tot het zogenaamde multitasken.

Het afhandelen van onderbrekingen is als volgt. De processor controleert voor het starten van elke cyclus op een onderbrekingsverzoek. Als er een onderbreking moet worden verwerkt, slaat de processor op de stapel het adres op van de instructie die hij had moeten uitvoeren en de gegevens die zijn ontvangen nadat de laatste instructie was uitgevoerd, en gaat hij verder met het uitvoeren van de functie voor het afhandelen van onderbrekingen.

Na het einde van de uitvoering van de onderbrekingsservicefunctie, worden de gegevens die erop zijn opgeslagen uit de stapel gelezen en hervat de processor de uitvoering van de herstelde taak.

registreert- ultrasnel willekeurig toegankelijk geheugen (toegang tot registers is meerdere malen sneller dan toegang tot het cachegeheugen) van een kleine omvang (enkele honderden bytes), dat deel uitmaakt van de processor, voor tijdelijke opslag van tussenresultaten van instructie-uitvoering. Verwerkersregisters zijn onderverdeeld in twee soorten: registers voor algemene doeleinden en speciale registers.

Registers voor algemene doeleinden worden gebruikt bij het uitvoeren van rekenkundige en logische bewerkingen, of specifieke bewerkingen van aanvullende instructiesets (MMX, SSE, enz.).

Registers voor speciale doeleinden bevatten systeemgegevens die nodig zijn om de processor te laten werken. Dergelijke registers omvatten bijvoorbeeld controleregisters, systeemadresregisters, debugregisters, enz. De toegang tot deze registers is sterk gereguleerd.

Commando teller- register met het adres van de opdracht die de processor bij de volgende werkcyclus zal beginnen uit te voeren.

... tijdens het ontwikkelingsproces zal het aantal kernen steeds groter worden.

(Intel-ontwikkelaars)

Nog kern, Bovendien kern, en zelfs veel, veel kern!..

... Tot voor kort hoorden we niets en wisten we niets van multicore processors, en tegenwoordig vervangen ze op agressieve wijze single-core-processors. De hausse van multi-coreprocessors is begonnen, en dat is nog steeds een beetje! - hun relatief hoge prijzen weerhouden hen. Maar niemand twijfelt eraan dat de toekomst ligt bij multi-core processors! ..

Wat is een processorkern?

In het hart van een moderne centrale microprocessor ( Processor- afgekort. van Engels centrale verwerkingseenheid- het centrale computerapparaat) is de kern ( kern) Is een siliciumkristal met een oppervlakte van ongeveer een vierkante centimeter, waarop door middel van microscopische logische elementen een schematisch diagram van de processor is geïmplementeerd, de zogenaamde architectuur (chip architectuur).

De kern is verbonden met de rest van de chip (de "verpakking" genoemd, CPU-pakket:) door flip-chip-technologie ( flip-chip, flip-chip hechting- omgekeerde kern, omgekeerde kristalbevestiging). Deze technologie heeft zijn naam gekregen omdat het naar buiten gerichte - zichtbare - deel van de kern eigenlijk de "onderkant" is - om direct contact te bieden met het koelere koellichaam voor een betere warmteafvoer. Aan de achterkant (onzichtbare) kant is er de "interface" zelf - de verbinding tussen het kristal en de verpakking. De verbinding van de processorkern met de verpakking wordt gemaakt met behulp van stoten ( soldeer bultjes).

De kern bevindt zich op een textolietbasis, waarlangs de contactpaden naar de "benen" (contactkussens) gaan, is gevuld met een thermische interface en afgesloten met een beschermende metalen afdekking.

De eerste (natuurlijk single-core!) Microprocessor Intel 4004 werd op 15 november 1971 geïntroduceerd door Intel Corporation. Het bevatte 2300 transistors, draaide op 108 kHz en kostte $ 300.

De rekenkrachtvereisten van de centrale microprocessor zijn gestaag gegroeid en blijven groeien. Maar als eerdere processorfabrikanten zich voortdurend moesten aanpassen aan de huidige dringende (steeds groeiende!) gebruikersverzoeken, dan lopen chipmakers nu voorop!

Lange tijd was de toename van de prestaties van traditionele single-coreprocessors voornamelijk te wijten aan een sequentiële toename van de klokfrequentie (ongeveer 80% van de prestaties van de processor werd bepaald door de klokfrequentie) met een gelijktijdige toename van het aantal transistoren op één kristal. Een verdere verhoging van de klokfrequentie (bij een klokfrequentie van meer dan 3,8 GHz raken de chips simpelweg oververhit!) stuit op een aantal fundamentele fysieke barrières (aangezien het technologische proces bijna de grootte van een atoom benadert: tegenwoordig worden processors geproduceerd met behulp van 45-nm-technologie, en de grootte van een siliciumatoom is ongeveer 0,543 nm):

Ten eerste, als de kristalgrootte afneemt en de klokfrequentie toeneemt, neemt de lekstroom van de transistoren toe. Dit leidt tot een toename van het stroomverbruik en een toename van de warmteafgifte;

Ten tweede worden de voordelen van hogere kloksnelheden gedeeltelijk tenietgedaan door geheugenlatentie omdat de toegangstijden tot het geheugen niet overeenkomen met toenemende kloksnelheden;

Ten derde, voor sommige toepassingen worden traditionele sequentiële architecturen ineffectief met toenemende kloksnelheden als gevolg van het zogenaamde "von Neumann-bottleneck" - een prestatiebeperking als gevolg van een opeenvolgende stroom van berekeningen. In dit geval nemen de resistief-capacitieve vertragingen in de signaaloverdracht toe, wat een extra knelpunt is dat gepaard gaat met een toename van de klokfrequentie.

Het gebruik van multiprocessor-systemen is ook niet wijdverbreid, omdat het complexe en dure multiprocessor-moederborden vereist. Daarom werd besloten om op andere manieren te zoeken naar een verdere verhoging van de prestaties van microprocessors. De meest effectieve richting werd erkend als het concept multithreading, dat zijn oorsprong vindt in de wereld van supercomputers, is de gelijktijdige parallelle verwerking van meerdere stromen instructies.

Dus in de ingewanden van het bedrijf Intel was geboren Hyper-Threading-technologie (HTT) Is een super-threaded gegevensverwerkingstechnologie waarmee de processor maximaal vier programmathreads parallel kan uitvoeren in een single-coreprocessor. Hyperthreading verhoogt aanzienlijk de efficiëntie van de uitvoering van resource-intensieve toepassingen (bijvoorbeeld met betrekking tot audio- en videobewerking, 3D-modellering), evenals de werking van het besturingssysteem in multitasking-modus.

processor Pentium 4 met inbegrepen Hyperthreading heeft een fysiek een kern die in tweeën is gesplitst logisch, dus het besturingssysteem identificeert het als twee verschillende processors (in plaats van één).

Hyperthreading werd eigenlijk een springplank naar de creatie van processors met twee fysieke kernen op één kristal. In een 2-core chip werken twee cores (twee processors!) parallel, die bij een lagere klokfrequentie b O Betere prestaties, aangezien twee onafhankelijke instructiestromen parallel (tegelijkertijd!) worden uitgevoerd.

Het vermogen van een processor om meerdere programmathreads tegelijk uit te voeren, wordt genoemd parallellisme op draadniveau (TLPparallellisme op draadniveau). De behoefte voor TLP hangt af van de specifieke situatie (in sommige gevallen is het gewoon nutteloos!).

De belangrijkste problemen bij het maken van processors

Elke processorkern moet onafhankelijk zijn - met onafhankelijk stroomverbruik en gecontroleerd vermogen;

De softwaremarkt moet worden voorzien van programma's die het instructievertakkingsalgoritme effectief kunnen splitsen in een even (voor processors met een even aantal cores) of een oneven (voor processors met een oneven aantal cores) aantal threads;

Volgens de persdienst AMD, vandaag is de markt voor 4-coreprocessors niet meer dan 2% van het totaal. Het is duidelijk dat voor de moderne koper de aanschaf van een 4-coreprocessor voor thuisgebruik tot nu toe om vele redenen weinig zin heeft. Ten eerste zijn er tegenwoordig praktisch geen programma's die effectief gebruik kunnen maken van de voordelen van 4 gelijktijdig werkende threads; ten tweede, fabrikanten positioneer 4-core processors als Hi-End-oplossingen door toe te voegen aan de snap de modernste videokaarten en grote harde schijven - en dit verhoogt uiteindelijk de kosten van de toch al dure

ontwikkelaars Intel ze zeggen: "... tijdens het ontwikkelingsproces zal het aantal kernen steeds groter worden ...".

Wat staat ons in de toekomst te wachten

in bedrijf Intel ze hebben het al niet over "Multinuclear" ( Multi-Core) processors, zoals wordt gedaan met betrekking tot 2-, 4-, 8-, 16- of zelfs 32-core oplossingen, en over "Multicore" ( Veelkern), wat een volledig nieuwe architecturale macrostructuur van de chip impliceert, vergelijkbaar (maar niet vergelijkbaar) met de architectuur van de processor Cel.

De structuur van dergelijke Veelkern-chip impliceert werken met dezelfde set instructies, maar met de hulp van een krachtige centrale kern of meerdere krachtige Processor Omringd door vele helper-cores om u te helpen complexe multimediatoepassingen efficiënter af te handelen in multi-threaded-modus. Naast cores voor algemene doeleinden, processors Intel zal ook gespecialiseerde kernels hebben voor het uitvoeren van verschillende soorten taken - zoals afbeeldingen, spraakherkenningsalgoritmen,en.

Dit is precies de architectuur die Justin Rattner ( Justin R. Rattner), sectormanager Bedrijfstechnologiegroep Intel, tijdens een persconferentie in Tokio. Volgens hem kunnen er enkele tientallen van dergelijke hulpkernen in een nieuwe multi-coreprocessor zitten. In tegenstelling tot de focus op grote, energieverslindende rekenkernen met hoge warmteafvoer, multicore-kristallen Intel zal alleen die kernels activeren die nodig zijn voor de huidige taak, terwijl de rest van de kernels zal worden uitgeschakeld. Hierdoor kan het kristal precies zoveel elektriciteit verbruiken als het op een bepaald moment nodig heeft.

In juli 2008 heeft het bedrijf Intel kondigde aan dat het de mogelijkheid overweegt om enkele tientallen of zelfs duizenden rekenkernen in één processor te integreren. Hoofdingenieur van het bedrijf Envar Galum ( Anwar Ghuloum) schreef op zijn blog: "Uiteindelijk raad ik aan om mijn volgende tip te gebruiken ... ontwikkelaars moeten nu gaan nadenken over tientallen, honderden en duizenden cores." Volgens hem is op dit moment Intel onderzoekt technologieën die computers kunnen schalen "door het aantal cores dat we nog niet verkopen."

Uiteindelijk zal het succes van multicore-systemen afhangen van ontwikkelaars, die mogelijk van programmeertaal moeten veranderen en alle bestaande bibliotheken moeten herschrijven, aldus Galum.