no.phhsnews.com


no.phhsnews.com / Hvorfor har CPU-kjerner alle samme hastighet i stedet for forskjellige enheter?

Hvorfor har CPU-kjerner alle samme hastighet i stedet for forskjellige enheter?


Hvis du noen gang har gjort mye sammenligning med å kjøpe en ny CPU, har du kanskje lagt merke til at kjerner alle synes å ha fart snarere enn en kombinasjon av forskjellige. Hvorfor det? Dagens SuperUser Q & A-post har svaret på en nysgjerrig leser spørsmål.

Dagens Spørsmål og Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppe av Q & A-nettsteder.

Spørsmålet

SuperUser-leser Jamie vil vite hvorfor CPU-kjerner alle har samme hastighet i stedet for forskjellige:

Generelt om du kjøper en ny datamaskin, bestemmer du hvilken prosessor som skal kjøpes basert på forventet arbeidsbelastning for datamaskinen . Ytelse i videospill har en tendens til å bestemmes av enkel kjernehastighet, mens programmer som videoredigering bestemmes av antall kjerner. Når det gjelder hva som er tilgjengelig på markedet, synes alle CPUer å ha omtrent samme hastighet med de viktigste forskjellene som er flere tråder eller flere kjerner.

For eksempel:

  • Intel Core i5-7600K, basfrekvens 3,80 GHz, 4 kjerne, 4 tråder
  • Intel Core i7-7700K, basfrekvens 4.20 GHz, 4 kjerner, 8 tråder
  • AMD Ryzen 5 1600X, basisfrekvens 3,60 GHz, 6 kjerner, 12 tråder
  • AMD Ryzen 7 1800X, basfrekvens 3,60 GHz, 8 kjerner, 16 tråder

Hvorfor ser vi dette mønsteret av økende kjerner, men alle kjerner har samme klokkefrekvens? Hvorfor er det ingen varianter med forskjellige klokkehastigheter? For eksempel, to "store" kjerner og mange små kjerner. I stedet for å si fire kjerner på 4,0 GHz (dvs. 4 × 4 GHz, 16 GHz maksimum), 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, 16 GHz maksimum)? Ville det andre alternativet være like bra på enkeltrådede arbeidsbelastninger, men potensielt bedre ved multi-threaded arbeidsbelastninger?

Jeg spør dette som et generelt spørsmål og ikke spesifikt med hensyn til CPUene som er nevnt ovenfor eller om en bestemt arbeidsbelastning. Jeg er bare nysgjerrig på hvorfor mønsteret er hva det er.

Hvorfor har CPU-kjerner alle samme hastighet i stedet for forskjellige?

Svaret

SuperUser-bidragsyteren bwDraco har svaret for oss:

