Architettura di Von Neumann e struttura interna della CPU

// obiettivi di apprendimento
Descrivere l’architettura di Von Neumann e i suoi componenti fondamentali
Analizzare in modo approfondito la struttura interna della CPU
Comprendere il ciclo macchina e il ruolo del clock
📄
Slides
Von Neumann e ciclo macchina
📚
Risorse
Esercizi svolti sul calcolo dei tempi di esecuzione di un’istruzione
Vedi →

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.

// l’idea fondamentale
Memorizzare nella stessa memoria sia i dati sia le istruzioni che li elaborano.
Questa scelta ha reso possibile la programmabilità universale dei calcolatori — un programma è un dato come gli altri, modificabile e intercambiabile.

Il modello individua quattro componenti fondamentali che ritroviamo invariati in ogni sistema moderno:

🧠
CPU
Unità Centrale di Elaborazione
💾
MEMORIA
Dati e istruzioni condivisi
⌨️
I/O
Sistema di Input/Output
🔌
BUS
Bus di comunicazione

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.

BUS DATI
Trasporta i dati tra CPU, memoria e periferiche — bidirezionale
BUS INDIRIZZI
Indica la locazione di memoria o il dispositivo da raggiungere — unidirezionale (CPU → memoria)
BUS CONTROLLO
Coordina le operazioni — segnali come RD (lettura) e WR (scrittura)
// collo di bottiglia di Von Neumann
Il limite principale del modello è che istruzioni e dati condividono lo stesso bus — non possono transitare contemporaneamente. Questo crea un collo di bottiglia tra CPU e memoria che ancora oggi i progettisti cercano di mitigare con cache, pipeline e architetture Harvard modificate.

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.

PROGRAM COUNTER (PC)
Contiene l’indirizzo della prossima istruzione da eseguire. Garantisce la sequenzialità del programma — viene incrementato dopo ogni fetch o caricato con un nuovo indirizzo in caso di salto.
INSTRUCTION REGISTER (IR)
Contiene l’istruzione corrente prelevata dalla memoria. La CU la analizza per determinare l’operazione da eseguire e i registri coinvolti.

2 — ALU — Unità Aritmetico-Logica

L’ALU esegue tutte le operazioni computazionali — è costruita da reti combinatorie di porte logiche.

// operazioni aritmetiche
Somma, sottrazione
Moltiplicazione, divisione
// operazioni logiche
AND, OR, NOT
Confronti, shift

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.

RegistroTipoFunzione
R0…RnGeneral purposeOperandi e risultati delle operazioni ALU
PCSpecial purposeIndirizzo della prossima istruzione
IRSpecial purposeIstruzione corrente in esecuzione
MARSpecial purposeMemory Address Register — indirizzo da leggere/scrivere
MDRSpecial purposeMemory Data Register — dato in transito da/verso la memoria
SPSpecial purposeStack 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.

// esempio pratico
2,3 GHz
= 2.300.000.000 cicli al secondo = 2,3 × 10⁹ Hz
La frequenza non è però l’unico indicatore di prestazione: istruzioni diverse richiedono un numero diverso di cicli di clock per completarsi.

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.

01
FETCH
Prelievo istruzione
02
DECODE
Interpretazione
03
EXECUTE
Esecuzione
04 opt.
MEMORY
Accesso memoria
05 opt.
WRITE BACK
Scrittura risultato

Fase 1 — Fetch (Instruction Fetch)

Prelievo dell’istruzione dalla memoria principale. Sequenza operativa passo per passo:

  1. Il contenuto del PC viene copiato nel MAR
  2. La CPU attiva il segnale di lettura sul bus di controllo (RD)
  3. La memoria restituisce il contenuto della cella indirizzata
  4. Il dato transita nel MDR
  5. L’istruzione viene caricata nell’IR
  6. Il PC viene incrementato per puntare all’istruzione successiva
// il ruolo del PC nei salti
In condizioni normali il 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:

OPCODE
Il codice operativo — identifica l’operazione da eseguire
OPERANDI
I dati o i registri su cui operare
INDIRIZZAMENTO
Come interpretare gli operandi — diretto, indiretto, immediato

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 PC in 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 RD o WR sul 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

FaseFunzioneRegistri coinvoltiSempre presente
FetchPrelievo istruzione dalla memoriaPC, MAR, MDR, IR
DecodeInterpretazione dell’istruzioneIR, CU
ExecuteEsecuzione dell’operazioneALU, Registri generali
MemoryAccesso dati in memoriaMAR, MDRSolo LOAD/STORE
Write BackScrittura risultato finaleRegistri / MemoriaSolo se necessario

Esempio completo — ADD R1, R2, R3

Eseguiamo passo per passo l’istruzione ADD R1, R2, R3 che significa R1 = R2 + R3:

01 FETCH
La CU preleva ADD R1, R2, R3 dalla memoria e la carica in IR. Il PC viene incrementato.
02 DECODE
La CU identifica l’opcode ADD e gli operandi R2, R3. Prepara i segnali per l’ALU.
03 EXECUTE
L’ALU somma i valori di R2 e R3. I flag vengono aggiornati.
04 WRITE BACK
Il risultato viene scritto in R1. Nessun accesso alla memoria necessario.
// concetto fondamentale
Il ciclo macchina rappresenta il meccanismo operativo che consente alla CPU di trasformare una sequenza di istruzioni binarie in un comportamento funzionale. Nei processori moderni il ciclo è suddiviso in micro-operazioni di durata uniforme, migliorando l’efficienza attraverso la pipeline.

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

Lascia un commento