11Aug

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 fråga &Svarssession 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 istä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 finns tillgängligt på marknaden verkar alla CPU-enheter 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, 6kä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), vad sägs om en CPU med två kärnor som körs vid 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 för 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-bidragsgivaren bwDraco har svaret för oss:

Detta kallas heterogen multi-processing( HMP) och används allmänt av mobila enheter. I ARM-baserade enheter som implementerar large. 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ångsammalångsammare arkitektur och / eller lägre klockor).Det här ä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 komplicerade än schemaläggning för traditionella symmetriska multibearbetningssystem( tekniskt har Windows 10 stöd för HMP, men det är huvudsakligen avsett för mobilenheter som använder ARM big. LITTLE).

De flesta stationära och bärbara processorer är 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 brister. Vi har i grund och botten slagit en vägg på hur fort vi kan göra individuella kärnor, så att ersätta några kärnor med långsammare kommer inte att tillåta de kvarvarande kärnorna att springa snabbare.

Även om 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 vinsti prestanda för de kärnor som kan springa snabbare.

Medan det säkert är möjligt att utforma 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 applikationerna inte kan ordentligt stödja det.

Ta en hypotetisk processor med två snabba Kaby Lake( 7: e generationen) kärnor och åtta långsamma Goldmont( Atom) kärnor. Du skulle ha totalt 10 kärnor, och kraftigt gängade arbetsbelastningar optimerade för den här typen av processor kan få en prestandaförstärkning över en vanlig Kaby Lake-processor med fyrkärnor. De olika typerna av kärnor har dock olika olika prestanda, och de långsamma kärnorna stöder inte ens några av de instruktioner som snabbkärnorna 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-applikationer att varje kärna har samma eller nästan samma prestationsnivå och kan utföra samma instruktioner, så denna typ av asymmetri kommer sannolikt att resultera i mindre än idealisk prestanda, kanskeäven 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 troligen tänker på i din fråga, skulle använda GPU-enheten 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örav några specialiserade applikationer.

Har 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.

Bildkrediter: Mirko Waltermann( Flickr)