Prima bozza di relazione sull'EDVAC -First Draft of a Report on the EDVAC

La prima bozza di un rapporto sull'EDVAC (comunemente abbreviato in First Draft ) è un documento incompleto di 101 pagine scritto da John von Neumann e distribuito il 30 giugno 1945 da Herman Goldstine , ufficiale di sicurezza del progetto ENIAC classificato . Contiene la prima descrizione pubblicata del progetto logico di un computer che utilizza il concetto di programma memorizzato, che è diventato controverso come l' architettura di von Neumann .

Storia

Frontespizio della prima bozza , copia appartenente a Samuel N. Alexander , che ha sviluppato il computer SEAC sulla base del rapporto.

Von Neumann ha scritto il rapporto a mano durante il pendolarismo in treno a Los Alamos, nel New Mexico, e ha rispedito le note scritte a mano a Filadelfia . Goldstine fece scrivere e duplicare il rapporto. Mentre la data del rapporto dattiloscritto è il 30 giugno, cinque giorni prima, il 25 giugno, sono state distribuite 24 copie della prima bozza a persone strettamente legate al progetto EDVAC . Maurice Wilkes dell'Università di Cambridge ha citato la sua eccitazione per il contenuto del rapporto come l'impulso per la sua decisione di recarsi negli Stati Uniti per le lezioni della Moore School nell'estate 1946.

Sinossi

Von Neumann descrive un progetto dettagliato di un "sistema di calcolo digitale automatico ad altissima velocità". Lo divide in sei suddivisioni principali: una parte centrale aritmetica, CA, una parte centrale di controllo, CC, memoria, M, input, I, output, O e memoria esterna (lenta), R, come schede perforate , nastro telescrivente , o filo magnetico o nastro d' acciaio .

La CA eseguirà addizione, sottrazione, moltiplicazione, divisione e radice quadrata. Altre operazioni matematiche, come i logaritmi e le funzioni trigonometriche, vanno fatte con table look up e interpolazione , eventualmente biquadratica . Nota che la moltiplicazione e la divisione potrebbero essere eseguite con le tabelle dei logaritmi, ma per mantenere le tabelle abbastanza piccole sarebbe necessaria l'interpolazione e questa a sua volta richiede la moltiplicazione, anche se forse con meno precisione.

I numeri devono essere rappresentati in notazione binaria . Stima che 27 cifre binarie (non ha usato il termine " bit " , coniato da Claude Shannon nel 1948) sarebbero sufficienti (con una precisione di 8 cifre decimali) ma arrotonda i numeri a 30 bit con un bit di segno e un bit per distinguere i numeri dagli ordini, risultando in una parola a 32 bit che chiama ciclo minore. L' aritmetica del complemento a due deve essere utilizzata, semplificando la sottrazione. Per la moltiplicazione e la divisione, propone di posizionare il punto binario dopo il bit del segno, il che significa che tutti i numeri sono trattati come compresi tra -1 e +1 e quindi i problemi di calcolo devono essere ridimensionati di conseguenza.

Progettazione di circuiti

I tubi a vuoto devono essere usati piuttosto che i relè a causa della capacità dei tubi di operare in un microsecondo contro 10 millisecondi per i relè.

Von Neumann suggerisce (Sez. 5.6) di mantenere il computer il più semplice possibile, evitando ogni tentativo di migliorare le prestazioni sovrapponendo le operazioni. Le operazioni aritmetiche devono essere eseguite una cifra binaria alla volta. Egli stima che l'aggiunta di due cifre binarie richieda un microsecondo e che quindi una moltiplicazione a 30 bit dovrebbe richiedere circa 30 2 microsecondi o circa un millisecondo, molto più velocemente di qualsiasi dispositivo informatico disponibile in quel momento.

