Vous êtes sur la page 1sur 9

Chapitre :

Unité centrale de traitement (Micro-pro


ocesseur)

1. Expliquer
xpliquer les phases d’exécution d’une instruction.
2. S’initier
’initier avec la programmation en langage
Objectifs du chapitre : assembleur simple.
3. Apprendre à effectuer la trace d’un
un programme en
langage assembleur.
Registre de la CPU, Jeu eu d’instructions, Cycle
instruction, Cycle machine, Cycle de recherche, Cycle
Mots clés du chapitre : d’exécution, Séquenceur, Compteur ompteur ordinal,
Accumulateur, Registre instruction. Branchement
B
conditionnel et inconditionnel.

1. INTRODUCTION
2. REGISTRES DE LA CPU :
3. JEU D’INSTRUCTION
3.1. Définitions
Eléments de contenu : 3.2. Typologie des instructions
4. UNITE DE COMMANDE :
5. UNITE ARITHMETIQUE ET LOGIQUE
6. CYCLE INSTRUCTION
7. EXEMPLE DE JEU D’INSTRUCTIONS A UNE ADRESSE
DRESSE

1. Introduction
L’unité centrale de traitement se compose de deux unités fonctionnellement séparées :
l’unité arithmétique et logique (UAL) et l’unité de commande ou de contrôle. L’UAL
est la zone du CPU où les opérations arithmétiques et logiques sont réalisées. L’unité
de commande dirige le fonctionnement de toutes les autres unités (UAL, mémoire,
entrées/sorties) en leur fournissant les signaux de cadence et de commande ; ses

1/9
circuits génèrent les signaux nécessaires à l’exécution de chaque instruction d’un
programme.

Le fonctionnement peut être décrit de la façon suivante : l’unité de commande va


chercher en mémoire centrale une instruction en envoyant une adresse et une
commande à la mémoire. L’instruction, enregistrée sous forme binaire à l’adresse
donnée, est transférée vers l’unité de commande, où son décodage permet de
déterminer l’opération demandée. Cette information est utilisée pour générer les
signaux nécessaires à l’UAL pour déclencher l’exécution de l’instruction. Les données
à traiter seront aussi cherchées en mémoire par l’unité de contrôle et transférées
directement à l’UAL.

2. Jeu d’instructions
2.1. Définitions
Jeu d’instruction (Instuction Set) :
Il représente l’ensemble des instructions qu’un processeur est capable d’exécuter.

Architecture RISC et CISC :


Selon que le nombre d’instructions, on distingue deux types d’architectures :
• Les Architectures RISC (Reduced Instruction Set Computer) préconisent un
petit nombre d’instructions élémentaires dans un format fixe, faciles à réaliser
dans le matériel et d’exécution rapide (typiquement, une instruction par cycle
machine).
• Les architectures CISC (Complex Instruction Set Computer), qui sont basées
sur des jeux d’instructions très riches de taille variable offrant aussi des
instructions composées telles la racine carrée ou la multiplication en virgule
flottante avec double précision.

2.2. Typologie des instructions


Les instructions qu’on trouve dans les répertoires de toutes les machines, peuvent être
classées en six groupes :
• Transfert de données : tels que les transferts de registre à registre ou de
mémoire (MC) à registre, etc.
• Opérations arithmétiques : comme les quatre opération en virgule fixe ou
flottante en simple ou double précision.
• Opérations logiques : telles que AND, OR, NOT, Comparaison de bits, etc.
• Contrôle de séquence : comme les branchements impératifs et conditionnels,
boucle, etc.
• Entrée/Sortie : instruction de dialogue avec les périphériques.
• Manipulations diverses : telles que les décalages, conversions de format,
incrémentation de registres, etc.

2/9
3. Registres de la CPU :
Lorsque le processeur exécute les instructions, il a besoin de stocker temporairement
certaines informations (telle que l’adresse d’un mot mémoire à lire) dans des registres
mémoire qui ont la particularité d’avoir un temps d’accès plus rapide que celui de la
mémoire.