Dette er kjent som heterogen multi-processing (HMP) og er allment vedtatt av mobile enheter. I ARM-baserte enheter som implementerer big.LITTLE, inneholder prosessoren kjerner med forskjellige ytelses- og kraftprofiler, dvs. noen kjerner går fort, men tegner mye kraft (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. Ideen her er å få ytelse når du trenger det og batterilevetiden når du ikke gjør det.

På stasjonære plattformer er strømforbruket langt mindre et problem, så dette er ikke helt nødvendig. De fleste applikasjoner forventer at hver kjerne har lignende ytelsesegenskaper, og planleggingsprosesser for HMP-systemer er mye mer kompliserte enn planlegging for tradisjonelle symmetriske multi-prosesseringssystemer (teknisk sett har Windows 10 støtte for HMP, men det er hovedsakelig ment for mobil enheter som bruker ARM big.LITTLE).

Dessuten er de fleste stasjonære og bærbare prosessorer i dag ikke termisk eller elektrisk begrenset til det punktet hvor noen kjerner må løpe raskere enn andre, selv for korte utbrudd. Vi har i utgangspunktet slått en vegg på hvor fort vi kan lage individuelle kjerner, så erstatning av noen kjerner med tregere vil ikke tillate at de gjenværende kjernene løper raskere.

Selv om det er noen stasjonære prosessorer som har en eller to kjerner i stand til kjører raskere enn de andre, er denne kapasiteten for tiden begrenset til visse meget avanserte Intel-prosessorer (kjent som Turbo Boost Max Technology 3.0), og innebærer bare en svak ytelse for de kjernene som kan kjøre raskere.

Mens det er absolutt mulig å designe en tradisjonell x86-prosessor med både store, hurtige kjerner og mindre, langsommere kjerner for å optimalisere for hardt belastede arbeidsbelastninger, vil dette legge til betydelig kompleksitet i prosessorutformingen, og det er usannsynlig at applikasjoner ikke støtter det 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 kraftige gjengede arbeidsbelastninger optimalisert for denne typen prosessor kan se en gevinst i ytelse og effektivitet over en vanlig quad-core Kaby Lake-prosessor. Imidlertid har de forskjellige typer kjerner helt forskjellige ytelsesnivåer, og de sakte kjernene støtter ikke engang noen av instruksjonene som de hurtige kjernene støtter, som AVX (ARM unngår dette problemet ved å kreve at både de store og små kjernene støtter de samme instruksjonene ).

Igjen, antar de fleste Windows-baserte multi-threaded-applikasjoner at hver kjerne har samme eller nesten samme ytelsesnivå og kan utføre samme instruksjoner, slik at denne typen asymmetri sannsynligvis vil resultere i mindre enn Ideell ytelse, kanskje til og med krasjer hvis den bruker instruksjoner som ikke støttes av tregere kjerner. Mens Intel kunne endre langsomme kjerner for å legge til avansert instruksjonsstøtte slik at alle kjerner kan utføre alle instruksjoner, ville dette ikke løse problemer med programvarestøtte for heterogene prosessorer.

En annen tilnærming til applikasjonsdesign, nærmere hva du antakelig tenker om i spørsmålet ditt, ville bruke GPU for akselerasjon av svært parallelle deler av applikasjoner. Dette kan gjøres ved hjelp av APIer som OpenCL og CUDA. Når det gjelder en enkelt-chip-løsning, fremmer AMD maskinvare-støtte for GPU-akselerasjon i sine APUer, som kombinerer en tradisjonell CPU og en høyytelsesintegrert GPU i samme chip, som Heterogene System Architecture, selv om dette ikke har sett mye industriopptak utenfor av noen spesialiserte applikasjoner.

Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Se full diskusjonstråd her.


Bilde Kreditt: Mirko Waltermann (Flickr)


Slik kjører du Android på Windows Med AMIDuOS

Slik kjører du Android på Windows Med AMIDuOS

Det finnes et økende antall måter å prøve ut Android-applikasjoner på Windows-skrivebordet eller datamaskinen. Men av de ulike metodene jeg har samplet, har ingen kombinert full tilgang til Androids grunnleggende funksjoner med enkel tilgang like som American Megatrends 'AMIDuOS. RELATED: Slik kjører du Android Apps og spill på Windows-skrivebordet med BlueStacks I motsetning til et program som Bluestacks, som handler om å få spesifikk appfunksjonalitet på skrivebordet, er AMIDuOS en komplett virtuell maskin av (for det meste) lager Android, og gjenoppretter grensesnittet og opplevelsen av en full Android-nettbrett.

(how-top)

4 Måter å kjøre Android på din PC og lage ditt eget

4 Måter å kjøre Android på din PC og lage ditt eget "Dual OS" -system

Microsoft og Google kan ha satt kibosh på Intels planlagte "Dual OS" PC-enheter med begge Windows og Android på dem - men det betyr ikke at du må gi opp drømmen din om Android og Windows på samme maskin. Du kan kjøre Android-apper og til og med Android-operativsystemet på din nåværende PC. Dette tillater deg å bruke Android's økosystem for berøringsbaserte apper på berøringsbaserte Windows bærbare datamaskiner og tabletter, så det gir litt mening.

(how-top)