Multi core

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În electronică, termenul multi core este folosit pentru a indica două sau mai multe nuclee , sau mai multe nuclee „fizice” montate pe același pachet .

Termenul multi core este generic și, deși este potrivit pentru descrierea unităților care conțin mai mult de două nuclee, acesta poate fi însoțit de alți termeni specifici care specifică numărul acestora, cum ar fi:

  • un singur nucleu (un singur nucleu, de ex. Intel Atom Z650)
  • dual core (2 nuclee, de ex. Intel Core i3-7310U)
  • triple core (3 nuclee, de ex. AMD Athlon II X3 450)
  • quad core (4 nuclee, de ex. AMD Ryzen 5 1400)
  • nucleu penta (5 nuclee, de ex. R-Car H1 (de Cortex A9))
  • nucleu hexa (6 nuclee, de ex. AMD Ryzen 5 2600)
  • nucleu hepta (7 nuclee, de ex. R-Car M3 (de Cortex A53))
  • octa core (8 nuclee, de ex. Intel Core i7-9800X)
  • Al 9-lea nucleu (9 nuclee, de ex. Myriad 1 MA1135)
  • nucleu deca (10 nuclee, de ex. Intel Core i9-9900X)
  • nucleu dodeca (12 nuclee, de ex. AMD Ryzen 9 3900X)
  • nucleu tetradeca (14 nuclee, de ex. Intel Xeon W-2175)
  • nucleu hexadeca (16 nuclee, de ex. AMD Ryzen 9 3950X)
  • octodeca core (18 nuclee, de ex. Intel Core i9-9980XE)
  • nucleu icosa (20 nuclee, de ex. Intel Xeon Gold 6230)
  • nucleu docosa (22 nuclee, de ex. Intel Xeon Gold 6238T)
  • nucleu tetracosa (24 nuclee, de ex. Intel Xeon W-3265)
  • nucleu hexacosa (26 nuclee, de ex. Intel Xeon Platinum 8270)
  • nucleu octacosa (28 nuclee, de ex. Intel Xeon Platinum 8280)
  • nucleu triaconta (30 nuclee, de ex. ThunderX2 CN9978)
  • nucleu dotriaconta (32 nuclee, de ex. AMD EPYC 7601)
  • nucleu tetraconta (40 nuclee, de ex. Qualcomm centriq 2434)
  • nucleu hexatetraconta (46 nuclee, de ex. Qualcomm centriq 2452)
  • nucleu octatetraconta (48 nuclee, de ex. Intel Xeon Platinum 9242)
  • nucleu hexapentaconta (56 nuclee, de ex. Intel Xeon Platinum 9282)
  • nucleu tetrahexaconta (64 nuclee, de ex. Intel Xeon Phi 7230)
  • doheptaconta core (72 nuclee, de ex. Intel Xeon Phi 7290)

Dacă doriți să descrieți 100 sau mai multe nuclee, în loc de multi core , multe nuclee sunt utilizate în mod obișnuit, cu toate acestea există nume specifice și pentru unități cu 128 nuclee (nucleu octacosahecta), 256 nuclee (nucleu hexapentacontadicta), 512 nuclee (nucleu dodecapenta) , 1000 nuclee (kilo core), 1024 nuclee (tetracosakilia core) și 2048 nuclee (octatetracontadilia core).

Există cazuri în care pot exista produse cu un număr impar de nuclee, cum ar fi nucleul triplu al AMD (Athlon II X3 435). Acest tip de arhitectură, comparativ cu nucleul unic , permite creșterea puterii de calcul a unui CPU fără creșterea frecvenței ceasului de lucru, în avantajul căldurii disipate (care scade în comparație cu cazul mai multor procesoare separate), precum și energie absorbită.

Descriere

De la dual core la multi core

În 2005 , au sosit primele cipuri dual core pentru piața desktop-urilor, din nou grație Intel, care a prezentat primul Pentium D Smithfields ; în acel moment am ajuns la un nivel tehnologic de dezvoltare hardware care nu mai permitea creșterea puterii de procesare prin simpla creștere a frecvenței ceasului . Până atunci, creșterea continuă a performanței se bazase mai ales pe creșterea frecvenței de funcționare datorită inovațiilor oferite de procesele de producție din ce în ce mai miniaturizate. Cu toate acestea, s-a ajuns la un punct care crește și mai mult frecvențele CPU-urilor cu un singur nucleu, în ciuda dimensiunii minime a tranzistoarelor , a condus acum la un consum prea mare în raport cu creșterea modestă a performanței (la acel moment un top-of-the-range procesor cu un singur nucleu a depășit cu mult 100 W de consum maxim) și acest lucru a avut repercusiuni grave și asupra gravei probleme a răcirii circuitelor.

