Differenza tra architettura SISD, SIMD, MISD e MIMD in informatica

Differenza tra architettura SISD, SIMD, MISD e MIMD in informatica

L’idea di distribuire il carico computazionale non è recente, infatti già nel 1966 Michael J. Flynn propose una classificazione delle architetture dei sistemi di calcolo secondo la loro capacità di elaborare parallelamente flussi di istruzioni o dati. Tale ripartizione, nota come tassonomia di Flynn, è in linea di massima valida ancora oggi. Le categorie proposte furono le seguenti (architetture dei calcolatori):

  1. SISD (Single Instruction Single Data)
  2. SIMD (Single Instruction Multiple Data)
  3. MISD (Multiple Instruction Single Data)
  4. MIMD (Multiple Instruction Multiple Data)

Differenza tra architettura SISD, SIMD, MISD e MIMD in informatica

SISD (Single Instruction Single Data)

Le istruzioni vengono eseguite sequenzialmente su un dato alla volta. Fanno parte di questa categoria tutte le macchine con la classica architettura di Von Neumann, che sono la maggior parte degli elaboratori per uso personale disponibili sul mercato. Su queste architetture è comunque possibile dare vita a una certa forma di parallelismo, sia reale che percepito. Reale in quanto tramite tecniche di pipelining si possono elaborare più istruzioni contemporaneamente in diversi stadi di avanzamento; percepito perché ripartendo in modo appropriato l’utilizzo dell’unità di elaborazione tra vari processi (scheduling) si dà l’illusione all’utente di eseguire più attività nello stesso momento.

SIMD (Single Instruction Multiple Data)

Le istruzioni vengono eseguite sequenzialmente su più dati alla volta. I processori delle macchine appartenenti a questa categoria sono anche detti processori vettoriali” in quanto ogni singola istruzione di tali sistemi agisce su array di dati. Il parallelismo di questi sistemi è detto parallelismo sui dati” proprio perché operano su più dati contemporaneamente. Mentre in precedenza il calcolo vettoriale era prerogativa esclusiva dei super computer (il primo di essi a sfruttare il calcolo vettoriale fu il Cray X-MP del 1982), al giorno d’oggi la maggior parte dei microprocessori multipurpose commerciali contiene sottoinsiemi di istruzioni che operano su più dati contemporaneamente (ad esempio le istruzioni SSEx dei processori x86 Intel), così come tutte le moderne schede grafiche sono equipaggiate con GPU (Graphical Processing Unit) capaci di calcoli vettoriali e matriciali per l’utilizzo in applicazioni grafiche. A dispetto della loro efficienza nell’esecuzione di algoritmi che operano su vettori di dati, le architetture di tipo SIMD sono spesso molto complesse e necessitano di software scritto ad-hoc. è per questo ed altri motivi come l’alto costo di realizzazione, che nel panorama del calcolo ad alte prestazioni i sistemi di questo tipo sono andati via via diminuendo, lasciando il posto a sistemi con architettura di tipo MIMD.

MISD (Multiple Instruction Single Data)

Rientrano in questa tipologia tutti quei sistemi che sono in grado di eseguire contemporaneamente più istruzioni sullo stesso dato. Tipicamente nella maggior parte dei problemi si ha a che fare con grandi quantità di dati. Perciò le architetture di tipo SIMD e MIMD sono state impiegate in misura di gran lunga maggiore rispetto a quelle MISD. Non esistono dunque sistemi commerciali di questa tipologia che hanno conosciuto una rilevante diffusione.

MIMD (Multiple Instruction Multiple Data)

Infine, appartengono a questa tipologia gli elaboratori che sono in grado di eseguire contemporaneamente operazioni diverse su dati diversi, essendo dotati di più unità di elaborazione. Il calcolo parallelo è l’impiego naturale di queste macchine. I sistemi MIMD possono essere a loro volta suddivisi in base a come le unità di elaborazione accedono alla memoria.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *