Architecture interne d’un microprocesseur
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Les registres
- 3.1- L'accumulateur
- 3.2- Le compteur de programme (
CP
) - 3.3- Registre d'instruction et décodeur d'instruction
- 3.4- Le registre d'instruction
- 3.5- Le décodeur d'instruction
- 3.6- Registres d'adresses
- 3.7- Registre d'état (FLAGS)
- 4- L'unité de traitement
- 5- L'Unité Arithmétique et Logique (UAL, en anglais Arithmetic and Logical Unit - ALU)
- 6- L’unité de commande ou de contrôle
- 6.1- Le compteur de programme (en anglais Program Counter PC)
- 6.2- Le registre d'instruction (RI)
- 6.3- Le décodeur d'instruction
- 6.4- Le séquenceur
- 6.5- Une horloge
- 6.5.1- Cours les composants d’un ordinateur
Architecture interne d’un microprocesseur
-
Objectifs
- Connaître les composants d’un microprocesseur et leurs rôles.
- Comprendre le fonctionnement du microprocesseur.
-
Présentation
- L’unité centrale de traitement (CPU : Central Processing Unit), encore dénommée processeur ou microprocesseur, est l’élément de l’ordinateur qui interprète et exécute les instructions d’un programme.
- C’est le cerveau de l’ordinateur. Mais on trouve aussi des processeurs, dits spécialisés, qui peuvent décharger l’unité centrale et assurer des tâches en parallèle. Ceci est très fréquent pour la gestion des entrées/sorties.
- L’unité de Traitement ou CPU c’est la partie chargée d’effectuer les traitements des opérations de types arithmétiques ou booléennes. L’UAL est son principal constituant.
- Un CPU est formé par les trois éléments fonctionnels interconnectés suivants :
- Registres.
- UAL : Unité arithmétique et logique.
- Circuit de contrôle.
-
Les registres
- L’unité centrale comprend un certain nombre de registres pour stocker des données à traiter, des résultats intermédiaires ou des informations de commande.
- Parmi ces registres certains servent pour les opérations arithmétiques ou logiques, d’autres ont des fonctions particulières comme le registre instruction (RI) qui contient l’instruction à exécuter, le compteur ordinal (CO) qui pointe sur la prochaine instruction ou un registre d’état (PSW : Processor Status Word) contenant des informations sur l’état du système (retenue, dépassement, etc.).
-
L’accumulateur
- Il s’agit d’un registre d’usage général recevant des opérandes, des résultats intermédiaires ou des résultats provenant de l’unité arithmétique et logique. Ils évitent des appels fréquents à la mémoire, réduisant ainsi les temps de calcul. Donc la plupart des opérations arithmétiques et logiques se font dans l’accumulateur.
- Un registre est capable de stocker N 0 ou 1, par exemple le résultat de la dernière opération de l’ALU. Dans un processeur, le nombre de registres est très limité (3 à 8). L’un de ces registres est plus important que les autres, il est appelé accumulateur (accu). Sur une calculatrice, l’accu est le registre constamment relié à l’affichage : c’est ici qu’est stocké le résultat de l’opération précédente, ou la donnée du calcul suivant.
- Un accumulateur est un registre de travail de 8 ou 16 bits qui sert:
- à stocker une opérande au début d’une opération arithmétique et le résultat à la fin de l’opération.
- à stocker temporairement des données en provenance de l’extérieur du microprocesseur avant leur reprise pour être rangées en mémoire.
- à stocker des données provenant de la mémoire ou de l’UAL pour les présenter vers l’extérieur du microprocesseur.
- La fonction de l’accumulateur est principalement de contenir les opérandes ou les résultats des opérations de l’UAL.
- Le résultat de l’opération est mis dans l’accumulateur (Acc) dans le cas d’une machine à une adresse, dans des registres internes dans le cas de plusieurs adresses.
-
Le compteur de programme (
CP
) - Le compteur de programme contient l’adresse (décalage ou offset) de l’instruction suivante en mémoire qui doit être exécutée. Autrement dit, il doit indiquer au processeur la prochaine instruction à exécuter.
- Le compteur de programme également appelé registre d’adresse d’instruction,
PC
ou pointeur d’instruction, un compteur de programme est un type de registre qui se trouve dans l’unité de traitement centrale (CPU) d’un système informatique. - Le but du compteur est de fournir le logement temporaire pour la prochaine instruction à exécuter dans une chaîne d’instructions. Lorsqu’une instruction est récupérée et implémentée, le compteur de programme met en file d’attente l’instruction suivante dans la chaîne, minimisant ainsi les retards dans l’exécution des étapes nécessaires à la réalisation d’une tâche.
- En pointant toujours sur l’instruction suivante, le processus continue à avancer efficacement.
- Le registre compteur de programme est constamment modifié après l’exécution de chaque instruction afin qu’il pointe sur l’instruction suivante.
- Les microprocesseurs de la famille x86 dépendent entièrement du registre compteur de programme pour connaître l’instruction suivante.
- Le compteur de programme, en tant que registre parmi plusieurs registres intégrés à la CPU, exécute la tâche de recevoir chacune des instructions dans une séquence de tâches. Le maintien de la séquence logique simplifie la progression en aval de chaque étape et termine la tâche.
- Cette progression logique est maintenue en pointant sur les données à utiliser ensuite alors même que les données précédentes sont utilisées, puis en pointant rapidement sur les données suivantes dans la séquence, chaque instruction étant exécutée à son tour.
-
Registre d’instruction et décodeur d’instruction
-
Le registre d’instruction
- Lorsqu’une instruction est récupérée en mémoire pour être exécuté dans le processeur, elle est mémorisée dans un registre spécial, le registre d’instruction (RI). Le séquenceur utilise ce lieu de stockage pour disposer de l’instruction et des bits la composant pendant tout le temps de son exécution
- Chaque opération que le microprocesseur va effectuer est codée (c’est-à-dire pour chaque instruction on assigne un code qui ne peut pas être modifié ni changé par un autre code) appelé « instruction code» ou « opération code » , pour exécuter une instruction le microprocesseur transmet l’adresse se trouvant dans le registre compteur de programme à la mémoire , la mémoire retourne au microprocesseur l’octet adresse par ce dernier ( le code de l’instruction) celui-ci sera stocker dans un registre appelé registre d’instructions (RI) , donc Le registre d’instructions contient la prochaine instruction à être exécutée par le processeur. Cette instruction sera acheminée (par un bus de données) au décodeur d’instructions qui sera chargé de l’interpréter.
-
Le décodeur d’instruction
- C’est lui qui va interpréter l’instruction contenue dans le registre d’instruction (RI). C’est-à-dire qu’elle est l’opération à effectuer (Addition, branchement etc…) Et comment aller chercher les opérandes requises pour cette opération (par exemple, les nombres à additionner).
- Le décodeur d’instructions communique alors avec l’unité de commandes et de contrôles qui pourra déclencher les événements en conséquence.
- Par exemple, si le décodeur d’un 8086 reçoit l’octet 10000001 (le « Add mem/reg data »), il sait que le processeur doit aller chercher 3 autres octets en mémoire vive pour compléter l’instruction.
-
Registres d’adresses
- Ces registres servent à gérer l’adressage de la mémoire. En effet le processeur peut utiliser un registre ou une paire de registres pour accéder à un emplacement mémoire, et puisque les registres peuvent être incrémenter ou décrémenter donc on peut accéder facilement à des données qui se trouvent en mémoire d’une manière adjacente (tel que les tableaux)
-
Registre d’état (FLAGS)
- Le registre d’état FLAG sert à contenir l’état de certaines opérations effectuées par le processeur.
- Par exemple, quand le résultat d’une opération est trop grand pour être contenu dans le registre cible (celui qui doit contenir le résultat de l’opération), un bit spécifique du registre d’état (le bit OF) est mis à 1 pour indiquer le débordement
- Le registre d’état ( State register ou Program Status Word (PSW) est tel que ses bits ne forment pas de valeur numérique mais servant d’indicateur (drapeau ou flag) sur l’état du processeur. Certains bits peuvent être positionnés par le programmeur pour demander un comportement particulier.
- Les états sont les suivants :
- Le bit Z (Zéro). Il est mis à 1 si le résultat est nul, sinon il est mis à 0
- Le bit C (Carry).
- Le bit N ( Négative)
- Le bit V ( Overflow)
- Le bit P (Parity)
- La plupart des microprocesseurs ne se servent pas de la totalité des indicateurs. Les indicateurs jouent un rôle important car ils permettent au microprocesseur de prendre des décisions dans certaines situations, et de modifier le déroulement du programme en conséquence.
-
L’Unité Arithmétique et Logique (UAL, en anglais Arithmetic and Logical Unit – ALU)
- Unité Arithmétique et Logique : c’est ce composant qui sait faire les calculs. C’est à dire que pour chaque combinaison de 0 et de 1 en entrée, il sait quelle combinaison de 0 et de 1 il doit donner en sortie. La sortie ne dépend que des entrées, le problème est donc combinatoire.
- La figure ci-contre représente un schéma classique d’UAL. Celle-ci possède deux entrées A et B sur lesquelles on présente les données à traiter. L’entrée F désigne l’opération à effectuer.
- L’UAL possède deux sorties, R qui est le résultat de l’opération, et D les éventuels drapeaux.
- Une ALU est un circuit complexe qui assure les fonctions:
- arithmétiques: addition et soustraction
- logiques: ET, OU, OU exclusif
- comparaison, décalage à droite ou à gauche, incrémentation, décrémentation, mise à 1 ou à 0 d’un bit, test de bit.
- Une ALU est constituée par un certain nombre de circuits tels que: complémenteur, additionneur, décaleur, portes logiques, …
- Une ALU est une unité arithmétique logique est un ensemble de circuits électroniques connectés logiquement de façon à réaliser, sous l’action de commandes élémentaires, les opérations arithmétiques ou logiques pour lesquelles cet ensemble a été conçu.
- L’unité arithmétique logique est composée de circuits logiques tels que les additionneurs, soustracteurs, comparateurs logiques…etc., afin d’effectuer les calculs et les opérations logiques des différents instructions à exécuter, les données à traiter se présentent aux entrées de l’UAL, sont traités, puis le résultat est fourni en sortie et généralement stocké dans un registre dit accumulateur. Les informations qui concernent l’opération sont envoyées vers le registre d’état.
-
L’unité de commande ou de contrôle
- Synchronisée par le signal de l’horloge, c’est elle qui déclenche les événements dans le processeur (on peut remarquer à ce sujet qu’elle est connectée à toutes les autres composantes du processeur).
- Par exemple, quand une information passe dans un bus, cette information est destinée à un seul endroit (par exemple, un registre). C’est donc l’unité de commande et de contrôle qui va « déverrouiller » l’entrée de cette destination pour que l’information qui circule sur le bus puisse y entrer (et ne pas entrer ailleurs en même temps).
- Il s’agit donc essentiellement d’un automate exécutant les différentes séquences propres à chaque instruction.
- Cet automate peut être réalisé de plusieurs façons (câbler ou micro-programmer et dans les deux cas le jeu d’instructions est fixe). La plupart des unités de traitement sont micro- programmées et donc à jeux d’instructions fixes.
- Elle permet de séquencer le déroulement des instructions. Elle effectue la recherche en mémoire de l’instruction.
- Comme chaque instruction est codée sous forme binaire, elle en assure le décodage pour enfin réaliser son exécution puis effectue la préparation de l’instruction suivante.
- Pour cela, elle est composée au minimum de :
- d’un compteur ordinal (CO) : registre contenant l’adresse en mémoire où se trouve l’instruction à chercher,
- d’un registre instruction (RI) qui reçoit l’instruction qui doit être exécutée,
- d’un registre adresse RA,
- d’un décodeur de fonctions, qui détermine l’opération à effectuer et les opérandes
- d’une horloge (interne ou externe) qui émet des impulsions permettant la synchronisation de tous les éléments de l’unité
centrale.. -
Le compteur de programme (en anglais Program Counter PC)
- Appelé aussi compteur ordinal (CO).
- Le CO est constitué par un registre dont le contenu représente l’adresse de la prochaine instruction à exécuter.
- Il est donc initialisé avec l’adresse de la première instruction du programme.
- Puis il sera incrémenté automatiquement pour pointer vers la prochaine instruction à exécuter.
- Avant son exécution un programme est mis en mémoire, ses instructions étant placés les unes à la suite des autres. Chacune a donc une adresse précise qu’il faut envoyer au boitier mémoire lorsque que le processeur veut récupérer la dite instruction pour l’exécuter doit donc toujours savoir quelle est la prochaine instruction à exécuter et surtout quel est son adresse.
- Un registre spécial appelé Compteur Ordinal (CO) ou PC Programm Counter ou IP (Instruction Pointer) contient l’adresse en question.
- Pour exécuter une instruction, le processeur commence par envoyer un ordre de lecture mémoire associé à la valeur contenue dans le PC avant de récupérer l’instruction. Le processeur incrémente alors le PC.
- Le compteur ordinateur est connecté au bus d’adresse. Une fois récupéré dans la mémoire centrale, l’instruction est expédiée via le bus de données dans le registre d’instruction.
-
Le registre d’instruction (RI)
- Contient l’instruction en cours de traitement, reçoit l’instruction qui doit être exécutée .
- Chaque opération que le microprocesseur va effectuer est codée (c’est-à-dire pour chaque instruction on assigne un code qui ne peut pas être modifié ni changé par un autre code) appelé « instruction code » ou « opération code » ,
- Pour exécuter une instruction le microprocesseur transmet l’adresse se trouvant dans le registre compteur de programme à la mémoire , la mémoire retourne au microprocesseur l’octet adresse par ce dernier ( le code de l’instruction) celui-ci sera stocker dans un registre appelé registre d’instructions (RI) , donc Le registre d’instructions contient la prochaine instruction à être exécutée par le processeur.
- Cette instruction sera acheminée (par un bus de données) au décodeur d’instructions qui sera chargé de l’interpréter.
-
Le décodeur d’instruction
- C’est lui qui va interpréter l’instruction contenue dans le registre d’instruction (RI).
- C’est-à-dire qu’elle est l’opération à effectuer (Addition, branchement etc…) Et comment aller chercher les opérandes requises pour cette opération (par exemple, les nombres à additionner).
- Le décodeur d’instructions communique alors avec l’unité de commandes et de contrôles qui pourra déclencher les événements en conséquence.
-
Le séquenceur
- Il organise l’exécution des instructions au rythme d’une horloge. Il élabore tous les signaux de synchronisation internes ou externes (bus de commande) du microprocesseur en fonction des divers signaux de commande provenant du décodeur d’instruction ou du registre d’état par exemple.
- Il s’agit d’un automate réalisé soit de façon câblée (obsolète), soit de façon micro-programmée, on parle alors de micro-microprocesseur.
-
Une horloge
- Une horloge est un système logique, piloté par un oscillateur, qui émet périodiquement une série d’impulsions calibrées.
- Ces signaux périodiques constituent le cycle de base ou cycle machine. Nous avons déjà vu (dans le premier chapitre) les différentes phases de l’exécution d’une instruction.
- Un cycle d’instruction peut se décomposer en un cycle de recherche (instruction et opérandes) et un cycle d’exécution. On rencontre parfois le terme de cycle cpu pour indiquer le temps d’exécution de l’instruction la plus courte.
Le compteur ordinal est en quelque sorte le gestionnaire qui assure le bon déroulement d’un programme. C’est lui qui cherche, pendant l’exécution d’une instruction, l’emplacement en mémoire centrale de l’instruction suivante. Il anticipe en permanence.