La technique du pipeline

Introduction 

Exemple: Opération Séquentiel de lavage ou bien du linge pipeline 

4 personnes ; chacun doit : 

laver, sécher, repasser, ranger lavage : 30 minutes 

séchage : 40 minutes 

Repassage : 30 minutes 

Rangement : 20 minutes 

Notion de PipelineA B C D 

Lavage du linge en séquentiel 

O30 rdre 

6 PM 7 8 9 10 11 12 1 2 AM 

30 40 30 20 A 40 Time 30 20 30 40 30 20 30 40 30 20 BeTâche• 8 heures pour terminer

C

C B A L S Re Ra

OrdreT Tâches Phase de 

remplissage 

Phase de déchargement 

Pipeline=Toutes les ressources fonctionnent en parallèles 

Lavage linge en pipeline 

6 PM 7 8 9 10 11 Temps 

A BC30 40 40 40 40 30 20 

=240mn/60 

30 40 30 20 L S Re Ra 

C

Rappel : diagramme d’état 

IR <- Mem[PC]; PC <– PC+4; 

A <- R[rs]; B<– R[rt] 

BEQ/BNE 

S <– A + B; S <– A or ZX; S <– A + SX; S <– A + SX; If Cond 

PC < PC+SX; 

R[rd] <– S; 

SW M <– Mem[S] 

Mem[S] <- B 

3 cyc 

R type I type LW 

4 cyc R[rt] <– S; R[rd] <– M; 4cyc 4cyc 5 cyc 

1 Approche : toutes les instructions aient même nb d’étages 5 (5 Cyc) 

2 Approche : chaque type d’instruction ait son nombre d’étage

1 Approche de Pipeline : 5 étages 5 Etages pour Chargement (LW) 

L’exécution de l’instruction se fait en 5 étapes comme suit ! 1. Lecture de l’instruction 2. Décodage et en même temps lecture des registres 3. Calcul dans l’UAL 

❖ ❖ Instruction Instruction UAL UAL : : appliquer appliquer l’opération l’opération ❖ Instruction Mémoire : Calculer l’adresse ❖ Instruction de branchement : Calculer l’adresse de branchement 

et évaluer la condition 4. Accès mémoire 5. Mise à jour du registre destination (pour les UAL et loads) 

ou CP (pour les branchements) 

une seule UAL et deux ADD et deux mémoires 

Rappel :Chemin de données de monocycle 

une seule UAL et une seul mémoire : solution n’est pas retenue pour insuffisance de matériels 

Rappel :Chemin de données de multicycle 

Idée: Ajouter des registres intermédiaires pour sauvegarder les informations fournies par chaque étage

Idée de Base : Pipeline 

Pipeline : Ajout de registres intermédiaires 

10 

2PC 

100 

6R ea d ADD R1, R2, R3 

re gister 1 3

Rea d re gister 2

5Re ad data 1 

re Write 

gister 

R e gist ers 

data Re ad 2 3 2MuWrite x data 

Zero ALU 

ALU res ult

Ad dre ss 

R e ad data Data me mory 1 

Write 

1 Mux0 data 

16 Sign 

exte nd 

11 L’instruction contient des informations qui seront utilisées bien après la lecture 104 Sub R5, R6, R7 

(numéros de l’instruction. des registres, Il faut les signaux mémoriser. 

de contrôle, 11 

…) 

Les instructions ne sont pas sauvegardées 

4 Add Add re s ult 

Shift 

EX: Execute/ address calculation 

MEM: Memory access 

Num de reg Contenu reg Branchement terminé étape 4 IF: Instruction fetch ID: Instruction decode/ 

register file read 0WB: Write 

back 

Mux1Ad d 

le ft 2 

Addres s 

Instruction 

Instruction 

me mory 

32 

R ea d PC 

re gister 1 

R e a d 

R ea d 

dat a 1 re gister 2Ze ro 

R egiste rs Write re gister 

R e a d dat a 2 

Write 0 dat a 

16 Sign 

ext e nd 

ALU 

ALU Mre s ult R uD ata

me mory 

ea d da ta 

Write data 

Ad dre ss 

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 

1 Mux12 

Chemin de données pipeline : ajout des buffers 

0Buffer pour stocker le résultat : le tapis roulant Mux1Ad d 

4 Add Ad d 

re s ult 

S hift left 2 

In str uction 

me mory 

IF/ID ID/EX 

EX/ MEM MEM/W B 

Addre ss 

3 2 

R ea d PC 

re gister 1 

R e a d 

R ea d 

dat a 1 re gister 2Ze ro 

R egiste rs Write re gister 

R e a d dat a 2 

ALU 

ALU Mre s ult uD ata

me mory 

Write 0 dat a 

16 Sign 

