29
1 םםםם םםםםםם םםםםםםם234267 Control Hazards םםםםם םם םםםםם םםם םםםם םםםםUpdated by Franck Sala

מבנה מחשבים ספרתיים 234267

Embed Size (px)

DESCRIPTION

מבנה מחשבים ספרתיים 234267. Control Hazards מבוסס על תרגול מאת מורן גביש Updated by Franck Sala. הבעייה. BNEQ $2,$0,loop SW $1,20($3) MOV $2,$1 SW $3,220($3) … Loop:LW $1,20($3) ADDI $1,$ 3,100 INC $1. - PowerPoint PPT Presentation

Citation preview

Page 1: מבנה מחשבים ספרתיים 234267

1

מבנה מחשבים ספרתיים234267

Control Hazardsמבוסס על תרגול מאת מורן גביש

Updated by Franck Sala

Page 2: מבנה מחשבים ספרתיים 234267

2

BNEQ $2,$0,loopSW $1,20($3)MOV $2,$1SW $3,220($3)…

Loop: LW $1,20($3)ADDI $1,$3,100INC $1

בפקודת הסיעוף, מחליטים האם יש לבצע את הקפיצה לפי אות .MEM שמחושב רק בשלב PCsrcהבקרה

בנתיים ממשיכות להיכנס לצינור פקודות שייתכן שאין צורך לבצען (במקרה שהקפיצה נלקחת).

כלומר, כאשר מכריעים האם יש לקפוץ, נכנסו כבר שלוש פקודות עוקבות לצינור.

כי בו כל פקודה single cycleבעיה זו לא נוצרת במעבד שהוא מתבצעת בשלמות לפני שנכנסת הפקודה הבאה לביצוע.

הבעייה

Page 3: מבנה מחשבים ספרתיים 234267

Instr

ucti

on

3

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

EX/MEM MEM/WBIF/ID

InstructionMemory

Read Address

mux

1

0

ID/EX

WB

EX

M

WB

Rd\Rt

WB

M

Read Address

Write Data

ReadData

Write Address

Rd\Rt

MOV $2,$1 SW $1,20($3) BNEQ $2,$0,loopSW $3,220($3)

DataMemor

y

mux

1

0

4

+

PC

LW $1,20($3)ADDI $1,$3,100INC $1

Only now we know if we should have

jumped…

Maybe those commands are not

going to be executed

PCSrc

Page 4: מבנה מחשבים ספרתיים 234267

4

Controlפתרונות ל- Hazards

Stall

הפתרון הפשוט ביותר הוא להשהות את צינור הביצוע. האם הפקודה היא פקודת סיעוף,IFנזהה בשלב

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

הבעיה בפתרון כזה היא פגיעה בביצועי המעבד.

ALUR

eg

iste

r File

Instr

ucti

on

Mem

ory

Data

Mem

ory

ID EX MEM WB

Page 5: מבנה מחשבים ספרתיים 234267

Instr

ucti

on

5

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

EX/MEM MEM/WBIF/ID

InstructionMemory

Read Address

mux

1

0

ID/EX

WB

EX

M

WB

Rd\Rt

WB

M

Read Address

Write Data

ReadData

Write Address

Rd\Rt

BNEQ $2,$0,loop

DataMemor

y

mux

1

0

4

+

PC

(Bubble)

PCSrc

Identify branch command

BNEQ $2,$0,loop

(Bubble)

(Bubble) (Bubble)

Branch ?

BNEQ $2,$0,loop(Bubble)Next correct command

BNEQ $2,$0,loopNext sequential command

Page 6: מבנה מחשבים ספרתיים 234267

6

Controlפתרונות ל- Hazards (2)

Assume not takenמדיניות .pipelineנניח שהקפיצה לא תתממש ונמשיך לאפשר לפקודות להכנס ל-

אם בשלב ההכרעה אכן יוכרע שהקפיצה לא תתבצע, אז לא צריך לעשות HDUדבר. אך אם יוכרע שהקפיצה היתה צריכה להתבצע, יחידת

