35
1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

Embed Size (px)

Citation preview

Page 1: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

1EE524 / CptS561 Computer Architecture

Dynamic Branch Prediction

Page 2: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

2EE524 / CptS561 Computer Architecture

12%

22%

18%

11% 12%

4%6%

9% 10%

15%

0%

5%

10%

15%

20%

25%

com

pres

s

eqnt

ott

espr

esso gc

c li

dodu

cea

r

hydr

o2d

mdlj

dp

su2c

or

Mis

pre

dic

tio

n R

ate

Static Branch Prediction• Code around delayed branch• To reorder code around branches, need to predict

branch statically when compile • Simplest scheme is to predict a branch as taken

– Average misprediction = untaken branch frequency = 34% SPEC

• More accurate scheme predicts branches using profile information collected from earlier runs, and modify prediction based on last run:

Integer Floating Point

Page 3: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

3EE524 / CptS561 Computer Architecture

Dynamic Branch Prediction

• Why does prediction work?– Underlying algorithm has regularities– Data that is being operated on has regularities– Instruction sequence has redundancies that are

artifacts of way that humans/compilers think about problems

• Is dynamic branch prediction better than static branch prediction?– There are a small number of important branches in

programs which have dynamic behavior

Page 4: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

4EE524 / CptS561 Computer Architecture

Dynamic Branch Prediction

• Performance = ƒ(accuracy, cost of misprediction)• Branch History Table (BHT) is simplest

– Lower bits of PC address index table of 1-bit values– Says whether or not branch taken last time– No address check

• Problem: in a loop, 1-bit BHT will cause two mispredictions (avg is 9 iterations before exit):– End of loop case, when it exits instead of looping as before– First time through loop on next time through code, when it

predicts exit instead of looping

Page 5: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

5EE524 / CptS561 Computer Architecture

Branch History Table(Branch Target Buffer)

PC Target PC Prediction

3340

4460

3340 4460 1(T)

4520

3320

4520 3320 1(T)

Page 6: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

6EE524 / CptS561 Computer Architecture

Dynamic Branch Prediction

• Solution: 2-bit scheme where change prediction only if get misprediction twice

• Red: stop, not taken • Green: go, taken

Predicted Taken (11)

Taken

Not takenPredicted

Taken (10)Taken

Predicted (01) not Taken

Not taken

Not takenPredicted (00)

not TakenTaken

Not takenTaken

Page 7: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

7EE524 / CptS561 Computer Architecture

PC

Targ

et

Pre

dict

ion

Dynamic Branch Prediction

Predicted Taken

Taken

Not takenPredicted

TakenTaken

Predicted not Taken

Not taken

Not takenPredicted not TakenTaken

Not takenTaken

BHT

Page 8: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

8EE524 / CptS561 Computer Architecture

BHT Accuracy• Mispredict, reasons:

– Wrong guess for that branch– Got branch history of wrong branch when index the

table• 4096 entry table programs vary from 1%

misprediction (nasa7, tomcatv) to 18% (eqntott), with spice at 9% and gcc at 12%

• 4096 about as good as infinite table(in Alpha 211164)

18%

5%

12%10% 9%

5%

9% 9%

0% 1%

0%2%4%6%8%

10%12%14%16%18%20%

Mis

pre

dic

tio

n R

ate

Page 9: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

9EE524 / CptS561 Computer Architecture

Example

if ( d = =0 ) b1

d = 1

if ( d = = 1) b2

Page 10: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

10EE524 / CptS561 Computer Architecture

Possible sequence

d initial value

d==0?

b1

d value before

b2

d==1?

b2

0

Y

1

Y

NT

1

N

1

Y

NT

2

N

2

N

T

if ( d = =0 ) b1

d = 1

if ( d = = 1) b2

Page 11: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

11EE524 / CptS561 Computer Architecture

1-bit predictor

d b1 prediction

b1 action

New b1 prediction

b2 prediction

b2 action

New b2 prediction

2 NT T T NT T T

0 T NT NT T NT NT

2 NT T T NT T T

0 T NT NT T NT NT

Page 12: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

12EE524 / CptS561 Computer Architecture

Correlating Branches

• Hypothesis: recent branches are correlated; – that is, behavior of recently executed branches affects prediction

of current branch

• Idea: record m most recently executed branches as taken or not taken, and use that pattern to select the proper branch history table