Suivant le type du processeur, le nombre de registre peut varier d’une entre une
dizaine et plusieurs centaines. Les registre les plus importants sont détaillés dans ce
qui suit.

Compteur ordinal (CO) :


Le registre CO (Program Counter = PC) Contient toujours l’adresse en mémoire de la
prochaine instruction à exécuter. Le CO est automatiquement incrémenté après chaque
utilisation. Le programme est ainsi exécuté en séquence à moins qu’il ne contienne une
instruction modifiant la séquence, par exemple, une instruction de saut ou un
branchement. Dans ce cas, la nouvelle adresse remplacera le contenu du CO. La taille
du CO dépend du nombre de positions de mémoire adressables. Par exemple avec un
CO de 16 bits on peut adresser une mémoire de 216 mots. Le programmeur n’a pas
accès au CO directement.

Registre instruction (RI) :


Lorsque la CPU va chercher une instruction en mémoire, il la place dans le RI. La
taille du RI correspond à la taille du mot-mémoire. Le programmeur n’a pas accès au
RI. Les bits correspondant à la zone « code opération », sont envoyés au décodeur
pour qu’il détermine l’opération à exécuter.

Registre Temporaire (RT) :


C’est un registre qui peut être utilisé comme registre intermédiaire. Il sert surtout,
comme espace de rangement d’opérandes. Dans un processeur on peut trouver
plusieurs registres temporaires.

Accumulateur (ACC) :
L’accumulateur est registre très important de l’UAL. Dans la plupart des opérations
arithmétiques et logiques, l’ACC 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. Il est accessible par programmation.

Registre d’état (RE, PSW = Program Status World) :


Appelé aussi registre condition, le registre d’état contient différents bits appelés
drapeaux (flags) indiquant l’état d’une condition particulière dans la CPU.
Par exemple, le bit indicateur Z indique si le résultat de l’opération effectuée est égal à
zéro ; le bit indicateur C indique un dépassement de capacité dans l’ACC, etc. Ces bits
peuvent être testés par programme et ainsi déterminer la séquence d’instructions à
suivre. Ils sont aussi utilisés par la CPU pour tester, par exemple, l’indicateur Z pour
l’exécution d’un branchement conditionnel saut si zéro (jump on zero).

3/9
4. Unité de commande
Les principaux dispositifs de l’unité de commande qui entrent en jeu lors de la
recherche en mémoire et du décodage d’une instruction, sont :
• Le compteur ordinal (CO) ;
• Le registre instruction (RI) ;
• Le décodeur de code opération ;
• Le séquenceur ;

Le décodeur :
On connaît déjà les circuits décodeurs, ils permettent d’activer pour chaque état de ses
lignes d’entrées, une ligne en sortie différente.
Le décodeur de code opération, détermine quelle opération doit être effectuée, parmi
toutes les opérations possibles. Ses sorties seront passées vers le séquenceur.

Séquenceur :
On sait qu’une instruction se fait généralement en plusieurs étapes (avec une séquence
précise), par un ensemble de sous circuits de l’unité centrale. Seul est le séquenceur
qui connaît cette séquence. Il génère et dis tribut les signaux de commande qui
permette d’actionner en séquence les circuits concernés. Le séquenceur ne peut être
qu’un circuit séquentiel (à mémoire) et il a donc lui même une entrée de commande,
qui doit être par une horloge.

5. Unité arithmétique et logique


