ch 5 la pr diction des branchements
Download
Skip this Video
Download Presentation
Ch 5 : La Prédiction des Branchements

Loading in 2 Seconds...

play fullscreen
1 / 37

Ch 5 : La Prédiction des Branchements - PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on

Ch 5 : La Prédiction des Branchements. IUP3/ Master Info. 1 Smail Niar ISTV Université de Valenciennes [email protected] Les prédictions de branchement.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Ch 5 : La Prédiction des Branchements' - evelia


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
ch 5 la pr diction des branchements

Ch 5 : La Prédiction des Branchements

IUP3/ Master Info. 1

Smail Niar

ISTV Université de Valenciennes

[email protected]

[email protected]

les pr dictions de branchement
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.

[email protected]

pr diction branchements suite
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)

[email protected]

3 cycles perdus chaque branchement pris

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)

[email protected]

possibilit s dans le traitement des al as de contr le
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.Nia[email protected]

pr diction branchement suite
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

[email protected]

branchement pr dit pris
Branchement Prédit pris

Branch Target Buffer BTB

Adresse des branchements

valide

adresse de

l ’instruction

1/0

CP+4

CP

[email protected]

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 compilateur statique
Prédiction par le compilateurStatique
  • Les branchement arrière sont toujours prédit pris et les branchement avant sont toujours prédit non pris

[email protected]

Taken backwards

Not Taken Forwards

Always taken

le branchement retarde delayed branch
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

[email protected]

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:

Une instruction après le branchement est toujours exécutée

[email protected]

la pr diction dynamique des branchements
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

[email protected]

pr dicteur sur 1 bit
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

[email protected]

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 :

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

[email protected]

sch ma de pr diction avec 2 bits

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

[email protected]

rappel
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

[email protected]

(prédicateur BIMODAL)

PC

10

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

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

[email protected]

slide18
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.

[email protected]

b2

b2

bonne prédiction

mauvaise prédiction

slide19
[email protected]

(Transparent P.Michaud IRISA)

exemple1
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

[email protected]

exemple2
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: …..

[email protected]

slide22

Résultat : Si on ne branche pas sur L1 alors

on ne branche pas sur L2

NT : Not Taken

ou branchement

non pris NP

[email protected]

performance de la pr diction avec 1 bit avec une s quence 2 0 2 0

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

[email protected]

m ch se avec deux bits par branchement

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

[email protected]

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

pr diction avec un bit et un bit de corr lation

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

[email protected]

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

[email protected]

...

...

1 0

selectionner

dernier branchement

0

bascule D

pr diction avec deux bits et deux bits de corr lations

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.

[email protected]

Le registre BHR indique

le résultat des deux derniers

branchements

r sum des symboles
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

[email protected]

pr dicteurs gag et gap

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

[email protected]

plusieurs registres d calage historique local

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)

[email protected]

Pap(4)

valuation des performances
É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

[email protected]

autres pr dicateurs deux niveaux
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

[email protected]

gselect et gshare
gselect et gshare

PHT

PHT

m+n

m

Conca

OUX

[email protected]

m

n

m

m

PC

BHR

PC

BHR

gselect

gshare

quelques chiffres
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)

[email protected]

ad