Vai al contenuto principale
RiferimentoStoria dell’informaticaPrincipiante

L'architettura di von Neumann: il programma in memoria

Comprendi il modello di von Neumann, le sue unità di calcolo, controllo, memoria e input/output e il principio del programma memorizzato.

Pubblicato 31 luglio 2026Aggiornato 7 agosto 2026Lettura : 6 minDi Yann Bastien
Schema editoriale dell'architettura di von Neumann che collega processore, memoria e input/output
Mostra indice
  1. Prima del programma memorizzato
  2. Il progetto EDVAC e il rapporto del 1945
  3. Un’invenzione collettiva
  4. Le cinque grandi funzioni
  5. L’idea decisiva: istruzioni e dati in memoria
  6. Fetch, decode, execute
  7. I registri: memoria vicinissima al calcolo
  8. Il collo di bottiglia di von Neumann
  9. Le cache avvicinano i dati al processore
  10. Architettura von Neumann e Harvard
  11. I processori moderni sono molto più complessi
  12. Un programma può diventare dati
  13. Dall’hardware specializzato alla macchina universale
  14. Perché l’architettura di von Neumann conta ancora
  15. Domande frequenti
  16. John von Neumann inventò da solo questa architettura?
  17. Qual è l’idea principale dell’architettura di von Neumann?
  18. Qual è la differenza tra architettura von Neumann e Harvard?
  19. Cos’è il collo di bottiglia di von Neumann?
  20. I computer moderni usano ancora l’architettura di von Neumann?

L’architettura di von Neumann è uno dei modelli fondamentali dell’informatica moderna. Formalizzata a metà degli anni Quaranta nel contesto dei primi computer elettronici, si basa su un’idea oggi quasi ovvia: le istruzioni di un programma possono essere conservate in memoria proprio come i dati che elaborano.

Questo principio del programma memorizzato trasformò profondamente la progettazione dei computer. La stessa macchina poteva svolgere compiti molto diversi semplicemente caricando un nuovo programma, senza modificare fisicamente il cablaggio.

A più di ottant’anni dai primi lavori sull’EDVAC, i processori sono diventati enormemente più complessi. Eppure memoria, calcolo, controllo e input/output restano al centro del loro funzionamento.

Prima del programma memorizzato

Le prime macchine automatiche di calcolo non venivano necessariamente programmate come i computer attuali. Su alcune, cambiare il calcolo significava modificare collegamenti, spostare cavi, impostare interruttori o preparare nuovi supporti fisici. L’ENIAC, sviluppato negli Stati Uniti durante la Seconda guerra mondiale, ne è un esempio celebre.

Emersa quindi una domanda essenziale: e se le istruzioni che dicono alla macchina cosa fare fossero esse stesse conservate nella memoria? Il programma diventerebbe informazione caricabile e leggibile dal computer, non soltanto una configurazione fisica.

Il progetto EDVAC e il rapporto del 1945

Nel 1945 i progettisti dell’ENIAC lavoravano già al successore, l’EDVAC (Electronic Discrete Variable Automatic Computer). John von Neumann partecipò alle discussioni e redasse il celebre First Draft of a Report on the EDVAC.

Il documento descrive una macchina elettronica organizzata intorno a calcolo, controllo, memoria e comunicazione con l’esterno. Soprattutto, presenta il principio secondo cui le istruzioni possono essere rappresentate numericamente e memorizzate. La sua ampia circolazione contribuì fortemente a diffondere questa concezione del computer.

Un’invenzione collettiva

Sarebbe fuorviante presentare John von Neumann come unico inventore dell’architettura. J. Presper Eckert, John Mauchly e altri ricercatori e ingegneri contribuirono direttamente ai progetti ENIAC ed EDVAC.

Von Neumann ebbe tuttavia un ruolo decisivo nella formalizzazione e soprattutto nella diffusione delle idee. Per questo l’espressione storica “architettura di von Neumann” è rimasta.

Le cinque grandi funzioni

In forma semplificata, una macchina di tipo von Neumann comprende:

  • un’unità aritmetico-logica (ALU);
  • un’unità di controllo;
  • la memoria;
  • dispositivi di input;
  • dispositivi di output.

Nei computer moderni ALU e controllo fanno parte del processore. La memoria conserva sia i dati sia le istruzioni del programma. Input e output collegano il computer al mondo esterno tramite tastiere, schermi, dispositivi di archiviazione, reti e sensori.

L’idea decisiva: istruzioni e dati in memoria

In una classica architettura di von Neumann, dati e istruzioni possono condividere la stessa memoria. Un semplice programma di addizione può conservare i due numeri, l’istruzione che richiede l’addizione, quella che indica dove salvare il risultato e infine il risultato stesso.

Anche un’istruzione è dunque informazione numerica. Per cambiare il comportamento della macchina basta caricare nuove istruzioni. Lo stesso hardware può eseguire contabilità, calcoli scientifici, giochi o un editor di testo.

Fetch, decode, execute

L’esecuzione può essere descritta dal ciclo fetch-decode-execute. Un registro chiamato program counter contiene l’indirizzo della prossima istruzione. Il processore la preleva dalla memoria, l’unità di controllo la decodifica, l’operazione viene eseguita e il risultato viene conservato in un registro, in memoria o inviato a un altro componente.

I processori moderni compiono miliardi di cicli al secondo.

I registri: memoria vicinissima al calcolo