Il progetto di Von Neumann è costruito utilizzando quelli che chiama "elementi E", che si basano sul neurone biologico come modello, ma sono dispositivi digitali che, secondo lui, possono essere costruiti utilizzando uno o due tubi a vuoto. In termini moderni, il suo elemento E più semplice è una porta AND a due ingressi con un ingresso invertito (l'ingresso di inibizione). Gli elementi E con più ingressi hanno una soglia associata e producono un'uscita quando il numero di segnali di ingresso positivi raggiunge o supera la soglia, purché la (unica) linea di inibizione non sia pulsata. Afferma che gli elementi E con più ingressi possono essere costruiti dalla versione più semplice, ma suggerisce di essere costruiti direttamente come circuiti a valvole poiché saranno necessari meno tubi.

Blocchi funzione più complessi devono essere costruiti da questi elementi E. Mostra come utilizzare questi elementi E per costruire circuiti per addizione, sottrazione, moltiplicazione, divisione e radice quadrata, nonché due blocchi di memoria di stato e circuiti di controllo. Non usa la terminologia logica booleana .

I circuiti devono essere sincroni con un clock di sistema principale derivato da un oscillatore a tubo a vuoto , possibilmente controllato a cristallo . I suoi diagrammi logici includono un simbolo a punta di freccia per indicare un ritardo temporale unitario, poiché i ritardi temporali devono essere presi in considerazione in un progetto sincrono. Sottolinea che in un microsecondo un impulso elettrico si sposta di 300 metri in modo che fino a quando non vengono raggiunte velocità di clock molto più elevate, ad esempio 10 8 cicli al secondo (100 MHz), la lunghezza del cavo non sarebbe un problema.

La necessità di rilevare e correggere gli errori è menzionata ma non elaborata.

Design della memoria

Un concetto chiave di design enunciato, e in seguito chiamato architettura di Von Neumann , è una memoria uniforme contenente sia numeri (dati) che ordini (istruzioni).

"Il dispositivo richiede una memoria considerevole. Sebbene sia apparso che varie parti di questa memoria debbano svolgere funzioni che differiscono alquanto nella loro natura e considerevolmente nel loro scopo, si è tuttavia tentati di trattare l'intera memoria come un unico organo, e di avere il suo parti quanto più intercambiabili possibile per le varie funzioni sopra elencate." (par. 2.5)

"Gli ordini che pervengono a CC provengono da M, cioè dallo stesso luogo in cui è immagazzinato il materiale numerico." (Sez. 14.0)

Von Neumann stima la quantità di memoria richiesta sulla base di diverse classi di problemi matematici, incluse equazioni differenziali ordinarie e parziali , ordinamento ed esperimenti di probabilità . Di queste, le equazioni differenziali parziali in due dimensioni spaziali più il tempo richiederanno la maggior parte della memoria, con tre dimensioni più il tempo che sono al di là di ciò che può essere fatto utilizzando la tecnologia allora disponibile. Conclude che la memoria sarà la più grande suddivisione del sistema e propone 8.192 cicli minori (parole) di 32 bit come obiettivo di progettazione, con 2.048 cicli minori ancora utili. Egli stima che poche centinaia di cicli minori saranno sufficienti per memorizzare il programma.

Propone due tipi di memoria veloce, la linea di ritardo e il tubo Iconoscope . Ogni ciclo minore deve essere indirizzato come un'unità (indirizzamento word, Sez. 12.8). Le istruzioni devono essere eseguite in sequenza, con un'istruzione speciale per passare a un punto diverso della memoria (cioè un'istruzione di salto).

Le cifre binarie in una memoria della linea di ritardo passano attraverso la linea e vengono riportate all'inizio. L'accesso ai dati in una linea di ritardo impone una penalità di tempo durante l'attesa che i dati desiderati tornino di nuovo. Dopo aver analizzato questi problemi di temporizzazione, propone di organizzare la memoria della linea di ritardo in 256 "organi" della linea di ritardo (DLA) ciascuno contenente 1024 bit, o 32 cicli minori, chiamati ciclo principale. Un accesso alla memoria seleziona prima il DLA (8 bit) e poi il ciclo minore all'interno del DLA (5 bit), per un totale di 13 bit di indirizzo.

Per la memoria Iconoscope , riconosce che ogni punto di scansione sulla faccia del tubo è un condensatore e che un condensatore può memorizzare un bit. Sarà necessaria una scansione di altissima precisione e la memoria durerà poco tempo, forse anche un secondo, e quindi dovrà essere periodicamente ricopiata ( aggiornata ).

Ordini (istruzioni)

Nella Sez. 14.1 von Neumann propone il formato per gli ordini, che chiama codice. I tipi di ordine includono le operazioni aritmetiche di base, lo spostamento di cicli minori tra CA e M (word load e store in termini moderni), un ordine ( s ) che seleziona uno dei due numeri in base al segno dell'operazione precedente, input e output e trasferimento CC in una posizione di memoria altrove (un salto). Determina il numero di bit necessari per i diversi tipi di ordine, suggerisce ordini immediati in cui la parola seguente è l'operando e discute l'opportunità di lasciare bit di riserva nel formato dell'ordine per consentire una memoria più indirizzabile in futuro, così come altri non specificati scopi. Viene discussa la possibilità di memorizzare più di un ordine in un ciclo minore, con scarso entusiasmo per tale approccio. Viene fornita una tabella degli ordini, ma nella prima bozza non è stata inclusa alcuna discussione sulle istruzioni di input e output.

Controversia

Il trattamento del rapporto preliminare come una pubblicazione (in senso giuridico) è stato fonte di amara acrimonia tra le fazioni del team di progettazione dell'EDVAC per due ragioni. In primo luogo, la pubblicazione equivaleva a una divulgazione pubblica che impediva il brevetto dell'EDVAC; In secondo luogo, un po 'sul team di progettazione EDVAC sostenuto che il concetto di programma memorizzato si era evoluto di incontri presso l' Università della Pennsylvania 's Moore Scuola di Ingegneria Elettrica antecedenti l'attività di von Neumann come consulente lì, e che gran parte del lavoro rappresentato nel First Draft non era altro che una traduzione dei concetti discussi nel linguaggio della logica formale in cui von Neumann era fluente. Quindi, il fallimento di von Neumann e Goldstine nell'elencare altri come autori nella prima bozza ha portato ad attribuire il merito al solo von Neumann. (Vedi effetto Matteo e legge di Stigler .)

Guarda anche

Riferimenti

Bibliografia

link esterno