Multiprocesare simetrică

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 23 aprilie 2018; verificările necesită 7 modificări .

Multiprocesare simetrică ( ing.  multiprocesare simetrică , abreviat SMP ) - arhitectura computerelor cu multiprocesor , în care două sau mai multe procesoare identice cu performanțe comparabile sunt conectate într-un mod uniform la memoria partajată (și dispozitivele periferice) și îndeplinesc aceleași funcții (de ce, în de fapt, sistemul se numește simetric ) [1] . În engleză, sistemele SMP sunt numite și multiprocesoare strâns cuplate [2] , deoarece în această clasă de sisteme, procesoarele sunt strâns conectate între ele printr-o magistrală comună și au acces egal la toate resursele sistemului de calcul (memorie și dispozitive I/O). și sunt controlate toate cu o singură copie a sistemului de operare .

În taxonomia lui Flynn, mașinile SMP aparțin clasei de mașini SM-MIMD . Majoritatea sistemelor multiprocesor folosesc astăzi arhitectura SMP.

Descriere

Sistemele SMP permit oricărui procesor să lucreze la orice sarcină, indiferent de locul în care în memorie sunt stocate datele pentru respectiva sarcină - cu suport adecvat din partea sistemului de operare , sistemele SMP pot muta cu ușurință sarcinile între procesoare, distribuind eficient sarcina.

Diferite sisteme SMP conectează procesoarele la memoria partajată în moduri diferite. Cea mai simplă și ieftină abordare este o conexiune cu magistrala de sistem [ 3 ] [4] . În acest caz, un singur procesor poate accesa memorie la un moment dat, ceea ce impune o limită semnificativă a numărului de procesoare suportate în astfel de sisteme. Cu cât sunt mai multe procesoare, cu atât este mai mare sarcina pe magistrala partajată, cu atât fiecare procesor trebuie să aștepte mai mult până când magistrala este liberă pentru a accesa memorie. Scăderea performanței generale a unui astfel de sistem cu creșterea numărului de procesoare are loc foarte rapid, așa că de obicei în astfel de sisteme numărul de procesoare nu depășește 2-4. Un exemplu de mașini SMP cu acest mod de conectare a procesoarelor sunt orice servere multiprocesoare entry-level.

A doua modalitate de a conecta procesoare este printr-o conexiune comutată (comutator transversal) [3] [5] . Cu o astfel de conexiune, toată memoria partajată este împărțită în bănci de memorie, fiecare bancă de memorie are propria sa magistrală, iar procesoarele sunt conectate la toate magistralele, având acces la oricare dintre băncile de memorie prin intermediul acestora. O astfel de conexiune este mai complexă în circuite, dar permite procesoarelor să acceseze memoria partajată în același timp. Acest lucru vă permite să creșteți numărul de procesoare din sistem până la 8-16 fără o scădere vizibilă a performanței generale. Un exemplu de astfel de mașini SMP sunt stațiile de lucru cu multiprocesor RS/6000.

Avantaje și dezavantaje

SMP este cel mai simplu și mai rentabil mod de a scala un sistem de calcul: prin creșterea numărului de procesoare. Programarea este, de asemenea, simplă: folosind fire și mecanisme aferente pentru schimbul de date între ele prin variabile partajate în memorie.

SMP este adesea folosit în știință, industrie și afaceri, unde software-ul este conceput special pentru execuție cu mai multe fire. În același timp, majoritatea produselor de larg consum, cum ar fi editorii de text și jocurile pe calculator, sunt scrise în așa fel încât să nu poată profita de punctele forte ale sistemelor SMP. În cazul jocurilor, acest lucru se datorează adesea faptului că optimizarea programului pentru sistemele SMP va duce la pierderi de performanță atunci când lucrați pe sisteme cu un singur procesor, care până de curând ocupau o mare parte a pieței PC -urilor . (Procesoarele moderne multi-core sunt doar o altă implementare hardware a SMP.) Datorită naturii diferitelor metode de programare, pentru performanță maximă, vor fi necesare proiecte separate pentru a suporta un singur procesor cu un singur nucleu și sisteme SMP. Cu toate acestea, programele care rulează pe sisteme SMP obțin un câștig mic de performanță, chiar dacă au fost scrise pentru sisteme cu un singur procesor. Acest lucru se datorează faptului că întreruperile hardware , care de obicei întrerup execuția unui program care urmează să fie procesat de kernel, pot fi procesate pe un procesor liber (nucleu de procesor). Efectul în majoritatea aplicațiilor nu este atât un spor de performanță, cât un sentiment că programul rulează mai bine. În unele programe de aplicație (în special: compilatoare software și unele proiecte de calcul distribuit ), creșterea performanței va fi aproape direct proporțională cu numărul de procesoare suplimentare.

