Multi-core vs. Many-Core, of Waarom hebben we multi-core microprocessors nodig? Intel- en AMD-processors. Hoeveel cores zitten er in een processor?

CPU-kern

De term "microprocessorkern" processorkern) heeft geen duidelijke definitie en kan, afhankelijk van de gebruikscontext, het volgende betekenen:

  • onderdeel van een microprocessor die de belangrijkste functionele blokken bevat.
  • een reeks parameters die een microprocessor karakteriseren.
  • De microprocessorchip (CPU of GPU) is meestal open.
  • deel van de processor dat één reeks instructies uitvoert. Multi-coreprocessors hebben meerdere kernen en zijn daarom in staat tot onafhankelijke parallelle uitvoering van meerdere commandothreads tegelijk.

De microprocessorkern heeft meestal een eigen codeaanduiding (bijvoorbeeld Deschutes).

Kern kenmerken

Typische kerneleigenschappen zijn bijvoorbeeld:

  • microarchitectuur;
  • aantal functionele eenheden (ALU, FPU, pijpleidingen, etc.);
  • volume ingebouwd cachegeheugen;
  • interface (logisch en fysiek);
  • klokfrequenties;
  • voedingsspanning;
  • maximale en typische warmteafvoer;
  • productie Technologie;
  • kristal gebied.

Kernel-revisies

Naarmate de kern van de microprocessor zich ontwikkelt, worden er vaak aanzienlijke wijzigingen in aangebracht. Er kan bijvoorbeeld een extra set instructies worden toegevoegd, de procesontwerpnormen kunnen worden verlaagd en de klokfrequentie kan worden verhoogd. Gevonden fouten worden doorgaans ook gecorrigeerd. Dergelijke wijzigingen worden kernelrevisies genoemd. De kernels van verschillende revisies verschillen van elkaar door het revisienummer (bijvoorbeeld Athlon XP Thoroughbred revisies A0 en B0), dat kan worden gecodeerd in de microprocessormarkeringen of in de kernel kan worden geprogrammeerd. In het laatste geval kunt u de revisienummercode (stepping) vinden met behulp van de instructies

Koppelingen

Wikimedia Stichting. 2010.

Kijk wat een “processorkern” is in andere woordenboeken:

    De kern is iets centraals en het belangrijkste, vaak rond. Dit woord heeft verschillende betekenissen verschillende gebieden: Inhoud 1 Kernfysica 2 Biologie 3 Aardwetenschappen 4 Sport ... Wikipedia

    Inhoud 1 Kernfysica 2 Biologie 3 Aardwetenschappen ... Wikipedia

    Deze term heeft andere betekenissen, zie Kern. De kernel is het centrale onderdeel van het besturingssysteem (OS) en biedt applicaties gecoördineerde toegang tot computerbronnen, zoals processortijd, geheugen en externe hardware... ... Wikipedia

    De term ‘microprocessorkern’ heeft geen duidelijke definitie en kan, afhankelijk van de gebruikscontext, betekenen: een deel van de microprocessor dat de belangrijkste functionele blokken bevat. een reeks parameters die kenmerkend zijn voor... ...Wikipedia

    Cachecache van microprocessor (meer dan RAM), gebruikt door de microprocessor van een computer om de gemiddelde toegangstijd tot het computergeheugen te verkorten. Is een van hogere niveaus geheugenhiërarchie ... Wikipedia

    Er wordt voorgesteld om deze pagina te hernoemen naar Processor Socket. Uitleg van de redenen en discussie op de Wikipedia-pagina: Hernoemen / 19 maart 2012. Misschien komt de huidige naam niet overeen met de normen van de moderne Russische taal en/of ... ... Wikipedia

    Cache (Engelse cache, uitgesproken als kæʃ cache) is een tussenliggende buffer met snelle toegang, die een kopie bevat van de informatie die is opgeslagen in het geheugen met minder snelle toegang, maar waarvan de kans het grootst is dat deze van daaruit wordt opgevraagd. Toegang tot gegevens in... ... Wikipedia

    De Cell-processorkern is een microprocessorarchitectuur die gezamenlijk is ontwikkeld door Sony, Toshiba en IBM, die een alliantie vormden die bekend staat als "STI". De ontwikkeling van de architectuur en de eerste prototypes zijn gemaakt in het STI Design Center voor... ... Wikipedia

    80486 DX2 x86 (eng. Intel 80x86) processorarchitectuur met een set met dezelfde naam ... Wikipedia

    - << Athlon >> Centrale verwerkingseenheid... Wikipedia

Boeken

  • ARM's Cortex-M3 Core The Definitive Guide, Yu D. Dit boek is een uitgebreide gids voor ARM's nieuwe 32-bits processor, de Cortex-M3. IN deze handleiding De architectuur van de processorkern wordt in detail beschreven...

Bij het beantwoorden van de vraag wat het aantal cores in een processor beïnvloedt, zou ik meteen willen zeggen: de prestaties van de computer. Maar dit is zo’n sterke vereenvoudiging dat het op een gegeven moment zelfs een vergissing wordt.

Het zou leuk zijn als gebruikers zich eenvoudigweg vergisten en niets verloren. Het probleem is dat het verkeerd begrijpen van de essentie van multi-core tot financiële verliezen leidt. In een poging de productiviteit te verhogen, geeft iemand geld uit aan een processor grote hoeveelheid kernen, maar merkt het verschil niet.

Multi-core en multi-threading

