Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
La technique du “pipeline”
et la machine β
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Les chemins de “bypass” 2
REGISTERFILE
Y MEM
IRALU
IRMEM
REGISTERFILE
WE
WDWA
IREXE
BA
RD1
RA1 RA2
RD2
A B
ALU
BYPASSESMUXES
22
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