Qu’est-ce qu’un registre informatique ?


La réponse la plus courte est qu'il détient une valeur unique à l'intérieur du processeur pour l'arithmétique ou la référence à la mémoire. Le langage machine de base de tous les processeurs peut exécuter des instructions soit sur les registres, soit sur la mémoire. Certains processeurs limitent les instructions sur la mémoire au chargement et au stockage, tout le reste étant effectué sur les registres.

En général, un registre tend à être un ensemble de bits (normalement la taille de sauvegarde comme le mot du CPU) qui se trouve sur les connexions internes à l'UAL (effectue toutes les opérations sur les valeurs) ou l'unité de chargement/stockage (le nom et la fonction varient, mais elle sera responsable de l'interaction des CPU avec la mémoire). Ce placement exige que les registres fonctionnent de l'ordre de la vitesse du CPU. Certains peuvent prendre quelques cycles pour répondre, car le pipeline empêche la surcharge, tandis que d'autres doivent fonctionner en une fraction de cycle pour lire et écrire dans la même opération (l'accumulateur classique).


Les premiers CPU avaient souvent des usages particuliers pour chaque registre. L'accumulateur serait câblé à l'ALU comme une entrée et une sortie. Les compteurs auraient un incrément spécial et seraient câblés dans la logique de comparaison. Les pointeurs mémoire étaient directement reliés à la gestion de la mémoire et disposaient d'une addition simple. Au fur et à mesure que l'immobilier de silicium devenait plus disponible et que les performances devenaient critiques, avoir une banque de registres plus généraux sur un bus qui pouvait faire n'importe quelle connexion est devenu la préférence.


Les registres sont également la clé des performances. Plus vous pouvez effectuer d'opérations sans référence à la mémoire, plus votre code s'exécute rapidement. Les références à la mémoire ont tendance à provoquer des pauses en attendant que la valeur soit renvoyée ou écrite. Dans les années 90, il y a eu un grand débat sur l'utilisation du silicium pour le cache ou les registres. Dans des exemples simples, l'ajout de registres était plus rapide que l'ajout de 5 à 10 fois plus de cache. Lorsque les banques de registres ont connu un grand succès, le prix d'un changement de contexte était énorme et les compilateurs n'étaient pas bien optimisés pour cela. SPARC avait même un anneau de registres pour essayer de contourner ce problème avec des résultats mitigés.

Les registres sont devenus complexes et puissants, mais ils sont toujours le même support de base à valeur unique qu'ils ont toujours été. Regardez en arrière dans certains des anciens livres de programmation et les explications sont très claires. Je vous recommande "Programming the 6502" de Rodnay Zaks. Il est facile à suivre et bien écrit malgré qu'il soit pour une architecture morte.

main-qimg-7f819dcfc1be8b5d993bd9f9935b5d4b.webp