Accuracy of Agree/Disagree relation classification. Accuracy of u ser opinion p rediction .
2 Level Branch P rediction
description
Transcript of 2 Level Branch P rediction
בעריכת אורן קצנגולד
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