Lunite de traitement

publicité
BTS IG 1 - L’unité de traitement
L'unité de traitement
I.
Introduction
Schéma n°1 vide.
L'architecture type d'un ordinateur classique s'articule autour de trois modules principaux
reliés entre eux par les bus. Ces trois modules sont :
 la mémoire centrale : composée de la mémoire vive (RAM) et de la mémoire morte (ROM)
dans laquelle sont stockées des données et des instructions en cours d'exécution ;
 l'unité centrale ou CPU (Central Processing Unit) qui assure principalement deux fonctions
: d'une part le traitement de l'information réalisé par l'unité arithmétique et logique (UAL)
et d'autre part le contrôle du fonctionnement des différents éléments de la machine pris en
charge par l'unité de commande ;
 les interfaces d'entrées-sorties qui permettent l'échange des données entre les périphériques
et l'ordinateur.
L'unité centrale est sans doute l'élément le plus important des trois. C'est lui, en effet, qui
interprète et exécute les programmes chargés dans la mémoire. C'est pourquoi on parle aussi
d'unité de traitement ou encore de microprocesseur pour la désigner.
Microprocesseurs : 80286, 80486, Pentium de la gamme Intel et 68030, 68040 de Motorola.
II.
Les registres
Ce sont des mémoires très rapides permettant à l'unité de calcul de traiter les données à grande
vitesse. Ils sont utilisés pour stocker les informations nécessaires aux traitements (des données
ou des adresses).
On distingue dans l'unité de traitement plusieurs types de registres.
A.
Le compteur ordinal
Le compteur ordinal (CO), appelé aussi compteur de programme ou compteur d'instruction,
permet de mémoriser l'adresse de la cellule mémoire qui contient la prochaine instruction à
exécuter.
Exemple :
mémoire principale
200
201
202
203




I1
I2
I3
I4
Considérons ce programme (suite d'instructions) contenu en mémoire principale qui
s'exécutera de façon séquentielle. Chaque instruction, avant son exécution, doit être fournie à
l'unité de commande. Le compteur de programme permet donc de donner l'adresse de la
cellule mémoire que l'on doit lire pour récupérer l'instruction. Ainsi, le PC va prendre
successivement les valeurs 200, 201, 202, 203 et en fin d'exécution la valeur 204.
Ce fonctionnement est identique lorsque le programme n'est pas séquentiel (branchement).
1
BTS IG 1 - L’unité de traitement
Le compteur de programme est fondamental dans l'architecture d'un processeur, il est
nécessaire à la procédure d'exécution des instructions d'un programme.
B.
Le registre d'état
Ce registre contient des informations qui lui sont fournies par l'Unité Arithmétique et
Logique. Ces informations sont des indicateurs d'états qui renseignent sur la façon dont s'est
déroulée une instruction.
C.
La mémoire ordinale
C'est un registre qui contient l'instruction qui est en cours d'exécution. Celle-ci est
décomposée en deux parties :
 la partie opération ou code opération qui contient la description de l'instruction (addition,
soustraction, etc.)
 la partie opérande ou adresse qui indique au processeur où se trouvent en mémoire les
