Microprogrammation

Page d’aide sur l’homonymie

Pour les articles homonymes, voir microcode.

La microprogrammation est une technique de réalisation du séquenceur d'un processeur, utilisé dans la technologie CISC, dans laquelle le comportement du séquenceur est décrit par le contenu d'une mémoire. Ce contenu est appelé microprogramme ou microcode. Il peut être vu comme un programme destiné à une machine très simple appelée micro-séquenceur ; le processeur final est alors considéré comme une machine virtuelle simulée par le micro-séquenceur. Par opposition la technologie RISC ne contient pas de microcode.

La réalisation microprogrammée des séquenceurs s'oppose à leur réalisation câblée. A priori plus onéreuse au départ, sa souplesse facilite l'évolution des modèles.

Principe

Le séquenceur d'un processeur est un automate fini qui contrôle le fonctionnement du chemin de données : notamment l'unité arithmétique et logique (UAL), les registres, etc.

Une approche consiste à réaliser cet automate à l'aide d'un circuit logique combinatoire, qui prend en entrée l'état du chemin de données ainsi que des signaux d'horloge, et fournit en sortie les signaux de commande à destination du chemin de données. Ce circuit logique est réalisé à l'aide d'un ensemble de portes logiques. Cette technique est dite du séquenceur câblé.

On peut cependant remarquer qu'un circuit logique combinatoire peut être réalisé à l'aide d'une mémoire utilisée en lecture (typiquement une mémoire morte), à laquelle les signaux d'entrée sont fournis en tant qu'adresses, et dont les mots fournis en sortie sont interprétés comme des signaux de sortie. Il est donc possible de remplacer le circuit combinatoire ci-dessus par une mémoire : c'est l'idée qui se trouve à la base de la microprogrammation. Les cases successives de la mémoire sont vues comme des instructions élémentaires ou micro-instructions ; leur ensemble constitue le microprogramme ou microcode.

Il est possible de complexifier ce schéma simpliste en ajoutant la possibilité d'effectuer des sauts entre micro-instructions. De plus, on introduit en général un registre contenant l'adresse de la prochaine micro-instruction à traiter : le micro-compteur ordinal. Il existe donc une logique simple — et câblée — chargée de dérouler le microprogramme : on l'appelle le micro-séquenceur.

Le code machine — les instructions, que l'on peut qualifier de macro-instructions pour bien les distinguer des micro-instructions — sont donc interprétées par le micro-séquenceur qui exécute le microcode. Plusieurs micro-instructions sont exécutées pour réaliser une (macro)-instruction.

Il y a deux techniques d'implémentation du microcode :

  1. Le microcode horizontal, qui utilise un nombre très grand de bits pour contrôler tous les éléments du processeur. Sur l'IBM 360 modèle 30 par exemple, une micro-instruction fait 60 bits.
  2. Le microcode vertical, qui occupe beaucoup moins de bits car il contient une partie spécifiant l'unité à contrôler, et une autre qui sera la commande envoyée à cette unité.

Les architectures basées sur des microprocesseurs en tranches sont microcodées.

Avantages et inconvénients des machines microcodées

  • Les avantages sont (entre autres) :
    • évolutivité du jeu d'instructions
    • simplicité du design
    • correction possible des erreurs de conception matérielle par modification du microcode
  • Les inconvénients sont (entre autres) :
    • possibilités de bugs dans le microcode
    • lenteur de la machine (plusieurs cycles d'horloge pour exécuter une instruction en code machine (ou son équivalent en assembleur)).

Exemple d'ordinateurs microcodés

Voir aussi

Référence

  • G. Boulaye, 1971, La Microprogrammation, Dunod. (ISBN 2040025960), (ISBN 978-2040025960)
  • Ken Shirriff, « How the 8086 processor's microcode engine works »,

Liens externes

  • A Brief History of Microprogramming (en anglais).
  • Wang 2200 Microarchitecture Description (en anglais).
v · m
Technologies de processeur
Modèles
Architecture
Général
Mots
Instruction
Jeu
Famille
Exécution
Performance
Types
Général
Par usage
On chip
Accélération
matérielle
Microarchitecture
Parallélisme
Général
Processus
Taxonomie de Flynn
Circuiterie et unité
Général
Exécution
Porte logique
Registre
Contrôle
Chemin de données
Cadencement
Gestion de l'alimentation
Fabrication
Articles liés
v · m
Exécution informatique
Concepts généraux
Types de code
Compilation
anticipée
à la volée
Machines virtuelles
  • icône décorative Portail de la programmation informatique