Cunoștințe, cursuri, sisteme multiprocesoare și multi-computere

Sisteme multiprocesor și multi-computer

În prezent, tendința dezvoltării microprocesoarelor și sistemelor bazate pe acestea vizează creșterea productivității acestora. Puterea de calcul a oricărui sistem atinge cea mai mare performanță datorită a doi factori:

Utilizarea elementelor de mare viteză și executarea paralelă a unui număr mare de operațiuni. Direcțiile legate de creșterea performanțelor microprocesoarelor individuale, pe care le-am luat în considerare în cursurile precedente, iar în această prelegere vom aborda problema paralelizării procesării informațiilor.

Există mai multe opțiuni pentru clasificarea sistemelor de procesare paralelă. Aparent, cea mai timpurie și cea mai cunoscută este clasificarea arhitecturii sistemelor de calcul, propusă în 1966 de către M. Flynn. Clasificarea se bazează pe conceptul de flux, prin care se înțelege o secvență de elemente, comenzi sau date procesate de procesor. Pe baza numărului de fluxuri de comandă și de fluxuri de date, se disting patru clase de arhitecturi:

SISD (sTReam de sTReam INSTRUCTARE SINg / sINgle sTReam) este un flux de comandă unic și un singur flux de date. Această clasă aparțin în primul rând tuturor mașinilor secvențiale clasice sau, cu alte cuvinte, mașinilor de tip von Neumann. În astfel de mașini există un singur flux de comenzi. toate comenzile sunt procesate succesiv unul după altul și fiecare comandă inițiază o operație cu un flux de date. Nu contează că procesorul poate utiliza conductele pentru a mări viteza de procesare a instrucțiunilor și viteza operațiilor aritmetice. În acest sens, mașinile din această clasă nu aparțin sistemelor paralele.

SIMD (sINgle sTReam de intrare sTReam / multIPle) este un flux de comandă unic și un flux de date multiple. Aplicată la un singur microprocesor, această abordare este implementată în MMX - și SSE - extensii ale microprocesoarelor moderne. Sistemele microprocesoare de tip SIMD constau dintr-un număr mare de elemente de procesare identice. având memoria proprie. Toate elementele procesorului din aceeași mașină execută același program. Aceasta vă permite să efectuați simultan o operație aritmetică pe mai multe date - elementele vectorului. Evident, un astfel de sistem, compus dintr-un număr mare de procesoare, poate oferi o creștere semnificativă a performanței numai pe acele sarcini, în soluția căruia toți procesatorii pot face același lucru.

MISD (sTReam de intrare a sTReam / sINgle) - flux multiplu de comenzi si un singur flux de date. Definiția implică prezența în arhitectură a multor procesoare care procesează același flux de date. Un număr de cercetători din această clasă includ mașinile de transportat.

MIMD (multipe Instruction STREAM / date multiple STREAM) - flux de instrucțiuni multiple și fluxul de date multiple. Modelul de bază al calculului în acest caz este un set de procese independente care accesează în mod accidental datele partajate. Într-un astfel de sistem, fiecare element de procesor își execută programul în mod independent de celelalte elemente ale procesorului. Arhitectura MIMD oferă o mare flexibilitate: cu un sprijin adecvat de hardware și software-ul MIMD poate funcționa ca un sistem cu un singur utilizator, oferind procesare de înaltă performanță de date pentru unul sarcini de aplicații, cum ar fi masina de multi-program care îndeplinește mai multe sarcini în paralel, și ca o combinație a acestor opțiuni. În plus, arhitectura MIMD poate profita pe deplin de tehnologia microprocesoarelor moderne, bazată pe costuri / performanțe stricte. De fapt, aproape toate sistemele multiprocesor moderne sunt construite pe același microprocesor, care pot fi găsite în calculatoare personale, stații de lucru și servere mici cu un singur procesor.

Ca oricare altul, clasificarea de mai sus este imperfectă: există mașini care nu intră direct în ea, există, de asemenea, semne importante care nu sunt incluse în această clasificare. Luați în considerare clasificarea sistemelor multiprocesor și multi-mașină bazate pe o altă caracteristică - gradul de separare a resurselor de calcul ale sistemului.

În acest caz, se disting următoarele patru clase de sisteme:

  • sisteme cu multiprocesare simetrică (simmeTRic multIProcessINg) sau sistem SMP;
  • sisteme bazate pe tehnologii de acces non-IFORM, sau sisteme NUMA;
  • clustere;
  • un procesor de masă procesor paralel (procesor masiv paralel) sau un sistem MPP.

Cel mai înalt nivel al integrării resurselor este sistemul cu multiprocesare simetrică sau sistemul SMP (Figura 13.1).

În această arhitectură, toate procesoarele au acces egal la întregul spațiu de memorie RAM și I / O. Prin urmare, arhitectura SMP este denumită simetrică. Interfețele sale pentru accesul la spațiul de I / O și sistemul de operare, sistemul de gestionare a cache-ului, software-ul de sistem etc. sunt construite astfel încât să asigure un acces consistent la resursele partajate. Mecanismele corespunzătoare de blocare sunt prezentate în interfața magistralei, în componentele sistemului de operare și în construirea cache-ului.

Cunoștințe, cursuri, sisteme multiprocesoare și multi-computere


Fig. 13.1. Sistem cu multiprocesare simetrică

Din punct de vedere al aplicației, sistemul SMP este un singur complex computațional cu resurse computaționale proporționale cu numărul de procesoare. Paralelizarea calculelor este asigurată de sistemul de operare instalat pe unul dintre procesoare. Întregul sistem rulează într-un singur sistem de operare (de obicei UNIX, dar pentru WINDows bazate pe Windows NT).

