Implementatie van multi-threaded game-engine-architectuur. Gelijktijdigheid staat

* Er zijn altijd prangende vragen over waar je op moet letten bij het kiezen van een processor, om geen fouten te maken.

Ons doel in dit artikel is om alle factoren te beschrijven die van invloed zijn op de processorprestaties en andere operationele kenmerken.

Het is waarschijnlijk geen geheim dat de processor de belangrijkste rekeneenheid van een computer is. Je zou zelfs kunnen zeggen: het belangrijkste onderdeel van de computer.

Hij is het die bijna alle processen en taken verwerkt die in de computer plaatsvinden.

Of het nu gaat om het bekijken van video's, muziek, surfen op internet, schrijven en lezen in het geheugen, het verwerken van 3D en video, games. En nog veel meer.

Daarom kiezen C centraal P processor, moet u er zeer voorzichtig mee omgaan. Het kan blijken dat je besluit een krachtige videokaart en een processor te installeren die niet bij het niveau past. In dit geval zal de processor het potentieel van de videokaart niet onthullen, wat de werking ervan zal vertragen. De processor zal volledig geladen zijn en letterlijk koken, en de videokaart zal op zijn beurt wachten en op 60-70% van zijn mogelijkheden werken.

Daarom moet u bij het kiezen van een gebalanceerde computer Niet kosten verwaarloos de processor ten gunste van een krachtige videokaart. De processorkracht moet voldoende zijn om het potentieel van de videokaart te ontketenen, anders is het gewoon weggegooid geld.

Intel versus AMD

*voor altijd inhalen

Bedrijf Intel, beschikt over enorme menselijke hulpbronnen en vrijwel onuitputtelijke financiën. Veel innovaties in de halfgeleiderindustrie en nieuwe technologieën komen van dit bedrijf. Processoren en ontwikkelingen Intel, gemiddeld door 1-1,5 jaren vooruit op de prestaties van de ingenieurs AMD. Maar zoals u weet, moet u betalen voor de mogelijkheid om over de modernste technologieën te beschikken.

Prijsbeleid voor processors Intel, is op beide gebaseerd aantal kernen, hoeveelheid cache, maar ook op "frisheid" van de architectuur, prestatie per klokwatt,chipprocestechnologie. De betekenis van cachegeheugen, de “subtiliteiten van het technische proces” en andere belangrijke kenmerken van de processor worden hieronder besproken. Voor het bezit van dergelijke technologieën en een gratis frequentievermenigvuldiger moet u ook een extra bedrag betalen.

Bedrijf AMD, in tegenstelling tot het bedrijf Intel, streeft naar de beschikbaarheid van haar verwerkers voor de eindconsument en naar een competent prijsbeleid.

Dat zou je zelfs kunnen zeggen AMD– « Volksstempel" In de prijskaartjes vindt u wat u nodig heeft tegen een zeer aantrekkelijke prijs. Meestal een jaar nadat het bedrijf een nieuwe technologie heeft Intel, een analoog van technologie blijkt uit AMD. Als u niet de hoogste prestaties nastreeft en meer aandacht besteedt aan het prijskaartje dan aan de beschikbaarheid van geavanceerde technologieën, dan zijn de producten van het bedrijf AMD- enkel voor jou.

Prijsbeleid AMD, is meer gebaseerd op het aantal cores en heel weinig op de hoeveelheid cachegeheugen en de aanwezigheid van architectonische verbeteringen. In sommige gevallen moet je voor de mogelijkheid om cachegeheugen op het derde niveau te hebben een beetje extra betalen ( Fenomeen heeft een cachegeheugen met 3 niveaus, Athlon inhoud met slechts beperkt, niveau 2). Maar soms AMD verwent zijn fans mogelijkheid om te ontgrendelen goedkopere processors tot duurdere. U kunt de kernen of het cachegeheugen ontgrendelen. Verbeteren Athlon voor Fenomeen. Dit is mogelijk dankzij de modulaire architectuur en het ontbreken van enkele goedkopere modellen, AMD schakelt eenvoudigweg enkele blokken op de chip van duurdere (software) uit.

Kernen– blijven vrijwel ongewijzigd, alleen hun aantal verschilt (geldt voor processors 2006-2011 jaar). Vanwege de modulariteit van zijn processors doet het bedrijf uitstekend werk door afgekeurde chips te verkopen, die, wanneer sommige blokken worden uitgeschakeld, een processor worden uit een minder productieve lijn.

Onder de codenaam werkt het bedrijf al jaren aan een compleet nieuwe architectuur Bulldozer, maar op het moment van uitgave in 2011 jaar lieten de nieuwe processors niet de beste prestaties zien. AMD Ik gaf de besturingssystemen de schuld omdat ze de architectonische kenmerken van dual cores en ‘andere multithreading’ niet begrepen.

Volgens bedrijfsvertegenwoordigers moet je wachten op speciale fixes en patches om de volledige prestaties van deze processors te ervaren. Echter, in het begin 2012 Vorig jaar hebben bedrijfsvertegenwoordigers de release van een update ter ondersteuning van de architectuur uitgesteld Bulldozer voor de tweede helft van het jaar.

Processorfrequentie, aantal kernen, multi-threading.

Tijdens tijden Pentium4 en vóór hem - CPU-frequentie, was de belangrijkste prestatiefactor voor de processor bij het selecteren van een processor.

Dit is niet verrassend, want processorarchitecturen zijn speciaal ontwikkeld om hoge frequenties te behalen, en dit kwam vooral tot uiting in de processor Pentium4 op architectuur NetBurst. Hoge frequentie was niet effectief met de lange pijplijn die in de architectuur werd gebruikt. Zelfs Athlon XP frequentie 2GHz, in termen van productiviteit was hoger dan Pentium4 C 2,4 GHz. Het was dus pure marketing. Na deze fout heeft het bedrijf Intel besefte mijn fouten en keerde terug naar de kant van het goede Ik begon niet aan de frequentiecomponent te werken, maar aan de prestaties per klok. Van architectuur NetBurst Ik moest weigeren.

Wat hetzelfde voor ons geeft multicore?

Quad-coreprocessor met frequentie 2,4 GHz, in multi-threaded toepassingen, zal theoretisch bij benadering het equivalent zijn van een single-coreprocessor met een frequentie 9,6 GHz of 2-coreprocessor met frequentie 4,8 GHz. Maar dat is alleen in theorie. Praktisch Twee dual-coreprocessors in een moederbord met twee sockets zullen echter sneller zijn dan één 4-coreprocessor bij dezelfde werkfrequentie. Beperkingen op de bussnelheid en geheugenlatentie eisen hun tol.

* onderworpen aan dezelfde architectuur en hoeveelheid cachegeheugen

Multi-core maakt het mogelijk om instructies en berekeningen in delen uit te voeren. U moet bijvoorbeeld drie rekenkundige bewerkingen uitvoeren. De eerste twee worden uitgevoerd op elk van de processorkernen en de resultaten worden toegevoegd aan het cachegeheugen, waar de volgende actie ermee kan worden uitgevoerd door een van de vrije kernen. Het systeem is zeer flexibel, maar zonder de juiste optimalisatie werkt het mogelijk niet. Daarom is optimalisatie voor multi-cores erg belangrijk voor de processorarchitectuur in een besturingssysteemomgeving.

Applicaties die "liefde" en gebruik multithreading: archiveringsdiensten, videospelers en encoders, antivirusprogramma's, defragmentatieprogramma's, grafische editor, browsers, Flash.

Tot de "liefhebbers" van multithreading behoren ook besturingssystemen als Windows 7 En Windows Vista, net als veel Besturingssysteem kernel gebaseerd Linux, die merkbaar sneller werken met een multi-coreprocessor.

Meest spellen Soms is een 2-coreprocessor op een hoge frequentie voldoende. Nu komen er echter steeds meer games uit die zijn ontworpen voor multi-threading. Neem tenminste deze Zandbak spellen zoals GTA 4 of Prototype, waarin op een 2-coreprocessor met een lagere frequentie 2,6 GHz– je voelt je niet op je gemak, de framesnelheid zakt onder de 30 frames per seconde. Hoewel in dit geval de reden voor dergelijke incidenten hoogstwaarschijnlijk de “zwakke” optimalisatie van games, gebrek aan tijd of “indirecte” handen is van degenen die games van consoles naar PC.

Wanneer je een nieuwe processor voor gaming koopt, moet je nu letten op processors met 4 of meer kernen. Maar toch mag je 2-coreprocessors uit de “bovenste categorie” niet verwaarlozen. In sommige games voelen deze processors soms beter aan dan sommige multi-core processors.

Cachegeheugen van processor.

is een speciaal gebied van de processorchip waarin tussenliggende gegevens tussen processorkernen, RAM en andere bussen worden verwerkt en opgeslagen.

Het draait op een zeer hoge kloksnelheid (meestal op de frequentie van de processor zelf), heeft een zeer hoge doorvoer en de processorkernen werken er rechtstreeks mee ( L1).

Door haar tekort, kan de processor inactief zijn bij tijdrovende taken, wachtend tot nieuwe gegevens in de cache arriveren voor verwerking. Ook cachegeheugen dient voor registraties van vaak herhaalde gegevens, die indien nodig snel kunnen worden hersteld zonder onnodige berekeningen, zonder dat de processor daar opnieuw tijd aan hoeft te verspillen.

De prestaties worden ook verbeterd doordat het cachegeheugen uniform is en alle kernen er in gelijke mate gegevens uit kunnen gebruiken. Dit biedt extra mogelijkheden voor multi-threaded optimalisatie.

Deze techniek wordt nu gebruikt voor Niveau 3-cache. Voor verwerkers Intel er waren processors met uniform cachegeheugen van niveau 2 ( C2D E 7***,E 8***), waardoor deze methode de multi-threaded prestaties leek te verbeteren.

Bij het overklokken van een processor kan het cachegeheugen een zwak punt worden, waardoor wordt voorkomen dat de processor zonder fouten overklokt tot voorbij de maximale werkfrequentie. Het voordeel is echter dat deze op dezelfde frequentie draait als de overgeklokte processor.

Over het algemeen geldt: hoe groter het cachegeheugen, hoe groter de sneller CPU. In welke toepassingen precies?

Alle toepassingen die veel drijvende-kommagegevens, instructies en threads gebruiken, maken intensief gebruik van het cachegeheugen. Cachegeheugen is erg populair archiveringsdiensten, video-encoders, antivirusprogramma's En grafische editor enz.

Een grote hoeveelheid cachegeheugen is gunstig spellen. Vooral strategieën, autosimulators, RPG's, SandBox en alle games met veel kleine details, deeltjes, geometrische elementen, informatiestromen en fysieke effecten.

Cachegeheugen speelt een zeer belangrijke rol bij het ontsluiten van de mogelijkheden van systemen met twee of meer videokaarten. Een deel van de belasting ligt immers op de interactie van processorkernen, zowel onderling als voor het werken met streams van verschillende videochips. In dit geval is de organisatie van het cachegeheugen belangrijk, en een groot cachegeheugen van niveau 3 is erg handig.

Cachegeheugen is altijd voorzien van bescherming tegen mogelijke fouten ( ECC), indien gedetecteerd, worden ze gecorrigeerd. Dit is erg belangrijk, omdat een kleine fout in de geheugencache, wanneer deze wordt verwerkt, kan uitmonden in een gigantische, voortdurende fout die het hele systeem zal laten crashen.

Eigen technologieën.

(hyperthreading, HT)–

de technologie werd voor het eerst gebruikt in processors Pentium4, maar het werkte niet altijd correct en vertraagde de processor vaak meer dan dat het versnelde. De reden was dat de pijplijn te lang was en dat het vertakkingsvoorspellingssysteem nog niet volledig was ontwikkeld. Gebruikt door het bedrijf Intel, er zijn nog geen analogen van de technologie, tenzij je het als een analoog beschouwt? wat de ingenieurs van het bedrijf hebben geïmplementeerd AMD in de architectuur Bulldozer.

Het principe van het systeem is dat er voor elke fysieke kern één is twee computerthreads, in plaats van één. Dat wil zeggen, als je een 4-coreprocessor hebt HT (Kern ik 7), dan heb je virtuele threads 8 .

De prestatiewinst wordt bereikt doordat gegevens al halverwege de pijplijn kunnen binnenkomen, en niet noodzakelijkerwijs aan het begin. Als sommige processorblokken die deze actie kunnen uitvoeren inactief zijn, ontvangen ze de taak ter uitvoering. De prestatiewinst is niet hetzelfde als die van echte fysieke cores, maar vergelijkbaar (~50-75%, afhankelijk van het type toepassing). Het komt vrij zelden voor dat bij sommige toepassingen HT heeft een negatieve invloed voor prestaties. Dit komt door de slechte optimalisatie van toepassingen voor deze technologie, het onvermogen om te begrijpen dat er “virtuele” threads zijn en het gebrek aan begrenzers voor de gelijkmatige belasting van threads.

TurboBoost – een zeer nuttige technologie die de werkfrequentie van de meest gebruikte processorkernen verhoogt, afhankelijk van hun belastingsniveau. Het is erg handig als de applicatie niet alle vier de kernen weet te gebruiken en er slechts één of twee laadt, terwijl hun werkfrequentie toeneemt, wat de prestaties gedeeltelijk compenseert. Het bedrijf heeft een analoog van deze technologie AMD, is technologie Turbokern.

, 3 weet niet! instructies. Ontworpen om de processor te versnellen multimediaal computergebruik (video, muziek, 2D/3D graphics, enz.), en versnelt ook het werk van programma's zoals archiveringsprogramma's, programma's voor het werken met afbeeldingen en video (met de ondersteuning van instructies van deze programma's).

3weet niet! – vrij oude technologie AMD, dat naast aanvullende instructies voor het verwerken van multimedia-inhoud bevat SSE eerste versie.

*Specifiek de mogelijkheid om reële getallen met enkele precisie te streamen.

Het hebben van de nieuwste versie is een groot pluspunt; de processor begint bepaalde taken efficiënter uit te voeren met de juiste software-optimalisatie. Verwerkers AMD hebben vergelijkbare namen, maar enigszins verschillend.

* Voorbeeld - SSE 4.1 (Intel) - SSE 4A (AMD).

Bovendien zijn deze instructiesets niet identiek. Dit zijn analogen met kleine verschillen.

Koel en stil, SnelheidStep CoolCore Betoverd Half Staat(C1E) EnT. D.

Deze technologieën verminderen bij lage belasting de processorfrequentie door de vermenigvuldiger en de kernspanning te verlagen, een deel van de cache uit te schakelen, enz. Hierdoor wordt de processor veel minder warm, verbruikt hij minder energie en maakt hij minder geluid. Als er stroom nodig is, keert de processor binnen een fractie van een seconde terug naar de normale status. Over standaardinstellingen Bios Ze zijn bijna altijd ingeschakeld; indien gewenst kunnen ze worden uitgeschakeld om mogelijke “bevriezingen” te verminderen bij het overschakelen naar 3D-games.

Sommige van deze technologieën regelen de rotatiesnelheid van ventilatoren in het systeem. Als de processor bijvoorbeeld geen verhoogde warmteafvoer nodig heeft en niet is belast, wordt de ventilatorsnelheid van de processor verlaagd ( AMD Cool'n'Quiet, Intel SpeedStep).

Intel-virtualisatietechnologie En AMD-virtualisatie.

Deze hardwaretechnologieën maken het mogelijk om met behulp van speciale programma's meerdere besturingssystemen tegelijk te gebruiken, zonder noemenswaardig prestatieverlies. Het wordt ook gebruikt voor de goede werking van servers, omdat er vaak meer dan één besturingssysteem op is geïnstalleerd.

Uitvoeren Uitzetten Beetje EnNee uitvoeren Beetje technologie die is ontworpen om een ​​computer te beschermen tegen virusaanvallen en softwarefouten waardoor het systeem kan crashen bufferoverloop.

Intel 64 , AMD 64 , EM 64 T – deze technologie zorgt ervoor dat de processor zowel in een besturingssysteem met een 32-bits architectuur als in een besturingssysteem met een 64-bits architectuur kan werken. Systeem 64 bits– vanuit het oogpunt van voordelen verschilt het voor de gemiddelde gebruiker doordat dit systeem meer dan 3,25 GB RAM kan gebruiken. Op 32-bits systemen gebruikt u b O Een grotere hoeveelheid RAM is niet mogelijk vanwege de beperkte hoeveelheid adresseerbaar geheugen*.

De meeste applicaties met een 32-bits architectuur kunnen worden uitgevoerd op een systeem met een 64-bits besturingssysteem.

* Wat kun je doen als in 1985 niemand zelfs maar kon denken aan zulke gigantische, naar de maatstaven van die tijd, volumes RAM.

Aanvullend.

Een paar woorden over.

Dit punt is de moeite waard om goed op te letten. Hoe dunner het technische proces, hoe minder energie de processor verbruikt en daardoor minder warm wordt. En het heeft onder andere een hogere veiligheidsmarge voor overklokken.

Hoe verfijnder het technische proces, hoe meer je in een chip kunt 'verpakken' (en niet alleen) en de mogelijkheden van de processor kunt vergroten. Warmtedissipatie en energieverbruik worden ook proportioneel verminderd, dankzij lagere stroomverliezen en een vermindering van het kernoppervlak. Je kunt een tendens waarnemen dat bij elke nieuwe generatie van dezelfde architectuur op een nieuw technologisch proces het energieverbruik ook toeneemt, maar dit is niet het geval. Het is alleen zo dat fabrikanten op weg zijn naar een nog grotere productiviteit en voorbij de warmtedissipatielijn van de vorige generatie processors stappen als gevolg van een toename van het aantal transistors, wat niet evenredig is aan de vermindering van het technische proces.

Ingebouwd in de processor.

Als je geen ingebouwde videokern nodig hebt, moet je er geen processor bij kopen. Je krijgt alleen maar slechtere warmteafvoer, extra verwarming (niet altijd), slechter overklokpotentieel (niet altijd) en te veel betaald geld.

Bovendien zijn de kernen die in de processor zijn ingebouwd alleen geschikt voor het laden van het besturingssysteem, surfen op internet en het bekijken van video's (en niet van enige kwaliteit).

Markttrends zijn nog steeds aan het veranderen en de mogelijkheid om een ​​krachtige processor te kopen is nog steeds aanwezig Intel Zonder videokern valt het steeds minder uit. Het beleid van gedwongen oplegging van de ingebouwde videokern verscheen bij processors Intel onder de codenaam Zandige brug, waarvan de belangrijkste innovatie de ingebouwde kern van hetzelfde technische proces was. De videokern bevindt zich samen met processor op één chip, en niet zo eenvoudig als bij eerdere generaties processors Intel. Voor degenen die er geen gebruik van maken, zijn er nadelen in de vorm van enige overbetaling voor de processor, de verplaatsing van de verwarmingsbron ten opzichte van het midden van het warmteverdelingsdeksel. Er zijn echter ook voordelen. Uitgeschakelde videokern, kan worden gebruikt voor zeer snelle videocoderingstechnologie Snelle synchronisatie gekoppeld aan speciale software die deze technologie ondersteunt. In de toekomst, Intel belooft de horizon van het gebruik van de ingebouwde videokern voor parallel computergebruik te verbreden.

Sockets voor processors. Levensduur van het platform.


Intel heeft een streng beleid voor zijn platforms. De levensduur van elk (de begin- en einddatum van de processorverkoop ervoor) bedraagt ​​gewoonlijk niet meer dan 1,5 - 2 jaar. Daarnaast beschikt het bedrijf over verschillende parallelle ontwikkelplatforms.

