Che cosa fa una CPU
Un processore a 3 GHz batte 3 miliardi di colpi al secondo, uno ogni terzo di nanosecondo.
Immagina una lezione di informatica. (È una scena inventata.) Alla lavagna sono disegnate sedici caselle numerate, ognuna con otto bit scritti dentro. Tre studenti fanno la CPU. Uno tiene un cartoncino con scritto PC, uno un cartoncino con scritto IR, uno un cartoncino con scritto ACC. Il cartoncino PC dice 0. Lo studente IR va alla casella 0 e copia quello che c'è, 0001 1110, e lo studente PC cambia il cartoncino in 1. La classe cerca i primi quattro bit in una tabella appesa al muro: 0001 significa LOAD. Gli ultimi quattro, 1110, sono 14. Allora la studentessa ACC va alla casella 14 e copia il 7 che trova lì. Poi tutto ricomincia dalla casella 1.
La casella 1 dice ADD 15, quindi ACC diventa 7 + 5 = 12. La casella 2 dice STORE 13, e la studentessa ACC scrive 12 nella casella 13. La casella 3 dice HALT, e tutti si siedono. Dodici mosse in tutto. Nessuno dei tre aveva bisogno di sapere che il programma «somma 7 e 5». Ognuno ha seguito una piccola regola. Le caselle sono la memoria, i cartoncini sono i registri e la tabella sul muro è il decodificatore. Una CPU vera funziona allo stesso modo, miliardi di volte al secondo, e anche lì dentro nessuno capisce il programma.
Lo stesso breve ciclo, miliardi di volte al secondo
Le porte sanno sommare, confrontare e scegliere, ma qualcosa deve dire loro che cosa fare, in che ordine e con quali numeri. È il compito dell'unità centrale di elaborazione, la CPU. Ripete un unico breve ciclo. Il contatore di programma (PC) contiene l'indirizzo della prossima istruzione. Prelievo: la CPU legge la cella indicata dal PC nel registro istruzione (IR) e fa avanzare il PC di uno. Decodifica: i circuiti di controllo esaminano i bit del codice operativo e predispongono i percorsi giusti, per esempio collegando il sommatore per ADD. Esecuzione: il lavoro viene svolto. Un numero viene caricato, sommato o memorizzato, oppure il PC viene cambiato e il programma salta altrove. Poi il ciclo ricomincia. Un'istruzione, JZ, salta solo quando l'accumulatore è zero, ed è proprio questo tipo di salto a permettere a un programma di decidere e di ripetere.
Trascina per ruotare. Scorri o avvicina le dita per lo zoom.
La scena esegue lo stesso programma messo in scena dalla classe. Premi Passo e PC, IR e ACC cambiano esattamente come i cartoncini: LOAD 14, poi ADD 15, STORE 13 e HALT, quattro istruzioni di tre fasi ciascuna, dodici fasi in tutto. Il programma della moltiplicazione usa le stesse poche istruzioni, ma i suoi JZ e JUMP rimandano il PC a 0 due volte prima che il contatore nella cella 15 arrivi a zero, quindi esegue 24 istruzioni in 72 fasi. Sei volte le istruzioni dell'addizione.
Il programma sta nella stessa memoria dei numeri
Alla lavagna, le istruzioni e i numeri 7 e 5 stavano nella stessa fila di caselle. Non è un caso. Nel giugno 1945 John von Neumann scrisse il «First Draft of a Report on the EDVAC», in cui descriveva un computer che tiene le istruzioni nella stessa memoria dei dati, e quasi tutti i computer da allora funzionano così. Un'istruzione è solo un numero i cui bit sono divisi in campi. In questo computer giocattolo ogni cella contiene 8 bit. I primi quattro dicono che cosa fare, il codice operativo, e gli ultimi quattro dicono quale cella usare, l'indirizzo. 0001 è LOAD, quindi 0001 1110 significa «LOAD 14»: copia il numero della cella 14 nell'accumulatore, il registro di lavoro della CPU.
Quanto va veloce il ciclo
I passi vanno a tempo con un segnale di clock, una tensione che si accende e si spegne a ritmo costante. Un clock a 3 GHz batte 3 000 000 000 colpi al secondo, quindi un colpo dura 1 ÷ 3 000 000 000 secondi, circa 0.333 nanosecondi. In quel tempo la luce percorre solo circa 10 centimetri. A una fase per colpo, sono abbastanza colpi per eseguire il programma 7 + 5 del giocattolo 250 milioni di volte al secondo. I processori reali non completano un'istruzione intera per colpo nel modo semplice del nostro giocattolo. Sovrappongono le fasi di più istruzioni come in una catena di montaggio, cosa che si chiama pipelining, e i chip di oggi contengono diversi processori completi affiancati, chiamati core. Il giocattolo non ha niente di tutto questo, ed è proprio per questo che puoi seguirlo a mano.
| Codice operativo | Nome | Che cosa fa |
|---|---|---|
| 0000 | HALT | Ferma |
| 0001 | LOAD a | ACC = cella a |
| 0010 | ADD a | ACC = ACC + cella a |
| 0011 | SUB a | ACC = ACC − cella a |
| 0100 | STORE a | cella a = ACC |
| 0101 | JUMP a | PC = a |
| 0110 | JZ a | se ACC = 0, PC = a |
- «Il PC conta quante istruzioni sono state eseguite.» Il PC contiene l'indirizzo della prossima istruzione. Nel programma 4 × 3 viene rimandato a 0 due volte, mentre il numero di istruzioni completate continua a salire fino a 24.
- «La CPU legge un programma come lo leggiamo noi.» Legge 8 bit, li divide in codice operativo e indirizzo, e segue i collegamenti fissi per quel codice operativo. Come gli studenti con i cartoncini, non sa mai che il programma somma 7 e 5.
- «Più GHz significa sempre un computer più veloce.» Il clock stabilisce quanto spesso può avvenire un passo, non quanto lavoro si fa in ogni colpo. I chip reali sovrappongono le fasi delle istruzioni e hanno più core, quindi due chip con gli stessi GHz possono svolgere quantità di lavoro molto diverse.
- Metti in ordine le fasi del ciclo dell'istruzione.
- La CPU preleva l'istruzione all'indirizzo 3. Quanto vale il PC subito dopo il prelievo?
- Nel computer giocattolo, che cosa significa 0010 1111?
- ADD 15
- LOAD 15
- STORE 2
- ADD 7
- Scrivi LOAD 14 in 8 bit.
- Un clock va a 3 GHz. Quanto dura un colpo, in nanosecondi? (tre cifre decimali)
- Quante istruzioni esegue il programma 7 + 5, HALT compresa?
- Ogni istruzione richiede tre fasi. Quante fasi richiede il programma 7 + 5?
- Che cosa fa STORE 13?
- Copia l'accumulatore nella cella 13
- Copia la cella 13 nell'accumulatore
- Salta all'indirizzo 13
- Somma 13 all'accumulatore
- Quale istruzione permette a un programma di ripetere un ciclo finché un conteggio arriva a zero?
- JZ (salta se zero)
- STORE
- HALT
- LOAD
- In che anno von Neumann scrisse il First Draft of a Report on the EDVAC?
- I programmi sono memorizzati come numeri nella stessa memoria dei dati (von Neumann, 1945).
- La CPU ripete prelievo, decodifica, esecuzione; il PC indica la prossima istruzione.
- I bit di un'istruzione si dividono in codice operativo e indirizzo.
- Il clock dà il ritmo: 3 GHz è un colpo ogni 0.333 ns.
Fonti di questo corso (9)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
- Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
- IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
- IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
- Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
- Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
- Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
- abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
- John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).
Consultato il: 2026-10-17