Sistemul de operare distribuie automat procesele de-a lungul procesoarelor în procesul de lucru. optimizarea utilizării resurselor. Kernel-urile sunt utilizate în mod uniform, iar programele de aplicații pot rula în paralel pe întregul set de nuclee. În același timp, este atinsă viteza maximă a sistemului. Este important ca funcțiile standard ale sistemului de operare să fie utilizate pentru sincronizarea aplicațiilor în locul mecanismelor complexe și a protocoalelor de comunicare interproces. Astfel, este mai ușor să se implementeze proiecte cu paralelizarea fluxurilor de programe. Obișnuită pentru un set de kerneluri OS permite utilizarea instrumentelor de serviciu pentru a colecta statistici care sunt unificate pentru întreaga arhitectură. În consecință, este posibil să se faciliteze depanarea și optimizarea aplicațiilor în timpul fazei de dezvoltare sau scalare pentru alte forme de multiprocesare.

În general, cererea. scris pentru un sistem uniprocesor, nu necesită modificare atunci când este transferat într-un mediu multiprocesor. Cu toate acestea, pentru o funcționare optimă a programului sau a unor părți ale sistemului de operare, acestea sunt rescrise pentru a lucra într-un mediu multiprocesor.

Numărul relativ mic de procesoare din astfel de mașini permite existența unei memorii partajate centralizate și combinarea procesoarelor și a memoriei cu o singură magistrală.

Factorul limitator al acestor sisteme este capacitatea autostrăzii, ceea ce duce la scalabilitatea lor slabă. Motivul pentru aceasta este că, în orice moment, magistrala este capabilă să proceseze o singură tranzacție, astfel încât să existe probleme de rezolvare a conflictelor, în timp ce convorbiri simultan mai multe procesoare în aceleași zone ale memoriei fizice totale. Elementele de calcul încep să interfereze unele cu altele. Atunci când apare un astfel de conflict. depinde de viteza de comunicare și de numărul de elemente de calcul. În plus, magistrala de sistem are un număr limitat de sloturi. Toate acestea, evident, împiedică creșterea performanțelor cu creșterea numărului de procesoare. În sistemele reale, nu puteți utiliza mai mult de 32 de procesoare.

În microprocesoare moderne, suportul pentru construirea unui sistem multiprocesor este pus la nivelul implementării hardware a MP, ceea ce face sistemele multiprocesor relativ ieftine.

Deci, pentru a asigura posibilitatea de a lucra pe o coloană vertebrală comună, fiecare microprocesor de la Intel, începând cu Pentium Pro, are suport integrat pentru un identificator de procesor pe două biți (APIC) (Advanced Programmable INTerrupt ConTRoller). Implicit, CPU-ul cu cel mai mare număr de identificare devine procesorul de bootstrap. Această identificare facilitează arbitrarea magistralei de date în sistemul SMP. Am văzut mijloace similare în Power4, unde la nivel hardware modulul microcircuit MCM este creat de la 4 microprocesoare, care include în total 8 nuclee de procesoare.

Astăzi SMP este utilizat pe scară largă în supercomputerele multiprocesoare și aplicațiile server. Cu toate acestea, dacă execuția deterministă a programelor în timp real este necesară, de exemplu, în vizualizarea datelor multimedia, posibilitățile de prelucrare extrem de simetrică sunt foarte limitate. O situație poate apărea atunci când aplicațiile care rulează pe diferite kerneluri accesează aceeași resursă OS. În acest caz, va avea acces doar unul dintre nuclee.

Restul va rămâne inactiv până când zona critică nu va fi eliberată.

Firește, acest lucru reduce performanțele aplicațiilor în timp real.

Epuizarea performanțelor magistralei de sistem în sistemele SMP, cu accesul unui număr mare de procesoare la spațiul de memorie comun și limitările fundamentale ale tehnologiei bus-ului au cauzat o constrângere în creșterea performanțelor sistemului SMP. În prezent, această problemă a primit două soluții. Primul este înlocuirea magistralei de sistem cu un comutator de înaltă performanță. oferind acces non-blocant simultan la diferite părți ale memoriei. A doua soluție este oferită de tehnologia NUMA.

Cunoștințe, cursuri, sisteme multiprocesoare și multi-computere


Fig. 13.2. Un sistem construit pe tehnologia accesului eterogen la memorie

Atunci când se utilizează cea mai obișnuită versiune curentă a cc-NUMA (memoria cache-NUMA coerentă - acces neuniform în memorie cu potrivirea conținutului cache-ului), se oferă cache-ul datelor RAM ale altor noduri.

De obicei întregul sistem rulează sub un singur sistem de operare, ca și în SMP. Există, de asemenea, opțiuni pentru partiționarea dinamică a sistemului, în care secțiunile separate ale sistemului funcționează în diferite sisteme de operare.

Accesul destul de îndelungat la memoria nodurilor vecine în comparație cu accesul la OP din nodul său în NUMA-sisteme face ca această utilizare să nu fie optimă.

Deci, funcționalitatea completă a calculatoarelor SMP-systemsNUMA astăzi nu au. Cu toate acestea, printre sistemele cu scop general, sistemele NUMA au una dintre cele mai mari scalabilități și, prin urmare, performanță. Până în prezent, numărul maxim de procesoare din sistemele cc-NUMA poate depăși 1000 (seria OrigIN3000). Unul dintre cele mai productive supercomputere - Tera 10 - are o capacitate de 60 TFlops și este alcătuit din 544 de SMP-noduri, fiecare dintre acestea având între 8 și 16 procesoare Itanium 2.

Următorul nivel al ierarhiei sistemelor paralele este complex, care constă și în mașini individuale, dar parțial împărtășind unele resurse. E vorba de clustere.