• In general, (m,n) predictor means record last m branches to select between 2m history tables each with n-bit counters– Our old 2-bit BHT is then a (0,2) predictor

Page 13: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

13EE524 / CptS561 Computer Architecture

(1,1)

d b1 prediction

b1 action

New b1 prediction

b2 prediction

b2 action

New b2 prediction

2 T T/NT NT/NT T NT/T

0 T/NT NT T/NT NT/T NT NT/T

2 T/NT T T/NT NT/T T NT/T

0 T/NT NT T/NT NT/T NT NT/T

NT T Last branch

NT/NT

Page 14: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

14EE524 / CptS561 Computer Architecture

Correlating Branches

(2,2) predictor– The behavior of recent

branches selects between four predictions of next branch, and

– updating just that prediction

Branch address

2-bits per branch predictors

PredictionPrediction

NT T

NT T NT T

last branch

Previous to last branch

i-1 branch: Not Taken

i-2 branch: Taken

Page 15: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

15EE524 / CptS561 Computer Architecture

Correlating Branches

(2,2) predictor

– Behavior of recent branches selects between four predictions of next branch, updating just that prediction

Branch address

2-bits per branch predictor

Prediction

2-bit global branch history

4

Page 16: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

16EE524 / CptS561 Computer Architecture

Accuracy of Different SchemesF

req

uen

cy o

f M

isp

red

icti

on

s

0%

2%

4%

6%

8%

10%

12%

14%

16%

18%na

sa7

tom

catv

dodu

c

spic

e

fppp

p gc

espr

esso

eqnt

ott li

4096 Entries 2-bit BHTUnlimited Entries 2-bit BHT1024 Entries (2,2) BHT

Page 17: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

17EE524 / CptS561 Computer Architecture

Re-evaluating Correlation

• Several of the SPEC benchmarks have less than a dozen branches responsible for 90% of taken branches:program branch % static # = 90%

compress 14% 236 13eqntott 25% 494 5gcc 15% 9531 2020mpeg 10% 5598 532real gcc 13% 17361 3214

• Real programs + OS more like gcc• Small benefits beyond benchmarks for

correlation?

Page 18: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

18EE524 / CptS561 Computer Architecture

Need Address at Same Time as Prediction

• Branch Target Buffer (BTB): Address of branch index to get prediction AND branch address (if taken)

– Note: must check for branch match now, since can’t use wrong branch address ()

• Return instruction addresses predicted with stack

Page 19: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

19EE524 / CptS561 Computer Architecture

Branch Target Buffer(Section 2.9 textbook)

PC of instruction to fetch

Number of entries in BTB

=Instruction is not predicted to be a branch.

No

Yes

Instruction is a branch and predicted

Predicted PC T/NT prediction

Page 20: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

20EE524 / CptS561 Computer Architecture

Instruction Fetch (stage)

Send PC to Instruction Memory and

Branch Target Buffer (BTB)

Entry found in BTB ?

No Yes

Page 21: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

21EE524 / CptS561 Computer Architecture

Address is not in BTB

Entry found in BTB ?

No Yes

Is instruction a

taken branch?

No Yes

IF

Normal Instruction execution

Enter branch address and next PC into BTB EX

ID

Page 22: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

22EE524 / CptS561 Computer Architecture

Address is in BTB

Entry found in BTB ?

No Yes

taken branch?No Yes

IF

EX

ID

Send out predicted PC

Mispredicted branch

Kill fetch; restart fetch; delete entry from BTB

NO STALLS

Page 23: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

23EE524 / CptS561 Computer Architecture

Tournament Predictors

• Motivation for correlating branch predictors is 2-bit predictor failed on important branches; by adding global information, performance improved

• Tournament predictors: use 2 predictors, 1 based on global information and 1 based on local information, and combine with a selector

• Hopes to select right predictor for right branch (or right context of branch)

Page 24: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

24EE524 / CptS561 Computer Architecture

Tournament Predictor in Alpha 21264• 4K 2-bit counters to choose from among a global predictor and a

local predictor• Global predictor also has 4K entries and is indexed by the history

of the last 12 branches; each entry in the global predictor is a standard 2-bit predictor

– 12-bit pattern: ith bit 0 => ith prior branch not taken;ith bit 1 => ith prior branch taken.

4K 2 bits

1

32

12

...

Address

Page 25: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

25EE524 / CptS561 Computer Architecture

