23
La technique du “pipeline” et la machine β 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

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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