Cycle d'instruction dans la CPU: comment fonctionnent les fonctions d'extraction, de décodage et d'exécution

Cycle d'instruction dans la CPU
Qu'est-ce qu'un Processeur fait est d'exécuter les instructions d'un programme situé en mémoire. Mais saviez-vous qu'ils suivent tous les mêmes règles générales? Ils suivent tous le même cycle d'instructions, qui est divisé en trois étapes distinctes appelées Fetch, Decode et Execute, qui sont traduites en extraire, décoder et exécuter. Nous expliquons comment ces étapes fonctionnent et comment elles sont organisées.

Afin de simplifier et de rendre les concepts expliqués dans cet article plus compréhensibles, nous avons décidé de décrire un processeur extrêmement simple pour les temps actuels, donc dans cet article, vous verrez une explication de ce que les cycles d'instructions sont d'une manière généralisée qui peut être appliquée des premiers processeurs 8 bits aux plus complexes actuellement disponibles

Visualiser le cycle d'instruction

Ciclo Instrucción Unidad Contrôle

Les processeurs ne sont pas différents d'un certain point de vue d'un moteur à combustion, qui effectuent toujours un processus continu d'explosion de carburant en différentes étapes, qu'il s'agisse de 2 temps ou 4 temps. La raison en est que les processeurs fonctionnent en trois étapes différentes dans leur version la plus simple, qui sont les suivantes:

  • Récupérer ou capturer: Dans lequel l'instruction est capturée à partir de la RAM et copiée dans le processeur.
  • Décoder ou décoder: Dans lequel l'instruction précédemment capturée est décodée et envoyée aux unités d'exécution
  • Exécuter: Où l'instruction est résolue et le résultat écrit dans les registres internes du processeur ou dans une adresse mémoire de la RAM

Ces trois étapes sont remplies dans chaque processeur. Il y a une quatrième étape, qui est la réécriture, qui correspond au moment où les unités d'exécution écrivent le résultat, mais cela est généralement compté dans l'étape d'exécution du cycle d'instructions.

Première étape du cycle d'instruction: Fetch

Récupérer le processus

La première étape du cycle d'instruction est chargée de capturer les instructions dans le RAM mémoire affectée au processeur via une série d'unités et de registres qui sont les suivants:

  1. Compteur de programme ou compteur de programme: Qui pointe vers la ligne de mémoire suivante où se trouve la prochaine instruction du processeur. Sa valeur est incrémentée de 1 à chaque fois qu'un cycle d'instructions complet est terminé ou lorsqu'une instruction de saut change la valeur du compteur de programme.
  2. Registre d'adresse mémoire: Le MAR copie le contenu du PC et l'envoie à la RAM via les broches d'adressage du CPU, qui sont câblées avec les broches d'adressage de la RAM elle-même.
  3. Registre de données de mémoire ou registre de données de mémoire : Dans le cas où la CPU doit effectuer une lecture de mémoire, ce que fait le MDR est de copier le contenu de cette adresse mémoire dans un registre interne de la CPU, qui est un registre de passe temporaire avant que son contenu ne soit copié dans le registre d'instructions. Le MDR, contrairement au MAR, est connecté aux broches de données de la RAM et non aux broches d'adressage et dans le cas d'une instruction d'écriture, le contenu de ce que vous voulez écrire dans la RAM est également écrit dans le MDR
  4. Registre d'instructions: La dernière partie de l'étape d'extraction est l'écriture de l'instruction dans le registre d'instructions, à partir duquel l'unité de commande de processeur copiera son contenu pour la deuxième étape du cycle d'instructions.

Ces 4 sous-étapes interviennent dans tous les processeurs quelle que soit leur utilité, leur architecture et leur compatibilité binaire ou ce que nous appelons ISA.

Unité de contrôle

Unité de contrôle