Bedrijf AMD, voert het tegenovergestelde beleid van compatibiliteit. Op haar platform op AM 3, alle processors van de toekomstige generatie die ondersteuning bieden DDR3. Zelfs als het platform reikt BEN 3+ en later nieuwe processors voor AM 3, anders zullen nieuwe processors compatibel zijn met oude moederborden, en zal het mogelijk zijn om een ​​pijnloze upgrade voor uw portemonnee uit te voeren door alleen de processor te veranderen (zonder het moederbord, RAM, enz. te veranderen) en het moederbord te flashen. De enige nuances van incompatibiliteit kunnen optreden bij het veranderen van het type, omdat een andere geheugencontroller ingebouwd in de processor nodig zal zijn. De compatibiliteit is dus beperkt en wordt niet door alle moederborden ondersteund. Maar over het algemeen is de keuze voor een processorfabrikant duidelijk voor een prijsbewuste gebruiker of voor degenen die niet gewend zijn om het platform elke twee jaar volledig te veranderen: AMD.

CPU-koeling.

Standaard geleverd met processor DOOS-een nieuwe koeler die zijn taak eenvoudig aankan. Het is een stuk aluminium met een niet erg hoog verspreidingsgebied. Efficiënte koelers met daaraan bevestigde heatpipes en platen zijn ontworpen voor een zeer efficiënte warmteafvoer. Als je geen extra geluid van de ventilator wilt horen, koop dan een alternatieve, efficiëntere koeler met heatpipes, of een gesloten of open vloeistofkoelsysteem. Dergelijke koelsystemen bieden bovendien de mogelijkheid om de processor te overklokken.

Conclusie.

Er is rekening gehouden met alle belangrijke aspecten die van invloed zijn op de prestaties en prestaties van de processor. Laten we herhalen waar u op moet letten:

  • Fabrikant selecteren
  • Processorarchitectuur
  • Technisch proces
  • CPU-frequentie
  • Aantal processorkernen
  • Grootte en type processorcache
  • Technologie en instructieondersteuning
  • Hoogwaardige koeling

We hopen dat dit materiaal u zal helpen een processor te begrijpen en te beslissen over de keuze voor een processor die aan uw verwachtingen voldoet.

Voor de informatie-industrie viel het begin van de 21e eeuw samen met verschuivingen die als ‘tektonisch’ kunnen worden omschreven. Tekenen van het nieuwe tijdperk zijn onder meer het gebruik van servicegeoriënteerde architecturen (SOA), clusterconfiguraties en nog veel meer, inclusief multi-coreprocessors. Maar de fundamentele reden voor wat er gebeurt is natuurlijk de ontwikkeling van de halfgeleiderfysica, die resulteerde in een toename van het aantal logische elementen per oppervlakte-eenheid, onderworpen aan de wet van Gordon Moore. Het aantal transistors op een chip bedraagt ​​al honderden miljoenen en zal binnenkort de grens van een miljard overschrijden, waardoor de bekende wet van de dialectiek zich onvermijdelijk manifesteert en de relatie tussen kwantitatieve en kwalitatieve veranderingen postuleert. In de gewijzigde omstandigheden komt een nieuwe categorie naar voren: complexiteit en systemen worden zowel op microniveau (processors) als op macroniveau (bedrijfsinformatiesystemen) complex.

Tot op zekere hoogte kan wat er in de moderne computerwereld gebeurt, worden vergeleken met de evolutionaire transitie die miljoenen jaren geleden plaatsvond, toen meercellige organismen verschenen. Tegen die tijd had de complexiteit van een enkele cel een bepaalde limiet bereikt, en de daaropvolgende evolutie volgde het pad van de ontwikkeling van infrastructurele complexiteit. Hetzelfde gebeurt met computersystemen: de complexiteit van een enkele processorkern, evenals de monolithische architectuur van bedrijfsinformatiesystemen, heeft een bepaald maximum bereikt. Het macroniveau verschuift nu van monolithische systemen naar op componenten gebaseerde (of op diensten gebaseerde) systemen, omdat ontwikkelaars zich richten op infrastructuur-middleware, terwijl nieuwe processorarchitecturen op microniveau in opkomst zijn.

Onlangs begon het idee van complexiteit zijn algemeen gebruikte betekenis te verliezen en veranderde het in een onafhankelijke factor. In dit opzicht wordt de complexiteit nog niet volledig begrepen en is de houding ten opzichte ervan nog niet volledig gedefinieerd, hoewel er vreemd genoeg al bijna 50 jaar een aparte wetenschappelijke discipline bestaat, die de ‘theorie van complexe systemen’ wordt genoemd. (Bedenk dat ‘complex’ in theorie verwijst naar een systeem waarvan de individuele componenten op een niet-lineaire manier worden gecombineerd; een dergelijk systeem is niet eenvoudigweg een som van componenten, zoals het geval is bij lineaire systemen.) Je kunt alleen maar verbaasd zijn dat systemen De theorie is nog niet geaccepteerd door de specialisten en bedrijven wier activiteiten hen ertoe hebben gebracht deze complexe systemen te creëren met behulp van informatietechnologie.

"Knelpunt" van de von Neumann-architectuur

Op microniveau kan een analoog van de overgang van eencellige naar meercellige organismen de overgang zijn van single-core processors naar multi-core processors (Chip MultiProcessors, CMP). CMP biedt een van de mogelijkheden om de inherente zwakte van moderne processors te overwinnen: het ‘knelpunt’ van de von Neumann-architectuur.

Dit is wat John Backus zei tijdens de Turing Award-uitreiking in 1977: “Wat is een computer volgens von Neumann? Toen John von Neumann en anderen dertig jaar geleden hun oorspronkelijke architectuur voorstelden, leek het idee elegant en praktisch en kon het een aantal technische en programmeerproblemen vereenvoudigen. En hoewel de omstandigheden die bestonden ten tijde van de publicatie ervan in de loop van de tijd radicaal zijn veranderd, identificeren we onze ideeën over computers met deze oude concepten. In zijn eenvoudigste vorm bestaat een von Neumann-computer uit drie delen: een centrale verwerkingseenheid (CPU), geheugen en een kanaal dat deze verbindt, dat dient om gegevens uit te wisselen tussen de CPU en het geheugen, en in kleine delen (slechts één woord per keer) tijd). Ik stel voor om dit kanaal het ‘von Neumann-knelpunt’ te noemen. Er moet toch wel een minder primitieve oplossing bestaan ​​dan het pompen van een enorme hoeveelheid data door een bottleneck. Zo’n kanaal creëert niet alleen een verkeersprobleem, maar het is ook een ‘intellectueel knelpunt’ dat programmeurs dwingt om woord voor woord na te denken, waardoor ze niet in hogere conceptuele categorieën kunnen denken.”

Backus is vooral bekend vanwege het creëren van de Fortran-taal halverwege de jaren vijftig, wat de daaropvolgende decennia het populairste middel was om rekenprogramma's te maken. Maar later werd Backus zich kennelijk diep bewust van de zwakke punten ervan en besefte hij dat hij ‘de meest von Neumann-taal’ van alle talen op hoog niveau had ontwikkeld. Daarom was de belangrijkste pathos van zijn kritiek vooral gericht op onvolmaakte programmeermethoden.

Sinds Backus zijn toespraak hield, zijn er aanzienlijke vorderingen gemaakt op het gebied van programmeren, waarbij functionele en objectgeoriënteerde technologieën opkwamen die hielpen bij het overwinnen van wat Backus het 'intellectuele von Neumann-knelpunt' noemde. De architectonische grondoorzaak van dit fenomeen, de inherente ziekte van het kanaal tussen geheugen en processor – de beperkte bandbreedte ervan – is echter niet verdwenen, ondanks de technologische vooruitgang van de afgelopen dertig jaar. Dit probleem is in de loop der jaren verergerd omdat de geheugensnelheden veel langzamer zijn geworden dan die van processors, en de kloof tussen de twee steeds groter is geworden.

De computerarchitectuur van Von Neumann is niet de enige mogelijke. Vanuit het oogpunt van het organiseren van de uitwisseling van opdrachten tussen de processor en het geheugen kunnen alle computers in vier klassen worden verdeeld:

  • SISD (enkele instructie, enkele gegevens)- “één commandostroom, één datastroom”;
  • SIMD (enkele instructie, gegevens vermenigvuldigen)- één commandostroom, veel datastromen;
  • MISD (meerdere instructies, enkele gegevens)- veel opdrachtstromen, één datastroom;
  • MIMD (meerdere instructies, meerdere gegevens)- veel commandostromen, veel datastromen.

Uit deze classificatie wordt duidelijk dat de von Neumann-machine een speciaal geval is dat in de SISD-categorie valt. Mogelijke verbeteringen binnen de SISD-architectuur zijn beperkt tot het opnemen van pijpleidingen en andere aanvullende functionele eenheden, evenals het gebruik van verschillende cachingmethoden. Twee andere categorieën architecturen (SIMD, die vectorprocessors omvat, en MISD-pijplijnarchitecturen) zijn in verschillende projecten geïmplementeerd, maar zijn niet wijdverspreid geworden. Als we binnen het raamwerk van deze classificatie blijven, is de ontwikkeling van MIMD-klasse-architecturen de enige manier om de knelpuntbeperkingen te overwinnen. Binnen hun raamwerk worden veel benaderingen gevonden: dit kunnen verschillende parallelle en clusterarchitecturen zijn, en multi-threaded processors.

Nog maar een paar jaar geleden werden vanwege technologische beperkingen alle multithreaded processors gebouwd op basis van een enkele kern, en dergelijke multithreading werd "simultaan" genoemd - Gelijktijdige multithreading (SMT). En met de komst van multi-coreprocessors verscheen er een alternatief type multi-threading: Chip-multiprocessors (CMP).

Kenmerken van multi-threaded processors

De overgang van eenvoudige single-threaded processors naar logischerwijs complexere multi-threaded processors brengt het overwinnen van specifieke problemen met zich mee die nog niet eerder zijn tegengekomen. De werking van het apparaat, waarbij het uitvoeringsproces is onderverdeeld in agenten of threads, heeft twee kenmerken:

  • onbepaaldheidsbeginsel. In een toepassing met meerdere threads wordt het proces opgesplitst in interacterende agentthreads zonder enige vooraf bepaalde definitie;
  • onzekerheidsprincipe. Ook is op voorhand niet bekend hoe de middelen precies tussen de agentthreads zullen worden verdeeld.