Toen we het probleem bestudeerden, merkten we een kenmerk van Intel-processors op: standaard gereedschap Windows geeft een ander aantal kernen weer. Dit komt door het werk van Hyper-Threading-technologie, die multi-threading biedt.

Laten we, zodat u niet langer in concepten verward raakt, het voor eens en voor altijd uitzoeken:

  • Multi-core – de chip is uitgerust met verschillende fysieke architecturale kernen. Je kunt ze zien en aanraken met je handen.
  • Multithreading – meerdere gelijktijdig verwerkte informatiestromen.
    De kern kan fysiek één zijn, maar software technologieën op basis hiervan worden twee taakuitvoeringsthreads gemaakt; twee kernen – vier draden, enz.

De impact van het aantal cores op de prestaties

Verbeterde prestaties op een multi-coreprocessor worden bereikt door de taakuitvoering te onderbreken. Elk modern systeem verdeelt het proces in verschillende threads, zelfs op een single-coreprocessor - zo wordt multitasking bereikt, waarbij je bijvoorbeeld naar muziek kunt luisteren, een document kunt typen en met een browser kunt werken. De volgende toepassingen houden van multithreading en maken er voortdurend gebruik van:

  • archiveringsmiddelen;
  • mediaspelers;
  • video-encoders;
  • defragmenteerders;
  • antivirusprogramma's;
  • grafische editor.

Het principe van stromingsscheiding is belangrijk. Als de computer op een single-coreprocessor zonder Hyper-Threading-technologie draait, schakelt het besturingssysteem onmiddellijk tussen threads, zodat voor de gebruiker de processen visueel gelijktijdig worden uitgevoerd. Alles gebeurt binnen milliseconden, dus je ziet niet veel latentie, tenzij je de CPU hard belast.

Als de processor multi-core is (of multi-threading ondersteunt), is er idealiter geen sprake van schakelen. Het systeem stuurt een aparte thread naar elke kern. Het resultaat is een hogere productiviteit, omdat er niet hoeft te worden overgeschakeld naar een andere taak.

Maar er is nog een belangrijke factor: ondersteunt het zichzelf? programma multitasking? Het systeem kan processen opsplitsen in verschillende threads. Als je echter een zeer veeleisende game draait, maar deze is niet geoptimaliseerd om op vier cores te draaien, zal er geen prestatiewinst zijn vergeleken met een dual-coreprocessor.

Game- en programma-ontwikkelaars zijn zich bewust van deze functie, dus optimaliseren ze voortdurend hun code om taken uit te voeren op multi-coreprocessors. Maar deze optimalisatie houdt niet altijd gelijke tred met de toename van het aantal cores, dus je moet niet veel geld uitgeven aan de nieuwste krachtige processors met het maximaal mogelijke aantal ondersteunde threads zal het potentieel van de chip in 9 van de 10 programma's niet worden onthuld.

Dus hoeveel cores moet je kiezen?

Voordat u een processor met 16 kernen koopt, moet u overwegen of dat aantal threads nodig zal zijn om de taken uit te voeren die u aan de computer toewijst.

  • Als een computer wordt aangeschaft om met documenten te werken, op internet te surfen, naar muziek te luisteren, films te kijken, dan zijn twee kernen voldoende. Als je een processor met twee kernen van bovenaf neemt prijssegment met een goede frequentie en ondersteuning voor meerdere threads zullen er geen problemen zijn bij het werken met grafische editors.
  • Koop je een machine met de verwachting van krachtige spelprestaties, installeer dan onmiddellijk een filter voor minimaal 4 kernen. 8 kernen met ondersteuning voor meerdere threads – de absolute top met een marge van meerdere jaren. 16 kernen zijn veelbelovend, maar de kans is groot dat tegen de tijd dat je het potentieel van een dergelijke chip ontsluit, deze verouderd zal zijn.

Zoals ik al zei, proberen game- en programma-ontwikkelaars de voortgang van processors bij te houden, maar tot nu toe enorme kracht gewoon niet nodig. 16 kernen zijn geschikt voor gebruikers die videoweergave of servercomputers gebruiken. Ja, in winkels worden dergelijke processors gameprocessors genoemd, maar dit is alleen zodat ze kunnen worden verkocht - er zijn beslist meer gamers in de buurt dan degenen die video's weergeven.

De voordelen van multi-cores kunnen alleen als zeer serieus worden opgemerkt computerwerk in meerdere draadjes. Als een game of programma relatief gezien is geoptimaliseerd voor slechts vier threads, dan zullen zelfs je acht cores zinloze kracht zijn die op geen enkele manier de prestaties zal beïnvloeden.

Het is net als het vervoeren van een stoel op een enorme vrachtwagen; de taak wordt er niet sneller door. Maar als u de beschikbare mogelijkheden correct gebruikt (bijvoorbeeld het lichaam laden met compleet ander meubilair), zal de arbeidsproductiviteit toenemen. Houd dit in gedachten en laat u niet misleiden door marketingtrucs die het woord ‘gaming’ toevoegen aan processors die, zelfs op zijn hoogst nieuwste spellen zullen hun volledige potentieel niet bereiken.

Ook op de site:

Wat wordt beïnvloed door het aantal processorkernen? bijgewerkt: 31 januari 2018 door: beheerder

Bij het kopen van een processor proberen veel mensen iets coolers te kiezen, met meerdere kernen en een grote klok frequentie. Maar weinig mensen weten wat het aantal processorkernen daadwerkelijk beïnvloedt. Waarom kan bijvoorbeeld een gewone en eenvoudige dual-coreprocessor sneller zijn dan een quad-coreprocessor, of kan hetzelfde ‘percentage’ met 4 cores sneller zijn dan een ‘percentage’ met 8 cores? Het is mooi interessant onderwerp, wat zeker de moeite waard is om meer in detail te begrijpen.