On à déjà réaliser une UAL, dans le chapitre circuits de base. Elle possède un
ensemble d’entrées de commande qui lui parviennent du séquenceur. Les opérandes
sur lesquelles doivent se faire les instructions sont mis à sa disposition via des registres
temporaires (parmi ces registre on peut trouver l’ACC). Ces registres sont nommés
registre d’entrée de l’UAL. Le registre de sortie de l’UAL qui va accueillir le résultat
de l’opération est généralement le registre accumulateur (bien sur après ordre de
mémorisation provenant du séquenceur. Elle génère aussi les bits indicateurs de
débordement et de comparaison et qui seront rangés dans le registre d’état.

4/9
Registres
d’entrée de

Micro Registre
commande d’état
s

Registres de
sortie de
Figure 1 : Schéma de principe d’un UAL.

6. Cycle instruction
Le cycle d’instruction n’est autre que le temps nécessaire que prennent les différentes
phases d'une instruction pour s’exécuter.

6.1. Cycle machine versus cycle instruction

Cycle machine

1 2 3 4 5 6 7 8
Impulsions
d’horloge

Cycle de Cycle Cycle de


recherche d’exécutio recherche
n
Cycle instruction

Figure 2 : Cycle machine versus cycle instruction.

Les signaux périodique générés par l’horloge définissent le cycle de base ou cycle
machine, durée élémentaire régissant le fonctionnement de la machine.
Un cycle instruction est composé d’un cycle de recherche et d’un cycle d’exécution et
peut s’étendre sur plusieurs cycles machine.

5/9
6.2. Cycle de recherche et cycle d’exécution
Un cycle d'instruction peut se décomposer en un cycle de recherche et un cycle
d'exécution.
Cycle de recherche :
La circulation des informations pendant un cycle de recherche est illustrée dans la
figure suivante :

2
RA Mémoire RM
3

1
CO RI
4
Décodeur
5 4
Séquenceur

Horloge

Figure 3 : Cycle de recherche d’une instruction


1) Transfert de l’adresse de la nouvelle instruction à exécuter, du CO vers le RA.
2) Lecture de l’instruction à exécuter à partir de la mémoire et son rangement dans
le registre mot.
3) Transfert de l’instruction dans le RI.
4) Le code de l’opération est transmis au décodeur qui détermine le type
d’opération demandée et le transmet au séquenceur. Ce dernier génère par suite
le signal de commande nécessaire pour envoyer l’adresse de l’opérande à partir
du RI vers RA si nécessaire.
5) Sous l’ordre du séquenceur et s’il ne s’agit pas d’opération de branchement, le
compteur ordinal (CO) est incrémenté en vue de préparer le cycle de recherche
suivant.

6/9
Le cycle d’exécution :
Le cycle de recherche est suivi par le cycle d’exécution durant lequel l’opération
spécifiée dans l’instruction est effectuée.

2
RA Mémoire RM

1 Accumulateur

3
Séquenceur UAL

Figure 4 : cycle d’exécution d’une instruction

1) le séquenceur commence à envoyer les signaux de commandes vers la mémoire


pour qu’elle copie l’opérande vers le registre mot RM et ce s’il s’agit d’une
opération arithmétique et logique.
2) Dans le cas d’une opération arithmétique et logique il y aura transfert du
contenu du RM vers l’UAL, et plus précisément vers l’accumulateur ou tout
autre registre affecté à l’opération spécifiée.
3) L’opération est effectuée sous le contrôle du séquenceur.

Un cycle d'instruction peut se décomposer en un cycle de recherche (instruction et


opérandes) et un cycle d'exécution.

7. Exemple de jeu d’instructions à une adresse


L’exécution d’un programme consiste à donner à la machine une séquence
d’instructions directement interprétables par elle. Obligatoirement les premiers
programmes étaient écrits en binaire. C’était une tâche difficile est exposée aux erreurs
car il fallait aligner des séquences de bits, dont la signification n’est toujours évidente.

