Architettura di Von Neumann con CPU, unità di controllo, ALU, registri, memoria, dispositivi di ingresso e uscitaINFORMATICA — FONDAMENTI | Prima Liceo Scientifico — Scienze Applicate

Computer e architettura di Von Neumann

Nel primo articolo abbiamo imparato come i dati possano essere rappresentati mediante bit. Ora affrontiamo la domanda successiva: quale organizzazione permette a una macchina di memorizzare istruzioni, elaborare dati e comunicare risultati? Conosceremo i blocchi fondamentali di un computer e seguiremo un programma durante la sua esecuzione.

Obiettivi verificabili: distinguere hardware, firmware e software; descrivere il modello a programma memorizzato; identificare CPU, registri, RAM, memoria secondaria, bus e periferiche; spiegare il ciclo di istruzione; interpretare un semplice tracciato di esecuzione; riconoscere alcuni limiti e criteri di prestazione.

Prerequisiti: Articolo 01 — Informazione, dati, numerazione e codifica; nozioni elementari di bit, byte e rappresentazione binaria.

Perimetro: architettura funzionale del calcolatore. Sistemi operativi, processi e file system saranno trattati nell’Articolo 03; algoritmi e linguaggi nell’Articolo 05 e successivi.

1. Che cos’è un computer?

Un computer è un sistema programmabile capace di ricevere dati, conservarli, eseguire operazioni secondo istruzioni e produrre risultati. È composto da dispositivi fisici e da programmi: la sua caratteristica decisiva non è una particolare forma esterna, ma la possibilità di svolgere compiti diversi modificando il software.

Il modello funzionale più semplice si descrive così: ingresso → elaborazione → uscita. La memoria è collegata all’elaborazione in entrambe le direzioni: il processore vi legge istruzioni e dati e può scrivervi risultati. Non si deve quindi intendere la memoria come un passaggio obbligato posto tra elaborazione e uscita.

Esempio. Durante il calcolo di una media, la tastiera può fornire due numeri (ingresso), il programma ne chiede la somma e la divisione (elaborazione), la memoria conserva valori e istruzioni e lo schermo mostra il risultato (uscita).

2. Hardware, software e firmware

L’hardware comprende i componenti fisici: processore, scheda madre, moduli di memoria, unità di archiviazione e dispositivi di ingresso e uscita. Il software è costituito da istruzioni e dati che determinano il comportamento del sistema. Fra i software distinguiamo, in prima approssimazione, software di sistema e applicazioni. La scheda madre è la scheda elettronica che ospita o collega molti componenti e rende possibili le loro comunicazioni: non coincide con la CPU.

Il firmware è software strettamente legato al funzionamento di un dispositivo, tipicamente conservato in memoria non volatile. All’avvio di molti PC interviene il firmware UEFI (o BIOS nei sistemi storici): inizializza componenti e avvia il processo che porta al caricamento del sistema operativo. Non è corretto dire che il firmware sia un componente materiale distinto dall’hardware: il codice è software, il chip che lo conserva è hardware.

Da ricordare: il sistema operativo non è la CPU; è un insieme di programmi che gestisce risorse e offre servizi agli altri programmi. Lo studieremo nel prossimo articolo.

3. L’idea del programma memorizzato

Nel modello di Von Neumann, istruzioni e dati possono risiedere nella stessa memoria indirizzabile. La CPU preleva dalla memoria le istruzioni di un programma, le interpreta e le esegue. Il comportamento della macchina cambia caricando un programma diverso, senza dover ricablare il circuito per ogni nuovo problema.

Questa descrizione è un modello concettuale: non significa che ogni computer moderno possieda un unico banco di memoria o un solo collegamento fisico. Molti processori moderni impiegano cache separate per istruzioni e dati, più core e numerosi livelli di interconnessione, pur mantenendo il principio del programma memorizzato. Nel modello classico, il trasferimento di istruzioni e dati attraverso un percorso condiviso può limitare la velocità complessiva: si parla di collo di bottiglia di Von Neumann. Cache e altre soluzioni architetturali contribuiscono ad attenuarne gli effetti.

Una nota storica accurata

John von Neumann contribuì alla formalizzazione e diffusione dell’architettura dei calcolatori a programma memorizzato negli anni Quaranta. Lo sviluppo fu collettivo e coinvolse altri ricercatori e progetti: il nome convenzionale dell’architettura non attribuisce a una sola persona ogni invenzione del computer.

