Module 4 — Le mini-CPU : tout s'assemble
ALU + registres + compteur + mémoire = un processeur qui exécute de vrais programmes.
4.1 — L'architecture
Tu as toutes les briques. Voici comment elles s'assemblent (architecture de von Neumann, comme dans ton PC) :
┌─────────────────────────────┐
│ CPU │
┌────────┐ │ ┌────┐ ┌─────┐ ┌──────┐ │
│MÉMOIRE │←→│ │ PC │ │ ACC │ │ ALU │ │
│ (prog +│ │ └────┘ └─────┘ └──────┘ │
│ data) │ │ compteur registre Module 1 │
└────────┘ │ Module 3 Module 3 │
│ ┌─────────────────────────┐ │
│ │ unité de contrôle │ │
│ └─────────────────────────┘ │
└─────────────────────────────┘
- PC (program counter) : le compteur du Module 3 — il pointe l'instruction courante en mémoire
- ACC (accumulateur) : un registre — le « brouillon » où se font tous les calculs
- ALU : ton additionneur du Module 1 (étendu avec la soustraction)
- Unité de contrôle : décode l'instruction et pilote tout le monde
- Mémoire : contient le programme ET les données (c'est ça, von Neumann)
4.2 — Le jeu d'instructions
Notre CPU comprend 8 instructions. C'est peu ? Les premiers processeurs commerciaux n'en avaient guère plus — et c'est suffisant pour calculer n'importe quoi :
| Instruction | Effet |
|---|---|
LDI v | ACC ← la valeur v |
LDA a | ACC ← contenu de l'adresse mémoire a |
STA a | mémoire[a] ← ACC |
ADD a | ACC ← ACC + mémoire[a] |
SUB a | ACC ← ACC − mémoire[a] |
JMP a | sauter à l'instruction d'adresse a |
JNZ a | sauter à a si ACC ≠ 0 (c'est ça, une boucle !) |
HLT | stop |
OUT | afficher ACC (bonus pédagogique de notre simulateur) |
Chaque instruction est codée en binaire (l'opcode) — c'est le « langage machine » que le décodeur transforme en signaux de contrôle.
4.3 — Le simulateur 🎮
4.4 — Et en Verilog ?
Le cœur d'un CPU en Verilog, c'est une grosse structure case dans un bloc d'horloge — le décodeur d'instructions :
always @(posedge clk) begin
case (opcode) // décodage
LDI: acc <= operande;
ADD: acc <= acc + mem[operande];
JNZ: if (acc != 0) pc <= operande;
else pc <= pc + 1;
// ...
endcase
end
Quand on installera Icarus Verilog sur le serveur, écrire ce CPU complet (~100 lignes) sera ton projet de fin de module.
4.5 — Vérifie tes connaissances
Réponds juste aux 4 questions du quiz pour débloquer.