Hvis du nogensinde har gjort meget sammenligning med at købe en ny CPU, har du måske bemærket, at kerner alle ser ud til at have hastigheden snarere end en kombination af forskellige. Hvorfor det? Dagens SuperUser Q & A-indlæg har svaret på en nysgerrig læsers spørgsmål.
Dagens spørgsmål og svar-session kommer til os med tilladelse fra SuperUser - en underinddeling af Stack Exchange, en community-driven gruppe af Q&A websteder.
Spørgsmålet
SuperUser-læser Jamie vil vide, hvorfor CPU-kerner alle har samme hastighed i stedet for forskellige:
Generelt, hvis du køber en ny computer, vil du bestemme hvilken processor du vil købe baseret på den forventede arbejdsbyrde for computeren. Ydeevne i videospil har tendens til at blive bestemt af enkelt kernehastighed, mens applikationer som videoredigering bestemmes af antallet af kerner. Med hensyn til hvad der er tilgængeligt på markedet, ser alle CPU'er ud til at have nogenlunde samme hastighed, hvor de største forskelle er flere tråde eller flere kerner.
For eksempel:
- Intel Core i5-7600K, basisfrekvens 3,80 GHz, 4 kerner, 4 tråde
- Intel Core i7-7700K, basisfrekvens 4,20 GHz, 4 kerner, 8 tråde
- AMD Ryzen 5 1600X, basisfrekvens 3,60 GHz, 6 kerner, 12 tråde
- AMD Ryzen 7 1800X, basisfrekvens 3,60 GHz, 8 kerner, 16 tråde
Hvorfor ser vi dette mønster med stigende kerner, men alligevel har alle kerner den samme klokkehastighed? Hvorfor er der ingen varianter med forskellige urhastigheder? For eksempel to “store” kerner og masser af små kerner.
I stedet for f.eks. Fire kerner ved 4,0 GHz (dvs. 4 × 4 GHz, maksimalt 16 GHz), hvad med en CPU med to kerner, der kører ved 4,0 GHz og fire kerner, der kører ved 2,0 GHz (dvs. 2 × 4,0 GHz + 4 × 2,0 GHz, maksimum 16 GHz)? Ville den anden mulighed være lige så god ved enkeltgevindede arbejdsbelastninger, men potentielt bedre ved multitrådede arbejdsbelastninger?
Jeg stiller dette som et generelt spørgsmål og ikke specifikt med hensyn til de ovennævnte CPU'er eller om en bestemt arbejdsbyrde. Jeg er bare nysgerrig efter, hvorfor mønsteret er, hvad det er.
Hvorfor har CPU-kerner alle samme hastighed i stedet for forskellige?
Svaret
SuperUser-bidragyder bwDraco har svaret til os:
Dette er kendt som heterogen multi-processing (HMP) og er almindeligt anvendt af mobile enheder. I ARM-baserede enheder, der implementeres big.LITTLE , processoren indeholder kerner med forskellige ydeevne- og effektprofiler, dvs. nogle kerner kører hurtigt, men trækker masser af strøm (hurtigere arkitektur og / eller højere ure), mens andre er energieffektive, men langsomme (langsommere arkitektur og / eller lavere ure). Dette er nyttigt, fordi strømforbruget har en tendens til at stige uforholdsmæssigt, når du øger ydeevnen, når du kommer forbi et bestemt punkt. Ideen her er at få ydeevne, når du har brug for det, og batteriets levetid, når du ikke gør det.
På stationære platforme er strømforbruget meget mindre et problem, så det er ikke virkelig nødvendigt. De fleste applikationer forventer, at hver kerne har lignende ydeevneegenskaber, og planlægningsprocesser for HMP-systemer er meget mere komplekse end planlægning for traditionelle symmetriske multi-processing (SMP) -systemer (teknisk set har Windows 10 understøttelse af HMP, men det er hovedsageligt beregnet til mobil enheder, der bruger ARM big.LITTLE).
Også de fleste stationære og bærbare processorer i dag er ikke begrænset termisk eller elektrisk til det punkt, hvor nogle kerner har brug for at køre hurtigere end andre, selv ved korte udbrud. Vi har dybest set slået en mur på hvor hurtigt vi kan fremstille individuelle kerner , så udskiftning af nogle kerner med langsommere gør det ikke muligt for de resterende kerner at køre hurtigere.
Mens der er et par desktop-processorer, der har en eller to kerner, der er i stand til at køre hurtigere end de andre, er denne kapacitet i øjeblikket begrænset til visse meget avancerede Intel-processorer (kendt som Turbo Boost Max Technology 3.0) og involverer kun en lille stigning i ydeevne for de kerner, der kan køre hurtigere.
Selv om det helt sikkert er muligt at designe en traditionel x86-processor med både store, hurtige kerner og mindre, langsommere kerner for at optimere til stærkt gevindbelastede arbejdsbelastninger, vil dette tilføje processorens design betydelig kompleksitet, og applikationer understøtter sandsynligvis ikke den korrekt.
Tag en hypotetisk processor med to hurtige Kaby Lake (7. generation) kerner og otte langsomme Goldmont (Atom) kerner. Du vil have i alt 10 kerner, og stærkt gevindbelastede arbejdsbelastninger, der er optimeret til denne type processor, kan muligvis se en gevinst i ydeevne og effektivitet i forhold til en normal quad-core Kaby Lake-processor. De forskellige typer kerner har dog meget forskellige ydelsesniveauer, og de langsomme kerner understøtter ikke engang nogle af de instruktioner, som hurtige kerner understøtter, som AVX (ARM undgår dette problem ved at kræve, at både de store og LITTLE kerner understøtter de samme instruktioner).
Igen antager de fleste Windows-baserede multitrådede applikationer, at hver kerne har det samme eller næsten samme niveau af ydeevne og kan udføre de samme instruktioner, så denne form for asymmetri vil sandsynligvis resultere i mindre end ideel ydeevne, måske endda går ned, hvis den bruger instruktioner, der ikke understøttes af de langsommere kerner. Mens Intel kunne ændre de langsomme kerner for at tilføje avanceret instruktionsunderstøttelse, så alle kerner kan udføre alle instruktioner, vil dette ikke løse problemer med softwaresupport til heterogene processorer.
En anden tilgang til applikationsdesign, tættere på hvad du sandsynligvis tænker på i dit spørgsmål, ville bruge GPU'en til acceleration af meget parallelle dele af applikationer. Dette kan gøres ved hjælp af API'er som OpenCL og MIRAKLER . Hvad angår en single-chip-løsning, fremmer AMD hardwaresupport til GPU-acceleration i sine APU'er, som kombinerer en traditionel CPU og en højtydende integreret GPU i den samme chip, som Heterogen systemarkitektur , selvom dette ikke har set meget industrioptagelse uden for nogle få specialiserede applikationer.
Har du noget at tilføje til forklaringen? Lyd fra i kommentarerne. Vil du læse flere svar fra andre teknisk kyndige Stack Exchange-brugere? Tjek den fulde diskussionstråd her .
Billedkredit: Mirko Waltermann (Flickr)