Ce este un procesor multicore?

click fraud protection

Încă de la mijlocul anilor nouă, procesoarele desktop oferă mai multe nuclee CPU într-un singur pachet. Acesta este un procesor multicore. În timp ce primele modele erau limitate la două sau patru nuclee CPU, procesoarele moderne oferă până la 64 de nuclee fizice pe un singur procesor. Core consideră că înaltele nu sunt standard pentru procesoarele desktop și sunt, în general, rezervate stațiilor de lucru sau serverelor de ultimă generație. Numărul tipic de nuclee în procesoarele desktop moderne este între 4 și 16. Dar ce este vorba despre procesoarele multicore care le fac dominante în computerele moderne?

Nucleu unic

Din punct de vedere istoric, un CPU cu un singur nucleu era limitat la efectuarea unei singure sarcini simultan. Aceasta vine cu o serie întreagă de probleme. De exemplu, pe un computer modern, există o cantitate imensă de procese în fundal care rulează. Dacă un procesor poate procesa doar un lucru la un moment dat, înseamnă că aceste procese de fundal trebuie să ia timp de procesare departe de procesul din prim-plan. În plus, greșelile de cache înseamnă că datele trebuie preluate din, comparativ, RAM lentă. În timpul în care datele sunt preluate din RAM, procesorul rămâne pur și simplu inactiv, deoarece nu poate face nimic până când nu primește datele. Acest lucru împiedică procesul de rulare, precum și orice alte procese care așteaptă să se finalizeze.

În timp ce procesoarele moderne cu un singur nucleu nu sunt cu adevărat un lucru datorită creșterii procesoarelor cu mai multe nuclee bugetare, ele ar putea folosi alte trucuri moderne pentru a funcționa mai rapid. O conductă ar permite fiecărei părți diferite a manipulării unei instrucțiuni să fie utilizată simultan, oferind o creștere semnificativă a performanței față de utilizarea doar a unei singure etape a conductei la toate pe ceas ciclu. O conductă largă ar vedea mai multe instrucțiuni care pot fi gestionate în fiecare etapă a conductei pe ciclu de ceas. Procesarea în afara comenzii ar permite ca instrucțiunile să fie programate într-un mod mai eficient în timp. Un predictor de ramificare ar fi capabil să prezică rezultatul unei instrucțiuni de ramificare și să ruleze preventiv răspunsul presupus.

Toți acești factori ar funcționa bine și ar oferi o anumită performanță. Adăugarea unuia sau mai multor nuclee, totuși, permite toate acestea și, dintr-o lovitură, permite procesarea de două ori a datelor simultan.

Multicore

Adăugarea unui al doilea nucleu pare că ar trebui să dubleze performanța brută. Lucrurile sunt, din păcate, mai complicate decât atât. Logica programului este adesea cu un singur thread, ceea ce înseamnă că există un singur lucru pe care un program încearcă să-l facă la un moment dat. Ceea ce se poate întâmpla, totuși, este că alte procese pot folosi celălalt nucleu în același timp. Deși nu există o creștere inerentă a performanței pentru majoritatea programelor individuale, furnizarea unui plus resursă de procesare, reduce efectiv concurența pentru o resursă limitată, ceea ce oferă a creșterea performanței. Această creștere a performanței, pur și simplu din reducerea concurenței pentru timpul CPU este cel mai vizibilă atunci când săriți dintr-un singur la un procesor dual-core, există profituri în scădere de la creșterea în continuare a numărului de nuclee, deși, în general, mai mult este mai bine.

Pentru a profita în mod corespunzător de sistemele multicore și pentru a vedea efectiv o creștere solidă a performanței, programele trebuie programate să utilizeze mai multe fire de procesare. Logica cu mai multe fire este notoriu dificil de realizat în mod fiabil, deoarece este adesea dificil de învățat și există multe capcane potențiale. Un exemplu de capcană este cunoscut sub numele de condiție de cursă. Într-o condiție de cursă, un proces presupune că un alt proces pe care îl pornește se va desfășura fără probleme, apoi încearcă să facă ceva care se bazează pe faptul că celălalt proces a funcționat fără probleme. De exemplu, imaginați-vă că un proces începe un alt proces pentru a închide un document și a deschide altul. Dacă procesul inițial nu verifică în mod corespunzător dacă al doilea proces a fost finalizat, acest lucru poate duce la rezultate neașteptate. Dacă a apărut o problemă la închiderea primului document, de exemplu, acesta ar putea fi încă deschis atunci când procesul inițial doar scrie mai multe date în el.

