Réduction des coûts de branchement avec prédiction dynamique

Preview:

DESCRIPTION

Réduction des coûts de branchement avec prédiction dynamique. Recall from Pipelining Review. Pipeline CPI = Ideal pipeline CPI + Structural Stalls + Data Hazard Stalls + Control Stalls Ideal pipeline CPI : measure of the maximum performance attainable by the implementation - PowerPoint PPT Presentation

Citation preview

1

Réduction des coûts de branchement avec prédiction dynamique

2

Recall from Pipelining Review

• Pipeline CPI = Ideal pipeline CPI + Structural Stalls + Data Hazard Stalls + Control Stalls– Ideal pipeline CPI: measure of the maximum performance

attainable by the implementation– Structural hazards: HW cannot support this combination of

instructions– Data hazards: Instruction depends on result of prior

instruction still in the pipeline– Control hazards: Caused by delay between the fetching of

instructions and decisions about changes in control flow (branches and jumps)

3

Coût d’un branchement : rappel

Inst.Brancht LI DI EX MEM ER

Successeur br LI NOP NOP NOP DI EX MEM ER

Succ. br+1 LI DI EX MEM ER

Succ. br+2 LI DI EX MEM

Succ. br+3 LI DI EX

Succ. br+4 LI DI

Succ. br+4 LI

4

Réduction du coût d’un branchement

Transfert du test à zéro et le calcul de l’adresse

de branchement dans la phase DI du pipeline

5

Réduction des pénalités

• Les prédictions statiques sont fixes pour chaque branchement pendant toute l’exécution, et les prédiction sont faites à la compilation.

• La politique de branchement « prédiction non pris » consiste à lire les instructions comme si le branchement était une instruction normale.

Inst.Brancht non pris LI DI EX MEM ER

Inst i+1 LI DI EX MEM ER

Inst i+2 LI DI EX MEM ER

Inst i+3 LI DI EX MEM ER

Inst i+4 LI DI EX MEM ER

6

Réduction des pénalités

• Si le branchement est pris pendant DI, on recommence la lecture à partir de la destination du branchement. Ceci fait que les instructions suivant le branchement sont suspendues pendant un cycle

Inst.Brancht pris LI DI EX MEM ER

Inst i+1 LI rien

Cible du brancht LI DI EX MEM ER

Cible du brancht+1 LI DI EX MEM ER

Cible du brancht+2 LI DI EX MEM ER

7

Branchement différé

• Cette technique est utilisé dans beaucoup d’unités de contrôle microprogrammées.

• Dans un branchement différé, le cycle d’exécution avec un délai de branchement de n est :

Instruction de branchement Successeur 1 séquentiel

Successeur 2 séquentiel…Successeur n séquentiel

Destination du branchement si pris

• Ces n instructions sont exécutées que le branchement soit pris ou non

8

Branchement différé

Inst.Brancht non pris LI DI EX MEM ER

Inst i+1 délai de br LI DI EX MEM ER

Inst i+2 LI DI EX MEM ER

Inst i+3 LI DI EX MEM ER

Inst i+4 LI DI EX MEM ER

Inst.Brancht pris LI DI EX MEM ER

Inst i+1 délai de br LI DI EX MEM ER

Cible du brancht LI DI EX MEM ER

Cible du brancht+1 LI DI EX MEM ER

Cible du brancht+2 LI DI EX MEM ER

Si le branchement est pris l’exécution continue à l’instruction cible du branchement.Le travail du compilateur consiste à rendre les instructions suivantes valides et utiles.

9

Ordonnancement du délai du branchement

• Il existe trois techniques d’ordonnancement du délai

1. Instruction avant

2. Instruction cible

3. Instruction après

10

Ordonnancement du délai du branchement

• Ordonnancement d’une instruction d’avant

ADD R1,R2,R3

Si R2=0 alors

Délai

Cible du branchement

11

Ordonnancement du délai du branchement

• Ordonnancement d’une instruction d’avant le branchement

Si R2=0 alors

DélaiADD R1,R2,R3

ADD R1,R2,R3ADD R1,R2,R3

Si R2=0 alors

Délai

Besoins Cas d’amélioration de performance

Le branchement ne doit pas dépendre des instructions réordonnancées

Toujours

12

Ordonnancement du délai du branchement

• Instruction cible

SUB R4,R5,R6

ADDR1,R2,R3

Si R1=0 alors

Délai

SUB R4,R5,R6

ADDR1,R2,R3

Si R1=0 alors

DélaiSUB R4,R5,R6

Besoins Cas d’amélioration de performance

On doit pouvoir exécuter les instructions réordonnées si le branchement n’est pas pris. On peut devoir dupliquer les instructions.

Quand le branchement est pris. Peut augmenter le programme si les instructions sont dupliquées

