Vai al contenuto

Supercomputer/ILLIAC IV

Wikibooks, manuali e libri di testo liberi.
Indice del libro

L'ILLIAC IV è uno dei più famosi e malfamati supercomputer della storia. Fu l'ultimo di una serie di computer di ricerca dell'University of Illinois. Il progetto dell'ILLIAC IV è un progetto basato su un parallelismo massivo con 256 processori sviluppato per trattare grandi quantità di dati, un'idea che è alla base dei processori vettoriali. La macchina fu alla fine presentata nel 1976 dopo una decade di sviluppo ed era molto in ritardo, molto costosa e con prestazioni molto inferiori a macchine come il Cray-1.

Verso i primi anni 60 lo sviluppo dei computer si indirizzava verso una diminuzione della complessità in modo da renderli più veloci potendo implementare direttamente in hardware le istruzioni. Infatti aggiungere funzioni poteva rendere il computer più lento dato che il clock della macchina dipende dalla velocità delle operazioni e il clock massimo è fissato dall'istruzione più lenta della macchina. Lo stato dell'arte del disegno dell'hardware di allora prevedeva il progetto dei singoli transistor che realizzavano le funzioni logiche della cpu. L'aggiunta di funzioni logiche aumenta il numero di transistor e quindi rallenta il sistema. Per raggiungere la massima velocità i progettisti di cpu dovevano cercare un compromesso ottimo.

Molte soluzioni vennero esplorate alla fine degli anni 60. Una di queste era l'utilizzo di un a struttura chiamata pipeline. Normalmente una cpu preleva un'istruzione, la decodifica l'esegue e salva il risultato. Tutte queste operazioni vengono eseguite da un'unità polifunzionale che può eseguire una singola istruzione alla volta. In una struttura a pipeline esistono diverse unità specializzate che eseguono questi compiti in modo parallelo, come in una catena di montaggio. La struttura a pipeline fu una delle maggiori innovazioni di Seymour Cray che rese il CDC 6600 fino a dieci volte più veloce dei suoi concorrenti.

Un'altra soluzione al problema era il calcolo parallelo. Progettare computer con un certo numero di cpu generiche. Un computer progettato in questo modo fornisce buone prestazioni solo quando il problema da affrontare può essere agevolmente suddiviso in un sottoinsieme di problemi più piccoli che ogni cpu affronta in modo indipendente. Non tutti i problemi possono essere parallelizzati difatti questo è tuttora un grande problema per l'informatica. L'uso di cpu generiche può essere molto costoso ma in un disegno massivamente parallelo si può utilizzare anche delle cpu più semplici.

La Westinghouse Electric Corporation esplorò questa soluzione con il progetto Solomon. Loro notarono che i computer erano utilizzati principalmente per eseguire calcolo matematici per gli ingegneri e gli scienziati. Loro svilupparono una cpu che si sarebbe occupata di controllare diverse unità di calcolo (che oggi chiamiamo ALU) che si occuperanno di svolgere i calcoli in parallelo. Ogni unità di calcolo eseguiva lo stesso programma ma con dati diversi un concetto conosciuto come SIMD. Con un contratto dell'US Air Force RADC researc arm svilupparono un prototipo di scheda madre nel 1964 ma il contratto con il RADC termino e Westinghouse decise di non continuare il progetto.

Uno dei principali sviluppatori del progetto Solomon Daniel Slotnick si trasferi all'University of Illinois e convinse l'università a continuare la ricerca. Nel 1964 l'università firmò un contratto con il DARPA per finanziare il progetto che in seguito sarebbe diventato l'ILLIAC IV seguendo la linea di ricerca già iniziata da altri progetti. Burroughs era un collaboratore primario e doveva fornire gli hard disk ad alta velocità altre a provvedere allo sviluppo del Burroughs B6500 un computer utilizzato per gestirli. Texas Instruments aveva un contratto per la realizzazione di diversi circuiti integrati Emitter coupled logic (ECL). ILLIAC è stata la prima macchina a utilizzare gli ECL. Lo sviluppo venne avviato nel 1965 e il primo progetto fu terminato nel 1966.

