2 level branch p rediction
DESCRIPTION
2 Level Branch P rediction. בעריכת אורן קצנגולד Updated by Franck Sala. למה?. אם יש לולאה קצרה בתוך לולאה ארוכה, התחקות אחרי ההיסטוריה עשויה לעלות על התבנית. לולאה של 2 איטרציות: BTB רגיל טועה כל פעם סדרה של הוראות סיעוף התלויות אחת בשנייה (למשל switch-case ), ניתן אולי ללמוד על התלות. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/1.jpg)
בעריכת אורן קצנגולד
Updated by Franck Sala
2 Level Branch
Prediction
1
![Page 2: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/2.jpg)
?למה
אם יש לולאה קצרה בתוך לולאה ארוכה, •התחקות אחרי ההיסטוריה עשויה לעלות על
התבנית. רגיל טועה כל פעםBTB איטרציות: 2לולאה של –
סדרה של הוראות סיעוף התלויות אחת בשנייה •(, ניתן אולי ללמוד על switch-case)למשל התלות.
סטטיסטית זה עובד...•2
![Page 3: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/3.jpg)
?מה זה
ישנם שני סטים, סט של היסטוריות וסט של •מצבים )מכונת מצבים(, וכן ישנו מיפוי בין שני
level-2הסטים – על כן נקרא –History–State
: במקום להחזיק במכונת במקרה הפשוט• 2n מחזיקים branchמצבים אחת לכל הוראת
מכונות מצבים ובוחרים במכונה הרצויה ע"פ ( taken/not taken ההכרעות )nההיסטוריה של
האחרונות.3
![Page 4: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/4.jpg)
?catchאיפה ה-
יותר רוצים להחזיק יותר מכונות מצבים •זיכרון.
עשוי לקחת יותר זמן מנגנון מסובך יותר •ולצרוך יותר משאבים.
למרות זאת, במעבדים מודרנים כאשר מחזור ארוך יותר, שווה pipelineהשעון קצר יותר וה-
להשקיע בשביל חיזויים טובים יותר.4
![Page 5: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/6.jpg)
?איך זה עובד
: bit counter 2ישנה טבלא של מכונות מצבים, למשל •
2n ביטים, אז גודל הטבלא n בן BHRאם יש לנו •
, חוזים BHRובוחרים בכניסה המתאימה ע"י ערך ה-•לפי הערך שנמצא שם, ולבסוף כשיודעים את
התוצאה מעדכנים את אותה המכונה בהתאם.
WNT01
ST11
SNT00
WT10
Taken
Not taken
6
![Page 7: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/7.jpg)
7
![Page 8: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/10.jpg)
BHR
•Global BHR: אחד גלובלי, ואז ההיסטוריה היא BHRניתן להחזיק •
כללית. )עשוי להיות יעיל בתפיסת תלויות בין הוראות branch)
•Per Branch BHR: BHR, ואז ה-branch לכל הוראת BHRאו לחילופין •
לוקאלי )עשוי לעלות על תבנית חוזרת של הוראות branch.)למשל לולאות מקוננות -
10
![Page 11: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/11.jpg)
טבלת מכונות החיזוי
•Global Table:ניתן להחזיק בטבלא גלובלית, בכך לחסוך •
-ים ארוכים יותר BHRבמקום ולאפשר אולי )שים לב שהטבלא גדלה אקספוננציאלית(.
•Per-Branch Table:branchלהחזיק טבלה לוקאלית לכל הוראת •
11
![Page 12: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/12.jpg)
L2 Predictor
במקרה של היסטוריה ו/או טבלאות חיזוי לוקאליות, נחזיק •טבלת היסטוריות.
–Caches…
branchהכניסה המתאימה תחזיק את הכתובת של הוראת ה-•(tag)שדה ה-
אם ההיסטוריה לוקאלית אז את ההיסטוריה של אותה פקודה–אם טבלאות החיזוי לוקאליות אז את הטבלה המתאימה לפקודה. –
רגילBTBהרחבת העקרון של •
12
![Page 13: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/13.jpg)
...ובמילים אחרות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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/14.jpg)
לוקלים 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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/15.jpg)
קטע קוד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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/16.jpg)
:דוגמת הרצה
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/17.jpg)
טעות בחיזוי )לא הייתה קפיצה(
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/21.jpg)
טעות בחיזוי )הייתה קפיצה(
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/30.jpg)
גלובליים 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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/31.jpg)
:דוגמת הרצה
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/45.jpg)
:דוגמא
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/46.jpg)
-ים השונים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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/47.jpg)
הוראות(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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/48.jpg)
טבלת חיזוי גלובלית
החיסרון של טבלא גלובלית עשוי להיות בעיית ההתנגשויות בין • שונות.branchהוראות
דרך אחת להתמודדות עם זה היא ליצור ערבול כלשהו בטבלא • אלא ע"פ BHRע"י בחירת המכונה המתאימה לא רק ע"פ ה-
. branch IP שלו עם ה- XORתוצאת ה-Ishare/gshareהטריק נקרא בלעז: •
48
![Page 49: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/50.jpg)
עוד בעניין טבלת ההיסטוריותבמציאות, במקרה של היסטוריה ו/או טבלאות חיזוי לוקאליות, •
לא בדיוק עוברים על כל הכניסות.
של lsbע"פ רוב, הכניסה אל הטבלה היא ע"פ סיביות ה-•. )מיפוי ישיר(branchכתובת הוראת ה-
(tagהכניסה המתאימה תחזיק את שארית הכתובת )•
יכולים לקבוע אסוציאטיביות כמו בכל מטמון אחר•50
Line
Tag Array
Tag
Set#
Cache storage
Tag Set
031
![Page 51: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/51.jpg)
?ראי ראי שעל הקיר, מהי השיטה הטובה בעיר
למעשה, לא קל לקבוע איזה שיטה תנהג באופן הטוב ביותר, •ולכל שיטה יש את הרגעים שלה...
, רכיב זה עוקב אחר Chooserמעבדים מודרניים מחזיקים ב-• שיטות שונות למשל, ובוחר בפעם הבאה את 2הצלחות של
השיטה שלדעתו תיתן חיזוי מדויק יותר. )בעצם רמה שלישית(
( מכסות מקרים level-1יש לשים לב ששיטות שונות )אפילו •שונים.
51
![Page 52: 2 Level Branch P rediction](https://reader036.vdocuments.net/reader036/viewer/2022081513/5681492b550346895db6655d/html5/thumbnails/52.jpg)
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