Soluția care părea cea mai evidentă pentru proiectanții de microprocesoare a fost să se concentreze pe paralelism pentru a crește numărul de operații care pot fi efectuate într-un singur ciclu de ceas. Cu toate acestea, această nouă abordare nu a fost în întregime nedureroasă și a avut și unele dezavantaje, deoarece programele trebuiau optimizate pentru utilizarea paralelă a mai multor fire (fiecare program executat în mai multe părți) pentru a profita din plin de caracteristicile acestor procesoare. altfel ar fi angajat doar unul dintre nuclee, lăsându-l pe celălalt aproape nefolosit. Paradoxal, a fost, de asemenea, posibil ca un program de aplicație care nu a fost conceput pentru execuția paralelă să ruleze mai lent pe un procesor multi-core decât pe un singur nucleu și, de fapt, la momentul lansării primelor exemple, erau foarte puține programe pregătite pentru aceste noi arhitecturi. Acest eșec de a atinge nivelurile de performanță teoretice ale sistemelor masiv paralele este cunoscut sub numele de sindrom von Neumann .

Problema menționată a apărut deja cu primele procesoare dual core și, cu atât mai mult, a fost evidentă cu primele procesoare cu 4 nuclee care necesitau și mai mult existența aplicațiilor optimizate pentru a-și putea exprima potențialul, dar în orice caz era o întrebare a unei probleme tranzitorii. De fapt, mai mulți analiști de software au prezis deja că, dacă software-ul conceput pentru utilizare paralelă în domeniul dual core ar fi fost realizat cu înțelepciune, ținând seama nu de funcționarea pe un sistem dual core, ci pe un sistem multi-core, nu ar fi atunci a necesitat schimbări majore pentru a fi utilizate pe un dual core sau un quad core. Potrivit altora, totuși, eforturile necesare pentru crearea de software multi-procesor care ar funcționa optim prin saturarea tuturor nucleelor ​​și neocuparea lor inegală ar fi fost exagerate în raport cu avantajele reale, în special în ceea ce privește impactul costurilor. La un subiect atât de nou în mediul desktop, la momentul respectiv nu am putut să nu așteptăm mai multe detalii, dar timpul a determinat dezvoltatorii să dobândească din ce în ce mai multă experiență și familiaritate cu programarea paralelă și multe dintre temerile din primele zile sunt acum depășit.

Primii procesoare multi-core

Primele exemple de procesoare multi-core au fost prezentate de IBM cu PowerPC-ul său în 2003 , dar abia în 2005 au fost produse pentru piața de consum, cu Intel la sfârșitul anului 2005 , folosind procesoarele Pentium D bazate pe nucleele Smithfield , în timp ce rivalul său AMD a lansat noul Athlon 64 X2 în 2005.

Intel a fost creditat că a pus la dispoziția publicului procesoare quad core (4 core) prin Core 2 Extreme și Core 2 Quad bazate pe nuclee Kentsfield , dar primele procesoare multi core cu mai mult de 2 nuclee au fost introduse pe piață spre final din 2005 ; acesta este Cell , dezvoltat în comun de IBM , Sony și Toshiba pentru piața serverelor console / blade și compus din 8 nuclee eterogene , și UltraSPARC T1 , un procesor cu 8 nuclee omogene dezvoltat de Sun Microsystems pentru piața serverelor (în special pentru Server web cu numeroase accesări) capabil să gestioneze 32 de fire simultan. Acest tip de arhitectură, la fel ca sistemele dual core și mai general, toate sistemele biprocesor și multiprocesor , vă permite să măriți puterea de calcul fără a crește frecvența de lucru, în beneficiul căldurii disipate, precum și garantând performanțe mai mari în zone foarte specifice unde este necesar un mare paralelism mai degrabă decât o mare putere de calcul.

Nucleul octa a fost conceput pentru a rula patru nuclee la un moment dat, în funcție de sarcina operațiunilor, în timp ce procesorul hexa core (6 nuclee) rulează simultan toate cele 6 nuclee pentru performanțe mai bune.

