# Goodyear MPP

Il Goodyear Massively Parallel Processor è un supercomputer di tipo MPP costruito dalla Goodyear Aerospace (la divisione aerospaziale della Goodyear Tire & Rubber Company) per il Goddard Space Flight Center della NASA. Fu progettato per sviluppare un'enorme potenza computazionale ad un costo inferiore rispetto alle esistenti architetture di supercomputer. Ciò avveniva impiegando migliaia di semplici processori al posto di uno o poche complesse CPU. Il suo sviluppo iniziò nel 1979 e fu completato nel maggio del 1983. Fu impiegato dal 1985 al 1991.
Il Goodyear MPP era basato sul precedente STARAN che era composto da 4x256 processing element (PE) ad 1-bit. L'MPP era invece costituito da una matrice di 128x128 array processor sempre da un bit. I vari processor element (PE) operavano in modalità Single instruction multiple data (SIMD) dove ogni processore effettuava le stesse operazioni simultaneamente su dati diversi sotto il controllo di un'unità di controllo.
Nel 1991 l'MPP venne dismesso venendo donato allo Smithsonian Institution ed ora fa parte della collezione del National Air and Space Museum presso lo Steven F. Udvar-Hazy Center. Presso il Goddard Space Flight Center venne rimpiazzato da un superminicomputer MasPar MP-1 e da un Cray T3D.

## Applicazioni

L'MPP fu sviluppato inizialmente per l'analisi ad alta velocità delle immagini provenienti da satellite. Nei primi test fu capace di estrarre e separare differenti aree di terreno dalle immagini provenienti dal satellite Landsat in 18 secondi confrontato con le 7 ore che un DEC VAX 11/780 fino ad allora ci impiegava.
Quando il sistema fu posto in produzione l'ufficio Space Science and Applications della NASA propose agli scienziati di testare ed implementare una vasta gamma di algoritmi per l'MPP. Furono accettati 40 progetti che andarono a formare l'"MPP Working Group". Questi progetti furono presentati al primo simposio dell'elaborazione massiva parallela nel 1986.
Alcuni esempi di applicazioni sviluppate furono:
* Elaborazioni dei segnali dei dati provenienti da Radar ad apertura sintetica
* Generazione di mappe topografiche tramite Fotogrammetria delle immagini ricevute da satellite
* Modellazione matematica delle correnti oceaniche
* Grafica Ray tracing
* Reti neurali
* Risoluzione di grandi sistemi di equazioni lineari
* Simulazioni sui Raggi cosmici
* Computazione di insiemi di Mandelbrot in alta risoluzione.

## Architettura di sistema

L'hardware dell'MPP consiste nelle seguenti parti: Array Unit, Array Control Unit, Staging Memory e Host Processor.
L'Array Unit è il cuore del MPP. È composto da un array di (128x128) 16384 processing elements (PE) ognuno dei quali è connesso ai 4 Processing elements vicini rispettivamente posti sotto, sopra, a sinistra ed a destra. L'array di processori può essere configurato come un piano, un cilindro, in [daisy-chain oppure come un toro. I PE sono implementati su un chip custom in tecnologia silicon-on-sapphire LSI. Ogni PE ha un'unità aritmetica e logica, 35 shift register e 1024 bits di random access memory. Lavorano in modalità Bit splicing e possono operare su dati con lunghezza variabile. La frequenza operativa era di 10 MHz.
L'Array Control Unit o ACU invia i comandi e gli indirizzi di memoria a tutti i PE contenuti nell'Array Unit e da questo riceve i bit di status. Il programma in esecuzione è memorizzato nella memoria interna dell'ACU; L'ACU esegue in modo scalare parti del programma inviando in modo parallelo le istruzioni da eseguire all'Array Unit.
Lo Staging Memory è un blocco di memoria della dimensione di 32 Mebibyte usato per il buffering dei dati sull'Array Unit. È importante perché i PE hanno solamente un totale di 2 Megabyte di memoria (1024 bits per ogni PE) e perché fornisce una banda di connessione più veloce rispetto a quella dell Host'Processor (80 MB/s contro 5 MB/s). Lo Staging Memory effettua inoltre alcune manipolazioni sui dati come il "Corner turning" e l'accesso multidimensionale all'array. I dati vengono spostati tra lo Staging Memory e l'Array Unit attraverso 128 linee di comunicazione parallele.
L'Host Processor è il processore front end che carica in memoria il programma da eseguire e i dati da elaborare all'interno dell MPP. Nell'Host Process vengono eseguiti i vari tools di sviluppo e fornisce inoltre la connettività di rete. L'Host processor originale era un PDP-11, ma fu presto sostituito con un VAX 11/780 che eseguiva VMS programmato con un linguaggio MPP Pascal. Il VAX era collegato al MPP attraverso un canale DR-780.
* ↑ Massively Parallel Processor Yields High Speed, in Aviation Week & Space Technology, 28 maggio 1984, p. 157.