Come funziona un microprocessore: il ciclo Fetch-Decode-Execute
Il battito cardiaco di ogni CPU
Un microprocessore esegue programmi ripetendo un ciclo fondamentale — il Ciclo di istruzione — miliardi di volte al secondo.
Il ciclo a 5 stadi (RISC classico / semplificato)
- Fetch
- PC (Program Counter) contiene l'indirizzo dell'istruzione successiva.
- L'indirizzo viene posto sull'address bus; la memoria restituisce la parola d'istruzione.
- L'istruzione viene caricata in IR (Instruction Register).
- PC incrementato (o aggiornato da branch).
- Decode
- L'unità di controllo interpreta i bit di IR → opcode + operandi.
- Determina: operazione ALU, accessi registro, accesso memoria, branch?
- Genera segnali di controllo per il datapath.
- Execute
- ALU esegue operazioni aritmetiche/logiche (ADD, AND, SHIFT…).
- Calcolo indirizzo per load/store (base + offset).
- Condizione branch valutata.
- Memory Access
- Load: leggi dati da memoria → registro.
- Store: scrivi registro → memoria.
- Branch preso: PC aggiornato al target.
- Writeback
- Risultato ALU o dati caricati scritti nel registro di destinazione.
- Flag (Z, N, C, V) aggiornati.
Migliorie moderne
- Pipelining: Sovrapponi stadi — 5+ istruzioni in volo simultaneamente.
- Superscalar: Multiple unità decode/execute — emetti 2–8 istruzioni/ciclo.
- Out-of-Order: Riordina istruzioni per evitare stalli (data hazard).
- Speculative Execution: Predici branch; rollback se sbagliato.
- Cache (L1/L2/L3): Riduci latenza memoria (tassi hit 95%+).
- Virtual Memory: MMU traduce VA → PA; TLB cache traduzioni.
Interruttori ed eccezioni
Esterni (IRQ), interni (divisione per zero, page fault), software (syscall) — salva PC/FLAGS, salta al gestore, torna via IRET/ERET.
Analogia
Fetch = leggi passo ricetta. Decode = capisci istruzione. Execute = taglia/cuoci. Memory = prendi/conserva ingredienti. Writeback = metti risultato in ciotola. Ripeti.
Da 4,77 MHz 8088 a 5 GHz Core i9 — stesso ciclo, parallelismo esponenzialmente maggiore.