ext e nd 

R ea d da ta 

Write data 

Ad dre ss 

13 

1 Mux

Chemin de données pipeline : ajout des buffers 

0MuBuffer pour stocker le résultat : le tapis roulant x1Ad d 

4 Add Ad d 

re s ult 

S hift left 2 

In str uction 

me mory 

IF/ID ID/EX 

EX/ MEM MEM/W B 

Addre ss 

3 2 

R ea d PC 

re gister 1 

R e a d 

R ea d 

dat a 1 re gister 2Ze ro 

R egiste rs Write re gister 

R e a d dat a 2 

ALU 

ALU Mre s ult uD ata

me mory 

Write 0 dat a 

16 Sign 

ext e nd 

R ea d da ta 

Write data 

Ad dre ss 

14 

1 Mux

Chemin de données pipeline : ajout des buffers 

0Buffer pour stocker le résultat : le tapis roulant Mux1Ad d 

4 Add Ad d 

re s ult 

S hift left 2 

In str uction 

me mory 

IF/ID ID/EX 

EX/ MEM MEM/W B 

Addre ss 

3 2 

R ea d PC 

re gister 1 

R e a d 

R ea d 

dat a 1 re gister 2Ze ro 

R egiste rs Write re gister 

R e a d dat a 2 

ALU 

ALU Mre s ult uD ata

me mory 

Write 0 dat a 

16 Sign 

ext e nd 

R ea d da ta 

Write data 

Ad dre ss 

15 

1 Mux

Chemin de données pipeline : ajout des buffers 

0MuBuffer pour stocker le résultat : le tapis roulant x1Ad d 

4 Add Ad d 

re s ult 

S hift left 2 

In str uction 

me mory 

IF/ID ID/EX 

EX/ MEM MEM/W B 

Addre ss 

3 2 


ER 

NHA/MMY Pipeline 

Based on UCB 

Page : 16 

Contrôle 

ERMEX 

ER

ER

EI/DI DI/EX EX/MEM MEM/ER 

Processeur avec pipeline 

Remarques sur le traitement en pipeline 

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 

Ifetch Reg/Dec Exec Mem Wr 

15ns 5ns 10ns 15ns 5ns 

IRDE Mem Wr 30ns 15ns 5ns 

CLK=15ns 

CLK=30ns 

17 

Remarques sur le traitement en pipeline 

18 

Représentation d’exécution en pipeline à 5 étages 

Temps 

IFetch Dcd Exec Mem WB 

IFetch Dcd Exec Mem WB 

IFetch Dcd Exec Mem WB 

IFetch IFetch Dcd Dcd Exec Exec Mem Mem WB WB 

IFetch Dcd Exec Mem WB 

Déroulement du programme 

IFetch Dcd Exec Mem WB Phase de déchargement: sauvegarde des résultats19 

Comparaison: 1-Cycle, Multi-Cycle, Pipeline 

Clk 

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 

Implémentation Multi-Cycle: 

LW SW 

Ifetch Reg Exec Mem Wr 

Implementation Pipeline: 

LW Ifetch Reg Exec Mem Wr 

SW 

Ifetch Reg Exec Mem Wr R-type 

Ifetch Reg Exec Mem 

Ifetch 

R-type 

Ifetch Reg Exec Mem Wr 20 

Pourquoi le pipeline? 

Ifetch Reg Exec Mem Wr 10 +7 +10 +10 +7 

– 44 ns/cycle x 1 CPI x 100 inst = 4400 ns 

– 10 ns/cycle x 4.1 CPI (mixte d ’instructions) x 100 inst = 4100 ns 

– 10 ns/cycle x (1 CPI x 100 inst + 4 cycles remplissage) = 1040 ns 

CPI=Cycle Par Instruction 21 

OrdreI 

nstructions 

Temps (cycles) 

Inst 0 

Inst 1 

Im Reg Dm Reg 

Inst 1 

Im Reg Dm Reg 

Inst 2 Inst 3 

Inst 4 

Ressources Disponibles! 

Im Reg Dm Reg 

Im Reg Dm Reg 

Im Reg Dm Reg 

Im Reg Dm Reg 

22 

Problèmes avec les Pipelines? 

– Aléas de contrôle: prendre décision avant d’évaluer la 

condition 

– Aléas de données: utilisation d’une donnée avant qu’elle 

soit prête soit prête 

plusieurs fois en même temps – Aléas résolus par suspension (attente) – Aléas résolus par prédiction (correcteur) – Aléas résolus par renvoi (envoyer l’information d’un étage à 

un autre) 

Mémoire : Aléas de structure 

Temps 

Load 

Mem Reg Mem Reg 

Instr 1 

Mem Reg Mem Reg 

Instr 2 

Mem Reg Mem Reg 

Instr 3 

Reg Mem Reg 

Instr 4 

Mem Reg Mem Reg 

Mem 

Mem 

NHA/MMY Détection Pipeline 

facile ! Solution limite la performance. 

Based on UCB 

Page : 24 

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 

06: add r8,r1,r9 

14: and r2,r3,r5 

18: or r6,r1,r7 

22: sub r8,r1,r9 

36: xor r10,r1,r11 37: ori r2,r1,20 38: add r9,r3,r5 10: beq r1,r3,36 

Ifetch Reg DMem Reg 

14: and r2,r3,r5 Ifetch Ifetch Reg Reg DMem DMem Reg Reg 

Ifetch Reg DMem Reg 

Ifetch Reg DMem Reg 

Ifetch Reg DMem Reg 

25 Page : 25 

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 Add 

Beq 

And 

Mem Reg Mem Reg 

Bulle Bulle 

Mem Reg Mem Reg Stall 

Suspension 

26 

Temp (en cycles) 

Add Mem Reg Mem Reg 

or 

sub 

Mem Reg Mem Reg 

Mem Reg Mem Reg 

Mem Reg Mem Reg xor 

27 Pas de cycle perdu 

2éme Solution: Prédiction 

  1. a) Prédiction: Bonne (pas de saut : ZF=0)Temps (en cycles) 

Add 

Beq 

Mem Reg Mem Reg 

*: condition n’est pas 

*: condition n’est pas 

Mem Reg

Mem Reg 

Mem Reg 

vérifiée 

vérifiée 

And 

Mem Reg Mem Reg 

2éme Solution: Prédiction 

Beq NOP And 

or 

Mem Reg Mem Reg 

Xor 

2 cycles perdues 

Mem Reg Mem Reg 

37: ori 

Impact: 1 cycles / instruction saut si prédiction est correcte zf=1, 2 cycle en cas d ’erreur zf=0 Mem Reg Mem Reg (condition correcte = saut =50%) 

28 

Prédiction: est fausse (il ya un saut ZF=1)Temps (en cycles) 

Add Mem Reg Mem Reg 

Mem Reg

Mem Reg 

Mem Reg Mem Reg 

*: condition vérifiée 

Aléas de donnée 

Temps (en cycles) 

add r1,r2,r3 

sub r4,r1,r3 

F ID/R EX ME ER Im 

Reg Dm Reg 

Im Reg Dm Reg 

and r6,r1,r7 

or r8,r1,r9 

xor r10,r1,r11 

Im Reg Dm Reg 

Im Reg Dm Reg 

Im Reg Dm Reg 

29 

Solution Aléas de Données

Temps (en cycles) 

add r1,r2,r3 

sub r4,r1,r3 

IF ID/RF EX MEM WB Im Reg Dm Reg 

Im Reg Dm Reg 

and r6,r1,r7 

or r8,r1,r9 

xor r10,r1,r11 

Im Reg Dm Reg 

Im Reg Dm Reg 

Im Reg Dm Reg 

30 

Aléas de données: cas Load 

Temps (en cycles) 

lw r1,0(r2) 

sub r4,r1,r3 

ID/RF Probléme IEX MEM WB F Im Reg Dm Reg 

Im Reg Dm Regsolution Im Reg 

Bulle Dm Reg Suspension 

31 

Rappel : diagramme d’état 

IR <- Mem[PC]; PC <– PC+4; 

A <- R[rs]; B<– R[rt] 

BEQ/BNE 

S <– A + B; S <– A or ZX; S <– A + SX; S <– A + SX; If Cond 

PC < PC+SX; 

R[rd] <– S; 

SW M <– Mem[S] 

Mem[S] <- B 

3 cyc 

R type I type LW 

4 cyc R[rt] <– S; R[rd] <– M; 4cyc 4cyc 5 cyc 

1 Approche : toutes les instructions aient même nb d’étages 5 (5 Cyc) 

2 Approche : chaque type d’instruction ait son nombre d’étage 

32 

Problème avec Pipeline à n étages suivant type d’instruction 

-Aléas de structure: utilisation d’une même ressource plusieurs fois en même temps temps 

-Résolution: par suspension (attente) ou ajout d’étape 

33 

Rappel : Instruction de chargement LW 

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 

Clock 

1er lw Ifetch Reg/Dec Exec Mem Wr • Les 5 unités indépendantes du chemin données pipeline: 

– Mémoire Instruction pour étape Ifetch – – Port Port lecture lecture du du Banc Banc Registres Registres (bus (bus A A et et bus bus B) B) pour pour étape étape Reg/Dec – ALU pour étape Exec – Mémoire données pour étape Mem – Port lecture du Banc Registres port écriture (bus W) à l ’ 

