La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Ch 5 : La Prédiction des Branchements

Présentations similaires


Présentation au sujet: "Ch 5 : La Prédiction des Branchements"— Transcription de la présentation:

1 Ch 5 : La Prédiction des Branchements
IUP3/ Master Info. 1 Smail Niar ISTV Université de Valenciennes

2 Les prédictions de branchement
Il est intéressant de réduire au max les aléas de contrôle afin de maintenir un IPC=1 pour un processeur pipeliné, ou IPC>>1 pour un SS ou un VLIW Superscalaire ou VLIW: les instructions arrivent n fois plus rapidement => n cycles perdus à chaque suspension ou à chaque mauvaise prédiction de direction de branchement.

3 Prédiction branchements ….suite
15 à 30% des instructions sont des branchements Le résultat de la condition du branchement est connu tard ( cycle 4 sur MIPS/DLX) La cible du branchement est connu tard dans le pipeline : cycle 4 dans Mips pipeliné et dans Intel Xscale cycle 11 sur Pentium Pro (plus sur le pentium4) Cycle 6 sur Dec alpha 21164 idée: Evaluer ou prédire (spéculation) au plus tôt la condition et l ’adresse de branchement Si la prédiction n ’est pas bonne en fait marche arrière (annulation)

4 3 cycles perdus à chaque branchement (pris)
g C 1 T i m ( n c l o k y s ) 4 b q $ , 3 7 P r a x u t d I M D 2 w 5 6 8 9

5 Solution uniquement pour pour : beqz R1, etiq
Deux cycles perdus au lieu de 3

6 possibilités dans le traitement des aléas de contrôle
#1: Attendre et suspendre le pipeline tant que le branchement n ’est pas résolu (résultat compa. non connu) #2: On prédit toujours que le branchement n ’est pas pris Exécuter les instruction qui suivent le branchement Annuler les instructions chargées si branchement pris Il n’y a pas de danger de modifier l’état des registres car l ’écriture se fait à la fin du pipeline, après que la condition a été évaluée

7 Prédiction Branchement ..suite
Dans 47% des branchements MIPS, le branchement n ’est pas pris Avantage : PC+4 à été déjà calculé, il suffit de l ’utiliser pour avancer #3: On prédit que le branchement est pris et on commence à exécuter les instructions du branchement 53% des branchement sont pris dans le cas de la machines MIPS Mise en œuvre : pour chaque instruction de branchement on stocke du branchement dans une mémoire cache spécialisée

8 Branchement Prédit pris
Branch Target Buffer BTB Adresse des branchements valide adresse de l ’instruction 1/0 CP+4 CP Control Lors de la phase Fetch Instruction on écrit dans PC, de la prochaine instruction à exécuter soit PC + 4 ou bien branchement CP

9 Prédiction par le compilateur Statique
Les branchement arrière sont toujours prédit pris et les branchement avant sont toujours prédit non pris Taken backwards Not Taken Forwards Always taken

10 Le branchement retarde Delayed Branch
#4: Delayed Branch(se faire aider par le compilo) Les n instructions suivant l ’instr Branch sont toujours exécutées (pas de prédiction) branch instruction sequential successor1 sequential successor sequential successorn branch target if taken cas particulier : BEQZ 2 cycle d ’attente pour le calcul de l’adresse de branchement => n=2 (2 instruction dans le délai) cf. tr 25 On peut soit déplacer des instructions ou mettre des nops

11 Une instruction après le branchement est toujours exécutée
add r4, r5, r6 Beqz r4, etiq Sub r6, r3, r2 Add r1, r2, r3 …… …. etiq: Sub r6, r3, r2 Add r1, r2, r3 add r4, r5, r6 Beqz r4, etiq …… …. etiq:

12 La prédiction dynamique des branchements
Utilisation d ’une mémoire « tampon de branchement » BHT : Branch History Table (prédiction) BHT Indexée par l ’adresse de l’instruction branchement 1 bit à chaque branchement 0 on prédit «Non pris » noté NP ou NT 1 on prédit « pris » noté P ou T si la prédiction n ’est pas bonne on inverse le bit