Si la destination du branchement est accessible d’un autre point du programme (ce qui se passe pour un début de boucle), les instructions destination doivent être dupliquées et pas seulement déplacées.

13

Ordonnancement du délai du branchement

• Ordonnancement d’une instruction après

Si R1=0 alors

Délai

SUB R4,R5,R6

SUB R4,R5,R6

ADD R1,R2,R3ADD R1,R2,R3

Si R1=0 alors

Délai

SUB R4,R5,R6

Besoins Cas d’amélioration de performance

On doit pouvoir exécuter les instructions réordonnées si le branchement est pris.

Quand le branchement n’est pas pris.

14

• Réduction des pénalités de branchement par la prédiction matérielle dynamique

Cette partie met l’accent sur l’utilisation de matériel pour prévoir le comportement du branchement : la prédiction changera si le branchement change son comportement à l’exécution du programme.

15

La prédiction de branchement

Prédis prisPrédis pris Prédis non prisPrédis non pris

Pris Non Pris

Non Pris

Pris

Le tampon de prédiction de branchement ou table d’histoire des branchements Constitue la solution de prédiction dynamique la plus simple.Le tampon est une mémoire indexée par la partie basse de l’adresse de l’instruction de branchement.Deux adresses peuvent avoir le même tampon.

16

La prédiction de branchement

Prédis prisPrédis pris Prédis non prisPrédis non pris

Pris Non Pris

Add R1,R2,R3L1 : subi R3,R4,R5

Bnez R3, L1 Branchement b

Non Pris

Pris

17

La prédiction de branchement

Prédis prisPrédis pris Prédis non prisPrédis non pris

Pris * 8 Non Pris

Add R1,R2,R3L1 : subi R3,R4,R5

Bnez R3, L1 Branchement b

Non Pris

Pris

18

La prédiction de branchement

Add R1,R2,R3L1 : subi R3,R4,R5

Bnez R3, L1 Branchement b

Prédis prisPrédis pris Prédis non prisPrédis non pris

Pris Non Pris

Non Pris

Pris

19

La prédiction de branchement

Les états d’un schéma de prédiction à deux bits. Les deux bits sont utilisés pour coder les quatre états du système.

20

La prédiction de branchement

Predict takenPredict taken

21

La prédiction de branchement

Predict takenPredict taken

Taken

22

La prédiction de branchement

Predict takenPredict taken

23

La prédiction de branchement

Predict takenPredict taken

NotTaken

24

La prédiction de branchement

Les états d’un schéma de prédiction à deux bitsBilan : en utilisant deux bits plutôt qu’un, un branchement qui favorise fortement l’option prise ou non prise, comme beaucoup de branchement le font, ne sera mal prédit qu’une seule fois.

25

Prédiction à corrélation

• Les schémas de prédiction à deux bits utilisent le comportement récent d’un branchement pour prédire le comportement futur de ce branchement.

• Il est possible d’améliorer la prédiction en considérant, non seulement le comportement dont on essaie de prédire le comportement, mais aussi le comportement récent d’autres branchement.

26

Prédiction de branchement

If (d==0)

d=1

If (d==1)

BNEZ R1,L1

ADDI R1,R0,#1

L1 : SUBI R3,R1,#1

BNEZ R3,L2

L2 :

; branchement b1 (d!=0)

; d==0 donc d=1

; branchement b2 (d!=1)

L2 :

d dans R1

27

Séquence d’exécution possible

BNEZ R1,L1

ADDI R1,R0,#1

L1 : SUBI R3,R1,#1

BNEZ R3,L2

L2 :

; branchement b1 (d!=0)

; d==0 donc d=1

; branchement b2 (d!=1)

L2 :

Valeur initiale de d

d==0 ? b1 (d=!0) Valeur de d avant b2

d==1 ? b2

0 oui Non pris

28

Séquence d’exécution possible

BNEZ R1,L1

ADDI R1,R0,#1

L1 : SUBI R3,R1,#1

BNEZ R3,L2

L2 :

; branchement b1 (d!=0)

; d==0 donc d=1

; branchement b2 (d!=1)

L2 :

Valeur initiale de d

d==0 ? b1 Valeur de d avant b2

d==1 ? b2 (d=!1)

0 oui Non pris 1 oui Non pris

29

Séquence d’exécution possible

BNEZ R1,L1

ADDI R1,R0,#1

L1 : SUBI R3,R1,#1

BNEZ R3,L2

L2 :

; branchement b1 (d!=0)

; d==0 donc d=1

; branchement b2 (d!=1)

L2 :

Valeur initiale de d

d==0 ? b1 Valeur de d avant b2

d==1 ? b2

0 oui Non pris 1 oui Non pris

1 non pris 1 oui Non pris

