Taxonomia lui Flynn

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 24 decembrie 2019; verificările necesită 4 modificări . Clasificare Flynn
  Un singur flux de
instrucțiuni
Fluxuri
de instrucțiuni multiple
Flux de date
unic (date unice)
SISD
(OKOD)
MISD
(MISD)
Fluxuri
de date multiple
SIMD
(JMD)
MIMD
(MKMD)

Taxonomia lui Flynn ( Clasificare ) este o clasificare generală a arhitecturilor computerelor bazată pe prezența paralelismului în fluxurile de comandă și date. A fost propus de Michael Flynn în 1966 [1] și extins în 1972 [2] [3] .  

Descriere

Întreaga varietate de arhitecturi de computer din această taxonomie a lui Flynn este redusă la patru clase [4] :

Deoarece paralelismul este folosit ca principal criteriu în taxonomie, taxonomia lui Flynn este cel mai des menționată în literatura tehnică [5] [6] [7] [4] [8] atunci când se clasifică sistemele de calcul paralele . MISD este o arhitectură rar utilizată, în principal în scopul protecției împotriva defecțiunilor (de exemplu, pentru redundanța la cald a calculatoarelor în sistemele de zbor precum „ Spațial Shuttle ” sau „ Energy-Buran ”, în SCADA , critice pentru defecțiuni etc.) . Deoarece o mașină SISD nu este o mașină paralelă și MISD nu este o arhitectură paralelă tipică, toate sistemele de calcul paralele se încadrează în clasa SIMD sau MIMD.

Odată cu dezvoltarea tehnologiei, clasele SIMD și MIMD au început să acopere prea multe mașini care sunt radical diferite unele de altele. În acest sens, în literatura tehnică [9] [10] este utilizat un criteriu suplimentar – modul de lucru cu memoria din punctul de vedere al programatorului. Conform acestui criteriu, sistemele sunt împărțite în „sisteme cu memorie partajată” ( ing.  memorie partajată , SM) și „sisteme cu memorie distribuită” ( ing.  memorie distribuită , DM). În consecință, fiecare clasă - SIMD și MIMD - este împărțită în subclase: SM-SIMD/DM-SIMD și SM-MIMD/DM-MIMD.

Acordați o atenție deosebită clarificării „din punct de vedere al programatorului”. Faptul este că există sisteme de calcul în care memoria este distribuită fizic peste nodurile sistemului, dar pentru toate procesoarele sistemului este vizibilă ca un spațiu de adrese global unic comun. Vezi mai jos pentru mai multe despre asta.

SISD

Arhitectura SISD  este un computer cu arhitectură tradițională von Neumann cu un singur procesor care execută o instrucțiune după alta în secvență, operând pe un singur flux de date. Această clasă nu folosește nici paralelism de date, nici de instrucțiuni și, prin urmare, mașina SISD nu este paralelă. Procesoarele pipeline , superscalare și VLIW sunt, de asemenea, denumite în mod obișnuit la această clasă .

SIMD

Reprezentanții tipici ai SIMD sunt procesoare vectoriale , procesoare moderne obișnuite atunci când lucrează în modul de executare a instrucțiunilor de extensie vectorială, precum și o subspecie specială cu un număr mare de procesoare  - procesoare matrice. În mașinile SIMD, un procesor le încarcă o instrucțiune, un set de date și efectuează operația descrisă în această instrucțiune pe întregul set de date în același timp.

SM-SIMD (memorie partajată SIMD)

Această subclasă include procesoare vectoriale . În calculul științific, majoritatea operațiunilor implică aplicarea unei singure operații la o cantitate mare de date. Mai mult, această operație poate fi efectuată pe fiecare element de date independent unul de celălalt, adică a existat paralelism de date, pentru utilizarea căruia au fost create procesoare vectoriale.

Procesoarele vectoriale s-au răspândit la începutul anilor '70, în primul rând în supercalculatoarele din acele vremuri (CDC STAR-100, Cray-1 ). De la mijlocul anilor 1970 până la sfârșitul anilor 1980, toate supercalculatoarele au fost mașini vectoriale, iar un supercalculator în acei ani însemna o mașină vectorială. Supercomputerele vectoriale sunt încă folosite în industrie și în calculul științific și sunt încă incluse în lista de produse a aproape tuturor producătorilor de top de supercomputere: NEC , Fujitsu , Hitachi , Cray . Dezvoltarea miniaturizării în tehnologia informatică a făcut posibilă adăugarea unei metode vectoriale de prelucrare a datelor la microprocesoarele moderne, unde acestea sunt reprezentate de un set de instrucțiuni-extensii speciale ale asamblatorului [11] [12] . Prin executarea lor, procesorul trece în modul vector și se transformă într-o mașină SM-SIMD pentru acest timp.