13 Prédicteur sur 1 bit 1 BOUCLE etiq: ….. ……. …….. boucle: bne r1,r2, etiq Supposant: Bit prédiction initialisé à NT 0 il y a 10 itérations Première itération : Prédiction NT , erreur Dernière itération : Prédiction T, erreur Inconv Boucles : si le branch est toujours pris il y a 2 prédictions incorrects (mispredictions): la première et la dernière

14 Exemple : Si boucle externe fait m itérations
etiq1: i1 début Boucle1 i2 ….. etiq2: i3 Début Boucle2 i4 Si cond go to étiq2 …. Go to etiq1 Si boucle externe fait m itérations et la boucle interne fait n itération: 2m fausses prédictions/ mn itérations exemple m=n=10 20% de fausses prédictions

15 Schéma de prédiction avec 2 bits
11 P 10 01 NP 00 On associe à chaque branchement deux bits YX Si Y=1 on prend le branch si Y= 0 on ne prend pas le branch

16 Rappel : BTB : Branch Target buffer, Buffer destinations des branchements BHT : « tampon de branchement » : Branch History Table, table des prédictions pour chaque (basée sur l’historique) PC Etiquette, @ Branchement (prédicateur BIMODAL) PC 10

17 La corrélation entre les branchements
Dans certains programmes, il y a des relations entre les instructions de branchements Branchements « biaisés » Un exemple de la vie courante: Orientation des étudiants pour des cours de mise à niveau. Les étudiants entrant à une université proviennent de 2 options . A : Option Math B : Option Physique b1: Test à l'entrée du lycée b2: Test à l ’entrée de l’université. Collège Test à l’entrée du lycée Série Math appliqué Lycée Université de l ’université. b1 b2 MIAS SPI

18 Les résultats des test à l ’entrée de l ’université ne sont connus qu ’un mois après, mais il faut commencer l ’année….? Collège Collège Test à l’entrée du lycée b1 Test à l’entrée du lycée b1 Série Math Série Math Série appliqué Série appliqué Test à l ’entrée de l ’univer. Test à l ’entrée de l ’univer. b2 b2 bonne prédiction mauvaise prédiction

19 (Transparent P.Michaud IRISA)
(Transparent P.Michaud IRISA)

20 Exemple Si d==0 avant le premier « If » ,
alors dans le deuxième If on trouvera d==1 Supposons que d est dans R1 if (d==0) /*branchement b1*/ d=1 if(d==1) /*branchement b2*/ …….

21 Exemple if (d!=0) go to L1 /*branchement b1*/ d=1 L1 :
Bnez R1, L ;branch vers L1 si d<>0 Addi R1, R0, #1 ;d= =0, alors d =1 L1: Sub R3, R1, #1 ;d- - Bnez R3, L ;branch. B2 (si d<>0) ….. L2: …..

22 Résultat : Si on ne branche pas sur L1 alors
NT : Not Taken ou branchement non pris NP

23 Performance de la prédiction avec 1 bit avec une séquence: 2, 0, 2, 0
Avec 1 bit 100% de mauvaise prédiction, initialement P1=NP P2=NP Branch1 Branch. 2 D= ? Prédiction b1 Action Nouvelle prédiction Predicti on b2 b2 2 NP P* P NP*

24 ^m chôse avec deux bits par branchement
11 P 10 01 NP 00 ^m chôse avec deux bits par branchement avec deux bits Supposons qu ’on démarre de l ’état 00. A chaque branchement est associé deux bits (le prédicateur) NP D= ? Prédiction Action Nouvelle Predicti Action Nouvelle b1 b1 prédiction on b2 b2 prédiction b1 b2 2 NP P* NP NP P* NP 00 00 01 01 NP NP NP NP NP NP 01 00 00 01 2 NP P* NP NP P* NP 01 00 00 01 NP NP NP NP NP NP 01 00 01 00 50 % de mauvaise prédictions sur les deux branchement

