Hvis du noen gang har gjort mye sammenligning for å kjøpe en ny CPU, har du kanskje lagt merke til at kjerner alle ser ut til å ha hastigheten i stedet for en kombinasjon av forskjellige. Hvorfor det? Dagens SuperUser-spørsmål og svar har svaret på en nysgjerrig leserspørsmål.
Dagens spørsmål og svar-økt kommer til oss med tillatelse fra SuperUser - en underavdeling av Stack Exchange, en samfunnsdrevet gruppe av spørsmål og svar-nettsteder.
Spørsmålet
SuperUser-leser Jamie vil vite hvorfor CPU-kjerner alle har samme hastighet i stedet for forskjellige:
Generelt, hvis du kjøper en ny datamaskin, vil du bestemme hvilken prosessor du vil kjøpe basert på forventet arbeidsmengde for datamaskinen. Ytelse i videospill har en tendens til å bestemmes av en enkelt kjernehastighet, mens applikasjoner som videoredigering bestemmes av antall kjerner. Når det gjelder hva som er tilgjengelig på markedet, ser alle CPUer ut til å ha omtrent samme hastighet, med de viktigste forskjellene er flere tråder eller flere kjerner.
For example:
- Intel Core i5-7600K, basefrekvens 3,80 GHz, 4 kjerner, 4 tråder
- Intel Core i7-7700K, basefrekvens 4,20 GHz, 4 kjerner, 8 tråder
- AMD Ryzen 5 1600X, basefrekvens 3,60 GHz, 6 kjerner, 12 tråder
- AMD Ryzen 7 1800X, basefrekvens 3,60 GHz, 8 kjerner, 16 tråder
Hvorfor ser vi dette mønsteret av økende kjerner, men likevel har alle kjerner samme klokkehastighet? Hvorfor er det ingen varianter med forskjellige klokkehastigheter? For eksempel to “store” kjerner og mange små kjerner.
I stedet for, for eksempel, fire kjerner ved 4,0 GHz (dvs. 4 × 4 GHz, maks 16 GHz), hva med en CPU med to kjerner som kjører på 4,0 GHz og fire kjerner som kjører på 2,0 GHz (dvs. 2 × 4,0 GHz + 4 × 2,0 GHz, maksimum 16 GHz)? Ville det andre alternativet være like bra på arbeidsbelastninger med en tråd, men potensielt bedre på belastning med flere tråder?
Jeg stiller dette som et generelt spørsmål og ikke spesifikt med hensyn til CPU-ene som er oppført ovenfor eller om en bestemt arbeidsbelastning. Jeg er bare nysgjerrig på hvorfor mønsteret er hva det er.
Hvorfor har alle CPU-kjerner samme hastighet i stedet for forskjellige?
Svaret
SuperUser-bidragsyter bwDraco har svaret for oss:
Dette er kjent som heterogen multi-prosessering (HMP) og er allment brukt av mobile enheter. På ARM-baserte enheter som implementeres stor.LITTLE , prosessoren inneholder kjerner med forskjellige ytelses- og kraftprofiler, dvs. at noen kjerner kjører raskt, men trekker mye strøm (raskere arkitektur og / eller høyere klokker), mens andre er energieffektive, men sakte (langsommere arkitektur og / eller lavere klokker). Dette er nyttig fordi strømforbruket har en tendens til å øke uforholdsmessig når du øker ytelsen når du kommer forbi et bestemt punkt. Tanken her er å få ytelse når du trenger det og batterilevetid når du ikke trenger det.
På stasjonære plattformer er strømforbruket mye mindre av et problem, så dette er ikke virkelig nødvendig. De fleste applikasjoner forventer at hver kjerne har lignende ytelsesegenskaper, og planleggingsprosesser for HMP-systemer er mye mer komplekse enn planlegging for tradisjonelle symmetriske multi-prosesseringssystemer (SMP) (teknisk sett har Windows 10 støtte for HMP, men det er hovedsakelig ment for mobil enheter som bruker ARM big.LITTLE).
Også de fleste stasjonære og bærbare prosessorer i dag er ikke termisk eller elektrisk begrenset til det punktet hvor noen kjerner trenger å kjøre raskere enn andre, selv for korte utbrudd. Vi har i utgangspunktet slått en vegg på hvor fort vi kan lage individuelle kjerner , så å erstatte noen kjerner med tregere vil ikke tillate at de resterende kjernene kjører raskere.
Selv om det er noen få stasjonære prosessorer som har en eller to kjerner som kan kjøre raskere enn de andre, er denne muligheten for tiden begrenset til visse meget avanserte Intel-prosessorer (kjent som Turbo Boost Max Technology 3.0) og innebærer bare en liten økning i ytelse for de kjernene som kan kjøre raskere.
Selv om det absolutt er mulig å designe en tradisjonell x86-prosessor med både store, raske kjerner og mindre, langsommere kjerner for å optimalisere for tungt gjengede arbeidsbelastninger, vil dette legge til betydelig kompleksitet i prosessorens design, og applikasjoner vil neppe støtte den riktig.
Ta en hypotetisk prosessor med to raske Kaby Lake (7. generasjon) kjerner og åtte sakte Goldmont (Atom) kjerner. Du vil ha totalt 10 kjerner, og tungt gjengede arbeidsmengder som er optimalisert for denne typen prosessorer, kan se en gevinst i ytelse og effektivitet over en vanlig firekjerners Kaby Lake-prosessor. Imidlertid har de forskjellige typene kjerner veldig forskjellige ytelsesnivåer, og de sakte kjernene støtter ikke engang noen av instruksjonene som hurtigkjernene støtter, som AVX (ARM unngår dette problemet ved å kreve at både store og LITTLE kjerner støtter de samme instruksjonene).
Igjen antar de fleste Windows-baserte applikasjoner med flere tråder at hver kjerne har samme eller nesten samme ytelsesnivå og kan utføre de samme instruksjonene, så denne typen asymmetri vil sannsynligvis resultere i mindre enn ideell ytelse, kanskje til og med krasjer hvis den bruker instruksjoner som ikke støttes av de langsommere kjernene. Mens Intel kunne endre de langsomme kjernene for å legge til avansert instruksjonsstøtte slik at alle kjernene kan utføre alle instruksjonene, vil dette ikke løse problemer med programvarestøtte for heterogene prosessorer.
En annen tilnærming til applikasjonsdesign, nærmere det du sannsynligvis tenker på i spørsmålet ditt, vil bruke GPU for akselerasjon av svært parallelle deler av applikasjoner. Dette kan gjøres ved hjelp av APIer som OpenCL og MIRAKLER . Når det gjelder en enkeltchipsløsning, fremmer AMD maskinvarestøtte for GPU-akselerasjon i sine APU-er, som kombinerer en tradisjonell CPU og en høyytelsesintegrert GPU i samme brikke, som Heterogen systemarkitektur , selv om dette ikke har sett mye industriopptak utenfor noen få spesialiserte applikasjoner.
Har du noe å legge til forklaringen? Lyd av i kommentarene. Vil du lese flere svar fra andre teknologikyndige Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her .
Bildekreditt: Mirko Waltermann (Flickr)