(Hazard Detection Unit).תקבל אות המציין שמתבצעת קפיצה

פקודות):3 באופן הבא (סה"כ pipeline" את ה-תנקה "HDUה- באותות הבקרה של השלבים 0 העברת הערך ID -ו EXE איפוס הפקודה שבשלב ה IF ע"י השתלת NOP-ל IR.

.PCכעת ניתן לטעון את כתובת הקפיצה ל-

כן קופצות branchהבעיה בפתרון זה היא שמרבית פקודות ה-(לדוגמא בלולאות קופצים חוץ מאשר באיטרציה האחרונה),

לכן גם שיטה זו פוגעת בביצועי המעבד.

ALUR

eg

iste

r File

Instr

ucti

on

Mem

ory

Data

Mem

ory

ID EX MEM WB

Page 7: מבנה מחשבים ספרתיים 234267

Instr

ucti

on

7

ALU

result

ZeroReadreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

EX/MEM MEM/WBIF/ID

InstructionMemory

Read Address

mux

1

0

WBWB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Con

trol

HDU

4

+

PC

mux

1

0

ID/EX

WB

EX

M

mux0

mux0

mux

0

PCSrc

SW $1,20($3) BNEQ $2,$0,loopSW $3,220($3)

LW $1,20($3)

MOV $2,$1

SW $1,20($3)MOV $2,$1

BNEQ $2,$0,loopSW $1,20($3)MOV $2,$1No Operation

Page 8: מבנה מחשבים ספרתיים 234267

8

Controlפתרונות ל- Hazards (3)

assume takenמדיניות

מהסיבות שצוינו בפתרון הקודם, ניתן היה לחשוב תביא לפתרון טוב יותר. לפי assume takenשמדיניות

אכן מבצעת קפיצה. branchמדיניות זו נניח שכל פקודת כדי לממש זאת, נטען את כתובת הקפיצה מיד עם זיהוי

. IF בשלב branchפקודת ה-הבעיה היא שהמדיניות לא ניתנת למימוש פשוט: כתובת

של הפקודה,EXEהקפיצה מחושבת רק בשלב מאין לטעון את הפקודות IFולכן לא ניתן לדעת בשלב

הבאות

ALUR

eg

iste

r File

Instr

ucti

on

Mem

ory

Data

Mem

ory

ID EX MEM WB

Page 9: מבנה מחשבים ספרתיים 234267

9

Control Hazards (4)פתרונות ל- BTBשימוש במנגנון חיזוי

Direction: (Taken/Not Taken) מסוימת בפעמים האחרונות. branchמנגנון החיזוי "זוכר" את ההתנהגות של פקודת

אם הפקודה ביצעה את הקפיצות בפעמים האחרונות, נניח שגם כעת היא תבצע את הקפיצה.

Target:בנוסף להיסטוריה, מנגנון החיזוי "זוכר" גם את כתובת היעד של הקפיצה.

מסוימת) ממומש באמצעות מכונת מצבים. branchזכרון ההיסטוריה (עבור פקודת לדוגמא:

"י כאשר צמותי הגרף מציינים את מצב החיזוי והקשתות את המעברים שיש לבצע עפ.branchהתוצאה (האמיתית) של פקודת ה-

branchכי בפעם הראשונה בה נתקלים בפקודת not takenמצב התחלתי – תקפוץ בפעם הראשונה, נוכל branchלא ידועה כתובת היעד. רק לאחר שפקודת ה-

לשמור עבורה את כתובת היעד.

Page 10: מבנה מחשבים ספרתיים 234267

10

Control Hazards (5)פתרונות ל- מכונת המצבים הבאה, מספקת חיזוי אמין יותר:

לא takenלמשל, בסיום ביצוע לולאה נחזה שתתרחש קפיצה, אך נשגה ונעבור למצביציב. בפעם הבאה בה נחזור לבצע את הלולאה שוב, נחזה שתתרחש קפיצה ואכן בד"כ

חיזוי זה יהיה נכון. , אזי not takenבמכונה הקודמת (עם שני מצבים) לאחר השגיאה הראשונה נעבור למצב

, וסביר להניח שבזאת נשגה שוב.not takenבפעם הבאה שנגיע ללולאה נחזה אי-קפיצה חריגה גרמה לנו לבצע שני חיזויים שגויים, לעומת חיזוי שגוי אחד במכונה עם

המצבים היציבים. לא יציב.not taken – 01בתור המצב ההתחלתי באוטומט כזה נקבע

הנם מצבים יציבים.11 ו-00במכונה זו המצבים המעבר מאחד ממצבים אלו למצב מנוגד לו יתרחש רק אם נשגה פעמיים בחיזוי.

בשגיאה הראשונה נעבור למצב זהה אך לא יציב, ורק בפעם השנייה שנשגה, נעבור למצב ההפוך.

/ אי-קפיצות חריגות.שימוש במצבים כאלו מונע טעויות בחיזוי הנובעות מקפיצות

Page 11: מבנה מחשבים ספרתיים 234267

11

Control Hazards (6)פתרונות ל-

BTB (Branch Target Buffer)מבנה

Page 12: מבנה מחשבים ספרתיים 234267

12

פתרונות ל- Control Hazards

(7)

BTB (Branch Target Buffer)מבנה שמזהה את הפקודה. branchבשדה השמאלי נשמרת כתובת פקודת ה-

. hash tableלפעמים לא מחזיקים את הכתובת המלאה, אלא משתמשים ב- ממופות branch- יכול ליצור מצב בו מספר פקודותhash tableשימוש ב

לאותה הכניסה בטבלה וכתוצאה מכך ייתכן החיזוי שגוי.

בשדה האמצעי נשמרת כתובת היעד. כאמור, כתובת זו יכולה להתווסף - בוצעה לפחות פעם אחת.branchלטבלה רק לאחר שפקודת ה

Page 13: מבנה מחשבים ספרתיים 234267

13

PC מקבל את ה-BTBה-ובודק האם נמצא

בטבלה

PCה-נמצא

?BTBב-

החיזוי הואtaken?

בכתובת PCטען החיזוי PC PC + 4

כן לא

כן לא

זכרון הפקודות PCמקבל את ה-

ומביא את הפקודה

ID/IFהבריח נטען בפקודה

IF

IDהפקודה

היא סיעוף?

אם צריך, הוסף BTBכניסה ל-

המשך כרגיל

כן לא

EXE/IDהבריח נטען בפקודת

הסיעוף

ID/IFהבריח נטען בפקודה

הבאה

Page 14: מבנה מחשבים ספרתיים 234267

14

EXE

MEM

MEM/EXEהבריח נטען בפקודת

הסיעוף

EXE/IDהבריח נטען בפקודת

הסיעוף

עדכן את מכונת BTBהמצבים ב-

חשב את תנאי הקפיצה ואת כתובת

היעד

WB

החיזוי נכון?

המשך כרגיל

PC וטען ל-flushבצע את הכתובת

המחושבת

כן לא

ID/IF, EXE/ID, MEM/EXEהבריחים (הכנסת בועה)NOPנמחקים ל-

MEM/WBהבריח נטען בפקודת הסיעוף

IF/ID הבריח IFבשלב נטען בפקודת היעד של הקפיצה

ID ו-IFהשלבים ממשיכים כרגיל

ID/IFהבריח נטען בפקודה

הבאה

Page 15: מבנה מחשבים ספרתיים 234267

15

דוגמא

עם מנגנון חיזוי pipeline IF,ID,EX,MEM,WBנתון מעבד בעל חמישה שלבי )BTB:הפועל ע"פ האלגוריתם הבא (

