Registre d'instruction (IR)
Vue d'ensemble
- Objectif : le registre d'instruction (IR) est un registre spécialisé au sein d'un CPU qui contient temporairement l'instruction en code machine lue depuis la mémoire pendant qu'elle est décodée et exécutée par l'unité de commande.
- Symbole : le registre d'instruction est représenté par un bloc rectangulaire avec des entrées pour les données provenant de la mémoire, l'horloge et l'autorisation de chargement, avec des sorties fournissant les bits d'instruction au décodeur.
- Rôle dans DigiSim.io : sert de composant critique dans les conceptions de CPU, reliant les étapes de lecture et de décodage du cycle d'instruction et fournissant un accès stable au code opération et aux opérandes de l'instruction.

Description fonctionnelle
Comportement logique
Le registre d'instruction capture et conserve les données d'instruction provenant de la mémoire pendant le cycle de lecture, en les rendant disponibles au décodeur d'instructions tout au long des cycles de décodage et d'exécution. Il fonctionne principalement comme un élément de stockage avec contrôle de chargement.
Table de fonctionnement :
| LD | CLK | A_OE | Action | Opcode (OP0-OP3) | Adresse (A0-A3) |
|---|---|---|---|---|---|
| 1 | ↑ | X | Charger nouvelle instruction | Données chargées[3:0] | Données chargées[7:4] ou Hi-Z |
| 0 | ↑ | X | Maintien valeur actuelle | Valeur actuelle | Valeur actuelle ou Hi-Z |
| X | 0 | X | Pas de changement | Valeur actuelle | Valeur actuelle ou Hi-Z |
| X | X | 1 | Autorisation sortie d'adresse | Valeur actuelle | Valeur actuelle |
| X | X | 0 | Adresse Hi-Z | Valeur actuelle | Hi-Z |
Note : ↑ représente un front montant d'horloge, X représente une condition « peu importe »
Entrées et sorties
Entrées :
- I0-I7 : entrées de données 8 bits connectées au bus de données mémoire pour recevoir les instructions lues.
- LD : entrée d'autorisation de chargement 1 bit qui autorise le chargement d'une nouvelle instruction lorsqu'elle est active.
- CLK : entrée d'horloge 1 bit qui synchronise l'opération de chargement.
- A_OE : autorisation de sortie d'adresse 1 bit qui contrôle si les bits d'adresse sont pilotés sur les sorties.
Sorties :
- OP0-OP3 : sorties de code opération 4 bits fournissant le code opération à l'unité de commande (toujours actives).
- A0-A3 : sorties d'adresse 4 bits fournissant les informations d'adressage (contrôlées par A_OE).
- Les sorties d'opcode sont toujours disponibles une fois chargées, car l'unité de commande a besoin d'un accès immédiat.
- Les sorties d'adresse peuvent être en trois états via A_OE pour le partage de bus pendant les opérations mémoire.
Paramètres configurables
- Largeur du registre : le nombre de bits que l'IR peut stocker, correspondant à la taille du mot d'instruction du CPU.
- Sensibilité au front d'horloge : si le registre réagit aux fronts montants ou descendants de l'horloge.
- Comportement du chargement : la manière dont le signal de contrôle de chargement interagit avec l'horloge.
- Délai de propagation : le temps nécessaire pour que les sorties changent après un événement déclencheur.
Représentation visuelle dans DigiSim.io
Le registre d'instruction est affiché sous la forme d'un bloc rectangulaire avec des entrées étiquetées sur le côté gauche (DATA[n:0], CLK, LOAD) et des sorties (IR_OUT[n:0]) sur le côté droit. L'entrée d'horloge est typiquement marquée d'un symbole triangulaire indiquant la sensibilité au front. Lorsqu'il est connecté dans un circuit, le composant indique visuellement son état actuel via la valeur d'instruction affichée sur ses sorties et les changements de couleur sur les fils de connexion.
Valeur pédagogique
Concepts clés
- Cycle d'instruction : démontre une étape clé du cycle lecture-décodage-exécution d'un CPU.
- Décodage d'instruction : illustre comment les instructions en code machine sont préparées pour interprétation.
- Architecture de CPU : introduit un composant fondamental des unités de commande de CPU.
- Traitement séquentiel : montre comment les données circulent à travers un CPU en étapes discrètes.
- Architecture du jeu d'instructions : aide à visualiser comment les instructions en code machine sont gérées.
Objectifs d'apprentissage
- Comprendre le rôle du registre d'instruction dans le cycle d'exécution du CPU.
- Apprendre comment les instructions sont capturées et maintenues stables pendant le fonctionnement du CPU.
- Reconnaître comment l'IR s'interface avec la mémoire et le décodeur d'instructions.
- Appliquer les concepts d'IR dans la conception d'architectures de CPU simples.
- Comprendre la relation entre les formats d'instruction et l'organisation du CPU.
Exemples d'utilisation / scénarios
- Conception de CPU de base : composant central dans une implémentation du cycle lecture-décodage-exécution.
- Décodage d'instruction : fournit des données d'instruction stables au circuit décodeur.
- Architecture pipelinée : sépare les étapes de lecture et de décodage dans un pipeline de CPU.
- Implémentation de microcode : conserve les instructions pendant que l'unité de commande parcourt les micro-opérations.
- Modèles de CPU pédagogiques : démontre les principes fondamentaux du fonctionnement du CPU.
- Unités de commande câblées : fournit les bits d'instruction directement à la logique de contrôle combinatoire.
Notes techniques
- La largeur du registre d'instruction correspond à la taille d'instruction de l'architecture du processeur.
- L'IR est typiquement chargé pendant la phase de lecture du cycle d'instruction.
- Dans un CPU simple non pipeliné, l'IR conserve chaque instruction pendant toute sa durée d'exécution.
- Dans les architectures pipelinées, plusieurs IR peuvent exister à différentes étapes du pipeline.
- Les sorties de l'IR sont souvent divisées en champs qui ont des significations spécifiques selon le format d'instruction.
- Certains jeux d'instructions complexes nécessitent une logique supplémentaire pour gérer les instructions de longueur variable.
- L'IR isole l'unité de commande du bus de données, permettant à la mémoire d'être utilisée pour d'autres opérations pendant que l'instruction actuelle est en cours d'exécution.
graph LR
DATA[Data Bus<br/>from Memory] --> IR[Instruction Register]
CLK[Clock] --> IR
LOAD[Load Enable] --> IR
IR --> OUT[Output to Decoder<br/>Opcode & Operands]
Note : la taille de l'IR correspond à la taille d'instruction de l'architecture. Les sorties sont acheminées vers la logique du décodeur d'instructions.
Table de vérité / table de fonctionnement
L'IR fonctionne principalement comme un élément de stockage :
| LOAD | CLK | Action prise sur le front d'horloge | Sortie IR (état suivant) |
|---|---|---|---|
| 1 | ↑ | Charger les données d'entrée | Données d'entrée |
| 0 | ↑ | Maintenir la valeur actuelle | Sortie IR (actuelle) |
| X | 0/↓ | Pas de changement | Sortie IR (actuelle) |
La sortie est typiquement stable entre les opérations de chargement et continuellement disponible au décodeur d'instructions.
Caractéristiques
Configuration des entrées :
- Entrées de données (I0-I7) : entrées parallèles 8 bits connectées au bus de données mémoire pour recevoir les instructions lues.
- Autorisation de chargement (LD) : signal de contrôle activé pendant le cycle de lecture pour verrouiller l'instruction.
- Entrée d'horloge (CLK) : synchronise l'opération de chargement sur le front montant.
- Autorisation de sortie d'adresse (A_OE) : contrôle le comportement trois états des sorties d'adresse pour le partage de bus.
Configuration des sorties :
- Sorties d'opcode (OP0-OP3) : sorties 4 bits fournissant le code opération, toujours actives pour un accès immédiat par l'unité de commande.
- Sorties d'adresse (A0-A3) : sorties 4 bits fournissant les informations d'adressage, peuvent être mises en trois états via A_OE.
- Les bits d'opcode sont typiquement acheminés directement vers l'unité de commande pour le décodage d'instructions.
- Les bits d'adresse sont utilisés pour l'adressage mémoire et les opérations de saut lorsqu'ils sont activés.
Fonctionnalités :
- Stocke temporairement l'instruction actuellement lue.
- Maintient l'instruction stable pendant qu'elle est décodée et exécutée.
- Isole l'unité de commande des changements sur le bus de données après le cycle de lecture.
- Fournit les bits bruts d'instruction nécessaires au décodeur d'instructions.
Délai de propagation :
- Délai horloge-vers-sortie : temps pour que l'instruction soit disponible aux sorties après le front d'horloge lors d'une opération de chargement.
- Exigences de temps de mise en place/maintien pour les entrées de données par rapport à l'horloge et au signal de chargement.
Complexité du circuit :
- Cœur : un registre parallèle-entrée, parallèle-sortie composé de bascules D (une par bit de la largeur d'instruction).
- Logique de contrôle pour le signal LOAD.
Méthodes d'implémentation
- Tableau de bascules D : la méthode la plus courante, utilisant une bascule D pour chaque bit du mot d'instruction, cadencées simultanément avec un signal LOAD commun.
- CI registre standard : utilisation de circuits intégrés de registre standard (par exemple, 74HC374, 74HC574 pour les instructions 8 bits).
- Implémentation FPGA/ASIC : synthétisée à partir de code HDL au sein d'une conception de CPU plus large.
Applications
- Cycle de décodage et exécution d'instruction : composant central dans le cycle lecture-décodage-exécution d'un CPU.
- Unité de commande du CPU : fournit l'entrée à la logique du décodeur d'instructions, qui à son tour génère les signaux de contrôle pour le reste du CPU.
- Étapes de pipeline : dans les processeurs pipelinés, l'IR existe souvent à l'étape du pipeline de décodage d'instruction (ID).
Limitations
- Largeur fixe : la taille de l'IR dicte la taille maximale d'instruction que le CPU peut gérer directement.
- Goulot d'étranglement : dans certaines architectures plus anciennes, la lecture vers l'IR pouvait être un goulot d'étranglement de performance, traitée par des techniques comme le préchargement d'instructions et le pipelining.
Détail de l'implémentation du circuit
Un IR 8 bits implémenté avec des bascules D :
graph LR
D0[Data_In 0] --> FF0[D Flip-Flop 0]
D1[Data_In 1] --> FF1[D Flip-Flop 1]
D2[Data_In 2] --> FF2[D Flip-Flop 2]
D7[Data_In 7] --> FF7[D Flip-Flop 7]
CLK[Clock] --> FF0
CLK --> FF1
CLK --> FF2
CLK --> FF7
LOAD[Load Enable] --> FF0
LOAD --> FF1
LOAD --> FF2
LOAD --> FF7
FF0 --> OUT0[IR_Out 0]
FF1 --> OUT1[IR_Out 1]
FF2 --> OUT2[IR_Out 2]
FF7 --> OUT7[IR_Out 7]
Toutes les bascules partagent les mêmes signaux d'horloge (CLK) et d'autorisation de chargement (LOAD).
Composants associés
- Compteur de programme (PC) : fournit l'adresse pour lire l'instruction qui sera chargée dans l'IR.
- Mémoire (RAM/ROM) : stocke les instructions.
- Bus de données : transporte l'instruction de la mémoire vers l'IR.
- Unité de commande : contient l'IR et le décodeur d'instructions.
- Décodeur d'instructions : lit la sortie de l'IR pour interpréter l'instruction.
- ALU : exécute l'opération spécifiée par l'instruction décodée.
- Registres : peuvent contenir des opérandes spécifiés par des champs au sein de l'instruction stockée dans l'IR.