Nel 1966, m.J. Flynn ha classificato le forme di architettura informatica parallela in quattro gruppi che si basano sul numero di istruzioni e elementi di dati e sulla concorrenza nelle sequenze di elaborazione (o flussi), dati e istruzioni. Il nucleo dei sistemi che implementano il calcolo parallelo sono: l'unità di controllo; l'elemento di elaborazione o il processore; e la memoria. A seconda del tipo di architettura, un sistema può utilizzare un singolo o più processori e una memoria condivisa o distribuita.
Nel calcolo parallelo, un lavoro viene suddiviso in parti e le parti sono suddivise in una serie di istruzioni. Le istruzioni di ciascuna parte vengono eseguite contemporaneamente su CPU diverse e le parti vengono eseguite contemporaneamente.[1]
Come funziona Misd
In MISD, ci sono più elementi di elaborazione che hanno la propria unità di controllo e la memoria locale che consente a ciascun processore di gestire le istruzioni in modo indipendente. Per accelerare il processo di risoluzione dei problemi, il problema è diviso in sotto-problemi e ogni sotto-problema ha il proprio set di programmi o flussi di istruzioni. Diversi flussi di istruzioni vengono alimentati all'unità di controllo di ciascun processore e, a loro volta, le unità di controllo inviano i flussi di istruzioni ai processori. Ogni processore opera quindi sui dati in modo indipendente ed elabora le flusso di istruzioni in modo asincrono. Nella maggior parte dei casi, l'output di un processore diventa un input del processore successivo, il che significa che i processori stanno eseguendo programmi diversi o risolve diversi sotto-problemi del problema principale.
Fonte immagine: Java T Point
Come il MISD differisce dalle altre classi
Ogni sistema informatico che rientra nella classificazione di Flynn gestisce le istruzioni e i flussi di dati in modo diverso. Ecco una panoramica delle altre tre classi di sistemi informatici nella tassonomia di Flynn. Sulla base delle loro descrizioni, vedrai come ognuno differisce da MISD.
SISD (singolo istruzione, singolo dati)
Come suggerisce il nome, esiste solo un'istruzione e un flusso di dati per il sistema informatico SSID. Questo è un computer uniprocessore che è anche noto come computer sequenziale perché le istruzioni vengono elaborate in modo sequenziale. La memoria primaria memorizza i dati e le istruzioni mentre l'unità di controllo decodifica le istruzioni e quindi invia le istruzioni al processore. Questo tipo di architettura si trova principalmente nei computer convenzionali, nei minicomputer e nelle workstations.
Fonte immagine: Java T Point
SIMD (singola istruzione, più dati)
A differenza di SISD, questo sistema informatico ha più processori. I processori stanno eseguendo un'unica istruzione su diversi flussi di dati. Esiste una memoria e un'unità di controllo che recupera i dati dalla memoria e invia le stesse istruzioni a tutti gli elementi di elaborazione. Sebbene i processori ricevano le stesse istruzioni dall'unità di controllo, operano su diversi elementi di dati. Questo tipo di architettura è generalmente implementato su computer o applicazioni utilizzate nel calcolo scientifico come la macchina per l'elaborazione vettoriale di Cray, in cui sono coinvolti più vettori e matrici.
Fonte immagine: Java T Point
MIMD (istruzioni multiple, più dati)
In questo modello di calcolo parallelo, più processori che hanno la propria unità di controllo ma potrebbero non avere necessariamente il proprio modulo di memoria. Ogni processore esegue un set separato di istruzioni e flussi di dati che rendono le macchine IMID in grado di gestire qualsiasi tipo di applicazione. Esistono due categorie in MIMD in base al tipo di memoria utilizzata: MIMD a memoria condivisa e MIMD a memoria distribuita.
MIMD di memoria condivisa: i processori sono collegati a una singola memoria. La comunicazione tra i processori è attraverso la memoria globale, quindi tutti i processori hanno accesso ad essa. Tutte le transazioni e le modifiche dei dati archiviate nella memoria globale sono visibili a tutti i processori.
MIMD della memoria distribuita: ogni processore ha una propria memoria che memorizza i dati. I dati archiviati sulla memoria locale del processore non sono visibili a tutti i processori. Poiché la memoria non è condivisa, la comunicazione tra i processori passa attraverso il canale di comunicazione di processo (IPC).
Fonte immagine: Java T Point
Dove viene usato il MISD?
Mentre le altre classi sono utilizzate nei sistemi informatici generici, MISD è più teorico e non praticamente utilizzato in molte applicazioni. È stato implementato in array sistolici che è un sistema ideale per applicazioni come l'intelligenza artificiale, l'elaborazione delle immagini, il riconoscimento del modello e altri compiti che imitano l'elaborazione dei cervelli animali. Negli array sistolici, il processore legge i dati di un altro processore, esegue un'operazione e invia un output che verrà utilizzato da un altro processore. La struttura generale delle array sistoliche riflette quella dell'architettura MISD. Tuttavia, c'è un argomento se MISD sia effettivamente l'architettura dietro array sistolico poiché i dati di input sono in genere un vettore e non un singolo valore di dati. Tuttavia, altri direbbero che un vettore di input è considerato un singolo set di dati che qualifica gli array sistolici come macchine MISD. In ogni caso, le array sistoliche rimangono come il classico esempio di architettura MISD.
MISD è anche conosciuta come l'architettura dietro i sistemi di controllo del volo Space Shuttle a causa del suo migliore ridimensionamento e uso efficiente delle risorse computazionali.
Generalmente, l'architettura MISD viene utilizzata raramente e solo alcune macchine sono costruite utilizzando questa architettura. La maggior parte di questi sistemi non sono disponibili in commercio.
Conclusione
MISD è una delle quattro architetture di calcolo parallele classificate per m.J. Flynn dove più elementi di elaborazione elaborano diversi set di flussi di istruzioni da un singolo flusso di dati. Ogni processore ha una propria unità di controllo e memoria e gli elementi di elaborazione sono flussi di istruzioni di elaborazione in modo indipendente. Tra le quattro classi, MISD è il tipo di architettura meno utilizzato con solo due importanti esempi di applicazioni in cui viene utilizzato: array sistolico e sistemi di controllo del volo con navetta spaziale. Fino ad oggi, non molte applicazioni usano MISD, ma è particolarmente utile per applicazioni altamente specializzate.
Fonti:
[1] Geeks for Geeks. Architettura per computer | Tassonomia di Flynn. 6 gennaio 2020. https: // www.geeksforgeeks.Org/Computer-Architecture-Flynns-Taxonomy/. Accesso al 22 marzo 2022