Taloudellisten kuluttajaluokan monisäikeisten prosessorien esiin nouseminen herättää kysymyksen monille käyttäjille: kuinka tehokkaasti lasketaan monijärjestelmän todellinen nopeus? Onko 4-core 3Ghz-järjestelmä todella 12GHz? Lue, kun tutkitaan.
Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin ansiosta. Tämä on Stack Exchange -jako, joka on Q & A-sivustojen yhteisöjoukkoyhtymä.
SuperUser-lukija NReilingh oli utelias kuinka monijärjestelmän prosessorin nopeus todella lasketaan:
Onko oikein sanoa esimerkiksi, että prosessori, jossa on neljä ydintä joka toimii 3GHz: ssä, on itse asiassa prosessori, joka toimii 12 GHz: ssä?
Sain kerran "Mac vs. PC" argumentin (joka muuten ei ole tämän aiheen keskipiste ..., joka oli takaisin keski-koulussa) ja tuttavan, joka vaati, että Mac-tietokoneita mainostettiin vain 1Ghz-koneina, -processor G4: t, jotka kulkevat kukin 500 MHz: n välein.
Tuolloin tiesin, että tämä on hogwash syistä, jotka mielestäni ovat ilmeisiä useimmille ihmisille, mutta sain vain kommentoida tätä verkkosivustoa vaikutuksesta "6 ytimet x 0.2GHz = 1.2Ghz" ja sai minut ajattelemaan uudelleen, onko siellä on todellinen vastaus tähän.
Joten tämä on enemmän tai vähemmän filosofinen / syvällinen tekninen kysymys kellotaajuuslaskennan semantikasta. Näen kaksi mahdollisuutta:
- Jokainen ydin itse asiassa tekee x laskutoimituksia sekunnissa, joten laskelmien kokonaismäärä on x (ytimet).
- Kellon nopeus on pikemminkin laskenta niiden prosessien määrästä, joita prosessori kulkee toisessa tilassa, niin kauan kuin kaikki ytimet toimivat samalla nopeudella, jokaisen kellojakson nopeus pysyy samana riippumatta siitä, kuinka monta ytimenä on . Toisin sanoen, Hz = (ydin1Hz + ydin2Hz + ...) / ytimet.
Joten mikä on sopiva tapa ilmoittaa kokonaisnopeuden ja, mikä tärkeintä, on jopa mahdollista käyttää yhden ytimen nopeuden nimikkeistöä monijärjestelmässä?
SuperUser-avustajat Mokubai auttaa selkeitä asioita. Hän kirjoittaa:
Tärkein syy siihen, miksi nelisuuntainen 3GHz -prosessori ei ole koskaan yhtä nopea kuin 12 GHz: n yksittäinen ydin, on se, miten prosessissa suoritettu tehtävä toimii, eli yksi- tai monisäikeinen. Amdahlin laki on tärkeä, kun tarkastellaan suorittamiesi tehtävien tyyppiä.
Jos sinulla on tehtävä, joka on luonnostaan lineaarinen ja se on tehtävä tarkasti vaiheittain, kuten (melko yksinkertainen ohjelma)
10: a = a + 1
20: goto 10
Sitten tehtävä riippuu pitkälti edellisen passin tuloksesta, eikä se pysty käyttämään useita kopioita itseään vahingoittamatta arvoa
'A'
koska jokainen kopio saisi arvon'A'
eri aikoina ja kirjoittaa sen takaisin eri tavalla. Tämä rajoittaa tehtävän yhteen lankaan ja siten tehtävä voi olla vain yhden ytimen käytössä milloin tahansa, jos se ajetaan useilla ytimillä, jolloin synkronointi korruptio tapahtuisi. Tämä rajoittaa puoleen kaksoisjärjes- telmän keskusyksikköä tai 1/4 quad core -järjestelmää.Tee 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ä rivejä ovat itsenäisiä ja ne voidaan jakaa neljään erilliseen ohjelmaan, kuten ensimmäiseen ja samaan aikaan, joista jokainen pystyy hyödyntämään tehokkaasti yhtä ydintä, ilman mitään synkronointiongelmia, tässä Amdahlin laki tulee siihen.
Joten jos sinulla on yksi kierretty sovellus, joka tekee raa'an voimanlaskennan, yksi 12 GHz: n prosessori voittaa kädet alas, jos voit jotenkin tehdä tehtävän jakautua erillisiksi osiksi ja monisäikeisiin sitten 4 ytimet voisivat tulla lähelle, mutta eivät melko päästä, sama suorituskyky, kuten Amdahlin lain mukaan.
Tärkeintä, että monen prosessorin järjestelmä antaa sinulle on reagointikyky. Yhdessä ydinkoneessa, joka työskentelee kovaa, järjestelmä voi tuntua hitaalta, kun suurin osa ajasta voidaan käyttää yksi tehtävä ja muut tehtävät suoritetaan vain lyhyen purskeen välillä suuremman tehtävän, mikä johtaa järjestelmään, joka näyttää hitaalta tai juddery . Monijärjestelmässä raskas tehtävä saa yhden ytimen, ja kaikki muut tehtävät toimivat muiden ytimien kanssa, tekevät töitä nopeasti ja tehokkaasti.
"6 ytimen x 0.2GHz = 1.2GHz" argumentti on roskaa kaikissa tilanteissa, paitsi jos tehtävät ovat täysin rinnakkaisia ja riippumattomia. On olemassa useita tehtäviä, jotka ovat hyvin rinnakkaisia, mutta ne vaativat vielä jonkinlaista synkronointia. Käsijarru on video-trancoder, joka on erittäin hyvä kaikkien käytettävissä olevien prosessorien käyttämisessä, mutta se vaatii ydinprosessia pitämään muut kierteet täynnä tietoja ja keräävät tiedot, joita ne ovat tehneet.
- Jokainen ydin itse asiassa tekee x laskutoimituksia sekunnissa, joten laskelmien kokonaismäärä on x (ytimet).
Jokainen ydin pystyy tekemään x laskutoimituksia sekunnissa, olettaen, että työmäärä on sopiva rinnakkainen, lineaarisella ohjelmalla, jolla kaikilla on 1 ydin.
- Kellon nopeus on pikemminkin laskenta niiden prosessien määrästä, joita prosessori kulkee toisessa tilassa, niin kauan kuin kaikki ytimet toimivat samalla nopeudella, jokaisen kellojakson nopeus pysyy samana riippumatta siitä, kuinka monta ytimenä on . Toisin sanoen, Hz = (ydin1Hz + ydin2Hz + ...) / ytimet.
Mielestäni on väärää ajatella, että 4 x 3GHz = 12 GHz, myönnetty matematiikka toimii, mutta vertaat omenat appelsiineihin ja summat eivät ole oikein, GHz: tä ei voida yksinkertaisesti lisätä yhteen joka tilanteessa. Vaihdan sen 4 x 3GHz = 4 x 3GHz.
Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.