Chapitre 2 2017 2018
Chapitre 2 2017 2018
Chapitre 2 2017 2018
Objectifs :
Connaître le rôle du microprocesseur
Connaître les différents composants d’un microprocesseur et leurs rôles
Comprendre le fonctionnement du microprocesseur et l’interaction entre les différentes unités
Maîtriser les étapes nécessaires à l’exécution des programmes par le microprocesseur
I- INTRODUCTION
Un microprocesseur est un circuit intégré complexe caractérisé par une très grande intégration et doté
des facultés d'interprétation et d'exécution des instructions d'un programme. Il est chargé d’organiser les
tâches précisées par le programme et d’assurer leur exécution. Il doit aussi prendre en compte les
informations extérieures au système et assurer leur traitement.
A l’heure actuelle, un microprocesseur regroupe sur quelques millimètres carrés des fonctionnalités
toujours plus complexes. Leur puissance continue de s’accroître et leur encombrement diminue
régulièrement.
II- ORGANISATION INTERNE DE BASE D’UN MICROPROCESSEUR
Le microprocesseur renferme tous les circuits logiques qui permettent de rechercher, décoder et
exécuter automatiquement les instructions logées en mémoire. Le µP peut être considéré comme un
automate composé de deux ensembles :
La partie opérative : Elle permet d’effectuer les opérations arithmétiques et logiques sur les données
ainsi que de calculer l’adresse mémoire des instructions ou des données. On peut aussi appeler cette
partie Unité de traitement. Elle regroupe les circuits qui assurent les traitements nécessaires à
l'exécution des instructions.
La partie commande (Unité de commande): Elle est notamment composée d’un registre instruction
où est stocké le code de l’instruction à exécuter. Ce registre est associé à un séquenceur chargé de
délivrer l’ensemble des signaux internes nécessaires au fonctionnement de la partie opérative du µP.
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.
II-1 PARTIE OPERATIVE (UNITE DE TRAITEMENT)
L’unité de traitement est composée de trois principales unités d’exécution, la première est l’unité
arithmétique et logique (UAL) puis deux autres ont été ajoutés qui sont l’unité de calcul en virgule flottante
et l’unité multimédia pour des raisons d’optimisation des performances des microprocesseurs.
A) Unité Arithmétique et Logique
Elle 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.
(fig.1) fig.1
Exemples de fonctionnement de l’UAL
La figure 2 représente un ALU et 2 registres spécialisés, les accumulateurs A et B, d’un µP Motorola.
Chaque entrée de l’UAL peut être connectée :
à un accumulateur
au bus de données externe
La sortie de l’UAL est connectée à un des 2 accumulateurs. Ces connexions se font
à l’aide de bus internes (non représentés) que l’on peut aiguiller. Et le séquenceur
de la partie commande a pour rôle de commander tous les aiguillages nécessaire,
durant l’exécution d’une instruction.
Fig.2
1/13 Chapitre 2 : Le Microprocesseur
Addition : (fig.3)
On désire réaliser une addition entre le
contenu de l’accumulateur A et une constante
rangée en mémoire programme. La ligne de
programme en assembleur est : ADDA #$10 qui
signifie le contenu de A, par exemple 22h, est
additionné à la donnée 10h qui provient du bus de
données. Lorsque l’opération est terminée,
l’ancien contenu de A est remplacé par le résultat, ici 32h. fig.3
Décalage sur un mot binaire : (fig.4)
On peut également opérer un
décalage à gauche de A avec l’instruction
ASLA (qui signifie Arithmetic Shift Left
A) Si on suppose que A contient
initialement 94h soit 10010100b alors le
résultat du décalage est 00101000b soit
28h.
fig.4
B) Le Registre Accumulateur
C’est un registre de travail très important de l’UAL, dans la plus part des opérations arithmétiques et
logiques, l’accumulateur contient un des opérandes avant l’exécution et le résultat après. Il peut aussi servir
de registre tampon dans les opérations d’entrée/sortie. Généralement, l’accumulateur a la même taille qu’un
mot mémoire.
Naturellement, le programmeur a accès à ce registre qui est toujours très sollicité pendant le
traitement des données. Certains processeurs ont plusieurs accumulateurs et dans ce cas, les codes opérations
précisent l’accumulateur utilisé.
C) Le Registre d’état (PSW program status word)
C’est un registre qui contient les différents bits appelés drapeaux (Flags) indiquant l’état d’une
condition particulière dans le μP. Ces bits peuvent être testés par un programme et donc décider des suites
d’actions à prendre.
Pour exécuter correctement son travail, le séquenceur doit en outre connaître l’état d’un certain
nombre d’autres composants et disposer d’informations concernant la ou les opérations qui ont déjà été
exécutées (par exemple, doit on tenir compte dans l’addition en cours d’une éventuelle retenu préalable
générée par une addition précédente). Le registre d’état fournit ces informations.
Le nombre de bits de ce registre change d’un microprocesseur à un autre, par exemple pour le cas
d’un 6809 ce registre est de 8 bits mais pour le 8088 ce registre est de 16 bits.
Les différents bits du registre d’état sont :
Bit de retenu : c’est le bit C ou carry. ce bit est à 1 s’il y a une retenu qui est générée lors d’une
opération arithmétique.
Bit de parité : le bit P, ce bit est mis à 1 si le nombre de 1 dans l’accumulateur est pair.
Bit de retenu intermédiaire : le bit AC (auxiliary carry), il est mis à 1 si une retenu est générée entre
groupes de 4 bits (passage de retenu).
Le bit zéro : il est à 1 si le résultat d’une opération arithmétique est nul.
Le bit de signe : il est à 1 si le résultat d’une opération arithmétique est négatif.
Le bit de dépassement de capacité : le bit O pour overflow, il est à 1 s’il y a dépassement de capacité
dans les opérations arithmétiques. Par exemple sur 8 bits en complément à 2, les nombres binaires
sont codés sur 8 bits. On peut coder les nombres variant de –128 (100000000) à +127(01111111).
Si on fait 107+28 cela donne 135 qui ne peut pas être représenté, d’ou génération de débordement.
D) Unité de calcul en virgule flottante :
Fig.10 Exécution
D) Le registre d’instruction
Il contient l’instruction qui doit être traitée par le microprocesseur, cette instruction est recherchée en
mémoire puis placée dans ce registre pour être décodée par le décodeur et préparée pour l’exécution.
Une instruction est une opération élémentaire d’un langage de programmation, c’est à dire le plus petit
ordre que peut comprendre un ordinateur.
6/13 Chapitre 2 : Le Microprocesseur
Exemple : ADD A,B cette instruction correspond à un ordre donné à l’ordinateur en langage
assembleur qui permet de faire l’addition entre les données A et B.
Toute instruction présente en fait deux types d’informations :
- Ce qu’il faut faire comme action (addition, affichage, division …)
- Avec quelles données réaliser cette action.
Composition d’une instruction :
- Zone opération : Cette zone permet de déterminer la nature de l’opération à effectuer par le
microprocesseur.
- Zone adresse : contient les adresses en mémoire des opérandes qui participent dans une opération,
dans certains cas elle contient l’opérande même. Il existe plusieurs modes d’adressages pour
accéder aux données.
II-3 AUTRES REGISTRES ET UNITES
A) Registre d’adresse
C’est un registre qui contient l’adresse du mot à accéder en mémoire centrale. A chaque accès
mémoire, l’adresse recherchée est stockée dans ce registre. Il a la taille d’une adresse qui est la même que
celle du bus d’adresses ce qui permet de déterminer le nombre de mots mémoires adressables et l’espace
mémoire adressable.
B) Le registre mot mémoire ou registre de données
Il Contient le mot mémoire faisant objet d’une opération de lecture ou d’écriture dans la mémoire
centrale. Ce registre a la taille d’un mot mémoire qui est la même que celle des registres de travail et
l’accumulateur qui est égale à la taille du bus de données.
Le schéma ci dessous montre le fonctionnement des deux registres d’adresses et de mot mémoire.
La lecture et l’écriture dans la mémoire
centrale se fait de la façon suivante :
- Lecture : l’adresse du mot à lire est
transférée au registre d’adresse, le
dispositif d’accès à la mémoire se
charge de chercher le mot et de le
mettre dans le registre mot mémoire.
- Ecriture : le registre d’adresse est
chargé par l’adresse mémoire ou on
va écrire, le mot à écrire est placé
dans le registre mot mémoire.
Lorsque l’ordre de l’écriture est
donné, le contenu des cases
mémoires sera écrasé et remplacé par
la nouvelle valeur. Par contre, en cas de lecture, le contenu des cases mémoire n’est pas détruit.
C) Le registre pointeur de pile : (Stack Pointer)
Il contient l'adresse de la pile. Celle-ci est une partie de la mémoire, elle permet de stocker des
informations (le contenu des registres)
relatives au traitement des interruptions et
des sous-programmes
La pile est gérée en LIFO : (Last IN First
Out) dernier entré premier sorti. Le
fonctionnement est identique à une pile
d'assiette
Le pointeur de pile SP pointe le haut de la
pile (31000H dans le schéma), il est
décrémenté avant chaque empilement, et
incrémenté après chaque dépilement.
Il existe deux instructions pour empiler et
dépiler : PUSH et POP.
7/13 Chapitre 2 : Le Microprocesseur
Exemple:
PUSH A empilera le registre A et POP A le dépilera. Sur la figure ci-dessous, on va montrer le
fonctionnement de la pile lors d'instructions comme PUSH et POP.
Question :
Que se passera-t-il durant l'exécution du programme commençant en 12E30H? Que vaudra SP et que
contiendra la pile à cette adresse, à la fin du programme ?
Réponse :
Le programme commence par sauvegarder le contenu de C dans la pile (PUSH C). Pour cela (SP) est
décrémenté de deux ((SP)=31000H-2=30FFEH),
puis on effectue l'écriture de (C) dans la mémoire
à l'adresse (SP) : (30FFEH) = 6142H.
Pour PUSH A on obtient : (30FFCH)=1234H, et
pour PUSH B : (30FFAH)=2D5AH.
Pour l'instruction POP B, ((SP)) est chargé dans
le registre B ((SP)=30FFAH ; (B)=2D5AH) puis
(SP) est incrémenté de deux ((SP)=
30FFAH+2=30FFCH).
Enfin, pour POP A on obtient : (A)=1234H et
(SP)=30FFCH + 2 = 30FFEH
D) Les registres d'index
(index source SI et
index destination DI)
Les registres d’index peuvent être utilisés
comme des registres généraux pour
sauvegarder et pour compter. Mais en
plus ils ont une fonction spéciale qui est
de grande utilité dans la manipulation
des tableaux de données. Ils peuvent en
effet être utilisés pour manipuler des
adresses et permettent de mémoriser une
adresse, suivant une forme particulière
d’adressage, appelée adressage indexée.
Exemple : MOV A,[SI+10000H] place le
contenu de la mémoire d'adresse
10000H+le contenu de SI, dans le
registre A.