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

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

    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 Q & A-post van vandaag heeft het antwoord op de vraag van een nieuwsgierige lezer.

    De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.

    De vraag

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

    Over het algemeen bepaalt u, als u een nieuwe computer koopt, welke processor u moet kopen 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.

    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 kernen, 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 u 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 even goed zijn in 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 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 applicaties 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).

    De meeste desktop- en laptopprocessors zijn tegenwoordig niet thermisch of elektrisch beperkt tot het punt waar sommige kernen sneller moeten werken dan andere, zelfs bij korte bursts. We hebben in feite een muur geraakt voor hoe snel we individuele kernen kunnen maken, dus het vervangen van sommige kernen door langzamere kernen zal niet toestaan ​​dat de resterende kernen sneller rennen.

    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 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 kernen als kleinere, langzamere kernen om te optimaliseren voor zwaar belaste workloads, zou dit het processorontwerp aanzienlijk complexer maken en het is onwaarschijnlijk dat applicaties dit goed ondersteunen.

    Neem een ​​hypothetische processor met twee snelle Kaby Lake (7e generatie) kernen en acht langzame Goldmont (Atom) kernen. Je zou in totaal 10 kernen hebben, en workloads met een hoge schroefdraad die voor dit soort processor zijn geoptimaliseerd, 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 multi-threaded applicaties 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, misschien zelfs crasht als het instructies gebruikt die niet worden ondersteund door de langzamere kernen. 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 het ontwerp van toepassingen, dichter bij wat u waarschijnlijk in uw vraag denkt, zou de GPU gebruiken voor het versnellen van zeer parallelle delen van toepassingen. 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 waargenomen van een paar gespecialiseerde toepassingen.


    Heb je 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 hier de volledige discussiethread.

    Image Credit: Mirko Waltermann (Flickr)