Registre (informatique)

Un article de Wikipédia, l'encyclopédie libre.

Un registre est un emplacement mémoire interne d'un processeur.

Sommaire

[modifier] Détails

Les registres sont des cases mémoire particulières auxquelles les unités de calcul d'un processeur peuvent accéder directement, sans aucun temps d'attente, cette mémoire est impliquée dans la quasi totalité des opérations unitaires, (instructions), qu'il est capable d'accomplir.

Le nombre de ces emplacement mémoire est limité (souvent moins de 50), de plus leur taille est variable et étudiée pour leur fonction. Cette taille est classiquement de 32 bits pour un processeur dit 32 bits.

À la différence des autres types de mémoire, les registres sont situés directement dans le circuit intégré d'un microprocesseur. Certains caches mémoires peuvent être également situés dans le même circuit intégré, mais dans ce cas, cette mémoire n'a pour but que d'accélérer l'accès à la mémoire vive et le processeur ne peut la manipuler explicitement. C'est le cas du cache de niveau 1 appelé parfois Cache L1.

[modifier] Différents types de registres

Beaucoup de ces registres ont des fonctions spécifiques :

CP (Compteur Programme) ou PC (Program Counter) ou IP (Instruction Pointer
Indique l'emplacement de la prochaine instruction à être exécutée.
PP (Pointeur de Pile) ou SP (Stack Pointer
Indique la position du prochain emplacement disponible pour la pile mémoire.
RI (Registre d'Index) ou IR (Index Register
registre utilisé comme index lorsqu'on utilise l'adressage du même nom.
PS (Processor Status
registre d'état du processeur, il sera le plus souvent interprété bit à bit.

Les usages classiques des autres registres ( comme AX, BX, CX, DX et leurs étendus respectif EAX, EBX, etc ) sont:

Registres de données ou Data Register
permet le stockage de données temporaires ou de résultats d'opérations
Registres mémoire ou memory register
permet le stockage et l'utilisation de pointeurs

D'autres sont d'usage général, et dans ce cas ils sont souvent simplement référencés R1, R2... Sur les microprocesseurs qui ne contiennent qu'un seul registre général, on l'appelle accumulateur car il contient (le plus souvent) le résultat d'une instruction arithmétique.

Dans la hiérarchie mémoire d'un ordinateur, les registres sont situés au niveau le plus haut. De ce fait, c'est la mémoire au meilleur temps d'accès, mais dont le coût de fabrication est le plus élevé car la place dans le microprocesseur est limitée.

Il est possible de faire correspondre les registres avec des adresses mémoire, typiquement à partir de 0 (c’est-à-dire que les cases mémoire d'adresse 0 à 31 pourront correspondre aux registres R0 — R31). C'est par exemple le cas des 16 registres du PDP-10. Les programmeurs astucieux désirant optimiser le temps d'exécution d'une boucle de code avaient donc la possibilité de la stocker dans les registres. Cette méthode évidemment marginale et dépendante de l'architecture de l'ordinateur montre la versatilité des registres généraux.

[modifier] Particularités de certains processeurs

Le 8088 comporte quatre registres de segment appelés:

CS (Code Segment
sera utilisé chaque fois qu'il s'agit d'une adresse du « code » (du programme), c’est-à-dire de IP.
DS (Data Segment
sera utilisé chaque fois qu'il s'agit d'une adresse de « données », c'est-à-dire des variable du programme, autrement dit, tous les « registres de données » (AX, BX,CX, DX) et également SI pour les « instructions de string » (voir « ES » ci-dessous).
SS (Stack Segment
utilisé avec les registres SP et BP. La pile sert par exemple à garder en mémoire les contenus des registres CS et IP lors de l'exécution d'instructions call ou des interruptions.
ES 
utilisé essentiellement avec le registre DI pour les « instructions de string » (« string primitive instructions ») qui permettent des transferts d'emplacements en mémoire contigus (« en chaîne »).

[modifier] Autres registres

Certains de ces registres peuvent se trouver dans le microprogramme du processeur. Sur architecture x86, pour le mode protégé:

  • GDTR où est stockée l'adresse de la table globale de descripteurs ( GDT )
  • LDTR où est stockée l'adresse de la table locale de descripteurs ( LDT ) du processus courant (voir (en) Local Descriptor Table)
  • IDTR où est stockée l'adresse et la taille de l'IDT (Interrupt Descriptor Table).
  • TR où est stockée l'adresse du TSS du processus courant.
  • CR0 ( Control Register 0 ou MSWR pour Machine Status Word Register ) où sont stockés des indicateurs pour l'ensemble du système (activation de la segmentation et de la pagination entre autres).
  • CR3 ( Control Register 3 ou PDBR pour Page Directory Base Register ) où est stockée l'adresse du Page Directory courant (pagination).

[modifier] Variantes