L'unité de contrôle est la partie la plus complexe qui existe dans un processeur et ses tâches sont les suivantes:

  • Ils sont chargés de coordonner le mouvement et l'ordre dans lequel des données qui se déplacent à l'intérieur et à l'extérieur du processeur, ainsi que les différentes sous-unités qui en ont la charge.
  • En général, on considère que les unités de l'étape de capture ou Fetch font partie du matériel que nous appelons l'unité de contrôle et ce matériel est également appelé Front-End d'un processeur.
  • Il interprète les instructions et les envoie aux différentes unités d'exécution auxquelles il est connecté.
  • Il est communiqué aux différentes ALU et unités d'exécution du processeur qui agissent
  • Il est chargé de capturer et de décoder les instructions, mais aussi d'écrire les résultats dans les registres, les caches ou dans l'adresse correspondante de la RAM.

Opcode-Mode-Adresse

Ce que fait l'unité de contrôle, c'est décoder les instructions et il le fait parce que chaque instruction est en fait une sorte de phrase où le verbe passe en premier et ensuite l'objet direct ou l'objet sur lequel l'action est effectuée. Le sujet finit par être éliminé dans ce langage interne des ordinateurs par le fait que l'on comprend que c'est l'ordinateur lui-même qui l'exécute, donc chaque nombre de bits est une phrase où les premiers 1 et 0 correspondent à l'action et aux uns viennent ensuite les données ou l'emplacement des données à manipuler.

La deuxième étape: décoder

Instructions de décodification

Il existe différents types d'instructions et toutes ne font pas la même chose, donc en fonction du type d'instruction, nous devons savoir à quelles unités d'exécution vont être envoyées et la manière la plus classique de le faire est d'utiliser ce que nous appelons un décodeur. , qui prend chaque instruction, la divise en interne en fonction de l'opcode ou de l'instruction et des données ou de l'adresse mémoire où elle se trouve.

Par exemple, dans le diagramme ci-dessus, nous avons le diagramme d'un processeur avec seulement 8 instructions, qui peuvent être encodées en seulement 3 bits. Chacune des instructions, une fois décodée, est envoyée aux différentes unités d'exécution qui vont les résoudre.

Ce cycle d'instruction est le plus complexe de tous et celui qui définit le type d'architecture. Selon que nous avons un ensemble d'instructions réduit ou complexe, cela affectera la nature de l'unité de contrôle, en fonction du format de l'instruction ou du nombre d'instructions traitées en même temps, la phase de décodage et donc l'unité de contrôle aura un nature différente. autre.

Le moyen le plus simple de visualiser ce qui se passe est de considérer les instructions comme des trains circulant sur un réseau ferroviaire complexe et l'unité de contrôle les dirigeant vers une gare terminale, qui est l'unité d'exécution qui sera chargée de résoudre l'instruction.

Troisième étape: exécuter

1 bit ALU

La dernière étape est l'exécution des instructions, à ce stade, les instructions sont résolues, mais tous les types d'instructions ne sont pas résolus de la même manière, car la façon d'utiliser le matériel dépendra de la fonction de chacun d'eux. eux, en général, nous avons quatre types d'instructions:

  • Instructions de mouvement de bits: Dans lequel l'ordre des bits contenant les données est manipulé.
  • Instructions arithmétiques: Lorsque des opérations mathématiques et logiques sont effectuées, celles-ci sont résolues dans les soi-disant ALU ou unités arithmétiques-logiques
  • Instructions de saut: Dans lequel la valeur suivante du compteur de programme est modifiée, ce qui permet au code d'être utilisé de manière récursive.
  • Instructions à la mémoire: Ils sont avec lesquels le processeur lit et écrit les informations de la mémoire système.

L'autre point concerne les formats d'instructions, puisqu'une instruction peut être appliquée à une donnée, un scalaire ou plusieurs données en même temps, que nous appelons SIMD. Pour finir et selon le format des données, il existe différents types d'ALU pour l'exécution d'instructions arithmétiques, par exemple nous avons aujourd'hui des unités entières et flottantes comme unités différenciées.

Une fois l'instruction terminée, le résultat est écrit sur une adresse mémoire spécifique et la suivante est exécutée. Certaines instructions ne manipulent pas les valeurs de la mémoire mais plutôt certains registres. Ainsi, le registre du compteur de programme est modifié par les instructions de saut, si l'on veut lire ou écrire des données alors les registres MAR et MDR sont manipulés.