Jos olet koskaan tehnyt paljon vertailuostoksia uudelle suorittimelle, olet ehkä huomannut, että kaikilla ytimillä näyttää olevan nopeus pikemminkin kuin erilaisten ytimien yhdistelmä. Miksi niin? Tämän päivän SuperUser Q & A -viestillä on vastaus utelias lukijan kysymykseen.
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.
Kysymys
SuperUser-lukija Jamie haluaa tietää, miksi kaikilla CPU-ytimillä on sama nopeus erilaisten sijasta:
Yleensä, jos ostat uuden tietokoneen, määrität ostettavan prosessorin tietokoneen odotetun kuormituksen perusteella. Videopelien suorituskyky määräytyy yleensä yhden ytimen nopeuden mukaan, kun taas sovellukset, kuten videon muokkaus, määräytyy ytimien lukumäärän perusteella. Markkinoilla saatavana olevan suhteen kaikilla suorittimilla näyttää olevan suunnilleen sama nopeus, ja tärkeimmät erot ovat enemmän ketjuja tai enemmän ytimiä.
Esimerkiksi:
- Intel Core i5-7600K, perustaajuus 3,80 GHz, 4 ydintä, 4 säiettä
- Intel Core i7-7700K, perustaajuus 4,20 GHz, 4 ydintä, 8 säiettä
- AMD Ryzen 5 1600X, perustaajuus 3,60 GHz, 6 ydintä, 12 säiettä
- AMD Ryzen 7 1800X, perustaajuus 3,60 GHz, 8 ydintä, 16 säiettä
Miksi näemme tämän kasvavien ytimien mallin, mutta kaikilla ytimillä on sama kellotaajuus? Miksi ei ole vaihtoehtoja, joiden kellotaajuus on erilainen? Esimerkiksi kaksi "isoa" ydintä ja paljon pieniä ytimiä.
Sanotaan esimerkiksi neljän ytimen sijasta 4,0 GHz: n (ts. 4 × 4 GHz, enintään 16 GHz), entä CPU, jossa on kaksi ydintä 4,0 GHz: n taajuudella ja neljä ydintä 2,0 GHz: n taajuudella (ts. 2 × 4,0 GHz + 4 × 2,0) GHz, enintään 16 GHz)? Olisiko toinen vaihtoehto yhtä yhtä hyvä yksittäiskierteisillä kuormituksilla, mutta mahdollisesti parempi monisäikeisillä kuormituksilla?
Esitän tämän yleisenä kysymyksenä, ei erityisesti edellä mainittujen suorittimien tai jonkin erityisen työmäärän suhteen. Olen vain utelias, miksi kuvio on sellainen kuin se on.
Miksi kaikilla suorittimen ytimillä on sama nopeus erilaisten sijasta?
Vastaus
SuperUser-avustaja bwDraco on vastannut meille:
Tätä kutsutaan heterogeeniseksi moniprosessoinniksi (HMP), ja mobiililaitteet hyväksyvät sen laajasti. ARM-pohjaisissa laitteissa, jotka toteuttavat iso. Pieni , prosessori sisältää ytimiä, joilla on erilaiset suorituskyky- ja tehoprofiilit, toisin sanoen jotkut ytimet juoksevat nopeasti, mutta ne kuluttavat paljon virtaa (nopeampi arkkitehtuuri ja / tai korkeammat kellot), kun taas toiset ovat energiatehokkaita, mutta hitaita (hitaampi arkkitehtuuri ja / tai alemmat kellot). Tämä on hyödyllistä, koska virrankulutuksella on taipumus kasvaa suhteettomasti, kun lisäät suorituskykyä, kun olet ylittänyt tietyn pisteen. Ajatuksena on saada suorituskyky tarvittaessa ja akun käyttöikä, kun et.
Pöytäkoneissa virrankulutus on paljon vähemmän ongelma, joten tämä ei ole todellakaan tarpeen. Useimmat sovellukset odottavat, että jokaisella ytimellä on samanlaiset suorituskykyominaisuudet, ja HMP-järjestelmien ajoitusprosessit ovat paljon monimutkaisempia kuin perinteisten symmetristen moniprosessorijärjestelmien (SMP) aikataulut (teknisesti Windows 10 tukee HMP: tä, mutta se on tarkoitettu lähinnä mobiililaitteille) laitteet, jotka käyttävät ARM big.LITTLE).
Useimpia pöytätietokoneiden ja kannettavien prosessoreita ei nykyään ole termisesti tai sähköisesti rajoitettu siihen pisteeseen, jossa joidenkin ytimien täytyy toimia nopeammin kuin toiset, jopa lyhyinä purskeina. Olemme periaatteessa osuneet seinään kuinka nopeasti voimme tehdä yksittäisiä ytimiä , joten joidenkin ytimien korvaaminen hitaammilla ei anna muiden ytimien toimia nopeammin.
Vaikka on olemassa muutamia työpöytäprosessoreita, joissa on yksi tai kaksi ydintä, jotka pystyvät toimimaan nopeammin kuin muut, tämä ominaisuus on tällä hetkellä rajoitettu tiettyihin erittäin huippuluokan Intel-prosessoreihin (tunnetaan nimellä Turbo Boost Max Technology 3.0) ja siihen liittyy vain pieni voitto suorituskyky niille ytimille, jotka voivat toimia nopeammin.
Vaikka on varmasti mahdollista suunnitella perinteinen x86-prosessori, jossa on sekä suuria, nopeita että pienempiä, hitaampia ytimiä optimoimaan voimakkaasti kierteitetyt työmäärät, tämä lisäisi prosessorin suunnittelua huomattavasti ja sovellukset eivät todennäköisesti tue sitä oikein.
Ota hypoteettinen prosessori kahdella nopealla Kaby-järvi (7. sukupolvi) ydintä ja kahdeksan hidasta Goldmont (Atom) ytimet. Sinulla olisi yhteensä 10 ydintä, ja tämäntyyppiselle prosessorille optimoidut voimakkaasti kierretyt työmäärät saattavat parantaa suorituskykyä ja tehokkuutta normaaliin neliytimiseen Kaby Lake -prosessoriin verrattuna. Erityyppisillä ytimillä on kuitenkin erilainen suorituskykytaso, eivätkä hitaat ytimet edes tue joitain nopeiden ytimien tukemia ohjeita, kuten AVX (ARM välttää tämän ongelman vaatimalla sekä isoa että LITTLE-ydintä tukemaan samoja ohjeita.)
Jälleen useimmissa Windows-pohjaisissa monisäikeisissä sovelluksissa oletetaan, että jokaisella ytimellä on sama tai melkein sama suorituskyky ja että ne voivat suorittaa samat ohjeet, joten tällainen epäsymmetria johtaa todennäköisesti ihanteellisempaa suorituskykyyn, ehkä jopa kaatuu, jos se käyttää ohjeita, joita hitaammat ytimet eivät tue. Vaikka Intel voisi muokata hitaita ytimiä lisäämällä kehittyneitä käskyjä, jotta kaikki ytimet voivat suorittaa kaikki ohjeet, tämä ei ratkaisi heterogeenisten prosessorien ohjelmistotukeen liittyviä ongelmia.
Erilainen lähestymistapa sovellussuunnitteluun, lähempänä sitä, mistä olet todennäköisesti ajatellut kysymyksessäsi, käyttäisi GPU: ta sovellusten erittäin rinnakkaisten osien kiihdyttämiseen. Tämä voidaan tehdä käyttämällä esimerkiksi API: ta OpenCL ja IMET . Yhden sirun ratkaisun osalta AMD tukee laitteiden tukea GPU-kiihdytykselle APU-laitteissaan, mikä yhdistää perinteisen prosessorin ja tehokkaan integroidun GPU: n samaan siruun kuin Heterogeeninen järjestelmäarkkitehtuuri , vaikka teollisuus ei ole nähnyt paljoakaan muutaman erikoistuneen sovelluksen ulkopuolella.
Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .
Kuvahyvitys: Mirko Waltermann (Flickr)