Vanwege deze kenmerken verschilt de werking van multi-threaded processors fundamenteel van deterministische von Neumann-berekeningen. In dit geval kan de huidige status van het proces niet worden gedefinieerd als een lineaire functie van de vorige status en de gegevens die als invoer zijn ontvangen, hoewel elk van de processen kan worden beschouwd als een von Neumann-micromachine. (Wanneer toegepast op het gedrag van threads, kan men zelfs de term ‘vreemdheid’ gebruiken, die in de kwantumfysica wordt gebruikt.) De aanwezigheid van deze kenmerken brengt de multi-threaded processor dichter bij het concept van een complex systeem, maar vanuit een puur praktisch oogpunt. Vanuit dit gezichtspunt is het duidelijk dat er op het niveau van de procesuitvoering geen sprake is van indeterminisme, noch van onzekerheid, laat staan ​​van vreemdheid. Een correct uitgevoerd programma kan niet vreemd zijn.

In zijn meest algemene vorm bestaat een multithreaded processor uit twee soorten primitieven. Het eerste type is een bron die de uitvoering van een thread ondersteunt, die een mutex wordt genoemd (van Mutual Exclusion - "wederzijdse uitsluiting"), en het tweede is gebeurtenissen. Hoe een bepaalde mutex fysiek wordt geïmplementeerd, hangt af van het gekozen schema: SMT of CMP. In ieder geval komt de uitvoering van het proces neer op het feit dat de volgende thread de mutex verwerft voor de duur van de uitvoering ervan en deze vervolgens vrijgeeft. Als een mutex door één thread wordt bezet, kan een tweede thread deze niet verwerven. De specifieke procedure voor het overdragen van de bevoegdheid om een ​​mutex te bezitten van de ene thread naar de andere kan willekeurig zijn; het hangt af van de besturingsimplementatie, bijvoorbeeld in een bepaald besturingssysteem. In ieder geval moet de controle zo worden ingericht dat de hulpbronnen bestaande uit de mutex correct worden verdeeld en het effect van onzekerheid wordt onderdrukt.

Gebeurtenissen zijn objecten die een verandering in de externe omgeving signaleren. Ze kunnen zichzelf in de standby-modus zetten totdat er een andere gebeurtenis plaatsvindt, of hun status doorgeven aan een andere gebeurtenis. Op deze manier kunnen gebeurtenissen met elkaar interageren, en tegelijkertijd moet de continuïteit van gegevens tussen gebeurtenissen worden gewaarborgd. De wachtende agent moet ervan op de hoogte worden gesteld dat de gegevens er klaar voor zijn. En net zoals het effect van onzekerheid moet worden onderdrukt in de mutex-verdeling, moet bij het werken met gebeurtenissen het effect van onzekerheid worden onderdrukt. Het SMT-circuit werd voor het eerst geïmplementeerd in de Compaq Alpha 21464-processors, evenals in de Intel Xeon MP en Itanium.

Logischerwijs is CMP eenvoudiger: hier wordt parallellisme verzekerd door het feit dat elke thread door zijn eigen kern wordt verwerkt. Maar als de applicatie niet kan worden geregen, wordt deze (bij gebrek aan speciale maatregelen) verwerkt door een enkele kern, en in dit geval worden de algehele processorprestaties beperkt door de snelheid van een enkele kern. Op het eerste gezicht is een processor die is gebouwd met behulp van het SMT-schema flexibeler en daarom verdient dit schema de voorkeur. Maar deze bewering is alleen waar bij een lage dichtheid van transistors. Als de frequentie wordt gemeten in megahertz en het aantal transistors op een chip de miljard nadert, en de signaaltransmissievertragingen groter worden dan de schakeltijd, dan heeft de CMP-microarchitectuur, waarin de bijbehorende computerelementen zijn gelokaliseerd, voordelen.

Fysieke parallellisatie betekent echter dat CMP niet erg efficiënt is voor sequentiële berekeningen. Om dit nadeel te ondervangen, wordt een aanpak gebruikt die ‘speculatieve multithreading’ wordt genoemd. In het Russisch heeft het woord ‘speculatief’ een negatieve connotatie, dus we zullen deze multi-threading ‘voorwaardelijk’ noemen. Deze aanpak omvat hardware- of softwareondersteuning voor het verdelen van een sequentiële applicatie in voorwaardelijke threads, het coördineren van de uitvoering ervan en het integreren van de resultaten in het geheugen.

Evolutie van CMP

De eerste in massa geproduceerde CMP-processors waren bedoeld voor de servermarkt. Ongeacht de leverancier waren het in wezen twee onafhankelijke superscalaire processors op hetzelfde substraat. De belangrijkste motivatie voor het maken van dergelijke ontwerpen is het verminderen van het volume, zodat meer processors in één ontwerp kunnen worden 'verpakt', waardoor de vermogensdichtheid per volume-eenheid toeneemt (wat van cruciaal belang is voor moderne datacenters). Er worden dan nog enkele extra besparingen gerealiseerd op het algehele systeemniveau, omdat processors op dezelfde chip systeembronnen delen, zoals hogesnelheidscommunicatie. Normaal gesproken is er alleen een gemeenschappelijke systeeminterface tussen aangrenzende processors ( rijst. 1, B).

Apologen voor het gebruik van CMP-processors rechtvaardigen een verdere (meer dan twee) toename van het aantal kernen door de kenmerken van de serverbelasting, die dit type computer onderscheidt van ingebedde systemen of systemen die bedoeld zijn voor massaal computergebruik. Er zijn betere algehele prestaties van de server vereist, maar de latentie van een individuele oproep naar het systeem is niet zo kritisch. Een triviaal voorbeeld: een gebruiker merkt misschien eenvoudigweg geen milliseconde vertraging in het verschijnen van een bijgewerkte webpagina, maar is zeer gevoelig voor overbelasting van de server, wat onderbrekingen in de service kan veroorzaken.

De specificiteit van de belasting geeft CMP-processors nog een merkbaar voordeel. Als u bijvoorbeeld een single-coreprocessor vervangt door een dual-coreprocessor, kunt u de klokfrequentie halveren met dezelfde prestaties. In dit geval kan de verwerkingstijd van een individueel verzoek theoretisch worden verdubbeld, maar aangezien de fysieke scheiding van threads de knelpuntbeperking van de von Neumann-architectuur verkleint, zal de totale vertraging aanzienlijk minder dan tweevoudig zijn. Met een lagere frequentie en complexiteit van één kern wordt het energieverbruik aanzienlijk verminderd, en met een toename van het aantal kernen worden de genoemde argumenten vóór CMP alleen maar sterker. Daarom is de volgende logische stap het samenstellen van verschillende kernen en deze te combineren met een gemeenschappelijk cachegeheugen, bijvoorbeeld zoals in het Hydra-project (Figuur 1, c). En dan kun je de kernels ingewikkelder maken en ze multi-threaded maken, wat werd geïmplementeerd in het Niagara-project (Figuur 1, d).

De complexiteit van processors heeft nog een andere belangrijke manifestatie. Het ontwerpen van een product met miljarden componenten wordt een steeds arbeidsintensievere taak – ondanks het gebruik van automatiseringstools. Het is veelbetekenend dat we getuige zijn van meer dan tien jaar van “afronding” van de IA-64-architectuur. Het ontwerpen van een CMP-processor is veel eenvoudiger: als er een goed ontwikkelde kern is, kan deze in de vereiste hoeveelheden worden gerepliceerd, en het ontwerp beperkt zich tot het creëren van de interne infrastructuur van de chip. Bovendien vereenvoudigt hetzelfde type kernen het ontwerp van moederborden, wat neerkomt op schaalvergroting, en uiteindelijk veranderen de prestaties van I/O-subsystemen.

Ondanks bovenstaande argumenten zijn er nog steeds onvoldoende gronden voor een eenduidige uitspraak over de voordelen van CMP ten opzichte van SMT. De ervaring met het maken van processors die SMT implementeren is veel groter: sinds het midden van de jaren 80 zijn er enkele tientallen experimentele producten en verschillende seriële processors gemaakt. De geschiedenis van de CPM-ontwikkeling is nog steeds kort: als je geen rekening houdt met de familie van gespecialiseerde signaalprocessors Texas Instruments TMS 320C8x, dan was Hydra het eerste succesvolle project, voltooid aan de Stanford University. Onder de universitaire onderzoeksprojecten gericht op het bouwen van CMP-processors zijn er nog drie bekend: Wisconsin Multiscalar, Carnegie-Mellon Stampede en MIT M-machine.

Microprocessor Hydra

De Hydra-chip bestaat uit vier processorkernen gebaseerd op de bekende MIPS RISC-architectuur. Elke kern heeft een instructiecache en een datacache, en alle kernen worden gecombineerd in een gemeenschappelijke L2-cache. De processors voeren de gebruikelijke set MIPS-instructies uit plus Store Conditional- of SC-instructies om synchronisatieprimitieven te implementeren. Processoren en cachegeheugen op het tweede niveau worden gecombineerd door lees-/schrijfbussen, en daarnaast zijn er hulpadres- en besturingsbussen. Al deze bussen zijn virtueel, dat wil zeggen dat ze logisch worden weergegeven als bedrade bussen, en fysiek zijn verdeeld in vele segmenten met behulp van repeaters en buffers, waardoor de snelheid van de kernen kan worden verhoogd.

De lees-/schrijfbus speelt de rol van een systeembus. Dankzij de locatie op de chip heeft het voldoende bandbreedte om cachecommunicatie in één cyclus te ondersteunen. Het is moeilijk om dergelijke uitwisselingsprestatie-indicatoren te bereiken, zelfs in de duurste traditionele multiprocessor-architecturen, vanwege fysieke beperkingen op het aantal externe processorpinnen. Efficiënte communicatiebussen met cachegeheugen voorkomen knelpunten tussen cores en geheugen.

