Apri il menu principale
Un computer IBM 704 installato presso il NACA nel 1957
Un IBM 704, con unità a nastro IBM 727 e display catodico IBM 780 (per gentile concessione del LLNL)

Il calcolatore IBM 704 è un modello di computer realizzato dal IBM nel 1954 ed è stato il primo calcolatore in grado di eseguire calcoli in virgola mobile ad essere prodotto in massa.[1]

Il manuale di istruzioni dell'IBM 704 riporta:[2]

(EN)

«The type 704 Electronic Data-Processing Machine is a large-scale, high-speed electronic calculator controlled by an internally stored program of the single address type.»

(IT)

«Il sistema di elaborazione dati modello 704 è un calcolatore elettronico ad alta velocità e su larga scala controllato da un programma interno a indirizzamento singolo.»

(IBM 704 - Manual of Operation)

All'epoca, l'IBM 704 era considerato come "l'unico computer in grado di eseguire calcoli matematici complessi".[3]

L'IBM 704 rappresentò un miglioramento significativo rispetto al precedente modello IBM 701 in termini sia di architettura che di implementazione. Come il modello 701, anche il 704 per i circuiti logici utilizzava valvole termoioniche e parole binarie da 36 bit. Di nuovo rispetto al 701 c'erano l'introduzione della memoria a nucleo magnetico al posto del tubo Williams, il supporto delle istruzioni aritmetiche a virgola mobile, uno schema di indirizzamento a 15 bit e l'aggiunta di tre registri indice. Per gestire queste nuove funzionalità le istruzioni vennero estese per impiegare un'intera parola a 36 bit. Il nuovo set di istruzioni, non compatibile con quello usato dal modello 701, divenne la base per la sottoclasse "architettura scientifica" delle future serie IBM 700/7000.

L'IBM 704 era in grado di eseguire fino a 12 000 somme in virgola mobile al secondo[1] Tra il 1955 e il 1960 furono venduti 140 sistemi IBM 704.[4][5]

In Italia, il primo modello di IBM 704 fu installato nel 1961 presso il Centro di Calcolo del CNEN[6]di Bologna.

Indice

Pietre miliariModifica

