# Centro di Calcolo del CNEN

Il Centro di Calcolo del CNEN, ospitò il primo grande calcolatore scientifico in Italia, un IBM 704, installato nel 1961.

## Nascita

Il professore Giampietro Puppi e il professore Ferrante Pierantoni per la necessità dell'Università di Bologna di disporre di elaboratori elettronici per i calcoli scientifici di Fisica atomica e di Astrofisica avviarono alla fine degli anni '50 il primo centro di calcolo elettronico scientifico per la Facoltà di Ingegneria di Bologna, la Scuola di Specializzazione in Ingegneria Nucleare ed il CNRN e per l'Istituto di Fisica e quello di Astronomia.
Riuscirono a farsi finanziare l'acquisto dell'elaboratore IBM 650 con il contributo di 100 milioni di lire del Ministro della Pubblica Istruzione Aldo Moro e liberando il contributo di 100 milioni di lire del Comune di Bologna per la ricerca scientifica finanziati dall'allora sindaco Giuseppe Dozza.

## Evoluzione

Il Servizio Calcolatori Elettronici del Centro di Calcolo di Bologna acquisì nella primavera del 1961 il primo grande calcolatore scientifico italiano IBM 704.
Il 704 era enorme e, con tutti i suoi componenti e gli spazi necessari per lavorarci, occupava l'intero sotto scantinato di un intero palazzo (ca 500 m²). Aveva il lettore di schede, 8 unità nastro, una stampante a 80 righe al minuto, un perforatore di schede e vari altri armadi per la memoria, per la CPU, per la console, ecc. Il pavimento sopraelevato era un intrigo di cavi. Su questi cavi lunghi più metri venivano trasmessi i segnali da una unità all'altra. Il 704 aveva la memoria centrale fatta con nuclei di ferrite di 32768 parole di 36 bits. Ogni memoria poteva contenere numeri interi, numeri in floating point o 6 caratteri alfanumerici di 6 bit (codifica BCD). Un carattere alfanumerico era composta da 6 bits. Non si poteva indirizzare il singolo carattere. Per elaborare il singolo carattere era necessario elaborare la parola che lo conteneva ed estrarne il carattere interessato (con algebra booleana e/o shift). Il ciclo base della CPU era di 12 microsecondi (una velocità fantastica per quei tempi).
Il 704 non aveva sistema operativo quando arrivò a Bologna: ogni programma (completo di tutte le sue routine) veniva eseguito da solo uno alla volta:
* si azzerava la memoria del 704 con il tasto clear
* si metteva il programma da eseguire nel lettore di schede preceduto dalle 9 schede del loader e seguito da eventuali dati
* si premeva il tasto Load
Il tasto load causava il caricamento nelle memorie 0; 1; 2 delle prime tre istruzioni presenti nella prima scheda del loader: il controllo veniva trasferito alla memoria 0. Il loader si autocaricava, caricava il programma in memoria e ne avviava l’esecuzione.
Il calcolatore veniva usato dai ricercatori interni del CNEN e dall'Università di Bologna. Il linguaggio di programmazione era il Fortran II. Lo specialista software usava il linguaggio assembler SAP per routine speciali e per la ricerca di anomalie nel funzionamento dei programmi e/o del 704.
Il programma poteva risiedere su nastro magnetico. La sequenza di load era la stessa ma sui tasti della console era specificato l’indirizzo del nastro da cui avveniva il load
* Il programma elaborava, stampava eventuali risultati sulla stampante e/o li caricava su nastro. A fine esecuzione il calcolatore andava in stop.
* Si ripartiva con un altro programma: si azzerava la memoria e si eseguiva un altro programma con i passi sopra descritti.
* Stessa sequenza operativa per compilazioni in linguaggio Fortran, assemblaggi e sort.
Si perdevano tempi enormi per la stampa dei risultati: non esisteva la stampa (in spool) in sovrapposizione con altre elaborazioni.
Per evitare la grossa perdita di tempo per il caricamento dei programmi/dati e per la stampa/perforazione dei risultati, fu installato un piccolo calcolatore satellite IBM 1401 (si chiamava così perché aveva 1401 memorie da 6 bits BCD). Questo calcolatore ausiliario aveva scarsa potenza di calcolo ma alta velocità di input/output. Disponeva di:
* stampante da 600 righe al minuto
* lettore di schede da 800 schede al minuto
* perforatore di schede (congiunto al lettore) da 400 schede al minuto
* 2 unità nastro.
Grazie a questo piccolo calcolatore, il calcolo scientifico veniva eseguito dal 704 ma il caricamento delle schede (programmi e dati) e la stampa/perforazione dei risultati venivano demandate al 1401. Il passaggio dei dati fra i 2 computer avveniva tramite nastro magnetico.
Circa 1 anno dopo arrivò il sistema operativo BeSys (Bell Operating System della Bell Labs). Le routine componenti il BeSys venivano caricate nelle memorie alte del 704 (memorie octal da 70000 a 77777); il programma da elaborare veniva caricato nelle memorie basse da octal 0 a octal 67777. Grazie al BeSys era possibile caricare più programmi da elaborare su nastro con il 1401 e poi elaborarli in sequenza sul 704 evitando le fermate fra un programma e l’altro. Come standard il BeSys risiedeva su nastro 1, l’insieme dei programmi da elaborare erano caricati su nastro 5, le stampe venivano registrate su nastro 6 e le schede da perforare su nastro 7.
Nel 1963 il Centro di Calcolo si trasferì in via Mazzini ed il 704 fu sostituito da un nuovo calcolatore IBM 7094. In via Mazzini fu trasferito anche l’IBM 1401 la cui memoria fu portata a 16.000 memorie.
Il ciclo base del CPU del 7094 era di 2 microsecondi. Il 7094 era fornito di canali per la gestione dell’Input/Output. I canali potevano leggere o scrivere nelle memorie del 7094 in parallelo alla elaborazione fatta dalla CPU. Alla fine della lettura/scrittura il canale lanciava un Interrupt/Segnale che avvisava la CPU di aver terminato l’operazione. Se i canali venivano utilizzati bene, era possibile teoricamente sovrapporre i tempi dell'Input/Output ai tempi della CPU esaltando la velocità del 7094. Il 7094 era provvisto di 16 nastri magnetici ma era sfornito di lettore/perforatore di schede e stampante.
Il 7094 lavorava con il sistema operativo IbSys. Il caricamento dei programmi/dati, la stampa dei risultati e la perforazione delle schede erano demandate sempre al 1401.
Successivamente arrivò un IBM 7040 fornito di 2 stampanti (una da 600 righe, l’altra da 1200 righe al minuto) ed un lettore/perforatore rispettivamente da 800 e da 400 schede al minuto. Insieme al 7040 arrivò una unità disco Ramac con una capacità di 20 Milioni di caratteri. Fu installato un sistema operativo DCOS (Double Couple Operating System) che era in grado gestire il 7094 “accoppiato” al 7040. I nastri utilizzati dal 7094 venivano simulati nel disco del 7040 diminuendo i tempi di elaborazione. Quando i 2 computer erano divisi, si continuava ad usare il 7094 per le elaborazioni ed il 7040 come calcolatore satellite al posto del 1401. Il 1401 fungeva da riserva.
Sul 1401 arrivò una nuova unità: un plotter IBM 1627 da cui venivano estratti dei bellissimi grafici: i dati per ottenere i grafici venivano dalle elaborazioni sul 7094.
Il Centro di Studi del CNEN presso la Casaccia (Roma) era fornito di calcolatori nucleari sperimentali. I ricercatori avevano da sempre bisogno di elaborazioni. I programmi viaggiavano in varie maniere (corrieri, posta, ecc.). Spesso i ricercatori della Casaccia si trasferivano temporaneamente a Bologna. Se a Bologna ogni utente del 7094 riusciva a fatica a fare 2 / 3 elaborazioni al giorno, i ricercatori della Casaccia riuscivano a fare 2/3 elaborazioni a settimana.
Finalmente fu fatto un collegamento fisso tra la Casaccia (Roma) e Bologna. Parte del collegamento era su cavo, parte era su ponte radio.
Alle due estremità del collegamento furono installate 2 unità IBM 7702. I dati caricati su nastro alla Casaccia con un IBM 1440 (fratello più piccolo del 1401) venivano montati sul 7702. Venivano trasmessi ad una velocità variante da 600 a 2400 baud ed a Bologna si otteneva la copia sull’altra unità 7702. Il nastro veniva passato al 7094 che lo elaborava. I risultati tornavano indietro per la stessa strada e stampati / perforati dal 1440 della Casaccia.
Il sistema funzionava ma i tempi di trasmissione erano elevati soprattutto quando si doveva andare a velocità minima a causa soprattutto del tempo atmosferico che influenzava molto il ponte radio.
Fu acquistato una unità disco IBM 1311 da collegare al 1401 con una capacità di 2.000.000 caratteri da 6 bits. Fu realizzato un programma sul 1401 (chiamato RomBo = Roma /Bologna) in grado di gestire una libreria di programmi e dati sul disco del 1401. Nella libreria furono memorizzati i programmi della Casaccia (sia source che binario). Dalla Casaccia arrivavano solo modifiche ai programmi in libreria, richiamo ai programmi in libreria e nuovi programmi e/o dati.
Per gestire il disco fu realizzato un apposito file system che permetteva l’utilizzo del disco fino all'ultimo carattere (forse fu il primo File System per dischi in grado di recuperare automaticamente tutti gli spazi liberi dovuti a modifiche e/o cancellazioni).
Tenendo presente che sia le schede dei programmi che le righe di stampa contenevano molti caratteri blank, il RomBo fu implementato in modo da eliminare i blank sui records elaborati (oltre 2 blank consecutivi) e si riuscì a ridurre il numero dei caratteri elaborati di oltre il 60 (sessanta per cento). La eliminazione dei blank era attiva anche sul disco. Grazie al File System, alla libreria dei programmi (anche lei la prima del suo tipo) ed alla “compressione” dei dati si riusciva a fare normalmente due trasmissioni al giorno. In pratica i ricercatori della Casaccia erano serviti come i ricercatori interni di Bologna.