Als je ooit veel vergelijkende aankopen hebt gedaan voor een nieuwe CPU, is het je misschien opgevallen dat cores allemaal de snelheid lijken te hebben in plaats van een combinatie van verschillende. Waarom is dat? De SuperUser Q & A-post van vandaag biedt het antwoord op de vraag van een nieuwsgierige lezer.
De Vraag & Antwoord-sessie van vandaag komt tot ons dankzij SuperUser – een onderdeel van Stack Exchange, een community-gedreven 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 in het algemeen welke processor u wilt kopen op basis van de verwachte werkbelasting van de computer. Prestaties in videogames worden meestal bepaald door de snelheid van één kern, 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 cores.
Bijvoorbeeld:
- Intel Core i5-7600K, basisfrequentie 3,80 GHz, 4 cores, 4 threads
- Intel Core i7-7700K, basisfrequentie 4,20 GHz, 4 cores, 8 threads
- AMD Ryzen 5 1600X, basisfrequentie 3,60 GHz, 6 cores, 12 threads
- AMD Ryzen 7 1800X, basisfrequentie 3,60 GHz, 8 cores, 16 threads
Waarom zien we dit patroon van toenemende kernen, terwijl alle kernen dezelfde kloksnelheid hebben? Waarom zijn er geen varianten met verschillende kloksnelheden? Bijvoorbeeld twee “grote” kernen en 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 die op 4,0 GHz werken en vier kernen die op 2,0 GHz werken (dwz 2 × 4,0 GHz + 4 × 2,0 GHz, maximaal 16 GHz)? Zou de tweede optie even goed zijn bij workloads met één thread, maar mogelijk beter bij workloads met meerdere threads?
Ik stel 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 algemeen gebruikt door mobiele apparaten. In ARM-gebaseerde apparaten die big.LITTLE implementeren, bevat de processor cores met verschillende prestatie- en energieprofielen, dat wil zeggen dat sommige cores snel werken maar veel stroom verbruiken (snellere architectuur en / of hogere klokken), terwijl andere energiezuinig maar langzaam zijn ( tragere architectuur en / of lagere klokken). Dit is handig omdat het stroomverbruik de neiging heeft om onevenredig toe te nemen naarmate u de prestaties verbetert zodra u een bepaald punt overschrijdt. Het idee hier is om prestaties te krijgen wanneer u die nodig heeft en levensduur van de batterij als u dat niet doet.
Op desktopplatforms is stroomverbruik veel minder een probleem, dus dit is niet echt nodig. De meeste applicaties verwachten dat elke kern vergelijkbare prestatiekenmerken heeft, en planningsprocessen voor HMP-systemen zijn veel complexer dan planning voor traditionele symmetrische multi-processing (SMP) -systemen (technisch gezien heeft Windows 10 ondersteuning voor HMP, maar het is voornamelijk bedoeld voor mobiel apparaten die ARM big.LITTLE gebruiken).
Bovendien zijn de meeste desktop- en laptopprocessors tegenwoordig niet thermisch of elektrisch beperkt tot het punt waarop sommige cores sneller moeten werken dan andere, zelfs niet voor korte bursts. We hebben in feite een muur geraakt over hoe snel we individuele cores kunnen maken, dus als je sommige cores vervangt door langzamere, zullen de resterende cores niet sneller werken.
Hoewel er een paar desktopprocessors zijn die een of twee cores hebben die sneller kunnen werken dan de andere, is deze mogelijkheid momenteel beperkt tot bepaalde zeer geavanceerde Intel-processors (bekend als Turbo Boost Max Technology 3.0) en is er slechts een kleine winst in prestaties voor die kernen die sneller kunnen werken.
Hoewel het zeker mogelijk is om een traditionele x86-processor te ontwerpen met zowel grote, snelle cores als kleinere, langzamere cores om te optimaliseren voor workloads met veel threads, zou dit het processorontwerp aanzienlijk ingewikkelder maken en het is onwaarschijnlijk dat applicaties dit goed zullen ondersteunen.
Neem een hypothetische processor met twee snelle Kaby Lake-kernen (7e generatie) en acht langzame Goldmont (Atom) -kernen. Je zou in totaal 10 cores hebben, en zwaar-threaded workloads die geoptimaliseerd zijn voor dit soort processors kunnen een betere prestatie en efficiëntie opleveren dan een normale quad-core Kaby Lake-processor. De verschillende typen cores hebben echter enorm verschillende prestatieniveaus, en de langzame cores ondersteunen niet eens enkele instructies die de snelle cores ondersteunen, zoals AVX (ARM vermijdt dit probleem door zowel de grote als de LITTLE cores dezelfde instructies te laten ondersteunen. ).
Nogmaals, de meeste Windows-gebaseerde multi-threaded applicaties gaan ervan uit dat elke kern hetzelfde of bijna hetzelfde prestatieniveau heeft en dezelfde instructies kan uitvoeren, dus dit soort asymmetrie zal waarschijnlijk resulteren in minder dan ideale prestaties, misschien zelfs crasht als het instructies gebruikt die niet worden ondersteund door de langzamere kernen. Hoewel Intel de langzame cores zou kunnen aanpassen om geavanceerde instructieondersteuning toe te voegen, zodat alle cores alle instructies kunnen uitvoeren, lost dit de problemen met softwareondersteuning voor heterogene processors niet op.
Een andere benadering van applicatieontwerp, dichter bij waar u waarschijnlijk aan denkt in uw vraag, zou de GPU gebruiken voor versnelling 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 hardware-ondersteuning voor GPU-versnelling in zijn APU’s, die een traditionele CPU en een krachtige geïntegreerde GPU in dezelfde chip combineert als heterogene systeemarchitectuur, hoewel dit buiten de industrie niet veel is toegepast. van een paar gespecialiseerde toepassingen.
Iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden lezen van andere technisch onderlegde Stack Exchange-gebruikers? Bekijk hier de volledige discussiethread.
Beeldcredits: Mirko Waltermann (Flickr)