2 non pris 2 non pris

30

Séquence d’exécution possible

BNEZ R1,L1

ADDI R1,R0,#1

L1 : SUBI R3,R1,#1

BNEZ R3,L2

L2 :

; branchement b1 (d!=0)

; d==0 donc d=1

; branchement b2 (d!=1)

L2 :

Valeur initiale de d

d==0 ? b1 Valeur de d avant b2

d==1 ? b2

0 oui Non pris 1 oui Non pris

1 non pris 1 oui Non pris

2 non pris 2 non pris

31

Comportement d’un prédicateur 1 bit

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT T T NT T T

32

Comportement d’un prédicateur 1 bit

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT T T NT T T

0 T T

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT T T NT T T

0 T NT NT T NT NT

33

Comportement d’un prédicateur 1 bit

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT T T NT T T

0 T NT NT T NT NT

2 NT T T NT T T

0 T NT NT T NT NT

Tous les branchement sont mal prédits

34

Prédicteur à corrélation

• Les prédicteurs de branchement qui utilisent le comportement d’autres branchements pour effectuer leur prédiction sont appelés prédicteurs à corrélation ou prédicteurs à deux niveaux.

Prédiction (1,1)

Prédiction (1,1)

(1, = comportement du dernier branchement

,1) = paire de prédicateur à 1 bit

paire de prédicateur à 1 bit =

(Préd.1,Préd.2)

35

36

Prédiction (1,1)

Bits de prédiction Prédiction si le dernier br est non pris

Prédiction si le dernier br est pris

NT/NT Non pris Non pris

NT/T Non pris pris

T/T pris pris

T/NT pris Non pris

Paire de prédicateur à 1 bit = (Préd.1,Préd.2), on code la prédiction sur deux bitsSi le dernier branchement est non pris la prédiction est Préd1Si le dernier branchement est pris la prédiction est Préd2

37

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT NT/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

38

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

39

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

NT/NT

T

40

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

41

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

NT/NT la prédiction soulignée est la prédiction utilisée.

42

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT/T

NT/NT la prédiction soulignée est la prédiction utilisée.

43

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT/T

NT/NT la prédiction soulignée est la prédiction utilisée.

T/NT

T

44

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T

NT/NT la prédiction soulignée est la prédiction utilisée.

45

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T

NT/NT la prédiction soulignée est la prédiction utilisée.

NT/T

NT

46

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T NT NT/T

NT/NT la prédiction soulignée est la prédiction utilisée.

47

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T NT T/NT

2 T/NT T/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

48

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T NT T/NT

2 T/NT T/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

T/NT

NT

49

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T NT T/NT

2 T/NT T T/NT T/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

50

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T NT T/NT

2 T/NT T T/NT T/NT

NT/NT la prédiction soulignée est la prédiction utilisée.

T/NT

T

51

Prédiction avec bit de corrélation

d=? b1 prédiction

b1 action Nouvelle prédiction de b1

b2 prédiction

b2 action Nouvelle prédiction de b2

2 NT/NT T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T NT T/NT

2 T/NT T T/NT T/NT T NT/T

0 T/NT NT T/NT NT/T NT NT/T

NT/NT la prédiction soulignée est la prédiction utilisée.

Rem : b1 n’est en rien corrélé avec la prédiction b2.

52

Tampon de prédiction de branchement (2,2)

• Un tampon de prédiction de branchement (2,2) utilise un historique de 2 bits pour choisir à partir de 4 prédicteurs pour chaque adresse de branchement.

• Chaque prédicteur est à son tour un prédicteur 2 bits pour ce branchement particulier.

53

Tampon de prédiction de branchement (2,2)

Registre à décalage

54

Tampon de destination de branchement

• On appelle tampon de destination de branchement ou cahce de destinations de branchement un cache qui contient l’adresse prédite de l’instruction qui suit le branchement.

• L’idée est d’accéder au tampon de prédiction de branchement durant le cycle LI (un cycle plus tôt que pour un tampon de prédiction de branchement).

55

Tampon de destination de branchement

56

Tampon de destination de branchement

57

Gérer une instruction avec tampon de dest. de br

58

Gérer une instruction avec tampon de dest. de br

59

Gérer une instruction avec tampon de dest. de br

60

Gérer une instruction avec tampon de dest. de br

Cycle de pénalité A - 2 B - 2 0

A- Si le branchement n’est pas trouvé dans le tampon et que l’instruction est en fait un branchement, on devra procéder comme si l’instruction était un branchement et faire comme si on utilisait une stratégie « non pris » ; la pénalité dépendra du fait que le branchement soit effectivement pris ou non.B- Si la prédiction est incorrecte, on a un retard d’un cycle lié à la lecture de la mauvaise instruction et on recommence la lecture un cycle après.