données utiles au traitement.
La mémoire ordinale permet de mémoriser l'instruction en cours d'exécution. La première
partie de l'instruction (code opération) est stockée dans le registre d'instruction et la seconde
partie (adresse des opérandes) est stockée dans le registre d'adresse.
D.
Le registre d'adresse mémoire
Ce registre est placé entre la mémoire centrale et le bus d'adresse. Il contient pendant un laps
de temps très court une adresse qui est échangée entre la mémoire centrale et l'unité de
traitement.
III.
Les bus
Un bus est un ensemble de lignes (fils électriques) permettant l'échange et le transport des
informations au sein de l'ordinateur entre les différents organes de celui-ci.
A.
Le bus d'adresse
Bus sur lequel cheminent les adresses des mots mémoires à lire ou à écrire. Il aboutit sur un
décodeur d'adresse au niveau de la mémoire centrale. Ce décodeur permet de reconnaître
l'adresse de la cellule mémoire. Il permet ainsi de repérer le mot mémoire où une opération de
lecture ou d'écriture doit être faite.
bus d'adresse
CPU
D
E.
mémoire centrale
Le bus d'adresse permet de sélectionner un emplacement dans un composant tel que la RAM,
la ROM ou un autre boîtier extérieur à l'unité centrale. Cette sélection se fait à l'aide de deux
techniques.
2
BTS IG 1 - L’unité de traitement
1.
La sélection linéaire
C'est un système de moins en moins utilisé car il était utilisé pour des systèmes ayant de
faibles capacités de stockage. Prenons un système nécessitant 2 Ko de ROM et 4 Ko de RAM
et un bus d'adresse de 16 bits.
A15 A14 A13 A12 A11 A10 A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
sélection des
boîtiers d'E/S
sélection
RAM
sélection ROM
Avec ce système, on peut coder une adresse sur 12 bits, sélectionner une cellule en ROM, en
RAM, ou dans un autre boîtier.
Exemple : l'adresse 0001000000001010 indique que la dixième cellule de la ROM est
sélectionnée.
Cependant l'adresse sera incorrecte si la RAM et la ROM sont sélectionnées en même temps.
On peut, pour résoudre ce problème, utiliser un seul bit unique qui permettra la sélection de la
RAM ou de la ROM. Pour la sélection des périphériques on utilisera un décodeur à trois
entrées.
Application sur la sélection linéaire
Précisez quel boîtier et quelle case mémoire de ce boîtier sont sélectionnés avec les adresses
suivantes :
1) 0010000101100100 (RAM, cellule 000101100100)
2) 0100101000100011 (DD, cellule 101000100011)
3) 1000110000011100 (Disquette, cellule 110000011100)
Sachant que la sélection de la disquette se fait en codant 10 sur A15 et A14, et que la sélection
du disque dur se fait en codant 01 sur les deux premiers bits.
2.
Adressage décodé
A15 A14 A13 A12 A11 A10 A9
A8
A7
décodeur
3
A6
A5
A4
A3
A2
A1
A0
BTS IG 1 - L’unité de traitement
Voir schéma de fonctionnement d'un décodeur.
Application sur l'utilisation d'un décodeur
Précisez quel boîtier et quelle case mémoire de ce boîtier sont sélectionnés avec les adresses
suivantes :
1) 01101010 (boîtier 3, cellule 01010)
2) 11100011 (boîtier 7, cellule 00011)
3) 10011010 (boîtier 4, cellule 11010)
B.
Le bus de donnée
Sur ce bus transitent des données devant être lue ou écrite en mémoire centrale. La donnée est
temporairement déposée dans un mot mémoire tampon avant qu'elle soit écrite dans la
mémoire. En effet un certain temps doit s'écouler pour que la mémoire soit apte à recevoir la
donnée.
TAMPON
CPU
MEMOIRE
CENTRALE
Le nombre de fils du bus externe des données et la longueur des mots mémoire de la mémoire
centrale spécifient la nature du processeur. Lorsque le nombre de lignes du bus externe
correspond à la longueur du mot mémoire on parle de processeur "p bits". Ainsi, un bus de
données de 32 bits connecté à une mémoire de mots de 32 bits désigne un processeur 32 bits.
Par contre, si l'unité centrale peut traiter des données de 16 bits alors que le bus externe des
données n'est composé que de 8 fils, alors on a affaire à un faux processeur 16 bits. Dans ce
cas là, chaque mot mémoire est décomposé en deux mots de 8 bits, un de poids faible, l'autre
de poids fort. Lorsqu'un échange de données à lieu entre l'unité centrale et la mémoire, l'octet
de poids faible est d'abord placé sur le bus de données, et l'opération est ensuite répétée avec
l'octet de poids fort.
Le bus externe de données est relié au niveau de la mémoire à un multiplexeurdémultiplexeur, servant à aiguiller correctement l'octet de la donnée.
TAMPON
CPU
MUX
démultiplexage
multiplexage
XA
XB
MEMOIRE
CENTRALE
4
BTS IG 1 - L’unité de traitement
poids
fort
poids
faible
C.
Le bus de commande
C'est par l'intermédiaire de ce bus que l'unité de commande dialogue avec les différents
composants de la machine : mémoire, interface d'E/S, etc.
Sur ces lignes circulent :
 des informations d'ordre provenant de l'unité de commande (exemple : lecture, écriture)
 certains signaux émis par des organes externes au CPU et dont le traitement par l'unité de