Uit het testen van Hydra onder zeer parallelle belasting op typische web- en serverapplicaties bleek dat de prestaties van vier cores vergeleken met een enkele core 3-3,8 keer toenemen, dat wil zeggen bijna lineair. Dit geeft reden om aan te nemen dat processors van dit type vrij goed zullen “passen” in toepassingen die servers met SMP-architectuur gebruiken. Maar het is duidelijk dat de processor ook behoorlijk efficiënt moet werken met sequentiële applicaties, dus een van de belangrijkste taken is het implementeren van voorwaardelijke multithreading. In Hydra wordt het op hardwareniveau geïmplementeerd en de keuze voor deze aanpak wordt gerechtvaardigd door het feit dat er geen extra kosten nodig zijn voor het programmeren van parallelle applicaties.

Voorwaardelijke multithreading is gebaseerd op het verdelen van een reeks programmaopdrachten in threads die parallel kunnen worden uitgevoerd. Uiteraard kan er een logische onderlinge afhankelijkheid bestaan ​​tussen dergelijke threads, en om deze te coördineren is een speciaal synchronisatiemechanisme in de processor ingebouwd. De essentie van zijn werk komt neer op het feit dat als een thread gegevens van een parallelle thread nodig heeft en deze nog niet klaar is, de uitvoering van een dergelijke thread wordt opgeschort. In feite komen de hierboven besproken elementen van indeterminisme hier naar voren. Het synchronisatieproces is behoorlijk complex, omdat het noodzakelijk is om alle mogelijke afhankelijkheden tussen threads en synchronisatievoorwaarden te bepalen. Met voorwaardelijke synchronisatie kunt u programma's parallelliseren zonder voorafgaande kennis van hun eigenschappen. Het is belangrijk dat het synchronisatiemechanisme dynamisch is, het werkt zonder tussenkomst van een programmeur of compiler, die alleen in staat is applicaties statisch in threads te verdelen. Tests van het model op basis van verschillende tests hebben aangetoond dat voorwaardelijke multithreading-middelen de processorprestaties verschillende keren kunnen verhogen, en hoe duidelijker parallellisme de test wordt gekenmerkt, hoe lager deze waarde is.

In 2000 werd Afara in strikte geheimhouding opgericht. De oprichters waren professor Kunle Olukotun van Stanford University en de beroemde processorontwikkelaar Les Cohn, die ervaring had met werken bij Intel en Sun Microsystems. Cohn was een van de auteurs van de i860- en i960 RISC-processors bij de eerste van deze bedrijven en UltraSPARC-I bij de tweede. Onder zijn leiding werd Hydra opnieuw ontworpen voor processorkernen op basis van de SPARC-processor. In 2002 werd Afara gekocht door Sun Microsystems, en dit was het einde van het Hydra-project en het begin van het Niagara-verhaal.

Niagara - "fusie" van MAJC en Hydra

De UltraSPARC T1-processor, beter bekend als Niagara, heeft twee belangrijke voorgangers: Hydra en MAJC.

Halverwege de jaren negentig, in de nasleep van de rage voor gespecialiseerde Java-processors, probeerde Sun Microsystems een “Very Long Instruction Word” (VLIW)-processor te creëren. Dit initiatief heet MAJC (Microprocessor Architecture for Java Computing). Net als bij andere projecten die destijds werden gelanceerd (Intel IA-64 Itanium), was dit geval gericht op het overbrengen van enkele van de meest complexe bewerkingen naar de compiler. De vrijgekomen transistorlogica kan worden gebruikt om functionele eenheden met hogere prestaties te creëren, zodat opdrachten en gegevens efficiënt kunnen stromen tussen de CPU, de cache en het hoofdgeheugen. Zo werd het knelpunt van Von Neumann overwonnen.

MAJC verschilde van de meeste processors door de afwezigheid van gespecialiseerde coprocessors (subprocessors), die gewoonlijk functionele eenheden worden genoemd en die zijn ontworpen om bewerkingen uit te voeren met gehele getallen, drijvende-kommagetallen en multimediagegevens. Daarin waren alle functionele apparaten hetzelfde en konden alle bewerkingen uitvoeren, wat enerzijds de efficiëntie van individuele bewerkingen verminderde, maar anderzijds de bezettingsgraad van de gehele processor verhoogde.

Niagara belichaamt het beste van twee alternatieve benaderingen voor het implementeren van multithreading: SMT en CMP. Op het eerste gezicht lijkt het erg op Hydra, maar Hydra kan eerder een “lay-out” van Niagara worden genoemd. Naast het feit dat deze laatste twee keer zoveel cores heeft, kunnen ze elk vier threads aan.

De Niagara-processor biedt hardwareondersteuning voor het uitvoeren van 32 threads, die zijn onderverdeeld in acht groepen (van elk vier threads). Elke groep heeft zijn eigen SPARC-pijplijnverwerkingskanaal ( Fig. 2). Het is een processorkern gebouwd volgens de SPARC V9-architectuur. Elke SPARC-pijplijn bevat een L1-cache voor instructies en gegevens. De 32 threads delen een L2-cache van 3 MB, verdeeld over vier banken. De switch verbindt acht cores, cachebanken op het tweede niveau en andere gedistribueerde CPU-bronnen en ondersteunt een overdrachtssnelheid van 200 GB/s. Bovendien bevat de switch een poort voor I/O-systemen en kanalen naar DDR2 DRAM-geheugen, wat een overdrachtssnelheid van 20 GB/s oplevert; De maximale geheugencapaciteit bedraagt ​​maximaal 128 GB.

Project Niagara is gericht op het Solaris-besturingssysteem, zodat alle applicaties die op Solaris draaien zonder enige wijziging op de nieuwe processor kunnen draaien. Applicatiesoftware beschouwt Niagara als 32 afzonderlijke processors.

Projectcel

IBM Corporation stelde zijn eigen aanpak voor voor het creëren van multi-coreprocessors, waarvan het Cell-project een "heterogene chip-multiprocessor" wordt genoemd. De Cell-architectuur wordt ook wel de Cell Broadband Engine Architecture (CBEA) genoemd. De Cell-multiprocessor bestaat uit een IBM 64-bit Power Architecture-kern en acht gespecialiseerde coprocessors die het ‘one command many data’-schema implementeren. IBM noemt deze architectuur Synergistic Processor Unit (SPU). Het kan met succes worden gebruikt wanneer het nodig is om grote datastromen te verwerken, bijvoorbeeld in cryptografie, in verschillende multimedia- en wetenschappelijke toepassingen, zoals snelle Fourier-transformatie of matrixbewerkingen. De Cell-architectuur is gemaakt door een groep onderzoekers van IBM Research samen met collega's van IBM Systems Technology Group, Sony en Toshiba, en de eerste toepassing ervan zou multimedia-apparaten moeten zijn die grote hoeveelheden rekenwerk vergen.

De basis van de Synergetische Processor Unit is de Instruction Set Architecture (ISA). De instructies zijn 32 bits lang en zijn geadresseerd aan drie operanden in de registerpool, die bestaat uit 128 registers van elk 128 bits.

In de toekomst zal het gebruik van Cell niet beperkt blijven tot spelsystemen. High-definition televisie, homeservers en zelfs supercomputers zijn de volgende in de rij.

Literatuur
  1. Leonid Tsjernjak. Herziening van fundamentele beginselen: het einde van de stagnatie? // Open systemen. - 2003, nr. 5.
  2. Michail Koezminski. Multithreaded microprocessorarchitectuur // Open systemen. - 2002, nr. 1.
  3. Rajat A Dua, Bhushan Lokhande. Een vergelijkende studie van SMT- en CMP-multiprocessors. -

