Mémoire et processeur

Le processeur et le cycle fetch-decode-execute

Le chef d'orchestre

Le processeur (CPU) est le circuit qui exécute un programme, c'est-à-dire une suite d'instructions rangées en mémoire. Il contient une unité de calcul (l'ALU, qui additionne, compare, applique les portes logiques), quelques registres rapides pour ses valeurs de travail, et une unité de commande qui orchestre le tout. Un registre spécial, le compteur de programme (PC), retient l'adresse de la prochaine instruction à exécuter.

Le chemin de données

Schema simplifie d'un processeur :

   +-----------+       bus        +-----------+
   |  MEMOIRE  |<--------------- >|   CPU     |
   | (instr. + |                  |           |
   |  donnees) |    +-------------+-----------+
   +-----------+    | PC (adresse prochaine instr.)
                    | Registres  (valeurs de travail)
                    | ALU        (calcul : + - ET OU comparaison)
                    | Unite de commande (decode et pilote)
                    +-------------------------

(le bus transporte adresses et donnees entre la memoire et le CPU)

Le cycle en trois temps

Le processeur répète sans cesse le même cycle, appelé fetch-decode-execute :

1. FETCH   (charger)  : lire en memoire l'instruction a l'adresse du PC,
                        puis avancer le PC vers l'instruction suivante.
2. DECODE  (decoder)  : l'unite de commande interprete les bits de l'instruction
                        (quelle operation ? sur quels registres ?).
3. EXECUTE (executer) : l'ALU (ou la memoire) realise l'operation demandee,
                        le resultat est range dans un registre.

   -> puis on recommence au FETCH suivant, des milliards de fois par seconde

Tout se ramène aux briques du début

Ce qui est fascinant, c'est que l'ALU n'est rien d'autre qu'un grand assemblage des portes et additionneurs du premier chapitre, et que les registres ne sont que des rangées de bascules. Un processeur entier n'est, au fond, qu'un empilement gigantesque de portes ET, OU, NON et de bascules, cadencé par une horloge.

Piège classique

En mémoire, une instruction et une donnée sont toutes deux de simples suites de bits : rien ne les distingue physiquement. C'est le rôle du PC et du cycle fetch-decode-execute de savoir qu'à un instant donné, on lit une instruction. Confondre les deux, ou perdre le fil du PC, est exactement ce qui fait planter un programme mal écrit.