Il progetto puntava ad ottenere un computer in grado di processare un miliardo di istruzioni per secondo (un Gigaflops). Per realizzare questo si era previsto di utilizzare 256 unità elementari di calcolo a 13 Mhz gestite da quattro CPU. L'ILLIAC era progettato con un'architettura a 64 bit, ogni unità elementare aveva una memoria di 2048 parole per memorizzare i risultati. Le CPU erano in grado di accedere a tutta la memoria della macchina a differenza delle unità di calcolo, infatti queste per questioni di semplicità potevano accedere solo alla loro zona di memoria. Ogni unità di calcolo era dotata di 6 registri per uso generico e poteva spostare i dati dai registri verso un registro di una delle otto unità di calcolo circostanti.

Inizialmente si pensava di alloggiare tutte le 256 unità di calcolo in un solo computer ma in breve si comprese che il progetto andava modificato e semplificato. Si decise di dividere le unità in blocchi da 64 da alloggiare in armadi separati. Visti i ritardi di progetto e costruzione ci si rese conto che realisticamente si poteva realizzare un solo armadio e quindi le prestazioni iniziali da 1 Gigaflops venivano ridotte a 200 Megaflops.

Il lavoro all'univerità si concentro primariamente sulla realizzazione di trasferimento efficiente di dati verso le unità di calcolo. I problemi di questa tipologia di computer è che se non eseguono software parallelo non sono più veloci di altri sistemi di calcolo. Per permettere l'esecuzione di codice parallelo furono sviluppati molti linguaggi di programmazione come l'IVTRAN e il TRANQUIL, delle versioni parallele del Fortran e il Glypnir una conversione parallela dell'Algol. Normalmente questi linguaggi fornivano un supporto diretto degli array di dati da processare in modo da fruttare le unità di calcolo parallele.

Mentre il computer era sotto sviluppo alla fine degli anni 60 si svolsero diverse proteste all'università dato che il progetto era realizzato con sovvenzioni militari e molti ritenevano che l'università fosse in combutta con il ministero della difesa. Le proteste raggiunsero l'apice il 9 maggio 1970 il giorno delle Illazioni.
Dopo l'attentato del 24 agosto all'edificio di matematica dell'University of Wisconsin l'Università decise di abbandonare il progetto e il progetto passo in mano alla NASA che per via del Progetto Apollo aveva un'enorme disponibilità economica e era interessata ad ogni sviluppo tecnologico che potesse essere utilizzato in ambito spaziale. La NASA creò la Advanced Computing division, e la macchina venne spostata a Moffett Field California, casa dell'Ames Research Center.

Lo spostamento rallentò lo sviluppo della macchina infatti questa fu completata solo nel 1972. Dagli iniziali 8 milioni di dollari del progetto del 1966 il costo finale fu di 31 milioni di dollari e le prestazioni si erano ridotte dagli iniziali 1 Gigaflop a 100 Megaflops o 150 Megaflops di picco. Nonostante i problemi la macchina se doveva trattare problemi parallelizzabili era dalle 2 alle 6 volte più veloce di un CDC 7600. Per la NASA quella era una macchina perfetta dato che i problemi di fluidodinamica computazionale sono molto parallelizzabili.

Sebbene l'ILLIAC fu terminato nel 1972 la macchina non era affidabile. Continuava ad aver problemi di affidabilità che gli ingegneri tentarono di risolvere fino a quando nel 1974 fu in grado di eseguire il primo programma completo e divenne operativa. Nonostante la macchina fosse dichiarata operativa funzionava solo dal lunedì al venerdì ed era in grado di richiedere fino a 40 ore di manutenzione alla settimana. La prima applicazione completa fu pronta per il 1976, lo stesso anno in cui venne presentato il Cray-1, un supercomputer con le stesse prestazioni. La macchina fu quindi il più potente computer del pianeta anche se solo per pochi mesi dato che il Cray-1 era in grado di fornire l'80% di prestazioni in più a costi inferiori e con affidabilità maggiore. Tuttavia la macchina venne utilizzata negli anni seguenti e anzi a Ames svilupparono la loro versione di Fortran. Infine nel 1982 la macchina venne dismessa e l'advanced computing division venne disciolto.