DM-SIMD (memorie distribuită SIMD)

Așa-numitele „ procesoare matrice ” aparțin acestei subclase . Acestea sunt o serie de procesoare care sunt controlate de un procesor de control, efectuând o operație pe propria sa porțiune de date stocate în memoria locală la comanda sa. Deoarece nu există comunicare între procesoare, nu este necesară sincronizarea, ceea ce face posibilă atingerea unor viteze de calcul enorme și extinderea cu ușurință a sistemului prin simpla creștere a numărului de procesoare. Pentru a înțelege munca unui procesor matricial, este suficient să ne imaginăm lecții de aerobic de dimineață la televizor, în care un actor stabilește mișcări în studio și milioane de telespectatori le repetă în ritm simultan în toată țara.

Întrucât procesoarele matriceale pot fi folosite doar pentru o gamă limitată de sarcini, timp îndelungat au existat doar sub formă de mașini experimentale, foarte specializate. În plus, producția lor a necesitat crearea de procesoare specializate. Prima încercare (mai degrabă nereușită) de a construi un procesor matrice a fost computerul ILLIAC IV13] începutul anilor '70, a doua încercare celebră a fost mașinile CM-1 și CM-2 de la Thinking Machines și supercalculatoarele de la MasPar la începutul anilor. [13] . Dezvoltarea miniaturizării în calcul a făcut posibilă revenirea la ideea procesoarelor cu matrice și reînvierea acesteia în plăcile grafice ( GPGPU ), care sunt folosite pentru calculul de înaltă performanță.

MISD

O serie de cercetători includ computere transportoare la clasa MISD , dar acest lucru nu a găsit recunoașterea finală. De asemenea, este posibil să se considere sistemele MISD ca sisteme de așteptare la cald. În plus, unii se referă la arhitectura MISD ca matrice sistolice de procesoare.

MIMD

Clasa MIMD include sisteme multiprocesoare , în care procesoarele procesează mai multe fluxuri de date. Acestea includ mașini tradiționale cu multiprocesor , procesoare cu mai multe nuclee și mai multe fire și grupuri de computere .

Lucrând cu memoria, această clasă este împărțită în subclase.

SM-MIMD (memorie partajată MIMD)

Acest grup include mașini multiprocesoare cu memorie partajată , procesoare multi-core cu memorie partajată.

Exemplul clasic și cel mai comun este multiprocesoare  - servere SMP multiprocesoare. În astfel de mașini, memoria este vizibilă pentru fiecare procesor ca un spațiu de adrese comun , iar procesoarele comunică între ele printr-o magistrală de adrese comună prin variabile partajate . Pentru fiecare procesor, accesul la orice locație de memorie este același (vezi UMA ).

După cum sa menționat mai sus, memoria, care este vizibilă pentru programator ca un spațiu comun de adrese, poate fi distribuită fizic între nodurile sistemului. O astfel de subclasă de mașini se numește DSM-MIMD ( distributed shared memory MIMD ). În această subclasă de mașini, fiecare procesor are propria sa memorie locală, iar procesorul accesează alte zone de memorie printr-o conexiune de mare viteză. Deoarece accesul la diferite părți ale memoriei partajate nu este același (este mai rapid pentru partea locală, mai lent pentru altele), astfel de sisteme se numesc NUMA (de la Non-Uniform Memory Access ). Deoarece memoria este distribuită fizic, devine dificil pentru fiecare procesor să vadă modificările făcute de alte procesoare în memorie. Există mai multe modalități de a rezolva această problemă: prin coerență cache - ccNUMA , fără coerență cache - nccNUMA.

Sistemele NUMA au o scalabilitate mai mare, permițând crearea unor sisteme de calcul masiv paralele, unde numărul de procesoare ajunge la câteva mii.

Modelul de programare în astfel de sisteme rămâne același - fire de execuție schimbă date între ele prin variabile partajate.

Pro: relativ ușor de programat, suportul SMP există de mult timp pe toate sistemele de operare majore .

Dezavantajul acestor mașini este scalabilitatea lor scăzută : cu cât sunt mai multe procesoare în sistem, cu atât sarcina pe magistrala comună devine mai mare . În versiunile comerciale ale unor astfel de sisteme, numărul maxim de procesoare nu depășește 64.

