# IBM 7030 Stretch

L'IBM 7030, conosciuto anche come Stretch, fu il primo supercomputer a transistor prodotto da IBM. Il primo 7030 venne installato a Los Alamos nel 1961.
Inizialmente venduto a 13,5 milioni di dollari statunitensi in seguito il prezzo venne ridotto a 7,78 milioni di dollari per via delle prestazioni non all'altezza delle aspettative e il prezzo con i clienti che avevano già acquistato la macchina fu rinegoziato. Nonostante il 7030 fosse molto più lento di quanto ci si aspettasse comunque il supercomputer fu la più veloce macchina del pianeta tra il 1961 e il 1964, data di presentazione del CDC 6600.

## Storia dello sviluppo

Il Dr. Edward Teller del University of California Radiation Laboratory a Livermore California richiese un nuovo sistema di elaborazione per svolgere delle simuzioni tridimensionali di idrodinamica. Le proposte del nuovo sistema chiamato Livermore Automatic Reaction Calculator o LARC vennero richieste all'IBM e all'UNIVAC. Il sistema avrebbe dovuto avere un costo massimo di 2,5 milioni di dollari, avrebbe dovuto fornire uno o due milioni di istruzioni per secondo e sarebbe stato consegnato in due o tre anni al massimo dalla firma del contratto.
L'IBM attivò un piccolo team presso Poughkeepsie che includeva John Griffith e Gene Amdahl per lavorare allo sviluppo del nuovo sistema. Quando la proposta era oramai completa e pronta per la presentazione Ralph Palmer bloccò il team dicendo "È un errore". La proposta era basata su transistor a punto di contatto o transistor a superficie di barriera ma i da poco inventati transistor a diffusione avrebbero rese obsolete le precedenti tecnologie e quindi anche i progetti basati su di esse. Il team mostrò a Livermore la propria proposta ma disse "Noi non vogliamo realizzare questo sistema per voi, noi vogliamo realizzare un sistema molto migliore. Non sappiamo di preciso quanto costerà ma pensiamo che servirà un altro milione e un altro anno e non sappiamo quanto sarà veloce ma speriamo di arrivare a dieci milioni di istruzioni al secondo.
Nel maggio 1956 IBM perse la commessa per via del suo progetto troppo avveniristico. UNIVAC il leader dei supercomputer dell'epoca vinse il contratto per il sistema e realizzò il LARC, che venne rinominato Livermore Automatic Research Computer, un computer a base decimale.
Nel settembre del 1955 IBM essendo preoccupata che i laboratori di Los Alomos ordinassero un LARC propose la realizzazione di un sistema ad alte prestazioni in base binaria basato su una versione migliorata del progetto presentato ai laboratori di Livermore. I laboratori furono interessati alla proposta e nel gennaio del 1956 il progetto Stretch ebbe inizio.
Nel novembre del 1956 IBM firmò il contratto per un computer binario con prestazioni molto elevate, l'obiettivo era consegnare un sistema 100 volte più rapido dell'IBM 704 (circa 4 MIPS) entro il 1960.
Durante lo sviluppo fu necessario ridurre la frequenza di clock del sistema e questo portò a ridurre le prestazioni del sistema. I progettisti stimarono delle prestazioni di 60-100 volte l'IBM 704. Nel 1960 il prezzo fu fissato a 13,5 milioni di dollari e il sistema venne chiamato IBM 7030.
Nel 1961 i benchmark mostrarono che il sistema era circa 30 volte più veloce del 704 (circa 1,2 MIPS). Le modeste prestazioni del sistema portarono molto imbarazzo all'interno di IBM e nel maggio dello stesso anno Tom Watson annunciò la riduzione di prezzo del sistema che veniva portato a 7.78 milioni di dollari e la sua immediata dismissione. IBM avrebbe consegnato i sistemi già venduti ma non avrebbe accettato ulteriori ordini.

## Impatto

