If-Koubou

De ce toate nucleele CPU au aceeași viteză în loc de altele?

De ce toate nucleele CPU au aceeași viteză în loc de altele? (Cum să)

Dacă ați făcut vreodată cumpărături comparative pentru un nou CPU, este posibil să fi observat că toate nucleele par a avea viteza mai degrabă decât o combinație de diferite. De ce este asta? Postarea de astăzi SuperUser Q & A are răspunsul la o întrebare curioasă a cititorului.

Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor Q & A.

Intrebarea

Utilizatorul SuperUser Jamie vrea să știe de ce toate nucleele procesorului au aceeași viteză în loc de altele diferite:

În general, dacă cumpărați un computer nou, ați determina ce procesor să cumpărați pe baza volumului de lucru preconizat pentru computer. Performanța în jocurile video tinde să fie determinată de o viteză unică de bază, în timp ce aplicațiile cum ar fi editare video sunt determinate de numărul de nuclee. În ceea ce privește ceea ce este disponibil pe piață, toate procesoarele par să aibă aproximativ aceeași viteză, principalele diferențe fiind mai multe fire sau mai multe nuclee.

De exemplu:

  • Intel Core i5-7600K, frecvență de bază 3,80 GHz, 4 nuclee, 4 fire
  • Intel Core i7-7700K, frecvență de bază 4.20 GHz, 4 nuclee, 8 fire
  • AMD Ryzen 5 1600X, frecvență de bază 3,60 GHz, 6 nuclee, 12 fire
  • AMD Ryzen 7 1800X, frecvență de bază 3,60 GHz, 8 nuclee, 16 fire

De ce vedem acest tipar de miez crescând, dar toate nucleele au aceeași viteză de ceas? De ce nu există variante cu viteze diferite de ceas? De exemplu, două nuclee "mari" și o mulțime de nuclee mici.

În loc de, de exemplu, patru nuclee la 4,0 GHz (adică 4 × 4 GHz, maximum 16 GHz), ce zici de un procesor cu două nuclee care rulează la 4,0 GHz și patru nuclee care rulează la 2,0 GHz (adică 2 × 4,0 GHz + 4 × 2,0 GHz, maximum 16 GHz)? A doua opțiune ar fi la fel de bună la sarcinile de lucru cu un singur file, dar potențial mai bună la încărcările multi-filetate?

Eu întreb acest lucru ca o întrebare generală și nu în mod specific cu privire la CPU-urile enumerate mai sus sau la un anumit volum de lucru. Sunt doar curios de ce modelul este ceea ce este.

De ce toate nucleele CPU au aceeași viteză în loc de altele diferite?

Răspunsul

Contributorul SuperUser bwDraco are răspunsul pentru noi:

Aceasta este cunoscută sub denumirea de multiprocesare heterogenă (HMP) și este adoptată pe scară largă de dispozitivele mobile. În dispozitivele ARM care implementează big.LITTLE, procesorul conține nuclee cu diferite performanțe și profile de putere, adică unele nuclee rulează rapid, dar atrag o mulțime de putere (arhitectura mai rapidă și / sau ceasuri mai mari), în timp ce altele sunt eficiente din punct de vedere energetic, arhitectura mai lentă și / sau ceasuri mai mici). Acest lucru este util, deoarece utilizarea energiei tinde să crească disproporționat, pe măsură ce creșteți performanța odată ce treceți de un anumit punct. Ideea aici este să obții performanțe atunci când ai nevoie de ea și de viață a bateriei atunci când nu.

Pe platformele desktop, consumul de energie este mult mai puțin o problemă, deci acest lucru nu este cu adevărat necesar. Cele mai multe aplicații se așteaptă ca fiecare nucleu să aibă caracteristici de performanță similare, iar procesele de programare pentru sistemele HMP sunt mult mai complexe decât planificarea sistemelor tradiționale de procesare simetrică multiplă (tehnic, Windows 10 are suport pentru HMP, dispozitive care utilizează ARM mare.LITTLE).

De asemenea, majoritatea procesoarelor desktop și laptop de astăzi nu sunt limitate din punct de vedere termic sau electric până la punctul în care unele nuclee trebuie să funcționeze mai repede decât altele, chiar și pentru exploziile scurte. De fapt, am atins un zid pe cât de repede putem face nuclee individuale, astfel încât înlocuirea unor nuclee cu cele mai lentă nu va permite ca miezurile rămase să curgă mai repede.

Deși există câteva procesoare desktop care au unul sau două nuclee capabile să ruleze mai repede decât celelalte, această capacitate este în prezent limitată la anumite procesoare Intel de ultimă generație (cunoscută sub numele de Turbo Boost Max Technology 3.0) și are doar un câștig ușor performanță pentru acele nuclee care pot rula mai repede.

Deși este cu siguranță posibil să se proiecteze un procesor tradițional x86 cu miezuri mari și rapide și nuclee mai mici și mai mici pentru a se optimiza pentru sarcini de lucru foarte solicitate, aceasta ar adăuga o complexitate considerabilă proiectării procesorului și este puțin probabil ca aplicațiile să o susțină în mod corespunzător.

Luați un procesor ipotetic cu două nuclee rapide Kaby Lake (a 7-a generație) și opt nuclee lentă Goldmont (Atom). Aveți un număr total de 10 nuclee, iar volumul de lucru puternic încărcat cu filet optimizat pentru acest tip de procesor ar putea vedea un câștig de performanță și eficiență peste un procesor normal quad-core Kaby Lake. Cu toate acestea, diferitele tipuri de nuclee au nivele diferite de performanță și miezurile lentă nu suportă nici măcar câteva instrucțiuni care suportă miezurile rapide, cum ar fi AVX (ARM evită această problemă solicitând atât miezurile mari cât și LITTLE să susțină aceleași instrucțiuni ).

Din nou, majoritatea aplicațiilor multi-threaded bazate pe Windows presupun că fiecare nucleu are același sau aproape același nivel de performanță și poate executa aceleași instrucțiuni, astfel încât acest tip de asimetrie poate duce la o performanță mai mică decât cea ideală, poate chiar se blochează dacă utilizează instrucțiuni nesuportate de nucleele mai lent. În timp ce Intel ar putea modifica nucleele lente pentru a adăuga suport pentru instrucțiuni avansate, astfel încât toate nucleele să poată executa toate instrucțiunile, acest lucru nu ar rezolva problemele legate de suportul software pentru procesoare eterogene.

O abordare diferită a designului aplicației, mai aproape de ceea ce probabil vă gândiți la întrebarea dvs., ar folosi GPU-ul pentru accelerarea parțiunilor extrem de paralele de aplicații. Acest lucru se poate face folosind API-uri precum OpenCL și CUDA. În ceea ce privește o soluție cu un singur chip, AMD promovează suportul hardware pentru accelerarea GPU în APU-urile sale, care combină un CPU tradițional cu un GPU integrat de înaltă performanță în același chip, ca arhitectura sistemelor heterogene, deși acest lucru nu din câteva aplicații specializate.

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

Credit de imagine: Mirko Waltermann (Flickr)