15Aug

Miten lasketaan prosessorin nopeus monen ytimen prosessoreilla?

Taloudellisten kuluttajalähtöisten monisäikeisten prosessorien tuottaminen 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 &Vastausistunto tulee meille SuperUser-palvelun kautta, joka on Stack Exchange -jakauma, Q & A-sivustojen yhteisöjoukkoyhdistelmä.

Kysymys

SuperUser-lukija NReilingh oli utelias kuinka monen ydinjärjestelmän prosessorin nopeus todella lasketaan:

Onko oikein sanoa esimerkiksi, että prosessori, jossa on neljä ydintä joka toimii 3GHz: ssä, on itse asiassa prosessori käynnissä12GHz: ssä?

Otin kerran "Mac vs. PC" argumentin( joka muuten ei ole tämän aiheen keskipiste. .., joka oli takaisin keskiasteella) kanssa tuttavan, joka vaati, että Macia mainostettiin vain 1Ghz-koneina, koska ne olivatkaksimoottoriset G4: t, jotka toimivat kukin 500MHz: ssä.

Tuolloin tiesin, että tämä on hogwash syistä, jotka mielestäni ovat ilmeisiä useimmille ihmisille, mutta sain vain kommentoida tätä verkkosivustoa vaikutus "6 ytimet x 0.2GHz = 1.2Ghz" ja että sai minut ajattelemaan uudelleenonko olemassa todellista vastausta tähän.

Joten tämä on enemmän tai vähemmän filosofinen / syvällinen tekninen kysymys kellotaajuuslaskennan semanttista. Näen kaksi mahdollisuutta:

  1. Jokainen ydin itse asiassa tekee x laskutoimituksia sekunnissa, joten laskelmien kokonaismäärä on x( ytimet).
  2. Kellonopeus on pikemminkin määrä syklien lukumääristä, jonka prosessori kulkee toisessa tilassa, niin kauan kuin kaikki ytimet toimivat samalla nopeudella, jokaisen kellojakson nopeus pysyy samana riippumatta siitä, kuinka monta ytimenäolla olemassa. Toisin sanoen, Hz =( ydin1Hz + ydin2Hz +. ..) / ytimet.

Joten mikä on oikea tapa merkitä kokonaisnopeuden kestoa ja, mikä tärkeintä, on jopa mahdollista käyttää yhden ytimen nopeuden nimikkeistöä monijärjestelmässä?

Vastaus

SuperUser-avustajat Mokubai auttaa selvittämään 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 suoritin suoritetaan kyseisellä prosessorilla, 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 askel askeleelta kuten( melko yksinkertainen ohjelma)

10: a = a + 1 20: goto 10

Sitten tehtävä riippuu erittäin tuloksestaedellisestä läpäisystä ja ei voi suorittaa useita kopioita itsestään ilman 'a': n arvoa, 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ä rivit ovat riippumattomiajakaa neljä erillistä ohjelmaa, kuten ensimmäinen ja ajaa samanaikaisesti, jokainen pystyy käyttämään tehokkaasti yhden ydinvoiman täysiä voimia ilman synkronointiongelmia. Siellä Amdahlin laki tulee siihen.

Joten jos sinulla on yksi kierretty sovellus tehdä raakavirtalaskelmia yksi 12 GHz prosessori voittaa kädet alas, jos voit jotenkin tehdä tehtävä jakaa erillisiä osia ja monisäikeinen sitten 4 ytimet voisivat tulla lähellä, mutta ei aivan päästä, sama suorituskyky, kuten Amdahlin lain mukaan.

Päätehtävä, jonka moniprosessorijä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.

  1. 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 rinnakkain, lineaarisella ohjelmalla, jolla kaikilla on 1 ydin.

  1. Kellonopeus on pikemminkin määrä syklien lukumääristä, jonka prosessori kulkee toisessa tilassa, niin kauan kuin kaikki ytimet toimivat samalla nopeudella, kunkin kellojakson nopeus pysyy samana riippumatta siitä, kuinka monta ytintäolla olemassa. 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 tilanteeseen. Vaihdan sen 4 x 3GHz = 4 x 3GHz.

Onko sinulla jotain lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.