Miten lasket prosessorin nopeuden monisydämisillä prosessoreilla?
Taloudellisten kuluttajalaatuisten monisydämisten prosessorien syntyminen herättää kysymyksen monille käyttäjille: miten lasket tehokkaasti monisydämisen järjestelmän todellisen nopeuden? Onko 4-ydin 3Ghz-järjestelmä todella 12 GHz? Lue, kun tutkimme.
Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUser-Stack Exchange -palvelun osa-alueesta..
Kysymys
SuperUser-lukija NReilingh oli utelias, kuinka monisydämisen prosessorin nopeus on todella laskettu:
Onko oikein sanoa esimerkiksi, että neljällä ytimellä toimiva prosessori, jossa kukin toimii 3GHz: ssä, on itse asiassa 12GHz: n prosessori?
Sain kerran "Mac vs. PC"-argumenttiin (joka muuten EI ole tämän aiheen painopiste ... joka oli takaisin keskikoulussa) tuttavan kanssa, joka vaati, että Macia mainostettiin vain 1Ghz-koneina, koska he olivat -prosessori G4: t, joissa kussakin on 500 MHz.
Tuolloin tiesin, että tämä on höyrypesu syistä, jotka mielestäni ovat ilmeisiä useimmille ihmisille, mutta näin vain kommentin tällä sivustolla "6 ytimen x 0,2GHz = 1,2 GHz" vaikutuksesta ja että sain minut ajattelemaan uudelleen siitä, onko siihen on todellinen vastaus.
Joten tämä on enemmän tai vähemmän filosofinen / syvä tekninen kysymys kellonopeuden laskennan semantikasta. Näen kaksi mahdollisuutta:
- Jokainen ydin tekee itse asiassa x laskutoimituksia sekunnissa, joten laskelmien kokonaismäärä on x (ytimet).
- Kellon nopeus on pikemminkin luku, jonka prosessori kulkee toisen sekunnin aikana, joten niin kauan kuin kaikki ytimet käyvät samalla nopeudella, jokaisen kellosyklin nopeus pysyy samana riippumatta siitä, kuinka monta ydintä on olemassa . Toisin sanoen, Hz = (core1Hz + core2Hz +…) / ytimet.
Joten mikä on sopiva tapa merkitä kokonaiskellon nopeutta ja mikä on vielä tärkeämpää, onko mahdollista käyttää yhden ytimen nopeuden nimikkeistöä monisydämisessä?
Vastaus
SuperUserin avustajat Mokubai auttaa selvittämään asioita. Hän kirjoittaa:
Tärkein syy siihen, miksi neljän ytimen 3GHz-prosessori ei ole koskaan yhtä nopea kuin 12 GHz: n ytimessä, liittyy siihen, miten kyseisellä prosessorilla suoritettava tehtävä toimii, eli yksi- tai monisäikeinen. Amdahlin laki on tärkeä, kun tarkastellaan käytössä olevia tehtäviä.
Jos sinulla on tehtävä, joka on luonnostaan lineaarinen ja että se on tehtävä täsmälleen vaiheittain, kuten (erittäin yksinkertainen ohjelma)
10: a = a + 1
20: goto 10
Tällöin tehtävä riippuu suuresti edellisen passin tuloksesta, eikä se voi suorittaa useita kopioita itsestään ilman, että se vahingoittaa arvoa
'A'
koska jokainen kopio saisi arvon'A'
eri aikoina ja kirjoittamalla se eri tavalla. Tämä rajoittaa tehtävää yhdeksi säikeeksi, ja siten tehtävä voi koskaan olla käynnissä yhdellä ytimellä milloin tahansa, jos se olisi suoritettavissa useilla ytimillä, niin synkronointivirhe tapahtuisi. Tämä rajoittaa sen 1/2: een kaksoisydinjärjestelmän cpu-tehosta tai 1/4 quad-ydinjärjestelmässä.Ota nyt tehtävä, kuten:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Kaikki nämä linjat ovat itsenäisiä, ja ne voidaan jakaa neljään erilliseen ohjelmaan, kuten ensimmäinen ja suorittaa samaan aikaan, joista jokainen pystyy käyttämään tehokkaasti yhden ytimen täyttä tehoa ilman synkronointiongelmia. se tulee siihen.
Joten jos sinulla on yksi kierteinen sovellus, joka tekee brute force laskelmat, yksittäinen 12 GHz: n prosessori voittaisi kädet alas, jos voit jotenkin tehdä tehtävän osaksi erillisiin osiin ja monisäikeisiin, niin 4 ytintä voi tulla lähelle, mutta ei aivan ulottuvilla sama suorituskyky kuin Amdahlin laissa.
Tärkeintä on, että moniprosessorijärjestelmä antaa sinulle herkkyyden. Yhdellä ydinkoneella, joka toimii kovasti, järjestelmä voi tuntua hitaalta, koska yksi tehtävä voi käyttää suurimman osan ajasta, ja muut tehtävät suoritetaan vain lyhyissä purskeissa suuremman tehtävän välillä, mikä johtaa järjestelmään, joka tuntuu hitaalta tai tuomitsevalta . Monisydämisessä järjestelmässä raskas tehtävä saa yhden ytimen ja kaikki muut tehtävät muilla ytimillä, tekemällä työnsä nopeasti ja tehokkaasti.
Väite "6 ydintä x 0,2GHz = 1,2 GHz" on roskaa kaikissa tilanteissa paitsi silloin, kun tehtävät ovat täysin rinnakkaisia ja riippumattomia. On paljon tehtäviä, jotka ovat erittäin samansuuntaisia, mutta ne vaativat vielä jonkinlaista synkronointia. Käsijarru on videonsiirtolaite, joka on erittäin hyvä kaikkien käytettävissä olevien keskusyksiköiden käytössä, mutta se vaatii ydinprosessin, jotta muut säikeet täytetään tiedoilla ja kerätään ne tiedot, jotka on tehty.
- Jokainen ydin tekee itse asiassa x laskutoimituksia sekunnissa, joten laskelmien kokonaismäärä on x (ytimet).
Jokainen ydin pystyy tekemään x laskelmia sekunnissa, olettaen, että työmäärä on sopiva rinnakkainen, lineaarisessa ohjelmassa kaikki on 1 ydin.
- Kellon nopeus on pikemminkin luku, jonka prosessori kulkee toisen sekunnin aikana, joten niin kauan kuin kaikki ytimet käyvät samalla nopeudella, jokaisen kellosyklin nopeus pysyy samana riippumatta siitä, kuinka monta ydintä on olemassa . Toisin sanoen, Hz = (core1Hz + core2Hz +…) / ytimet.
Mielestäni on harhaanjohtavaa ajatella, että matemaattiset 4 x 3GHz = 12GHz, mutta vertaat omenoita appelsiineihin ja summat eivät ole oikeassa, GHz ei voi yksinkertaisesti lisätä yhteen jokaisen tilanteen osalta. Haluan muuttaa sen 4 x 3GHz: ksi = 4 x 3GHz.
Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.