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.