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     │ │
              │  └─────────────────────────┘ │
              └─────────────────────────────┘

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 :

InstructionEffet
LDI vACC ← la valeur v
LDA aACC ← contenu de l'adresse mémoire a
STA amémoire[a] ← ACC
ADD aACC ← ACC + mémoire[a]
SUB aACC ← ACC − mémoire[a]
JMP asauter à l'instruction d'adresse a
JNZ asauter à a si ACC ≠ 0 (c'est ça, une boucle !)
HLTstop
OUTafficher 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 🎮

Ton CPU en fonctionnement

prêt — clique « step » pour exécuter une instruction

Mémoire (programme + données)

Registres

Sortie du programme

La ligne bleue = instruction pointée par le PC. Les lignes jaunes = données touchées. Commence par « 3 + 4 », puis essaie la boucle !

🤯 Prends une seconde pour réaliser : ce simulateur reproduit ce que fait ton vrai processeur — sauf que le tien le fait des milliards de fois par seconde, avec des registres de 64 bits, et des centaines d'instructions. Mais le cycle fetch → decode → execute est identique.

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

Quiz du module

1. Le PC (program counter) sert à :

2. Le cycle fondamental d'un CPU est :

3. Comment fait-on une boucle avec ce jeu d'instructions ?

4. Dans l'architecture von Neumann, programme et données sont :

Réponds juste aux 4 questions du quiz pour débloquer.

← Module 3 Module 5 : l'accélérateur IA 🎯 →