2 G Pipeline
2 G Pipeline
2 G Pipeline
1
Notion de Pipeline
Exemple: Opération de lavage du linge
Séquentiel ou bien pipeline
4 personnes ; chacun doit : A B C D
laver, sécher, repasser, ranger
lavage : 30 minutes
séchage : 40 minutes
Repassage : 30 minutes
Rangement : 20 minutes
2
Lavage du linge en séquentiel
6 PM 7 8 9 10 11 12 1 2 AM
O 30 40 30 20 30 40 30 20 30 40 30 20 30 40 30 20
r Time
A
d
r B
e C
T D
â
c
h D C B A
e L S Re Ra • 8 heures pour terminer
s
3
Lavage linge en pipeline
6 PM 7 8 9 10 1
O Temps
1
r
d 30 40 40 40 40 30 20 =240mn/60 30 40 30 20
r A
L S Re Ra
e
B
T C
â D
c
h Phase de Phase de
remplissage déchargement
e
s Pipeline=Toutes les ressources
fonctionnent en parallèles
• 4 heures !
4
Rappel : diagramme d’état
BEQ/BNE
S <– A + B; S <– A or ZX; S <– A + SX; S <– A + SX; If Cond
PC < PC+SX;
SW
M <– Mem[S] Mem[S] <- B 3 cyc
R type
R[rd] <– S;
I type
R[rt] <– S;
LW
R[rd] <– M;
4 cyc
4cyc 4cyc 5 cyc
1 Approche : toutes les instructions aient même nb d’étages 5 (5 Cyc)
6
Rappel :Chemin de données de monocycle
Idée: Ajouter des registres intermédiaires pour sauvegarder les informations fournies par chaque étage
9
Pipeline : Ajout de registres intermédiaires
10
Les instructions ne sont pas sauvegardées
IF: Instruction fetch ID: Instruction decode/ EX: Execute/ MEM: Me mory acce ss WB: Write
register file read addre ss calculation back
0
M
Num de reg Contenu reg
u
x Branchement
1
terminé étape
4
Ad d
Ad d
4 Ad d
re s ult
S hift
le ft 2
26 R ea d
PC Ad dre s s r e gis te r 1
Re a d
100
ADD R1, R2, R3
In s tru ctio n
37 R ea d
re gis te r 2
d a ta 1
R e gist ers Re a d
2 ALU
Ze ro
3 1
0 ALU
Write R ead
d a ta 2 r e s ult Ad dr e ss 1
da ta
15
In str u ction re gis te r M
u Da ta M
me m ory u
Write x me m ory x
104 Sub R5, R6, R7
d at a 1
Writ e
0
da t a
16 32
1
Sign
exte nd
1
L’instruction contient des informations (numéros des registres, signaux de contrôle, …)
11
qui seront utilisées bien après la lecture de l’instruction. Il faut les mémoriser.
Chemin de données pipeline : ajout des buffers
0
Buffer pour stocker le résultat : le tapis roulant
M
u
x
1
Ad d
Ad d
4 A dd re s ult
S hift
left 2
Add R1, R2, R3
In struc ti o n
R ea d
PC Add r e s s r e gis t er 1
Read
d at a 1
R ea d
r e gis t er 2 Zero
In str uct ion
R e gist e r s R e a d ALU ALU
m e m o ry Writ e 0 R ea d
d at a 2 r e s ult Ad dr e s s 1
r e gis t er M da ta
M
u D at a
Writ e x u
m e m o ry x
d at a 1
0
Write
da t a
16 32
Si g n
e xt e n d
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 : 12
FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite
Chemin de données pipeline : ajout des buffers
0
M
u
Buffer pour stocker le résultat : le tapis roulant
x
1
Ad d
Ad d
4 A dd re s ult
S hift
left 2
R ea d
PC Add r e s s r e gis t er 1
Read
d at a 1
R ea d
r e gis t er 2 Zero
In str uct ion
R e gist e r s R e a d ALU ALU
m e m o ry Writ e 0 R ea d
d at a 2 r e s ult Ad dr e s s 1
r e gis t er M da ta
M
u D at a
Writ e x u
m e m o ry x
d at a 1
0
Write
da t a
16 32
Si g n
e xt e n d
13
Chemin de données pipeline : ajout des buffers
0
Buffer pour stocker le résultat : le tapis roulant
M
u
x
1
Ad d
Ad d
4 A dd re s ult
R ea d
PC Add r e s s r e gis t er 1
Read
LW …..
Sub ….
d at a 1
R ea d
r e gis t er 2 Zero
In str uct ion
R e gist e r s R e a d ALU ALU
m e m o ry Writ e 0 R ea d
d at a 2 r e s ult Ad dr e s s 1
r e gis t er M da ta
M
u D at a
Writ e x u
m e m o ry x
d at a 1
0
Write
da t a
16 32
Si g n
e xt e n d
14
Chemin de données pipeline : ajout des buffers
0
M
u
Buffer pour stocker le résultat : le tapis roulant
x
1
Ad d
Ad d
4 A dd re s ult
S hift
left 2
R ea d
PC Add r e s s r e gis t er 1
Add ……
Read
d at a 1
R ea d
r e gis t er 2 Zero
In str uct ion
LW …..
Sub ….
R e gist e r s R e a d ALU ALU
m e m o ry Writ e 0 R ea d
d at a 2 r e s ult Ad dr e s s 1
r e gis t er M da ta
M
u D at a
Writ e x u
m e m o ry x
d at a 1
0
Write
da t a
16 32
Si g n
e xt e n d
15
Processeur avec pipeline
ER
ER ER
M M
EX
Contrôle
Based on UCB
Page : 16
17
Remarques sur le traitement en pipeline
• Traitement en pipeline n ’améliore pas le temps de
chaque tâche, mais le débit des opérations
• Tâches multiples en parallèles avec ressources
différentes
• Débit de pipeline est limité par l ’étage le plus lent
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
18
Remarques sur le traitement en pipeline
19
Représentation d’exécution en pipeline à 5 étages
Temps
Phase de déchargement:
sauvegarde des résultats
20
Comparaison: 1-Cycle, Multi-Cycle, Pipeline
Cycle 1 Cycle 2
Clk
Implémentation 1-Cycle:
LW SW Perte
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
Clk
Implémentation Multi-Cycle:
LW SW R-type
Ifetch Reg Exec Mem Wr Ifetch Reg Exec Mem Ifetch
Implementation Pipeline:
LW Ifetch Reg Exec Mem Wr
10 +7 +10 +10 +7
• Exécution de 100 instructions
• Machine en Pipeline
– 10 ns/cycle x (1 CPI x 100 inst + 4 cycles remplissage) = 1040 ns
ALU
Im Reg Dm Reg
e Inst 0
ALU
I
n
Inst 1 Im Reg Dm Reg
ALU
t Inst 2 Im Reg Dm Reg
r
u Inst 3
ALU
c Im Reg Dm Reg
t
i Inst 4
ALU
Im Reg Dm Reg
o
n
s
23
Problèmes avec les Pipelines?
• Types d ’aléas (« hazards ») :
– Aléas de contrôle: prendre décision avant d’évaluer la
condition
• instruction de saut conditionnel
– Aléas de données: utilisation d’une donnée avant qu’elle
soit prête
• instruction dépend des résultats d ’une instruction
antérieure encore dans le pipeline
– Aléas de structure: utilisation d’une même ressource
plusieurs fois en même temps
ALU
Mem Reg Mem Reg
Load
ALU
Mem Reg Mem Reg
Instr 1
ALU
Mem Reg Mem Reg
Instr 2
ALU
Mem Reg Mem Reg
Instr 3
ALU
Mem Reg Mem Reg
Instr 4
Détection
NHA/MMY Pipeline facile ! Solution limite la performance.
Based on UCB
Page : 25
26
27
Aléas de contrôle
Si la condition est vérifiée le problème se situe au niveau de
l’éxcétion des instructions and, or et sub qui viennent de commencer
à être excéuter : perte de temps
ALU
Ifetch Reg DMem Reg
10: beq r1,r3,36
ALU
14: and r2,r3,r5 Ifetch Reg DMem Reg
18: or r6,r1,r7
ALU
Ifetch Reg DMem Reg
ALU
Ifetch Reg DMem Reg
ALU
Ifetch Reg DMem Reg
37: ori r2,r1,20
38: add r9,r3,r5
28
Page : 28
1prémiére Solution: Suspension
• Suspension: possibilité de prendre la décision après 2 cycles par
ajout de hardwares : attendre jusqu’à ce que la décision puisse
être prise
ALU
Mem Reg Mem Reg
Add
ALU
Mem Reg Mem Reg
Beq
ALU
And Bulle Bulle Mem Reg Mem Reg
Stall
Suspension
29
2éme Solution: Prédiction
a) Prédiction: Bonne (pas de saut : ZF=0)
Temps (en cycles)
ALU
Mem Reg Mem Reg *: condition
Add n’est pas
vérifiée
ALU
Beq
Mem Reg * Mem Reg
ALU
And Mem Reg Mem Reg
ALU
Mem Reg Mem Reg
or
ALU
Mem Reg Mem Reg
sub
xor
ALU
Mem Reg Mem Reg
ALU
Mem Reg Mem Reg *: condition
Add vérifiée
ALU
Beq
Mem Reg * Mem Reg
NOP
ALU
And Mem Reg Mem Reg
ALU
Mem Reg Mem Reg
or
ALU
2 cycles perdues Mem Reg Mem Reg
Xor
Impact: 1 cycles / instruction saut
ALU
37: ori si prédiction est correcte zf=1, 2 Mem Reg Mem Reg
cycle en cas d ’erreur zf=0
(condition correcte = saut =50%)
31
Aléas de donnée
• Problème est la dépendances en arrière de la donnée r1
ALU
Reg Dm
ALU
Im Reg Dm Reg
sub r4,r1,r3
ALU
Im Reg Dm Reg
and r6,r1,r7
ALU
Im Reg Dm Reg
or r8,r1,r9
ALU
Im Reg Dm Reg
xor r10,r1,r11
32
Solution Aléas de Données:
• Solution est de “Renvoyer” résultat d ’une étape vers une autre
ALU
Reg Reg
add r1,r2,r3 Im Dm
ALU
Im Reg Dm Reg
sub r4,r1,r3
ALU
Im Reg Dm Reg
and r6,r1,r7
ALU
Im Reg Dm Reg
or r8,r1,r9
ALU
Im Reg Dm Reg
xor r10,r1,r11
33
Aléas de données: cas Load
• Dépendances en arrière
Probléme
Temps (en cycles)
I ID/RF EX MEM WB
ALU
F Reg Reg
lw r1,0(r2) Im Dm
ALU
Im Reg Dm Reg
sub r4,r1,r3
ALU
Im Reg
Bulle Dm Reg
solution Suspension
• Renvoi impossible
• Suspension est la seule solution
34
35
Rappel : diagramme d’état
BEQ/BNE
S <– A + B; S <– A or ZX; S <– A + SX; S <– A + SX; If Cond
PC < PC+SX;
SW
M <– Mem[S] Mem[S] <- B 3 cyc
R type
R[rd] <– S;
I type
R[rt] <– S;
LW
R[rd] <– M;
4 cyc
4cyc 4cyc 5 cyc
1 Approche : toutes les instructions aient même nb d’étages 5 (5 Cyc)
37
Rappel : Instruction de chargement LW
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
Clock
38
Rappel : Instruction type-R
Cycle 1 Cycle 2 Cycle 3 Cycle 4
• Ifetch
– Lecture de l ’instruction de mémoire instructions
• Reg/Dec
– Lecture registres et décodage de l ’instruction
• Exec
– Opération ALU sur les deux registres
• Wr
– Ecriture résultat dans un registre
39
Aléas de structure
Pipeline avec type-R et LW
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9
Clock
41
Solution 2: Ralentir l’instruction type-R
– Écriture dans le banc registre se fait au cycle 5 au lieu de 4
– NOP (pas d’opération) pour étape Mem insertion
1 2 3 4 5
R-type Ifetch Reg/Dec Exec Mem Wr
Chargement de pipeline 42
Solution : Modification Chemin&Contrôle
IR <- Mem[PC]; PC <– PC+4;
Beq/Bne
M <– S M <– S M <– Mem[S] Mem[S] <- B
Sw
Cond=
R[rd] <– M; R[rt] <– M; R[rd] <– M;
Regs.
Banc
Inst. Mem
Exec
Reg
Next PC
A M
File
S
PC
IR
Access
Mem
Mem
Data
D
43
Solution pour instruction SW
Cycle 1 Cycle 2 Cycle 3 Cycle 4
44
Solution pour Beq
45
Exemple
10 lw r1, r2(35)
14 addI r2, r2, 3
20 sub r3, r4, r5
24 beq r6, r7, 100
28 ori r8, r9, 17
32 add r10, r11, r12
…
100 and r13, r14, 15
46
Fetch 10
n n n n
Mem Inst
Decode
Exec WB
Mem
Ctrl Ctrl
Ctrl
rs rt
Banc
Reg.
Banc
Reg.
A M
Exec
S
B 10 lw r1, r2(35)
Donn.
Accé
Mem
Mem
D 14 addI r2, r2, 3
20 sub r3, r4, r5
PC Suiv.
lw r1,r2,3
Mem Inst
Decode
Exec WB
Mem
Ctrl Ctrl
Ctrl
rs rt
Banc
Reg.
Banc
Reg.
A M
Exec
S
B 10 lw r1, r2(35)
Donn.
Accé
Mem
Mem
14 addI r2, r2, 3
D
20 sub r3, r4, r5
PC Suiv.
lw r1
Decode
Exec WB
Mem
Ctrl Ctrl
Ctrl
35
2 rt
Banc
Reg.
Banc
Reg.
A M
Exec
S
B
10 lw r1, r2(35)
Donn.
Accé
Mem
Mem
D 14 addI r2, r2, 3
20 sub r3, r4, r5
PC Suiv.
sub r3,r4, r5
addi r2, r2
Mem Inst
Lw r1
Decode
Exec WB
Mem
Ctrl Ctrl
Ctrl
3
4 5
Banc
Reg.
Banc
Reg.
A M
Exec
r2+3
B
10 lw r1, r2(35)
Donn.
Accé
Mem
Mem
D 14 addI r2, r2, 3
20 sub r3, r4, r5
PC Suiv.
51