1 / 37

Ch 5 : La Prédiction des Branchements

Ch 5 : La Prédiction des Branchements. IUP3/ Master Info. 1 Smail Niar ISTV Université de Valenciennes smail.niar@univ-valenciennes.fr. Les prédictions de branchement.

kura
Download Presentation

Ch 5 : La Prédiction des Branchements

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ch 5 : La Prédiction des Branchements IUP3/ Master Info. 1 Smail Niar ISTV Université de Valenciennes smail.niar@univ-valenciennes.fr Smail.Niar@univ-valenciennes.fr

  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. Smail.Niar@univ-valenciennes.fr

  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) Smail.Niar@univ-valenciennes.fr

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

  5. Solution uniquement pour pour : beqz R1, etiq Deux cycles perdus au lieu de 3 Smail.Niar@univ-valenciennes.fr

  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 Smail.Niar@univ-valenciennes.fr

  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 l ’@ du branchement dans une mémoire cache spécialisée Smail.Niar@univ-valenciennes.fr

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

  9. Prédiction par le compilateurStatique • Les branchement arrière sont toujours prédit pris et les branchement avant sont toujours prédit non pris Smail.Niar@univ-valenciennes.fr 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 successor2 ........ 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 Smail.Niar@univ-valenciennes.fr

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

  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 Smail.Niar@univ-valenciennes.fr

  13. Prédicteur sur 1 bit 1 0 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 Smail.Niar@univ-valenciennes.fr 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 : Exemple: 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 Smail.Niar@univ-valenciennes.fr

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

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

  17. 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 b1 Série Math Série appliqué Lycée Test à l’entrée de l ’université. b2 Université SPI MIAS La corrélation entre les branchements Smail.Niar@univ-valenciennes.fr

  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. Smail.Niar@univ-valenciennes.fr b2 b2 bonne prédiction mauvaise prédiction

  19. Smail.Niar@univ-valenciennes.fr (Transparent P.Michaud IRISA)

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

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

  22. Résultat : Si on ne branche pas sur L1 alors on ne branche pas sur L2 NT : Not Taken ou branchement non pris NP Smail.Niar@univ-valenciennes.fr

  23. D= ? Prédiction Action Nouvelle Predicti Action Nouvelle b1 b1 prédiction on b2 b2 prédiction b1 b2 2 NP P* P NP P* P 0 P NP* NP P NP* NP 2 NP P* P P* P NP 0 P NP* NP P NP* NP 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 Smail.Niar@univ-valenciennes.fr

  24. P P 11 P 10 P NP NP P P 01 NP 00 NP NP ^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 Smail.Niar@univ-valenciennes.fr 0 NP NP NP NP NP NP 00 01 00 01 2 NP P* NP P* NP NP 01 00 00 01 0 NP NP NP NP NP NP 01 00 01 00 50 % de mauvaise prédictions sur les deux branchement

  25. D= ? Dernière Prédiction Action Nouvelle Dernière Predicti Action Nouvelle Branch b1 b1 prediction Branch on b2 b2 prédiction b1 b2 2 NP NP/NP P* P/NP P NP/NP P* NP/P 0 P P/NP NP P/NP NP NP/P NP NP/P 2 NP P/NP P P/NP P NP/P P NP/P 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 Smail.Niar@univ-valenciennes.fr 0 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 0 0 0 1 1 Adresse branchement ... ... prédiction 1 Smail.Niar@univ-valenciennes.fr ... ... 1 0 selectionner dernier branchement 0 bascule D

  27. Pattern History Tables PHTs (2-bit predictors) 0 Adresse branchement ... ... ... ... 10 bits (1 , 1) ... ... ... ... 1023 11 10 01 00 selectionner Registre de l’historique des branchements Branch History Register BHR 0 1 (2-bit shift register) Prédiction avec deux bits et deux bits de corrélations • 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. Smail.Niar@univ-valenciennes.fr Le registre BHR indique le résultat des deux derniers branchements

  28. Résumé des symboles • BTB : Branch Target buffer, Buffer des @ 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 Smail.Niar@univ-valenciennes.fr

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

  30. 1 BHR par Branch BHT ... ... b1 b2 Branch address 1 1 0 0 Pag(4) Per-address # BHT BHT Branch address 1 1 1 1 0 0 Plusieurs reg à dec d ’historique, 1 par branchement mais pas d ’@ Index ... ... ... ... Branch address b1 ... ... 1 1 0 0 ... Branch address b2 1 1 1 1 0 0 0 1 Index ... ... ... ... Plusieurs Registres à décalage (historique local) Smail.Niar@univ-valenciennes.fr 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 : 1 1*4096 12 • Gap 1 16*256 8 • Pag 8 1*4096 12 • Pap 8 16*256 4 Smail.Niar@univ-valenciennes.fr

  32. Nombre de Misses Échelle Logarithmique Smail.Niar@univ-valenciennes.fr

  33. Smail.Niar@univ-valenciennes.fr

  34. Smail.Niar@univ-valenciennes.fr

  35. Autres prédicateurs à deux niveaux... • gselect : Concaténation de qq bits de poids faible de l ’@ce branchement avec le registre BHR • gshare : Appliquer un OUX sur une partie de l’@ de branchement et le BHR Addresse Instruction. BHR gselect4/4 gshare8/8 00000000 00000001 00000001 00000001 00000000 00000000 00000000 00000000 11111111 00000000 11110000 11111111 11111111 10000000 11110000 01111111 Smail.Niar@univ-valenciennes.fr

  36. gselect et gshare PHT PHT m+n m Conca OUX Smail.Niar@univ-valenciennes.fr 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 21386 : • 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) Smail.Niar@univ-valenciennes.fr

More Related