Par la suite, pour faciliter le travail, les programmes ont été écrits en donnant
directement les noms (abrégés) des opérations. On les a appelés les codes
mnémoniques, car on pouvait facilement les mémoriser (par exemple ADD, DIV,
SUB, MOV, etc.). Les adresses des instructions et des variables pouvaient aussi être
données sous forme symbolique. Pour pouvoir utiliser ce genre de langage dit
d’assemblage, il fallait trouver le moyen de les convertir en langage machine. Le
programme qui assure la traduction d’un programme en langage d’assemblage (ou
assembleur), en un programme en langage machine, s’appelle assembleur.
7/9
Par la suite nous allons, considérer le jeu d’instruction suivant présenté en assembleur
et en langage machine :
Code Instruction
Langage Langage Signification
assembleur assembleur
Charge la valeur de la variable id_var dans le registre
LOAD id_var 0E
accumulateur
Additionne le contenu de l’accumulateur à la valeur de la
ADD id_var 1E
variable id_var
Réalise l’opération (contenu accumulateur –
SUB id_var 2E
valeur(id_var))
Réalise l’opération (contenu accumulateur *
MUL id_var 3E
valeur(id_var))
NOT id_var 4E Effectue le complément logique de valeur(id_var)
Stocke le contenu de l’accumulateur dans la variable
STORE id_var 5E
id_var
Effectue un saut inconditionnel à l’emplacement de
JMP Etiquette 3F
l’étiquette
Compare le contenu de l’accumulateur à la variable
id_var et met à un l’un des indicateurs du registre d’état :
• Z est mis à un si la comparaison mène à
l’égalité.
• G est mis à un, si le contenu de l’accumulateur
CMP id_var FE
est strictement supérieur au contenu de la
variable.
• B est mis à un, si le contenu de l’accumulateur
est strictement inférieur au contenu de la
variable.
Effectue un saut à l’emplacement de l’étiquette, si le bit
JZ Etiquette EF
Z du registre d’état est égal à 1
Effectue un saut à l’emplacement de l’étiquette, si le bit
JG Etiquette EE
G (Greater than) du registre d’état est égal à 1
Effectue un saut à l’emplacement de l’étiquette, si le bit
JB Etiquette FF
B (Below) du registre d’état est égal à 1
Application 1 :
Ecrire en langage assembleur, un programme qui permet de permuter cycliquement le
contenu de trois variables A, B, C en utilisant une variable intermédiaire D.

Exemple :
A B C
Avant exécution 5 10 12
Après exécution 12 5 10
Application 2 :
Soit le programme en langage assembleur suivant, utilisant trois variables A, B et C :
1. LOAD A
2. STORE C
3. LOAD B
4. STORE A
5. LOAD C
6. STORE B
8/9
Sachant que :
• Chaque variable est de taille deux octets.
• La taille d’un mot mémoire est de 2 octets.
• La taille d’une instruction est de 2 octets (code opération sur 1 octet et adresse
opérande sur 1 octets).
• Les données sont rangées dans la mémoire centrale à partir de l’adresse (1F)16 .
• Les instructions sont rangées à partir de l’adresse (F2)16.
1. Compléter le schéma suivant qui reflète le contenu de la mémoire centrale avant
l’exécution de ce programme:
Adresses Mémoire centrale Commentaire

(1F)16
(0010)16 Variable A
…….
(0022)16 Variable B
…….
... Variable C

(F2)16
... Instruction 1
…….
... Instruction 2
…….
... Instruction 3
…….
... Instruction 4
…….
... Instruction 5
…….
... Instruction 6

2. on se propose de réaliser la trace du programme :


a- Expliquer pourquoi juste après le chargement de ce programme et avant son
exécution, le compteur ordinal doit être initialisé par la valeur (F2)16
b- Compléter le tableau suivant :

Registres du CPU Mémoire centrale


CO ACC A B C
Après chargement du (F2)16 (0010)16 (0022)16
programme
Après l’instruction 1
Après l’instruction 2
Après l’instruction 3
Après l’instruction 4
Après l’instruction 5
Après l’instruction 6
c- Que fait ce programme ?

9/9

Vous aimerez peut-être aussi