Schema dell'architettura di Von Neumann con CPU, unità di controllo, ALU, registri, memoria condivisa per istruzioni e dati, dispositivi di ingresso e uscita.
Architettura di Von Neumann: la CPU elabora le istruzioni e scambia dati con la memoria principale, mentre le periferiche permettono l’ingresso e l’uscita delle informazioni.

4. I blocchi funzionali dell’architettura

Blocco Funzione Esempio
CPU Preleva, interpreta ed esegue istruzioni Processore
Memoria principale Conserva istruzioni e dati usati durante l’esecuzione RAM
Ingresso (input) Fornisce informazioni alla macchina Tastiera, sensore
Uscita (output) Rende disponibili i risultati Schermo, stampante
Interconnessioni Trasportano indirizzi, dati e segnali di coordinamento Bus e collegamenti interni
Archiviazione Conserva informazioni anche senza alimentazione SSD, HDD

La tabella distingue la funzione di ogni blocco da un prodotto specifico. Una webcam, per esempio, è una periferica di input; un touchscreen unisce funzioni di input e output.

5. La CPU: unità di controllo, ALU e registri

La CPU (Central Processing Unit) coordina ed esegue le istruzioni del programma. In una rappresentazione didattica possiamo distinguere tre elementi.

Unità di controllo

La CU (Control Unit) interpreta l’istruzione e coordina le operazioni necessarie a eseguirla: lettura di registri, richiesta di accessi alla memoria e attivazione delle unità di calcolo. La descrizione non implica che la CU sia un componente fisicamente isolato in ogni processore.

Unità aritmetico-logica

L’ALU (Arithmetic Logic Unit) esegue operazioni elementari come somma, sottrazione, AND, OR e confronti, secondo le capacità dell’architettura. Nei processori reali esistono anche altre unità, per esempio dedicate alla virgola mobile.

Registri

I registri sono piccole memorie interne alla CPU, molto rapide, utilizzate per contenere operandi, risultati, indirizzi e informazioni di controllo. Due nomi utili nello schema didattico sono il PC (Program Counter), che identifica l’indirizzo dell’istruzione successiva secondo lo stato della macchina, e l’IR (Instruction Register), che contiene l’istruzione corrente nel modello semplificato.

Attenzione: PC può significare sia personal computer sia program counter. Il contesto evita l’ambiguità.

Schema 3D della CPU con unità di controllo CU, unità aritmetico-logica ALU, registri PC, IR, R1 e R2 e collegamenti interni per dati e segnali di controllo.
Componenti fondamentali della CPU: l’unità di controllo coordina le istruzioni, l’ALU esegue operazioni aritmetiche e logiche e i registri conservano temporaneamente dati e informazioni di controllo.

6. La memoria principale: indirizzi, celle e RAM

La memoria principale contiene istruzioni e dati che il processore deve poter raggiungere durante l’esecuzione. Nel nostro modello ogni posizione ha un indirizzo: un numero usato per identificare una locazione; il contenuto è il valore conservato in quella locazione. Indirizzo e contenuto non sono la stessa cosa.

Esempio semplificato. All’indirizzo 100 troviamo il valore 23, all’indirizzo 101 il valore 7. La CPU può richiedere «leggi 100» per ottenere 23; non sta leggendo il numero 100 come dato, ma utilizzandolo come posizione.

La RAM comunemente installata nei PC è volatile: in condizioni ordinarie perde i dati conservati quando viene tolta l’alimentazione. Random access indica la possibilità di accedere direttamente a locazioni indirizzate, non la casualità del loro contenuto.

La capacità è la quantità totale di dati memorizzabili; la latenza indica il tempo necessario prima che un’operazione produca la risposta attesa; la larghezza di banda indica quanti dati possono essere trasferiti nell’unità di tempo. Sono grandezze diverse.

7. RAM, cache, SSD: funzioni differenti

Un computer utilizza una gerarchia di memorie perché velocità, capacità e costo per bit presentano compromessi. I registri sono particolarmente rapidi e limitati; le cache conservano copie di informazioni usate frequentemente; la RAM ospita il lavoro corrente; SSD e HDD sono dispositivi di archiviazione non volatile.

Risorsa Ruolo principale Conserva normalmente i dati senza corrente?
Registri Operandi e stato immediato della CPU No
Cache (SRAM) Ridurre il tempo medio di accesso a istruzioni e dati No
RAM principale (tipicamente DRAM) Programmi e dati durante il lavoro No
SSD / HDD Conservazione di file e programmi Sì

