Multiprocesor

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

Un multiprocesor (din limba engleză  multiprocessor, multiprocessing [1] ) este o subclasă de sisteme informatice multiprocesor în care există mai multe procesoare și un spațiu de adrese , vizibile tuturor procesoarelor. În taxonomia lui Flynn, multiprocesoarele aparțin clasei de mașini SM-MIMD . Multiprocesorul rulează o copie a sistemului de operare cu un set de tabele, inclusiv cele care urmăresc ce pagini de memorie sunt libere.

Clasificare

În funcție de rolurile pe care procesoarele le joacă într-un sistem multiprocesor, ele disting între: multiprocesoare simetrice (SMP) - toate procesoarele joacă același rol și au același acces la memorie și periferice și multiprocesoare asimetrice (AMP) - procesoarele joacă roluri diferite sau accesează diferit perifericele.dispozitive. Tehnologia AMP a fost doar de tranziție în anii 60 până când a fost dezvoltată tehnologia SMP.

Există mai multe tipuri de multiprocesoare în funcție de metoda de adresare a memoriei, printre care: UMA (Uniform Memory Access), NUMA (Non Uniform Memory Access) și COMA (Cache Only Memory Access).

În plus, multiprocesoarele pot fi de tip omogen , când toate procesoarele din sistem sunt la fel, sau de tip eterogen , când procesoarele din sistem sunt de tipuri diferite.

Programare

În programarea multiprocesoarelor se pot folosi două modele de programare : multithreading , în care se lansează un fir de execuție pe fiecare procesor și fac schimb de date între ele prin variabile partajate într-o memorie partajată sau (mai complexă) transmiterea de mesaje , atunci când un procesul este lansat pe fiecare procesor și comunică între ei prin schimbul de mesaje. Multithreadingul este utilizat fie explicit (în limbaje de programare compilate prin intermediul API -urilor de sistem (de exemplu, în C / C++ prin POSIX Threads și prin boost::thread sau std::thread în C++ de la standardul C++11), în limbaje interpretate ​​( Java și C# ) folosind constructe de limbaj), fie implicit ( declarativ folosind directive de compilare ( OpenMP ) sau automat de compilator însuși ( High Performance Fortran )).

Istorie

Mașinile multiprocesor (SMP/UMA) au fost introduse pe piață la începutul anilor 1980 și începutul anilor 1990, inițial ca mini-supercomputere ( de exemplu, produse de la Alliant , Convex , Sequent , Encore și Synapse ) . ), apoi ca procesare de date. servere și a câștigat rapid popularitate pe piața hardware pentru servere . Primele multiprocesoare cu arhitectură x86 bazate pe procesoare Intel 80386 și Intel 486 au fost serverele Compaq SystemPro, care au intrat pe piață la sfârșitul anului 1989 - începutul anului 1990. Creșterea ofertelor pe piața de servere x86 multiprocesor a determinat Intel să creeze MultiProcessor Specification [2] , care a devenit standardul de facto pentru mașinile x86 SMP pentru mulți ani .

Exemple de sisteme SMP/UMA în 1998 [3]
Sistem CPU Procesoare maxime
SGI Power Challenge MIPS R10000 36
DEC AlphaServer 8400 Alpha 21164 paisprezece
Sun E6000 UltraSPARC II treizeci
Sun E10000 UltraSPARC II 64
HP/exemplar convex PA-8000 16
Cray-T90 Cray Vector 32

Primele multiprocesoare de tip ccNUMA au fost computerul KSR1 de la Kendall Square Research și Denelcor HEP de la Denelcor la mijlocul anilor 1980.

Exemple de sisteme ccNUMA în 1998 [4]
Sistem CPU Procesoare pe nod Procesoare maxime
Date generale AV-20000 Pentium patru 32
Sequent NUMA-Q 2000 Pentium patru 32
SGI Origin 2000 MIPS R10000 2 128
HP Exemplar X-Class PA-8000 16 256
HP 9000 V-Class

Au fost create și multiprocesoare fără coerență cache (nccNUMA):

Exemple de sisteme nccNUMA în 1998 [5]
Sistem CPU Procesoare pe nod Procesoare maxime
Cray-T3E Alpha 21164 2 2048
BBN TC-2000 Motorola MC88100 unu 256
BBN TC-2000 Motorola 604 2 512

Dezvoltarea miniaturizării în electronica de calcul a făcut posibilă plasarea mai multor procesoare într-un pachet sau pe un cip (în engleză chip-level multiprocessing, CMP), creând procesoare multi-core . Acest lucru a făcut posibilă creșterea performanței procesoarelor prin simpla creștere a numărului de nuclee de calcul de design simplu, în locul încercărilor tradiționale de a crește viteza de ceas sau de a complica conducta de calcul a unui procesor cu un singur nucleu. În același timp, procesoarele multi-core folosesc memoria mai eficient, lucrează cu aplicații multi-threaded, consumă puțină energie și nu disipă multă putere, ceea ce este ideal pentru scalarea centrelor de date.

Din aproximativ 2005, toate procesoarele pentru piața de calcul de consum au fost lansate într-o versiune multi-core , adică sunt în esență multiprocesoare miniaturale (mai precis, mașini SMP cu acces la memorie UMA, cu unele rezerve). Dezvoltarea ulterioară a acestei direcții a dus la apariția multiprocesoarelor multi-core - sisteme în care există mai multe procesoare, iar aceste procesoare, la rândul lor, conțin mai multe nuclee. Cea mai comună versiune de servere din centrele de date pentru 2016 este un server cu două procesoare de clasă Intel Xeon , Oracle SPARC sau IBM POWER cu 8 nuclee , care suportă și execuția simultană a mai multor fire de execuție în hardware .

Vezi și

Literatură

Note

  1. "1930–35; multi- + process + -ing 1 " - Dictionary.com integral: " multiprocesor Arhivat 26 decembrie 2015 la Wayback Machine "
  2. Specificații multiprocesor . Consultat la 17 octombrie 2013. Arhivat din original la 9 ianuarie 2017.
  3. Severance_Dowd, 1998 , p. 260.
  4. Severance_Dowd, 1998 , p. 263.
  5. Severance_Dowd, 1998 , p. 264.

Link -uri