Microprocesseurs
Introduction
Un microprocesseur est un circuit électronique destiné à traiter des valeurs numériques.
Le fonctionnement du microprocesseur est basé sur l'architecture de Von Neumann, soit un bus
d'adresses, un bus de données et un bus de contrôle.
Architecture interne d'un miroprocesseur
- ACC : Accumulateur
- RTUAL : Registre Temporaire de U.A.L
- RTA : Registre Temporaire d'Adresse
- RI : Registre d'Instruction
- IP : Instruction Pointer (Pointeur d'Instruction)
- La figure représente l'architecture interne simplifiée d'un microprocesseur, elle comporte:
- Les registres
- Unité de commande
- Unité de traitement (U.A.L)
- Le décodeur d'instructions: Qui à partir du code de
l'instruction lu en mémoire actionne la partie de l'unité de commande nécessaire.
- Les informations circulent à l'intérieur du processeur sur deux bus internes, l'un pour les
données, l'autre pour les instructions.
- Le microprocesseur est relié à l'extérieur par les bus de données et d'adresses, le signal
d'horloge et les signaux de commandes.
Information
- Un programme est une suite d'instructions et un ensemble de données stockés dans des cases
mémoire:
- Chaque case mémoire est repéré par une adresse.
- L'exécution d'un programme par le microprocesseur consiste donc à:
- Lire les instructions dans la mémoire et les strocker dans le microprocesseur.
- Decoder et exécuter ces instructions. Selon la nature de l'instruction. Le microprosseur
peut effectuer une lecture de données à traiter. Une ecriture de données en mémoire.
- Pour effectuer ces opérations, le microprocesseur fair appel à des blocs fondamentaux :
- Bloc des registres.
- Bloc de calcule UAL.
- Bloc logique de commande.
- Le Registre RTUAL peut être multiple (R0, R1, ...)
Les registres
- Un registre est un ensemble de bits qui permet de stocker une information binaire dans un
microprocesseur.
- Le microprocesseur utilise toujours les registres.
- L'information peut être une instruction, une donnée ou une adresse.
- Ce sont des petites mémoires internes d'accès très rapides.
- Elles sont utilisées pour stocker temporairement une donnée, une instruction ou une adresse.
- Chaque registre stocke 8, 16, 32 bits.
- Il existe 6 registres fondamentaux qu'on trouve dans tous les microprocesseurs :
- Compteur d'instruction ou compteur ordinal.
- Registre d'adresse.
- Registre d'instruction.
- Registre de données (Accumulateur)
- Registre d'état.
- Registre temporaire.
Registre de données (Accumulateur)
- L'accumulateur est parmis le plus important registre.
- L'accumulateur est utilisé pour stocker les résultats des opérations arithmétiques et logiques.
- L'accumulateur est un registre qui est relié :
- D'un côté à un registre temporaire (RTA: Registre temporaire d'adresse) et un bus interne de
données.
- De l'autre côté à la sortie de l'unité arithmétique et logique (UAL).
- Si une operation traite deux données, alors :
- Une donnée sera stockée d'abord dans l'accumulateur.
- La deuxiéme donnée passera directement au RTUAL.
- Le résultat de l'opération est stocké dans l'accumulateur en sortant de l'UAL.
Exemple
- Prenons un exemple où nous voulons additionner deux nombres.
- Le premier nombre est chargé dans ACC, ensuite elle passera au premier registre temporaire
R0.
- Le second nombre est chargé dans le deuxiéme registre temporaire (R1 ou RTUAL).
- Les deux opérandes sont transférés à l'UAL via le bus de données interne.
- L'UAL additionne la valeur dans ACC et la valeur dans RTUAL.
- Le résultat de l'addition est stocké dans ACC pour être utilisé ultérieurement.
Illustration Schématique du Processus
[Premier Nombre] → [Accumulateur] → [Registre R0]
[Second Nombre] → [Registre R1]
R0 et R1 → [Bus de Données] → [UAL]
UAL (A + B) → [Accumulateur]
Exemple en Langage d'Assemblage Simplifié
MOV ACC, #5 ; Charger le premier nombre (5) dans l'accumulateur
MOV R0, ACC ; Transférer le contenu de l'accumulateur vers R0
MOV R1, #10 ; Charger le second nombre (10) directement dans R1
ADD ACC, R0, R1 ; Additionner R0 et R1, stocker le résultat dans l'accumulateur
Un accumulateur représente également une intermédiare entre la mémoire et les interfaces d'E/S.
Exemple
- Lecture d'une donnée :
- Une donnée est lue d'un périphérique d'entrée et stockée dans l'accumulateur.
- Cette donnée est ensuite transférée en mémoire.
- Ecriture d'une donnée :
- Un calcul est effectué par l'UAL, et le résultat est stocké dans l'accumulateur.
- Ce résultat est ensuitt transféré vers un périphérique de sortie, comme un affichage.
Le nombre de bits de l'ACC est égal en général au nombre de broches du bus de données.
Le nombre d'accumulateur varie d'un microprocesseur à l'autre.
Exemple : première génération : 8088, 8085 et 6800 ce sont des microprocesseur de 8 bit
ils
possèdent 1 accumulateur de 8 bits.
6809 et 8088 sont appelés des microprocesseurs faux 16 bits :
- Ce sont des microprocesseurs de 8 bits.
- Ils possèdent deux accumulateur de 8 bits qui peuvent être regroupés pour former un seul
accumulateur de 16 bits.
Le 8086, 80286, 68000 sont de vrais 16 bits : Ce sont des microprocesseurs de 16 bits avec 1
accumulateur de 16 bits.
Les microprocesseurs vrais 16 bits sont plus rapides que les microprocesseurs faux 16 bits.
L'accumulateur intervient dans une proportion importante des instructions.
Exemple
Exécution d'une instruction comme ``Ajouter 5 au contenu de la case mémoire d'adresse 180'':
- Le processeur lit et décode l'instruction
- Le processeur demande à la mémoire le contenu de l'emplacement 180
- La valeur lue est rangée dans l'accumulateur
- L'unité de traitement U.A.L ajoute 5 au contenu de l'accumulateur
- Le contenu de l'accumulateur est écris en mémoire à l'adresse 180.
Exemple en Langage d'Assemblage Simplifié
LOAD ACC, 180 ; Charger le contenu de la mémoire à l'adresse 180 dans l'accumulateur
ADD ACC, #5 ; Ajouter la valeur immédiate 5 au contenu de l'accumulateur
STORE 180, ACC ; Stocker le résultat de l'accumulateur à l'adresse 180
C'est l'unité de commande qui déclende chacune de ces actions dans l'ordre.
L'addition proprement dite est effectuée par l'U.A.L
Compteur Ordinal (CO)
Registre d'adresse (RA)
- Ce registre est directement relié au compteur ordinal (IP), il représente une interface entre ce
compteur et le bus d'adresse du microprocesseur.
- Le RA permet d'accéder à une donnée en mémoire.
- Le nombre de bits de ce registre est égal au nombre de broches de bus d'adresses.
Registre d'instruction (RI)
- Le RI permet de stocker l'instruction à exécuter.
- Ce registre va garder cette instruction pendant le temps nécessaires à son décodage et son
exécution.
- Le compteur ordinal communique avec le RA pour lui donner l'adresse de la première instruction.
- Le RA donne cette adresse au bus d'adresse qui va localiser cette adresse.
- La mémoire reçoit un signal (la ligne R/W = 1) de la part de la logique de contrôle pour
l'informer qu'il s'agit d'une lecture.
- Le bus de données va lire l'instruction et la mettre dans le registre d'instruction.
Registre Temporaires (RT)
- L'U.A.L possède deux entrées pour recevoir les données à traiter.
- Au niveau de chaque entrée il y a un registre temporaire qui garde la donnée pendant le temps
nécessaire à son traitement.
- L'U.A.L est un circuit électronique qui ne peut pas stocker des données, elle se sert donc des
registres temporaires RT1 et RT2.
Registre d'Etat (RE)
- Le registre d'Etat est directement lié à l'U.A.L
- Le registre d'Etat stocke certaines informations particulières concernant les opérations
effectuées.
- Le nombre de bits de ce registre varie d'un microprocesseur à l'autre.
- Les bits les plus utilisés sont :
- Bit de retenue ou indicateur de retenu (CF)
- Si CF = 1 alors une opération d'addition ou soustraction a généré une retenue.
- Si CF = 0 alors pas de retenue
Exemples
10101111 (175)
00001010 (10)
--------
10101001 (185)
CF=0 pas de retenue
11111111 (255)
00000001 (1)
--------
00000000
CF = 1, il y a une retenue, ce 1 de retenue sera stocker dans le bit de retenue CF.
Bit de zéro ZF
- Si ZF = 1 alors le résultat d'une opération est nul.
- Si ZF = 0 alors le résultat d'une opération est non nul.
Exemple
+15 0 1111 (+15)
-15 1 0001 (-15)
--- ------
0 1 0 0000 (Retenue ignorée)
ZF = 1
+15 0 1111 (+15)
-1 1 1111 (-1)
--- ------
0 1 0 1110 (Retenue ignorée)
ZF = 0
Bit de signe SF
- Si SF = 1 alors le bit le plus significatif d'une donnée est égale à 1 (Indique qu'il s'agit
d'un nombre négatif)
- Si SF = 0 alors le bit le plus significatif d'une donnée est égale à 0 (Indique qu'il s'agit
d'un nombre positif)
Exemple
+1 = 0 00000012 SF = 0.
-1 = 1 11111112 en complément à 2 implique SF = 1.
Bit de débordement OF
- Si OF = 1 alors il y a dépassement de la capacité maximale de codage.
- Si OF = 0 alors il n'y a dépassement de la capacité maximale de codage.
Bloc de calcul (Unité de traitement U.A.L)
- Les traitments effectués par l'unité arithmétique et logique sont:
- Opérations arithmétiques :
- Addition
- Soustraction
- Multiplication
- Division
- Opérations logiques :
- Et logique (AND)
- Ou logique (OU)
- Ou exclusif (XOR)
Exemples
- Et logique (AND)
- Ou logique (OU)
- Ou exclusif (EOU/XOR)
Bloc logique de commande (Unité de commande et contrôle)
- L'unité de commande a pour fonction :
- Décodage des instructions stockées dans le registre d'instruction.
- Exécution des instructions par les organes exécutifs (UAL, Accumulateur, CO, ...)
- Gestion du dialogue entre le microprocesseur, les mémoires et les interfaces d'E/S, par
l'intermédiare du bus de commande et des signaux de contrôle.
- Les signaux de commandes permettent au processeur de communiquer avec les autres circuits de
l'ordinateur.
- On trouve en particulier :
- Le signal R/W (Read/Write) : le microprocesseur indique à la mémoire principale s'il
effectue un accès en lecture ou en écriture.
- L'initialisation des registres internes du microprocesseur : la broche d'initialisation fait
signal au microprocesseur de faire tous les registres à zéro.
- L'interruption d'exécution du microprocesseur.
- Le nombre de broches de ces signaux change d'un constructeur à un autre.
Exemple de gestion interne
- Incrémentation du CO.
- Mise à jour des bits du registre d'état en fonction des résultats fournis par l'UAL.
- Nature de l'opération qui va être effectuée par l'UAL.
Exemple de gestion externe (Dialogue)
- INT : Interruption d'exécution d'un programme.
INT est générée par une interface
d'E/S
Si INT = 1 alors l'IE/S désire communiquer avec le microprocesseur.
Si INT = 0
pas de dialogque entre E/S et microprocesseur.
- INTA : Réponse par le microprocesseur au signale INT
Si INTA = 1 alors le microprocesseur
a reçu le signal INT
Si INTA = 0 alors le microprocesseur n'a pas reçu le signal INT.
- DMA : Direct Memory Access
Si DMA = 1 alors une interface d'E/S demande les bus de
données, d'adresses et de commandes pour être en lien avec la mémoire.
Si DMA = 0 alors
pas de demanve des bus de la part les interfaces d'E/S.
- DMAA : Réponse du microprocesseur au signal DMA
Si DMAA = 1 alors le microprocesseur a
reçu le signal DMA.
Si DMAA = 0 alors le microprocesseur n'a pas reçu le signal DMA
Exemple d'utilisation
- Chargement des programmes, fichiers de données, ..., de l'unité disque dur ou disquette dans
la mémoire vive (RAM).
- Stockage des programme, ... de la RAM vers le disque dur ou disquette.
Exemple de INT et INTA
- Si INT = 0, INTA = 0
Le microprocesseur exécute le programme principal (fonctionnement
normal)
Si INT = 1 alors une interface d'E/S désire communiquer avec le microprocesseur
pour un transfer de données:
- Le microprocesseur va donc interrompre le programme principal.
- INTA = 1, le microprocesseur informe l'interface d'E/S qu'il a reçu le signal INT.
- Le microprocesseur exécute un sous programme pour le traitement de l'interruption
(lecture des données de l'interface d'E/S vers le microprocesseur et du microprocesseur
vers la mémoire).
- A la fin de l'exécution du sous programme, le microprocesseur continue à exécuter le
programme principal à partir de l'instruction suivante.
Horloge
- C'est un oscillateur qui génère un signal périodique.
- à l'instant T le microprocesseur doit chercher l'instruction après une période il doit
l'exécuter et ainsi de suite.
- D'où la notion de temps pour microprocesseur.
-
Fonctionnement d'un microprocesseur
L'exécution d'un programme se fait séquentiellement à
partir du premier mot de la première instruction.
Pour chaque mot d'une instruction le microprocesseur effectue les phases suivantes :
- Phase de recherche
- Phase de décodage et recherche d'opérande
- Phase d'exécution
Phase de recherche
- Le but de cette phase est de chercher le contenu d'un mot d'une instruction de la mémoire vers
le registre d'instruction.
- Elle s'effectue de la manière suivante :
- Le compteur ordinal qui contient l'adresse du premier mot de l'instruction est envoyé au
registre d'adresse.
- Un signal de lecture est envoyé par le l'unité de commande et de contrôle vers la mémoire.
- La mémoire une fois qu'elle reçoit l'adresse et le signal de lecture :
- Effectue le décodage de l'adresse considérée (càd cherche la case mémoire dont l'adresse
est dans le bus d'adresse).
- Dépose sur le bus de données le contenu de la case mémoire spécifiée.
- Le microprocesseur lit le bus de données et dépose le contenu dans le registre
d'instruction.
- Le contenu du compteur ordinal est incrémenté automatiquement par le bloc de contrôle et de
commande.
Les étapes de 1 à 5 vont se répéter jusqu'à la fin de la recherche de tous les
mots de l'instruction.
Phase de décodage et recherche d'opérande
- La registre d'instruction contietn le premier mot de l'instruction.
- Ce mot contient le code opération qui définit la nature de l'opération à éffectuer et le nombre
de mots de l'instruction. Ainsi:
- L'unité de commande transforme l'instruction en une suite de commandes élémentaires
nécessaires au traitement de l'instruction.
- Si l'instruction nécessite une donnée en provenance de la mémoire, l'unité de commande
récupère sa valeur sur le bus de données.
- L'opérande est stocké dans un registre.
Phase d'exécution
- Le micro-programme réalisant l'instruction est exécuté.
- Les flags sont positionnés (registre d'état)
- L'unité de commande positionne le CO pour l'instruction suivante.
La synchronisation entre la phase de recherche, la phase de décodage et d'exécution se fait grâce à
une base de temps fournis par u n oscillateur.
Le nombre de périodes par phase dépend du microprocesseur utilisé.
Le nombre de phases de recherche dépend de l'instruction à exécuter.
Le nombre dephases de décodage est 1.
Exemple
LOAD ACC $2000
Càd charger dans l'accumulateur le contenu de la case mémoire: $2000
Phase de recherche: 3 périodes
Phase d'exécution: 2 périodes
Un cycle machine: 5 périodes