Kako izračunati brzinu procesora na procesorima s više jezgri?
Pojava ekonomičnih potrošačkih višejezgrenih procesora postavlja pitanje mnogim korisnicima: kako učinkovito izračunati stvarnu brzinu multi-core sustava? Je li 4-jezgreni 3Ghz sustav stvarno 12Ghz? Čitajte dalje dok istražujemo.
Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupne grupacije web-lokacija s pitanjima i odgovorima..
Pitanje
SuperUser čitač NReilingh bio je znatiželjan kako se brzina procesora za multi-core sustav zapravo izračunava:
Je li ispravno reći, primjerice, da je procesor s četiri jezgre koji rade na 3GHz zapravo procesor koji radi na 12GHz?
Jednom sam dobio u "Mac vs PC" argument (koji usput nije fokus ove teme ... koji je bio natrag u srednjoj školi) s poznanikom koji je inzistirao da Macovi se samo reklamirao kao 1Ghz strojeva jer su bili dvojni Procesor G4s svaki radi na 500 MHz.
U to vrijeme sam znao da je to glupost zbog razloga za koje mislim da su očigledni većini ljudi, ali upravo sam vidjela komentar na ovoj web-stranici na "6 jezgri x 0.2GHz = 1.2Ghz" i to me natjeralo da ponovo razmislim o tome da li postoji pravi odgovor na to.
Dakle, ovo je više ili manje filozofsko / duboko tehničko pitanje o semantici izračunavanja brzine takta. Vidim dvije mogućnosti:
- Svaka jezgra zapravo radi x kalkulacije u sekundi, tako da je ukupan broj izračuna x (jezgre).
- Brzina takta je brojanje broja ciklusa kroz koje procesor prolazi u razmaku od sekunde, tako da sve dok jezgre rade istom brzinom, brzina svakog taktnog ciklusa ostaje ista bez obzira na to koliko jezgri postoje. , Drugim riječima, Hz = (core1Hz + core2Hz +…) / jezgre.
Dakle, što je prikladan način da se označi ukupna brzina takta i, što je još važnije, je li moguće koristiti jednojezgrenu nomenklaturu brzine na višejezičnom sustavu?
Odgovor
Suradnici superkorisnika Mokubai pomaže razjasniti stvari. Piše:
Glavni razlog zašto četverojezgreni 3GHz procesor nikad nije tako brz kao 12GHz s jednim jezgrom je povezan s načinom rada zadatka na tom procesoru, tj. S jednim navojem ili s više navoja. Amdahlov zakon važan je kada se razmatraju vrste zadataka koje vodite.
Ako imate zadatak koji je inherentno linearan i mora se obaviti točno korak po korak, kao što je (vrlo jednostavan program)
10: a = a + 1
20: goto 10
Tada zadatak ovisi o rezultatu prethodnog prijelaza i ne može pokrenuti više kopija same sebe bez oštećenja vrijednosti
'A'
jer bi svaka kopija dobivala vrijednost'A'
u različito vrijeme i drugačije pisati. To ograničava zadatak na jednu nit i stoga zadatak može biti pokrenut samo na jednoj jezgri u bilo kojem trenutku, ako bi se izvodio na više jezgri, tada bi došlo do oštećenja sinkronizacije. To ga ograničava na 1/2 snage CPU-a sustava s dvostrukom jezgrom ili 1/4 u sustavu s četiri jezgre.Sada poduzmite zadatak kao što je:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Sve te linije su neovisne i mogu se podijeliti u 4 odvojena programa kao što su prvi i pokrenuti u isto vrijeme, a svatko može učinkovito iskoristiti punu snagu jedne od jezgri bez problema sinkronizacije, to je mjesto gdje Amdahlov zakon dolazi u nju.
Dakle, ako imate jednu navojnu aplikaciju koja radi izračune brutalne sile, jedan procesor od 12 GHz će osvojiti ruke, ako nekako možete podijeliti zadatak u zasebne dijelove i višestruke, a onda bi se 4 jezgre mogle približiti, ali ne sasvim. isti učinak, prema zakonu Amdahla.
Glavna stvar koju vam višestruki CPU sustav daje je brzina odziva. Na stroju s jednom jezgrom, koji naporno radi, sustav može izgledati trom, jer se većinu vremena može koristiti jedan zadatak, a ostali zadaci se pokreću samo u kratkom rasponu između većeg zadatka, što rezultira sustavom koji se čini tromim ili drskim , Na multi-core sustavu teška zadaća dobiva jednu jezgru i svi ostali zadaci igraju se na drugim jezgrama, rade svoj posao brzo i učinkovito.
Argument “6 jezgri x 0.2GHz = 1.2Ghz” je smeće u svakoj situaciji, osim kada su zadaci savršeno paralelni i neovisni. Postoji veliki broj zadataka koji su vrlo paralelni, ali još uvijek zahtijevaju neki oblik sinkronizacije. Ručna kočnica je video trancoder koji je vrlo dobar u korištenju svih dostupnih CPU-ova, ali zahtijeva temeljni proces kako bi ostale niti ispunili podacima i prikupili podatke s kojima su.
- Svaka jezgra zapravo radi x kalkulacije u sekundi, tako da je ukupan broj izračuna x (jezgre).
Svaka jezgra može izvršiti kalkulacije u sekundi, pod pretpostavkom da je opterećenje prikladno paralelno, na linearnom programu sve što imate je 1 jezgra.
- Brzina takta je brojanje broja ciklusa kroz koje procesor prolazi u razmaku od sekunde, tako da sve dok jezgre rade istom brzinom, brzina svakog taktnog ciklusa ostaje ista bez obzira na to koliko jezgri postoje. , Drugim riječima, Hz = (core1Hz + core2Hz +…) / jezgre.
Mislim da je pogrešno misliti da 4 x 3GHz = 12GHz, ako se radi o matematičkim radovima, ali uspoređujete jabuke s narančama i sume jednostavno nisu u redu, GHz se ne može jednostavno zbrojiti za svaku situaciju. Ja bih ga promijeniti na 4 x 3GHz = 4 x 3GHz.
Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.