Considerații

Pictogramă lupă mgx2.svg Același subiect în detaliu: Arhitecturi de sistem multiprocesor .

Există diferite abordări prin care pot fi create cipuri multi-core, fiecare cu particularități precise; pentru informații suplimentare, vă rugăm să consultați următoarele elemente detaliate care, deși se referă la procesoare dual core, expun totuși concepte generale care sunt bine adaptate considerațiilor privind procesoarele multi-core în general:

Utilizare de către sistemele de operare

Fiecare sistem de operare gestionează potențialul procesoarelor multicore într-un mod diferit, în unele cazuri aceste gestionări variază, de asemenea, în funcție de versiunea sistemului de operare (Windows XP, Windows XP SP2 profesional etc.), totuși, în timp ce implementează suport pentru diferite hardware software-ul tehnologiilor și soluțiilor nu se spune că puteți vedea avantaje reale, deoarece programele nu acceptă întotdeauna aceste arhitecturi hardware în mod eficient, limitând avantajele la utilizarea mai multor programe în același timp, din acest motiv nucleul ar trebui rescris în pentru a exploata potențialul multicore la maximum. [1] [2]

Primele implementări în sistemele Microsoft au loc cu versiunea profesională SP2 a Windows XP, cu suport limitat pentru arhitectura hardware SMP ( multiprocesare simetrică sau multiprocesor simetric ) în care nucleele sau procesoarele accesează un spațiu de memorie partajat, în timp ce din punctul de vedere al software-ului, se folosește caracteristica de afinitate a procesorului care identifică nucleele ca Core0 și Core1, permițând utilizatorului să decidă care dintre ele să pornească și să ruleze aplicația, ulterior abordarea a fost revizuită mai întâi cu Windows Vista apoi cu Windows 7, acesta din urmă acceptă Non- Soluții hardware Uniform Memory Access (NUMA) [3] .

În sistemele Apple macOS cu versiunea 10.6 există introducerea Grand Central Dispatch pentru a implementa paralelismul la nivelul firului , îmbunătățind suportul pentru multicores.

În sistemele bazate pe nucleul Linux, SMP suport hardware a venit mai întâi cu nucleu versiunea 2, care a inclus un sistem de blocare mare nucleu (BKL) pentru manipularea întrerupere, mai târziu , cu versiunea 2.2 handlerele de întrerupere a spinlocks diferențiate, unele distribuții și optimizări incluse cod suport pentru NUMA sisteme. În versiunea 2.4, din ce în ce mai multe subsisteme au fost gestionate în afara BKL, datorită introducerii unor noi blocuri de baze de date, dar încă mai are blocuri de spin care acoperă subsisteme întregi, ceea ce a permis îmbunătățirea scalabilității, care s-a îmbunătățit în continuare cu versiunea 2.5 a nucleului, care a optimizat memoria cache a paginii de blocare a conversiei dintr-un singur bloc de cod în mai multe blocuri de date.
Cu versiunea 2.6, BKL a fost retrogradat într-o mică parte a codului kernel, deoarece cea mai mare parte a BKL a fost convertită în blocuri de baze de date cu reglare și scalabilitate ridicate pentru a elimina repetarea liniei cache partajate, în timp ce în subsistemele critice există o anumită utilizarea unor abordări de blocare mai puțin avansate, cum ar fi Read-Copy-Update (RCU) , a fost introdus un nou programator de cozi multi-CPU, rezolvând disputa asupra cozilor de execuție globală partajate de mai multe procesoare, reducând cheltuielile generale de procesare a planificării paralele. Acest planificator a fost introdus și pe unele kerneluri 2.4 din cele mai recente distribuții. [4] [5] Această strategie a permis kernel-ului Linux să aibă o scalabilitate ridicată și îmbunătățiri eficiente cu sistemele multicore [6]

În câmpul jocurilor video și în special al bibliotecilor grafice, DirectX 12 , Vulkan (API) și Mantle au permis cea mai bună exploatare a diferitelor nuclee de procesor, permițând dialogul activ și direct cu GPU, care anterior nu era fezabil dacă nu în un mod limitat [7]

Exploatarea în funcție de aplicații și situații operaționale variază foarte mult în funcție de aceleași și în funcție de sistemul de operare utilizat [8]

Notă

Elemente conexe

linkuri externe

Controlul autorității GND ( DE ) 7598578-0
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT