[email protected] chapitre2 la technique du pipeline architecture des ordinateurs...
TRANSCRIPT
Chapitre2Chapitre2La technique du La technique du
PipelinePipelineArchitecture Des OrdinateursArchitecture Des OrdinateursMaster Info Première AnnéeMaster Info Première Année
Master1/IUP 3Master1/IUP 3
IntroductionIntroduction Idée : Ne pas attendre la fin de l ’instruction Idée : Ne pas attendre la fin de l ’instruction
pour démarrer une nouvellepour démarrer une nouvelle Découper l ’exécution de l ’instruction en Découper l ’exécution de l ’instruction en
phase +- indépendantes et de même phase +- indépendantes et de même degrés degrés de complexitéde complexité
–Si non perte de temps Si non perte de temps
A B C D
4 Paquets Laver Essorer Plier 30 mn 40mn 20mn
Solution naïve : Un paquet à la foisSolution naïve : Un paquet à la fois
A
B
C
D
30 40 20 30 40 20 30 40 20 30 40 20
6h 7h 8h 9h 10h 11h12h
Time
6h pour laver les 4 paquets
[email protected] Laver mes vêtements en pipeline: Laver mes vêtements en pipeline:
Possible mais !!Possible mais !!
Les 4 paquets sont lavés en 3.5h au lieu de 6hLes 4 paquets sont lavés en 3.5h au lieu de 6h
A
B
C
D
6 PM 7 8 9 10 11
Time
30 40 40 40 40 20
Perte de temps à transférer les paquets
Appliquant le principe à Appliquant le principe à l’architecturel’architecture
Rappel :Rappel :
L’exécution de l’instruction se fait toujours en 5 étapesL’exécution de l’instruction se fait toujours en 5 étapes
1.1. Lecture de l’instructionLecture de l’instruction
2.2. Décodage et en même temps lecture des registresDécodage et en même temps lecture des registres
3.3. Calcul dans l’UAL Calcul dans l’UAL Instruction UAL : appliquer l’opérationInstruction UAL : appliquer l’opération Instruction Mémoire : Calculer l’adresseInstruction Mémoire : Calculer l’adresse Instruction de branchement : Calculer l’adresse de Instruction de branchement : Calculer l’adresse de
branchement et évaluer la conditionbranchement et évaluer la condition
4.4. Accès mémoire Accès mémoire
5.5. Mise à jour du registre destination (pour les UAL et Mise à jour du registre destination (pour les UAL et loads) ou CP (pour les branchements)loads) ou CP (pour les branchements)
Chemin de données de la machine MIPS sans Chemin de données de la machine MIPS sans PipelinePipeline
ac k
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Instruction
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Rea dregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
Address
Datamemory
1
ALUresult
Mux
ALUZero
IF: Instruction fetch ID: Instruction decode/register file read
EX: Execute/address calculation
MEM: Memory access WB: Write
L’exécution de l’instruction se fait toujours de gauche à droite, sauf pour l’écriture du résultat et la mise à jour de CP en cas de branchement pris.
Num de reg Contenu regBranchem
ent terminé étape 4
CP+4
EXEMPLEEXEMPLEac k
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Instruction
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Rea dregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
Address
Datamemory
1
ALUresult
Mux
ALUZero
IF: Instruction fetch ID: Instruction decode/register file read
EX: Execute/address calculation
MEM: Memory access WB: Write
L’exécution de l’instruction se fait toujours de gauche à droite, sauf pour l’écriture du résultat et la mise à jour de CP en cas de branchement pris.
Num de reg Contenu regBranchem
ent terminé étape 4
100ADD R1, R2, R3 1
23
3
3
[email protected] Exécution des instructions sans et Exécution des instructions sans et
avec avec pipileinepipileine
F D Ex Mem Er
F D Ex Mem Er
F D Ex Mem Er
F D Ex Mem Er
F D Ex Mem Er
10 5 10 10 5
Temps
F D Ex Mem Er
10 5 10 10 5 F D Ex Mem Er
10 5 10 10 5
F D Ex Mem Er
10
Idéalement : CPI = 1
1 Instruction par cycle
Les instructions ne sont pas Les instructions ne sont pas sauvegardéessauvegardées
ac k
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Instruction
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Rea dregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
Address
Datamemory
1
ALUresult
Mux
ALUZero
IF: Instruction fetch ID: Instruction decode/register file read
EX: Execute/address calculation
MEM: Memory access WB: Write
L’instruction contient des informations (numéros des registres, signaux de contrôle, …) qui seront utilisées bien après la lecture de l’instruction. Il faut les mémoriser.
Num de reg Contenu regBranchem
ent terminé étape 4
100
ADD R1, R2, R3
1
23
1
2 3
3
3
104 Sub R5, R6, R7
5
6
7
37
[email protected] Chemin de données pipeliné : ajout Chemin de données pipeliné : ajout
des buffersdes buffers
Instruct ion
me mory
Address
4
32
0
A ddAdd
result
S hi ft
left 2
Inst
ruc
tion
IF/ ID EX/ MEM ME M/W B
Mux
0
1
Ad d
PC
0Writedata
Mux
1
Registers
Readdata 1
Readdata 2
Rea dregister 1
Rea dregister 2
16Si gn
extend
Writeregister
Writedata
R eaddata
1
ALUresult
Mux
A LU
Zero
ID/EX
Datamemory
Address
Buffer pour stocker le résultat : le tapis roulant
Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle.L'écriture dans les buffers est faite à chaque fin de cycle par les signaux :
FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWriteA
dd R1, R
2, R3
[email protected] Chemin de données pipeliné : ajout Chemin de données pipeliné : ajout
des buffersdes buffers
Instruct ion
me mory
Address
4
32
0
A ddAdd
result
S hi ft
left 2
Inst
ruc
tion
IF/ ID EX/ MEM ME M/W B
Mux
0
1
Ad d
PC
0Writedata
Mux
1
Registers
Readdata 1
Readdata 2
Rea dregister 1
Rea dregister 2
16Si gn
extend
Writeregister
Writedata
R eaddata
1
ALUresult
Mux
A LU
Zero
ID/EX
Datamemory
Address
Buffer pour stocker le résultat : le tapis roulant
Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle.L'écriture dans les buffers est faite à chaque fin de cycle par les signaux :
FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite
Add R
1, R2, R
3
Sub R
5, R6, R
7
[email protected] Chemin de données pipeliné : ajout Chemin de données pipeliné : ajout
des buffersdes buffers
Instruct ion
me mory
Address
4
32
0
A ddAdd
result
S hi ft
left 2
Inst
ruc
tion
IF/ ID EX/ MEM ME M/W B
Mux
0
1
Ad d
PC
0Writedata
Mux
1
Registers
Readdata 1
Readdata 2
Rea dregister 1
Rea dregister 2
16Si gn
extend
Writeregister
Writedata
R eaddata
1
ALUresult
Mux
A LU
Zero
ID/EX
Datamemory
Address
Buffer pour stocker le résultat : le tapis roulant
Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle.L'écriture dans les buffers est faite à chaque fin de cycle par les signaux :
FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite
Add R
1, R2, R
3
Sub …
.
LW …
..
[email protected] Chemin de données pipeliné : ajout Chemin de données pipeliné : ajout
des buffersdes buffers
Instruct ion
me mory
Address
4
32
0
A ddAdd
result
S hi ft
left 2
Inst
ruc
tion
IF/ ID EX/ MEM ME M/W B
Mux
0
1
Ad d
PC
0Writedata
Mux
1
Registers
Readdata 1
Readdata 2
Rea dregister 1
Rea dregister 2
16Si gn
extend
Writeregister
Writedata
R eaddata
1
ALUresult
Mux
A LU
Zero
ID/EX
Datamemory
Address
Buffer pour stocker le résultat : le tapis roulant
Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle.L'écriture dans les buffers est faite à chaque fin de cycle par les signaux :
FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite
Add R
1, R2, R
3
Sub …
.
LW …
..
Add …
…
Représentation graphiqueReprésentation graphique
IM Reg DM Reg
IM Reg DM Reg
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
lw $10, 20($1)
sub $11, $2, $3
ALU
ALU
Ordre d ’exécution
Lecture Mémoire Ecriture Registre
Les signaux de contrôle des étages Les signaux de contrôle des étages
RegDst = 1; On écrit dans rd, si non dans rtALUOpx : donne l’opération à réaliser dans l’UAL
exemple 001 : addition, 010 : soustracation , ….100: regarder le champ fonction
Branch =1 si c’est une instr de branchementMemRead = 1 on fait une lecture en mémoireMemWrite = 1 on fait une écriture en mémoireRegWrite =1 on écrit dans un registre rd ou rt (suivant RegDst)MemToReg = 1 ; la donnée écrite dans le reg provient de la mémoire ; si non du regsitre
Execution/Address Calculation stage control lines
Memory access stage control lines
Write-back stage control
lines
InstructionReg Dst
ALU Op1
ALU Op0
ALU Src Branch
Mem Read
Mem Write
Reg write
Mem to Reg
R-format 1 1 0 0 0 0 0 1 0lw 0 0 0 1 0 1 0 1 1
sw X 0 0 1 0 0 1 0 X
beq X 0 1 0 1 0 0 0 X
Mémorisation des signaux de Mémorisation des signaux de contrôlecontrôle
Control
EX
M
WB
M
WB
WB
IF/ID ID/EX EX/MEM ME M/ WB
Instruction
Une fois l’instruction décodée et pour éviter de redécoder de nouveau;On stocke les signaux de contrôle dans les buffers de pipeleine
PC
Instructionmemory
Inst
ruct
ion
Add
Instruction[20– 16]
Me
mto
Re
g
ALUOp
Branch
Reg st
AL Src
4
16 32Instruction[15– 0]
0
0
Mux
0
1
AddAdd
result
R
ontrol
ALU
Instruction[15– 11]
6
EX
M
WB
M
WB
WB
D
U
egistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signex tend
Mux
1
ALUresult
Zero
Writedata
Readdata
Mux
1
ALUcontrol
Shiftlef t 2R
eg
Writ
e
MemRead
C
IF/ID
PCSrc
ID/EX
EX/MEM
MEM/WB
Mux
0
1
Me
mW
rite
Address
Datamemory
Address
Il faut garder le num du reg destination
rt ou rd
Le chemin de données avec les Le chemin de données avec les signaux de contrôlesignaux de contrôle
Instructionmemory
Inst
ruct
ion
Add
Instruction[20– 16]
Me
mto
Re
g
ALUOp
Branch
Reg st
AL Src
4
16 32Instruction[15– 0]
0
0
Mux
0
1
AddAdd
result
R
ontrol
ALU
Instruction[15– 11]
6
EX
M
WB
M
WB
WB
D
U
egistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signex tend
Mux
1
ALUresult
Zero
Writedata
Readdata
Mux
1
ALUcontrol
Shiftlef t 2R
eg
Writ
e
MemRead
C
IF/ID
PCSrc
ID/EX
EX/MEM
MEM/WB
Mux
0
1
Me
mW
rite
Address
Datamemory
Address
Le chemin de données avec les Le chemin de données avec les signaux de contrôlesignaux de contrôle
100
100104
104
104 104
Add r3, r2,
r1
1
211
5
2
33
1 1
0 0
00
0 1
00
1
11
+
0
0 0
0
0
3
3
16 16
10
16
16
0
fonc
Add r3, r2, r1100
Problèmes liés à l exploitation Problèmes liés à l exploitation du pipelinedu pipeline
Pourquoi ne peut-on pas obtenir un CPI = 1?Pourquoi ne peut-on pas obtenir un CPI = 1? 3 causes : Les aléas3 causes : Les aléas
– Les aléas de structurelsLes aléas de structurels : Plusieurs instructions veulent utiliser la : Plusieurs instructions veulent utiliser la même unité: exemple 1’instruction lie en mémoire (Fetch) et une même unité: exemple 1’instruction lie en mémoire (Fetch) et une autre écrit en mémoire un store d ’une données. autre écrit en mémoire un store d ’une données.
– Solution : dédoubler les unités ou multiplier les ports de Solution : dédoubler les unités ou multiplier les ports de lecture/Ecriture (ex Transparent suivant)lecture/Ecriture (ex Transparent suivant)
– Les aléas de donnéesLes aléas de données : Dépendance de données : Dépendance de données– L’instruction J a besoin d’une donnée qui est entrain de se calculer L’instruction J a besoin d’une donnée qui est entrain de se calculer
par I . J dépend de I et toute les deux sont dans le pipeline.par I . J dépend de I et toute les deux sont dans le pipeline.
– Les aléas de contrôleLes aléas de contrôle : Instruction de branchement : Instruction de branchement– La décision de prendre le branchement ou non n ’est connu qu ’ à la La décision de prendre le branchement ou non n ’est connu qu ’ à la
fin de la phase 4. fin de la phase 4.
– Risque : Il ne faut pas exécuter les instructions se trouvant juste Risque : Il ne faut pas exécuter les instructions se trouvant juste après le branchement. Risque d’écraser les registresaprès le branchement. Risque d’écraser les registres
Détourner les aléas structurels en Détourner les aléas structurels en multipliant les unités fonctionnellesmultipliant les unités fonctionnelles
Aléas structurel sur la mémoire
Avoir une mémoire (cache) Instruction et une mémoire (cache) données
Les aléas de donnéesLes aléas de données
IM Reg
IM Reg
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
Time (in clock cycles)
sub $2, $1, $3
Programexecutionorder(in instructions)
and $12, $2, $5
IM Reg DM Reg
IM DM Reg
IM DM Reg
CC 7 CC 8 CC 9
10 10 10 10 10/–20 –20 –20 –20 –20
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
Value of register $2:
DM Reg
Reg
Reg
Reg
DM
au début à la fin
Les instructions : and, or et add utilisent
l’ancien contenu du reg 2 !!!
CC : clock cycle
[email protected] Quelles solutions pour les Quelles solutions pour les
dépendances dépendances de données (DD)?de données (DD)?
1) Compter sur le compilateur pour détecter les DD, et 1) Compter sur le compilateur pour détecter les DD, et insérer les instructions NOP. Inconv. : perte de tempsinsérer les instructions NOP. Inconv. : perte de temps– Dans notre cas à chaque dépendance entre deux instructions :Dans notre cas à chaque dépendance entre deux instructions :
Il faut insérer 1, 2 ou 3 Nop suivant la distance entre les instructions.Il faut insérer 1, 2 ou 3 Nop suivant la distance entre les instructions.
subsub $2, $1, $3$2, $1, $3
and and $12, $2, $5$12, $2, $5
oror $13, $6, $2$13, $6, $2
addadd $14, $2, $2$14, $2, $2
swsw $15, 100($2)$15, 100($2)
– Remarque le compilateur peut aussi déplacer du code pour l ’insérer Remarque le compilateur peut aussi déplacer du code pour l ’insérer entre deux instructions dépendantes. (cf. TD)entre deux instructions dépendantes. (cf. TD)
NopNopNop
[email protected] Résoudre les aléas de données Résoudre les aléas de données
par des instructions sans effet par des instructions sans effet (les NOP)(les NOP)
IM Regsub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
DM Reg
IM Reg
IM Reg DM Reg
IM DM Reg
Reg
Reg
DM
IM Reg
IM Reg DM Reg
IM DM Reg
Reg
Reg
DM
NOP
NOP
NOP
Valeur dans R2 disponible
Autres solutionsAutres solutions
2) Utiliser le matériel adéquat pour détecter 2) Utiliser le matériel adéquat pour détecter la dépendance et suspendre l ’arrivée de la dépendance et suspendre l ’arrivée de nouvelle instruction tant que le résultat n ’est nouvelle instruction tant que le résultat n ’est pas calculé. Aléas résolu.pas calculé. Aléas résolu.
On bloque l ’arrivé des instruction: And, Or et On bloque l ’arrivé des instruction: And, Or et Add jusqu’à ce que le reg 2 soit écrit.Add jusqu’à ce que le reg 2 soit écrit.
Un comparateur pour comparer le no du reg Un comparateur pour comparer le no du reg lue avec no du registre destinationlue avec no du registre destination
même chose que le schéma précédent mais même chose que le schéma précédent mais des suspensions au lieu de NOPdes suspensions au lieu de NOP
3) Par Envoi direct Direct3) Par Envoi direct Direct « Forwarding » ou « By-pass »« Forwarding » ou « By-pass »
Le résultat est envoyé directement vers l’instruction destination Le résultat est envoyé directement vers l’instruction destination
avant qu’il ne soit écrit dans le registre destination:avant qu’il ne soit écrit dans le registre destination:
Il y a transmission directe entre instructions sans passer par les regsIl y a transmission directe entre instructions sans passer par les regs
I M R e g
I M R eg
C C 1 C C 2 C C 3 C C 4 C C 5 C C 6
Ti m e (i n c lo c k cy cle s )
s ub $ 2, $1 , $ 3
Pr og ra me x e c uti o n o rde r(i n ins tr u c tio ns )
a nd $ 12 , $ 2, $ 5
I M R eg D M R e g
I M D M R e g
I M D M R e g
C C 7 C C 8 C C 9
10 1 0 1 0 1 0 1 0/ – 20 – 2 0 – 2 0 – 2 0 – 20
o r $ 1 3, $ 6, $2
a d d $ 14 , $ 2, $ 2
s w $ 15 , 1 0 0 ( $2)
V al ue o f re gi st er $ 2 :
D M R eg
R e g
R eg
R eg
X X X – 2 0 X X X X XV alu e o f E X/ M E M :X X X X – 2 0 X X X XVa lu e o f M E M/ W B :
D M
Lorsqu’un reg est lu et écrit dans le même cycle,
on lit la nouvelle valeur
L ’envoi direct (direct L ’envoi direct (direct forwarding)forwarding)
Les registresUAL
Sans envoi direct
Les registres
UAL
Mx
Mx
Avec envoi direct
Mux
A L UID/E X M E M/ WB
Datame m ory
E X/ M E MRe gisters
SANS ENVOI DIRECT
R e g i st e r s
Mux M
ux
A L U
I D / E X M E M / W B
D a tam e m o ry
Mux
F o r w a r d i n gu n it
E X / M E M
b. W i t h fo r w a r d in g
F o r w a r d B
R dE X / M E M . R e g is te r R d
M E M / W B . R e g i st e r R d
R tR tR s
F o r w a r d A
Mux
AVEC ENVOI DIRECT
Add $6, $12, $13Add $2, $3, $4Sub $5, $6, $6…. Rs Rt
[email protected] Le chemin de données complet avec Le chemin de données complet avec
l’envoi directl’envoi direct
PCInstructionmemory
Registers
Mux
Mux
Control
ALU
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Forwardingunit
IF/ID
Inst
ruc
t ion
Mux
RdEX/MEM.RegisterRd
MEM/WB.RegisterRd
Rt
Rt
Rs
IF/ID.RegisterRd
IF/ID.RegisterRt
IF/ID.RegisterRt
IF/ID.RegisterRs
regWriteregWrite
TDDonnez le schéma de
l’unitéForward
Unit
L ’envoie direct ne marche à L ’envoie direct ne marche à chaque coup!!!chaque coup!!!
Re g
IM
Re g
Re g
IM
C C 1 C C 2 C C 3 C C 4 C C 5 C C 6
Tim e (in clock cycle s)
lw $2, 20($1)
Pro gra m
exe cutio n
order
(in in stru ctio ns)
and $4, $2, $5
IM Reg D M Re g
I M D M Re g
I M D M Re g
C C 7 C C 8 C C 9
or $8, $2, $6
add $9, $4, $2
slt $1, $6, $7
D M Reg
Re g
Reg
D M
Le problème des instructions de chargement
?
Solution : Retarder d ’un cycle Solution : Retarder d ’un cycle l ’instruction ANDl ’instruction AND
lw $2, 20($1)
Program
execution
order
(in instructions)
and $4, $2, $5
or $8, $2, $6
add $9, $4, $2
Reg
IM Reg
IM DM
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
Time (in clock cycles)
IM Reg DM Reg
IM DM Reg
CC 7 CC 8 CC 9 CC 10
DM Reg
Reg
Reg
Bulle
Pour ne pas avancer il faut mettre à zéro les sng de
contrôle
Pour ne pas avancer ilne faut pas charger une
nouvelle instruction et ne pas modifier PC
L ’aléas de données avec une instruction de L ’aléas de données avec une instruction de chargementchargement
PCInstruction
memory
Registers
Mux
Mux
Mux
Control
ALU
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Hazarddetection
unit
Forwardingunit
0
Mux
IF/ID
Ins t
ruct
i on
ID/EX.MemRead
IF/I
DW
rit e
PC
Wri
t e
ID/EX.RegisterRt
IF/ID.RegisterRd
IF/ID.RegisterRt
IF/ID.RegisterRt
IF/ID.RegisterRs
Rt
Rs
Rd
RtEX/MEM.RegisterRd
MEM/WB.RegisterRd
Lw rt, 100(Rs)
And Rs, Rt, Rd
Rs, Rtrt
RAZ
lw $2, 20($1)
and $4, $2, $5
rt
rs rt
[email protected] Dernier type d ’aléas : les Dernier type d ’aléas : les
aléas de contrôle aléas de contrôle les branchements pris les branchements pris
Le résultat de la condition du branchement n’est connu qu ’à la fin de la phase 4.Pendant la phase 2, et 3 et 4, les trois instructions suivantes ont été chargées
Problème si la condition est vérifiée , On écrase des registres !!!!!!
Reg
Reg
CC 1
Time (in clock cycles)
40 beq $1, $3, 7
Programexecutionorder(in instructions)
IM Reg
IM DM
IM DM
IM DM
DM
DM Reg
Reg Reg
Reg
Reg
RegIM
44 and $12, $2, $5
48 or $13, $6, $2
52 add $14, $2, $2
72 lw $4, 50($7)
CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
Reg
[email protected] Deux solutions possibles pour Deux solutions possibles pour
lutter contre les aléas de lutter contre les aléas de branchementbranchement
1 : Dés qu ’une instruction de branchement est chargée dans 1 : Dés qu ’une instruction de branchement est chargée dans IF/D, on bloque l’arrivée de nouvelle instruction jusqu’à ce que la IF/D, on bloque l’arrivée de nouvelle instruction jusqu’à ce que la condition soit évaluée: Perte de 3 cycles condition soit évaluée: Perte de 3 cycles
Reg
CC 1
Time (in clock cycles)
40 beq $1, $3, 7
Programexecutionorder(in instructions)
IM Reg
IM
IM
IM
DM
DM Reg
RegIM72 lw $4, 50($7)
CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
2) Continuer l ’exécution des instructions 2) Continuer l ’exécution des instructions chargéeschargées
Mais vider les buffers si branchement Mais vider les buffers si branchement pris.pris.
Les instructions se trouvant après l’instruction Les instructions se trouvant après l’instruction branchement sont toujours chargéesbranchement sont toujours chargées
Si la condition est vérifiée, les instructions sont Si la condition est vérifiée, les instructions sont vidées des buffers IF/ID, ID/EXE, EXE/MEM, on met vidées des buffers IF/ID, ID/EXE, EXE/MEM, on met des zéros partout.des zéros partout.
PCInstructionmemory
Control
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
0
Mux
0
Mux
ID.Flush
EX.FlushIF.Flush
IF/ID
0
Mux
IF.Flush
IF/ID
0
Mux
Branchement pris
0
0
0
0
0 0
1 11
COP
[email protected] 3) On peut remplir le vide par des 3) On peut remplir le vide par des
instructions utilesinstructions utilesDelayed BranchDelayed Branch
b. From target
sub $t4, $t5, $t6
…
add $s1, $s2, $s3
if $s1 = 0 then
add $s1, $s2, $s3
if $s1 = 0 then
sub $t4, $t5, $t6
Delay slot
a. From before
add $s1, $s2, $s3
if $s2 = 0 then
Delay slot
if $s2 = 0 then
add $s1, $s2, $s3
Exemple avec une instruction
Exemples de quelques processeurs Exemples de quelques processeurs pipelinés pipelinés
ARM7 (1990) : processeur pour applications embarqués à ARM7 (1990) : processeur pour applications embarqués à 3 étages de pipeline.3 étages de pipeline.– Les instructions sont exécutées dans le même ordre de leurs Les instructions sont exécutées dans le même ordre de leurs
lectures (in order)lectures (in order)
FETCH
DECODE
EXECUTE
Instruction fetched from memory
Decoding of registers used in instruction
Register(s) read from Register BankShift and ALU operationWrite register(s) back to Register Bank
PC
PC - 4
PC - 8
Pipeline sur le PentiumI (1995)Pipeline sur le PentiumI (1995) Les étapes (pipeline) du Pentium I (instructions Les étapes (pipeline) du Pentium I (instructions
arithmétiques entières)arithmétiques entières)– Prefetch. Chargement des instructions du cache Prefetch. Chargement des instructions du cache
(ou de la mémoire) dans les tampons de pré-(ou de la mémoire) dans les tampons de pré-chargement.chargement.
– Decode 1. Décodage de l’instruction. Decode 1. Décodage de l’instruction. – Decode 2. Calcul de l'adresse des opérandes Decode 2. Calcul de l'adresse des opérandes
présentes en mémoire. présentes en mémoire. – Execute. Exécution des instructions et accès à la Execute. Exécution des instructions et accès à la
mémoire. mémoire. – Write Back. Modification de l'état du processeur Write Back. Modification de l'état du processeur
par l'achèvement de l'exécution des instructions. par l'achèvement de l'exécution des instructions.
Pipeline de 10 étages sur l’Athlon, 12 étages sur Pipeline de 10 étages sur l’Athlon, 12 étages sur le Pentium III et le Pentium III et
20 étages sur le pentium IV20 étages sur le pentium IV
Micro-acrhitecture Pentium4Micro-acrhitecture Pentium4
Pipeline sur MIPS R3000 et Pipeline sur MIPS R3000 et R4000R4000
Le MIPS R3000 implémente un pipeline de cinq étages Le MIPS R3000 implémente un pipeline de cinq étages typique d'un processeur RISC traditionnel (chargement typique d'un processeur RISC traditionnel (chargement de l'instruction, décodage, exécution ou calcul de de l'instruction, décodage, exécution ou calcul de l'adresse, accès à la mémoire, mise à jour du banc de l'adresse, accès à la mémoire, mise à jour du banc de registres). registres).
La gestion des interblocages (aléas de données) au La gestion des interblocages (aléas de données) au sein du pipeline est effectuée par logiciel. sein du pipeline est effectuée par logiciel.
Le MIPS R4000 est le premier des processeurs RISC à Le MIPS R4000 est le premier des processeurs RISC à mettre en œuvre la technique du superpipeline.mettre en œuvre la technique du superpipeline.– Division de chaque étage du pipeline en sous phases.Division de chaque étage du pipeline en sous phases.
Les étages critiques ont été divisés en deux, voire en Les étages critiques ont été divisés en deux, voire en trois, pour permettre à ce processeur d'atteindre des trois, pour permettre à ce processeur d'atteindre des fréquences élevées. Le pipeline a au total une fréquences élevées. Le pipeline a au total une profondeur de huit étages. profondeur de huit étages.
Le pipeline sur les processeurs Le pipeline sur les processeurs Alpha 21064Alpha 21064
le DEC 21064 utilise la technique du superpipeline le DEC 21064 utilise la technique du superpipeline avec un pipeline de sept étages. Les quatre premiers avec un pipeline de sept étages. Les quatre premiers servent au chargement des instructions, à leur servent au chargement des instructions, à leur décodage, à la prédiction de branchement ainsi qu'à décodage, à la prédiction de branchement ainsi qu'à la résolution des conflits sur un processeur la résolution des conflits sur un processeur superscalaire de degré deux. superscalaire de degré deux.
Ces quatre premiers étages sont dit statiques dans la Ces quatre premiers étages sont dit statiques dans la mesure où les instructions peuvent attendre à ce mesure où les instructions peuvent attendre à ce niveau la résolution des conflits de ressources, par niveau la résolution des conflits de ressources, par opposition aux étages d'exécution dits dynamiques, opposition aux étages d'exécution dits dynamiques, et dans lesquels la phase d'exécution des instructions et dans lesquels la phase d'exécution des instructions ne peut être interrompue. Ces quatre premiers ne peut être interrompue. Ces quatre premiers étages sont donc communs aux pipelines entier et étages sont donc communs aux pipelines entier et flottant. Le pipeline flottant du DEC 21064 a une flottant. Le pipeline flottant du DEC 21064 a une profondeur de dix étages. profondeur de dix étages.
PowerPC 603PowerPC 603 PowerPc : Les pipelines d'exécution des PowerPc : Les pipelines d'exécution des
instructions entières et flottantes ont une instructions entières et flottantes ont une profondeur respective de cinq et six étagesprofondeur respective de cinq et six étages
PowerPc 970 (alias G4)PowerPc 970 (alias G4)Execution core• Support for up to 215 in-flight instructions• Simultaneous issue of up to 10 out-of-order operations:
•–One Velocity Engine permute operation (SIMD)•–One Velocity Engine arithmetic logic operation (SIMD)•–Two floating-point operations•–Two fixed-point register-to-register operations•–Two load or store operations•–One condition register operation•–One branch operation
• 64K L1 instruction cache; 32K L1 data cache• 512K internal L2 cache• Support for up to eight outstanding L1 cache line misses• Hardware-initiated instruction prefetching from L2 cache• 58 million transistors• Maximum core frequency: 2GHz
P4 : un pipeline à 20 étages P4 : un pipeline à 20 étages
Pipeline du core-DuoPipeline du core-Duo
Plus de détails : Plus de détails :
Intel P4 :Intel P4 :– http://www.hardware.fr/html/articles/lire.php3?article=283http://www.hardware.fr/html/articles/lire.php3?article=283
http://www.active-hardware.com/francais/reviews/http://www.active-hardware.com/francais/reviews/processor/pentium4-2fr.htmprocessor/pentium4-2fr.htm
PowerPc :PowerPc :– http://www.rs6000.ibm.com/resource/technology/603.htmlhttp://www.rs6000.ibm.com/resource/technology/603.html
Cours du Pr Sanchez , Ecole Polytechnique de Cours du Pr Sanchez , Ecole Polytechnique de Lausanne Lausanne – http://lslwww.epfl.ch/pages/teaching/cours_lsl/ao/home.htmlhttp://lslwww.epfl.ch/pages/teaching/cours_lsl/ao/home.html