Il calcolo parallelo sta assumendo un ruolo sempre più importante nei calcolatori moderni. Sono stati realizzati, nel corso degli anni, molti sistemi che adottano tale architettura. È possibile organizzarli in categorie utilizzando uno schema noto: la tassonomia di Michael J. Flynn (1966).
La classificazione illustrata (immagine di copertina, Figura 18) è basata su due concetti: i flussi di istruzioni e i flussi di dati.
L’architettura SISD (Single Instruction stream, Single Data stream -> flusso di istruzioni singolo, flusso di dati singolo) è implementata nella macchina di Von Neumann ed è caratterizzata da un solo flusso di istruzioni e un solo flusso di dati. Tale architettura è capace di svolgere una sola attività per volta: ad ogni passo temporale viene eseguita una sola istruzione. È un’architettura utilizzata su tutti i calcolatori convenzionali.
Una macchina SIMD (Single Instruction stream, Multiple Data stream -> flusso di istruzioni singolo, flusso di dati multiplo), come ad esempio un supercomputer vettoriale e un array processor, dispone di una sola unità di controllo e di varie unità aritmetico-logiche. L’unità di controllo emette un’istruzione per volta, mentre le molteplici unità ALU permettono, alle macchine SIMD, di operare simultaneamente su diversi flussi di dati. Un’architettura SIMD adotta la tecnica del parallelismo a livello di dati.
Nell’architettura MISD (Multiple Instruction stream, Single Data stream -> flusso di istruzioni multiplo, flusso di dati singolo) più flussi di istruzioni lavorano contemporaneamente su unico flusso di dati. Su questo tipo di architettura sono stati realizzati alcuni progetti di ricerca, ma attualmente non esistono sistemi di calcolo che implementano il progetto MISD.
Le macchine MIMD (Multiple Instruction stream, Multiple Data stream -> flusso di istruzioni multiplo, flusso di dati multiplo) implementano un’architettura che si compone di diverse CPU indipendenti. Più processi sono eseguiti contemporaneamente su più processori. Viene adottata la tecnica del parallelismo a livello di thread. Questi sistemi possono essere a memoria distribuita o condivisa.
La tassonomia di Flynn ha dei limiti: ad esempio, non è capace di distinguere tra architettura a memoria distribuita e architettura a memoria condivisa.
Analizziamo in questa sezione, più in dettaglio, solo l’architettura SIMD.
Un calcolatore SIMD prevede molteplici unità che elaborano dati diversi in parallelo. La stessa istruzione viene eseguita contemporaneamente da molte unità di elaborazione su flussi di dati differenti. In questo caso, come già menzionato, viene adottata la tecnica del parallelismo a livello di dati.
È un sistema ottimizzato per il calcolo su matrici e vettori ed è in grado di favorire l’elaborazione di dati multimediali. Alcuni software multimediali prevedono algoritmi complessi che possono essere eseguiti, in modo più efficiente, da una struttura SIMD.
Una architettura SIMD fa uso di istruzioni denominate istruzioni SIMD. Quest’ultime sono in grado di manipolare una elevata quantità di dati in parallelo.
Quest’architettura presenta lo svantaggio di richiedere un numero sempre più elevato di registri nel microprocessore. In alcuni calcolatori più datati, per evitare la realizzazione di un chip assai complesso e ridurre quindi i costi di produzione per implementare una SIMD, si utilizzavano i registri della FPU. Quest’ultima tipologia di progettazione rendeva impossibile l’utilizzo contemporaneo di istruzioni SIMD e istruzioni specifiche della FPU, a meno che non si consentivano lenti cambi di contesto. Questo progetto rappresentava un problema per le prestazioni di un software SIMD.
Anche i vecchi compilatori rappresentavano un problema: non erano capaci di gestire in modo efficiente le istruzioni SIMD.
Nonostante le prime difficoltà nella diffusione di software SIMD, la realizzazione di compilatori più potenti e il rilascio di istruzioni sempre più efficienti, come ad esempio quelle SSE (Streaming SIMD Extensions) della Intel o quelle AltiVec utilizzate nei PowerPC, ne hanno consentito una diffusione più rapida.
Sono stati realizzati numerosi processori dotati di istruzioni SIMD. Ad esempio: il PowerPC (Apple-IBM-Motorola) con le istruzioni AltiVec; il Pentium MMX (Intel) con istruzioni MMX (Multi-Media eXtensions); il Pentium III (Intel) con le istruzioni SSE e Athlon Classic (AMD) con il 3DNow (un set di istruzioni SIMD realizzato dalla AMD).
Anche le moderne schede grafiche dei calcolatori sono dotate di processori SIMD dedicati. Il processore SIMD dedicato, allocato su una scheda grafica, libera il processore (principale) di un calcolatore dalle dispendiose elaborazioni legate alla realizzazione di immagini e video tridimensionali.
I processori SIMD sono anche utilizzati per la realizzazione di consolle per videogiochi, come ad esempio la PlayStation 2 (capace di lavorare su vettori a quattro dimensioni) e la PlayStation 3 dotata di processore Cell.
Sommario, Bibliografia e Sitografia
Vincenzo Barile
segue…