1. Du programme à l’instruction

Nous avons vu qu’un programme est constitué d’instructions stockées dans la mémoire centrale.

Nous avons également vu que le processeur est capable de manipuler des groupes de bits appelés mots.

Mais stocker des instructions en mémoire ne suffit pas pour qu’un programme s’exécute.

Le processeur doit retrouver les instructions, comprendre l’opération demandée puis la réaliser.

Question. Comment le processeur sait-il quelle instruction exécuter et comment réalise-t-il le travail demandé ?

2. De petites mémoires dans le processeur

Pour exécuter les instructions, le processeur doit conserver temporairement certaines informations dont il a besoin immédiatement.

Il dispose pour cela de petites mémoires très rapides appelées registres.

Certains registres jouent un rôle particulier dans l’exécution des instructions.

Le compteur de programme

Pour aller chercher une instruction en mémoire, le processeur doit connaître son adresse.

Le compteur de programme, souvent noté PC pour Program Counter, contient l’adresse de la prochaine instruction à exécuter.

Le registre d’instruction

Une fois récupérée en mémoire, l’instruction en cours de traitement est placée dans le registre d’instruction.

À retenir. Le compteur de programme indique où chercher la prochaine instruction, tandis que le registre d’instruction contient l’instruction en cours de traitement.

3. L’unité de commande et l’UAL

Une fois l’instruction récupérée, le processeur doit déterminer ce qu’elle lui demande de faire, puis réaliser l’opération.

Deux parties du processeur jouent alors un rôle essentiel.

L’unité de commande

L’unité de commande organise et coordonne l’exécution des instructions.

Elle interprète l’instruction en cours et détermine les opérations nécessaires à son exécution.

L’unité arithmétique et logique

L’UAL, ou unité arithmétique et logique, réalise notamment les opérations arithmétiques et logiques demandées par les instructions :

  • addition ;
  • soustraction ;
  • comparaison ;
  • opérations logiques.

4. Chercher, décoder, exécuter

Pour traiter une instruction, le processeur réalise successivement plusieurs opérations.

Étape 1 : chercher l’instruction

Le processeur consulte le compteur de programme.

L’adresse qu’il contient permet de retrouver la prochaine instruction dans la mémoire centrale.

Cette instruction est alors transférée vers le registre d’instruction.

Étape 2 : décoder l’instruction

L’unité de commande analyse l’instruction placée dans le registre d’instruction.

Elle détermine quelle opération doit être réalisée et quelles informations sont nécessaires.

Étape 3 : exécuter l’instruction

Le processeur réalise l’opération demandée.

Il peut s’agir d’un calcul, d’une comparaison, d’un déplacement de données ou d’une autre opération élémentaire.

Préparer l’instruction suivante

Le compteur de programme est mis à jour afin d’indiquer l’adresse de la prochaine instruction à exécuter.

Le processeur peut alors recommencer le même processus.

Le cycle d’instruction :

chercher → décoder → exécuter

Ce cycle est répété au cours de l’exécution du programme.
Attention. L’instruction suivante n’est pas toujours celle qui se trouve juste après dans la mémoire. Certaines instructions, comme les branchements, peuvent modifier la valeur du compteur de programme et donc changer la prochaine instruction exécutée.

5. Un fonctionnement rythmé par une horloge

Les différentes opérations réalisées par le processeur doivent être coordonnées.

Cette coordination repose notamment sur une horloge qui produit un signal régulier.

La fréquence de cette horloge indique le nombre de cycles d’horloge réalisés par seconde. Elle s’exprime en hertz.

Attention. Un cycle d’horloge ne correspond pas nécessairement à l’exécution complète d’une instruction. Une instruction peut nécessiter plusieurs opérations internes.

6. Un langage compris par le processeur

Le processeur ne comprend pas directement un programme écrit en Python ou dans un autre langage de haut niveau.

Il exécute des instructions appartenant à son langage machine.

Une instruction machine est représentée sous forme binaire et indique au processeur une opération élémentaire à réaliser.

L’ensemble des instructions qu’un processeur est capable d’exécuter dépend de son architecture.

Idée essentielle. Pour être exécuté, un programme doit finalement être traduit en instructions que le processeur est capable d’exécuter directement.

Et le langage assembleur ?

Lire et écrire directement de longues suites de bits serait particulièrement difficile pour un humain.

Le langage assembleur permet de représenter les instructions machine à l’aide de noms plus faciles à lire, appelés mnémoniques.

Une instruction d’addition pourra par exemple être représentée par un mot comme ADD, plutôt que directement par son codage binaire.

À retenir. Le langage assembleur fournit une représentation plus lisible pour l’être humain des instructions proches du langage machine.

7. Suivre une instruction simple

Imaginons qu’une instruction demande d’additionner deux valeurs.

  1. le compteur de programme contient l’adresse de l’instruction à exécuter ;
  2. l’instruction est récupérée dans la mémoire ;
  3. elle est placée dans le registre d’instruction ;
  4. l’unité de commande décode l’instruction et identifie l’opération demandée ;
  5. les informations nécessaires à l’opération sont mises à disposition du processeur ;
  6. l’UAL réalise l’addition ;
  7. le résultat est conservé à l’endroit prévu par l’instruction ;
  8. le compteur de programme permet de déterminer la prochaine instruction à exécuter.
On retrouve donc :

chercher → décoder → exécuter

8. Synthèse

  • les instructions sont stockées dans la mémoire centrale ;
  • le compteur de programme contient l’adresse de la prochaine instruction à exécuter ;
  • le registre d’instruction contient l’instruction en cours de traitement ;
  • l’unité de commande décode l’instruction et organise son exécution ;
  • l’UAL réalise notamment les opérations arithmétiques et logiques ;
  • le compteur de programme est mis à jour pour déterminer la prochaine instruction ;
  • le processeur répète le cycle chercher → décoder → exécuter ;
  • les instructions directement exécutables par le processeur appartiennent au langage machine.

9. Et les ordinateurs modernes ?

Le cycle que nous venons d’étudier constitue un modèle simple permettant de comprendre le principe général de l’exécution d’un programme.

Mais exécuter les instructions strictement les unes après les autres peut limiter les performances.

Les ordinateurs actuels utilisent donc différentes techniques pour accélérer les traitements et réaliser davantage d’opérations dans un même temps.

Prochaine question. Comment peut-on rendre un ordinateur plus performant sans simplement augmenter la fréquence du processeur ?

Leçon suivante : des ordinateurs plus performants