11Aug

Waarom hebben CPU-kernen allemaal dezelfde snelheid in plaats van verschillende kernen?

click fraud protection

Als je ooit veel vergelijkingen voor een nieuwe CPU hebt gedaan, is het je misschien al opgevallen dat kernen allemaal de snelheid lijken te hebben in plaats van een combinatie van verschillende. Waarom is dat? De SuperUser van vandaag Q & Een bericht heeft het antwoord op de vraag van een nieuwsgierige lezer.

De vraag van vandaag &Antwoord sessie komt naar ons met dank aan SuperUser-een onderverdeling van Stack Exchange, een community-gestuurde groepering van Q & A-websites.

De vraag

SuperUser-lezer Jamie wil weten waarom CPU-kernen allemaal dezelfde snelheid hebben in plaats van verschillende:

Als u een nieuwe computer koopt, bepaalt u meestal welke processor moet worden gekocht op basis van de verwachte werkbelasting voor de computer. Prestaties in videogames worden meestal bepaald door single-core-snelheid, terwijl toepassingen zoals videobewerking worden bepaald door het aantal kernen. In termen van wat er op de markt beschikbaar is, lijken alle CPU's ongeveer dezelfde snelheid te hebben, met als belangrijkste verschillen meer threads of meer kernen.

instagram viewer

Bijvoorbeeld:

  • Intel Core i5-7600K, basisfrequentie 3.80 GHz, 4 kernen, 4 threads
  • Intel Core i7-7700K, basisfrequentie 4.20 GHz, 4 cores, 8 threads
  • AMD Ryzen 5 1600X, basisfrequentie 3.60 GHz, 6cores, 12 threads
  • AMD Ryzen 7 1800X, basisfrequentie 3,60 GHz, 8 cores, 16 threads

Waarom zien we dit patroon van toenemende kernen, maar hebben alle kernen dezelfde kloksnelheid? Waarom zijn er geen varianten met verschillende kloksnelheden? Bijvoorbeeld twee "grote" kernen en heel veel kleine kernen.

In plaats van bijvoorbeeld vier kernen op 4.0 GHz( dwz 4 × 4 GHz, maximaal 16 GHz), wat dacht je van een CPU met twee kernen op 4,0 GHz en vier kernen met een snelheid van 2,0 GHz( dwz 2 × 4,0 GHz + 4 ×2.0 GHz, maximaal 16 GHz)?Zou de tweede optie net zo goed zijn voor workloads met één thread, maar potentieel beter bij multi-threaded workloads?

Ik vraag dit als een algemene vraag en niet specifiek met betrekking tot de hierboven genoemde CPU's of over een specifieke werklast. Ik ben gewoon benieuwd waarom het patroon is wat het is.

Waarom hebben CPU-kernen allemaal dezelfde snelheid in plaats van verschillende?

Het antwoord

SuperUser-bijdrager bwDraco heeft het antwoord voor ons:

Dit staat bekend als heterogene multi-processing( HMP) en wordt op grote schaal gebruikt door mobiele apparaten. In op ARM gebaseerde apparaten die big. LITTLE implementeren, bevat de processor kernen met verschillende prestatie- en energieprofielen, dat wil zeggen dat sommige kernen snel werken maar veel stroom trekken( snellere architectuur en / of hogere klokken), terwijl andere kernen energie-efficiënt maar langzaam zijn( langzamere architectuur en / of lagere klokken).Dit is handig omdat het stroomgebruik doorgaans onevenredig toeneemt, omdat je de prestaties verbetert zodra je een bepaald punt voorbij bent. Het idee hier is om prestaties te krijgen wanneer je het nodig hebt en de levensduur van de batterij als je dat niet doet.

Op desktopplatforms is stroomverbruik veel minder een probleem, dus dit is niet echt nodig. De meeste toepassingen verwachten dat elke kern vergelijkbare prestatiekenmerken heeft en dat planningsprocessen voor HMP-systemen veel complexer zijn dan planning voor traditionele symmetrische multi-processing( SMP) -systemen( technisch gezien heeft Windows 10 ondersteuning voor HMP, maar het is vooral bedoeld voor mobiele apparaten).apparaten die ARM big. LITTLE gebruiken).

Ook zijn de meeste desktop- en laptopprocessors van vandaag niet thermisch of elektrisch beperkt tot het punt waar sommige kernen sneller moeten werken dan andere, zelfs bij korte bursts. We hebben feitelijk een muur geraakt voor hoe snel we individuele kernen kunnen maken, dus het vervangen van sommige kernen door langzamere kernen staat niet toe dat de overgebleven kernen sneller lopen.

Hoewel er een paar desktopprocessors zijn die één of twee kernen hebben die sneller kunnen worden uitgevoerd dan de andere, is deze mogelijkheid momenteel beperkt tot bepaalde zeer geavanceerde Intel-processors( bekend als Turbo Boost Max Technology 3.0) en heeft slechts een geringe winstin prestaties voor die kernen die sneller kunnen lopen.

Hoewel het zeker mogelijk is om een ​​traditionele x86-processor te ontwerpen met zowel grote, snelle kernen en kleinere, langzamere kernen om te optimaliseren voor zwaar belaste workloads, zou dit het ontwerp van de processor aanzienlijk complexer maken en toepassingen ondersteunen dit waarschijnlijk niet goed.

Neem een ​​hypothetische processor met twee snelle Kaby Lake( 7e generatie) kernen en acht langzame Goldmont( Atom) kernen. Je zou in totaal 10 cores hebben, en workloads met een hoge schroefdraad die zijn geoptimaliseerd voor dit soort processor kunnen een winst in prestaties en efficiëntie zien in vergelijking met een normale quadcore Kaby Lake-processor. De verschillende typen kernen hebben echter enorm verschillende prestatieniveaus en de trage kernen ondersteunen niet eens enkele van de instructies die de snelle kernen ondersteunen, zoals AVX( ARM vermijdt dit probleem door zowel de grote als de LITTLE-kernen dezelfde instructies te laten ondersteunen).

Nogmaals, de meeste Windows-gebaseerde multithread-toepassingen gaan ervan uit dat elke kern hetzelfde of bijna hetzelfde prestatieniveau heeft en dezelfde instructies kunnen uitvoeren, dus dit soort asymmetrie resulteert waarschijnlijk in minder dan ideale prestaties, misschiencrasht zelfs als het instructies gebruikt die niet worden ondersteund door de tragere cores. Hoewel Intel de trage kernen kon aanpassen om geavanceerde instructieondersteuning toe te voegen, zodat alle kernen alle instructies kunnen uitvoeren, lost dit problemen met softwaresteun voor heterogene processors niet op.

Een andere benadering van applicatieontwerp, dichter bij wat je waarschijnlijk in je vraag denkt, zou de GPU gebruiken voor het versnellen van zeer parallelle delen van applicaties. Dit kan worden gedaan met behulp van API's zoals OpenCL en CUDA.Wat betreft een oplossing met één chip, promoot AMD hardwaresteun voor GPU-versnelling in zijn APU's, die een traditionele CPU en een hoogwaardige geïntegreerde GPU combineert in dezelfde chip, als heterogene systeemarchitectuur, hoewel dit buiten de industrie nog niet veel is waargenomenvan een paar gespecialiseerde toepassingen.

Heeft u iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk de volledige discussiethread hier.

-beeldbank: Mirko Waltermann( Flickr)