Cycle recherche et exécution
1. Définition
Un ordinateur est une machine électronique capable de résoudre un problème en traitant un certain
nombre d'instructions, organisées en programmes.
Dès sa mise sous tension, l’ordinateur exécute, l'une après l'autre des instructions. Ces instructions lui
font lire, manipuler, puis réécrire un ensemble de données.
Les données à manipuler se trouvent généralement dans la mémoire, elles sont obtenues par la lecture de
composants d'interface (périphériques d’entrée). Une fois ces données utilisées, ou manipulées, les
informations obtenues sont transférées vers des périphériques de sortie.
2. Hiérarchie des langages
La résolution d’un problème donné revient à écrire une suite d’instructions. Cette suite d’instructions est
appelée programme. Pour être exécutable, un programme doit être converti en Langage Machine.
La Compilation est le fait de traduire un code source, écrit dans un langage de haut niveau facilement
compréhensible par l'humain, vers un langage de plus bas niveau, l’assembleur ou le langage machine.
Langage évolué → Assembleur → Langage Machine
La différence entre l’Assembleur et le Langage Machine est dans le fait que l’assembleur est intelligible
par l’humain alors que le langage machine est purement binaire (c’est le seul langage compréhensible par
la machine).
Cependant il existe une correspondance directe entre ces 2 langages :
à chaque opération de l’Assembleur correspond un code binaire.
les données et les adresses (qui sont des valeurs numériques) sont automatiquement converties en
binaire.
min() Read 101101110
{ 001011011
Compilation Store a,b
Int a,b,c ; Assemblage 111010101
Scanf(« %d »,a) ; 101010101
Read
Scanf(« %d »,b) ; 111010101
c=a+b ; Add a,b 100010110
Printf(« %d »,c) ; 111000001
} Print
010110110
3. Description d’un ordinateur
La première description d’un ordinateur avec mémoire a été élaborée par le mathématicien John Von
Newman au début du vingtième siècle.
L’architecture de Von Newman est composée d’une Mémoire Centrale et d’un Processeur composé lui-
même d’une Unité de Contrôle et d’une Unité Arithmétique et Logique( UAL)
1
Cycle recherche et exécution
Toutes les architectures qui ont succédé à l’architecture décrite par Von Newman sont globalement basées
sur cette dernière.
Ordinateur = Unité centrale de traitement (CPU) + Mémoire Centrale
CPU = Unité de contrôle + UAL
3.1 La mémoire centrale
Elle est composée de cellules ou cases capables d’enregistrer une information binaire. Cet ensemble de
cases est regroupé en mots mémoires. Chaque mot peut être contenu dans 8, 16, 32, … cases.
Chaque mot est référencé par un numéro appelé « adresse ». La mémoire centrale peut contenir deux
types d’informations : programmes et données.
2.2 Unité Arithmétique et Logique
Elle est composée de circuits dont le but est d’effectuer des opérations arithmétiques et logiques sur les
opérandes (données) tels que l’addition, la soustraction, le ET, le OU…etc
L’UAL comporte également deux registres :
l’Accumulateur : registre de travail qui sert à stocker un opérande en début et en fin d’opération.
le registre d’Indicateurs: met à jour à la fin de chaque opération les principaux indicateurs tels
que le débordement (overflow), la retenue (carry) ou encore le signe du résultat.
Généralement tous les circuits de cette unité ont 2 entrées et une sortie. Les 2 entrées du circuit reçoivent
les données d’une opération arithmétique ou logique et la sortie renvoie le résultat après exécution de
l’opération.
2.3 Unité de contrôle
Elle est composée de circuits logiques qui gèrent l’ensemble de l’ordinateur.
Cette unité nous permet de récupérer les instructions à partir de la mémoire centrale, de les traiter et de
restituer le résultat.
2
Cycle recherche et exécution
4. Schéma détaillé d’un ordinateur
4.1 Description générale d’une unité centrale
L'unité centrale (CPU) est le "cerveau" de l'ordinateur. Son rôle est d'exécuter les programmes stockés en
mémoire centrale en chargeant les instructions, en les décodant et en les exécutant l'une après l'autre.
L’unité de contrôle assure :
la recherche (lecture) de l’instruction et des données à partir de la mémoire,
le décodage de l’instruction en cours
prépare l’instruction suivante.
Les principaux dispositifs de cette unité sont :
Le Compteur Ordinal (C Ø) :
C’est un registre qui contient à tout moment l’adresse en mémoire centrale de l’instruction à chercher
pour être exécutée.
Le Registre d’Instruction (RI) :
Il reçoit l’instruction qui doit être exécutée. Il est composé de 2 parties, l’une contient le Code Opération
de l’instruction et l’autre contient l’adresse de l’opérande (ou l’opérande)
Le Décodeur de Code Opération :
Il détermine quelle opération doit être effectuée. Il est directement connecté à l’UAL
3
Cycle recherche et exécution
Le Séquenceur :
C’est un automate qui génère les signaux de commande pour contrôler l’exécution d’une instruction. Il
est généralement décrit par un registre à décalage circulaire dont un seul bit est égal à 1
Bascule
T
0 0 0 0 1
t4 t3 t2 t1 t0
Registre à décalage cyclique à 5 bits
4.2 Fonctionnement
Le traitement d’une instruction est décomposé en deux phases :
La phase 1 ou cycle recherche consiste à rechercher l’instruction et décoder l’opération à réaliser.
La phase 2 ou cycle exécution consiste à exécuter l’instruction.
Chaque cycle comporte un certain nombre d’opérations élémentaires appelées micro opérations. Ces
micro opérations sont contrôlées par le séquenceur et exécutées dans un ordre bien précis.
Une fonction F est ajoutée au séquenceur pour déterminer le cycle en cours.
F = 0 → cycle recherche et F = 1 → cycle exécution
F est représenté par une bascule T dont l’entrée est connectée à t4.
4
Cycle recherche et exécution
4.3 Déroulement d’une instruction d’addition en mode direct
Cycle Recherche (rechercher l’instruction à traiter)- F = 0
_
F t0 : MAR ← (CO) (mettre le contenu du CO dans le registre MAR)
_
F t1 : MBR ← Mot (lecture de l’instruction à partir de la mémoire)
_
F t2 : RI ← (MBR) (transfert du contenu du MBR dans le registre RI)
_
F t3 : CO ← (CO) + 1
_
F t4 : F ← 1 (passer au cycle exécution)
Cycle exécution (exécution de l’instruction)- F = 1.
F t0 : MAR ← (RI : ADR) (mettre la partie Adresse du RI dans le registre MAR)
F t1 : MBR ← Opérande (lecture de l’opérande à partir de la mémoire)
F t2 : UAL ← (MBR) (envoi de l’opérande vers l’UAL)
F t3 : Acc ← (Acc) + (MBR) (additionner le contenu de l’Acc et le contenu du MBR)
F t4 : F ← 0 (passer au cycle recherche)
Cette instruction (addition) se décompose en 10 micro opérations.
Les micros opérations sont des opérations câblées pendant lesquelles les informations sont transférées
de registre à registre ou de registre à mémoire à travers des lignes de bus.
Elles sont contrôlées par la combinaison de F et des ti . Une seule micro opération est exécutée à la fois et
dure une période.
Si par exemple F = 0 et t1 = 1 c’est seulement la 2eme micro opération du cycle recherche qui sera
sélectionnée car :
_
F t1 = 1
F = 0 donc aucune opération du cycle exécution n’est sélectionnée.
t1 = 1 donc ∀i ≠ 1, ti = 0 d’où F t0 = F t2 = F t3 = F t4 = 0
Le cycle recherche est le même pour toutes les instructions.
Le cycle exécution varie selon l’opération à exécuter.
5
Cycle recherche et exécution
5. Les instructions
Chaque microprocesseur possède un nombre limité d’instructions qu’il peut exécuter. Ces instructions
s’appellent jeu d’instructions.
Les instructions peuvent être classifiées en 4 catégories :
Instruction d’affectation : elle permet de faire le transfert des données entre les registres et la
mémoire
Instructions arithmétiques et logiques (ET, OU, ADD,….)
Instructions de branchement (conditionnel et inconditionnel)
Instructions d’entrées sorties.
5.1 Codage d’une instruction
Les instructions sont stockés dans la mémoire.
Généralement la taille d’une instruction est égale à la taille d’un mot mémoire.
L’instruction est découpée en deux parties :
Code opération qui indique quelle instruction exécuter.
L’opérande : qui contient la donnée ou l’adresse de la donnée concernée par l’opération à
exécuter.
Le champ opérande peut être découpé à son tour en plusieurs champs.
Machine à 3 adresses (3 opérandes)
Code opération Opérande 1 Opérande 2 Résultat
Exemple : ADD A, B, C (C←A+B)
Machine à 2 adresses (2 opérandes)
Code opération Opérande 1 Opérande 2
Exemple : ADD A, B ( B ← A+B )
Machine à 1 adresse (1 opérande)
Dans ce type de machine, pour chaque instruction, il faut préciser uniquement l’adresse du deuxième
opérande. Le premier opérande est supposé déjà disponible dans le registre Accumulateur.
Le résultat de l'opération est placé dans le registre Accumulateur. L'ancien contenu de celui-ci est alors
écrasé.
Code opération Opérande 1
6
Cycle recherche et exécution
5.2 Mode d’adressage
Le champ opérande contient la donnée ou la référence (adresse) à la donnée.
Le mode d’adressage définit la manière dont le microprocesseur va accéder à l’opérande.
Le code opération de l’instruction comporte un ensemble de bits pour indiquer le mode d’adressage.
Adressage immédiat
L’opérande existe dans le champ adresse de l’instruction.
Ex : ADD 150, IMM Acc ← (Acc) + 150 Au contenu de l’Accumulateur on ajoute 150
Adressage direct
Le champ opérande de l’instruction contient l’adresse de l’opérande (emplacement en mémoire)
Ex : ADD 150, D Acc ← (Acc) + (150) Au contenu de l’Accumulateur on ajoute le contenu de
l’adresse 150.
Adressage indirect
Le champ opérande de l’instruction contient l’adresse de l’adresse de l’opérande.
Pour réaliser l’opération il faut :
Récupérer l’adresse de l’opérande à partir de la mémoire.
Par la suite il faut chercher l’opérande à cette adresse
Exemple : ADD 150, IND Acc ← (Acc) + ((150)) Au contenu de l’Accumulateur on ajoute le
contenu du contenu de l’adresse 150.
5.2 Format d’une instruction
La mémoire de la machine étudiée est représentée par une RAM 1K x 16.
Chaque instruction est codée en binaire sur 16 bits selon le format suivant :
Le champ code opération est sur 4 bits (de 12 à 15).
On peut donc utiliser au maximum 16 opérations sur cette machine.
Chaque opération est représentée en machine par son code binaire
Le champ adressage est sur 2 bits (bits 10 et 11). On utilisera
7
Cycle recherche et exécution
00 pour l’adressage immédiat,
01 pout l’adressage direct
10 pour l’adressage indirect
Le champ opérande est sur 10 bits de ( 0 à 9).
Il contient généralement une adresse (binaire) ou parfois une donnée en adressage immédiat.
Un programme est représenté par une suite d’instructions
8
Cycle recherche et exécution
5.3 Jeu d’instruction (adressage direct)
Instructions Signification Code Opération
0 LOAD X, D Acc ← (X) 0000
1 STORE X, D Mémoire ← (Acc) 0001
2 ADD X, D Acc ← (Acc) + (X) 0010
3 SUB X, D Acc ← (Acc) - (X) 0011
4 MUL X, D Acc ← (Acc) x (X) 0100
5 DIV X, D Acc ← (Acc) / (X) 0101
6 AND X,D Acc ← (Acc) and (X) 0110
7 OR X,D Acc ← (Acc) or (X) 0111
8 CMP X,D Acc ← (X) 1000
9 XOR X,D Acc ← (Acc) xor (X) 1001
10 JMP X,D MAR ← (X) 1010
11 JE Sauter une instruction si (Acc) = 0 1011
12 JGE Sauter une instruction si (Acc) >= 0 1 1 0 0
13 JLE Sauter une instruction si (Acc) <= 0 1 1 0 1
14 READ Acc ← val du périphérique d’entrée 1 1 1 0
15 WRITE périphérique de sortie ← (Acc) 1111
5.4 Exemples
1) C:= A + B
LOAD A, D Acc ← (A)
ADD B, D Acc ← (A) + (B)
STORE C, D C ← (A) + (B)
2) C = A2 + B2 + 2 A B
LOAD A, D Acc ← (A)
MUL A, D Acc ← (A)2
STORE C, D Adr C ← (A)2
LOAD B,D Acc ← (B)
MUL B,D Acc ← (B)2
ADD C,D Acc ← (B)2 + (A)2
STORE C,D Adr C ← (B)2 + (A)2
LOAD A, D Acc ← (A)
MUL B, D Acc ← (A) x (B)
MUL 2, IM Acc ← 2 x (A) x (B)
ADD C, D Acc ← 2 x (A) x (B) + (B)2 + (A)2
STORE C, D Adr C ← 2 x (A) x (B) + (B)2 + (A)2
9
Cycle recherche et exécution
Exercice1 :
Soit le programme assembleur suivant :
100 LOAD 106, D
101 MUL 107,IND
102 ADD 10,IMM
103 STORE 108,D
104 LOAD 107,IND
105 SUB 109,D
106 2
107 109
108 0
109 4
Donner pour chacune des instructions de ce programme le contenu des registres après chacun des deux
cycles (Recherche et exécution)
10