În această condiție de cursă, valoarea unei variabile este citită a doua oară înainte ca noua valoare să fie scrisă în ea, ceea ce duce la un răspuns general greșit.

Probleme termice

Una dintre cele mai mari probleme cu care se confruntă procesoarele multicore este căldura. În timp ce un nucleu CPU nu emite atât de multă căldură, două degajă mai mult. În procesoarele cu număr mare de nuclee, această concentrație de căldură poate duce la un ceas de creștere mai mic, deoarece procesorul își gestionează temperatura. Un ceas de amplificare mai mic va duce la o performanță mai scăzută în aplicațiile cu un singur thread. Acest lucru poate fi văzut adesea în benchmark-urile de performanță în jocuri. Jocurile video sunt adesea foarte dependente de un singur fir. Ca atare, performanța cu un singur thread este adesea critică pentru jocuri. Procesoarele cu număr mare de nuclee, cum ar fi modelele cu număr de 16 nuclee, provin adesea din containere de înaltă performanță. În ciuda acestui fapt, se poate constata în mod regulat că acestea sunt depășite de procesoarele „mai mici” cu un număr mai mic de nuclee în benchmark-uri cu un singur thread. Această problemă este și mai evidentă în procesoarele cu număr foarte mare de nuclee, cum ar fi AMD Threadripper cu 64 de nuclee, unde viteza de ceas este vizibil mai mică decât procesoarele desktop high-end.

Succese

Multe aplicații sunt capabile să folosească mai multe nuclee CPU. De exemplu, randarea CPU este o sarcină relativ ușor de paralelizat. Îmbunătățirile de performanță pot fi observate până la 64 de nuclee și mai mult, deși niciun procesor nu oferă mai mult de 64 de nuclee în prezent. Multe aplicații pur și simplu nu pot fi multithreaded, deoarece se bazează pe logica secvențială. Deși acestea nu văd nicăieri în apropierea vitezei unui program cu mai multe fire, faptul că programele cu mai multe fire și alte programe cu un singur thread pot folosi alte nuclee CPU eliberează timp procesor, permițând mai bine performanţă.

Opțiuni arhitecturale

La procesoarele desktop, fiecare nucleu CPU dintr-un procesor multicore a fost în general identic. Această omogenitate face ca munca de programare pe nuclee să fie simplă. Folosirea aceluiași design repetat ajută, de asemenea, la menținerea costurilor de dezvoltare la un nivel scăzut. Cu toate acestea, procesoarele mobile folosesc de multă vreme arhitecturi de bază eterogene. În acest design, există două sau chiar trei niveluri de nucleu CPU. Fiecare nivel poate rula aceleași procese, cu toate acestea, unele sunt proiectate pentru eficiența energetică, iar altele sunt reglate pentru performanță. Aceasta s-a dovedit o rețetă de succes pentru dispozitivele alimentate cu baterie, deoarece multe sarcini pot folosi mai lent mai mult nuclee eficiente din punct de vedere energetic, crescând durata de viață a bateriei, în timp ce procesele cu prioritate înaltă pot fi încă rulate la viteză mare când e nevoie.

Arhitectura CPU pentru desktop se mișcă, de asemenea, în direcția unui design de bază eterogen. Intel Alder Lake 12th generația Core CPU este primul procesor desktop care face acest lucru. În acest caz, principalul factor de conducere al nucleelor ​​mai mici nu este neapărat eficiența energetică, ci eficiența termică, deși acestea sunt două fețe ale aceleiași monede. Având mai multe nuclee puternice oferă performanță ridicată, în timp ce multe nuclee eficiente pot face față sarcinilor de fundal fără a afecta prea mult nucleele principale.

Concluzie

Un procesor multicore este un procesor care prezintă mai multe nuclee de procesare într-un singur pachet, deseori, deși nu exclusiv pe aceeași matriță. Procesoarele cu mai multe nuclee nu oferă o creștere directă a performanței multor programe, cu toate acestea, prin creșterea numărului de nuclee, programele cu un singur thread nu trebuie să concureze la fel de mult pentru timpul CPU. Unele programe pot profita din plin de mai multe nuclee, utilizând direct câte sunt disponibile. Acest lucru oferă o creștere mare a performanței, deși din cauza constrângerilor termice și de putere, această creștere nu este neapărat o dublare directă a performanței cu o dublare a nucleelor.