Invoering

Voordat we beginnen te begrijpen wat het aantal processorkernen beïnvloedt, wil ik een kleine uitweiding maken. Nog maar een paar jaar geleden waren CPU-ontwikkelaars ervan overtuigd dat productietechnologieën, die zich zo snel ontwikkelen, hen in staat zouden stellen "stenen" te produceren met kloksnelheden tot 10 GHz, waardoor gebruikers problemen met slechte prestaties zouden kunnen vergeten. Succes werd echter niet behaald.

Hoe het technologische proces zich ook ontwikkelde, zowel Intel als AMD stuitten op puur fysieke beperkingen waardoor ze eenvoudigweg geen processors konden produceren met een klokfrequentie tot 10 GHz. Toen werd besloten om niet te focussen op frequenties, maar op het aantal kernen. Zo begon een nieuw ras krachtigere en productievere processor-“kristallen” te produceren, die tot op de dag van vandaag voortduren, maar niet zo actief als in het begin.

Intel- en AMD-processors

Tegenwoordig zijn Intel en AMD directe concurrenten op de processormarkt. Als je naar omzet en omzet kijkt, ligt het duidelijke voordeel echter aan de kant van de Blues De laatste tijd De Reds proberen bij te blijven. Beide bedrijven hebben een goed assortiment kant-en-klare oplossingen voor alle gelegenheden - vanaf eenvoudige processor van 1-2 kernen tot echte monsters, waarbij het aantal kernen groter is dan 8. Dergelijke "stenen" worden doorgaans gebruikt op speciale werkcomputers met een beperkte focus.

Intel

Tegenwoordig heeft Intel dus succesvolle 5 soorten processors: Celeron, Pentium en i7. Elk van deze "stenen" heeft verschillende hoeveelheden kernen en bedoeld voor verschillende taken. Celeron heeft bijvoorbeeld slechts 2 kernen en wordt voornamelijk gebruikt op kantoor- en thuiscomputers. Pentium, of, zoals het ook wel ‘stomp’ wordt genoemd, wordt ook thuis gebruikt, maar presteert al veel beter, vooral dankzij Hyper-Threading-technologie, die nog twee fysieke kernen ‘voegt’ virtuele kernen, die stromen worden genoemd. Een dual-core "percentage" werkt dus als de meest budget quad-coreprocessor, hoewel dit niet helemaal correct is, maar dit is het belangrijkste punt.

Wat betreft Kern lijn, dan is hier sprake van ongeveer een vergelijkbare situatie. Het jongere model met het nummer 3 heeft 2 kernen en 2 draden. De oudere lijn - Core i5 - heeft al volwaardige 4 of 6 cores, maar mist de Hyper-Threading-functie en heeft geen extra threads, behalve de 4-6 standaardthreads. Nou ja, het laatste: core i7 is topverwerkers, die doorgaans 4 tot 6 kernen en twee keer zoveel threads hebben, dat wil zeggen bijvoorbeeld 4 kernen en 8 threads of 6 kernen en 12 threads.

AMD

Nu is het de moeite waard om over AMD te praten. De lijst met "kiezelstenen" van dit bedrijf is enorm; het heeft geen zin om alles op te sommen, aangezien de meeste modellen simpelweg 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 over de volledige 4 kernen beschikt, terwijl het oudere model er geen 6, maar acht heeft. Bovendien verandert het aantal threads. Ryzen 3 - 4 threads, Ryzen 5 - 8-12 (afhankelijk van het aantal kernen - 4 of 6) en Ryzen 7 - 16 threads.

Het is de moeite waard om nog een "rode" lijn te noemen: FX, die in 2012 verscheen, en in feite dit platform wordt al als verouderd beschouwd, maar dankzij het feit dat het nu steeds meer wordt meer programma's en games multi-threading beginnen te ondersteunen, is de Vishera-lijn weer populair geworden, die, samen met de lage prijzen, alleen maar groeit.

Wat betreft het debat over de processorfrequentie en het aantal kernen, dan is het in feite juister om naar de tweede te kijken, aangezien iedereen al lang geleden heeft besloten over klokfrequenties, en zelfs top modellen van Intel werken op nominaal 2,7, 2,8, 3 GHz. Bovendien kan de frequentie altijd worden verhoogd door middel van overklokken, maar in het geval van een dual-core processor zal dit niet veel effect opleveren.

Hoe kom je erachter hoeveel kernen

Als iemand niet weet hoe hij het aantal processorkernen moet bepalen, dan kan dit eenvoudig en eenvoudig worden gedaan, zelfs zonder afzonderlijke te downloaden en te installeren speciale programma's. Ga gewoon naar "Apparaatbeheer" en klik op het kleine pijltje naast het item "Processors".

Haal meer gedetailleerde informatie U kunt ontdekken welke technologieën uw “steen” ondersteunt, wat de klokfrequentie is, het revisienummer en nog veel meer met behulp van een speciaal en klein programma genaamd 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 kunnen zijn van een dual-coreprocessor? Er zijn veel dingen, bijvoorbeeld in games of applicaties, bij de ontwikkeling waarvan single-threaded werk de belangrijkste prioriteit was. Neem het spel Wold of Tanks als voorbeeld. De meest voorkomende dual-core processors zoals Pentium of Celeron zullen behoorlijk behoorlijke prestatieresultaten opleveren, 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 kernen

Hoe kunnen vier kernen beter zijn dan twee? Betere prestatie. Quad-core "stenen" zijn ontworpen voor serieuzer werk, waar eenvoudige "stronken" of "celerons" eenvoudigweg niet tegen kunnen. Een uitstekend voorbeeld Elk programma voor het werken met 3D-graphics zal hier werken, bijvoorbeeld 3Ds Max of Cinema4D.

Tijdens het weergaveproces gebruiken deze programma's maximale computerbronnen, inclusief RAM en processor. Dual-core CPU's zullen erg langzaam zijn in de verwerkingstijd van de renders, en hoe complexer de scène, hoe langer dit zal duren. Maar processors met vier kernen zullen deze taak veel sneller aankunnen, omdat extra threads hen te hulp zullen komen.

Natuurlijk kun je wat budget "protsyk" nemen Kern familie i3, bijvoorbeeld model 6100, maar 2 cores en 2 extra threads zullen nog steeds inferieur zijn aan een volwaardige quad-core.

6 en 8 kernen

Welnu, het laatste segment van multi-cores zijn 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. Bovendien worden volwaardige gespecialiseerde computers gebouwd op basis van "stenen" met 6 en 8 kernen, die zullen worden "op maat gemaakt" voor een specifieke activiteit, bijvoorbeeld videobewerking, 3D-modelleringsprogramma's, het weergeven van kant-en-klare zware scènes met een groot aantal polygonen en objecten, etc. .d.

Bovendien presteren dergelijke multi-coreprocessors zeer goed bij het werken met archiveringsprogramma's of in toepassingen die goede computermogelijkheden vereisen. In games die zijn geoptimaliseerd voor multi-threading kennen dergelijke processors geen gelijke.

Wat wordt beïnvloed door het aantal processorkernen?

Waar kan het aantal kernen nog meer invloed op hebben? In de eerste plaats om het energieverbruik te verhogen. Ja, hoe verrassend dit ook mag klinken, het is waar. U hoeft zich niet al te veel zorgen te maken, want in het dagelijks leven zal dit probleem als het ware niet merkbaar zijn.

De tweede is verwarming. Hoe meer kernen, hoe beter het koelsysteem nodig is. Een programma genaamd AIDA64 helpt u de processortemperatuur te meten. Bij het starten moet u op "Computer" klikken en vervolgens "Sensoren" selecteren. U moet de temperatuur van de processor controleren, want als deze voortdurend oververhit raakt of op te hoge temperaturen werkt, zal deze na enige tijd eenvoudigweg doorbranden.

Dual-core systemen kennen dit probleem niet, omdat ze niet veel hebben hoge performantie en warmteafvoer, respectievelijk, maar multi-core - ja. De heetste stenen zijn die van AMD, vooral de FX-serie. Neem bijvoorbeeld het FX-6300-model. De processortemperatuur in het AIDA64-programma ligt rond de 40 graden en deze bevindt zich in de inactieve modus. Onder belasting zal het aantal toenemen en als er oververhitting optreedt, wordt de computer uitgeschakeld. Dus als u een multi-coreprocessor koopt, mag u de koeler niet vergeten.

Waar heeft het aantal processorkernen nog meer invloed op? Voor multitasken. Dual-coreprocessors zullen geen stabiele prestaties kunnen leveren wanneer twee, drie of meer programma's tegelijkertijd worden uitgevoerd. Het eenvoudigste voorbeeld zijn streamers op internet. Afgezien van het feit dat ze een spelletje aan het spelen zijn hoge instellingen, ze hebben een parallel programma waarmee je kunt uitzenden spel proces naar internet online, een internetbrowser met meerdere pagina's openen, waarbij de speler in de regel de opmerkingen leest van de mensen die naar hem kijken en andere informatie volgt. Zelfs niet elke multi-coreprocessor kan de juiste stabiliteit bieden, om nog maar te zwijgen van dual- en single-coreprocessors.

Het is ook de moeite waard om een ​​paar woorden te zeggen die multi-coreprocessors erg hebben nuttig ding, die "L3-cache" wordt genoemd. Deze cache heeft een bepaalde hoeveelheid geheugen waarnaar voortdurend wordt geschreven diverse informatie 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 iemand bijvoorbeeld vaak Photoshop gebruikt, wordt deze informatie in het geheugen opgeslagen en wordt de tijd om het programma te starten en te openen aanzienlijk verkort.

Samenvatten

Als we het gesprek samenvatten over wat het aantal processorkernen beïnvloedt, kunnen we tot één ding komen: simpele conclusie: indien nodig goed optreden, prestaties, multitasking, werken in zware applicaties, de mogelijkheid om comfortabel te spelen moderne spellen etc., dan kies je voor een processor met vier cores of meer. Als u een eenvoudige “computer” nodig heeft voor op kantoor of thuis gebruik, die tot een minimum zal worden gebruikt, dan zijn er 2 cores nodig. Hoe dan ook, bij het kiezen van een processor moet u allereerst al uw behoeften en taken analyseren en pas daarna eventuele opties overwegen.

  • Handleiding

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 multi-core, multi-processor, multi-threaded. Er verschenen verschillende soorten parallellisme in de IA-32 CPU andere keer en in een enigszins inconsistente volgorde. Het is vrij gemakkelijk om in dit alles in de war te raken, vooral als je bedenkt dat besturingssystemen details zorgvuldig verbergen voor minder geavanceerde applicatieprogramma's.

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

Waarschuwing voor ®, ™ tekens in het artikel

