Pagina principala » HOWTO » Cum calculați viteza procesorului pe procesoare multi-core?

    Cum calculați viteza procesorului pe procesoare multi-core?

    Apariția unor procesoare 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 mai departe pe măsură ce investigăm.

    Sesiunea de întrebări și răspunsuri din ziua de azi vine de la amabilitatea programului SuperUser - o subdiviziune a Stack Exchange, o grupare de comunicații pe site-uri web Q & A.

    Intrebarea

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

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

    Apoi am intrat într-un argument "Mac vs. PC" (care, prin modul NU este punctul central al acestui subiect ... care a fost din nou în școala de mijloc), cu o cunoștință care insista că Mac-urile erau doar publicate ca mașini 1Ghz, -procesoarele G4 fiecare funcționând la 500MHz.

    În momentul în care am știut că acest lucru este de vânt, din motive pe care cred că sunt evidente pentru majoritatea oamenilor, dar am văzut doar un comentariu pe acest site cu efectul "6 nuclee x 0.2GHz = 1.2Ghz" și asta ma făcut să mă gândesc din nou există un răspuns real la acest lucru.

    Deci, aceasta este o întrebare mai mult sau mai puțin filosofică / profundă tehnică despre semantica calculului vitezei ceasului. Văd 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 le trece procesorul în decurs de 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 nuclee există . 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 folosească nomenclatura de viteză cu un singur nucleu pe un sistem multi-core?

    Răspunsul

    Contribuabili 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.

    Dacă aveți o sarcină care este în mod inerent liniară și trebuie făcută exact pas cu pas, cum ar fi (un program foarte simplu)

    10: a = a + 1
    20: Ai ajuns la 10 

    Apoi, sarcina depinde foarte mult de rezultatul pasului anterior și nu poate rula mai multe copii de la sine fără a corupe valoarea 'A' deoarece fiecare exemplar ar obține valoarea 'A' la momente diferite și scrierea înapoi în mod diferit. Acest lucru restrânge 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 ia o sarcină, cum ar fi:

    10: a = a + 1
    20: b = b + 1
    30: c = c + 1
    40: d = d + 1
    50: Ai ajuns la 10 

    Toate aceste linii sunt independente și ar putea fi împărțite în 4 programe separate, cum ar fi primul și executați în același timp, fiecare capabil să utilizeze eficient puterea completă a uneia dintre nuclee fără nici o problemă de sincronizare, aici este cazul Legii lui Amdahl intră în ea.

    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 multi-filetate apoi cele 4 nuclee ar putea veni aproape, dar nu destul de ajunge, 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 folosite de o singură sarcină, iar celelalte sarcini se execută doar în scurte explozii între sarcina mai mare, ducând la un sistem care pare lent sau jalnic . Pe un sistem multi-core sarcina grea devine un nucleu si toate celelalte sarcini se joaca pe celelalte nuclee, facand locurile de munca rapid si 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 trancoder video care este foarte bun la utilizarea tuturor CPU-urilor disponibile, dar necesită un proces central pentru a păstra celelalte fire pline cu date și pentru a colecta datele pe care le-au făcut cu.

    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 pe care îl aveți este de 1 core.

    1. Viteza ceasului este mai degrabă un număr al numărului de cicluri pe care le trece procesorul în decurs de 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 nuclee există . 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 merele cu portocalele, iar sumele nu sunt corecte, GHz nu poate fi adăugat împreună pentru fiecare situație. Aș schimba la 4 x 3GHz = 4 x 3GHz.

    Aveți ceva de adăugat 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.