2 level branch p rediction

Post on 15-Jan-2016

43 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Updated by Franck Sala

2 Level Branch

Prediction

1

?למה

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

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

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

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

?מה זה

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

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

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

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

האחרונות.3

?catchאיפה ה-

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

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

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

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

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

?איך זה עובד

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

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

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

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

WNT01

ST11

SNT00

WT10

Taken

Not taken

6

7

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

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

BHR

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

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

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

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

10

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

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

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

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

11

L2 Predictor

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

–Caches…

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

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

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

12

...ובמילים אחרות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

לוקלים 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)

קטע קוד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

:דוגמת הרצה

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

גלובליים 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.(

:דוגמת הרצה

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

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

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

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

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

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

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

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

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

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

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

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

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

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

:דוגמא

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

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

TTTTTTTTTTTN - 0• TTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTN

TTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTNTTTN - 1

• TTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTTNTNNTTTTNNTTTTTTNTNTTNTNNTTTTTTTNNNTTTTTNTTNTNTTNTNTTTTTNNTTTTTNNTNTTNTTNTTTTTTTNNNNTTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTTNTNN - 2

• NNNNTTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTTNTNNTTTTNNTTTTTTNTNTTNTNNTTTTTTTNNNTTTTTNTTNTNTTNTNTTTTTNNTTTTTNNTNTTNTTNTTTTTTTNNNNTTTTNTTTTNTTNTNTTTTNNNTTTTTTNTNTTNTTNTTNTTTTNNNTTTTTNTTTTNTNNTNTTTTTNNTTTTTTNTNNTNTTNTTTTTTTNNNTTTTNNTTTTNTTNTNTTTTTNNTNTTTTNTNTTNTTNTTTTTTNNNNTTTTTNTTTTNTT - 3

• TTTTTNNNTTTTTTTTTNTTTTNTTTTNTNTTTTTTTTNTTNTTTTTNTTTTTNNTTTTTTTTTTNTNTTNTTTTTTNTTTTTTTTNNTNTTTTTTTTTTTNNTTTTNTTTTTNTTTTNTTTTTTNTNTTTTTTNTTNTTTTTTTTTNTNNTTTTTTTTTTNTTTTNNTTTTTNTTTTTTTTNTTNTNTTTTTTTTTNNTTTTTTTTNTNTTTTNTTTTTTNTTTTTNTTNTTNTTTTTTTTTTTNNNTTTTTTTTTNTTTTNTTTTNTNTTTTTTTTNTTNTTTTTNTTTTTNNTTTTTTTTTTNTNTTNTTTTTTNTTTTTTTTNNTNTTTTTTTTTTTNNTTTTNTTTTTNTTTTNTTTTTTNTNTTTTTTNTTNTTTTTTTTTNTNNTTTTTTTTT - 4

• TTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTTTTTTTTTTTTNNTTTTTTTTTTTTTTNTTTTNTTTTTTTTTTNTTTTTTTTNTTTTTTNTTTTTTTTTTTTNTTNTTTTT - 5

• TTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTTTTTTTTTTTTTTTTTNTTTT - 6

46

הוראות(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%

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

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

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

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

48

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

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

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

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

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

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

Line

Tag Array

Tag

Set#

Cache storage

Tag Set

031

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

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

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

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

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

51

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

top related