15Aug

Cum calculați viteza procesorului pe procesoare cu mai multe nuclee?

click fraud protection

Apariția procesoarelor economice multi-core pentru consumatori ridică problema pentru mulți utilizatori: cum puteți calcula în mod eficient viteza reală a unui sistem multi-core? Este un sistem 3Ghz de 4 nuclee cu adevărat de 12Ghz? Citiți-ne pe măsură ce investigăm.

Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare de comunicații cu unitățile de comunicații Q & A.

Întrebarea

SuperUser cititor NReilingh a fost curios cum să viteza procesorului pentru un sistem multi-core este de fapt calculat:

Este corect să spun, de exemplu, că un procesor cu patru nuclee fiecare care rulează la 3GHz este de fapt un procesor care ruleazăla 12GHz?

Am intrat odată într-un argument "Mac vs. PC"( care, prin modul în care NU este punctul central al acestui subiect. .. care a fost din nou la școala medie), cu o cunoștință care insista că Mac-urile erau doar publicate ca mașini 1Ghzprocesoare G4 cu fiecare procesor care rulează la 500MHz.

instagram viewer

La acea vreme am stiut ca acest lucru este o prostie din motive pe care cred ca sunt evidente pentru majoritatea oamenilor, dar am vazut doar un comentariu pe acest site cu efectul "6 nuclee x 0.2GHz = 1.2Ghz" si asta ma pus sa ma gandesc din nou ladacă există un răspuns real la acest lucru.

Deci, aceasta este o întrebare mai mult sau mai puțin tehnică filosofică / profundă despre semantica calculului vitezei ceasului. Vad două posibilități:

  1. Fiecare nucleu face de fapt x calcule pe secundă, astfel numărul total de calcule este x( nuclee).
  2. Viteza ceasului este mai degrabă un număr al numărului de cicluri pe care procesorul le trece în interval de o secundă, atâta timp cât toate nucleele funcționează cu aceeași viteză, viteza fiecărui ciclu de ceas rămâne aceeași indiferent de numărul de nucleeexista. Cu alte cuvinte, Hz =( core1Hz + core2Hz +. ..) / nuclee.

Deci, care este modalitatea adecvată de a indica viteza totală a ceasului și, mai important, este chiar posibil să se utilizeze o nomenclatură de viteză cu un singur nucleu pe un sistem multi-core?

Răspunsul contribuabililor

SuperUser Mokubai ajută la clarificarea lucrurilor. El scrie:

Principalul motiv pentru care un procesor quad-core 3GHz nu este niciodată la fel de rapid ca un singur nucleu de 12GHz este de a face cu modul în care funcționează sarcina care rulează pe acel procesor, și anume un singur filet sau multi-filetat. Legea lui Amdahl este importantă în luarea în considerare a tipurilor de sarcini pe care le executați.

10: a = a + 1 20: ajunge la 10

Apoi, sarcina depinde foarte mult de rezultatuldin trecerea anterioară și nu poate rula mai multe copii ale acesteia fără a corupe valoarea "a", deoarece fiecare copie ar obține valoarea "a" la momente diferite și o va scrie înapoi diferit. Acest lucru restricționează sarcina la un fir unic și, astfel, sarcina poate fi executată vreodată pe un singur nucleu la un moment dat, dacă ar fi rulat pe mai multe nuclee atunci s-ar produce corupția de sincronizare. Acest lucru se limitează la 1/2 din puterea CPU a unui sistem dual core, sau 1/4 într-un sistem quad core.

Acum luați o sarcină cum ar fi:

10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50:să fie împărțite în 4 programe distincte ca prima și să ruleze în același timp, fiecare capabil să utilizeze eficient puterea completă a uneia dintre nuclee fără nici o problemă de sincronizare, aici intră Legea lui Amdahl.

Deci, dacă aveți o singură aplicație cu filet care face calcule de forță brute, singurul procesor de 12GHz ar câștiga mâinile în jos, dacă puteți face cumva sarcina împărțită în părți separate și cu mai multe filet, atunci cele 4 nuclee ar putea să vină aproape,, aceeași performanță, conform legii lui Amdahl.

Principalul lucru pe care îl oferă un sistem cu mai multe CPU-uri este receptivitatea. Pe o mașină cu un singur nucleu care lucrează din greu, sistemul poate părea lent, deoarece cele mai multe ori ar putea fi utilizate de o singură sarcină, iar celelalte sarcini se execută doar în scurte explozii între sarcina mai mare, rezultând un sistem care pare lent sau jalnic. Pe un sistem multi-core sarcina grea devine un nucleu și toate celelalte sarcini se joacă pe celelalte nuclee, făcând locurile lor de muncă rapid și eficient.

Argumentul "6 nuclee x 0.2GHz = 1.2Ghz" este gunoi în orice situație, cu excepția cazurilor în care sarcinile sunt perfect paralele și independente. Există un număr mare de sarcini care sunt foarte paralele, dar ele necesită încă o formă de sincronizare. Frâna de mână este un transcoder video care este foarte bun la utilizarea tuturor procesoarelor disponibile, dar necesită un proces central pentru a păstra celelalte fire pline cu date și pentru a colecta datele cu care sunt realizate.

  1. Fiecare nucleu face de fapt x calcule pe secundă, astfel numărul total de calcule este x( nuclee).

Fiecare nucleu este capabil să facă x calcule pe secundă, presupunând că volumul de lucru este adecvat paralel, pe un program liniar, tot ce ai este de 1 nucleu.

  1. Viteza ceasului este mai degrabă un număr al numărului de cicluri pe care procesorul le trece în interval de o secundă, atâta timp cât toate nucleele funcționează cu aceeași viteză, viteza fiecărui ciclu de ceas rămâne aceeași indiferent de câte nucleeexista. Cu alte cuvinte, Hz =( core1Hz + core2Hz +. ..) / nuclee.

Cred că este o eroare să credem că 4 x 3GHz = 12GHz, a acordat lucrările de matematică, dar comparați mere cu portocale și sumele nu sunt corecte, GHz nu pot fi adăugate împreună pentru fiecare situație. Aș schimba la 4 x 3GHz = 4 x 3GHz.

Trebuie să adăugați ceva la explicație? Sunați în comentariile. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.