De mijne legt uit waarom werknemers van bedrijven auteursrechtvermeldingen moeten gebruiken in openbare communicatie. In dit artikel moest ik ze vrij vaak gebruiken.

CPU

De oudste, meest gebruikte en controversiële term is uiteraard ‘verwerker’.

IN moderne wereld een processor is wat we kopen in een mooie retaildoos of een niet zo mooi OEM-pakket. Een ondeelbare entiteit die in een stopcontact wordt gestoken moederbord. Zelfs als er geen connector is en deze 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 beschikken soms over twee of meer processors op één moederbord.

Meerdere ondersteuning centrale verwerkingseenheden in één systeem vereist talrijke veranderingen in het ontwerp. Het is op zijn minst noodzakelijk om ze te verstrekken fysieke verbinding(voorzie meerdere sockets op het moederbord), los problemen op met betrekking tot processoridentificatie (zie verderop in dit artikel, evenals mijn opmerking), coördinatie van geheugentoegang en interruptaflevering (de interruptcontroller moet interrupts naar meerdere processors kunnen routeren) en Uiteraard ondersteuning van het besturingssysteem. Helaas kon ik geen documentaire vermelding vinden van de creatie van het eerste multiprocessorsysteem op Intel-processors, maar Wikipedia beweert dat Sequent Computer Systems ze al in 1987 leverde, met behulp van Intel 80386-processors. Ondersteuning voor meerdere chips in één systeem wordt steeds wijdverbreid. te beginnen met Intel® Pentium.

Als er meerdere processors zijn, heeft elk zijn eigen connector op het bord. Elk van hen heeft volledige onafhankelijke kopieën van alle bronnen, zoals registers, uitvoeringsapparaten, caches. Ze delen een gemeenschappelijk geheugen: RAM. Het geheugen kan er op verschillende en nogal niet-triviale manieren mee worden verbonden, maar dit nog een verhaal, wat buiten het bestek van dit artikel valt. Het belangrijkste is dat in ieder geval voor uitvoerbare programma's de illusie van homogeen gedeeld geheugen dat toegankelijk is vanaf alle processors in het systeem moet worden gecreëerd.


Klaar voor de start! Intel® desktopkaart D5400XS

Kern

Historisch gezien verschenen multi-cores in Intel IA-32 later dan Intel® HyperThreading, maar in de logische hiërarchie komen ze daarna.

Het lijkt erop dat als een systeem meer processors heeft, de prestaties hoger zijn (bij taken die alle bronnen kunnen gebruiken). Als de kosten van communicatie tussen hen echter te hoog zijn, worden alle voordelen van parallellisme teniet gedaan door lange vertragingen bij de overdracht van gemeenschappelijke gegevens. Dit is precies wat wordt waargenomen in systemen met meerdere processors: zowel fysiek als logisch liggen ze erg ver van elkaar. Voor effectieve communicatie In dergelijke omstandigheden is het noodzakelijk om gespecialiseerde bussen te bedenken, zoals Intel® QuickPath Interconnect. Het energieverbruik, de omvang en de prijs van de uiteindelijke oplossing worden door dit alles uiteraard niet verminderd. Hoge integratie van componenten zou te hulp moeten komen - circuits die onderdelen uitvoeren parallel programma, je moet ze dichter naar elkaar toe slepen, bij voorkeur op één kristal. Met andere woorden: één processor zou er meerdere moeten organiseren kernen, in alles identiek aan elkaar, maar zelfstandig werkend.

De eerste multi-core IA-32-processors van Intel werden in 2005 geïntroduceerd. Sindsdien is het gemiddelde aantal kernen in server, desktop en nu mobiele platforms groeit gestaag.

In tegenstelling tot de twee single-coreprocessors In hetzelfde systeem, dat alleen geheugen deelt, kunnen de twee kernen ook caches en andere bronnen delen die verantwoordelijk zijn voor de interactie met geheugen. Meestal blijven caches op het eerste niveau privé (elke kern heeft zijn eigen), terwijl de tweede en derde niveaus gedeeld of gescheiden kunnen zijn. Met deze systeemorganisatie kunt u de vertragingen bij het leveren van gegevens tussen aangrenzende kernen verminderen, vooral als ze aan een gemeenschappelijke taak werken.


Deze coupe van een quad-core Intel-processor met de codenaam Nehalem. Individuele kernen worden gemarkeerd, gedeelde cache derde niveau, evenals QPI-koppelingen naar andere processors en een gemeenschappelijke geheugencontroller.

Hyperthread

Tot ongeveer 2002 de enige manier Om een ​​IA-32-systeem te verkrijgen dat in staat is om twee of meer programma's parallel uit te voeren, moesten multiprocessorsystemen worden gebruikt. De Intel® Pentium® 4 en de Xeon-lijn met codenaam Foster (Netburst) worden geïntroduceerd nieuwe technologie- hyperthreads of hyperthreads, - Intel® HyperThreading (hierna HT).

Er is niets nieuws onder de zon. HT is een speciaal geval van wat in de literatuur simultane multithreading (SMT) wordt genoemd. 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, die primair verantwoordelijk zijn voor het opslaan van de architecturale staatsregisters, in één processor gedupliceerd. De uitvoerende knooppunten die verantwoordelijk zijn voor het organiseren en verwerken van gegevens blijven uniek en worden op elk moment door maximaal één van de threads gebruikt. Net als kernen delen hyperthreads caches, maar vanaf welk niveau hangt af van het specifieke systeem.

Ik zal niet proberen alle voor- en nadelen van SMT-ontwerpen in het algemeen en HT-ontwerpen in het bijzonder uit te leggen. De geïnteresseerde lezer zal er misschien wel iets van vinden gedetailleerde discussie technologie in veel bronnen, en natuurlijk op Wikipedia. Ik merk echter het volgende op belangrijk punt, waarin de huidige beperkingen op het aantal hyperthreads in de echte productie worden uitgelegd.

Draadbeperkingen
In welke gevallen is de aanwezigheid van “oneerlijke” multi-cores in de vorm van HT gerechtvaardigd? Als één applicatiethread niet alle uitvoeringsknooppunten in de kernel kan laden, kunnen ze worden “uitgeleend” aan een andere thread. Dit is typisch voor toepassingen die niet een knelpunt hebben bij de berekening, maar bij de gegevenstoegang, dat wil zeggen dat ze vaak cache-missers genereren en moeten wachten tot gegevens uit het geheugen worden afgeleverd. Gedurende deze tijd zal de kern zonder HT gedwongen worden inactief te zijn. Door de aanwezigheid van HT kunt u snel vrije uitvoerende knooppunten naar een andere architecturale staat overschakelen (aangezien deze gedupliceerd is) en de instructies ervan uitvoeren. Dit is een speciaal geval van een techniek die latentieverbergen wordt genoemd, waarbij één lange bewerking wordt uitgevoerd nuttige hulpmiddelen inactief, gemaskeerd door de parallelle uitvoering van andere taken. Als de applicatie dat al heeft hoge graad gebruik van kernelbronnen, zal de aanwezigheid van hyperthreads geen versnelling mogelijk maken - hier zijn "eerlijke" kernels nodig.

Typische scenario's voor desktop- en servertoepassingen, ontworpen voor machine-architecturen algemeen doel,hebben het potentieel voor parallellisme mogelijk gemaakt door HT. Dit potentieel wordt echter snel benut. 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 uit het gebruik van drie of meer hyperthreads klein zijn, maar het verlies aan matrijsgrootte, 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-technologie met een groter aantal threads. Omdat Intel® Xeon Phi-coprocessors (geïntroduceerd in 2010) ideologisch en genealogisch vrij dicht bij videokaarten staan, hebben ze mogelijk vier hyperthreading op elke kern - een configuratie die uniek is voor de IA-32.

Logische processor

Van de drie beschreven ‘niveaus’ van parallellisme (processors, cores, hyperthreads) kunnen sommige of zelfs alle ontbreken in een bepaald systeem. Dit wordt beïnvloed BIOS-instellingen(multi-core en multithreading zijn onafhankelijk uitgeschakeld), microarchitectuurfuncties (HT was bijvoorbeeld afwezig in de Intel® Core™ Duo, maar werd teruggegeven bij de release van Nehalem) en systeemgebeurtenissen (servers met meerdere processors kunnen defecte processors uitschakelen als er fouten worden gedetecteerd en blijven "vliegen" op de resterende fouten). Hoe is deze dierentuin van gelijktijdigheid op meerdere niveaus zichtbaar voor het besturingssysteem en uiteindelijk voor applicatietoepassingen?

Verder geven we voor het gemak het aantal processors, cores en threads in een bepaald systeem aan met drie ( X, j, z), Waar X is het aantal processors, j- het aantal kernen in elke processor, en z- aantal hyperthreads in elke kern. Vanaf nu noem ik dit drie topologie- een gevestigde term die weinig te maken heeft met de tak van de wiskunde. Werk P = xyz definieert het aantal aangeroepen entiteiten logische processors systemen. Het definieert het totale aantal onafhankelijke applicatieprocescontexten in een systeem gedeelde herinnering parallel uitvoeren, waarmee het besturingssysteem rekening moet houden. Ik zeg "geforceerd" omdat het de uitvoeringsvolgorde van twee processen op verschillende logische processors niet kan controleren. Dit geldt ook voor hyperthreads: hoewel ze ‘opeenvolgend’ op dezelfde kern draaien, wordt de specifieke volgorde bepaald door de hardware en kan deze niet worden waargenomen of gecontroleerd door programma’s.

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


Windows-taak Manager toont 8 logische processors; maar hoeveel kost het in processors, cores en hyperthreads?


Linux top toont 4 logische processors.

Dit is best handig voor makers van applicaties: ze hebben niet te maken met hardwarefuncties die voor hen vaak onbelangrijk zijn.

Softwaredefinitie van topologie

Natuurlijk schept het abstraheren van de topologie in één enkel aantal logische processors in sommige gevallen voldoende grond voor verwarring en misverstanden (in verhitte internetgeschillen). Computertoepassingen die maximale prestaties uit hardware willen halen, vereisen gedetailleerde controle over waar hun threads worden geplaatst: dichter bij elkaar op aangrenzende hyperthreads of, omgekeerd, verder weg op verschillende verwerkers. De snelheid van communicatie tussen logische processors binnen dezelfde kern of processor is veel hoger dan de snelheid van gegevensoverdracht tussen processors. De mogelijkheid van heterogeniteit in de organisatie van het werkgeheugen compliceert het beeld ook.

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

Ik zal je hier niet vervelen met alle details van de afzonderlijke onderdelen van dit algoritme. Als er interesse is, kan het volgende deel van dit artikel hieraan worden gewijd. Ik verwijs de geïnteresseerde lezer naar deze kwestie, die zo gedetailleerd mogelijk op deze kwestie ingaat. Hier zal ik eerst kort beschrijven wat APIC is en hoe het zich verhoudt tot de topologie. Vervolgens gaan we kijken naar het werken met het 0xB-blad (elf in decimalen), wat momenteel het laatste woord is in "apico-building".

APIC-ID
Lokale APIC (advanced programmable interrupt controller) is een apparaat (nu onderdeel van de processor) dat verantwoordelijk is voor het afhandelen van 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 iedereen (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 overblijfselen van vroeger verspreid over de CPUID, maar CPUID.0xB.EDX retourneert alle 32 bits van de APIC ID. Op elke logische processor die onafhankelijk de CPUID-instructie uitvoert, wordt een andere waarde geretourneerd.

Verduidelijking van familiebanden
De APIC ID-waarde zelf vertelt u niets over de topologie. Om erachter te komen welke twee logische processors zich in één fysieke processor bevinden (dat wil zeggen: het zijn ‘broers’ hyperthreads), welke twee zich in dezelfde processor bevinden en welke volledig verschillende processors zijn, moet u hun APIC ID-waarden vergelijken. Afhankelijk van de mate van verwantschap zullen sommige van hun bits samenvallen. Deze informatie is opgenomen in CPUID.0xB-sublijsten, die operandgecodeerd zijn in ECX. Elk van hen beschrijft de situatie beetje veld een van de topologieniveaus in EAX (meer precies, het aantal bits dat naar rechts moet worden verschoven in de APIC ID om lagere niveaus topologie), evenals het type van deze laag - hyperthread, core of processor - in ECX.

Logische processors die zich in dezelfde kern bevinden, hebben alle APIC ID-bits hetzelfde, behalve die welke tot het SMT-veld behoren. Voor logische processors die zich in dezelfde processor bevinden, alle bits behalve de Core- en SMT-velden. Omdat het aantal subbladen voor CPUID.0xB kan toenemen, dit schema zal ons in staat stellen de beschrijving van topologieën met een groter aantal niveaus te ondersteunen, als dat in de toekomst nodig zou zijn. Bovendien zal het mogelijk zijn om tussenniveaus tussen bestaande niveaus in te voeren.

Een belangrijk gevolg van de organisatie van dit schema is dat er in de set van alle APIC-ID's van alle logische processors van het systeem "gaten" kunnen zitten, d.w.z. ze zullen niet opeenvolgend gaan. In een multi-coreprocessor waarbij HT is uitgeschakeld, kunnen bijvoorbeeld alle APIC-ID's even blijken te zijn, aangezien de minst significante bit die verantwoordelijk is voor het coderen van het hyperthread-nummer altijd nul zal zijn.

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

Besturingssystemen en topologie

Besturingssystemen bieden informatie over de topologie van logische processors aan applicaties die hun eigen interfaces gebruiken.

Op Linux bevindt topologie-informatie zich in het /proc/cpuinfo pseudobestand, evenals in de uitvoer van het dmidecode-commando. In het onderstaande voorbeeld filter ik de inhoud van cpuinfo op een quad-coresysteem zonder HT, waardoor alleen gegevens overblijven die verband houden met de topologie:

Verborgen tekst

ggg@shadowbox:~$ cat /proc/cpuinfo |grep "processor\|physical\ id\|siblings\|core\|cores\|apicid" processor: 0 fysieke id: 0 broers en zussen: 4 core id: 0 cpu cores: 2 apicid: 0 aanvankelijke apicid: 0 processor: 1 fysieke id: 0 broers en zussen: 4 kern-id: 0 cpu-kernen: 2 apicid: 1 initiële apicid: 1 processor: 2 fysieke id: 0 broers en zussen: 4 kern-id: 1 cpu-kernen: 2 apicid: 2 initiële apicid: 2 processor: 3 fysieke id: 0 broers en zussen: 4 kern-id: 1 cpu-kernen: 2 apicid: 3 initiële apicid: 3

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

Verborgen tekst

gebruiker@host:~$ 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 Taakbeheer.

Invoering.

Een moderne processor is complex en zeer technisch logisch apparaat, waarin de nieuwste ontwikkelingen op dit gebied zijn opgenomen computer technologie en aanverwante wetenschapsgebieden.

De meeste moderne processors bestaan ​​uit:

  • een of meer kernen 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;
  • controleur systeem bus(DMI, QPI, HT, enz.);

En wordt gekenmerkt de volgende parameters:

  • type microarchitectuur;
  • klokfrequentie;
  • reeks uit te voeren opdrachten;
  • het aantal cachegeheugenniveaus en hun volume;
  • systeembustype en snelheid;
  • grootte van verwerkte woorden;
  • de aanwezigheid of afwezigheid van een ingebouwde geheugencontroller;
  • type ondersteund RAM;
  • adresseerbaar geheugenvolume;
  • de aanwezigheid of afwezigheid van een ingebouwde grafische kern;
  • energieverbruik.

Vereenvoudigd structureel schema moderne multi-coreprocessor wordt getoond in Figuur 1.

Laten we beginnen met onze beoordeling van het processorontwerp met het belangrijkste onderdeel: de kern.

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

Figuur 1 toont een blokdiagram van de processorkern. Zoals je in de figuur kunt zien, bestaat elke processorkern uit verschillende functionele blokken:

  • instructie ophaalblok;
  • instructiedecoderingsblokken;
  • gegevensbemonsteringsblokken;
  • besturingseenheid;
  • instructie-uitvoeringsblokken;
  • blokken voor het opslaan van resultaten;
  • werkblok met onderbrekingen;
  • ROM met microcode;
  • set registers;
  • programma teller.

Instructie ophaalblok leest instructies op het adres dat is opgegeven in de programmateller. Normaal gesproken leest het meerdere instructies per klokcyclus. Het aantal leesinstructies wordt bepaald door het aantal decodeerblokken, aangezien het noodzakelijk is om de decodeerblokken bij elke werkingscyclus zoveel mogelijk te laden. Om de instructieophaaleenheid optimaal te laten werken, heeft de processorkern een vertakkingsvoorspeller.

Voorspeller van transitie probeert te bepalen welke reeks opdrachten zal worden uitgevoerd nadat een overgang is gemaakt. Dit is nodig om de processorkernpijplijn na een voorwaardelijke sprong zoveel mogelijk te laden.

Blokken decoderen, zoals de naam al aangeeft, zijn blokken die zich bezighouden met decoderingsinstructies, 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 processors die op het CISC-concept zijn gebouwd. Feit is dat de lengte van instructies en het aantal operanden niet vastliggen, en dit bemoeilijkt het leven van processorontwikkelaars aanzienlijk en maakt het decoderingsproces niet-triviale taak.



Vaak moeten individuele complexe commando's worden vervangen door microcode - een reeks eenvoudige instructies, waarbij gezamenlijk dezelfde actie wordt uitgevoerd als één complexe instructie. De microcodeset wordt geflasht naar het ROM dat in de processor is ingebouwd. Bovendien vereenvoudigt microcode de ontwikkeling van de processor, omdat het niet nodig is om complexe kernelblokken te maken om individuele opdrachten uit te voeren, en het repareren van microcode veel eenvoudiger is dan het repareren van een fout in de werking van het blok.

IN moderne verwerkers Meestal zijn er bijvoorbeeld 2-4 instructiedecodeereenheden in processors Intel Core 2 bevat elke kern twee van dergelijke blokken.

Gegevensbemonsteringsblokken gegevens ophalen uit het cachegeheugen of RAM die nodig zijn om de huidige instructies uit te voeren. Meestal elke processorkern bevat verschillende databemonsteringsblokken. Intel Core-processors gebruiken bijvoorbeeld twee gegevensmonsters voor elke kern.

Controle blok Op basis van gedecodeerde instructies bestuurt het de werking van instructie-uitvoeringsblokken, verdeelt de belasting daartussen en zorgt voor een tijdige en correcte uitvoering van instructies. Dit is een van de belangrijkste blokken van de processorkern.

Instructie-uitvoeringsblokken bevatten verschillende soorten blokken:

ALU – rekenkundige logische eenheid;

FPU – apparaat voor het uitvoeren van drijvende-kommabewerkingen;

Blokken voor het verwerken van de uitbreiding van de instructieset. Aanvullende instructies worden gebruikt om de verwerking van datastromen, encryptie en decryptie, videocodering enzovoort te versnellen. Om dit te doen worden extra registers en logicasets in de processorkern geïntroduceerd. Op dit moment De meest populaire uitbreidingen van instructiesets zijn:

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

SSE (Streaming SIMD Extensions) is een reeks instructies ontwikkeld door Intel om dezelfde reeks bewerkingen uit te voeren op een reeks gegevens, terwijl het computerproces parallel loopt. Commandosets 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 is ontwikkeld om het werk van gespecialiseerde software en het verminderen van het energieverbruik bij het werken met dergelijke programma's. Deze instructies kunnen bijvoorbeeld worden gebruikt bij het berekenen controlesommen of het ophalen van gegevens;

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

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

Blok voor het opslaan van resultaten zorgt ervoor dat het resultaat van de uitvoering van de instructie wordt vastgelegd in RAM op het adres dat is opgegeven in de instructie die wordt verwerkt.

Blok onderbreken. Werken met onderbrekingen is één van de belangrijkste taken processor, waardoor deze tijdig op gebeurtenissen kan reageren, de voortgang van het programma kan onderbreken en de vereiste acties kan uitvoeren. Dankzij de aanwezigheid van interrupts is de processor in staat tot pseudo-parallelle werking, d.w.z. aan het zogenaamde multitasken.

Onderbrekingen worden als volgt afgehandeld. De processor controleert vóór het starten van elke cyclus of er een interruptverzoek is. Als er een interrupt moet worden verwerkt, slaat de processor op de stapel het adres op van de instructie die hij moest uitvoeren en de gegevens die na de uitvoering zijn ontvangen laatste instructie, en gaat verder met het uitvoeren van de interruptafhandelingsfunctie.

Nadat de interruptverwerkingsfunctie is uitgevoerd, worden de gegevens die erop zijn opgeslagen van de stapel gelezen en hervat de processor de uitvoering van de herstelde taak.

Registreert– ultrasnel RAM (meerdere keren toegang tot registers snellere toegang voor cachegeheugen) van een klein volume (enkele honderden bytes), opgenomen in de processor, voor tijdelijke opslag tussenresultaten Instructies volgen. Processorregisters zijn onderverdeeld in twee typen: registers voor algemene doeleinden en speciale registers.

Registers voor algemene doeleinden worden gebruikt bij het uitvoeren van rekenkundige en logische operaties of specifieke handelingen extra setjes instructies (MMX, SSE, enz.).

Registreert speciaal doel systeemgegevens bevatten die nodig zijn voor de werking van de processor. Dergelijke registers omvatten bijvoorbeeld controleregisters, systeemadresregisters, foutopsporingsregisters, enz. De toegang tot deze registers is strikt gereguleerd.

Programma teller– een register dat het adres bevat van de instructie die de processor zal gaan uitvoeren bij de volgende klokcyclus.