Le differenze di velocità sono ordini di grandezza variabili e dipendono dalle tecnologie: non attribuiamo a tutte le macchine un unico tempo fisso. La cache non è semplicemente «una RAM più grande»: in genere è più piccola e più rapida della RAM principale. Inoltre, la memoria non volatile utilizzata dal firmware non coincide con la RAM di lavoro né con l’SSD su cui l’utente salva normalmente i propri file.

Gerarchia delle memorie del computer: registri, cache, RAM e SSD/HDD, con rapidità tipica crescente verso l'alto e capacità tipica crescente verso il basso.
Gerarchia delle memorie: dai registri alla cache, alla RAM e alle unità SSD/HDD. Salendo aumenta generalmente la rapidità di accesso; scendendo aumenta la capacità tipica.

8. I bus: indirizzi, dati e controllo

Nel modello didattico, i collegamenti tra CPU, memoria e periferiche vengono distinti in tre funzioni: bus degli indirizzi (identifica la destinazione o la sorgente), bus dei dati (trasporta le informazioni) e bus di controllo (trasporta segnali come richiesta di lettura e scrittura).

La larghezza del bus dati e lo spazio di indirizzamento sono concetti differenti. In un modello semplificato con 8 linee di indirizzo possiamo selezionare 28 = 256 locazioni distinte; la quantità di memoria dipende anche dalla dimensione di ciascuna locazione e dall’organizzazione effettiva.

Numero di indirizzi distinti con n bit = 2n

Questo calcolo descrive uno schema ideale; nei sistemi reali spazio di indirizzamento, bus e memoria installata non coincidono automaticamente.

9. Periferiche di input, output e input/output

Le periferiche permettono al sistema di scambiare dati con l’esterno. Tastiera e microfono forniscono input; monitor e altoparlanti forniscono output; touchscreen, schede di rete e dispositivi di archiviazione possono svolgere entrambe le funzioni. I trasferimenti avvengono attraverso controller e interfacce adatte al dispositivo.

Una periferica non deve necessariamente essere esterna al case: la distinzione è funzionale. Le moderne interfacce, come USB e PCI Express, non sono tutte equivalenti al semplice bus condiviso rappresentato nei diagrammi storici.

10. Il ciclo di istruzione: fetch, decode, execute

Nel modello introduttivo una CPU ripete tre attività fondamentali. Fetch: preleva l’istruzione indicata dal contatore di programma. Decode: ne interpreta l’operazione e gli operandi. Execute: esegue l’operazione richiesta, eventualmente leggendo o scrivendo registri e memoria. Nel frattempo il PC viene aggiornato in base al flusso di controllo.

  1. La CPU usa il PC per individuare l’indirizzo della prossima istruzione.
  2. Legge l’istruzione dalla memoria e, nel modello semplificato, la colloca nell’IR.
  3. Decodifica l’operazione e identifica i dati necessari.
  4. Esegue l’operazione; può salvare un risultato o modificare il prossimo indirizzo.
  5. Ripete il procedimento finché il programma non termina o cambia stato.

Modello e realtà: nelle CPU moderne le fasi possono sovrapporsi grazie a pipeline, esecuzione fuori ordine e altre tecniche. Le tre fasi sono uno schema logico per capire il funzionamento, non una cronologia rigida valida per ogni circuito.

Schema del ciclo di istruzione della CPU con tre fasi: fetch dell'istruzione dalla memoria mediante il Program Counter, decode ed execute, con ritorno al ciclo successivo.
Ciclo di istruzione della CPU: il processore preleva l’istruzione dalla memoria (fetch), la decodifica (decode) e la esegue (execute). Il Program Counter viene aggiornato secondo il flusso del programma.

11. Esempio completo: un programma che somma due valori

Consideriamo una macchina immaginaria con due registri generici R1 e R2. Le istruzioni seguenti sono pseudocodice macchina didattico: non appartengono al linguaggio macchina di un processore reale. Supponiamo che ogni istruzione occupi una sola posizione e che il PC iniziale sia 0.

Indirizzo   Istruzione       Significato
0           LOAD R1, [100]   R1 ← contenuto della memoria 100
1           LOAD R2, [101]   R2 ← contenuto della memoria 101
2           ADD  R1, R2      R1 ← R1 + R2
3           STORE [102], R1  memoria 102 ← R1
4           HALT             fine del programma

