Académique Documents
Professionnel Documents
Culture Documents
Wafa Makni
1
Introduction
• Le Processeur CPU est le cerveau de l'ordinateur,
• Il permet de manipuler des informations
stockées en mémoire.
2
Introduction
• Un microprocesseur est un circuit intégré
complexe.
• Il résulte de l'intégration sur une puce de
fonctions logiques combinatoires (logiques ou
arithmétique) et séquentielles (registres,
compteur, etc..).
• Il est capable d'interpréter et d'exécuter les
instructions d'un programme.
3
Introduction
• pour fonctionner, le processeur est cadencé
au rythme d'une horloge interne.
• La fréquence d'horloge (appelée également
cycle, correspondant au nombre d'impulsions
par seconde, s'exprime en Hertz (Hz) ).
• A chaque top d'horloge le processeur exécute
une action, correspondant à une instruction
ou une partie d'instruction.
4
Langage de programmation
5
Langage de programmation
• Le langage machine est le langage compris par
le microprocesseur.
• Ce langage est difficile à maîtriser puisque
chaque instruction est codée par une
séquence propre de bits.
• Afin de faciliter la tâche du programmeur, on
a créé différents langages plus ou moins
évolués.
6
Langage de programmation
• Le langage assembleur est le langage le plus «
proche » du langage machine.
• Il est composé par des instructions en général
assez rudimentaires que l’on appelle des
mnémoniques.
• Ce sont essentiellement des opérations de
transfert de données entre les registres et
l'extérieur du microprocesseur (mémoire ou
périphérique), ou des opérations arithmétiques
ou logiques.
7
Langage de programmation
• Chaque instruction représente un code
machine différent. Chaque microprocesseur
peut posséder un assembleur différent
• La difficulté de mise en œuvre de ce type de
langage, et leur forte dépendance avec la
machine a nécessité la conception de langages
de haut niveau, plus adaptés à l'homme, et
aux applications qu'il cherchait à développer.
8
Langage de programmation
• (C, Pascal, Java, etc…).
• Chaque instruction en langage de haut niveau
correspondra à une succession d’instructions en
langage assembleur.
• Une fois développé, le programme en langage de
haut niveau n’est donc pas compréhensible par le
microprocesseur.
• Il faut le compiler pour le traduire en assembleur
puis l’assembler pour le convertir en code
machine compréhensible par le microprocesseur.
Ces opérations sont réalisées à partir de logiciels
spécialisés appelés compilateur et assembleur.
9
Langage de programmation
10
Comparaison
Langage haut niveau / Assembleur
11
Langage assembleur
• Un langage assembleur est un langage de bas niveau qui
représente le langage machine sous une forme lisible par l’être
humain.
• le langage assembleur permet d’écrire les instructions du
microprocesseur en mnémoniques plutôt qu’en binaire (code
machine).
• Chaque microprocesseur a son propre langage machine Seul le
langage C est commun à tous.
12
Instructions
13
Instructions
Les instructions machine sont réparties selon les
types suivants:
• instructions de traitement ayant pour fonction
d'effectuer les opérations arithmétiques et
logiques
• instructions d'échange permettant le transfert
des données entre la mémoire et les unités
périphériques
• instructions de rupture de séquence ayant pour
rôle de modifier la séquence de déroulement des
instructions.
14
Instructions
En général, les instructions renferment les
informations suivantes:
• le code opération
• un ou des opérandes
• l'endroit où doit être rangé le résultat
• Elles peuvent aussi indiquer l'adresse de la
prochaine instruction.
15
Instructions
• Si le langage machine peut être différent d'une
machine à une autre, c'est que certaines
caractéristiques des instructions peuvent varier,
entre autres:
• La longueur de l'instruction (nombre de bits).
• Le nombre d'opérandes.
• La longueur de chaque opérande.
• La longueur du code d'opération.
• La nature des opérations possibles.
16
Format général d'une instruction.
❑ Format général d'une instruction à trois opérandes
18
Répertoire d'instructions
• L'ensemble des instructions qu'une machine peut exécuter
constitue son répertoire d'instructions ou jeu d'instructions.
• La longueur du code opération détermine le nombre
d'opérations différentes qui constituent le répertoire
• Plus le code opération est court, plus le répertoire sera limité.
• Il doit cependant contenir au moins une instruction pour:
communiquer avec l'extérieur
entrer et sortir des données
effectuer une rupture de séquence ou un test
19
Répertoire d'instructions
• À l'inverse, plus le code opération est long,
plus le répertoire d'instruction de la machine
est grand, ce qui permet d'ajouter au
répertoire de base d'autres instructions plus
sophistiquées, et par le fait-même, d'en
accroître la complexité le coût.
20
Répertoire d'instructions
Exemple:
21
Répertoire d'instructions
• Imaginons la même machine, mais avec 2
opérandes au lieu de 3.
• Les 18 bits de l'instruction pourraient, par
exemple, se répartir ainsi: 2 opérandes de 7
bits et un code d'opération de 4 bits
• nombre de cellules de mémoire adressables:
27 = 128
• cellules nombre d'instructions du répertoire:
24 = 16 instructions
22
Répertoire d'instructions
• Comme on le constate, le répertoire
d'instruction a doublé et le nombre de cellules
de mémoire adressables a quadruplé par
rapport à l'instruction à trois adresses.
• En fait, dans les instructions à 3 adresses, le
3ème opérande ne sert qu'à indiquer l'adresse
de rangement du résultat, puisque les
opérations logiques et arithmétiques
s'effectuent sur deux opérandes à la fois.
23
Les 3 bits du code d'opération permettent de disposer de 8 instructions
différentes.
Le répertoire pourrait être le suivant:
24
▪ la première colonne donne le code d'opération
binaire (sur 3 bits); chaque opération est
symbolisée par le mnémonique correspondant.
▪ Les lettres A, B et C désignent des adresses
symboliques et (A), (B) et (C) désignent le contenu
des cellules d'adresses A, B et C (les adresses
effectives).
▪ Les affectations sont représentées par <= :
▪ C <=(A) signifie de placer à l'adresse C le contenu de
la cellule d'adresse A.
25
Nombre d'opérandes
❑ Instruction à 4 adresses
Exemple : ADD X, Y, Z, W
L'instruction signifie: (Z) <= (X) + (Y) & (W)
▪ additionner les contenus des cellules de mémoire d'adresse X et Y
▪ placer le résultat de l'addition dans la cellule d'adresse Z,
▪ aller chercher la prochaine instruction à la cellule d'adresse W. 26
Nombre d'opérandes
❑ Instruction à 3 adresses
28
Nombre d'opérandes
❑ Instruction à une adresse
29
Instruction à une adresse
30
Nombre d'opérandes
❑ Instruction à 0 adresse
Le processeur à 0 adresse possède un accumulateur particulier qu'on
nomme pile.
▪ Une pile est un rangement par ordre chronologique.
Contrairement à un accumulateur ordinaire, placer une donnée
dans une pile ne détruit pas son contenu précédent.
▪ celui-ci sera plutôt repoussé au fond de la pile.
▪ Généralement, l'accès aux données se fait dans l'ordre inverse où
celles-ci ont été rangées dans la pile; on désigne souvent ce type
d'accès par le sigle anglais LIFO (Last In, First Out).
▪ Cela implique qu'on a accès qu'à la donnée qui est au sommet de
la pile (soit la dernière entrée) ou aux données se trouvant dans
des emplacements consécutifs à partir du sommet.
31
32
33
34
35
36
Les modes d’adressage
• Adressage implicite : L’instruction contient
seulement le code opération.
Exemple : NOT AX ; permet de complémenter le
contenu du registre AX.
• Adressage immédiat : La donnée est fournie
immédiatement après l’instruction
Exemple : MOV AL, 21h ; permet de transférer
21h dans le registre AL.
37
Les modes d’adressage
• Adressage d’un registre : La donnée est contenue
dans un registre.
Exemple : MOV AX, BX : charge le contenu du
registre BX dans le registre AX.
• Adressage direct ou étendu : L’instruction
comporte l’adresse effective de la case mémoire
où se trouve la donnée.
• Exemple : MOV BL, [0200h] ; transfère le contenu
de la case mémoire d’adresse 0200h vers le
registre BL.
38
Les modes d’adressage
• Adressage indirect par registre: indiquer une
adresse dans un registre
• MOV R3,[R2]
• Adressage relatif :l’adresse réelle, c’est
l’adresse indiquée dans l’instruction, ajoutée à
une adresse de référence contenue dans un
registre le plus souvent ou dans une case
mémoire particulière.
39
Architecture de base d’un
microprocesseur
• microprocesseur est construit de deux éléments principaux :
40
unité de commande
• l’unité de commande est responsable de la lecture en
d’exécution.
à un décodeur.
41
unité de commande
• Un registre qui s’appel compteur ordinal (CO) ou
le compteur de programme (CP ) : contient
l’adresse de la prochaine instruction à exécuter
(pointe vers la prochaine instruction à exécuter ).
Initialement il contient l’adresse de le première
instruction du programme à exécuter.
42
Unité de contrôle et commande
L’unité de décodage envoie la nature des opérations à effectuer vers le séquenceur qui va
ensuite générer les microcommandes nécessaires aux différents composants participant à
l’exécution de l’instruction en cours. 43
44
unité de commande
45
Unité de traitement
• Elle regroupe les circuits qui assurent les traitements
nécessaires à l'exécution des instructions :
• L’Unité Arithmétique et Logique (UAL) est un
circuit complexe qui assure les fonctions
logiques (ET, OU, Comparaison, Décalage ,
etc…) ou arithmétique (Addition,
soustraction).
46
Unité de traitement
• Le registre d'état est généralement composé de 8 bits.
Chacun de ces bits est un indicateur dont l'état dépend du
résultat de la dernière opération effectuée par l’UAL.
• On les appelle indicateur d’état ou flag ou drapeaux.
• Dans un programme le résultat du test de leur état
conditionne souvent le déroulement de la suite du
programme.
• On peut citer par exemple les indicateurs de :
• retenue (carry : C)
• retenue intermédiaire (Auxiliary-Carry : AC)
• signe (Sign : S)
• débordement (overflow : OV ou V)
• zéro (Z)
• parité (Parity : P)
47
Unité de traitement
• Les accumulateurs sont des registres de travail
qui servent à stocker une opérande au début
d'une opération arithmétique et le résultat à
la fin de l'opération.
48
49
Cycle d’exécution d’une instruction
Le traitement d’une instruction par le processeur
se décompose en trois étapes :
▪ Recherche de l’instruction
▪ Décodage de l’instruction
▪ Exécution de l’instruction
50
Cycle d’exécution d’une instruction
• Lors du premier cycle, le contenu du compteur
programme (PC) est déposé sur le bus des adresses
et envoyé vers la mémoire au moment approprié.
51
Cycle d’exécution d’une instruction
• Le microprocesseur lit alors l'information sur
le bus de données et la dépose dans un registre
interne appelé registre d'instruction (IR,
Instruction Register).
52
Cycle d’exécution d’une instruction
• Une fois que l'instruction se trouve dans IR,
l'unité de commande du microprocesseur la
décode et produit la séquence appropriée de
signaux internes et externes permettant son
exécution.
53
Cycle d’exécution d’une instruction
Phase 1 : Recherche de l'instruction à traiter
54
Cycle d’exécution d’une instruction
Phase 1 : Recherche de l'instruction à traiter
56
Cycle d’exécution d’une instruction
Phase 2 : Décodage de l’instruction et recherche de l'opérande
58
Cycle d’exécution d’une instruction
Phase 3 : Exécution de l'instruction et passer à l’instruction suivante
59
Pipeline
• Technique utilisée pour optimiser le temps
d’exécution d’un processus répétitif.
• Avec un pipeline, le processeur peut commencer à
exécuter une nouvelle instruction sans attendre que
la précédente soit terminée
• Plusieurs instructions se trouvent simultanément en
cours d'exécution au cœur du micro-processeur.
• Afin de mettre en œuvre un pipeline, la première
tâche est de découper l'exécution des instructions en
plusieurs étapes
60
Pipeline
61
Pipeline
62
Pipeline
▪ Pipeline
▪ Exemple: 5 étapes sont nécessaires pour traiter une instruction
• IF (Instruction Fetch) charge l'instruction à exécuter dans le pipeline.
• ID (Instruction Decode) décode l'instruction
• EX (Execute) exécute l'instruction (par la ou les unités arithmétiques et
logiques).
• MEM (Memory), accès mémoire en lecture ou écriture ;
• WB (Write Back) écriture du résultat d'une lecture ou d'un calcul dans
les registres.
63
Pipeline
64
Problèmes « aléas »
65
Problèmes « aléas »
• Lorsqu’un aléa se produit, cela signifie qu’une instruction ne peut
continuer à progresser dans le pipeline.
• Pendant un ou plusieurs cycles, l’instruction va rester bloquée
dans un étage du pipeline, mais les instructions situées plus en
avant pourront continuer à s’exécuter jusqu’à ce que l’aléa ait
disparu.
• Plus le pipeline possède d’étages, plus la pénalité est grande.
• Les compilateurs s’efforcent d’engendrer des séquences
d’instructions permettant de maximiser le remplissage du
pipeline. Les étages vacants du pipeline sont appelés des « bulles
» de pipeline, en pratique une bulle correspond en fait à une
instruction NOP (No OPeration) émise à la place de l’instruction
bloquée.
66
Problèmes « aléas »
67
Pipeline
Exercice N1
68
Pipeline
Exercice N1
69
Pipeline
Exercice N1
70
Pipeline
Exercice N2
71
Pipeline
Correction de l’exercice
N2
72
Architecture CISC/RISC
• Actuellement l’architecture des
microprocesseurs se composent de deux
grandes familles :
• L’ architecture CISC (Complex Instruction Set
Computer)
• L’architecture RISC (Reduced Instruction Set
Computer)
73
Architecture CISC/RISC
74
Architecture CISC/RISC
75
La mémoire cache
▪ Le cache est une mémoire intercalée entre la mémoire centrale et
un processeur. Elle est souvent fabriquée avec de la mémoire
SRAM.
76
La mémoire cache
▪ Les mots de mémoire centrale les plus
fréquemment utilisés sont placés dans la
mémoire cache.
▪ Le processeur cherche d’abord la donnée ou
l’instruction dans la mémoire cache, en cas d’
échec le processeur fait accès à la mémoire
centrale est place l’information dans le cache.
▪ Ultérieurement si cette information est
demandée elle sera obtenue plus rapidement.
77
principe de cache
78
principe de cache
• Si la donnée ou l’instruction requise est présente
dans le cache, elle est alors envoyée directement
au microprocesseur.
=> On parle de succès de cache. (a)
si la donnée ou l’instruction n’est pas dans le cache,
le contrôleur de cache envoie alors une requête à la
mémoire principale. Une fois l’information
récupérée, il la renvoie au microprocesseur tout en
la stockant dans le cache. => On parle de défaut de
cache. (b)
79