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 IUP3/ Master Info. 1 Smail Niar ISTV Université de Valenciennes

Présentations similaires


Présentation au sujet: "Ch 5 : La Prédiction des Branchements IUP3/ Master Info. 1 Smail Niar ISTV Université de Valenciennes"— Transcription de la présentation:

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

2 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 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 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 4 3 cycles perdus à chaque branchement (pris)

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

6 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 ny 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 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 8 CP Adresse des branchements adresse de l instruction valide 1 0 CP CP+4 Branchement Prédit pris Lors de la phase Fetch Instruction on écrit dans PC, de la prochaine instruction à exécuter soit PC + 4 ou bien branchement 1/0 Branch Target Buffer BTB Control

9 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 Always taken Taken backwards Not Taken Forwards

10 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 successor 1 sequential successor sequential successor n branch target if taken cas particulier : BEQZ 2 cycle d attente pour le calcul de ladresse 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 11 Une instruction après le branchement est toujours exécutée 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:

12 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 linstruction 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 13 Prédicteur sur 1 bit Inconv Boucles : si le branch est toujours pris il y a 2 prédictions incorrects (mispredictions ): la première et la dernière 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 1 0

14 14 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

15 15 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 11 P 10 P 01 NP 00 NP P P P P

16 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 lhistorique) Branchement PC 10 PC (prédicateur BIMODAL)

17 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 luniversité. Collège Test à lentrée du lycée Série Math Série appliqué Lycée Université Test à lentrée de l université. b1 b2 MIAS SPI

18 18 Collège Test à lentrée du lycée Série Math Série appliqué Test à l entrée de l univer. b1 b2 Collège Test à lentrée du lycée Série Math Série appliqué Test à l entrée de l univer. b1 b2 bonne prédictionmauvaise prédiction 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….?

19 19 (Transparent P.Michaud IRISA)

20 20 Exemple 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

21 21 Exemple if (d!=0) go to L1 /*branchement b1*/ d=1 L1 : if(d!=1) go to L2 /*branchement b2*/ L2 : ……. BnezR1, L1 ;branch vers L1 si d<>0 AddiR1, R0, #1 ;d= =0, alors d =1 L1:SubR3, R1, #1 ;d- - BnezR3, L2 ;branch. B2 (si d<>0) ….. L2:…..

22 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

23 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

24 24 ^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) D= ?Prédiction b1 Action b1 Nouvelle prédiction b1 Predicti on b2 Action b2 Nouvelle prédiction b2 2NPP*NP P*NP 0 2 P*NP P*NP P 10 P 01 NP 00 NP P P P P % de mauvaise prédictions sur les deux branchement

25 25 0PP/NPNPP/NPNPNP/PNPNP/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 Deux mauvaises prédictions au début notées par *

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

27 27 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. Le registre BHR indique le résultat des deux derniers branchements Pattern History Tables PHTs (2-bit predictors)... (1, 1) Adresse branchement 10 bits 0 Registre de lhistorique des branchements Branch History Register BHR (2-bit shift register) 1 selectionner

28 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 lhistorique) 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 29 Prédicteurs GAg et GAp Index predict: taken BHR Branch Pattern History Table (PHT) shift direction Gag (4 bits) 1 seul BHT n... 2**n tables, # BHT de branchements BHR... GAp (4 bits) 1 seul reg d historique mais branchement Deux bits de prédiction

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

31 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* Gap116*2568 Pag 8 1* Pap8 16*2564

32 32 Nombre de Misses Échelle Logarithmique

33 33

34 34

35 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.BHRgselect4/4gshare8/

36 36 gselect et gshare PCBHR Conca PHT nm m+n PCBHR OUX PHT mm m gselect gshare

37 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 IUP3/ Master Info. 1 Smail Niar ISTV Université de Valenciennes"

Présentations similaires


Annonces Google