15Aug
Prihajajoči ekonomični potrošniški razredi večjedrnih procesorjev postavlja vprašanje za mnoge uporabnike: kako dejansko izračunate dejansko hitrost večjezičnega sistema? Je 4-core 3Ghz sistem resnično 12GHz? Nadaljujte, ko bomo raziskali.
Današnje vprašanje &S sejo odgovora prihaja uporabnost SuperUserja - razdelitev Stack Exchange, skupinske pogonske skupine spletnih mest Q & .
Vprašalnik
SuperUser bralnik NReilingh je bil radoveden, kako se dejansko izračuna hitrost procesorja za večjezični sistem:
Ali je pravilna reči, na primer, da je procesor s štirimi jedri, ki se izvajajo pri 3GHz, v resnici procesor, ki tečepri 12GHz?
Nekoč sem prišel v argument "Mac vs. PC"( ki je mimogrede NE v središču te teme. .., ki se je vrnil v srednji šoli) s poznavalcem, ki je vztrajal, da so se Macs oglaševali samo kot 1Ghz stroji, ker so biliDual-procesor G4, ki se izvajajo pri 500 MHz.
V času, ko sem vedel, da je to bežanje iz razlogov, za katere mislim, da so očitne večini ljudi, vendar sem na tej spletni strani videl komentar na učinek "6 jeder x 0.2GHz = 1.2Ghz" in sem spet razmišljal o temali obstaja pravi odgovor na to.
Torej, to je bolj ali manj filozofsko / globoko tehnično vprašanje o semantiki izračuna hitrosti. Vidim dve možnosti:
- Vsako jedro dejansko počne x izračune na sekundo, zato je skupno število izračunov x( jedra).
- Hitrost ura je precej število števila ciklov, ki jih procesor poteka v prostoru sekunde, tako da dokler vsa jedra tečejo z isto hitrostjo, hitrost vsakega ura cikla ostane enaka ne glede na to, koliko je jederobstajajo. Z drugimi besedami, Hz =( core1Hz + core2Hz +. ..) / jedra.
Kakšen je torej ustrezen način označevanja skupne hitrosti uro in, kar je še pomembneje, ali je mogoče enostransko hitrostno nomenklaturo uporabljati v večjedrnem sistemu?
Odzivniki
SuperUser, ki prispevajo Mokubai, pomagajo razčistiti stvari. Piše:
Glavni razlog, zakaj quad-core 3GHz procesor nikoli ni tako hiter, kot jedro 12 GHz, je povezano s tem, kako deluje naloga, ki deluje na tem procesorju, to je enojni ali večkanalni. Amdahlov zakon je pomemben pri obravnavanju vrst nalog, ki jih izvajate.
Če imate nalogo, ki je po naravi linearna in jo je treba natančno narediti korak za korakom, kot je( precej preprost program)
10: a = a + 1 20: goto 10Nato je naloga zelo odvisna od rezultataprejšnjega prehoda in ne more zagnati več kopij samega sebe, ne da bi poškodovali vrednost "a", ker bi vsaka kopija v drugačnem času dobila vrednost "a" in jo napisala drugače. To omejuje nalogo na eno nit in zato se lahko naloga kadarkoli izvaja samo v enem jedru v katerem koli trenutku, če bi delovala na več jedrih, potem bi se sinhronizacijska korupcija zgodila. To omejuje na 1/2 moči CPU sistema z dvojnim jedrom ali 1/4 v sistemu štirih jeder.
Zdaj opravite nalogo, kot so:
10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10Vse te vrstice so neodvisne in lahkobiti razdeljeni v 4 ločene programe, kot so prvi in hkrati zagnani, vsakdo lahko učinkovito izkoristi polno moč enega od jeder brez kakršnekoli težave s sinhronizacijo, to je, če pride Amdahlov zakon vanj.
Torej, če imate aplikacijo z enim navojem, ki opravlja izračun brutalnega sila, bi en sam procesor na 12 GHz zmagal roke, če lahko nekako delite nalogo na ločene dele in več nitke, potem bi se lahko 4 jedra približala,, enaka uspešnost, kot na Amdahlov zakon.
Glavna stvar, ki vam jo daje sistem z več CPU, je odzivnost. Na enosmernem računalniku, ki deluje trdo, se lahko zdi, da je sistem počasen, saj lahko večino časa uporablja eno nalogo, druge naloge pa se izvajajo samo v kratkih urah med večjo nalogo, kar ima za posledico sistem, ki se zdi počasen ali juddery. V multi-jedrnem sistemu težka naloga postane eno jedro in vse druge naloge igrajo na drugih jedrih, opravljajo svoje delo hitro in učinkovito.
Argument "6 jedra x 0.2GHz = 1.2Ghz" je odpadek v vsaki situaciji, razen kjer so naloge povsem vzporedne in neodvisne. Obstaja veliko število nalog, ki so zelo vzporedne, vendar še vedno zahtevajo določeno obliko sinhronizacije. Ročna zavora je video transkoder, ki je zelo dober pri uporabi vseh razpoložljivih procesorjev, vendar potrebuje osrednji proces, da ostanejo druge niti napolnjene s podatki in zbirajo podatke, s katerimi se izvajajo.
- Vsako jedro dejansko počne x izračune na sekundo, zato je skupno število izračunov x( jedra).
Vsako jedro lahko naredi x izračune na sekundo, ob predpostavki, da je delovna obremenitev primerna vzporedno, pri linearnem programu, ki ga imate, je eno jedro.
- Hitrost ura je precej število števila ciklov, ki jih procesor prehaja v sekundo, tako da dokler vsa jedra tečejo z isto hitrostjo, hitrost vsakega ura cikla ostane enaka ne glede na to, koliko je jederobstajajo. Z drugimi besedami, Hz =( core1Hz + core2Hz +. ..) / jedra.
Mislim, da je zamisel, da mislim, da je 4 x 3GHz = 12 GHz, dodeljena matematiki deluje, vendar pa primerjate jabolka s pomarančami in zneski pravkar niso prav, GHz ni mogoče enostavno dodati skupaj za vsako situacijo. Spremenil bi ga na 4 x 3GHz = 4 x 3GHz.
Ali želite dodati nekaj pojasnila? Zvok v komentarjih.Želite prebrati več odgovorov od drugih uporabniških članov stack Exchange? Oglejte si celotno temo za razpravo tukaj.