Tournament Predictor in Alpha 21264• Local predictor consists of a 2-level predictor:

– Top level a local history table consisting of 1024 10-bit entries; each 10-bit entry corresponds to the most recent 10 branch outcomes for the entry. 10-bit history allows patterns 10 branches to be discovered and predicted.

– Next level Selected entry from the local history table is used to index a table of 1K entries consisting a 3-bit saturating counters, which provide the local prediction

• Total size: 4K*2 + 4K*2 + 1K*10 + 1K*3 = 29K bits!(~180,000 transistors)

1K 10 bits

1K 3 bits

Page 26: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

26EE524 / CptS561 Computer Architecture

98%100%

94%90%

55%76%

72%63%

37%69%

0% 20% 40% 60% 80% 100%

nasa7

matrix300

tomcatv

doduc

spice

fpppp

gcc

espresso

eqntott

li

% of predictions from local predictor in Tournament Prediction Scheme

Page 27: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

27EE524 / CptS561 Computer Architecture

0%

1%

2%

3%

4%

5%

6%

7%

8%

9%

10%

0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128

Total predictor size (Kbits)

Con

ditio

nal b

ranc

h m

ispr

edic

tion

rate

Local

Correlating

Tournament

Accuracy v. Size (SPEC89)

Page 28: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

28EE524 / CptS561 Computer Architecture

2-bit counter predictor selector

Predictor 1 Predictor 2

Page 29: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

29EE524 / CptS561 Computer Architecture

Selective History Predictor8096 x 2 bits

2048 x 4 x 2 bits

Branch Addr

GlobalHistory

2

00011011

Taken/Not Taken

8K x 2 bitSelector

11100100

Choose Non-correlator

Choose Correlator

10

11 Taken1001 Not Taken00

Page 30: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

30EE524 / CptS561 Computer Architecture

11

10

00

01

8096 x 2 bits

2048 x 4 x 2 bits

Branch Addr

GlobalHistory

2

00011011

Taken/Not Taken

8K x 2 bitSelector

11100100

Choose Non-correlator

Choose Correlator

10

Predicted Taken (11)

Taken

Not takenPredicted

Taken (10)Taken

Predicted (01) not Taken

Not taken

Not takenPredicted (00)

not TakenTaken

Not takenTaken

11 Taken1001 Not Taken00

Page 31: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

31EE524 / CptS561 Computer Architecture

Dynamic Branch Prediction Summary

• Branch History Table: 2 bits for loop accuracy• Correlation: Recently executed branches

correlated with next branch• Branch Target Buffer: include branch address &

prediction• Predicated Execution can reduce number of

branches, number of mispredicted branches

Page 32: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

32EE524 / CptS561 Computer Architecture

Gselect and Gshare predictors

• Keep a global register (GR) with outcome of k branches

• Use that in conjunction with PC to index into a table containing 2-bit predictor

• Gselect – concatenate • Gshare – XOR (better)

/ P H T

g loba l b ranch h is toryreg is ter (G B H R )

/

decode

2

pred ic t:taken/

not taken

shift

b ranch resu lt:taken/

not taken

(PHT) Pattern History Table

Page 33: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

33EE524 / CptS561 Computer Architecture

• Avoid branch prediction by turning branches into conditionally executed instructions:

if (x) then A = B op C else NOP– If false, then neither store result nor cause

interference– Expanded ISA of Alpha, MIPS, PowerPC, SPARC have

conditional move; PA-RISC can annul any following instruction

• Drawbacks to conditional instructions– Still takes a clock even if “annulled”– Stall if condition evaluated late: Complex conditions

reduce effectiveness since condition becomes known late in pipeline

x

A = B op C

Predicated Execution

Page 34: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

34EE524 / CptS561 Computer Architecture

Types of Branches

Branch Type

Conditional Unconditional

Direct if - then- else for loops (bez, bnez, etc)

procedure calls (jal) goto (j)

Indirect return (jr) virtual function lookup function pointers (jalr)

Page 35: 1 EE524 / CptS561 Computer Architecture Dynamic Branch Prediction

35EE524 / CptS561 Computer Architecture

Special Case: Return Addresses

• Register Indirect branch - hard to predict address

• SPEC89 85% such branches for procedure return

• Since stack discipline for procedures, save return address in small buffer that acts like a stack: 8 to 16 entries has small miss rate, return address stack (RAS)