Domača » kako » Kako izračunate hitrost procesorja na večjedrnih procesorjih?

    Kako izračunate hitrost procesorja na večjedrnih procesorjih?

    Pojav ekonomičnih potrošniških večjedrnih procesorjev postavlja vprašanje številnim uporabnikom: kako učinkovito izračunate dejansko hitrost večjedrnega sistema? Ali je 4-jedrni 3Ghz sistem res 12Ghz? Beri naprej, ko raziskujemo.

    Današnja seja vprašanj in odgovorov prihaja z namenom SuperUser-a, ki je del skupine Stack Exchange, ki združuje skupino spletnih mest za vprašanja in odgovore.

    Vprašanje

    Bralnik SuperUser NReilingh je bil radoveden, kako se izračuna hitrost procesorja za večjedrni sistem:

    Ali je pravilno reči, na primer, da je procesor s štirimi jedri, ki teče na 3GHz, dejansko procesor, ki deluje na 12GHz?

    Nekoč sem se sprijaznil z argumentom »Mac vs. PC« (ki mimogrede NI osredotočen na to temo ... ki se je vrnila v srednjo šolo) z znancem, ki je vztrajal, da so bili Macovi oglaševani samo kot stroji z 1GHz, ker so bili dvojni Procesor G4s deluje na 500MHz.

    Takrat sem vedel, da je to hogwash iz razlogov, za katere menim, da so očitni večini ljudi, toda na tej spletni strani sem videl komentar o učinku »6 jeder x 0.2GHz = 1.2Ghz«, zaradi česar sem spet razmišljal o tem, ali na to je pravi odgovor.

    Torej je to bolj ali manj filozofsko / globoko tehnično vprašanje o semantiki izračuna hitrosti ure. Vidim dve možnosti:

    1. Vsako jedro dejansko opravlja x izračune na sekundo, tako da je skupno število izračunov x (jedra).
    2. Hitrost ura je precej število ciklov, ki jih procesor opravi v sekundi, tako da dokler se vse jedra tečejo z enako hitrostjo, ostane hitrost vsakega cikla enaka, ne glede na to, koliko jedra obstaja. . Z drugimi besedami, Hz = (core1Hz + core2Hz +…) / jedra.

    Torej, kaj je ustrezen način za označevanje skupne hitrosti ura in, kar je še pomembneje, ali je celo mogoče uporabiti eno jedro nomenklature hitrosti na večjedrnem sistemu?

    Odgovor

    Sodelavci SuperUser Mokubai pomaga razjasniti stvari. On piše:

    Glavni razlog, zakaj quad-core 3GHz procesor ni nikoli tako hiter kot 12GHz eno jedro, je povezan s tem, kako deluje naloga na tem procesorju, tj. Enojna ali večnitna. Amdahlov zakon je pomemben pri obravnavanju vrst nalog, ki jih izvajate.

    Če imate nalogo, ki je sama po sebi linearna in jo morate opraviti natančno po korakih, kot je (zelo preprost program)

    10: a = a + 1
    20: goto 10 

    Nato je naloga zelo odvisna od rezultata prejšnjega prehoda in ne more zagnati več kopij samega sebe, ne da bi poškodovala vrednost "a" ker bi vsaka kopija dobila vrednost "a" v različnih časih in drugače pisno. To omejuje nalogo na eno nit in tako lahko nalogo naenkrat izvajate samo na enem jedru, če se bo izvajala na večih jedrih, se bo zgodila poškodba sinhronizacije. To omejuje na 1/2 moči procesorja sistema z dvojnim jedrom ali 1/4 v sistemu štirih jeder.

    Zdaj opravite nalogo, kot je:

    10: a = a + 1
    20: b = b + 1
    30: c = c + 1
    40: d = d + 1
    50: goto 10 

    Vse te linije so neodvisne in jih je mogoče razdeliti na 4 ločene programe, kot je prvi, in teči ob istem času, vsak od njih pa lahko učinkovito izkoristi polno moč enega od jeder brez kakršnega koli problema sinhronizacije. pride v to.

    Torej, če imate eno navojno aplikacijo, ki opravlja brutalne izračune, bo en sam procesor z 12 GHz zmagal v rokah, če lahko nekako naredite nalogo razdeljeno na ločene dele in večnitne, potem bi lahko 4 jedra prišla blizu, vendar ne povsem, enako uspešnost, kot je po zakonu Amdahl.

    Glavna stvar, ki vam jo daje sistem z več procesorji, je odzivnost. Na enem samem jedru, ki trdo dela, se lahko zdi sistem počasen, saj je večino časa mogoče uporabiti z eno nalogo, druge naloge pa se izvajajo le v kratkem obdobju med večjo nalogo, kar povzroči počasen sistem . Na večjedrnem sistemu težka naloga dobi eno jedro in vse druge naloge se igrajo na drugih jedrih, hitro in učinkovito opravljajo svoje delo..

    Argument »6 jeder x 0.2GHz = 1.2Ghz« je smeti v vseh situacijah, razen kadar so naloge povsem vzporedne in neodvisne. Obstaja veliko število nalog, ki so zelo vzporedne, vendar še vedno zahtevajo neko obliko sinhronizacije. Ročna zavora je video trancoder, ki zelo dobro uporablja vse razpoložljive procesorje, vendar pa potrebuje temeljni proces, ki ohranja druge niti, ki so napolnjene s podatki, in zbira podatke, s katerimi so opravljene..

    1. Vsako jedro dejansko opravlja x izračune na sekundo, tako da je skupno število izračunov x (jedra).

    Vsako jedro je sposobno izvesti x izračune na sekundo, ob predpostavki, da je delovna obremenitev primerna vzporedno, na linearnem programu je vse, kar imate, eno jedro..

    1. Hitrost ura je precej število ciklov, ki jih procesor opravi v sekundi, tako da dokler se vse jedra tečejo z enako hitrostjo, ostane hitrost vsakega cikla enaka, ne glede na to, koliko jedra obstaja. . Z drugimi besedami, Hz = (core1Hz + core2Hz +…) / jedra.

    Mislim, da je zmotno misliti, da 4 x 3GHz = 12GHz, podeljeno matematiki dela, vendar primerjate jabolka z pomarančami in zneski niso prav, GHz ne moremo preprosto dodati za vsako situacijo. Jaz bi ga spremeniti na 4 x 3GHz = 4 x 3GHz.

    Imate kaj dodati pojasnilu? Zvok izključen v komentarjih. Želite prebrati več odgovorov drugih uporabnikov tehnologije Stack Exchange? Oglejte si celotno nit razprave tukaj.