étape Wr 

34 

Rappel : Instruction type-R 

– Lecture de l ’instruction de mémoire instructions 

Cycle 1 Cycle 2 Cycle 3 Cycle 4 

R-type Ifetch Reg/Dec Exec Wr • Reg/Dec 

– Lecture registres et décodage de l ’instruction 

– Opération ALU sur les deux registres 

35 

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 

R-type 

Ifetch Reg/Dec Exec Wr Problème! 

R-type 

Ifetch Reg/Dec Exec Wr LW 

LW 

Ifetch Ifetch Reg/Dec Reg/Dec Exec Exec Mem Mem Wr Wr R-type Ifetch Reg/Dec Exec Wr R-type Ifetch Reg/Dec Exec Wr • Un conflit (aléas de structure ou 

matériel): 

– Deux instructions :écriture dans le Banc registre en 

Deux Solutions possibles: -suspendre même temps! – Un seul port écriture 

-ralentir 

36 

Solution 1: Suspension du pipeline 

Clock 

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 

Ifetch Reg/Dec Exec Wr 

Load 

Ifetch Reg/Dec Exec Mem Wr R-type 

Ifetch Reg/Dec Exec Wr R-type Ifetch Reg/Dec Bulle 

Exec Wr R-type 

Ifetch Pipeline Reg/Dec Exec Wr • Insertion de “bulle” pour élimination de conflit: 

– Logique de contrôle compliquée. – Pas de démarrage de nouvelle instruction. 

Ifetch Reg/Dec Exec 

37 

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 Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 

Clock 

R-type 

Ifetch Reg/Dec Exec Mem Wr R-type Ifetch Reg/Dec Exec 

Mem Wr Load 

Ifetch Reg/Dec Exec Mem Wr R-type Ifetch Reg/Dec Exec Mem Wr R-type Ifetch Reg/Dec Exec Mem Wr Chargement de pipeline 38 

Solution : Modification Chemin&Contrôle 

IR <- Mem[PC]; PC <– PC+4; 

A <- R[rs]; B<– R[rt] 

S <– A + B; S <– A or ZX; S <– A + SX; 

S <– A + SX; 

M <– Mem[S] 

Mem[S] <- B 

if Cond PC < PC+SX; 

M <– S M <– S 

Beq/Bne M <– S 

M <– S 

M <– Mem[S] Mem[S] <- B R[rd] <– M; 

R[rt] <– M; R[rd] <– M; R type I type Load 

A

Sw 

S M 

39 

Solution pour instruction SW 

Cycle 1 Cycle 2 Cycle 3 Cycle 4 

Ifetch Reg/Dec Exec Mem SW Wr 

NOP (pas d’opération) pour étape WR 

40 

Solution pour Beq 

Cycle 1 Cycle 2 Cycle 3 Cycle 4 

Ifetch Reg/Dec Exec Mem Beq Wr 

NOP (pas d’opération) pour étape Mem et WR 

Conclusion : On converge vers utilisation de Pipeline à 5 étages 

41 

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 28 ori r8, r9, 17 

32 add r10, r11, r12 

100 and r13, r14, 15 

42 

n n

Mem Ctrl 

rs rt 

Exec Ctrl 

WB Ctrl 

WB Ctrl 

Fetch 10 

A

10 lw r1, r2(35) 

14 addI r2, r2, 3 

20 sub r3, r4, r5 

24 beq r6, r7, 100 

30 ori r8, r9, 17 

34 add r10, r11, r12 

100 and r13, r14, 15 

43 

rs rt 

Fetch 14, Decode 10

n

Exec Ctrl 

Mem Ctrl 

A

WB Ctrl 

10 lw r1, r2(35) 

14 addI r2, r2, 3 

20 sub r3, r4, r5 

24 beq r6, r7, 100 

30 ori r8, r9, 17 

34 add r10, r11, r12 

100 and r13, r14, 15 

44 

Fetch 20, Decode 14, Exec 10 

n

Exec Ctrl 

A

Mem Ctrl 

WB Ctrl 

2 rt 

10 lw r1, r2(35)

14 addI r2, r2, 3 

20 sub r3, r4, r5 

24 beq r6, r7, 100 

30 ori r8, r9, 17 

34 add r10, r11, r12 

100 and r13, r14, 15 

45 

Fetch 24, Decode 20, Exec 14, Mem 10 

Exec Ctrl 

Mem Ctrl 

WB Ctrl 

4 5 

 lw r1, r2(35)

 addI r2, r2, 3 

sub r3, r4, r5 

beq r6, r7, 100 

ori r8, r9, 17 

 add r10, r11, r12 

100 and r13, r14, 15 

 

télécharger gratuitement cours de La technique du pipeline

Quitter la version mobile