🎛️Evoluzione verso il Modello di Von Neumann
evoluzione dell'Architettura Hardware dei Sistemi di Elaborazione
evoluzione dell'Architettura Hardware dei Sistemi di Elaborazione
Il modello di von Neumann è la struttura teorica alla base di quasi tutti i computer moderni.
Proposto nel 1945 dal matematico John von Neumann, il modello definisce l'architettura di un calcolatore elettronico basandosi sul concetto fondamentale di programma memorizzato: sia le istruzioni che i dati necessari all'elaborazione risiedono nella medesima memoria centrale.
Il modello si compone di 4 blocchi funzionali principali interconnessi tramite linee di trasmissione dati detti bus:
Memoria Centrale (RAM): Conserva in celle indirizzabili sia le istruzioni del programma sia i dati da elaborare.
Unità Centrale di Elaborazione (CPU): Il "cervello" della macchina, diviso a sua volta in:
- ALU (Arithmetic Logic Unit): Esegue i calcoli matematici e le operazioni logiche.
- CU (Control Unit): Coordina le attività del computer, recupera le istruzioni dalla memoria, le decodifica ed esegue il controllo del flusso.
- Registri: Piccole memorie ad altissima velocità utilizzate direttamente dalla CPU durante i calcoli.
Dispositivi di Input/Output (I/O): Permettono la comunicazione con l'esterno (tastiera, monitor, dischi, ecc.).
Bus di Sistema: Il canale di collegamento (bus dati, bus indirizzi e bus di controllo) che trasferisce le informazioni tra CPU, Memoria e I/O.
Il modello (o architettura) di von Neumann nasce ufficialmente nel 1945, anno in cui il matematico John von Neumann descrisse per la prima volta l'architettura dei computer a programma memorizzato nel celebre documento First Draft of a Report on the EDVAC.
Anno di concettualizzazione: 1945.
Primo documento ufficiale: Il report fu redatto da John von Neumann insieme al team di sviluppo del progetto EDVAC (tra cui J. Presper Eckert e John Mauchly) presso la Moore School of Electrical Engineering dell'Università della Pennsylvania.
La grande innovazione: Prima del 1945, i dati ed i comandi (le istruzioni) per elaborare quei dati venivano trattati in modi del tutto separati. Von Neumann introdusse il concetto di programma memorizzato (stored-program concept), in cui sia i dati sia le istruzioni risiedono nella stessa memoria centrale.
Prima dell'avvento del modello di von Neumann, i calcolatori elettronici ed elettromeccanici (realizzati tra la fine degli anni '30 e la prima metà degli anni '40) utilizzavano architetture sostanzialmente diverse:
Funzionamento: Il programma non risiedeva in una memoria software, ma era letteralmente costruito all'interno del circuito fisico. Per cambiare l'operazione o il calcolo che il computer doveva eseguire, era necessario ricablare fisicamente la macchina, spostando cavi, interruttori e commutatori.
Esempio principale: L'ENIAC (nella sua versione originale del 1946).
Per impostare un nuovo problema sull'ENIAC, gli operatori umani impiegavano giorni o addirittura settimane a collegare pannelli e cavi di connessione.
Funzionamento: Le istruzioni non venivano salvate nella memoria interna del computer, ma lette in sequenza da un supporto esterno (come nastri di carta perforata o schede perforate).
La macchina leggeva un'istruzione alla volta dal nastro ed eseguiva il comando.
Limiti: L'esecuzione era molto lenta (limitata dalla velocità di scorrimento del nastro) e non era possibile effettuare facilmente "salti" condizionali (if/else) o cicli (loop) dinamici senza riavvolgere o spostare fisicamente il nastro.
Esempi principali:
Il Z3 di Konrad Zuse (Germania, 1941), che leggeva le istruzioni da pellicole cinematografiche perforate.
Il Harvard Mark I (USA, 1944), guidato da nastri di carta perforata.
Funzionamento: In alcuni sistemi primi, come l'Harvard Mark I o il calcolatore di Atanasoff-Berry (ABC), la memoria destinata ai dati era nettamente separata dai canali o dai supporti destinati alle istruzioni.
Differenza con von Neumann: Nell'architettura Harvard pura, dati e istruzioni utilizzano bus e memorie fisicamente distinti, mentre il modello di von Neumann unifica tutto in un'unica memoria ad accesso casuale.