Dati iniziali: memoria[100] = 23; memoria[101] = 7
Istruzione eseguita R1 R2 Memoria[102] PC dopo l’istruzione
0 — LOAD R1 23 — non definita 1
1 — LOAD R2 23 7 non definita 2
2 — ADD 30 7 non definita 3
3 — STORE 30 7 30 4
4 — HALT 30 7 30 terminato

Per semplicità supponiamo che le celle di memoria siano sufficientemente ampie per i valori usati e che l’operazione ADD non produca overflow. La traccia dimostra tre aspetti: le istruzioni sono memorizzate; la CPU usa registri per elaborare; il risultato può essere scritto in memoria. Il monitor non compare nell’esempio: il risultato è conservato all’indirizzo 102, ma per visualizzarlo occorrerebbe un’ulteriore operazione di output.

12. Il clock e le prestazioni: evitare semplificazioni

Il clock fornisce una temporizzazione di riferimento a molte parti dei processori sincroni. La frequenza si misura in hertz (Hz): 3 GHz indicano 3 miliardi di cicli al secondo. Un ciclo di clock non equivale necessariamente a un’istruzione completata.

Le prestazioni dipendono anche dal numero di istruzioni da eseguire, dai cicli medi per istruzione, dalla gerarchia di memoria, dall’organizzazione della CPU, dalla presenza di più core e dal software.

Tempo CPU = (numero di istruzioni × CPI medio) / frequenza di clock

Qui CPI significa cycles per instruction, cioè numero medio di cicli per istruzione, in un modello di prestazioni semplificato. La formula vale per il tempo CPU modellato, non per tutto il tempo percepito dall’utente: attese su dispositivi e altri fattori possono incidere.

Esempio. Se un programma richiede 2 000 000 000 istruzioni, con CPI medio 1,5 e frequenza costante di 3 GHz, otteniamo 2·109 × 1,5 / (3·109 s−1) = 1 s di tempo CPU modellato. Cambiando CPI, il risultato cambia anche a parità di GHz.

13. I computer attuali: che cosa resta del modello?

Desktop, notebook, tablet e smartphone possono tutti eseguire programmi e, con differenze progettuali importanti, condividono le idee di istruzioni codificate, elaborazione, memoria e input/output. Nei dispositivi mobili molti componenti sono integrati in un SoC (System on a Chip), che può includere CPU, GPU, controller e acceleratori.

Un sistema multicore dispone di più nuclei di esecuzione; una GPU è particolarmente adatta a molte operazioni parallele; una CPU moderna può avere più livelli di cache. La distinzione tra il modello di Von Neumann e la concreta microarchitettura evita di descrivere i computer del 2026 come copie letterali degli schemi degli anni Quaranta.

14. Errori frequenti da evitare

  • «Il case è la CPU»: falso. Il case è il contenitore; la CPU è un componente elettronico.
  • «La RAM è il disco»: falso. RAM principale e SSD/HDD hanno compiti e caratteristiche differenti.
  • «Il programma arriva sempre direttamente dalla tastiera alla CPU»: falso. Le istruzioni in esecuzione sono rese disponibili attraverso memoria e meccanismi hardware/software.
  • «Un computer a 64 bit ha necessariamente 264 byte di RAM»: falso. La dicitura 64 bit non stabilisce da sola capacità fisica installabile e ampiezza effettiva degli indirizzi.
  • «Più GHz significa sempre computer più veloce»: falso. Conta l’intera organizzazione del sistema e il carico di lavoro.
  • «Fetch–decode–execute descrive ogni dettaglio delle CPU moderne»: falso. È un modello didattico utile ma astratto.

15. Esercizi graduati — Allenati con MEGI

Gli esercizi sono originali per questa unità; le risposte ragionate sono disponibili sotto ogni domanda. Prima di aprire la soluzione, prova a formulare una risposta autonoma.

