Originariamente pubblicato in data 06/06/2005
A
C
C
O
M
A
Z
Z
I
5.3 La macchina di von Neumann
5.3 La macchina di von Neumann
Un paragrafo del libro di Luca Accomazzi pubblicato nel giugno 2005: “Il Signore nell’Ombra”
Molti altri dispositivi del tipo del sommatore binario trovano posto nel cuore del computer: gli shifter, i decodificatori, delicati complessi elettronici che solo pochi ingegneri sanno veramente comprendere nel loro insieme. L'effetto globale è di costruire un meccanismo fisico che corrisponde ad un costrutto ideale sviluppato agli albori dell'era informatica da Janos von Neumann (detto John; 1903-1957) , un matematico di origine ungherese al quale l'informatica deve molto.Le biografie di John von Neumann parlano di un genio quintessenziale, che all'età di sei anni inventava giochi di parole in greco antico e per diletto memorizzava intere pagine dell'elenco telefonico rispondendo a menadito alle domande di familiari e ospiti per dimostrare la sua memoria fotografica. In una occasione, osservando che la madre era sovrappensiero, le chiese: "Mamma, che calcolo stai risolvendo?" Da ragazzino soffriva di stitichezza e prese l'abitudine di entrare in bagno con due libri, per la paura di finire il primo e non aver più nulla da leggere prima di aver terminato. All'università (frequentò il politecnico di Zurigo), divenne il terrore del professor Polya, il docente di matematica pura, che ricorda nelle sue memorie come il giovane von Neumann lo avvicinasse dopo ogni lezione in cui Polya aveva enunciato un problema irrisolto o un teorema non ancora dimostrato... fornendo, circa una volta su due, la soluzione o la dimostrazione. A venticinque anni, John von Neumann era famoso tra i matematici di tutto il mondo; a ventotto gli venne offerta una cattedra all'università di Princeton. Hans Bethe, premio Nobel per la fisica, disse di lui che doveva certamente essere un marziano ben truccato, perché nessun essere umano poteva ragionare così velocemente. Si deve a lui gran parte del lavoro teorico che portò alla formulazione della meccanica quantistica, ancor oggi considerata il più complesso tra i campi della fisica, ma fu anche il padre della teoria matematica dei giochi. Eppure, John von Neumann non rientrava certo nei canoni del matematico con la testa tra le nuvole o dello scienziato con i calzini spaiati: amava frequentare il cabaret, dare festini che divennero celebri nel mondo universitario, ammirare le belle donne (le segretarie che lavoravano per lui a Los Alamos, per esasperazione, rivestirono le loro scrivanie con cartoni per nascondere le gambe al suo sguardo).
Negli ultimi anni della sua vita, John von Neumann si scontrò con alcuni problemi matematici che non possono (ancor oggi) venire risolti analiticamente e si interessò allora al calcolo di soluzioni approssimate, con la massima precisione possibile. Questo lo portò al campo nascente dell'informatica, dove i suoi contributi furono impagabili (tra l'altro, egli inventò il sistema che i calcolatori usano per ordinare i dati stoccati nelle memorie a disco) e si sarebbero certamente dimostrati ancora maggiori se un cancro non se lo fosse portato via, devastando la sua mente geniale, nel giro di poco tempo. Furono probabilmente gli effetti delle radiazioni assorbite mentre collaborava al progetto della prima bomba atomica a causare la malattia, la quale nel suo decorso lo costrinse in sedia a rotelle — ispirando, pare, la figura del dottor Stranamore nell'omonimo film di Kubrick.
Nella figura 5 possiamo considerare lo schema della macchina di von Neumann , che oggi trova riscontro nella costruzione di tutti i computer, dai più piccoli tascabili ai giganti raffreddati ad elio liquido che simulano le condizioni metereologiche dell'intero pianeta per darci le previsioni del tempo più affidabili. (Prima che von Neumann entrasse a far parte del gruppo di collaboratori al progetto ENIAC, gli ingegneri programmavano il calcolatore modificando a mano i circuiti: fu lui a convincerli che i programmi dovevano stare in memoria, tanto quanto i dati).
La Macchina dunque esegue operazioni seguendo il programma che legge dalla memoria: la sua connessione con la memoria è rappresentata dalla unità di input/output (in italiano, ingresso e uscita; in sigla, I/O). La ALU (unità aritmetico logica) è l'insieme di quei componenti che eseguono le operazioni matematiche (come il sommatore binario) e logiche; con questo ultimo termine indichiamo le operazioni di AND NOT OR EOR e le comparazioni tra due cifre. La Unità di I/O e l'annesso decodificatore provvedono, come abbiamo detto, agli accessi alla memoria. Il decodificatore traduce i simboli numerici ricevuti in istruzioni da eseguire: cioè, fa corrispondere a ciascun codice letto da programma una operazione e la fa eseguire. Il Bus è un dispositivo utilizzato per il trasferimento dei dati dalla/alla memoria, cui accede l'unità di I/O. Il Clock (termine inglese per "orologio") dà i tempi all'intero sistema, e specialmente al decodificatore, scandendo intervalli di tempo nell'ordine dei miliardesimi di secondo. Un orologio è necessario, perché non tutti i componenti elettronici eseguono i loro compiti nel medesimo tempo, ma tutti debbono eseguirlo entro un rintocco dell'orologio.
Quando la macchina passa ad una nuova istruzione, la unità di I/O fa una richiesta alla memoria, che in un tempo dato restituisce il valore richiesto. Il decodificatore trasferisce il valore letto dentro se stesso e scopre a che operazione corrisponde: ad esempio, potrebbe essere " fai la somma del valore precedentemente trovato con... "
Il decodificatore "capisce" di aver bisogno di un operando, ed istruisce l'unità di I/O di procedere ad una ulteriore lettura: ottenuto il valore (che viene a trovarsi nell'unità di I/O sovrascrivendo il codice dell'istruzione), lo passa all'unità ALU che esegue fisicamente la somma. Ciascuna delle microistruzioni, ciascuno dei passaggi eseguiti, ha richiesto un tempo di clock.
Infine, nella Macchina, si trovano i registri : sono celle di memoria costruite direttamente nella macchina di modo che l'accesso a loro sia molto più veloce che l'accesso in memoria. Sono in numero molto limitato, perché ciascuno di loro richiede un gran numero di circuiti, il che complica l'architettura della macchina. Ma sono fondamentali per arrivare al più semplice e più veloce di tutti i linguaggi di programmazione...
Per proseguire la lettura, acquista il libro. Se preferisci, torna al sommario.
.