Hjemmeside » hvordan » Hvorfor har CPU-kerner alle samme hastighed i stedet for forskellige?

    Hvorfor har CPU-kerner alle samme hastighed i stedet for forskellige?

    Hvis du nogensinde har gjort meget sammenligning shopping for en ny CPU, har du måske bemærket, at kerner alle synes at have hastigheden i stedet for 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 & Svar session kommer til os med venlig hilsen af ​​SuperUser-en underafdeling 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:

    Hvis du køber en ny computer, vil du generelt bestemme, hvilken processor der skal købes baseret på den forventede arbejdsbyrde for computeren. Ydeevne i videospil er tilbøjelig til at blive bestemt af single core-hastighed, mens applikationer som videoredigering bestemmes af antallet af kerner. Med hensyn til hvad der er tilgængeligt på markedet, synes alle CPU'er at have stort set samme hastighed, idet de vigtigste 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 af stigende kerner, men alle kerner har samme urthastighed? Hvorfor er der ingen varianter med forskellige urhastigheder? For eksempel to "store" kerner og masser af små kerner.

    I stedet for at sige fire kerner på 4,0 GHz (dvs. 4 × 4 GHz, 16 GHz maksimum), hvad med en CPU med to kerner, der kører ved 4,0 GHz og fire kerner kører ved 2,0 GHz (dvs. 2 × 4,0 GHz + 4 × 2,0 GHz, maks. 16 GHz)? Ville den anden mulighed være lige så god til enkelt gevindbelastning af arbejdsbelastninger, men muligvis bedre ved multi-threaded arbejdsbyrder?

    Jeg spørger dette som et generelt spørgsmål og ikke specifikt med hensyn til CPU'erne ovenfor 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 for os:

    Dette er kendt som heterogen multi-processing (HMP) og er almindeligt vedtaget af mobile enheder. I ARM-baserede enheder, der implementerer stor.LITTLE, indeholder processoren kerner med forskellige præstations- og strømprofiler, dvs. nogle kerner kører hurtigt, men tegner masser af strøm (hurtigere arkitektur og / eller højere klokker), mens andre er energieffektive men langsomme ( langsommere arkitektur og / eller lavere ure). Dette er nyttigt, fordi strømforbruget har tendens til at stige uforholdsmæssigt, da 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 batterilevetiden, når du ikke gør det.

    På stationære platforme er strømforbruget meget mindre et problem, så det er ikke helt nødvendigt. De fleste applikationer forventer, at hver kerne har lignende præstationsegenskaber, 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 støtte til HMP, men det er hovedsagelig beregnet til mobil enheder, der bruger ARM big.LITTLE).

    Desuden er de fleste desktop- og bærbare processorer i dag ikke termisk eller elektrisk begrænset til det punkt, hvor nogle kerner skal køre hurtigere end andre, selv for korte udbrud. Vi har stort set ramt en mur på, hvor hurtigt vi kan lave individuelle kerner, så erstatning af nogle kerner med langsommere vil ikke tillade de resterende kerner at køre hurtigere.

    Selv om der er et par desktop-processorer, der har en eller to kerner, der kan 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 gevinst i ydeevne for de kerner, der kan køre hurtigere.

    Selvom det er sikkert muligt at designe en traditionel x86-processor med både store, hurtige kerner og mindre, langsommere kerner for at optimere til stærkt gevindbelastede arbejdsbyrder, ville dette tilføje betydelig kompleksitet til processoren design, og applikationer er usandsynligt, at de kan understøtte det korrekt..

    Tag en hypotetisk processor med to hurtige Kaby Lake (7. generations) kerner og otte langsomme Goldmont (Atom) kerner. Du ville have i alt 10 kerner, og stærkt gevindbelastede arbejdsbyrder optimeret til denne type processor kan se en gevinst i ydeevne og effektivitet over en normal quad-core Kaby Lake-processor. De forskellige typer kerner har imidlertid vildt forskellige præstationsniveauer, og de langsomme kerner understøtter ikke engang nogle af de instruktioner, som de hurtige kerner understøtter, som AVX (ARM undgår dette problem ved at kræve, at både de store og små kerner understøtter de samme instruktioner ).

    Igen antager de fleste Windows-baserede multi-threaded 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 nedbrud, hvis den bruger instruktioner, der ikke understøttes af de langsommere kerner. Mens Intel kunne ændre de langsomme kerner for at tilføje avanceret instruktionssupport, så alle kerner kan udføre alle instruktioner, ville dette ikke løse problemer med software support til heterogene processorer.

    En anden tilgang til applikationsdesign, tættere på det, du sandsynligvis tænker på i dit spørgsmål, ville bruge GPU'en til acceleration af meget parallelle applikationer. Dette kan gøres ved hjælp af API'er som OpenCL og CUDA. Med hensyn til en enkeltchip-løsning fremmer AMD hardware support til GPU acceleration i sine APU'er, der kombinerer en traditionel CPU og en højtydende integreret GPU i samme chip som Heterogene System Architecture, selv om dette ikke har set meget industrioptagelse udenfor af nogle få specialiserede applikationer.


    Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.

    Billedkredit: Mirko Waltermann (Flickr)