Varför har CPU-kärnor alla samma hastighet i stället för olika enheter?
Om du någonsin gjort mycket jämförelse shopping för en ny CPU, kan du ha märkt att kärnor alla tycks ha hastigheten snarare än en kombination av olika. Varför är det så? Dagens SuperUser Q & A inlägg har svaret på en nyfiken läsarens fråga.
Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsare Jamie vill veta varför CPU-kärnor har samma hastighet i stället för olika:
Om du köper en ny dator, brukar du bestämma vilken processor som ska köpas baserat på den förväntade arbetsbelastningen för datorn. Prestanda i videospel tenderar att bestämmas av enkel kärnhastighet, medan applikationer som videoredigering bestäms av antalet kärnor. När det gäller vad som är tillgängligt på marknaden verkar alla CPU ha ungefär samma hastighet med de huvudsakliga skillnaderna som är fler trådar eller fler kärnor.
Till exempel:
- Intel Core i5-7600K, basfrekvens 3,80 GHz, 4 kärnor, 4 trådar
- Intel Core i7-7700K, basfrekvens 4.20 GHz, 4 kärnor, 8 trådar
- AMD Ryzen 5 1600X, basfrekvens 3,60 GHz, 6 kärnor, 12 trådar
- AMD Ryzen 7 1800X, basfrekvens 3,60 GHz, 8 kärnor, 16 trådar
Varför ser vi detta mönster av ökande kärnor, men alla kärnor har samma klockhastighet? Varför finns det inga varianter med olika klockhastigheter? Till exempel två "stora" kärnor och massor av små kärnor.
I stället för att säga fyra kärnor på 4,0 GHz (dvs 4 × 4 GHz, 16 GHz maximalt), hur är det med en CPU med två kärnor som körs på 4,0 GHz och fyra kärnor som körs vid 2,0 GHz (dvs. 2 × 4,0 GHz + 4 × 2,0 GHz, max 16 GHz)? Skulle det andra alternativet vara lika bra med enkelgängad arbetsbelastning, men möjligen bättre vid flergängade arbetsbelastningar?
Jag frågar detta som en allmän fråga och inte specifikt med avseende på CPU: erna listade ovan eller om någon specifik arbetsbelastning. Jag är bara nyfiken på varför mönstret är vad det är.
Varför har CPU-kärnor alla samma hastighet i stället för olika?
Svaret
SuperUser-bidragsgivare bwDraco har svaret för oss:
Detta är känt som heterogen multi-processing (HMP) och är allmänt antagen av mobila enheter. I ARM-baserade enheter som implementerar stor.LITTLE innehåller processorn kärnor med olika prestanda och kraftprofiler, dvs vissa kärnor går fort men drar mycket kraft (snabbare arkitektur och / eller högre klockor) medan andra är energieffektiva men långsamma långsammare arkitektur och / eller lägre klockor). Detta är användbart eftersom strömförbrukningen tenderar att öka oproportionerligt eftersom du ökar prestandan när du kommer över en viss punkt. Tanken här är att få prestanda när du behöver det och batterilivslängd när du inte gör det.
På stationära plattformar är strömförbrukningen mycket mindre av ett problem, så det här är inte verkligen nödvändigt. De flesta applikationer förväntar sig att varje kärna har liknande prestandaegenskaper, och schemaläggningsprocesser för HMP-system är mycket mer komplexa än schemaläggning för traditionella symmetriska multibearbetningssystem (tekniskt har Windows 10 stöd för HMP, men det är främst avsett för mobil enheter som använder ARM big.LITTLE).
Dessutom är de flesta stationära och bärbara processorer idag inte termiskt eller elektriskt begränsade till den punkt där vissa kärnor behöver springa snabbare än andra, även för korta utbrott. Vi har i grunden slagit en vägg på hur fort vi kan göra individuella kärnor, så att byta ut några kärnor med långsammare kommer inte att tillåta de kvarvarande kärnorna att springa snabbare.
Medan det finns några stationära processorer som har en eller två kärnor som kan köra snabbare än de andra, är denna kapacitet för närvarande begränsad till vissa mycket avancerade Intel-processorer (känd som Turbo Boost Max Technology 3.0) och innebär endast en liten vinst i prestanda för de kärnor som kan springa snabbare.
Även om det är säkert möjligt att designa en traditionell x86-processor med både stora, snabba kärnor och mindre, långsammare kärnor för att optimera för tungt belastade arbetsbelastningar, skulle detta ge stor komplexitet till processorns design och det är osannolikt att applikationer inte kan ordentligt stödja det.
Ta en hypotetisk processor med två snabba Kaby Lake (7: e generationen) kärnor och åtta långa Goldmont (Atom) kärnor. Du skulle ha totalt 10 kärnor, och kraftigt gängade arbetsbelastningar optimerade för den här typen av processorn kan få en förbättrad prestanda och effektivitet över en vanlig Quad-core Kaby Lake-processor. De olika typerna av kärnor har dock olika prestanda och långsamma kärnor stöder inte ens några av de instruktioner som de snabbkärnor stöder, som AVX (ARM undviker detta problem genom att kräva att både stora och små kärnor stöder samma instruktioner ).
Återigen antar de flesta Windows-baserade multi-threaded-programmen att varje kärna har samma eller nästan samma prestationsnivå och kan utföra samma instruktioner, så den här typen av asymmetri kommer sannolikt att resultera i mindre än idealisk prestanda, kanske till och med kraschar om den använder instruktioner som inte stöds av de långsammare kärnorna. Medan Intel kan ändra de långsamma kärnorna för att lägga till avancerat instruktionsstöd så att alla kärnor kan utföra alla instruktioner, skulle detta inte lösa problem med mjukvaruunderstöd för heterogena processorer.
Ett annat tillvägagångssätt för applikationsdesign, närmare vad du förmodligen tänker på i din fråga, skulle använda GPU för acceleration av mycket parallella delar av applikationer. Detta kan göras med hjälp av API som OpenCL och CUDA. När det gäller en enda chip-lösning, främjar AMD hårdvaruunderstöd för GPU-acceleration i sina APUer, som kombinerar en traditionell CPU och en högpresterande integrerad GPU i samma chip, som Heterogen System Architecture, men det här har inte sett mycket industriupptagning utanför av några specialiserade applikationer.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.
Bildkredit: Mirko Waltermann (Flickr)