Академический Документы
Профессиональный Документы
Культура Документы
Recherche
instruction
Recherche
opérandes
Exécution
Ecriture
résultat
4. 1
Etapes d'exécution des instructions
• Le CPU fait une boucle sans fin pour exécuter le programme chargé
en mémoire centrale
• Chaque étape correspond à une modification d'un composant du
chemin de données (la mémoire ou les registres)
• Les étapes dépendent de l'instruction à exécuter : opération à
effectuer et mode d'adressage
• Quelle que soit l'architecture, on retrouve des étapes similaires
(même fonction) mais les étapes dépendent du chemin de données
4. 2
Etapes d'exécution des instructions
lecture en lecture du ou
mémoire instruction des opérandes écriture des résultats
à l'adresse PC
lecture et
interprétation
des champs
d'instruction calculs
4. 3
Etapes d'exécution des instructions
● Lecture d’instruction
• Charger le 1er mot d'instruction de la mémoire principale vers le registre d'instruction
● Décodage
• Lecture éventuelle des autres mots d'instruction (selon le format)
• Ces valeurs sont stockées dans l'unité centrale dans des registres internes (registre
d'opérande et de données)
● Recherche d’opérandes
• Accès aux registres (si mode registre)
• Calcul d’adresse et recherche d’opérandes mémoire (si mode mémoire)
● Exécution
• Calcul dans l’ALU pour les instructions arithmétiques ou logiques
• Calcul de l’adresse de branchement pour les instructions de contrôle
● Ecriture résultat
• Modification de l’opérande destination pour les instructions arithmétiques ou logiques
• Modification de PC pour les instructions de contrôle
4. 4
Etapes d'exécution des instructions
Exemple : PROCSI
RD1 RD2
R/Wreg
SR REG CSreg
3
SP ROP PC IR
BUS
16
DATA_BUS
RAD
ADDRESS_BUS
AS
MEMOIRE DS
contrôle
R/W
instructions données
4. 5
Etapes d'exécution des instructions
Exemple de décomposition en étapes pour PROCSI
4. 6
Etapes d'exécution des instructions
ADD R2, #80
RD1 RD2
R/Wreg
6
REG CSreg
SR
3
PC + 1
SP ROP PC IR
BUS
000000 0100X010
16
DATA_BUS
1) Lecture instruction
RAD
ADDRESS_BUS
AS
Légende :
MEMOIRE DS en 1er
PC:000000 0100X010
R/W
en 2ème
80
instructions données en 3ème
4. 7
Etapes d'exécution des instructions
RD1 RD2
R/Wreg
6
REG CSreg
SR
3
80 PC + 1
SP ROP PC IR
000000 0100X010
BUS
16
2) décodage
RAD DATA_BUS
ADDRESS_BUS
AS
MEMOIRE DS
PC :000000 0100X010
80 R/W
instructions données
4. 8
Etapes d'exécution des instructions
6 80
RD1 RD2
R/Wreg
010 6
REG CSreg
SR
3
SP ROP PC IR
000000 0100X010
BUS
16
3) recherche opérande
RAD 17 DATA_BUS
ADDRESS_BUS
AS
MEMOIRE DS
4. 9
Etapes d'exécution des instructions
86
RD1 6 RD2 80
R/Wreg
6
REG CSreg
SR
+ 3
SP ROP PC IR
BUS
16
DATA_BUS
RAD 17 4) Exécution
ADDRESS_BUS
AS
MEMOIRE DS
4. 10
Etapes d'exécution des instructions
RD1 RD2
86
R/Wreg
86 6
010 REG
SR CSreg
3
SP ROP PC IR
BUS
16
5) Ecriture résultat
RAD 17 DATA_BUS
ADDRESS_BUS
AS
MEMOIRE DS
4. 11
Etapes d'exécution des instructions
Exemple de décomposition en étapes pour PROCSI
4. 12
Etapes d'exécution des instructions
2. Cycle d'exécution pipeline
Durée : 3 mn
Sens du parcours Eve
Julie
Anne
Pour manger :
- il faut passer par tous les stands,
- 4 personnes sont servies en même temps. Aladin
4. 13
Etapes d'exécution des instructions
i+2: 2 2 2 2 12 ns
4. 14
Etapes d'exécution des instructions
Contraintes pour que le pipeline soit efficace :
– chaque étape a la même durée : pas d'embouteillage !
– chaque instruction passe par les mêmes étapes : contrôle simplifié,
pas de trou dans le pipeline !
i+2: 1 1 1 1
4. 15
Etapes d'exécution des instructions
4. 16
Etapes d'exécution des instructions
4. 17
Etapes d'exécution des instructions
Numéro d’instruction
Etages d’exécution
i: LI DE CA ER
4. 18
Etapes d'exécution des instructions
Exemples de pipeline
• Pentium 4 : 20 étages
• AMD 64
– 12 étages pipeline entier et 17 étages pipeline flottant,
– 8 premiers étages = "Fetch/Decode" + "Pack/Decode" et "Dispatch",
communs aux entiers et aux flottants
• ARM
– ARM 7, 3 niveaux (lecture d'instruction, décodage, exécution)5
– StrongARM (ARM 8, 9 et SA-1) 5 niveaux (lecture d'instruction, lecture
des registres et test de branchement, exécution, écriture cache, écriture
registre)
4. 19
Etapes d'exécution des instructions
4. 20
Etapes d'exécution des instructions
Exemple : Exécution de «add R2,R1,R2» suivi de «add R3,R4,R5»
R2 <-R1 + R2 R3 < - R4 + R5»
LI DE CA ER
ALU
PC
Inst Données
Registres R1=10
Mémoire R2=8
R3=0
R4=6
R5=3
4. 21
Etapes d'exécution des instructions
Exécution de «add R2,R1,R2» suivi de «add R3,R4,R5» TOP 1
LI DE CA ER
R2
add R2,R1,R2
R1
R2
Add
ALU
PC
Inst Données
Registres R1=10
Mémoire R2=8
R3=0
R4=6
R5=3
4. 22
Etapes d'exécution des instructions
Exécution de «add R2,R1,R2» suivi de «add R3,R4,R5» TOP 2
LI DE CA ER
R5
8
add R3,R4,R5
R4
accès à R1
10
et R2
R2
R3
Add
Add
ALU
PC
Inst Données
Registres R1=10
Mémoire R2=8
R3=0
R4=6
R5=3
4. 23
Etapes d'exécution des instructions
Exécution de «add R2,R1,R2» suivi de «add R3,R4,R5» TOP 3
LI DE CA ER
18
3
10 + 8
R2
accès à R4
6
et R5
R3
Add
Add
ALU
PC
Inst Données
Registres R1=10
Mémoire R2=8
R3=0
R4=6
R5=3
4. 24
Etapes d'exécution des instructions
Exécution de «add R2,R1,R2» suivi de «add R3,R4,R5» TOP 4
LI DE CA ER
9
6+3 accès à R2
R3
Add
ALU
PC
Inst Données
Registres R1=10
Mémoire R2=8 18
R3=0
R4=6
R5=3
4. 25
Etapes d'exécution des instructions
Exécution de «add R2,R1,R2» suivi de «add R3,R4,R5»
TOP 5
LI DE CA ER
accès à R3
ALU
PC
Inst Données
Registres R1=10
Mémoire R2=18
R3=0 9
R4=6
R5=3
4. 26
Etapes d'exécution des instructions
3. Aléas du pipeline
L'exécution en parallèle rend le contrôle de l'exécution plus complexe :
4. 27
Etapes d'exécution des instructions
Exemple:
ADD R1, R2, R3
SUB R4, R1, R5 Ecriture de R1
lecture de R1
4. 28
Etapes d'exécution des instructions
ADD LI DE CA ER
SUB LI DE CA ER
lecture de R1
Ecriture de R1
ADD LI DE CA ER
SUB LI susp susp DE CA ER
lecture de R1
4. 29
Etapes d'exécution des instructions
Solution 2 : bypass
LI DE CA ER
3
8
8+0
accès à R1
8
R6
et R5
R1
Add ALU
PC
4. 30
Etapes d'exécution des instructions
Exemple de bypass avec l'ARM SA-110
Programme
LDR r1,[r0 + 4]
MOV r2,r1
4. 31
Etapes d'exécution des instructions
3.2. Aléas de contrôle
Les instructions qui suivent une instruction de branchement (jmp) ne doivent pas
être exécutées.
Pourtant, elles sont dans le pipeline suspension du pipeline
i : jmp 360 LI DE
i+1 LI
i+2
i+3
4. 32
Etapes d'exécution des instructions
A la fin de l’étage ER du jmp, on connaît l’adresse de branchement (PC a été modifié)
→ l’exécution peut reprendre à l'adresse de branchement
H 1 2 3 4 5
i : jmp 360 LI DE CA ER
i+1 LI susp susp
i+2 susp susp
i+3 susp
inst 360 LI DE CA ER
Pénalité de 3 tops d’horloge !!!
4. 33
Etapes d'exécution des instructions
Solution : branchement avec délai
jmp 360 LI DE CA ER
i+3 susp LI DE CA ER
inst 360
4. 34
Etapes d'exécution des instructions
Branchement avec délai : Optimisation de code
ADD R1,R2,R3
jmp boucle jmp boucle
NOP ADD R1,R2,R3 Généré par compilateur
4. 35
Etapes d'exécution des instructions
Branchement avec délai: cas des branchements conditionnels (bcc)
on sait dans l’étage DE du bcc si le branchement doit être pris ou non
→ avec le délai, on n'a aucune suspension dans le cas où le branchement est pris
Bcc 360 LI DE CA ER
4. 36
Etapes d'exécution des instructions
4. 37
Etapes d'exécution des instructions
Branchement conditionnel avec délai: Optimisation de code
Prédiction STATIQUE
pas de dépendance entre inst. avant dépendance entre inst. avant et dépendance entre inst. avant et
et condition de test condition de test. condition de test.
spéculation branch pris spéculation branch non pris
4. 38
Etapes d'exécution des instructions
Prédiction de branchement DYNAMIQUE : (bas niveau, par la partie contrôle)
P FP FNP NP
4. 39
Etapes d'exécution des instructions
Pourquoi tant de mal?
4. 40
Etapes d'exécution des instructions
4. Une version pipeline de PROCSI: PIPSI
4. 41
Etapes d'exécution des instructions
FEtch DEcode EXecute ECriture
RD1
RD2
resex
PC Pcde Pcex
+2
Irde Irex
Data-out
IR
Data-in
Data_high
Data_low
Adress
out2
out1
Address
3
3 in 3
Ad-read1 Cache
Cache REG
Ad-read2 données
instruction
Ad-write
4. 42
Etapes d'exécution des instructions
FE DE EX EC
accès mémoire inst. recherche calculs écriture reg
1er mot dans ir d'opérandes lecture mém. data écriture mém. data
2ème mot dans rop
add R7, #1 FE DE EX EC
ir <- memi[pc] rd1 <- rop resex <- rd1 + rd2 reg[irex[0..2]] <- resex
rop <- memi[pc+1] rd2 <- reg[ir[0..2]] pcex <- pcde
pcde <- pc
pc <- pc + 2 irex <- irde
irde <- ir
ropex <- ropde
ropde <- rop
store [80], R0 FE DE EX EC
ir <- memi[pc] rd1 <- reg[ir[3..5]] resex <- rd1 memd[ropex] <- resex
rop <- memi[pc+1] pcde <- pc pcex <- pcde
pc <- pc + 2 irde <- ir irex <- irde
ropde <- rop ropex <- ropde
4. 43