Defecțiunea unui procesor cauzează funcționarea defectuoasă a întregului sistem și necesită o repornire a întregului sistem pentru a dezactiva procesorul defect. Eșecul unui nucleu de procesor duce adesea la defecțiunea întregului procesor cu mai multe nuclee, dacă procesorul cu mai multe nuclee nu este echipat cu protecție încorporată care dezactivează nucleul procesorului eșuat și prin aceasta permite nucleelor ​​sănătoase ale procesorului să continue să funcționeze normal .

Limita procesorului

Odată cu creșterea numărului de procesoare, cerințele pentru lățimea de bandă a magistralei de memorie crește considerabil. Aceasta impune o limită a numărului de procesoare din arhitectura SMP. Sistemele SMP moderne permit funcționarea eficientă cu 16 procesoare.

Problemă de coerență a memoriei cache

Fiecare procesor modern este echipat cu un cache pe mai multe niveluri pentru preluarea mai rapidă a datelor și a instrucțiunilor mașinii din memoria principală, care este mai lentă decât procesorul. Într-un sistem multiprocesor, prezența memoriei cache în procesoare reduce sarcina pe magistrala comună sau pe conexiunea dial-up, ceea ce are un efect foarte favorabil asupra performanței generale a sistemului. Dar, deoarece fiecare procesor este echipat cu propria sa memorie cache individuală, există pericolul ca memoria cache a unui procesor să primească o valoare variabilă care este diferită de ceea ce este stocat în memoria principală și în memoria cache a altui procesor. Imaginați-vă că procesorul modifică valoarea unei variabile din memoria cache a acestuia, iar un alt procesor solicită această variabilă din memoria principală, iar acesta (al doilea procesor) va primi o valoare invalidă pentru variabilă. Sau, de exemplu, subsistemul I/O scrie o nouă valoare a unei variabile în memoria principală, iar cea învechită se află încă în memoria cache a procesorului. Soluția la această problemă este încredințată protocolului de coerență cache, care este conceput pentru a asigura coerența (“coerența”) cache-urilor tuturor procesoarelor și memoriei principale fără pierderea performanței generale [6] .

Suport pentru sistemul de operare

Suportul SMP trebuie să fie încorporat în sistemul de operare, altfel procesoarele suplimentare vor fi inactive, iar sistemul va funcționa ca un singur procesor. (De fapt, această problemă este relevantă și pentru sistemele cu un singur procesor cu procesoare multi-core.) Cele mai multe sisteme de operare moderne acceptă multiprocesare simetrică, dar în grade diferite.

Suportul pentru multiprocesare în sistemul de operare Linux a fost adăugat în versiunea de kernel 2.0 [7] și îmbunătățit în versiunea 2.6. Linia de sisteme de operare Windows NT a fost creată inițial cu suport multiprocesor. ( Windows 9x SMP nu a fost acceptat.)

Alternative

SMP este doar o opțiune pentru construirea unei mașini multiprocesor. Un alt concept este NUMA , care oferă procesoarelor bănci separate de memorie. Acest lucru permite procesoarelor să lucreze cu memoria în paralel și poate îmbunătăți considerabil lățimea de bandă a memoriei atunci când datele sunt legate de proces (și astfel legate de procesor). Pe de altă parte, NUMA crește costul de mutare a datelor între procesoare, ceea ce înseamnă că echilibrarea sarcinii este mai costisitoare. Beneficiile NUMA sunt limitate la o gamă specifică de sarcini, în principal servere, în care datele sunt adesea codificate pe anumite sarcini sau utilizatori.

Un alt concept este multiprocesarea asimetrică ( ASMP ), în care procesoarele individuale specializate sunt utilizate pentru sarcini specifice și multiprocesarea în cluster ( Beowulf ), în care nu toată memoria este disponibilă tuturor procesoarelor. Asemenea abordări nu sunt adesea folosite (deși chipset-urile 3D de înaltă performanță din plăcile video moderne pot fi considerate o formă de multiprocesare asimetrică), în timp ce sistemele cluster sunt utilizate pe scară largă în construirea de supercalculatoare foarte mari .

Vezi și

Note

  1. Stallings, 2011 , p. 33.
  2. Chevance, 2004 , p. 265.
  3. 1 2 Severance_Dowd, 1998 , p. 195.
  4. Chevance, 2004 , p. 266.
  5. Chevance, 2004 , p. 267.
  6. Severance_Dowd, 1998 , p. 198.
  7. Dhamdhere, 2008 , p. 355.

Literatură

Link -uri