Nu we de theorie van multithreading hebben begrepen, laten we eens kijken naar een praktisch voorbeeld: de Pentium 4. Al in de ontwikkelingsfase van deze processor bleven Intel-ingenieurs werken aan het verbeteren van de prestaties zonder wijzigingen aan te brengen in de software-interface. Er werden vijf eenvoudigste methoden overwogen:
1. Verhoog de klokfrequentie.
2. Twee processors op één chip plaatsen.
3. Introductie van nieuwe functionele blokken.
1. Transportbandverlenging.
2. Gebruik van multithreading.
De meest voor de hand liggende manier om de prestaties te verbeteren is door de kloksnelheid te verhogen zonder andere parameters te wijzigen. In de regel heeft elk volgend processormodel een iets hogere kloksnelheid dan het vorige. Helaas worden ontwikkelaars bij het lineair verhogen van de kloksnelheid geconfronteerd met twee problemen: een hoger energieverbruik (wat belangrijk is voor laptops en andere computerapparaten die op batterijen werken) en oververhitting (wat de creatie van efficiëntere koellichamen vereist).
De tweede methode, het plaatsen van twee processors op een chip, is relatief eenvoudig, maar houdt wel een verdubbeling van de oppervlakte van de chip in. Als elke processor zijn eigen cache heeft, wordt het aantal chips op een wafer gehalveerd, maar dat betekent ook dat de productiekosten worden verdubbeld. Als beide processors een cachegeheugen delen, kan een aanzienlijke toename van het bezette gebied worden vermeden, maar in dit geval doet zich een ander probleem voor: de hoeveelheid cachegeheugen per processor wordt gehalveerd, en dit heeft onvermijdelijk invloed op de prestaties. Als professionele servertoepassingen bovendien de bronnen van verschillende processors volledig kunnen benutten, wordt in gewone desktopprogramma's in veel mindere mate intern parallellisme ontwikkeld.
Ook het introduceren van nieuwe functionele blokken is niet moeilijk, maar het is wel belangrijk om hier de balans in te bewaren. Wat heeft het voor zin om een ​​tiental ALU-blokken te hebben als de chip geen commando's aan de pijplijn kan geven met een snelheid waarmee je al deze blokken kunt laden?
Een pijplijn met een groter aantal fasen, die in staat is taken in kleinere segmenten te verdelen en deze in korte tijd te verwerken, verbetert enerzijds de prestaties, anderzijds vergroot het de negatieve gevolgen van onjuiste vertakkingsvoorspellingen, cache-missers, interrupts en andere gebeurtenissen die de normale stroomverwerkingsopdrachten in de processor verstoren. Om de mogelijkheden van de uitgebreide pijplijn volledig te realiseren, is het bovendien noodzakelijk om de klokfrequentie te verhogen, en dit leidt, zoals we weten, tot een verhoogd energieverbruik en warmteafvoer.
Ten slotte kunt u multithreading implementeren. Het voordeel van deze technologie is de introductie van een extra softwarethread waarmee hardwarebronnen die anders inactief zouden zijn, in gebruik kunnen worden genomen. Op basis van de resultaten van experimentele onderzoeken hebben Intel-ontwikkelaars ontdekt dat het vergroten van het chipoppervlak met 5% bij het implementeren van multithreading voor veel toepassingen een prestatieverbetering van 25% oplevert. De eerste Intel-processor die multithreading ondersteunde, was de Xeon uit 2002. Vervolgens werd vanaf 3,06 GHz multithreading geïntroduceerd in de Pentium 4-lijn. Intel noemt de implementatie van multithreading in de Pentium 4 hyperthreading.
Het basisprincipe van hyperthreading is de gelijktijdige uitvoering van twee programmathreads (of processen - de processor maakt geen onderscheid tussen processen en programmathreads). Het besturingssysteem behandelt de Pentium 4 hyperthreaded processor als een dual-processorcomplex met gedeelde caches en hoofdgeheugen. Het besturingssysteem voert de planning voor elke programmathread afzonderlijk uit. Op deze manier kunnen twee applicaties tegelijkertijd draaien. Een e-mailprogramma kan bijvoorbeeld op de achtergrond berichten verzenden of ontvangen terwijl de gebruiker communiceert met een interactieve applicatie - dat wil zeggen dat de daemon en het gebruikersprogramma tegelijkertijd draaien, alsof het systeem twee processors beschikbaar zou hebben.
Applicatieprogramma's die als meerdere threads kunnen worden uitgevoerd, kunnen beide 'virtuele processors' gebruiken. Met videobewerkingsprogramma's kunnen gebruikers bijvoorbeeld doorgaans filters op alle frames toepassen. Dergelijke filters passen de helderheid, het contrast, de kleurbalans en andere eigenschappen van frames aan. In een dergelijke situatie kan het programma één virtuele processor toewijzen om even frames te verwerken en een andere om oneven frames te verwerken. In dit geval werken de twee processors volledig onafhankelijk van elkaar.
Omdat softwarethreads toegang hebben tot dezelfde hardwarebronnen, is coördinatie tussen deze threads noodzakelijk. In de context van hyperthreading heeft Intel vier nuttige strategieën geïdentificeerd voor het beheren van het delen van bronnen: het dupliceren van bronnen, en het delen van harde, drempel- en volledige bronnen. Laten we naar deze strategieën kijken.
Laten we beginnen met het dupliceren van bronnen. Zoals bekend worden sommige bronnen gedupliceerd met als doel het organiseren van programmastromen. Omdat elke programmathread bijvoorbeeld individuele besturing vereist, is er bijvoorbeeld een tweede programmateller nodig. Bovendien is het noodzakelijk om een ​​tweede tabel te introduceren die architecturale registers (EAX, EBX, etc.) aan fysieke registers koppelt; op dezelfde manier wordt de interruptcontroller gedupliceerd, aangezien interrupts voor elke thread afzonderlijk worden afgehandeld.
Het volgende is een techniek voor het hard partitioneren van bronnen (gepartitioneerd delen van bronnen) tussen programmathreads. Als de processor bijvoorbeeld een wachtrij heeft tussen twee functionele fasen van de pijplijn, dan kan de helft van de slots aan thread 1 worden gegeven, de andere helft aan thread 2. Het delen van resources is eenvoudig te implementeren, leidt niet tot onbalans en zorgt voor volledige onafhankelijkheid van programmathreads van elkaar. Door alle bronnen volledig te delen, verandert één processor effectief in twee. Aan de andere kant kan er een situatie zijn waarin een programmathread geen bronnen gebruikt die nuttig zouden kunnen zijn voor een tweede thread, maar waarvoor deze geen toegangsrechten heeft. Als gevolg hiervan blijven hulpbronnen die anders gebruikt zouden kunnen worden, inactief.
Het tegenovergestelde van hard delen is het volledig delen van bronnen. In dit schema heeft elke programmathread toegang tot de benodigde bronnen, en deze worden bediend in de volgorde waarin toegangsverzoeken worden ontvangen. Beschouw een situatie waarin een snelle draad, die voornamelijk bestaat uit optel- en aftrekbewerkingen, naast een langzame draad bestaat, waarbij vermenigvuldigings- en delingsbewerkingen worden uitgevoerd. Als instructies sneller uit het geheugen worden aangeroepen dan er vermenigvuldigings- en delingsbewerkingen worden uitgevoerd, zal het aantal instructies dat binnen de langzame thread wordt aangeroepen en in de wachtrij wordt geplaatst geleidelijk toenemen. Uiteindelijk zullen deze commando's de wachtrij vullen, waardoor de snelle stroom stopt vanwege ruimtegebrek. Het volledig delen van hulpbronnen lost het probleem van suboptimaal gebruik van gedeelde hulpbronnen op, maar creëert een onevenwicht in het gebruik ervan: de ene draad kan de andere vertragen of tegenhouden.
Het tussenliggende schema wordt geïmplementeerd in het kader van het delen van drempelbronnen. Volgens dit schema kan elke programmathread dynamisch een bepaalde (beperkte) hoeveelheid bronnen verkrijgen. Wanneer toegepast op gerepliceerde bronnen, biedt deze aanpak flexibiliteit zonder de dreiging dat een van de programmathreads downtime is vanwege het onvermogen om bronnen te verkrijgen. Als u bijvoorbeeld verbiedt dat elke thread meer dan driekwart van de commandowachtrij in beslag neemt, zal het verhoogde bronnenverbruik van de langzame thread de uitvoering van de snelle thread niet hinderen.
Het Pentium 4 hyperthreading-model combineert verschillende strategieën voor het delen van bronnen. Er wordt dus een poging gedaan om alle problemen die verband houden met elke strategie op te lossen. Duplicatie vindt plaats in bronnen waartoe beide threads voortdurend toegang moeten hebben (met name de programmateller, de registertoewijzingstabel en de interruptcontroller). Het dupliceren van deze bronnen vergroot het chipoppervlak met slechts 5% - u bent het ermee eens, een zeer redelijke prijs voor multithreading. Bronnen die in zulke hoeveelheden beschikbaar zijn dat het vrijwel onwaarschijnlijk is dat ze door een enkele thread worden vastgelegd (bijvoorbeeld cacheregels), worden dynamisch toegewezen. De toegang tot de bronnen die de werking van de pijplijn regelen (in het bijzonder de talrijke wachtrijen) is verdeeld: elke programmathread krijgt de helft van de slots. De belangrijkste pijplijn van de Netburst-architectuur geïmplementeerd in de Pentium 4 wordt getoond in Fig. 8,7; De witte en grijze gebieden in deze afbeelding geven het mechanisme aan voor het verdelen van bronnen tussen de witte en grijze programmathreads.
Zoals u kunt zien, zijn alle wachtrijen in deze illustratie verdeeld: aan elke programmathread wordt de helft van de slots toegewezen. Geen van beide programmathreads kan het werk van de ander beperken. Ook het distributie- en vervangingsblok is verdeeld. Plannerbronnen worden dynamisch toegewezen, maar op basis van een bepaalde drempel, zodat geen enkele thread alle wachtrijslots kan bezetten. Voor alle andere fasen van de transportband is er volledige scheiding.
Met multithreading is echter niet alles zo eenvoudig. Zelfs zo'n vooruitstrevende techniek heeft nadelen. Het hard partitioneren van bronnen gaat niet gepaard met ernstige kosten, maar dynamisch partitioneren, vooral rekening houdend met drempels, vereist het monitoren van het resourceverbruik tijdens runtime. Bovendien draaien programma's in sommige gevallen veel beter zonder multithreading dan ermee. Stel bijvoorbeeld dat als u twee programmathreads heeft, elk daarvan driekwart van de cache nodig heeft om goed te kunnen functioneren. Als ze afwisselend zouden worden uitgevoerd, zouden ze elk een redelijke efficiëntie vertonen met een klein aantal cache-missers (waarvan bekend is dat ze gepaard gaan met extra overhead). In het geval van parallelle uitvoering zou elk aanzienlijk meer cache-missers hebben, en het eindresultaat zou slechter zijn dan zonder multithreading.
Aanvullende informatie over het RepPit 4 multithreading-mechanisme is te vinden in.

Invoering. Computertechnologie ontwikkelt zich in een snel tempo. Computerapparaten worden krachtiger, compacter en handiger, maar de laatste tijd zijn de toenemende prestaties van apparaten een groot probleem geworden. In 1965 kwam Gordon Moore (een van de oprichters van Intel) tot de conclusie dat “het aantal transistors dat op een chip met geïntegreerde schakelingen wordt geplaatst elke 24 maanden verdubbelt.”

De eerste ontwikkelingen op het gebied van het creëren van multiprocessorsystemen begonnen in de jaren '70. Lange tijd werden de prestaties van conventionele single-core processors verhoogd door de klokfrequentie te verhogen (tot 80% van de prestaties werd alleen bepaald door de klokfrequentie) en tegelijkertijd het aantal transistors op de chip te vergroten. De fundamentele wetten van de natuurkunde stopten dit proces: de chips begonnen oververhit te raken en de technologische chip begon de grootte van siliciumatomen te benaderen. Al deze factoren hebben ertoe geleid dat:

  • De lekstromen namen toe, wat resulteerde in een toename van de warmteontwikkeling en het energieverbruik.
  • De processor is veel “sneller” geworden dan het geheugen. De prestaties zijn verminderd vanwege latentie bij de toegang tot RAM en het laden van gegevens in de cache.
  • Het concept van een “von Neumann-knelpunt” ontstaat. Het betekent dat de processorarchitectuur inefficiënt is bij het uitvoeren van een programma.

