pipeline et la machine - montefiore institutepw/cours/psfiles/struct-cours11.pdf · le...
TRANSCRIPT
![Page 1: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/1.jpg)
La technique du “pipeline”
et la machine β
1
![Page 2: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/2.jpg)
Rappel : une implementation “un cycle” de β
1 0ASEL
WDSEL1 20
ALUFN WrDATA
MEMORY
R/WWD
RDAdr
0 1 RA2SEL
Rc:<25:21>Rb:<15:11>Ra:<20:16>
OpIll
012PCSEL
XAdr JT
4 3
PC 00
1 0 BSEL
A
D
INSTRUCTIONMEMORY
+4
+
WASELWERFWrALUFNWDSEL
BSELASELRA2SELPCSEL
REGISTERFILE
WERF
PC+4
A B
ALU
C:SXT(<15:0>)
PC+4+4*SXT(C)
CONTROL LOGIC
Z
WA
RD1 RD2 WE
WD
RA2RA1
IRQ Z
JT
WASEL
XP 10
Rc:<25:21>
2
![Page 3: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/3.jpg)
Principe du pipeline
• Un pipeline est utile pour augmenter la cadence a laquelle un circuit
combinatoire profond peut traiter des donnees.
• Un pipeline consiste a diviser un circuit combinatoire en “couches” ou
stades (stages) et a separer ces couches par des registres.
• Les donnees sont sauvees dans des registres entre chaque couche ;
plusieurs phases sont donc necessaires pour traiter des donnees, mais
chaque phase peut etre nettement plus rapide.
• Le temps de transit des donnees a travers le circuit combinatoire est
inchange ou legerement augmente, mais la cadence de traitement des
donnees est fortement augmentee.
3
![Page 4: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/4.jpg)
Principe du pipeline : illustration
registre d’entrée
registre de sortie
horloge:
registre d’entrée
registre de sortie
horloge:
logique
logique 1
logique 2
logique 3
4
![Page 5: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/5.jpg)
Un pipeline pour β
• Dans l’implementation consideree de la machine β, la logique
combinatoire utilisee a chaque cycle comporte quatre stades (stages)
bien identifiables.
– La lecture de l’instruction dans la memoire d’instruction :
Instruction Fetch (IF) ;
– La lecture des arguments de l’instruction en cours dans les
registres : Register Fetch (RF)
– Le calcul de l’ALU : ALU ;
– La lecture de donnees en memoire (instruction LD) : Memory
(MEM) ;
– et se termine par l’ecriture des resultats dans les registres ·Write
Back (WB)
• Un pipeline a quatre stades semble donc tout indique. Pour simplifier,
nous commencerons par un pipeline a 2 stades : IF et EXE (execute).
5
![Page 6: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/6.jpg)
Une machine β avec pipeline a 2 stades
1 0ASEL
WDSEL1 20
ALUFN WrDATA
MEMORY
R/WWD
RDAdr
Z
WASELWERFWrALUFNWDSEL
BSELASELRA2SELPCSEL
ZIRQ
CONTROL LOGIC
0 1 RA2SEL
Rc:<25:21>Rb:<15:11>Ra:<20:16>
1 0 BSEL
REGISTERFILE
WERF
WA
RD1 RD2 WE
WD
RA2RA1
+
+4
PC 00IF
OpIll
012PCSEL
XAdr JT
4 3
A
D
INSTRUCTIONMEMORY
IR 00EXEPC 00EXE
PC+4
A B
ALU
C:SXT(<15:0>)
PC+4+4*SXT(C)
WASEL
XP 10
Rc:<25:21>
JT
6
![Page 7: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/7.jpg)
Le fonctionnement du pipeline a 2 stades
A tout moment, il y a deux instructions en execution : une au stade IF et
une au stade EXE.
Considerons par exemple le programme suivant : ADDC(r1, 1, r2)
SUBC(r1, 1, r3)
XOR(r1, r5, r1)
MUL(r2, r6, r0)
L’etat du pipeline evolue alors comme represente ci-dessous.
stade IF
stade EXE
ADDC SUBC XOR MUL
ADDC SUBC XOR MUL
...
...
i i+1 i+2 i+3 i+4 i+5 i+6
temps
7
![Page 8: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/8.jpg)
Le fonctionnement du pipeline a 2 stades :Le probleme des sauts
Lorsqu’une instruction de saut (JMP ou BXX) apparaıt, un probleme se pose
car l’instruction suivante a deja ete lue.
Considerons par exemple : LOOP: ADD(r1, r3, r3)
CMPLEC(r3, 100, r0)
BT(r0, LOOP)
XOR(r3, -1, r3)
Si le saut doit etre effectue, le pipeline est dans un etat incoherent.
stade IF
stade EXE
CMP XOR ...
...
i i+1 i+2 i+3 i+4 i+5 i+6
temps
ADD BT
ADD CMP BT ???
8
![Page 9: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/9.jpg)
Le fonctionnement du pipeline a 2 stades :Solutions au probleme des sauts
Il y a deux types de solutions possibles a ce probleme.
• Les solutions hardware : le hardware “annule” l’instruction qui suit
les sauts qui sont pris.
• Les solutions software : un saut est toujours suivi d’une instruction
sans effet (NOP), ou d’une instruction “utile” non problematique.
9
![Page 10: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/10.jpg)
Une machine β avec pipeline a 2 stades :La solution hardware au probleme des sauts
1 0ASEL
WDSEL1 20
ALUFN WrDATA
MEMORY
R/WWD
RDAdr
Z
0 1 RA2SEL
Rc:<25:21>Rb:<15:11>
1 0 BSEL
+
+4
PC 00IF
OpIll
012PCSEL
XAdr JT
4 3
A
D
INSTRUCTIONMEMORY
IR 00EXEPC 00EXE
WASELWERFWrALUFNWDSEL
ZIRQ
REGISTERFILE
WERF
PC+4
A B
ALU
C:SXT(<15:0>)
PC+4+4*SXT(C)
NOP10 ANNUL
CONTROL LOGIC
BSELASELRA2SELPCSEL
ANNUL
JT
Ra:<20:16>
WA
RD1 RD2 WE
WD
RA2RA1
WASEL
XP 10
Rc:<25:21>
10
![Page 11: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/11.jpg)
Une machine β avec pipeline a 2 stades :La solution hardware au probleme des sauts – exemple
Pour le programme suivantLOOP: ADD(r1, r3, r3)
CMPLEC(r3, 100, r0)
BT(r0, LOOP)
XOR(r3, -1, r3)
Si le saut est effectue, le pipeline se comporte comme suit.
stade IF
stade EXE
CMP XOR
i i+1 i+2 i+3 i+4 i+5 i+6
temps
ADD BT
ADD CMP BT
ADD CMP BT
ADDXOR
NOP
CMP
11
![Page 12: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/12.jpg)
Une machine β avec pipeline a 2 stades :premiere solution software – exemple
Une instruction NOP est ajoutee apres le saut.
LOOP: ADD(r1, r3, r3)
CMPLEC(r3, 100, r0)
BT(r0, LOOP)
NOP()
XOR(r3, -1, r3)
L’instruction NOP est systematiquement executee apres le saut, mais est
sans effet.
stade IF
stade EXE
CMP
i i+1 i+2 i+3 i+4 i+5 i+6
temps
ADD BT
ADD CMP BT ADD CMP
NOP
NOP
ADD CMP
12
![Page 13: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/13.jpg)
Une machine β avec pipeline a 2 stades :deuxieme solution software – exemple
Le programme precedent est reecrit comme suit.
LOOP: ADD(r1, r3, r3)
LOOPx: CMPLEC(r3, 100, r0)
BT(r0, LOOPx)
ADD(r1, r3, r3)
SUB(r3, r1, r3)
XOR(r3, -1, r3)
On insere donc apres BT une instruction de toute facon executee lorsque
l’on fait le saut (la majorite des cas) et l’on corrige l’effet de cette
instruction lorsque l’on ne fait pas le saut.
Il faut noter que le comportement de ce programme n’est pas correct sur
une machine sans pipeline.
13
![Page 14: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/14.jpg)
Une machine β avec pipeline a 4 stades
• La figure de l’ecran suivant montre une ebauche de realisation de la
machine β avec un pipeline a quatre stades.
• Les stades sont : IF, RF, ALU et MEM/WB.
• Les registres apparaissent comme un circuit combinatoire en lecture et
comme un circuit cadence par l’horloge en ecriture.
• Les registres se trouvant en bas de la figure sont identiques a ceux se
trouvant en haut de figure.
14
![Page 15: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/15.jpg)
1 0ASEL
Z
Ra:<20:16>
+
+4
PC 00IF
OpIll
012PCSEL
XAdr JT
4 3
A
D
INSTRUCTIONMEMORY
PC 00EXE IR
ALUFN
A B
ALU
D ALUPC 00ALU BAIRALU
Rc:<25:21>
XP
0 1WASEL WDSEL1 20
WERF
REGISTERFILE
WE
WDWANB : RF identiqueà celui ci−dessus.
PC 00MEM IRMEM Y MEM D MEM
WrDATA
MEMORY
R/WWD
RD
Adr
1 0 BSEL
0 1 RA2SEL
Rc:<25:21>Rb:<15:11>
REGISTERFILE
WA
RD1
RA1
RD2
RA2
C:SXT(<15:0>)
PC+4+4*SXT(C)
EXE
JT
15
![Page 16: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/16.jpg)
Le fonctionnement du pipeline a 4 stades
A tout moment, il y quatre instructions en execution.
Considerons par exemple le programme suivant : ADDC(r1, 1, r2)
SUBC(r1, 1, r3)
XOR(r1, r5, r1)
MUL(r2, r6, r0)
L’etat du pipeline evolue alors comme represente ci-dessous.
stade IF
stade RF
ADDC SUBC XOR MUL
ADDC SUBC XOR MUL
...
...
i i+1 i+2 i+3 i+4 i+5 i+6
temps
stade ALU
stade WB
ADDC
ADDC
SUBC
SUBC
XOR
XOR
MUL
MUL
16
![Page 17: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/17.jpg)
Le fonctionnement du pipeline a 4 stades : le problemedes conflits de donnees
Considerons par exemple le programme suivant : ADD(r1, r2, r3)
CMPLEC(r3, 100, r0)
MULC(r1, 100, r4)
SUB(r1, r2, r5)
l’instruction CMPLEC a besoin au temps i+2 du contenu du registre r3 qui ne
sera ecrit qu’a la fin du cycle i+3.
stade IF
stade RF
ADD CMP MUL SUB ...
...
i i+1 i+2 i+3 i+4 i+5 i+6
temps
stade ALU
stade WB
ADD
ADD
ADD
CMP
CMP
CMP
MUL
MUL
MUL
SUB
SUB
SUB
17
![Page 18: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/18.jpg)
Le fonctionnement du pipeline a 4 stades : le problemedes conflits de donnees – solution software
Une premiere solution consiste a modifier le programme pour qu’il n’existe
plus de conflits de donnees.
ADD(r1, r2, r3)
CMPLEC(r3, 100, r0)
MULC(r1, 100, r4)
SUB(r1, r2, r5)
devient ADD(r1, r2, r3)
MULC(r1, 100, r4)
SUB(r1, r2, r5)
CMPLEC(r3, 100, r0)
18
![Page 19: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/19.jpg)
Le fonctionnement du pipeline a 4 stades : le problemedes conflits de donnees – solution hardware 1
Une solution hardware consiste a bloquer le pipeline (et a inserer des NOP)
lorsqu’il y a un conflit de donnees.
stade IF
stade RF
ADD CMP MUL
i i+1 i+2 i+3 i+4 i+5 i+6
temps
stade ALU
stade WB
ADD
ADD
ADD
CMP
SUBMUL MUL
SUBMULCMP CMP
MULCMP
CMP
NOP NOP
NOP NOP
19
![Page 20: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/20.jpg)
Le fonctionnement du pipeline a 4 stades : le problemedes conflits de donnees – solution hardware 2
• Une deuxieme solution hardware consiste a introduire un
contournement (bypass) qui permet de recuperer la sortie de l’ALU a
la place de ce qui vient en lecture des registres.
• Il est aussi necessaire de pouvoir recuperer la sortie du stade WB
lorsque les instructions en conflit sont separees par une autre
instruction.
20
![Page 21: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/21.jpg)
Les chemins de “bypass” 1
REGISTERFILE
ALUFN
A B
ALU
IRALU B
IRMEM
REGISTERFILE
WE
WDWA
IREXE
A
RD1
RA1 RA2
RD2
Y MEM
BYPASSESMUXES
21
![Page 22: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/22.jpg)
Les chemins de “bypass” 2
REGISTERFILE
Y MEM
IRALU
IRMEM
REGISTERFILE
WE
WDWA
IREXE
BA
RD1
RA1 RA2
RD2
A B
ALU
BYPASSESMUXES
22
![Page 23: pipeline et la machine - Montefiore Institutepw/cours/psfiles/struct-cours11.pdf · Le fonctionnement du pipeline a 2 stades : Le probl eme des sauts Lorsqu’une instruction de saut](https://reader036.vdocuments.pub/reader036/viewer/2022081523/5fe016c8295b5f461e6b3113/html5/thumbnails/23.jpg)
Autres problemes a considerer dans les pipeline
• Une instruction LD en conflit avec une instruction qui la suit pose un
probleme qui n’est pas soluble par un bypass.
• La lecture en memoire peut etre lente, ce qui allonge le temps de
cycle. Une solution est d’ajouter un stade au pipeline et de laisser
deux cycles pour la lecture en memoire.
• Il faut correctement sauver LP en cas de saut et XP en cas d’exception
et assurer la coherence entre l’adresse de retour et ce qui a deja ete
execute.
23