15.1 Livello base — Concetti fondamentali

  1. Definisci un computer in termini funzionali, senza citarne la forma esterna.
    Soluzione ragionata

    Sistema programmabile che riceve dati, memorizza dati e istruzioni, elabora secondo istruzioni e produce risultati.

  2. Un SSD è hardware, software o firmware? Motiva la risposta.
    Soluzione ragionata

    È hardware: è un dispositivo fisico. Può contenere anche un proprio firmware, ma i due concetti non coincidono.

  3. Qual è l’innovazione concettuale del programma memorizzato?
    Soluzione ragionata

    Memorizzare istruzioni come informazioni accessibili alla macchina: lo stesso hardware può seguire programmi diversi senza modificare il cablaggio per ogni problema.

  4. Che cosa cambia tra l’indirizzo 100 e il contenuto 23 conservato in quella posizione?
    Soluzione ragionata

    100 identifica la locazione; 23 è il valore memorizzato nella locazione, letto quando la CPU accede a quell’indirizzo.

  5. Elenca due funzioni della CU e due operazioni tipiche dell’ALU.
    Soluzione ragionata

    CU: decodifica istruzioni e coordina l’accesso a registri/memoria. ALU: addizione e confronto logico o aritmetico, secondo l’architettura.

  6. Che ruolo svolge il Program Counter?
    Soluzione ragionata

    Contribuisce a identificare l’indirizzo della prossima istruzione da prelevare; salti e altri cambiamenti di flusso possono modificarne il valore.

15.2 Livello intermedio — Memorie e funzionamento

  1. Perché cache e SSD non sono sinonimi?
    Soluzione ragionata

    La cache è una memoria molto rapida per ridurre gli accessi ai livelli più lenti; l’SSD è un’unità di archiviazione non volatile di grande capacità relativa.

  2. Classifica microfono, stampante e touchscreen come input, output o entrambi.
    Soluzione ragionata

    Microfono: input; stampante: output; touchscreen: input e output.

  3. Quali sono le funzioni dei bus degli indirizzi e dei dati?
    Soluzione ragionata

    Il primo identifica le locazioni o destinazioni interessate; il secondo trasporta i dati. Il modello reale può utilizzare interconnessioni più complesse.

  4. In un modello con 10 bit di indirizzo, quante locazioni distinte si possono identificare?
    Soluzione ragionata

    210 = 1024 locazioni. Non si può ricavare la capacità totale in byte senza conoscere la dimensione della locazione.

  5. Elenca nell’ordine le tre fasi didattiche del ciclo di istruzione.
    Soluzione ragionata

    Fetch (prelievo), decode (decodifica), execute (esecuzione). L’ordine è concettuale e può sovrapporsi in una CPU reale.

  6. Nell’esempio della somma, che cosa si trova in R1 dopo ADD?
    Soluzione ragionata

    30, perché R1 conteneva 23 e R2 conteneva 7.

15.3 Livello avanzato — Applicazioni e ragionamento

  1. Nell’esempio, il valore 30 appare automaticamente sul monitor dopo STORE?
    Soluzione ragionata

    No. STORE scrive 30 in memoria[102]. Serve un’operazione separata per l’output sul monitor.

  2. Una CPU a 4 GHz è sempre più rapida di una a 3 GHz?
    Soluzione ragionata

    No. Dipende da istruzioni necessarie, CPI, architettura, memoria, numero di core, software e carico di lavoro.

  3. Calcola il tempo CPU modellato per 600 milioni di istruzioni, CPI = 2 e clock = 2 GHz.
    Soluzione ragionata

    T = (600·106 × 2)/(2·109) s = 0,6 s.

  4. Indica una caratteristica condivisa da smartphone e desktop e una differenza frequente.
    Soluzione ragionata

    Entrambi eseguono istruzioni usando processori e memoria. Negli smartphone è frequente una maggiore integrazione nel SoC e una progettazione orientata ai consumi; il desktop ha tipicamente più possibilità di espansione.

  5. Perché è sbagliato chiamare il sistema operativo «un componente della CPU»?
    Soluzione ragionata

    Il SO è software di sistema che utilizza la CPU per eseguire istruzioni e coordinare risorse; la CPU è hardware.

  6. Spiega in due frasi il limite del modello classico di Von Neumann per descrivere i processori moderni.
    Soluzione ragionata

    Descrive le funzioni e il principio del programma memorizzato, non tutti i dettagli fisici. Processori reali possono avere più core, cache separate e un’organizzazione delle istruzioni più complessa.

16. Sintesi e collegamento alla lezione successiva

Abbiamo seguito il cammino che porta dai bit alle operazioni del calcolatore. I dati e le istruzioni vengono conservati in memoria; la CPU li preleva ed elabora; i dispositivi di input/output collegano il sistema all’esterno. Il modello di Von Neumann fornisce il linguaggio di base per comprendere queste relazioni, mentre le architetture attuali ne sviluppano e complicano la realizzazione.

Rimane una domanda importante: come vengono coordinati i programmi e condivise le risorse quando più attività sono in corso? È il problema affrontato nell’Articolo 03 — Sistemi operativi, processi e file system.

Fonti e percorsi di approfondimento

Articoli simili