Microprogrammation

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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[modifier | modifier le code]

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[modifier | modifier le code]

  • Les avantages sont (entre autres) :
    • évolutivité du jeu d'instructions
    • simplicité du design
    • correction possible des erreurs de conception matériel par modification du microcode
  • Les inconvénients sont (entre autres) :

Exemple d'ordinateurs microcodés[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Référence[modifier | modifier le code]

Liens externes[modifier | modifier le code]