MIMD (acronimul expresiei din limba engleză Multiple Instruction, Multiple Data - „Instrucțiuni multiple, date multiple”) reprezintă una dintre arhitecturile de calculatoare paralele menționate în Taxonomia lui Flynn, fiind o tehnică de exploatare a paralelismului datelor și instrucțiunilor. Calculatoarele care folosesc MIMD au un număr de procesoare care funcționează în mod asincron și independent. La orice moment, diferite procesoare pot executa instrucțiuni diferite pe secțiuni diferite de date. Arhitecturile MIMD pot fi folosite într-o serie de domenii de aplicații, cum ar fi proiectarea asistată de calculator / fabricarea asistată de calculator, simulare, modelare, și switch-uri (întrerupătoare) de comunicații.

Din punct de vedere al memoriei, calculatoarele bazate pe arhitectura MIMD pot fi de două tipuri: cu memorie partajată sau cu memorie distribuită. Această clasificare se referă la modul în care procesoarele MIMD acceseaza memoria. Calculatoarele cu memorie partajată pot fi de tip ierarhic, extins, sau bazat pe magistrală, pe când cele cu memorie distribuită pot avea scheme de interconectare de tip hiper-cub sau plasă.

Taxonomia lui Flynn

Instrucțiuni singulare Instrucțiuni multiple
Date singulare SISD MISD
Date Multiple SIMD MIMD

Modelul cu memorie partajată modificare

Procesoarele sunt toate conectate la o memorie "disponibilă global", fie printr-un mijloc software, fie hardware. De obicei, coerența memoriei este menținută de către sistemul de operare.[1]
Din punctul de vedere al unui programator, acest model este mai ușor de înțeles decât modelul cu memorie distribuită. Gestionarea coerenței memoriei de către sistemul de operare, si nu de către programul scris, reprezintă un alt avantaj. Două dezavantaje cunoscute sunt: scalabilitatea pentru procesoare cu arhitectura pe mai mult de 32 de biți este dificil de obținut, și modelul cu memorie partajată este mai puțin flexibil decât modelul cu memorie distribuita.[1]
În cadrul arhitecturii procesoarelor, există mai multe exemple de memorii partajate: UMA (Uniform Memory Access), COMA (Cache Only Memory Access) si NUMA (Non-Uniform Memory Access) [2]

Bazate pe magistrală modificare

Calculatoarele de tip MIMD cu memorie partajată au procesoare care partajează o memorie centrală, comună. În forma cea mai simplă, toate procesoarele sunt atașate la o magistrală care le conectează la memorie. Aceasta înseamnă că mașinile cu memorie partajată împart o anumită memorie comună.

Ierarhice modificare

Calculatoarele de tip MIMD cu memorie partajată ierarhic folosesc o ierarhie de magistrale pentru a oferi procesoarelor acces la memoria fiecăruia dintre ele. Procesoarele de pe plăci de siliciu diferite pot comunica prin magistrale inter-nodale. Magistralele sprijină comunicația dintre plăci. Folosind acest tip de arhitectură, un calculator poate suporta peste o mie de procesoare.

Modelul cu memorie distribuită modificare

În calculatoarele MIMD cu memorie distribuită, fiecare procesor are locația sa individuală de memorie, fără a avea acces direct la memoria altui procesor. Pentru ca datele să poată fi partajate, trebuiesc trecute de la un procesor la altul sub forma unui mesaj. Deoarece nu există memorie partajată, disputa pentru accesul la memorie nu este o problemă la fel de mare pentru aceste calculatoare. Nu este fezabil din punct de vedere economic să se conecteze un număr mare de procesoare în mod direct, unul cu celălalt. Un mijloc pentru evitarea multitudinii de conexiuni directe este conectarea fiecărui procesor cu doar câteva dintre celalalte. Acest tip de proiectare poate fi ineficientă din cauza timpului adițional necesar pentru transmiterea unui mesaj de la un procesor la altul de-a lungul căii de comunicație. Cantitatea de timp necesară pentru ca procesoarele să execute rutarea simplă a mesajelor poate fi substanțială. Pentru a reduce această risipă de timp, au fost proiectate scheme de interconectare, dintre care modelul hiper-cub și cel de tip plasă sunt cele mai populare. Ca exemplu de arhitecturi cu memorie distribuită, se remarcă: MPP (Massively Parallel Processors) și COW (Clusters Of Workstations). Prima este complexă și costisitoare: multe super-calculatoare conectate prin rețele broadband. COW este versiunea "home-made" a acesteia, dar la o fracțiune din preț.[2]

Rețeaua de interconectare hiper-cub modificare

Într-o mașină MIMD cu memorie distribuită, ce conține patru procesoare interconectate printr-o rețea de tip hiper-cub, un procesor și o memorie sunt plasate la fiecare nod al unui pătrat. Diametrul sistemului este numărul minim de pași necesari pentru ca un procesor să trimită un mesaj procesorului care se găsește la distanța cea mai mare de acesta. Astfel, de exemplu, diametrul unui 2-cub este 1. Într-un sistem hiper-cub cu opt procesoare și fiecare procesor și modul de memorie plasat într-un nod al cubului, diametrul este egal cu 3. În general, un sistem care conține 2N procesoare cu fiecare procesor conectat direct cu alte N procesoare, diametrul sistemului este egal cu N. Un dezavantaj al sistemului hiper-cub este că trebuie să fie configurat în puteri ale lui doi, și astfel trebuie construită o mașină de calcul ce poate avea un număr mai mare de procesoare decât este nevoie pentru aplicațiile acesteia.

Rețeaua de interconectare de tip plasă modificare

Într-o mașină de calcul MIMD cu memorie distribuită, conectată printr-o rețea de tip plasă, procesoarele sunt poziționate sub forma unei grile bi-dimensionale. Fiecare procesor este conectat la cei patru vecini imediați. Muchiile grilei pot fi conectate împrejur. Un avantaj al rețelei de tip plasă față de hiper-cub este faptul că plasa nu trebuie neapărat să fie realizată în configurații de puteri ale lui doi. Un dezavantaj este ca diametrul rețelei plasă este mai mare decât al hiper-cubului pentru sisteme cu mai mult de patru procesoare.

Referințe modificare

  1. ^ a b Ibaroudene, Djaffer. Parallel Processing, EG6370G: Chapter 1, Motivation and History. Lecture Slides. St Mary's University, San Antonio, Texas. Spring 2008. Eroare la citare: Etichetă <ref> invalidă; numele "ref1" este definit de mai multe ori cu conținut diferit
  2. ^ a b Andrew S. Tanenbaum (1997). Structured Computer Organization (4 ed.). Prentice-Hall. pp. 559–585. ISBN 978-0130959904.

Vezi și modificare