-בפעם הראשונה, מצב החיזוי שלו BTB ב branch כאשר נרשמת פקודת.01מאותחל ל-

MOVI R1,2loop1: MOV R2,R1loop2: Dec R2

BNEQ R2,R0,loop2INC R1BLT R1,4,loop1

BNEQמה יהיה החיזוי בכל פעם שפקודת השבקטע הבא מבוצעת:

?מהי כמות השגיאות בחיזוי

Page 16: מבנה מחשבים ספרתיים 234267

16

מחזור R1 R2 מצב נוכחי

חיזוי בפועל המצב הבא

שגיאה?

Loop1

BNEQ

BNEQ

Loop1

BNEQ

BNEQ

BNEQ

MOVI R1,2loop1: MOV R2,R1loop2: Dec R2

BNEQ R2,R0,loop2INC R1BLT R1,4,loop1

)2דוגמא (

מחזור R1 R2 מצב נוכחי

חיזוי בפועל המצב הבא

שגיאה?

Loop1 1 2 2

BNEQ 2 2 1 01 not taken taken 10 +

BNEQ 3 2 0 10 taken not taken 01 +

Loop1 4 3 3

BNEQ 5 3 2 01 not taken taken 10 +

BNEQ 6 3 1 10 taken taken 11

BNEQ 7 3 0 11 taken not taken 10 +

Page 17: מבנה מחשבים ספרתיים 234267

17

מחזור R1 R2 מצב נוכחי

חיזוי בפועל המצב הבא

שגיאה?

Loop1

BNEQ

BNEQ

Loop1

BNEQ

BNEQ

BNEQ

MOVI R1,2loop1: MOV R2,R1loop2: Dec R2

BNEQ R2,R0,loop2INC R1BLT R1,4,loop1

)2דוגמא (

מחזור R1 R2 מצב נוכחי

חיזוי בפועל המצב הבא

שגיאה?

Loop1 1 2 2

BNEQ 2 2 1 01 not taken taken 10 +

BNEQ 3 2 0 10 taken not taken 01 +

Loop1 4 3 3

BNEQ 5 3 2 01 not taken taken 10 +

BNEQ 6 3 1 10 taken taken 11

BNEQ 7 3 0 11 taken not taken 10 +

Page 18: מבנה מחשבים ספרתיים 234267

18

)3דוגמא (

) ובאותו שלב branch (של ה- ID מבוצע בשלב ה- BTBנניח שהחיפוש ב הנכון.PCנטען ה-

, הפקודה מכתובת היעד Taken, כאשר החיזוי הוא BTB hitבמקרה של שלו).EXמובאת במחזור שאחר-כך (שלב

ובמקרה של חיזוי שגוי מבוצע EXEהכרעת הקפיצה מבוצעת בשלב ה- pipeline flush.

ALUR

eg

iste

r File

Instr

ucti

on

Mem

ory

Data

Mem

ory

ID EX MEM WB

BTBRead

Page 19: מבנה מחשבים ספרתיים 234267

19

)3דוגמא (

ALUR

eg

iste

r File

Instr

ucti

on

Mem

ory

Data

Mem

ory

ID EX MEM WB

?ב. כמה מחזורי שעון מבוזבזים במקרה של חיזוי נכון, וכמה בחיזוי שגוי

: אנו טוענים באופן רגיל NT הוא branchעבור חיזוי נכון , כאשר ה-פקודות באופן סדרתי כרגיל ולכן איננו מבזבזים מחזורי שעון.

וטעינת ה- BTB : החיפוש ב T הוא branchעבור חיזוי נכון , כאשר ה-PC -הנכון נעשה בשלב ה ID -במקום בשלב ה IF.

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

לכן נבזבז מחזור שעון יחיד.

במקום בשלב ה- EXעבור חיזוי שגוי:הכרעת הקפיצה מבוצעת בשלב ה MEM מ"ש על ביצוע ה-2. לכן נפסיד flush .

Page 20: מבנה מחשבים ספרתיים 234267

20

)4דוגמא (

beq: IF ID EX MEM WB

dest: stall IF ID EX MEM WB

בחיזוי נכון:

BTB יחיד שאינו תלוי בנכונות החיזוי, אלא נובע מהעובדה שהחיפוש ב stallנבצע .pipeline. במעבד המקורי לא היה צורך בהשהיית ה- IDנעשה בשלב ה-

בחיזוי שגוי:

beq: IF ID EX MEM WB

:שגוי stall IF ID EX MEM WB

dest: IF ID EX MEM WB

EXנפסיד שני מחזורי שעון בלבד מכיוון שהכרעת הקפיצה מבוצעת בשלב

למשך שלושה מחזורי שעון כי pipeline המקורי השהנו את ה- MIPSבמעבד ה MEMהכרעת הקפיצה בוצעה בשלב ה.

Page 21: מבנה מחשבים ספרתיים 234267

21

)4דוגמא ( במקרה של חיזוי נכון.stallג. הצע דרכים שיאפשרו להימנע מה-

:1פתרון מספר ע"י הכתובת שלהן. אם במקום כתובת פקודת BTBמזוהות ב branchפקודות ה

branch את כתובת הפקודה שמתבצעת לפני פקודת הBTB נשמור ב- branchה- branch במקרה של חיזוי נכון, כי כשהפקודה שלפני פקודתstallנוכל להימנע מביצוע

. IF נמצאת בשלב ה branch בעוד שפקודת הBTB יחל החיפוש ב-IDתגיע לשלב הזהו המצב האופטימלי, כפי שקיים במעבד המקורי.

ממקומות שונים, ע"י branch ישנן תוכניות בהן ניתן להגיע לפקודת ה-בעיה אפשרית: BTB. במקרה כזה נצטרך לשמור שורות נוספות ב-branchקפיצה לכתובת פקודת ה-

.branchעבור כל פקודה שיכולה להיות הפקודה שלפני פקודת ה

:2פתרון מספר בנוסף לכתובת הקפיצה, נשמור גם את הפקודה שנמצאת בכתובת הקפיצה, ובכך

של הפקודה.IFנחסוך את שלב ה-

3פתרון מספר של IF לשלב ה- BTBניתן להוסיף חומרה בעזרתה נוכל להקדים את החיפוש ב-

(כמו במעבד המקורי) branchפקודת ה-

Page 22: מבנה מחשבים ספרתיים 234267

22

שאלה ממבחן

שנלמד בכיתה. במעבד זה הכרעת הקפיצה מתבצעת MIPSנתון מעבד הדומה ל-.IF והחיפוש בו מתבצע בשלב BTB. המעבד מצויד במנגנון EXבשלב

הוא פחות BTB מסודר לפי כתובתה של הוראת הקפיצה. זמן החיפוש ב-BTBה- כתובת היעד ומכונת BTBממחזור שעון יחיד. עבור כל הוראת קפיצה נשמרת ב-

אינו מכיל כל מידע נוסף. BTBמצבים לחיזוי. ה-

:place2נתון קטע הקוד הבא: ADDI R4,R4,#2ADDI R4,R4,#2LD R10,R4(128)ADDI R9,R9,#0BEQ R10,R1 place1ADDI R7,R7,#1

place1: BNEQ R10,R1 place2ADDI R8,R8,#1

כבר הכיל את שתי הוראות הסיעוף המותנה BTBידוע כי לפני הרצת הקוד ה-המוצגות ואת כתובות היעד שלהן.

Page 23: מבנה מחשבים ספרתיים 234267

23

)2שאלה ממבחן (

BNEQ) מדויקים, ושהוראת ה-BNEQ ו- BEQבהנחה שהחיזויים של הוראות הסיעוף ( ועד IFקופצת. כמה מחזורים יעברו מרגע שההוראה הראשונה כבר נמצאת בשלב

שהיא חוזרת אליו שוב?

לא קופצת (התנאים שלהן הפוכים והפקודה בינהן BEQ קופצת, אז BNEQ: אם פתרון) R10 ולא את R1לא משנה לא את

מחזורי שעון7 פקודות באיטרציה =< 7 סה"כ יש

place2: ADDI R4,R4,#2ADDI R4,R4,#2LD R10,R4(128)ADDI R9,R9,#0BEQ R10,R1 place1ADDI R7,R7,#1

place1: BNEQ R10,R1 place2ADDI R8,R8,#1

- BTB at IF (target + Bimodal)- TKN/NTKN @ EXE

- Correct prediction of BEQ and BNEQ- BNEQ is taken

- How many cycles for 1st place2 iteration?

Page 24: מבנה מחשבים ספרתיים 234267

24

)3שאלה ממבחן (

מחזורי שעון לביצוע הקוד (כלומר, מרגע שההוראה הראשונה בקוד 33ידוע כי למעבד נדרשו ). כמה פעמים התבצעה pipeline ועד שההוראה האחרונה עזבה את הצינור-IFנמצאת בשלב

? LDהוראת

פתרון: קופצת BEQ לא קופצת BNEQבאיטרציה אחרונה • פקודות7גם באיטרציה האחרונה יש • מחזורי שעון. סה"כ 4 צריכים pipeline מחזורי שעון. למילוי 2על כל טעות בחיזוי משלמים •

התכנית לוקחת:7#*iterations + 2*#branch_prediction_errors + 4= 33

, branch פקודות 2בגלל שבכל איטרציה יש 2#*iterations >= #branch_prediction_errors

הפתרון היחיד:#iterations=3, #branch_prediction_errors = 4

פעמים.3 מתבצעת LD=<פקודת

place2: ADDI R4,R4,#2ADDI R4,R4,#2LD R10,R4(128)ADDI R9,R9,#0BEQ R10,R1

place1ADDI R7,R7,#1

place1: BNEQ R10,R1 place2

ADDI R8,R8,#1

- BTB at IF (target + Bimodal)- TKN/NTKN @ EXE

- Correct prediction of BEQ and BNEQ- BNEQ is taken

- How many LD was executed in 33 cycles ?

Page 25: מבנה מחשבים ספרתיים 234267

25

)4שאלה ממבחן (

כמה פעמים היה החיזוי להוראות הסיעוף נכון, וכמה תחת ההנחות של הסעיף הקודם, פעמים שגוי?

תן דוגמא למכונת מצבים שתתאים לתוצאה שהשגת בסעיף הקודם. עליך לציין את מצב המכונה של כל אחת מההוראות לפני ביצוע הקוד.

branch פעמים מתבצע 6 איטרציות 3 ישנן פתרון: חיזויים נכונים. 2 טעויות חיזוי 4 לפי סעיף ב' יש

T NTNT

T NT

):BNEQ – NT ושל BEQ – T מצבים ( מצב התחלתי של 2: מכונה של פתרון

Page 26: מבנה מחשבים ספרתיים 234267

26

backups

Page 27: מבנה מחשבים ספרתיים 234267

Backup

234267 - November 200527

Page 28: מבנה מחשבים ספרתיים 234267

28

ALU

Src

6

ALU

result

Zero

+

Shift left 2

ALUControl

RegDst

Reg

Wri

teReadreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

[15-0]

[20-16]

[15-11]

Sig

nexte

nd

16

32

EX/MEM MEM/WB

Inst

ruct

ion

Mem

Read

Mem

Wri

te

Bra

nch

PCSrc

Mem

toR

eg

4

+

IF/ID

PC

InstructionMemory

Read Address

mux

1

0

mux

1

0

mux

1

0

mux

1

0

ID/EX

WB

EX

M

Con

trol

32

WB

Rd\Rt

Reg

Wri

te

WB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

Rd\Rt

ALU

op

Reg

Dst

Page 29: מבנה מחשבים ספרתיים 234267

29

ALU

result

ZeroReadreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

EX/MEM MEM/WB

Inst

ruct

ion

IF/ID

InstructionMemory

Read Address

mux

1

0

WBWB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Con

trol

HDU

4

+

PC

mux

1

0

ID/EX

WB

EX

M

mux0

mux0

mux

0

PCSrc