2 Level Branch P rediction

52
דדדדדד דדדד דדדדדדדUpdated by Franck Sala 2 Level Branch Prediction 1

description

2 Level Branch P rediction. בעריכת אורן קצנגולד Updated by Franck Sala. למה?. אם יש לולאה קצרה בתוך לולאה ארוכה, התחקות אחרי ההיסטוריה עשויה לעלות על התבנית. לולאה של 2 איטרציות: BTB רגיל טועה כל פעם סדרה של הוראות סיעוף התלויות אחת בשנייה (למשל switch-case ), ניתן אולי ללמוד על התלות. - PowerPoint PPT Presentation

Transcript of 2 Level Branch P rediction

Page 1: 2 Level  Branch  P rediction

בעריכת אורן קצנגולד

Updated by Franck Sala

2 Level Branch

Prediction

1

Page 2: 2 Level  Branch  P rediction

?למה

אם יש לולאה קצרה בתוך לולאה ארוכה, •התחקות אחרי ההיסטוריה עשויה לעלות על

התבנית. רגיל טועה כל פעםBTB איטרציות: 2לולאה של –

סדרה של הוראות סיעוף התלויות אחת בשנייה •(, ניתן אולי ללמוד על switch-case)למשל התלות.

סטטיסטית זה עובד...•2

Page 3: 2 Level  Branch  P rediction

?מה זה

ישנם שני סטים, סט של היסטוריות וסט של •מצבים )מכונת מצבים(, וכן ישנו מיפוי בין שני

level-2הסטים – על כן נקרא –History–State

: במקום להחזיק במכונת במקרה הפשוט• 2n מחזיקים branchמצבים אחת לכל הוראת

מכונות מצבים ובוחרים במכונה הרצויה ע"פ ( taken/not taken ההכרעות )nההיסטוריה של

האחרונות.3

Page 4: 2 Level  Branch  P rediction

?catchאיפה ה-

יותר רוצים להחזיק יותר מכונות מצבים •זיכרון.

עשוי לקחת יותר זמן מנגנון מסובך יותר •ולצרוך יותר משאבים.

למרות זאת, במעבדים מודרנים כאשר מחזור ארוך יותר, שווה pipelineהשעון קצר יותר וה-

להשקיע בשביל חיזויים טובים יותר.4

Page 5: 2 Level  Branch  P rediction

BHR: Branch History Register

nבן shift registerבכל רגע נתון מחזיקים ב-• not ל 0ביטים אשר מציין את ההיסטוריה )

taken-ל 1 ו taken ביטים:5(, למשל עבור

1 01 0 1

lsb

אז נקבל...takenואם נקבל הכרעת קפיצה •

5

1 10 1 0

Taken

Page 6: 2 Level  Branch  P rediction

?איך זה עובד

: bit counter 2ישנה טבלא של מכונות מצבים, למשל •

2n ביטים, אז גודל הטבלא n בן BHRאם יש לנו •

, חוזים BHRובוחרים בכניסה המתאימה ע"י ערך ה-•לפי הערך שנמצא שם, ולבסוף כשיודעים את

התוצאה מעדכנים את אותה המכונה בהתאם.

WNT01

ST11

SNT00

WT10

Taken

Not taken

6

Page 7: 2 Level  Branch  P rediction

7

Page 8: 2 Level  Branch  P rediction

x=0;

for )I=0; I<100; I++(

for )J=0; J<4;J++(

x=x+j+I;

100 sub r10,r10,r10

104 movi r9, 100108 ll1: movi r8,4112 ll2: add

r10,r10,r9116 add r10,r10,r8120 sub r8,r8,1124 if )r8 != r0( ll2128 sub )r9,r9,1(132 If )r9 != r0( ll1

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

1

1

ST

2

1

ST

3

1ST

1

WNT

Example The initialization phase– (view with XP full screen)

0

First level: shift register that keeps the history of the n last branches

Second level: prediction table that predicts for every history state if the direction should be taken or not taken

We update the table based on current state (0) and

modify the state AFTER the outcome is known

8

Page 9: 2 Level  Branch  P rediction

Example -cont

• If we look at the history that will be generated at the BHR )branch history register( we can see that values 14, 13, and 11 will indicate taken branches while state 7 will indicate not taken branch.

• If sequence of histories repeats itself, we claim that the system reaches stability.

1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0

9

1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0

1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0

1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0

14

BHR History

13

11

7

1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 014

Page 10: 2 Level  Branch  P rediction

BHR

•Global BHR: אחד גלובלי, ואז ההיסטוריה היא BHRניתן להחזיק •

כללית. )עשוי להיות יעיל בתפיסת תלויות בין הוראות branch)

•Per Branch BHR: BHR, ואז ה-branch לכל הוראת BHRאו לחילופין •

לוקאלי )עשוי לעלות על תבנית חוזרת של הוראות branch.)למשל לולאות מקוננות -

10

Page 11: 2 Level  Branch  P rediction

טבלת מכונות החיזוי

•Global Table:ניתן להחזיק בטבלא גלובלית, בכך לחסוך •

-ים ארוכים יותר BHRבמקום ולאפשר אולי )שים לב שהטבלא גדלה אקספוננציאלית(.

•Per-Branch Table:branchלהחזיק טבלה לוקאלית לכל הוראת •

11

Page 12: 2 Level  Branch  P rediction

L2 Predictor

במקרה של היסטוריה ו/או טבלאות חיזוי לוקאליות, נחזיק •טבלת היסטוריות.

–Caches…

branchהכניסה המתאימה תחזיק את הכתובת של הוראת ה-•(tag)שדה ה-

אם ההיסטוריה לוקאלית אז את ההיסטוריה של אותה פקודה–אם טבלאות החיזוי לוקאליות אז את הטבלה המתאימה לפקודה. –

רגילBTBהרחבת העקרון של •

12

Page 13: 2 Level  Branch  P rediction

...ובמילים אחרותLocal Predictor / Local Counter Array

Branch IP tag history

UpdateHistorywithbranchoutcome

prediction = msb of counter

2-bit-sat counter arrayHistory Cache

(BHRs)

טבלת ההיסטוריות

13

Update counter withbranch outcome

Page 14: 2 Level  Branch  P rediction

לוקלים BHRטבלא ו-

כניסות, ואנו לוקחים היסטוריה 1024נניח שברשותנו טבלת היסטוריות בת • הוראות.4של

כך שניתן aligned סיביות וכל ההוראות הן 32כמו כן נניח שכתובת היא בת •.lsbלהשמיט את שתי הסיביות ה-

אסוציאטיביות מלאה )כל קפיצה יכולה להיכנס לכל שורת הטבלה(•מהו גודל טבלת ההיסטוריות?•

14

The predictor size:

#entries * (tag_size + history_size + 2*2 history_size)

#entries = 1024

tag_size )branch IP( = 32 – 2 = 30 bit

history_size = 4

=> size= 1024 * )30+4+2*24( = 66 K bits

Branch IPtag history

prediction

2-bit-sat counter arrayHistory Cache

(BHRs)

Page 15: 2 Level  Branch  P rediction

קטע קודfor )i=100; i>0; i--(

for )j=2; j<5; j++(

if )i%j == 0( …

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L115

Page 16: 2 Level  Branch  P rediction

:דוגמת הרצה

0 00 0IP1

0 00 0IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

2

0

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

IP1

IP2

IP3

16

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 17: 2 Level  Branch  P rediction

טעות בחיזוי )לא הייתה קפיצה(

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

0 00 0IP1

0 00 0IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

2

0

WNT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

17

Page 18: 2 Level  Branch  P rediction

0 00 0IP1

0 00 0IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

3

0

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

18

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 19: 2 Level  Branch  P rediction

0 00 0IP1

0 10 0IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

3

0

ST 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

חיזוי נכון )הייתה קפיצה(

19

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 20: 2 Level  Branch  P rediction

0 00 0IP1

0 10 0IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

3

1

WNT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

20

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 21: 2 Level  Branch  P rediction

טעות בחיזוי )הייתה קפיצה(

0 10 0IP1

0 10 0IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

3

1

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

21

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 22: 2 Level  Branch  P rediction

0 10 0IP1

0 10 0IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

4

1

ST 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

22

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 23: 2 Level  Branch  P rediction

0 10 0IP1

0 10 1IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

4

1

ST 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WT

WT

(חיזוי נכון )הייתה קפיצה

23

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 24: 2 Level  Branch  P rediction

0 10 0IP1

0 10 1IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

4

0

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

24

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 25: 2 Level  Branch  P rediction

0 00 1IP1

0 10 1IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

4

0

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WNT

WT

WT

WT

טעות בחיזוי )לא הייתה קפיצה(

25

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 26: 2 Level  Branch  P rediction

0 00 1IP1

0 10 1IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

5

0

ST 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WT

WT

26

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 27: 2 Level  Branch  P rediction

0 00 1IP1

0 01 1IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

100

5

0

ST 0

WT 12

WT 1

WT 2

WNT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WT

WT

טעות בחיזוי )לא הייתה קפיצה(

27

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 28: 2 Level  Branch  P rediction

0 00 1IP1

0 01 1IP2

0 00 0IP3

BHRs

tag history

r1

r2

r3

99

5

0

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

28

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 29: 2 Level  Branch  P rediction

0 00 1IP1

0 01 1IP2

0 10 0IP3

BHRs

tag history

r1

r2

r3

99

5

0

ST 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

חיזוי נכון )הייתה קפיצה(

29

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

L2: Mod r3, r1, r2

Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Page 30: 2 Level  Branch  P rediction

גלובליים BHRטבלא ו- יחיד, וכן בטבלא BHRנשים לב שכעת אנו משתמשים ב- •

בודדת.

BTBאם נניח שבדיקת כתובת הקפיצה מתבצעת בנפרד ב- • 4)כמו שבעצם הנחנו גם קודם(, וכן שאנו רוצים היסטוריה של

מהו גודל הזיכרון הדרוש? הוראות.

30

The predictor size:

history_size + 2*2 history_size

history_size = 4

size= 4+2*24 = 36 bits

vs. 66Kb

Save 1023 entries )tag+hist.(

Page 31: 2 Level  Branch  P rediction

:דוגמת הרצה

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

2

0

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

IP1

IP2

IP3

0 00 0

Global table

31

Page 32: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

2

0

WNT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

0 00 0

Global table

טעות בחיזוי )לא הייתה קפיצה(

32

Page 33: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

3

0

WNT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

0 00 0

Global table

33

Page 34: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

3

0

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

0 10 0

Global table

(טעות בחיזוי )הייתה קפיצה

34

Page 35: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

3

1

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

WT

WT

WT

WT

0 10 0

Global table

35

Page 36: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

3

1

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WT

WT

0 10 1

Global table

חיזוי נכון )הייתה קפיצה(

36

Page 37: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

4

1

WT 0

WT 12

WT 1

WT 2

WT 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WT

WT

0 10 1

Global table

37

Page 38: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

4

1

WT 0

WT 12

WT 1

WT 2

ST 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WT

WT

0 11 1

Global table

חיזוי נכון )הייתה קפיצה(

38

Page 39: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

4

0

WT 0

WT 12

WT 1

WT 2

ST 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WT

WT

0 11 1

Global table

39

Page 40: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

4

0

WT 0

WT 12

WT 1

WT 2

ST 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WNT

WT

1 01 1

Global table

טעות בחיזוי )לא הייתה קפיצה(

40

Page 41: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

5

0

WT 0

WT 12

WT 1

WT 2

ST 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WNT

WT

1 01 1

Global table

41

Page 42: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

100

5

0

WT 0

WT 12

WT 1

WT 2

ST 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WNT

WNT

1 01 0

Global table

טעות בחיזוי )לא הייתה קפיצה(

42

Page 43: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

99

5

0

WT 0

WT 12

WT 1

WT 2

ST 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WNT

WNT

1 01 0

Global table

43

Page 44: 2 Level  Branch  P rediction

Addi r5, r0, 5

Addi r1,r0,100

L1: Addi r2, r0, 2

Mod r3, r1, r2

L2: Bne r3, r0, IF

. . .

IF: Addi r2, r2, 1

Bne r2, r5, L2

Subi r1, r1, 1

Bne r1, r0, L1

Global BHR

r1

r2

r3

99

5

0

WT 0

ST 12

WT 1

WT 2

ST 3

WT 4

WT 5

WT 6

WT 7

WT 8

WT 9

WT 10

WT 11

WT 13

WT 14

WT 15

ST

WT

WNT

WNT

1 10 0

Global table

חיזוי נכון )הייתה קפיצה(

44

Page 45: 2 Level  Branch  P rediction

:דוגמא

for )i=100; i>0; i--(

for )j=2; j<6; j++(

switch )i%j( {

case 0: … break;

case 1: … break;

case 2: … break;

case 3: … break;

case 4: … break;

}

0

1

2

3

4

5

6

45

Page 46: 2 Level  Branch  P rediction

-ים השוניםbranchהתנהגות ה • TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

TTTTTTTTTTTN - 0• TTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTN

TTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTN - 1

• TTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTTNTNNTTTTNNTTTTTTNTNTTNTNNTTTTTTTNNNTTTTTNTTNTNTTNTNTTTTTNNTTTTTNNTNTTNTTNTTTTTTTNNNNTTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTTNTNN - 2

• NNNNTTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTTNTNNTTTTNNTTTTTTNTNTTNTNNTTTTTTTNNNTTTTTNTTNTNTTNTNTTTTTNNTTTTTNNTNTTNTTNTTTTTTTNNNNTTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTT - 3

• TTTTTNNNTTTTTTTTTNTTTTNTTTTNTNTTTTTTTTNTTNTTTTTNTTTTTNNTTTTTTTTTTNTNTTNTTTTTTNTTTTTTTTNNTNTTTTTTTTTTTNNTTTTNTTTTTNTTTTNTTTTTTNTNTTTTTTNTTNTTTTTTTTTNTNNTTTTTTTTTTNTTTTNNTTTTTNTTTTTTTTNTTNTNTTTTTTTTTNNTTTTTTTTNTNTTTTNTTTTTTNTTTTTNTTNTTNTTTTTTTTTTTNNNTTTTTTTTTNTTTTNTTTTNTNTTTTTTTTNTTNTTTTTNTTTTTNNTTTTTTTTTTNTNTTNTTTTTTNTTTTTTTTNNTNTTTTTTTTTTTNNTTTTNTTTTTNTTTTNTTTTTTNTNTTTTTTNTTNTTTTTTTTTNTNNTTTTTTTTT - 4

• TTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTT - 5

• TTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTT - 6

46

Page 47: 2 Level  Branch  P rediction

הוראות(5תוצאות חיזוי נכון )היסטוריה של 2 bit counter: 0 : 0.981 : 0.74752 : 0.6053 : 0.614 : 0.76755 : 0.87256 : 0.9475avg: 0.7672

global history & table: 0 : 0.991 : 0.6552 : 0.5653 : 0.774 : 0.76755 : 0.886 : 0.965avg: 0.776

local historyglobal table: 0 : 0.981 : 0.982 : 0.62753 : 0.644 : 0.7855 : 0.8656 : 0.9275avg: 0.8112

47

local history & tables: 0 : 0.991 : 0.9952 : 0.60253 : 0.6054 : 0.765 : 0.8856 : 0.95avg: 0.8072

global historylocal tables: 0 : 0.991 : 0.79752 : 0.57253 : 0.744 : 0.79755 : 0.94756 : 0.9975avg: 0.816

instructions 1,000,000pipe length 5penalty 3branch probability 5

all wrong bimodal local global hist + local countperfecthit rate 0 0.7672 0.8072 0.816 1cycles 16,000,005 4,492,005 3,892,005 3,760,005 1,000,005speed up 356.2% 115.4% 103.5% 376.0%

Page 48: 2 Level  Branch  P rediction

טבלת חיזוי גלובלית

החיסרון של טבלא גלובלית עשוי להיות בעיית ההתנגשויות בין • שונות.branchהוראות

דרך אחת להתמודדות עם זה היא ליצור ערבול כלשהו בטבלא • אלא ע"פ BHRע"י בחירת המכונה המתאימה לא רק ע"פ ה-

. branch IP שלו עם ה- XORתוצאת ה-Ishare/gshareהטריק נקרא בלעז: •

48

Page 49: 2 Level  Branch  P rediction

local Predictor: LShare

h

h

h l.s.bits of IP

history cache

tag history

prediction = msb of counter

Branch IP

2-bit-sat counter array

49

Lshare combines the local history information with the branch IP This Xor is a significant improvement

Page 50: 2 Level  Branch  P rediction

עוד בעניין טבלת ההיסטוריותבמציאות, במקרה של היסטוריה ו/או טבלאות חיזוי לוקאליות, •

לא בדיוק עוברים על כל הכניסות.

של lsbע"פ רוב, הכניסה אל הטבלה היא ע"פ סיביות ה-•. )מיפוי ישיר(branchכתובת הוראת ה-

(tagהכניסה המתאימה תחזיק את שארית הכתובת )•

יכולים לקבוע אסוציאטיביות כמו בכל מטמון אחר•50

Line

Tag Array

Tag

Set#

Cache storage

Tag Set

031

Page 51: 2 Level  Branch  P rediction

?ראי ראי שעל הקיר, מהי השיטה הטובה בעיר

למעשה, לא קל לקבוע איזה שיטה תנהג באופן הטוב ביותר, •ולכל שיטה יש את הרגעים שלה...

, רכיב זה עוקב אחר Chooserמעבדים מודרניים מחזיקים ב-• שיטות שונות למשל, ובוחר בפעם הבאה את 2הצלחות של

השיטה שלדעתו תיתן חיזוי מדויק יותר. )בעצם רמה שלישית(

( מכסות מקרים level-1יש לשים לב ששיטות שונות )אפילו •שונים.

51

Page 52: 2 Level  Branch  P rediction

Chooser )cont.(

+1 if Bimodal / Local correct and Global wrong -1 if Bimodal / Local wrong and Global correct

M

X

U

Bimodal or Local

Global

Branch IPPrediction

Chooser array (an arrayof 2-bit sat. counters).

• The chooser may also be indexed by the GHR52