commande est prioritaire (exemple : demande d'interruption).
Schéma de l'architecture élémentaire d'un processeur
bus de données
registre mot
de données
CPU
bus d'adresse
1
2
bus de commande
5
MEMOIRE
CENTRALE
BTS IG 1 - L’unité de traitement
IV.
L'unité arithmétique et logique
L'unité arithmétique et logique (UAL) ou unité de calcul, permet de :
- réaliser l'ensemble des opérations élémentaires arithmétiques et logiques,
- déplacer l'information à l'intérieur d'un registre,
- mettre à jour un certain nombre d'indicateur.
Structure de l'UAL.
Autres Registres
Accumulateur
Registre
d'Etat
U.A.L.
Bus de données
C'est un système à deux entrées et une sortie, toutes trois reliées au bus de données. L'entrée
gauche de l'UAL est conditionnée (reliée à) un registre A, appelé registre accumulateur. Avant
la réalisation d'une opération arithmétique ce registre contient une opérande. Lorsque le
traitement a lieu le résultat est transféré de nouveau dans le registre.
Avant une opération d'addition (3+4), une opérande est placée dans le registre A, l'autre est
reliée à l'entrée droite de l'UAL.
Après l'opération, le résultat est transféré par la sortie de l'unité de calcul vers le registre A. Le
registre d'état constitue le registre des indicateurs d'états. Son contenu est modifié par l'unité
arithmétique et logique lorsqu'elle effectue des traitements. Il permet d'apporter au
programmeur les éléments suffisants pour élaborer un diagnostic sur la validité de l'opération
effectuée par l'unité de calcul.
Dans ce registre, chaque bit joue un rôle important :
A.
Le bit Carry C (bit de retenue)
Il permet de mémoriser le p+1ème bit susceptible d'être généré lors d'une opération
arithmétique effectuée sur des mots de p bits.
Exemple : 111111 + 000001 = 100000.
Le dernier 1 est mémorisé dans le bit C.
6
BTS IG 1 - L’unité de traitement
B.
Le bit de signe S
Le bit S du registre d'état correspond au bit de poids le plus fort du résultat d'une opération
arithmétique : il vaut 1 si le résultat est négatif et 0 sinon.
C.
Le bit Z (zéro)
Ce bit est positionné à 1 lorsque le résultat d'une opération est nul sinon Z est mis à 0.
D.
Le bit de parité P
Ce bit est positionné à 1 chaque fois que le résultat d'une opération logique à une parité paire.
V.
Le séquenceur
En fonction de l'instruction à traiter, qui vient d'être chargée dans le registre d'instruction
(mémoire ordinale), l'unité de commande va devoir émettre un certain nombre de
microcommandes vers les autres composants du système.
Ces ordres ne devront pas être émis n'importe quand, ni vers n'importe quel composant, mais
respecter une chronologie bien précise suivant le type d'instruction à exécuter. Cette
chronologie (séquencement) est rythmée par une horloge interne au système. On peut
comprendre que plus la fréquence de l'horloge est élevée et plus l'unité centrale travaillera
vite.
Le composant qui va émettre les microcommandes, en fonction du code opération de
l'instruction en place dans le registre instruction, est le séquenceur qui comme son nom
l'indique envoie une séquence de microcommandes vers les composants impliqués par
l'instruction.
VI.
Le déroulement d'un programme
On peut dire que pour chaque instruction d'un programme on peut distinguer :
- une phase de recherche de l'instruction
- une phase de traitement de l'instruction.
Examinons de plus près chacune de ces deux phases à partir d'un exemple très simplifié de
fonctionnement, et, pour en faciliter la compréhension, nous utiliserons des mnémoniques
représentant chacune des microcommandes que le séquenceur pourra générer. Dans la réalité,
ces microcommandes sont des impulsions électriques émises par le séquenceur.
Sur le schéma de l'unité centrale vous pouvez observer que les microcommandes issues du
séquenceur sont des petites flèches, flèches que l'on retrouve au niveau des relations qui
interviennent entre les divers composants de l'UC et pointent sur une zone grisée.
Exemple : la microcommande que nous appellerons LCO (lecture du compteur ordinal) pointe
sur la zone grise de la liaison qui va du compteur ordinal au bis d'adresse. Elle autorise donc le
transfert du contenu du compteur ordinal sur le bus d'adresse.
Voyons désormais les microcommandes. (cf. tableau des mnémoniques).
7
BTS IG 1 - L’unité de traitement
A.
Recherche de l'instruction
Le programme à exécuter est chargé en mémoire centrale où il occupe un certain nombre de
cellules mémoire, chaque cellule mémoire ayant donc une adresse bien précise.
Le compteur ordinal est chargé, lors du lancement du programme, avec l'adresse de la
première instruction à exécuter. Ce chargement se fait grâce au système d'exploitation.
Le séquenceur, dans la phase de recherche de l'instruction à exécuter, va alors générer les
microcommandes destinées à placer l'instruction dans le registre instruction.
LCO
PSR
LEC
LMM
CRI
ICO
Compteur ordinal
Bus d'adresse
Mémoire centrale
Registre mot
Bus de données
Compteur ordinal +1
->
->
->
->
->
Bus d'adresse
Registre adresse mémoire
Registre mot
Bus de données
Registre instruction
C'est à dire qu'il va provoquer (LCO) le transfert de contenu du compteur ordinal, qui
rappelons le est à ce moment chargé avec l'adresse de la première instruction à exécuter, sur le
bus d'adresse.
L'adresse de cette première instruction est ensuite transmise (PSR) au registre adresse
mémoire, registre jouant le rôle d'aiguilleur (décodeur) indiquant à quelle case de la mémoire
centrale on doit aller lire.
La micro commande suivante (LEC) autorise la recopie de l'information (ici, une instruction)
dans le registre mot. Ce registre ne joue en fait que le rôle de temporisation. Le contenu de ce
registre mot est ensuite transféré sur le bus de données grâce à la microcommande LMM.
Une microcommande issu du séquenceur (CRI) va maintenant provoquer la recopie du
contenu du bus de données dans le registre instruction de la mémoire ordinale. A ce moment
l'instruction à exécuter se trouve placée dans le registre instruction et est prête à être décodée
et exploitée par le séquenceur. Celui-ci va ensuite générer de nouvelles microcommandes
nécessaires à son traitement.
Une dernière microcommande du séquenceur (ICO) va provoquer l'incrémentation du
compteur ordinal qui va maintenant pointer sur l'adresse de la prochaine instruction à
exécuter.
Cet ensemble de microcommandes, générant la phase de recherche de l'instruction, est à peu
près toujours le même et il sera donc répété dès que le traitement de l'instruction aura donné
lieu à l'envoi de la dernière microcommande nécessaire.
B.
Traitement de l'instruction
L'instruction, une fois chargée dans le registre d'instruction, va être soumise au décodeur, qui
associé au séquenceur va devoir analyser la partie opération de l'instruction pour ensuite
générer la série de microcommandes appropriées.
Prenons l'exemple de l'addition de deux nombres tels que 8 et 4 (nombres hexadécimaux)
stockés dans la mémoire centrale aux adresses F800 et F810. Le résultat devra ensuite être
placé en mémoire centrale à l'adresse F820.
8
BTS IG 1 - L’unité de traitement
Pour réaliser ce petit programme trois opérations successives sont nécessaires :
 charger la première donnée 8 placée dans la mémoire centrale à l'adresse F800 dans le
registre accumulateur,
 faire l'addition du registre accumulateur avec la donnée de trouvant à l'adresse F810 de la
mémoire centrale (le résultat de l'addition se trouve dans l'accumulateur),
 ranger ce résultat dans la mémoire centrale à l'adresse F820.
Le programme en "simili" langage assembleur serait le suivant :
LD A,(F800)
ADD A,F810
LD F820,A
Voici la liste des microcommandes générées pour la réalisation du programme précédent.
Veuillez expliquer chaque commande en précisant pour chacune d'elles son rôle et son
influence sur les données.
9
BTS IG 1 - L’unité de traitement
EXECUTION du programme
MicroAction ou Résultat
commande
générée
1ère Etape:
LCO
charge @ instruction sur bus adresse
Charger 1ère Instruction
PSR
charge @ instruction dans registre adr. mem.
LEC
écrit instruction dans registre mot
LMM
écrit instruction sur bus de données
CRI
charge instruction dans registre instruction
ICO
incrémente compteur ordinal
2ème Etape:
CAD
charge @ donnée sur bus adresse
Exécuter 1ère Instruction
PSR
charge @ donnée dans registre adr. mem.
LEC
écrit donnée dans registre mot
LMM
écrit donnée sur bus de données
CEB
charge donnée dans UAL
NOP
rien
CRA
charge donnée dans accumulateur
3ème Etape:
LCO
charge @ instruction sur bus adresse
Charger 2ème Instruction
PSR
charge @ instruction dans registre adr. mem.
LEC
écrit instruction dans registre mot
LMM
écrit instruction sur bus de données
CRI
charge instruction dans registre instruction
ICO
incrémente compteur ordinal
4ème Etape:
CAD
charge @ donnée sur bus adresse
Exécuter 2ème Instruction
PSR
charge @ donnée dans registre adr. mem.
LEC
écrit donnée dans registre mot
LMM
écrit donnée sur bus de données
CEA
charge donnée dans UAL
CEB
charge accumulateur dans UAL
ADD
additionne les deux données
CRA
charge résultat dans accumulateur
5ème Etape:
LCO
charge @ instruction sur bus adresse
Charger 3ème Instruction
PSR
charge @ instruction dans registre adr. mem.
LEC
écrit instruction dans registre mot
LMM
écrit instruction sur bus de données
CRI
charge instruction dans registre instruction
ICO
incrémente compteur ordinal
6ème Etape:
CAD
charge @ donnée sur bus adresse
Exécuter 3ème Instruction
PSR
charge @ donnée dans registre adr. mem.
EDA
charge accumulateur sur bus de données
EMM
écrit donnée dans registre mot
ECR
écrit donnée dans mémoire centrale
Exercice : réaliser le tableau de fonctionnement (microcommandes générées et explications)
pour le programme suivant : soustraire la donnée 3 qui se trouve à l'adresse F2 de la mémoire
à la donnée 4D qui se trouve à l'adresse B5 de la mémoire. Placer ensuite le résultat à l'adresse
E9 de la mémoire.
10
BTS IG 1 - L’unité de traitement
UNITE CENTRALE
valeur init
LCO
PSR
LEC
LMM
CRI
ICO
CAD
PSR
LEC
LMM
CEA
NOP
CRA
LCO
PSR
LEC
LMM
CRI
ICO
CAD
PSR
LEC
LMM
CEA
CEB
SUB
CRA
LCO
PSR
LEC
LMM
CRI
ICO
CAD
PSR
EDA
EMM
ECR
Bus
adresse
CO
Accum
MO
UAL A
UAL B
UAL S
0001
0001
x
x
x
x
x
x
0001
0001
MEMOIRE CENTRALE
Bus
données
Reg.
Adr.
0001
0002
0003
F2
B5
E9
Reg
mot
x
I1
I2
I3
3
4D
x
x
x
0001
I1
I1
I1
I1
I1
I1
0002
B5
B5
B5
B5
4D
4D
4D
4D
4D
4D
4D
4D
4D
4D
0002
0002
0002
0002
I2
I2
I2
I2
I2
I2
0003
F2
F2
F2
F2
3
3
3
3
4D
3
3
4D
4A
4A
4A
0003
0003
0003
0003
I3
I3
I3
I3
I3
I3
0004
E9
E9
E9
E9
4A
4A
11
4A
4A
4A
4A
BTS IG 1 - L’unité de traitement
Distribution du devoir à la maison.
Exercice
Quel sera le pseudo-code du programme qui permettra de réaliser l'opération suivante :
D=X+Y-Z?
Hypothèses : @ X = 8F, @ Y = 9D, @ Z = 77, @ D = 91.
Les adresses des instructions commencent à 100 et vont de 10 en 10.
Réponse
LD A,8F
ADD A,9D
SUB A,77
LD 91,A.
(@ 100)
(@ 110)
(@ 120)
(@ 130)
Ecrire la suite des micro commandes générées pour l'exécution de ce programme.
LCO
PRS
LEC
LMM
CRI
ICO
LCO
PRS
LEC
LMM
CRI
ICO
LCO
PRS
LEC
LMM
CRI
ICO
LCO
PRS
LEC
LMM
CRI
ICO
CAD
PSR
LEC
LMM
CEA
NOP
CRA
CAD
PSR
LEC
LMM
CEA
CEB
ADD
CRA
CAD
PRS
LEC
LMM
CEA
CEB
SUB
CRA
CAD
PRS
EDA
EMM
ECR
12
Téléchargement