370 likes | 503 Views
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.
E N D
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
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
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
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
Solution uniquement pour pour : beqz R1, etiq Deux cycles perdus au lieu de 3 Smail.Niar@univ-valenciennes.fr
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
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
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
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
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
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
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
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
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
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
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
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
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
Smail.Niar@univ-valenciennes.fr (Transparent P.Michaud IRISA)
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
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
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
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
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
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 *
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
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
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
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
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)
É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
Nombre de Misses Échelle Logarithmique Smail.Niar@univ-valenciennes.fr
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
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
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