Le processeur (CPU, Central Processing Unit) est le moteur qui anime l'ordinateur. Comprendre son fonctionnement éclaire à la fois la programmation et l'architecture matérielle. Voici une vue d'ensemble du chemin parcouru par un programme avant qu'il ne produise un résultat à l'écran.
Les éléments-clés du CPU
Un CPU rassemble plusieurs unités spécialisées qui collaborent :
- Unité de contrôle (CU) — le « chef d'orchestre » : elle séquence le chargement, le décodage et l'exécution des instructions.
- Unité arithmétique et logique (ALU) — réalise les additions, les soustractions, les comparaisons et les opérations logiques (ET, OU, NON).
- Registres — petites mémoires ultra-rapides intégrées au processeur. Le compteur ordinal pointe vers la prochaine instruction, le registre d'instruction contient l'instruction en cours.
- Mémoire — RAM, ROM et caches. Le cache fait le pont entre la rapidité du CPU et la lenteur relative de la RAM.
- Logique combinatoire — réseau de portes qui transforme les signaux d'entrée en signaux de sortie pour piloter les autres composants.
Schéma d'architecture CPU : CU, ALU, registres (PC, IR), mémoire cache, RAM, bus de communication
Le cycle fondamental : Fetch — Decode — Execute
Le CPU répète sans relâche un cycle en trois (parfois quatre) temps.
| Phase | Action |
|---|---|
| Fetch | Récupérer l'instruction pointée par le compteur ordinal. |
| Decode | Interpréter l'instruction (opcode + opérandes). |
| Execute | Réaliser l'opération via l'ALU ou un transfert mémoire. |
| Write back | Stocker le résultat dans un registre ou en mémoire. |
À chaque tour, le compteur ordinal avance — sauf en cas de saut, d'appel de fonction ou de retour.
Exemple : un simple programme C
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
Entre la frappe au clavier et l'affichage à l'écran, ce code traverse plusieurs étapes invisibles :
- Prétraitement — résolution des
#include, expansion des macros. - Compilation — traduction du C vers l'assembleur.
- Assemblage — conversion de l'assembleur en code machine binaire.
- Édition de liens — assemblage des morceaux et création de
l'exécutable (par exemple
hello.exeou./hello). - Chargement — l'exécutable est copié en RAM.
- Exécution — le CPU démarre le cycle Fetch–Decode–Execute sur les instructions chargées.
Pipeline de compilation : .c → préprocesseur → compilateur → assembleur → linker → exécutable, puis loader vers la RAM
Quelques notions pour aller plus loin
- Segments mémoire : un programme en exécution occupe plusieurs zones — le segment texte (le code), les données (variables globales), la pile (variables locales et appels de fonctions), le tas (allocation dynamique).
- Pipeline : les CPU modernes traitent plusieurs instructions en parallèle, comme une chaîne de montage.
- Cache : sans cache L1/L2/L3, votre processeur passerait l'essentiel de son temps à attendre la RAM.
Vous retrouverez ces notions de manière plus approfondie dans le chapitre Architectures matérielles et systèmes d'exploitation en NSI Première et Terminale.