gl/ripetizioni

Architettura di Von Neumann e CPU: terza tecnico informatica

Architettura di Von Neumann, CPU, registri, bus, memorie e ciclo fetch-decode-execute spiegati con esempi: la prima verifica di sistemi e reti in terza.

di Gaetano Livornese

  • #informatica
  • #terza superiore
  • #tecnico
  • #architettura di von neumann
  • #cpu
  • #sistemi e reti

Fine settembre 2026, articolazione Informatica e telecomunicazioni: in terza, Sistemi e reti (4 ore a settimana) ha aperto l’anno con l’architettura di Von Neumann e sta entrando nel ciclo macchina — fetch, decode, execute — prima di passare a memorie, poi ad assembly su una macchina didattica o su Arduino. La prima verifica cade fra cinque e sette settimane, quindi fra fine ottobre e inizio novembre: scritto teorico più domande su schema a blocchi.

Lo schema a blocchi della CPU si impara in un pomeriggio. Il problema arriva quando il docente chiede di tracciare cosa succede dentro quei blocchi mentre la macchina esegue un’istruzione, registro per registro — ed è esattamente il tipo di domanda che compare più spesso in verifica.

Il modello di Von Neumann, in breve

Un calcolatore secondo Von Neumann è fatto di quattro componenti collegati da bus:

  • CPU (Central Processing Unit), a sua volta divisa in ALU (Arithmetic Logic Unit, esegue i calcoli) e CU (Control Unit, coordina il ciclo macchina) più un set di registri;
  • memoria centrale, un’unica memoria che contiene sia i dati sia le istruzioni del programma — questo è il tratto distintivo del modello: dati e istruzioni condividono lo stesso spazio di memoria e lo stesso bus;
  • unità di I/O, che collegano il calcolatore a tastiera, schermo, disco, rete;
  • bus di sistema: tre canali distinti — bus dati (trasporta i valori), bus indirizzi (trasporta la posizione di memoria da leggere o scrivere) e bus di controllo (trasporta i segnali che coordinano l’operazione, come lettura/scrittura).

Il modello alternativo che spesso viene citato per confronto è l’architettura Harvard, usata in molti microcontrollori: memoria dati e memoria istruzioni sono fisicamente separate, con bus distinti, e questo permette a CPU semplici di leggere un’istruzione e un dato nello stesso ciclo di clock. Von Neumann è più semplice da costruire (una sola memoria, un solo bus) ma paga il fatto che CPU e memoria si contendono lo stesso canale per leggere sia il codice sia i dati — è il cosiddetto collo di bottiglia di Von Neumann. In verifica basta saper dire questa differenza in tre righe: non serve altro.

I registri che il ciclo macchina usa davvero

Il ciclo macchina si capisce solo se prima sono chiari i registri coinvolti. Sono pochi e ognuno ha un compito preciso:

  • PC (Program Counter): contiene l’indirizzo della prossima istruzione da eseguire. Si incrementa automaticamente dopo ogni fetch.
  • IR (Instruction Register): contiene l’istruzione appena prelevata dalla memoria, in attesa di essere decodificata.
  • MAR (Memory Address Register): contiene l’indirizzo che la CPU sta per mandare in memoria, sia per leggere sia per scrivere.
  • MDR (Memory Data Register, a volte chiamato MBR, Memory Buffer Register): contiene il dato che passa fra CPU e memoria in quel momento — in lettura arriva dalla memoria, in scrittura è pronto per essere scritto.
  • Accumulatore (ACC): il registro dove l’ALU mette il risultato delle operazioni aritmetiche o logiche, sulle macchine didattiche a singolo accumulatore.
  • Flag (o registro di stato): un piccolo insieme di bit che segnalano condizioni sul risultato dell’ultima operazione — per esempio zero (Z, il risultato è 0) o carry (C, c’è stato un riporto). Servono per i salti condizionati.

Il ciclo macchina, passo per passo

Ogni istruzione, qualunque essa sia, attraversa tre fasi che si ripetono in loop continuo finché la macchina è accesa:

  1. Fetch (prelievo): il PC contiene l’indirizzo dell’istruzione da eseguire. Quell’indirizzo viene copiato nel MAR, la CU manda il segnale di lettura sul bus di controllo, la memoria restituisce il contenuto di quella cella sul bus dati, e quel contenuto viene copiato nell’IR. A questo punto il PC si incrementa, così punta già alla prossima istruzione.
  2. Decode (decodifica): la CU legge il contenuto dell’IR e stabilisce di che istruzione si tratta (somma, caricamento, salto, …) e quali operandi servono.
  3. Execute (esecuzione): la CU attiva i circuiti giusti — tipicamente l’ALU, se è un’operazione aritmetica — e il risultato finisce dove deve andare: nell’accumulatore, in un registro, oppure di nuovo in memoria passando per MAR e MDR.

Dopo l’execute il ciclo ricomincia dal fetch, con il PC già puntato alla prossima istruzione. Questa ripetizione continua è il motivo per cui si parla di “ciclo”: non è una sequenza che finisce, è un loop che si ferma solo quando il programma incontra un’istruzione di arresto o la macchina viene spenta.

Un errore da evitare: confondere l’indirizzo con il dato

⚠ L’errore più frequente su questo argomento è confondere cosa contiene MAR con cosa contiene MDR: MAR contiene sempre e solo un indirizzo (una posizione), MDR contiene sempre e solo un dato (un valore). Chi in verifica scrive “il MAR contiene il numero 25” quando 25 è il valore da sommare, e non la cella di memoria dove sta quel valore, perde punti anche se ha capito il resto del ciclo. Un modo per non sbagliare: prima di scrivere la traccia di un’istruzione, segna a fianco di ogni registro se ti aspetti un indirizzo o un valore — MAR e PC sempre indirizzi, MDR e ACC sempre valori, IR il codice dell’istruzione.

Un secondo errore comune è dimenticare che il PC si incrementa durante il fetch, non durante l’execute: se in un salto (JUMP) il nuovo indirizzo viene scritto nel PC durante l’execute, quell’incremento automatico del fetch va semplicemente sovrascritto — non sommato due volte.

Tre esercizi svolti

Esercizio 1 — traccia del ciclo macchina su tre istruzioni.

Una macchina didattica ad accumulatore esegue questo programma, con la memoria dati che parte dalla cella 100:

0: LOAD 100     ; carica in ACC il contenuto della cella 100
1: ADD  101     ; somma ad ACC il contenuto della cella 101
2: STORE 102    ; scrive ACC nella cella 102

Con MEM[100] = 7 e MEM[101] = 5, la traccia registro per registro è:

FasePCIRMARMDRACC
fetch istr. 00→1LOAD 1000LOAD 100
decode+execute1LOAD 10010077
fetch istr. 11→2ADD 1011ADD 1017
decode+execute2ADD 101101512
fetch istr. 22→3STORE 1022STORE 10212
decode+execute3STORE 1021021212

Al termine, MEM[102] = 12. Nota come MAR alterna fra l’indirizzo dell’istruzione (durante il fetch) e l’indirizzo dell’operando (durante l’execute): è lo stesso registro che serve a entrambi gli scopi, in momenti diversi del ciclo.

Esercizio 2 — bus indirizzi e capacità di memoria.

Un bus indirizzi a 16 bit può esprimere quante celle di memoria distinte, e quanta memoria indirizza se ogni cella contiene una parola da 1 byte?

Un bus a bit può rappresentare combinazioni diverse, quindi indirizzi distinti:

Con una parola da 1 byte per cella, la memoria indirizzabile totale è:

Se lo stesso bus a 16 bit indirizzasse parole da 4 byte (32 bit) invece che da 1 byte, la memoria totale salirebbe a byte, cioè 256 KiB — a parità di bus indirizzi, cambia solo quanti byte sta in ogni cella.

Esercizio 3 — clock e durata di un’istruzione.

Una CPU lavora a 2 GHz e un’istruzione richiede in media 4 cicli di clock per completare fetch, decode ed execute. Quanto dura l’esecuzione di quell’istruzione?

Un clock a 2 GHz significa cicli al secondo, quindi la durata di un ciclo è:

Con 4 cicli per istruzione:

Quella CPU esegue quindi circa 500 milioni di istruzioni di questo tipo al secondo () — è il motivo per cui in verifica ti chiedono sia il numero di cicli per istruzione sia la frequenza: uno dei due da solo non basta a rispondere “quanto ci mette”.

Memorie: la gerarchia in tre righe

Il programma prosegue con la gerarchia delle memorie, ed è utile avere già chiaro lo schema prima di arrivarci: registri (dentro la CPU, pochi byte, velocità massima) → cache (piccola, velocissima, copia temporanea dei dati usati più spesso) → RAM (memoria centrale, volatile: si svuota allo spegnimento) → disco (memoria di massa, non volatile, molto più lenta ma capiente). Si scende nella gerarchia e si guadagna capacità perdendo velocità — è lo stesso compromesso che regola quasi ogni scelta di progettazione hardware che vedrai da qui in avanti.

Per i calcoli in base 2 che servono per bus e indirizzi — conversioni, potenze di due, esadecimale — trovi il metodo passo passo in binario ed esadecimale in prima al tecnico: qui l’ho dato per acquisito. Se in Informatica stai già lavorando su cicli, array e funzioni, quella parte del programma (diversa da Sistemi e reti) è coperta in cicli annidati e array in terza informatica. E quando in quarta Sistemi e reti passa dall’hardware alla rete, il livello successivo — indirizzi IP e subnetting — è qui: indirizzi IP e subnetting in quarta al tecnico.

Domande frequenti

La memoria cache fa parte della CPU o della RAM? È fisicamente vicina alla CPU (spesso integrata nello stesso chip) ma concettualmente è un livello intermedio: una copia veloce e piccola di dati che stanno anche in RAM, gestita in automatico dall’hardware.

Perché il modello si chiama “di Von Neumann” e non “del computer”? Perché non è l’unico modello possibile — esiste l’architettura Harvard, con memorie separate per dati e istruzioni — ed è associato a John von Neumann, che nel 1945 descrisse per primo l’idea di programma memorizzato insieme ai dati nella stessa memoria.

Serve sapere a memoria tutte le sigle dei registri? Serve saperle usare nella traccia di un’istruzione, come nell’esercizio 1: la sigla da sola, senza saper dire cosa contiene in quel preciso passaggio del ciclo, vale poco in verifica.

Un simulatore di informatica per questo argomento non c’è ancora sul sito: le simulazioni scolastiche che ci sono, per ora di matematica e fisica, sono nella pagina delle simulazioni per la scuola. Per il resto del programma di Informatica trovi il materiale nella pagina di informatica; se vuoi una mano su questo argomento parti dalla chiamata conoscitiva gratuita.

Continua a leggere

Post correlati.

Vuoi applicare quello che hai letto?

Parliamone 30 minuti gratis: guardiamo insieme dove sei bloccato e ti dico onestamente come posso aiutarti.

Oppure scrivimi su WhatsApp.