EuraStudy
L'argomento studia come un elaboratore sia organizzato e funzioni: il modello logico-fisico di von Neumann, il modo in cui l'informazione viene codificata in binario, i mattoni logici (algebra di Boole e porte) con cui si costruiscono i circuiti, il ciclo con cui la CPU esegue le istruzioni e la gerarchia delle memorie che ne determina le prestazioni. È un nucleo fondante dell'informatica del triennio del Liceo Scientifico (opzione Scienze Applicate) e rientra a pieno titolo nell'Esame di Stato. Lo studente impara a collegare la rappresentazione binaria dell'informazione al funzionamento concreto dell'hardware e a valutare il ruolo dei diversi componenti nelle prestazioni del sistema.
5 sezioni~26 min di lettura3 competenzeLivello Base 1 · Standard 3 · Approfondimento 1Verificato · 07/2026
livello base
Si richiede la padronanza del modello di von Neumann, delle conversioni tra i sistemi di numerazione, delle porte logiche fondamentali con le rispettive tabelle di verità e del ciclo fetch-decode-execute, con la rappresentazione degli interi (anche in complemento a due) e dei caratteri.
livello avanzato
L'indirizzo del Liceo Scientifico (Scienze Applicate) approfondisce la rappresentazione in virgola mobile, la semplificazione di funzioni booleane con le leggi dell'algebra di Boole, il legame quantitativo tra gerarchia delle memorie, località dei riferimenti e prestazioni, e i cenni ai circuiti sequenziali.
Profondità di lettura: Approfondimento
Dimensione del testo: Standard
Schema a blocchi della macchina di von Neumann
Celle indirizzabili
Con n linee del bus indirizzi si possono distinguere N = 2^n indirizzi diversi, quindi N celle di memoria.
Un calcolatore ha un bus indirizzi a 20 linee e celle di memoria da 1 byte. Determina il numero di celle indirizzabili e la dimensione totale della memoria indirizzabile in KiB e MiB.
Con n = 20 linee del bus indirizzi il numero di indirizzi distinti è N = 2^n.
2^20 = 1.048.576, quindi sono indirizzabili 1.048.576 celle, ciascuna da 1 byte.
1 KiB = 2^10 byte = 1024 byte, dunque 2^20 byte = 2^20 / 2^10 = 2^10 KiB = 1024 KiB.
1 MiB = 2^20 byte, perciò 2^20 byte = 1 MiB. La selezione della cella avviene tramite il bus indirizzi.
Risultato: 1.048.576 celle = 1.048.576 byte = 1024 KiB = 1 MiB; la cella è selezionata dal bus indirizzi.
Errori frequenti
Approfondimento
L'idea del programma memorizzato ha una radice teorica precisa: la macchina universale di Turing (1936), capace di simulare qualunque altra macchina leggendone la descrizione come un dato — von Neumann la traduce in ingegneria trattando le istruzioni come numeri in memoria. Che il codice sia dato al pari dei dati ha conseguenze profonde e ambivalenti: rende possibili i compilatori e gli interpreti (programmi che manipolano programmi), il caricamento dinamico e perfino il codice auto-modificante, ma apre anche la porta agli attacchi di iniezione di codice, in cui dati malevoli vengono fatti eseguire come istruzioni. Il confine fra hardware e software è fissato dall'architettura del set di istruzioni (ISA, Instruction Set Architecture): l'insieme delle istruzioni macchina, dei registri e delle modalità di indirizzamento che la CPU espone; è il «contratto» rispetto al quale i compilatori generano codice, ed è il motivo per cui lo stesso sorgente va ricompilato per architetture diverse. Le ISA si dividono storicamente in CISC (poche istruzioni complesse e potenti, come nella famiglia x86) e RISC (molte istruzioni semplici, regolari ed eseguibili idealmente in un ciclo, come ARM), due filosofie con compromessi diversi fra complessità del circuito e prestazioni. Il «collo di bottiglia di von Neumann» — l'unico canale condiviso fra CPU e memoria — resta il limite di fondo che cache, pipeline e, in parte, l'architettura Harvard cercano di attenuare senza rinunciare alla flessibilità del programma memorizzato.
Ripasso attivo
Un calcolatore dispone di un bus indirizzi a 20 linee e di celle di memoria da 1 byte. Determina il numero massimo di celle indirizzabili e la dimensione complessiva della memoria indirizzabile, esprimendola in kibibyte (KiB) e mebibyte (MiB). Descrivi inoltre quale bus interviene quando la CPU «sceglie» la cella da leggere.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Conversione e corrispondenza tra le basi (8 bit)
Valore posizionale (binario)
Il valore decimale di un numero binario è la somma dei pesi 2^i delle posizioni in cui la cifra d_i vale 1.
Intervallo in complemento a due (k bit)
Su k bit la notazione in complemento a due rappresenta gli interi da -2^(k-1) a 2^(k-1)-1; per k = 8 si va da -128 a +127.
Converti 156 in binario su 8 bit e in esadecimale; rappresenta poi -100 in complemento a due su 8 bit.
Divisioni successive per 2 (resti dal basso): 156 = 128+16+8+4, cioè 10011100. Verifica: 128+16+8+4 = 156.
Raggruppo i bit a 4 a 4: 1001 = 9 e 1100 = C, quindi 156 = 9C in base 16.
100 = 64+32+4 = 01100100.
Inverto i bit di 01100100 ottenendo 10011011, poi aggiungo 1: 10011011 + 1 = 10011100. Quindi -100 = 10011100.
Risultato: 156 = (10011100)_2 = (9C)_16; -100 = (10011100)_2 in complemento a due su 8 bit (osserva: la somma 01100100 + 10011100 dà 1 00000000, cioè 0 troncando il riporto).
Errori frequenti
Approfondimento
Vale la pena vedere l'aritmetica binaria all'opera. La somma di due bit segue le regole «0+0=0, 0+1=1, 1+1=10» (0 con riporto 1), e si procede colonna per colonna propagando il riporto, esattamente come in decimale. Il complemento a due rende la sottrazione un'addizione: «A − B» si calcola come «A + (complemento a due di B)», scartando l'eventuale riporto oltre il k-esimo bit. L'overflow (traboccamento) in complemento a due si riconosce con una regola netta: si verifica quando il riporto entrante nel bit di segno è diverso dal riporto uscente da esso, segno che il risultato è uscito dall'intervallo rappresentabile «[−2^(k−1), 2^(k−1)−1]». Per i reali, lo standard IEEE 754 in singola precisione impiega 32 bit così ripartiti: 1 bit di segno, 8 di esponente (memorizzato con polarizzazione, bias 127) e 23 di mantissa; il valore è «(−1)^s · 1,m · 2^(e−127)». Poiché la mantissa è finita, solo le frazioni con denominatore potenza di 2 sono esatte: «0,1» in binario è periodico e va arrotondato, ragione per cui «0,1 + 0,2» non dà esattamente «0,3» — tema centrale del calcolo numerico. Sul piano concettuale un bit misura la scelta fra due alternative equiprobabili, e per distinguere N alternative servono «⌈log₂ N⌉» bit: è la radice del legame profondo fra quantità di informazione e logaritmo in base 2.
Ripasso attivo
Converti il numero decimale 156 in binario su 8 bit e in esadecimale. Rappresenta poi il numero -100 in complemento a due su 8 bit e verifica il risultato sommandolo a +100 (la somma su 8 bit deve dare 0).
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Porte logiche fondamentali e tabelle di verità
Leggi di De Morgan
La negazione di un prodotto logico è la somma delle negazioni; la negazione di una somma logica è il prodotto delle negazioni.
Righe di una tabella di verità
Una funzione con n ingressi binari ha 2^n combinazioni possibili, quindi 2^n righe nella tabella di verità.
Costruisci la tabella di verità di F(A,B) = (A AND B) OR (NOT A) e stabilisci se la funzione si può semplificare.
Gli ingressi sono 2, quindi le righe sono 2^2 = 4.
A=0,B=0: NOT A=1 → F=1. A=0,B=1: NOT A=1 → F=1. A=1,B=0: A·B=0, NOT A=0 → F=0. A=1,B=1: A·B=1 → F=1.
F vale 0 solo quando A=1 e B=0; vale 1 negli altri tre casi.
Per la proprietà di assorbimento (A·B)+(NOT A) = B + (NOT A), perché (NOT A) copre già A=0 e l'unico caso con A=1 che dà 1 è B=1. La tabella di B + (NOT A) coincide con quella trovata.
Risultato: F = (A AND B) OR (NOT A) si semplifica in F = B OR (NOT A); vale 0 solo per A=1, B=0.
Errori frequenti
Approfondimento
Ogni funzione booleana ammette una forma canonica ricavabile direttamente dalla tabella di verità: la somma di prodotti (SoP), che somma un mintermine per ciascuna riga con uscita 1, e il duale prodotto di somme (PoS). Queste forme sono sistematiche ma non minime; per ottenere il circuito con meno porte si applica la minimizzazione, che a mano si esegue con le mappe di Karnaugh — griglie in cui celle adiacenti differiscono per un solo bit (codice Gray), sicché raggruppando le caselle a 1 in blocchi di potenze di 2 si eliminano le variabili che cambiano. Un risultato notevole è la completezza funzionale: la sola porta NAND (o la sola NOR) basta a costruire qualunque funzione logica — NOT, AND e OR si ottengono tutti da NAND — ed è per questo che molti circuiti reali usano porte di un solo tipo. Combinando le porte si costruiscono i mattoni dell'aritmetica: il semisommatore (half adder), formato da uno XOR (che dà la somma) e un AND (che dà il riporto), somma due bit; il sommatore completo (full adder) aggiunge il riporto entrante e, incatenato bit dopo bit, produce il sommatore a n bit che vive dentro la ALU. Così l'algebra astratta di Boole diventa il circuito fisico che esegue la «1+1» del calcolatore, saldando la codifica binaria dell'informazione all'hardware che la elabora.
Ripasso attivo
Data la funzione F(A,B) = (A AND B) OR (NOT A), costruisci la tabella di verità completa (4 righe) e disegna lo schema con le porte AND, OR e NOT. Stabilisci poi se la funzione si può semplificare e giustifica la risposta.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Il ciclo fetch-decode-execute
Durata di un ciclo di clock
La durata di un ciclo è il reciproco della frequenza di clock f; per f = 2 GHz = 2 000 000 000 Hz si ha T = 0.5 ns.
Tempo di esecuzione
Il tempo della CPU è il numero di istruzioni per i cicli medi per istruzione (CPI) per la durata di un ciclo.
Una CPU a 2 GHz esegue 6 milioni di istruzioni con CPI medio 4. Calcola la durata di un ciclo e il tempo di esecuzione in millisecondi.
T_ciclo = 1/f = 1 / (2·10^9 Hz) = 0.5·10^-9 s = 0.5 ns.
Cicli = N_istr · CPI = 6·10^6 · 4 = 24·10^6 = 2.4·10^7 cicli.
T_CPU = cicli · T_ciclo = 2.4·10^7 · 0.5·10^-9 s = 1.2·10^-2 s.
1.2·10^-2 s = 12·10^-3 s = 12 ms.
Risultato: Durata del ciclo = 0.5 ns; tempo di esecuzione = 1.2·10^-2 s = 12 ms.
Errori frequenti
Approfondimento
Il ciclo fetch-decode-execute, se eseguito una istruzione per volta, lascia inattive le unità non coinvolte in ciascuna fase. La pipeline (catena di montaggio) rimedia sovrapponendo le fasi di istruzioni consecutive: mentre una istruzione è in execute, la successiva è in decode e una terza in fetch. Con k stadi, a regime, si completa idealmente un'istruzione per ciclo, con un guadagno fino a k volte; il vantaggio è però eroso dai conflitti (hazard): un salto condizionato rende incerta la prossima istruzione da prelevare, e finché la condizione non è risolta la pipeline potrebbe aver caricato istruzioni sbagliate, da qui la predizione dei salti e l'eventuale svuotamento. La legge fondamentale delle prestazioni resta «tempo = numero di istruzioni × CPI × durata del ciclo»: si può intervenire su uno qualunque dei tre fattori (un compilatore che riduce le istruzioni, un'architettura che abbassa il CPI, una tecnologia che alza la frequenza), ma la legge di Amdahl ricorda che accelerare solo una parte del calcolo produce un guadagno complessivo limitato dalla parte non accelerata. Un meccanismo essenziale che spezza il flusso lineare del ciclo è l'interruzione (interrupt): un dispositivo che richiede attenzione invia un segnale che sospende l'istruzione corrente, ne salva lo stato, esegue una routine di servizio e poi riprende — è il modo in cui la CPU dialoga con l'I/O senza consumarsi in un'attesa attiva (busy waiting), argomento che riprenderemo con i sistemi operativi.
Ripasso attivo
Una CPU ha frequenza di clock di 2 GHz. Un programma esegue 6 milioni di istruzioni con un valore medio di CPI pari a 4. Determina la durata di un ciclo di clock e il tempo di esecuzione del programma, esprimendolo in millisecondi.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
La piramide della gerarchia delle memorie
Tempo medio di accesso (due livelli)
Il tempo medio combina il tempo della cache (peso h, hit rate) e quello della RAM (peso 1-h, miss rate).
Cache con tempo 2 ns, RAM con tempo 80 ns. Calcola il tempo medio di accesso con hit rate 95% e con hit rate 90%.
T_cache = 2 ns, T_RAM = 80 ns. Caso A: h = 0.95; caso B: h = 0.90.
T = 0.95·2 + 0.05·80 = 1.9 + 4.0 = 5.9 ns.
T = 0.90·2 + 0.10·80 = 1.8 + 8.0 = 9.8 ns.
Passando da h = 0.95 a h = 0.90 il tempo medio sale da 5.9 a 9.8 ns (+66%): poche mancanze in più pesano molto, perché ogni miss costa 80 ns. Una buona località dei riferimenti, che alza l'hit rate, è quindi decisiva.
Risultato: Con h = 95% il tempo medio è 5.9 ns; con h = 90% sale a 9.8 ns: l'effetto della località dei riferimenti sulle prestazioni è notevole.
Errori frequenti
Approfondimento
La cache non trasferisce singoli byte ma blocchi (linee) di celle contigue: caricando l'intorno del dato richiesto sfrutta la località spaziale, così che il prossimo accesso a una cella vicina sarà un successo. Come una linea si colloca in cache dipende dalla mappatura: diretta (ogni blocco ha un'unica posizione possibile: veloce ma soggetta a collisioni), completamente associativa (ovunque: flessibile ma costosa) o associativa a insiemi (il compromesso usato in pratica); quando la cache è piena, una politica di rimpiazzo — tipicamente LRU, che scarta il blocco usato meno di recente — decide chi sacrificare. Con più livelli il tempo medio di accesso si calcola in modo ricorsivo: un miss in L1 paga il tempo di L2, un miss in L2 il tempo della RAM, cosicché «T_medio = T_L1 + miss_L1 · (T_L2 + miss_L2 · T_RAM)». La stessa idea di gerarchia si estende oltre la RAM con la memoria virtuale: il sistema operativo assegna a ciascun processo uno spazio di indirizzi ampio e continuo, suddiviso in pagine, mappandole sulla RAM e, quando questa non basta, su disco (paginazione, swap); una tabella delle pagine traduce gli indirizzi virtuali in fisici, con l'aiuto di una cache dedicata alle traduzioni (TLB). Tutto ciò affronta il «memory wall», il divario crescente fra la velocità delle CPU e quella delle memorie, che rende la catena di accesso ai dati — e non il solo valore del clock — il vero fattore delle prestazioni reali di un sistema.
Ripasso attivo
Un sistema ha una cache con tempo di accesso di 2 ns e una RAM con tempo di accesso di 80 ns. Se l'hit rate della cache è del 95%, calcola il tempo medio di accesso alla memoria e confrontalo con il caso in cui l'hit rate scenda al 90%, commentando l'effetto della località dei riferimenti.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Riferimenti e fonti
Ministero dell'Istruzione e del Merito (MIM)