Sebbene dal punto di vista commerciale il sistema non fu un successo dal punto di vista tecnologico il sistema viene ricordato per le molte innovazioni che portò e che vennero utilizzate dai sistemi che lo seguirono. La logica a transistor Standard Modular System venne utilizzata come base per la realizzazione della linea di computer scientifici IBM 7090, per le linee di computer commerciali IBM 7070 e IBM 7080, per la serie IBM 1400 e l'IBM 1620. L'IBM 7302 Core Storage (componente base dell'IBM 7030) venne utilizzata anche dai sistemi IBM 7070, IBM 7080 e IBM 7090. Il Multitasking, la protezione della memoria, gli interrupt ad uso generico, il byte (formato da 8 bit) sono tutti concetti che vennero incorporati nella linea di computer IBM System/360 e in seguito nella maggior parte dei microprocessori. La pipeline, il prefetch delle istruzioni e la loro decodifica e l'interleaving della memoria sono tecniche che vennero utilizzate dei successivi supercomputer come l'IBM System/360 Model 91, 95, l'IBM System/470 Model 195, l'IBM 3090 e i supercomputer di molti concorrenti.
Queste tecniche in seguito vennero integrate nei microprocessori moderni come gli Intel Pentium e i Motorola/IBM PowerPC oltre che in molti microprocessori e microcontrollori di altri produttori.

## Acquirenti

* Los Alamos Scientific Laboratories (LASL) nell'aprile del 1961, attivato nel maggio del 1961, e utilizzato fino al 21 giugno 1971.
* U.S. National Security Agency nel febbraio del 1962 come CPU principale del sistema IBM 7950 Harvest, utilizzato fino al 1976, quando il sistema di gestione su nastro IBM 7955 ebbe dei problemi e non venne rimpiazzato.
* Lawrence Livermore Laboratory, Livermore California.
* Atomic Weapons Establishment, Aldermaston, Regno Unito.
* U.S. Weather Bureau.
* MITRE Corporation, utilizzato fino all'agosto del 1971. Nell'estate del 1972 venne venduto alla Brigham Young University.
* U.S. Navy Dahlgren Naval Proving Ground.
* IBM.
* Commissariat à l'énergie atomique, Francia.

## Architettura
### Formato dati

* I numeri a virgola fissa erano memorizzati con lunghezza variabile in formato binario (da 1 a 64 bit) o decimale (da 1 a 16 cifre). In formato decimale le cifre potevano occupare da 4 a 8 bit.
* I numeri in virgola mobile avevano un bit per l'esponente, 10 bit per l'esponenziale, un bit per il segno dell'esponente, 48 bit per la mantissa e 4 bit per il formato della mantissa.
* I caratteri alfabetici erano codificati con lunghezza variabile e occupavano al massimo 8 bit.
* Un "Byte" occupava da 1 a 8 bit.

## Formato delle istruzioni

Le istruzioni erano a 32 o 64 bit.

### Registri

I registri occupavano le prime 32 celle di memoria e sono mostrati nella seguente tabella.
| Address | Mnemonic | Register | Stored in: |
| 0 | $Z | 64-bit Zero | Main Core Storage |
| 1 | $IT | 19-bit Interval Timer | Index Core Storage |
| 1 | $TC | 36-bit Time Clock | Index Core Storage |
| 2 | $IA | 18-bit Interruption Address | Main Core Storage |
| 3 | $UB | 18-bit Upper Boundary Address | Transistor Register |
| 3 | $LB | 18-bit Lower Boundary Address | Transistor Register |
| 3 | | 1-bit Boundary Control | Transistor Register |
| 4 | | 64-bit Maintenance Bits | Main Core Storage |
| 5 | $CA | 7-bit Channel Address | Transistor Register |
| 6 | $CPUS | 19-bit Other CPU Bits | Transistor Register |
| 7 | $LZC | 7-bit Left Zero count | Transistor Register |
| 7 | $AOC | 7-bit All Ones count | Transistor Register |
| 8 | $L | Left half of 128-bit Accumulator | Transistor Register |
| 9 | $R | Right half of 128-bit Accumulator | Transistor Register |
| 10 | $SB | 8-bit Accumulator sign - ZZZZSTUV | Transistor Register |
| 11 | $IND | 64-bit Indicator Register | Transistor Register |
| 12 | $MASK | 64-bit Mask Register | Transistor Register |
| 13 | $RM | 64-bit Remainder Register | Main Core Storage |
| 14 | $FT | 64-bit Factor Register | Main Core Storage |
| 15 | $TR | 64-bit Transit Register | Main Core Storage |
| 16 ... 31 | $X0 ... $X15 | 64-bit Index Registers (sixteen) | Index Core Storage |
L'accumulatore e il registro indice usavano il formato binario con segno.

### Memoria

La memoria era formata da banchi di memoria di 16484 parole di 64 bit. Il sistema partiva da 16384 banchi e arrivava a 262144 banchi di memoria. La memoria era immersa in un bagno d'olio per raffreddarla e garantirne un funzionamento stabile.

## Software

* Il sistema veniva programmato con lo STRETCH Assembly Program (STRAP)