Multiprocessorsystemen (als een van de manieren om het probleem op te lossen) werden niet op grote schaal gebruikt, omdat hiervoor dure en moeilijk te vervaardigen moederborden met meerdere processors nodig waren. Op basis hiervan nam de productiviteit op andere manieren toe. Het concept van multithreading bleek effectief: gelijktijdige verwerking van verschillende commandostromen.

Hyper-Threading Technology (HTT) of ultra-threading gegevensverwerkingstechnologie waarmee een processor meerdere programmathreads op één kern kan uitvoeren. Het was HTT, naar de mening van veel experts, die de voorwaarde werd voor de creatie van multi-coreprocessors. De uitvoering van meerdere programmathreads door een processor tegelijkertijd wordt thread-level parallellisme (TLP) genoemd.

Om het potentieel van een multi-coreprocessor te ontsluiten, moet het uitvoerbare programma alle rekenkernen gebruiken, wat niet altijd haalbaar is. Oude sequentiële programma's die maar één kern kunnen gebruiken, zullen op de nieuwe generatie processors niet meer sneller draaien, waardoor programmeurs steeds meer betrokken worden bij de ontwikkeling van nieuwe microprocessors.

1. Algemene concepten

Architectuur in brede zin is een beschrijving van een complex systeem dat uit vele elementen bestaat.

Tijdens het ontwikkelingsproces evolueren halfgeleiderstructuren (chips), dus de principes van het construeren van processors, het aantal elementen in hun samenstelling en de manier waarop hun interactie is georganiseerd, veranderen voortdurend. CPU's met dezelfde structurele basisprincipes worden dus gewoonlijk processors met dezelfde architectuur genoemd. En dergelijke principes zelf worden processorarchitectuur (of microarchitectuur) genoemd.

De microprocessor (of processor) is het hoofdonderdeel van een computer. Het verwerkt informatie, voert programma's uit en bestuurt andere apparaten in het systeem. De kracht van de processor bepaalt hoe snel programma's worden uitgevoerd.

De kern is de basis van elke microprocessor. Het bestaat uit miljoenen transistors die zich op een siliciumchip bevinden. De microprocessor is verdeeld in speciale cellen die General Purpose Registers (GPR) worden genoemd. Het werk van de processor bestaat in totaal uit het in een bepaalde volgorde ophalen van instructies en gegevens uit het geheugen en het uitvoeren ervan. Om de snelheid van de pc te verhogen, is de microprocessor bovendien uitgerust met intern cachegeheugen. Cachegeheugen is het interne geheugen van de processor, dat wordt gebruikt als buffer (ter bescherming tegen onderbrekingen in de communicatie met RAM).

Intel-processors die worden gebruikt in IBM-compatibele pc's hebben meer dan duizend instructies en behoren tot processors met een uitgebreid instructiesysteem: CISC-processors (CISC - Complex Instruction Set Computing).

1.1 Computer met hoge prestaties. Parallellisme

Het tempo van de ontwikkeling van computertechnologie is gemakkelijk te volgen: van ENIAC (de eerste elektronische digitale computer voor algemeen gebruik) met een prestatie van enkele duizenden bewerkingen per seconde tot de Tianhe-2 supercomputer (1000 biljoen drijvende-kommabewerkingen per seconde). Dit betekent dat de computersnelheid in 60 jaar met een biljoen keer is toegenomen. Het creëren van krachtige computersystemen is een van de moeilijkste wetenschappelijke en technische problemen. Terwijl de rekensnelheid van technische middelen slechts een paar miljoen keer is toegenomen, is de algehele computersnelheid met biljoenen keren toegenomen. Dit effect wordt bereikt door het gebruik van parallellisme in alle stadia van de berekeningen. Parallel computing vereist een zoektocht naar rationele geheugentoewijzing, betrouwbare methoden voor het verzenden van informatie en het coördineren van computerprocessen.

1.2 Symmetrische multiprocessing

Symmetrische Multiprocessing (afgekort SMP) of symmetrische multiprocessing is een speciale architectuur van multiprocessorsystemen waarin meerdere processors toegang hebben tot gedeeld geheugen. Dit is een veel voorkomende architectuur, die de laatste tijd vrij veel wordt gebruikt.

Bij gebruik van SMP werken meerdere processors tegelijk in een computer, elk met zijn eigen taak. Een SMP-systeem met een hoogwaardig besturingssysteem verdeelt de taken rationeel over de processors, waardoor een gelijkmatige belasting van elk van hen wordt gegarandeerd. Er doet zich echter een probleem voor bij de geheugentoegang, omdat zelfs systemen met één processor hiervoor relatief veel tijd nodig hebben. De toegang tot RAM in SMP vindt dus opeenvolgend plaats: eerst één processor, dan de tweede.

Vanwege de hierboven genoemde kenmerken worden SMP-systemen uitsluitend gebruikt op wetenschappelijk gebied, in de industrie, in het bedrijfsleven en uiterst zelden in werkkantoren. Naast de hoge kosten van hardware-implementatie vereisen dergelijke systemen zeer dure en hoogwaardige software die multi-threaded uitvoering van taken mogelijk maakt. Reguliere programma's (games, teksteditors) zullen niet effectief werken in SMP-systemen, omdat ze niet in een dergelijke mate van parallellisatie voorzien. Als u een programma aanpast voor een SMP-systeem, wordt het uiterst inefficiënt om op systemen met één processor te werken, wat leidt tot de noodzaak om verschillende versies van hetzelfde programma voor verschillende systemen te maken. Een uitzondering is bijvoorbeeld het programma ABLETON LIVE (ontworpen voor het maken van muziek en het voorbereiden van DJ-sets), dat ondersteuning biedt voor multiprocessorsystemen. Als u een normaal programma op een systeem met meerdere processors uitvoert, zal het nog steeds iets sneller werken dan op een systeem met één processor. Dit komt door de zogenaamde hardware-interrupt (het stoppen van het programma voor verwerking door de kernel), die wordt uitgevoerd op een andere vrije processor.

Een SMP-systeem stelt (net als elk ander systeem dat is gebaseerd op parallel computergebruik) hogere eisen aan een geheugenparameter als de bandbreedte van de geheugenbus. Dit beperkt vaak het aantal processors in het systeem (moderne SMP-systemen kunnen in feite maximaal 16 processors hebben).

Omdat processors een gedeeld geheugen hebben, is er behoefte aan rationeel gebruik en gegevenscoördinatie. In een multiprocessorsysteem blijken meerdere caches op een gedeelde geheugenbron te werken. Cache-coherentie is een cache-eigenschap die de integriteit garandeert van gegevens die zijn opgeslagen in individuele caches voor een gedeelde bron. Dit concept is een speciaal geval van het concept van geheugencoherentie, waarbij verschillende cores toegang hebben tot gedeeld geheugen (overal te vinden in moderne multi-core systemen). Als we deze concepten in algemene termen beschrijven, ziet het beeld er als volgt uit: hetzelfde gegevensblok kan in verschillende caches worden geladen, waar de gegevens op verschillende manieren worden verwerkt.

Als er geen gebruik wordt gemaakt van meldingen over gegevenswijzigingen, zal er een fout optreden. Cachecoherentie is ontworpen om dergelijke conflicten op te lossen en de gegevensconsistentie in caches te behouden.

SMP-systemen zijn een subgroep van MIMD (multi-in-struction multi data - een computersysteem met meerdere commandostromen en meerdere datastromen) van de Flynn-classificatie van computersystemen (professor aan Stanford University, medeoprichter van Palyn Associates). Volgens deze classificatie kunnen vrijwel alle soorten parallelle systemen worden geclassificeerd als MIMD.

Multiprocessorsystemen zijn onderverdeeld in typen op basis van het principe van geheugengebruik. Dankzij deze aanpak konden we de volgende belangrijke typen onderscheiden

multiprocessorsystemen - multiprocessors (multiprocessorsystemen met gemeenschappelijk gedeeld geheugen) en multicomputers (systemen met afzonderlijk geheugen). Gedeelde gegevens die worden gebruikt bij parallel computergebruik vereisen synchronisatie. De taak van gegevenssynchronisatie is een van de belangrijkste problemen, en de oplossing ervan bij het ontwikkelen van multiprocessor- en multicore-systemen en dienovereenkomstig de benodigde software is een prioritaire taak voor ingenieurs en programmeurs. Gedeelde toegang tot gegevens kan worden gedaan door fysiek geheugen toe te wijzen. Deze aanpak wordt niet-uniforme geheugentoegang of NUMA genoemd.

Onder deze systemen kunnen we benadrukken:

  • Systemen waarbij alleen het individuele cachegeheugen van processors wordt gebruikt om gegevens te presenteren (cache-only memory-architectuur).
  • Systemen die de samenhang van lokale caches voor verschillende processors garanderen (cache-coherent NUMA).
  • Systemen die gedeelde toegang bieden tot het individuele geheugen van processors zonder cache-coherentie op hardwareniveau te implementeren (non-cache coherente NUMA).

Vereenvoudiging van het probleem van het creëren van multiprocessorsystemen wordt bereikt door gedistribueerd gedeeld geheugen te gebruiken, maar deze methode leidt tot een aanzienlijke toename van de complexiteit van parallelle programmering.

1.3 Gelijktijdige multithreading

Op basis van alle bovengenoemde nadelen van symmetrische multiprocessing is het zinvol om andere manieren te ontwikkelen en te ontwikkelen om de prestaties te verbeteren. Als je de werking van elke individuele transistor in de processor analyseert, kun je op een heel interessant feit letten: bij het uitvoeren van de meeste computerbewerkingen worden niet alle componenten van de processor gebruikt (volgens recente onderzoeken - ongeveer 30% van alle transistors) . Als de processor bijvoorbeeld een eenvoudige rekenkundige bewerking uitvoert, is het grootste deel van de processor inactief en kan deze voor andere berekeningen worden gebruikt. Dus als de processor momenteel echte bewerkingen uitvoert, kan een rekenkundige bewerking met gehele getallen in het vrije gedeelte worden geladen. Om de belasting van de processor te vergroten, kunt u speculatieve (of voorwaartse) uitvoering van bewerkingen creëren, wat een grote complicatie van de hardwarelogica van de processor vereist. Als u vooraf in het programma threads (reeksen van opdrachten) definieert die onafhankelijk van elkaar kunnen worden uitgevoerd, zal dit de taak aanzienlijk vereenvoudigen (deze methode kan eenvoudig op hardwareniveau worden geïmplementeerd). Dit idee, eigendom van Dean Toulsen (door hem ontwikkeld in 1955 aan de Universiteit van Washington), werd simultane multithreading genoemd. Het werd later door Intel ontwikkeld onder de naam hyperthreading. Eén processor die veel threads uitvoert, wordt door het Windows-besturingssysteem dus gezien als meerdere processors. Het gebruik van deze technologie vereist wederom een ​​passend softwareniveau. Het maximale effect van het gebruik van multithreading-technologie is ongeveer 30%.

1.4 Multicore

Multithreading-technologie – implementatie van multi-cores op softwareniveau. Verdere prestatieverbeteringen vereisen, zoals altijd, veranderingen in de processorhardware. Toenemende complexiteit van systemen en architecturen is niet altijd effectief. Er is een tegenovergestelde mening: "alles ingenieus is eenvoudig!" Om de prestaties van een processor te verbeteren, is het helemaal niet nodig om de klokfrequentie te verhogen of de logische en hardwarecomponenten te compliceren, aangezien het voldoende is om alleen maar de bestaande technologie te rationaliseren en te verfijnen. Deze methode is zeer winstgevend - het is niet nodig om het probleem van het vergroten van de warmtedissipatie van de processor of de ontwikkeling van nieuwe dure apparatuur voor de productie van microschakelingen op te lossen. Deze aanpak werd geïmplementeerd in het kader van multi-coretechnologie: de implementatie van verschillende rekenkernen op één chip. Als we de originele processor nemen en de prestatiewinst vergelijken bij het implementeren van verschillende methoden om de prestaties te verbeteren, is het duidelijk dat het gebruik van multi-core technologie de beste optie is.

Als we de architecturen van een symmetrische multiprocessor en een multi-core multiprocessor vergelijken, zullen ze vrijwel identiek blijken te zijn. De kerncache kan uit meerdere niveaus bestaan ​​(lokaal en gedeeld, en gegevens uit RAM kunnen rechtstreeks in de cache op het tweede niveau worden geladen). Gebaseerd op de weloverwogen voordelen van multi-core processorarchitectuur, concentreren fabrikanten zich hierop. Deze technologie bleek vrij goedkoop te implementeren en universeel te zijn, waardoor deze op een brede markt kon worden gebracht. Bovendien maakte deze architectuur zijn eigen aanpassingen aan de wet van Moore: “het aantal rekenkernen in een processor zal elke 18 maanden verdubbelen.”

Als je naar de moderne computermarkt kijkt, zie je dat apparaten met vier- en acht-coreprocessors domineren. Bovendien zeggen processorfabrikanten dat er binnenkort processoren met honderden verwerkingskernen op de markt zullen komen. Zoals al vele malen eerder is gezegd, wordt het volledige potentieel van een multi-core architectuur alleen onthuld met software van hoge kwaliteit. De productie van computerhardware en -software zijn dus zeer nauw met elkaar verbonden.

Maar met de verovering van nieuwe pieken in frequentie-indicatoren werd het moeilijker om deze te verhogen, omdat dit de toename van de TDP van processors beïnvloedde. Daarom begonnen ontwikkelaars de breedte van processors te vergroten, namelijk door kernen toe te voegen, en het concept van multi-core ontstond.

Letterlijk zes tot zeven jaar geleden waren multi-coreprocessors vrijwel ongehoord. Nee, er bestonden al eerder multi-core processors van hetzelfde IBM-bedrijf, maar de verschijning van de eerste dual-core processor voor desktop computers, vond pas in 2005 plaats en deze processor heette Pentium D. Ook werd in 2005 een dual-core Opteron van AMD uitgebracht, maar dan voor serversystemen.

In dit artikel gaan we niet in detail in op historische feiten, maar bespreken we moderne multi-coreprocessors als een van de kenmerken van de CPU. En het allerbelangrijkste: we moeten uitzoeken wat deze multi-core oplevert in termen van prestaties voor de processor en voor jou en mij.

Verbeterde prestaties dankzij multi-core

Het principe van het verhogen van de processorprestaties door het gebruik van meerdere cores is het opsplitsen van de uitvoering van threads (verschillende taken) in verschillende cores. Samenvattend kunnen we zeggen dat bijna elk proces dat op uw systeem draait meerdere threads heeft.

Laat ik meteen voorop stellen dat het besturingssysteem virtueel veel threads voor zichzelf kan creëren en deze allemaal tegelijkertijd kan uitvoeren, zelfs als de processor fysiek single-core is. Dit principe implementeert dezelfde Windows-multitasking (bijvoorbeeld tegelijkertijd naar muziek luisteren en typen).


Laten we een antivirusprogramma als voorbeeld nemen. De ene draad zal de computer scannen, de andere zal de antivirusdatabase bijwerken (we hebben alles zeer vereenvoudigd om het algemene concept te begrijpen).

En laten we eens kijken naar wat er in twee verschillende gevallen zal gebeuren:

a) Single-coreprocessor. Omdat er twee threads tegelijkertijd actief zijn, moeten we voor de gebruiker (visueel) dezelfde gelijktijdige uitvoering creëren. Het besturingssysteem doet iets slims:er is een schakelaar tussen de uitvoering van deze twee threads (deze schakelaars zijn onmiddellijk en de tijd is in milliseconden). Dat wil zeggen, het systeem voerde de update een beetje uit, schakelde vervolgens abrupt over op scannen en vervolgens weer op updaten. Voor jou en mij lijkt het dus alsof we deze twee taken tegelijkertijd uitvoeren. Maar wat is er verloren? Natuurlijk, prestaties. Laten we dus naar de tweede optie kijken.

b) Multi-coreprocessor. In dit geval zal deze omschakeling niet plaatsvinden. Het systeem zal elke thread duidelijk naar een afzonderlijke kern sturen, waardoor we het overschakelen van thread naar thread, wat nadelig is voor de prestaties, kunnen vermijden (laten we de situatie idealiseren). Er worden twee threads tegelijkertijd uitgevoerd, dit is het principe van multi-core en multi-threading. Uiteindelijk zullen we veel sneller scannen en updaten op een multi-coreprocessor dan op een single-coreprocessor. Maar er zit een addertje onder het gras: niet alle programma's ondersteunen multi-cores. Niet elk programma kan op deze manier worden geoptimaliseerd. En alles gebeurt verre van zo ideaal als we beschreven. Maar elke dag creëren ontwikkelaars steeds meer programma's waarvan de code perfect is geoptimaliseerd voor uitvoering op multi-coreprocessors.

Heeft u multi-coreprocessors nodig? Alledaagse reden

Bij het kiezen van een verwerker voor een computer (namelijk als u nadenkt over het aantal kernen), moet u de belangrijkste soorten taken bepalen die deze zal uitvoeren.

Om uw kennis op het gebied van computerhardware te verbeteren, kunt u het materiaal erover lezen processoraansluitingen .

Dual-core processors kunnen het startpunt worden genoemd, omdat het geen zin heeft om terug te keren naar single-core oplossingen. Maar dual-coreprocessors zijn anders. Dit is misschien niet de “meest” recente Celeron, maar het kan een Core i3 op Ivy Bridge zijn, net als AMD’s Sempron of Phenom II. Uiteraard zullen hun prestaties vanwege andere indicatoren heel anders zijn, dus je moet alles uitgebreid bekijken en multi-core met anderen vergelijken processorkarakteristieken.

Core i3 op Ivy Bridge beschikt bijvoorbeeld over Hyper-Treading-technologie, waarmee je 4 threads tegelijkertijd kunt verwerken (het besturingssysteem ziet 4 logische kernen, in plaats van 2 fysieke). Maar dezelfde Celeron pocht hier niet op.

Maar laten we direct terugkeren naar de gedachten over de vereiste taken. Als er een computer nodig is voor kantoorwerk en surfen op internet, dan is een dual-core processor voldoende.

Als het op gamingprestaties aankomt, hebben de meeste games 4 cores of meer nodig om comfortabel te zijn. Maar hier komt hetzelfde addertje onder het gras: niet alle games hebben geoptimaliseerde code voor 4-coreprocessors, en als ze geoptimaliseerd zijn, zijn ze niet zo efficiënt als we zouden willen. Maar in principe is voor games nu de optimale oplossing een 4-coreprocessor.


Tegenwoordig zijn dezelfde 8-core AMD-processors redundant voor games, het is het aantal cores dat redundant is, maar de prestaties zijn niet op peil, maar ze hebben andere voordelen. Deze zelfde 8 kernen zullen enorm helpen bij taken waarbij krachtig werk met hoogwaardige multi-threaded werklast vereist is. Dit omvat bijvoorbeeld videoweergave (berekening) of servercomputers. Daarom vereisen dergelijke taken 6, 8 of meer kernen. En binnenkort zullen games efficiënt 8 of meer cores kunnen laden, dus in de toekomst is alles heel rooskleurig.

Vergeet niet dat er nog steeds veel taken zijn die een belasting met één thread creëren. En het is de moeite waard om jezelf de vraag te stellen: heb ik deze 8-nucleaire eenheid nodig of niet?

Samenvattend zou ik nogmaals willen opmerken dat de voordelen van multi-cores zich manifesteren tijdens ‘zwaar’ computationeel multi-threaded werk. En als je geen games speelt met torenhoge eisen en geen specifieke soorten werk doet waarvoor goede rekenkracht nodig is, dan heeft het simpelweg geen zin om geld uit te geven aan dure multi-core processors (