Origine del modello — Von Neumann, 1945
Nel 1945 il matematico John von Neumann propose un modello teorico per la progettazione dei sistemi di elaborazione che ha costituito la base dell’informatica moderna. La sua intuizione fondamentale fu semplice quanto rivoluzionaria.
Il modello individua quattro componenti fondamentali che ritroviamo invariati in ogni sistema moderno:
Il bus di sistema
La CPU comunica con la memoria e con i dispositivi di I/O tramite il bus di sistema — un insieme di linee elettriche suddivise in tre gruppi distinti per funzione.
RD (lettura) e WR (scrittura)La CPU — struttura interna
La CPU è il componente centrale del processo di elaborazione. Fisicamente è realizzata in un microprocessore — un circuito integrato che racchiude miliardi di transistor. Al suo interno si distinguono quattro elementi fondamentali.
1 — Unità di Controllo (CU)
La CU è il direttore d’orchestra dell’intero sistema. Interpreta le istruzioni, attiva i segnali di controllo sul bus e governa l’accesso alla memoria e alle periferiche.
2 — ALU — Unità Aritmetico-Logica
L’ALU esegue tutte le operazioni computazionali — è costruita da reti combinatorie di porte logiche.
Dopo ogni operazione viene aggiornato il registro di stato (SR) con i flag che descrivono il risultato: Zero, Overflow, Sign, Carry.
3 — Registri
I registri sono memorie interne ad altissima velocità, costituite da elementi bistabili. Un registro di n bit può assumere 2ⁿ configurazioni diverse.
| Registro | Tipo | Funzione |
|---|---|---|
R0…Rn | General purpose | Operandi e risultati delle operazioni ALU |
PC | Special purpose | Indirizzo della prossima istruzione |
IR | Special purpose | Istruzione corrente in esecuzione |
MAR | Special purpose | Memory Address Register — indirizzo da leggere/scrivere |
MDR | Special purpose | Memory Data Register — dato in transito da/verso la memoria |
SP | Special purpose | Stack Pointer — punta alla cima dello stack |
4 — Il Clock
Il clock è un segnale periodico che sincronizza tutte le operazioni della CPU. La frequenza di clock, misurata in Hertz, indica il numero di cicli al secondo.
Il ciclo macchina
L’esecuzione di ogni istruzione segue una sequenza precisa chiamata ciclo macchina, articolata in cinque fasi. Le prime tre sono sempre presenti; le ultime due compaiono solo quando necessario.
Fase 1 — Fetch (Instruction Fetch)
Prelievo dell’istruzione dalla memoria principale. Sequenza operativa passo per passo:
- Il contenuto del
PCviene copiato nelMAR - La CPU attiva il segnale di lettura sul bus di controllo (
RD) - La memoria restituisce il contenuto della cella indirizzata
- Il dato transita nel
MDR - L’istruzione viene caricata nell’
IR - Il
PCviene incrementato per puntare all’istruzione successiva
PC viene semplicemente incrementato. In caso di istruzione di salto (branch), il PC non viene incrementato ma caricato con un nuovo indirizzo — questo modifica il flusso di esecuzione del programma.Fase 2 — Decode (Instruction Decode)
L’istruzione nell’IR viene interpretata dalla CU. Ogni istruzione macchina contiene:
La CU identifica l’operazione, determina i registri coinvolti, prepara i segnali di controllo e calcola gli indirizzi effettivi se necessario.
Fase 3 — Execute
La fase centrale — l’operazione viene effettivamente svolta. A seconda dell’istruzione:
- L’ALU esegue operazioni aritmetiche o logiche
- La CU modifica il
PCin caso di salto - La FPU gestisce calcoli in virgola mobile (se presenti)
- I flag del registro di stato vengono aggiornati (
Zero,Carry,Overflow,Sign)
Fase 4 — Memory Access (opzionale)
Necessaria solo per istruzioni che accedono alla memoria — LOAD (lettura) e STORE (scrittura):
- L’indirizzo calcolato viene caricato nel
MAR - Il dato transita tramite
MDR - Vengono attivati i segnali
RDoWRsul bus di controllo
Fase 5 — Write Back (opzionale)
Il risultato dell’elaborazione viene scritto nella destinazione finale — un registro generale o una locazione di memoria. Con questa fase termina il ciclo corrente e la CPU riparte con una nuova fase di Fetch.
Schema riassuntivo del ciclo
| Fase | Funzione | Registri coinvolti | Sempre presente |
|---|---|---|---|
| Fetch | Prelievo istruzione dalla memoria | PC, MAR, MDR, IR | ✔ |
| Decode | Interpretazione dell’istruzione | IR, CU | ✔ |
| Execute | Esecuzione dell’operazione | ALU, Registri generali | ✔ |
| Memory | Accesso dati in memoria | MAR, MDR | Solo LOAD/STORE |
| Write Back | Scrittura risultato finale | Registri / Memoria | Solo se necessario |
Esempio completo — ADD R1, R2, R3
Eseguiamo passo per passo l’istruzione ADD R1, R2, R3 che significa R1 = R2 + R3:
ADD R1, R2, R3 dalla memoria e la carica in IR. Il PC viene incrementato.ADD e gli operandi R2, R3. Prepara i segnali per l’ALU.R2 e R3. I flag vengono aggiornati.R1. Nessun accesso alla memoria necessario.Riepilogo
- Von Neumann (1945) propose di memorizzare dati e istruzioni nella stessa memoria — fondamento della programmabilità universale
- I quattro componenti fondamentali sono CPU, Memoria, I/O e Bus
- Il bus di sistema è diviso in bus dati, bus indirizzi e bus di controllo
- Il collo di bottiglia di Von Neumann nasce dalla condivisione del bus tra dati e istruzioni
- La CU coordina le operazioni usando PC (prossima istruzione) e IR (istruzione corrente)
- L’ALU esegue operazioni aritmetiche e logiche, aggiornando i flag di stato
- I registri MAR e MDR mediano ogni accesso alla memoria
- Il clock sincronizza tutte le operazioni — la frequenza misura i cicli al secondo
- Il ciclo macchina si articola in Fetch → Decode → Execute, con Memory e Write Back opzionali