DM-MIMD (memorie distribuită MIMD)

Această subclasă include mașini MIMD cu multiprocesor cu memorie distribuită.

Fiecare procesor are propria sa memorie locală care nu este vizibilă pentru alte procesoare. Fiecare procesor dintr-un astfel de sistem își îndeplinește sarcina cu propriul set de date în memoria locală. Dacă un procesor are nevoie de date din memoria altui procesor, acest procesor schimbă mesaje cu un alt procesor, adică în astfel de sisteme, se folosește modelul de programare Message Passing , folosind Mașina Virtuală Paralelă (PVM) sau o implementare a Message Passing . Interfață (MPI).

Principalul avantaj al mașinilor DM-MIMD este scalabilitatea lor ridicată , care permite crearea de sisteme masiv paralele de câteva sute de mii de procesoare.

Clusterele de computere precum Beowulf aparțin și ele acestei clase ca rețea de stații de lucru .

SPMD și MPMD

În literatura de specialitate [14] [15] , se mai pot găsi astfel de subclase ale clasei MIMD: SPMD ( program unic, date multiple ) și MPMD ( programe multiple, date multiple ).

SPMD (single program, multiple data) - descrie un sistem în care un singur program este executat pe toate procesoarele unei mașini MIMD, iar pe fiecare procesor procesează diferite blocuri de date.

MPMD (programe multiple, date multiple) - descrie un sistem, a) în care programul master rulează pe un procesor al mașinii MIMD și programul slave pe celălalt, a cărui activitate este controlată de programul master (principiul master / sclav sau stăpân/lucrător ); b) în cazul în care programe diferite rulează pe noduri diferite ale mașinii MIMD care procesează aceeași matrice de date în moduri diferite (principiul analizei cuplate ), în cea mai mare parte funcționează independent unul de celălalt, dar din când în când fac schimb de date cu trece la pasul următor.

Caracteristici

Raportul dintre anumite mașini și o anumită clasă depinde în mare măsură de punctul de vedere al cercetătorului. Deci, mașinile transportoare pot fi atribuite clasei SISD (pipeline - un singur procesor) și clasei SIMD (flux de date vectoriale cu un procesor pipeline) și clasei MISD (multe procesoare pipeline procesează secvențial un flux de date), și la clasa MIMD - ca execuția unei secvențe de comenzi diferite (operații ale etapelor de conductă) cu un flux de date scalare multiplu (vector).

Având în vedere complexul de calcul la diferite niveluri de integrare, acesta poate fi atribuit diferitelor clase: de exemplu, supercalculatorul de înaltă performanță ASCI Blue Pacific masiv paralel a fost o mașină DM-MIMD, în care fiecare nod comunica cu altul folosind transmiterea de mesaje, dar fiecare nodul din acest supercomputer, la rândul său, era un server multiprocesor RS/6000 SMP, adică era o mașină SM-MIMD. În același timp, ASCI Blue Mountain High-Performance Massively Parallel Supercomputer era un sistem de servere SMP (SM-MIMD) conectate la o mașină de memorie partajată distribuită (adică DSM-MIMD).

Note

  1. Flynn M. J.   Calculatoare cu viteză foarte mare // Proc IEEE, 1966, 54 . - P. 1901-1901.
  2. Flynn M. J.   Some computer organizations and their effectiveness // IEEE Transactions on Computers, 1972, 21 (9). - P. 948-960.
  3. Padova, 2011 , p. 689.
  4. 12 Padova , 2011 , p. 689-697.
  5. Severance_Dowd, 1998 , p. 258.
  6. Stallings, 2009 , p. 630.
  7. Patterson_Hennessy, 2011 , p. 649.
  8. Valentin Sedykh / Multiprocessing today. 2004 . Consultat la 18 octombrie 2013. Arhivat din original pe 19 octombrie 2013.
  9. PREZENTARE GENERALĂ A SUPERCOMPUTERELOR RECENTE: Principalele clase de arhitectură (downlink) . Consultat la 8 octombrie 2013. Arhivat din original la 31 decembrie 2013. 
  10. Severance_Dowd, 1998 , p. 259-267.
  11. SSE
  12. 3DNow!
  13. 1 2 Patterson_Hennessy, 2011 , p. 7.14.
  14. RS/6000SP, 1996 , p. 3.
  15. Practical MPI Programming, 1999 , p. 7.

Literatură