Il processore possiede piccole aree di memoria estremamente veloci chiamate registri. Possono contenere valori di calcolo, indirizzi, risultati intermedi, l’istruzione corrente o l’indirizzo della successiva.

Sono minuscoli rispetto alla memoria principale, ma molto più rapidi. Questa differenza evidenzia un problema fondamentale: il calcolo può diventare più veloce dell’accesso ai dati di cui ha bisogno.

Il collo di bottiglia di von Neumann

Nel modello classico, dati e istruzioni condividono memoria e percorsi di comunicazione con il processore. Anche una CPU molto veloce può quindi essere limitata dalla velocità con cui le informazioni viaggiano da e verso la memoria.

Questo fenomeno è noto come collo di bottiglia di von Neumann, espressione resa celebre da John Backus negli anni Settanta. Il divario di prestazioni tra processore e memoria rimane una sfida centrale dell’architettura dei computer.

Le cache avvicinano i dati al processore

Una risposta consiste nell’aggiungere più livelli di cache. Una cache è più piccola della memoria principale, ma più veloce, e cerca di mantenere vicino al processore dati e istruzioni che probabilmente serviranno presto.

I processori moderni dispongono in genere di cache L1, L2 e L3 di dimensioni e velocità differenti. L’obiettivo è ridurre il più possibile l’attesa della memoria principale.

Architettura von Neumann e Harvard

In una architettura Harvard rigorosa, istruzioni e dati usano memorie separate e possono disporre di percorsi di comunicazione distinti. Ciò può permettere di prelevare contemporaneamente un’istruzione e un dato.

In sintesi: von Neumann = spazio di memoria condiviso; Harvard = memorie separate. Nella pratica, molti processori moderni combinano i modelli: mostrano al software uno spazio unificato, ma internamente possiedono cache separate per istruzioni e dati. Si parla spesso di architettura Harvard modificata.

I processori moderni sono molto più complessi

Il ciclo fetch-decode-execute è un ottimo modello didattico, ma i processori moderni non lavorano rigidamente un’istruzione alla volta. Il pipelining sovrappone le fasi, diverse unità di esecuzione lavorano in parallelo, alcune istruzioni possono essere riordinate e l’esecuzione speculativa anticipa calcoli prima di sapere se serviranno.

I processori possiedono inoltre più core e unità specializzate. A livello software resta però l’idea fondamentale: istruzioni memorizzate dirigono una macchina generalista che manipola dati.

Un programma può diventare dati

Poiché un programma è rappresentato numericamente in memoria, un programma può manipolarne un altro. Un compilatore legge codice sorgente e produce un eseguibile. Un sistema operativo carica programmi in memoria. Un editor modifica file di codice. Un programma può persino generare nuove istruzioni.

La distinzione tra “programma” e “dati” dipende quindi anche dall’interpretazione dell’informazione. Questa proprietà è stata essenziale per sistemi operativi, compilatori, linguaggi e per l’industria del software.

Dall’hardware specializzato alla macchina universale

Il programma memorizzato contribuì al passaggio da una macchina diversa per ogni problema a una macchina generalista il cui comportamento cambia attraverso il software.

Esiste una forte relazione concettuale con Alan Turing. La macchina di Turing è un modello matematico, mentre l’architettura di von Neumann riguarda l’organizzazione pratica dei computer elettronici. I due concetti appartengono tuttavia alla stessa rivoluzione: il comportamento di una macchina può essere determinato dall’informazione che riceve.

Perché l’architettura di von Neumann conta ancora

I computer attuali comprendono GPU, più core, gerarchie di cache complesse, controller e acceleratori specializzati. Definirli semplicemente “macchine di von Neumann” sarebbe riduttivo.

Il modello resta però estremamente utile dal punto di vista storico e didattico. Spiega perché un computer possiede memoria e processore, come viene eseguito un programma, perché i dati devono muoversi tra componenti e perché la velocità della memoria influenza le prestazioni.

Il principio del programma memorizzato ha trasformato il computer in una macchina versatile definita dal software tanto quanto dall’hardware.

Domande frequenti

John von Neumann inventò da solo questa architettura?

No. Von Neumann ebbe un ruolo importante nella formalizzazione e diffusione, soprattutto con il First Draft of a Report on the EDVAC del 1945. Le idee nacquero però da un lavoro collettivo che coinvolse, tra gli altri, J. Presper Eckert e John Mauchly.

Qual è l’idea principale dell’architettura di von Neumann?

Il programma memorizzato: le istruzioni possono essere rappresentate numericamente e conservate in memoria, permettendo alla stessa macchina di eseguire programmi diversi.

Qual è la differenza tra architettura von Neumann e Harvard?

Nel modello classico di von Neumann, istruzioni e dati condividono la memoria. In un’architettura Harvard usano memorie o percorsi separati. Molti processori moderni adottano soluzioni ibride.

Cos’è il collo di bottiglia di von Neumann?

È il limite di prestazioni causato dalla comunicazione tra processore e memoria. Una CPU molto veloce può comunque dover attendere istruzioni o dati necessari.

I computer moderni usano ancora l’architettura di von Neumann?

Non nella sua semplice forma storica. Cache, più core, esecuzione parallela e unità specializzate estendono enormemente il modello, ma il principio del programma memorizzato resta fondamentale.

Questo articolo ti è stato utile?

Fonti e riferimenti