25 Prédiction avec un bit et un bit de corrélation
Chaque branchement est représenté dans la table par deux bits : Prédiction si dernier branchement non pris/prédiction si dernier branchement pris Exemple: pour b1= P/NP Si dern Branch non pris alors branchement Si dern Branch pris alors pas branchement D= ? Dernière Branch Prédiction b1 Action Nouvelle prediction Predicti on b2 b2 prédiction 2 NP NP/NP P* P/NP P NP/P P P/NP NP P/NP NP NP/P NP NP/P Deux mauvaises prédictions au début notées par *

26 Mise en œuvre matérielle
Table des prédicateurs Corrélation Prédiction 1 bit de prédiction et 1 bit de corrélation 1 Adresse branchement ... ... prédiction 1 ... ... selectionner dernier branchement bascule D

27 Prédiction avec deux bits et deux bits de corrélations
... Pattern History Tables PHTs (2-bit predictors) (1 , 1) Adresse branchement 10 bits Registre de l’historique des branchements Branch History Register BHR (2-bit shift register) 1 selectionner 1023 on prend en compte les deux derniers branchements Il y a 4 combinaisons possibles 00, 01, 10, 11 pour chaque combinaison il y a deux bits de prédictions. Le registre BHR indique le résultat des deux derniers branchements

28 Résumé des symboles BTB : Branch Target buffer, Buffer destinations des branchements BHT : « tampon de branchement » : Branch History Table, table des prédictions (basée sur l’historique) PHT : c ’est une BHT qui prend en compte les derniers branchements. Pour chaque configuration des n derniers branchements il y a une prédiction (un BHT) BHR : Branch History Register, registre à décalage contenant les résultats des derniers branchements exécutés. Utilisé pour accéder à la PHT

29 Prédicteurs GAg et GAp 1 seul BHT Gag (4 bits) Deux bits de prédiction
1100 ... 1 1 Index predict: taken BHR Branch Pattern History Table (PHT) shift direction Gag (4 bits) 1 seul BHT Deux bits de prédiction n ... 2**n tables, # BHT 1 1 1 Index @ de branchements BHR GAp (4 bits) 1 seul reg d ’historique mais branchement

30 Plusieurs Registres à décalage (historique local)
... 1 1 Index BHT 0 0 Branch address Pag(4) Plusieurs reg à dec d ’historique, 1 par branchement mais pas 1 BHR par Branch ... # BHT 1 1 b1 Index Per-address BHT 0 0 Branch address b2 Branch address b1 1 b2 Pap(4)

31 Évaluation des Performances
3 programmes de références SPEC CPU2000 : Gcc (compilateur), Equake (….), Wupwise (…) Simulateur : SimpleScalar, Pénalité miss Pred = 3 Sauter : 5M inst et exécuter : 10M, env 20% ins sont des branchements BTP : 512 sets et associativité : 4 Les 4 prédicateurs avec une complexité equivalentes Complexité évaluée avec Wattch : Évaluation de la consommation de puissance (4.9 nJ par accès à la BTP+BHR+BHT) #BHR #BHT #Corrélation = # bits reg Dec Gag : * Gap 1 16*256 8 Pag * Pap *256 4

32 Échelle Logarithmique
Nombre de Misses Échelle Logarithmique

33

34

35 Autres prédicateurs à deux niveaux...
gselect : Concaténation de qq bits de poids faible de branchement avec le registre BHR gshare : Appliquer un OUX sur une partie de de branchement et le BHR Addresse Instruction. BHR gselect4/4 gshare8/8

36 gselect et gshare gselect gshare m+n m m n m m PHT PHT Conca OUX PC
m n m m PC BHR PC BHR gselect gshare

37 Quelques chiffres Processeurs hautes performances :
P4 : prédiction dynamique des branchements : Adresse de la prochaine Trace BTB : 4 way set associative, 512 lignes, BHT : 4 bits. Lorsque pas de prediction possible  Pred Statique : Forward NT, Backward T G5 : 3 tables Local/global/selector taille de 16KB Athlon 64 bits : Digital/Compaq : Processeurs embarqués : Arm7 : Intel Xscale : BTB 128-entry (the address of a branch instruction, the target address associated with the branch instruction, and a previous history of the branch being taken or not taken), 4 states predictions (two bits)


Télécharger ppt "Ch 5 : La Prédiction des Branchements"

Présentations similaires


Annonces Google