MIMD - MIMD

MIMD.svg

In informatica , MIMD ( istruzione multipla, dati multipli ) è una tecnica impiegata per ottenere il parallelismo. Le macchine che utilizzano MIMD dispongono di un numero di processori che funzionano in modo asincrono e indipendente. In qualsiasi momento, diversi processori possono eseguire istruzioni diverse su diversi pezzi di dati.

Le architetture MIMD possono essere utilizzate in una serie di aree applicative come la progettazione assistita da computer / produzione assistita da computer , simulazione , modellazione e come interruttori di comunicazione . Le macchine MIMD possono appartenere a categorie di memoria condivisa o di memoria distribuita . Queste classificazioni si basano sul modo in cui i processori MIMD accedono alla memoria. Le macchine con memoria condivisa possono essere del tipo basato su bus , esteso o gerarchico . Le macchine a memoria distribuita possono avere schemi di interconnessione ipercubo o mesh .

Esempi

Un esempio di sistema MIMD è Intel Xeon Phi , discendente dalla microarchitettura Larrabee . Questi processori hanno più core di elaborazione (fino a 61 a partire dal 2015) in grado di eseguire istruzioni diverse su dati diversi.

La maggior parte dei computer paralleli, a partire dal 2013, sono sistemi MIMD.

Modello di memoria condivisa

Nel modello di memoria condivisa i processori sono tutti collegati a una memoria "disponibile a livello globale", tramite mezzi software o hardware. Il sistema operativo di solito mantiene la coerenza della memoria .

Dal punto di vista di un programmatore, questo modello di memoria è meglio compreso del modello di memoria distribuita. Un altro vantaggio è che la coerenza della memoria è gestita dal sistema operativo e non dal programma scritto. Due noti svantaggi sono: la scalabilità oltre trentadue processori è difficile e il modello di memoria condivisa è meno flessibile del modello di memoria distribuita.

Ci sono molti esempi di memoria condivisa (multiprocessori): UMA ( accesso alla memoria uniforme ), COMA ( accesso alla memoria solo cache ).

Basato su autobus

Le macchine MIMD con memoria condivisa hanno processori che condividono una memoria centrale comune. Nella forma più semplice, tutti i processori sono collegati a un bus che li collega alla memoria. Ciò significa che ogni macchina con memoria condivisa condivide un CM specifico, sistema bus comune per tutti i client.

Ad esempio, se consideriamo un bus con i client A, B, C collegati da un lato e P, Q, R collegati dal lato opposto, uno qualsiasi dei client comunicherà con l'altro tramite l'interfaccia bus tra di loro.

Gerarchico

Le macchine MIMD con memoria condivisa gerarchica utilizzano una gerarchia di bus (come, ad esempio, in un " albero grasso ") per fornire ai processori l'accesso alla memoria reciproca. Processori su schede diverse possono comunicare tramite bus inter-nodali. I bus supportano la comunicazione tra le schede. Con questo tipo di architettura, la macchina può supportare oltre novemila processori.

Memoria distribuita

Nelle macchine MIMD a memoria distribuita, ogni processore ha la propria posizione di memoria individuale. Ogni processore non ha una conoscenza diretta della memoria di un altro processore. Affinché i dati siano condivisi, devono essere passati da un processore a un altro come messaggio. Poiché non esiste memoria condivisa, la contesa non è un problema così grande con queste macchine. Non è economicamente fattibile collegare direttamente tra loro un gran numero di processori. Un modo per evitare questa moltitudine di connessioni dirette è collegare ciascun processore solo a pochi altri. Questo tipo di progettazione può essere inefficiente a causa del tempo aggiuntivo richiesto per passare un messaggio da un processore a un altro lungo il percorso del messaggio. La quantità di tempo necessaria ai processori per eseguire il semplice instradamento dei messaggi può essere notevole. I sistemi sono stati progettati per ridurre questa perdita di tempo e l' ipercubo e la mesh sono solo due degli schemi di interconnessione più diffusi.

Esempi di memoria distribuita (più computer) includono MPP (processori massicciamente paralleli) , COW (cluster di workstation) e NUMA (accesso non uniforme alla memoria ). Il primo è complesso e costoso: molti supercomputer accoppiati a reti a banda larga. Gli esempi includono ipercubo e interconnessioni mesh. COW è la versione "fatta in casa" per una frazione del prezzo.

Rete di interconnessione ipercubo

In una macchina a memoria distribuita MIMD con una rete di interconnessione del sistema ipercubo contenente quattro processori, un processore e un modulo di memoria sono posti a ciascun vertice di un quadrato. Il diametro del sistema è il numero minimo di passaggi necessari a un processore per inviare un messaggio al processore più lontano. Quindi, ad esempio, il diametro di un cubo 2 è 2. In un sistema ipercubo con otto processori e ogni processore e modulo di memoria posizionato nel vertice di un cubo, il diametro è 3. In generale, un sistema che contiene 2 ^ N processori con ogni processore direttamente connesso ad altri N processori, il diametro del sistema è N. Uno svantaggio di un sistema ipercubo è che deve essere configurato in potenze di due, quindi deve essere costruita una macchina che potrebbe potenzialmente averne molti di più processori di quanto sia realmente necessario per l'applicazione.

Rete di interconnessione mesh

In una macchina a memoria distribuita MIMD con una rete di interconnessione mesh, i processori sono posizionati in una griglia bidimensionale. Ogni processore è collegato ai suoi quattro vicini immediati. Le connessioni avvolgenti possono essere fornite ai bordi della rete. Un vantaggio della rete di interconnessione mesh sull'ipercubo è che il sistema mesh non deve essere configurato in potenze di due. Uno svantaggio è che il diametro della rete mesh è maggiore dell'ipercubo per i sistemi con più di quattro processori.

Guarda anche

Riferimenti