Per l'IBM 704 vennero sviluppati appositamente i linguaggi Fortran[7] e LISP[8] così come l'assembler SAP (Symbolic Assembly Program) successivamente distribuito dal gruppo SHARE come SHARE Assembly Program (mantenendo l'acronimo).

Il primo programma di musica per computer, MUSIC-N, fu sviluppato da Max Mathews utilizzando un IBM 704.

Nel 1962 il fisico John Larry Kelly, Jr, diede vita a uno dei momenti più famosi nella storia dei Bell Labs utlizzando un computer IBM 704 per la sintesi vocale. Il sintetizzatore vocale creato da Kelly, chiamato vocoder, ricreò la canzone Daisy Bell, con accompagnamento musicale dello stesso Max Mathews. Per puro caso, lo scrittore di fantascienza Arthur C. Clarke era ai Bell Labs per incontrare il suo amico e collega e assistette a questa dimostrazione; ne rimase talmente impressionato che sei anni più tardi riprese la scena nel suo romanzo Odissea nello spazio e la mantenne anche nella sceneggiatura del film omonimo,[9] facendo eseguire la stesso brano al computer HAL 9000.[10]

Edward O. Thorp, matematico del MIT, impiegò l'IBM 704 come strumento di ricerca per analizzare le probabilità di vincita durante lo sviluppo della sua teoria sul gioco del blackjack per dimostrare che non si tratta di un gioco d'azzardo;[11] utilizzò il linguaggio FORTRAN per formulare le equazioni del suo modello di ricerca.

Nell'autunno del 1957 l'IBM 704 del Centro di Calcolo del MIT Computation Center fu usato come strumento di rilevamento ufficiale nell'operazione Moonwatch dallo Smithsonian Astrophysical Observatory. L'IBM inviò quattro suoi scienziati per aiutare i ricercatori e i matematici dell'osservatorioi a calcolare le orbite del satellite: Giampiero Rossoni, John Greenstadt, Thomas Apple e Richard Hatch.

RegistriModifica

 
Modulo a valvole dell'IBM 704

L'IBM 704 era dotato di un accumulatore a 38 bit, di un registro di moltiplicazione-divisione a 36 bit e di tre registri indice a 15 bit per l'indirizzamento. Il contenuto dei registri indice veniva sottratto dall'indirizzo base e per questo motivo i registri indice erano detti anche "registri di decremento". Tutti e tre i registri potevano far parte di un'istruzione: i tre bit del campo tag dell'istruzione rappresentavano una codifica che indicava quali dei tre registri erano utilizzati nell'istruzione. Se veniva selezionato più di un registro, il loro contenuto veniva combinato mediante un'operazione booleana di OR e il risultato utilizzato per decrementare l'indirizzo base. Questo meccanismo venne mantenuto anche nelle macchine ad architettura scientifica successive come l'IBM 709 e IBM 7090 fino all'IBM 7094. Quest'ultimo, introdotto nel 1962, possedeva sette registri indice di cui veniva selezionato uno solo per volta ma manteneva il meccanismo dell'"OR" quando usato in modalità compatibile.[12]

Istruzioni e formato dei datiModifica

Erano previsti due formati di istruzione, denominati "Tipo A" e "Tipo B".[13] La maggior parte delle istruzioni erano di tipo B.

Il formato delle istruzioni di Tipo A prevedeva, in sequenza, un prefisso di tre bit (codice di istruzione), un campo di decremento a 15 bit, un campo tag di tre bit e un campo indirizzo di 15 bit. Vi erano operazioni di salto condizionale basate sul valore dei registri indice specificato nel campo tag. Alcune istruzioni prevedevano di sottrarre il campo decremento dal contenuto dei registri indice. Le istruzioni di tipo A erano contraddistinte dall'avere gli ultimi due bit del codice dell'istruzione diversi da "00": da questo risulta che i codici di istruzione di tipo A erano in tutto sei, corrispondenti ai codici binari "001", "010", "011", "101", "110" e "111". Una di esse ("STR", codice di istruzione binario "101") fu implementata solo a partire dall'IBM 709.

Le istruzioni di Tipo B erano composte, in sequenza, da un codice di istruzione a 12 bit, con il secondo e il terzo bit fissi a zero per distingerle dal tipo A (i relativi codici di istruzione quindi iniziavano sempre con "000" o "100"), un campo flag a 2 bit, quattro bit non utilizzati, un campo tag a 3 bit e un campo indirizzo a 15 bit. Con questa struttura venivano quindi gestiti fino a 1024 codici di istruzione differenti.

Per quanto riguarda i dati:

  • I numeri a virgola fissa erano memorizzati in formato binario segno-valore
  • I numeri a virgola mobile in precisione singola erano memorizzati come segno, esponente di 2 rappresentato su 8 bit con segno in formato "excess-128" (esponente variabile da -126 a +127) e valore della mantissa su 27 bit
  • I caratteri alfanumerici usavano una codifica di tipo BCD a 6-bit, con 6 caratteri memorizzati per ogni parola.

Il set di istruzioni suddivide implicitamente il formato dei dati negli stessi campi delle istruzioni di tipo A: prefisso, decremento, tag e indirizzo. Erano previste istruzioni per convertire ciascuno di questi campi in una parola dati senza cambiare il resto della parola.

L'implementazione originale del Lisp usava i campi indirizzo e decremento per memorizzare, rispettivamente, la testa e la coda di una lista concatenata. Le funzioni primitive "car" (contenuto della parte indirizzi del registro) e "cdr" (contenuto della parte decremento del registro) hanno preso il loro nome proprio da questi campi.[14]

Memoria e perifericheModifica

Il 704 era in grado di controllare: un lettore di schede perforate IBM 711; una stampante alfanumerica IBM 716; un registratore di schede perforate IBM 721; cinque unità a nastro magnetico IBM 727 associate a un'unità di controllo nastri IMB 753; una unità di lettura/scrittura su memoria a tamburo IBM 733 e un'unità di memoria a nucleo magnetico IBM 737. L'installazione completa aveva un peso complessivo di 8,8 t.[15][16]

Di suo, l'IBM 794 era dotato di una console di controllo con 36 tasti di controllo vari e 36 interruttori di ingresso, ciascuno in grado di impostare un bit di un registro. In termini di input, la console consentiva soltanto di impostare il valore binario di un registro tramite i 36 interruttori; il valore binario assunto dal registro veniva visualizzato su un display costituito da piccoli tubi al neon, con aspetto simile a quello di un moderno display a LED. L'interazione con l'operatore umano avveniva tramite schede perforate per il caricamento dei programmi, mentre l'uscita in formato leggibile veniva inviata alla stampante.

Era disponibile anche il registratore di uscita a raggi catodici IBM 780: si trattava di uno schermo vettoriale da 21 pollici (simile a quello di un oscilloscopio) con un tempo di persistenza dei fosfori molto lungo (20 secondi) dedicato alla visione umana unito a un secondo schermo più piccolo da 7 pollici, che riproduceva la stessa uscita, ma con fosfori a persistenza molto più bassa e progettato appositamente per essere ripreso da una cinepresa o da una macchina fotografica.[17]

L'unità di memoria a nucleo magnetico 737 svolgeva la funzione di RAM ed era in grado di memorizzare 4096 parole a 36 bit, equivalenti a 18 432 byte.[18] Le unità a nastro magnetico 727 erano in grado di immagazzinare oltre 5 milioni di caratteri a sei bit per bobina.

NoteModifica

  1. ^ a b (EN) 704 Data Processing System, su IBM. URL consultato il 18 agosto 2016.
  2. ^ (EN) IBM Electronic Data-Processing Machines TYPE 704 - Manual of Operation (PDF), IBM, 1955. URL consultato il 28 dicembre 2017.
  3. ^ (EN) Mark Pesce, Assemblers were once people: My aunt did it for NASA, su The Register, 26 febbraio 2015. URL consultato il 18 agosto 2016.
  4. ^ (EN) IBM 704 Computer, LLNL, 1950s, Science Source. URL consultato il 18 agosto 2016.
  5. ^ Secondo altre fonti furono 123; vedi (EN) Amdahl, IEEE Computer, p. 40.
  6. ^ Centro ENEA di Bologna
  7. ^ FORTRAN, su softwarepreservation.org.
  8. ^ http://www-formal.stanford.edu/jmc/history/lisp/node2.html LISP Prehistory, John McCarthy, 1996
  9. ^ (EN) Arthur C. Clarke - Biography, su lsi.usp.br (archiviato dall'url originale l'11 dicembre 1997).
  10. ^ (EN) Bell Labs: Where "HAL" First Spoke, su Bell Labs Speech Synthesis (archiviato dall'url originale il 1º aprile 2014).
  11. ^ (EN) Jeff Levinger, Math Instructor Programs Computor: Thorpe, 704 Beat Blackjack (PDF), in The Tech, vol. 81, nº 1, Cambridge, MA, Massachusetts Institute of Technology, 10 febbraio 1961, p. 1.
  12. ^ (EN) IBM 7094 Principles of Operation (PDF), in IBM Systems Reference Library, ed. V, IBM, 1962, p. 8.
  13. ^ (EN) John Savard, From the IBM 704 to the IBM 7094. URL consultato il 15 novembre 2009.
  14. ^ (EN) John McCarthy, Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I, Stanford University, 1960, p. 28. URL consultato il 14 febbraio 2009 (archiviato dall'url originale il 4 ottobre 2013).
  15. ^ (EN) Martin H. Weik, A Third Survey of Domestic Electronic Digital Computing Systems, su ed-thelen.org, marzo 1961.
  16. ^ (EN) Martin H. Weik, A Third Survey of Domestic Electronic Digital Computing Systems, su ed-thelen.org, dicembre 1955.
  17. ^ (EN) IBM Archives: 704 Cathode Ray Tube Output Recorder, su www-03.ibm.com. URL consultato il 10 dicembre 2012.
  18. ^ (EN) IBM Archives: IBM 737 Magnetic core storage unit, su www-03.ibm.com. URL consultato il 10 dicembre 2012.

Altri progettiModifica

Controllo di autoritàLCCN (ENsh2009003708
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica