Un’architettura
MIMD si differenzia da una architettura SIMD perché in essa gli elementi di
elaborazione (PE: Processing Elements) diventano dei veri e propri processori.
I PE di un processore vettoriale, infatti, non hanno la capacità di
decodificare le istruzioni. I vari PE agiscono in sincronia fra loro grazie
alla supervisione dell’unica Unità di controllo. In un’architettura MIMD gli
elementi di elaborazione hanno la capacità di decodificare autonomamente le
istruzioni.
Ogni
processore è dunque in grado di elaborare autonomamente un singolo processo. In
un’architettura MIMD
abbiamo una
serie di processori, di porte di IO e moduli di memoria
In un
sistema di tipo MIMD è il sistema operativo che distribuisce i vari processi
(programmi in esecuzione) tra i vari microprocessori liberi, stabilisce la
distribuzione delle risorse (memoria, unità di IO), e permette ai vari
microprocessori di comunicare fra di loro.
Le
architetture MIMD si distinguono soprattutto per le modalità con cui avviene il
dialogo fra i vari microprocessori e la condivisione di risorse quali memorie e
unità di IO.
Da questo
punto di vista distinguiamo due tipi di organizzazioni MIMD:
1. 1. architettura
a microprocessori loosely coupled
2. 2. architettura
a microprocessori tightly coupled.
In
un’architettura loosely coupled non abbiamo una vera e propria condivisione
delle risorse fra i vari microprocessori. Ogni microprocessore è dotato di
propri moduli di memoria e unità di IO. Spesso tutto è racchiuso in moduli
integrati in un singolo chip
I vari
moduli possono dialogare fra di loro tramite un sistema di trasferimento di
messaggi (STM).
L’STM può
essere un semplice bus che mette in comunicazione i vari moduli oppure una
memoria condivisa. In quest’ultimo caso abbiamo un modulo di memoria cui possono accedere tutti i moduli; lo
scambio di informazioni avviene attraverso la scrittura di messaggi in un’area
di memoria da parte di un processore e di lettura degli stessi da parte
dell’altro.
Per
interfacciarsi con l’STM, i vari moduli utilizzano una Rete di
interfacciamento. Essa si occupa di inviare i messaggi del modulo verso gli
altri moduli oppure di gestire le comunicazioni quando più moduli diversi
vogliono comunicare contemporaneamente con il modulo cui essa appartiene. In
tal caso, la rete di interfacciamento ha il compito di scegliere il messaggio
da instradare verso il suo processore e di memorizzare temporaneamente
(bufferizzare) gli altri messaggi in un dispositivo di memoria contenuto nella
rete stessa.
La
definizione di loosely coupled o accoppiamento non ben definito sta ad indicare
che i vari microprocessori, in realtà, non condividono le proprie risorse. Ogni
microprocessore è dotato di proprie unità di IO e memorie indipendenti da
quelle degli altri microprocessori. Si dice anche che il grado di accoppiamento
fra i vari microprocessori è basso. In sostanza la comunicazione fra le varie
risorse può avvenire esclusivamente attraverso il dialogo fra i
microprocessori. Ne deriva un notevole rallentamento di questa architettura con
diminuzione del suo throughput se il numero di interazioni fra i vari moduli
non è elevato.
Microprocessori
tightly coupled.
Qualora la
velocità del sistema e quindi il throughput relativo sia fondamentale, non si
può accettare il rallentamento introdotto dall’interscambio di informazioni fra
i vari microprocessori attraverso l’STM. La soluzione alternativa è
l’architettura tightly coupled. Attraverso opportune reti di interconnessione
ogni processore può accedere direttamente a tutte le unità di IO e a tutti i
moduli di memoria, oltre che, naturalmente, poter dialogare con gli altri microprocessori.
La struttura di principio di questa organizzazione è rappresentata dalla figura
seguente.