33
Data Hazards Data Hazard ( תתתתת תתתR-Type תתתתתת תתתת תתת) תתתתתת תתתת תתתתתתת תתתתתת תתתת תתתת תתתת תתתתתת תתתתת תתתת תתת תתת תת תתתת תתתת תתתתתDecember 2013 1

Data Hazards

  • Upload
    ronni

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

Data Hazards. Data Hazard פקודה אחת ( R-Type ) מייצרת נתון חדש וכותבת אותו לרגיסטר הפקודה הבאה בתור רוצה להשתמש באותו נתון אבל הוא לא באמת מוכן עדיין. December 2013. 1. דוגמה ל- Data Hazards. T. i. m. e. (. i. n. c. l. o. c. k. c. y. c. l. e. s. ). C. C. 7. C. C. 8. - PowerPoint PPT Presentation

Citation preview

Page 1: Data Hazards

Data Hazards

•Data Hazard

( מייצרת נתון חדש וכותבת אותו R-Typeפקודה אחת )–לרגיסטר

הפקודה הבאה בתור רוצה להשתמש באותו נתון–

אבל הוא לא באמת מוכן עדיין–

December 2013 1

Page 2: Data Hazards

sub $2, $1, $3

Programexecutionorder(in instructions)

and $12, $2, $5

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Time (in clock cycles)

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20Value of register $2:

Data Hazardsדוגמה ל-

Reg

Reg

IM Reg

IM Reg

IM Reg DM Reg

IM DM Reg

IM DM Reg

DM

Reg

Reg

DM

December 2013 2

Page 3: Data Hazards

Data Hazardsפתרון אפשרי ל-

•Data hazards יכולים לקרות אם מנסים להשתמש בתוצאה לפני שהיא מוכנה ברגיסטר

אבל היא כבר קיימת! ננסה לתפוס אותה בדרכה •לרגיסטר

(bypassאו עקיפה ) Forwardingהמנגנון קרוי •

December 2013 3

Page 4: Data Hazards

מסלולים שונים(3עקיפה )

IM Reg

IM Reg

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Time )in clock cycles(

sub $2, $1, $3

Programexecution order)in instructions(

and $12, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20

or $13, $6, $2

add $14, $2, $2

sw $15, 100)$2(

Value of register $2 :

DM Reg

Reg

Reg

Reg

X X X – 20 X X X X XValue of EX/MEM :X X X X – 20 X X X XValue of MEM/WB :

DM

December 2013 4

Page 5: Data Hazards

Forwarding Unit Checks for:

• Are we reading from a register that has not yet been updated? - If we are, then:– The value to be forwarded may be from the

EX/MEM pipeline register output )in MEM stage( or the MEM/WB output )in WB stage(.

– RegWrite control signal shows if we are writing to a register.

– We must forward for both rs and rt register reads.

– Writes to register zero must not be forwarded!

• Register zero always contains a zero, even if forwarded.

– If we can forward from both EX/MEM and MEM/WB, select the newest value, the one from EX/MEM.

December 2013 5

Page 6: Data Hazards

Designing the Forwarding Unit

• Detect hazard conditions:• 1a( EX/MEM.Rd = ID/EX.Rs

• 1b( EX/MEM.Rd = ID/EX.Rt

• 2a( MEM/WB.Rd = ID/EX.Rs

• 2b( MEM/WB.Rd = ID/EX.Rt

– )also check for RegWrite, zero, and newest(

• Use these checks to control the forwarding multiplexers

December 2013 6

Page 7: Data Hazards

Executeעקיפה בשלב

PCInstruction

memory

Registers

Mux

Mux

Control

ALU

EX

M

WB

M

WB

WB

ID/EX

EX/MEM

MEM/WB

Datamemory

Mux

Forwardingunit

IF/ID

Inst

ruct

ion

Mux

RdEX/MEM.RegisterR

MEM/WB.Registe Rd

Rt

Rt

Rs

IF/ID.RegisterRd

IF/ID.RegisterRt

IF/ID.RegisterRt

IF/ID.RegisterRs

d

r

Reg

Wri

te

Forwarding MUXes

Forwarding Logic

Reg

Wri

teDecember 2013 7

Page 8: Data Hazards

Load Hazards

Data Hazardסוג נוסף של בעיה, דומה ל- •

, המילה שנטענה מהזיכרון LWאחרי •לרגיסטר עדיין לא מוכנה מיד...

אין ברירה אלא להמתין. אפשר להכניס •NOP לקוד אחרי LW

NOP לא היה צורך ב DATA HAZARDמדוע –וכאן צריך?

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

MEM/WBבאוגר December 2013 8

Page 9: Data Hazards

Load Hazards

Time2 4 6 8 10 12 14

lw $s0, 20)$t1(

sub $t2, $s0, $t3

Programexecutionorder)in instructions(

IF ID WBMEMEX

IF ID WBMEMEX

bubble bubble bubble bubble bubble

December 2013 9

Page 10: Data Hazards

The nop )no operation( Instruction

• In MIPS the nop instruction is a machine instruction where all 32 bits are zero.

• Actually, that is:– An R-type instruction )op-code 0(:

– A sll instruction )func-code 0(:

– sll $0, $0, 0

• I.e. Shift register zero left zero times and store the result in register zero.– This does not change register zero, which is

always zero anyway)!(

December 2013 10

Page 11: Data Hazards

Inserting Bubbles by the Hardware

• Load Hazards can also be detected using a “hazard detection unit” in the Decode stage.

• The hazard detection unit should stall the pipeline for one cycle, creating an effect similar to a nop instruction inserted by the programmer.

• This can be done by inserting a “bubble” to simulate the nop instruction.

• Setting all control signals to 0 will have the same effect as a nop.

• We must also hold the values in the PC and IF/ID registers for one cycle! )by using clock enable(.

December 2013 11

Page 12: Data Hazards

Inserting Bubbles in Hardware

lw $2, 20)$1(

Programexecutionorder)in instructions(

and $4, $2, $5

or $8, $2, $6

add $9, $4, $2

slt $1, $6, $7

Reg

IM

Reg

Reg

IM DM

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6Time )in clock cycles(

IM Reg DM RegIM

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9 CC 10

DM Reg

RegReg

RegBubble

Load hazard requires one NOP

Clock was stopped to IF/ID

December 2013 12

Page 13: Data Hazards

Inserting Bubbles in Hardware

lw $2, 20)$1(

Programexecutionorder)in instructions(

and $4, $2, $5

or $8, $2, $6

add $9, $4, $2

slt $1, $6, $7

Reg

IM

Reg

Reg

IM DM

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6Time )in clock cycles(

IM Reg DM RegIM

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9 CC 10

DM Reg

RegReg

RegBubble

Data can be taken from Reg-File, NOP is not required

Clock was stopped to PC

December 2013 13

Page 14: Data Hazards

Inserting Bubbles in Hardware

lw $2, 20)$1(

Programexecutionorder)in instructions(

and $4, $2, $5

or $8, $2, $6

add $9, $4, $2

slt $1, $6, $7

Reg

IM

Reg

Reg

IM DM

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6Time )in clock cycles(

IM Reg DM RegIM

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9 CC 10

DM Reg

RegReg

RegBubble

December 2013 14

Another forwarding

Page 15: Data Hazards

PCInstruction

memory

Registers

Mux

Mux

Mux

Control

ALU

EX

M

WB

M

WB

WB

ID/EX

EX/MEM

MEM/WB

Datamemory

Mux

Hazarddetection

unit

Forwardingunit

0

Mux

IF/ID

Inst

ruct

ion

ID/EX.MemReadIF

/I DW

ri te

PC

Wri

te

ID/EX.RegisterRt

IF/ID.RegisterRd

IF/ID.RegisterRt

IF/ID.RegisterRt

IF/ID.RegisterRs

RtRs

Rd

Rt EX/MEM.RegisterRd

MEM/WB.RegisterRd

Bubble Insertion Hardware

Compare Reg # and check for memory read

Clock disable

Stall

December 2013 15

Load hazard detection logic

Page 16: Data Hazards

Example: Load is Decoded )1/4(

December 2013 16

Page 17: Data Hazards

Example: Load Hazard is Detected )2/4(

December 2013 17

Page 18: Data Hazards

Example: Bubble Inserted )3/4(

December 2013 18

Page 19: Data Hazards

Example: Data Gets Forwarded )4/4(

December 2013 19

Page 20: Data Hazards

Control Hazards

עד כה ראינו:•

–Data hazards

–Load hazard

Control Hazard בעיה שלישית:•

.pipeקפיצה מותנית קורית בשלב רביעי ב- •

נוספותעוקבות פקודות 3עד שמגיעים אליה נכנסו כבר •

EXE, ID, IFלשלבי –

הפקודות שנכנסו בטעות !3אם קופצים, יש להשמיד את •

December 2013 20

Page 21: Data Hazards

מסלול הנתונים + הבקרה )תזכורת(

PC

Instructionmemory

Inst

ruct

ion

Add

Instruction[20– 16]

Mem

toR

eg

ALUOp

Branch

RegDst

ALUSrc

4

16 32Instruction[15– 0]

0

0

Mux

0

1

Add Addresult

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux1

ALUresult

Zero

Writedata

Readdata

Mux

1

ALUcontrol

Shiftleft 2R

egW

rite

MemRead

Control

ALU

Instruction[15– 11]

6

EX

M

WB

M

WB

WBIF/ID

PCSrc

ID/EX

EX/MEM

MEM/WB

Mux

0

1

Mem

Writ

e

AddressData

memory

Address

December 2013 21

Page 22: Data Hazards

Control Hazards

Reg

Reg

CC 1

Time )in clock cycles(

40 beq $1, $3, 7

Programexecutionorder)in instructions(

IM Reg

IM DM

IM DM

IM DM

DM

DM Reg

Reg Reg

Reg

Reg

RegIM

44 and $12, $2, $5

48 or $13, $6, $2

52 add $14, $2, $2

72 lw $4, 50)$7(

CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9

Reg

28

40+4+28=72

December 2013 22

corruption

Page 23: Data Hazards

NOP+NOP+NOPפתרון ראשון:

פעמים 3אחרי פקודת קפיצה מותנית נכניס •NOP

לא משנה אם קופצים או לא, לא יגרם נזק•

הפתרון הראשון לא יעיל:•

מהפקודות הן קפיצה20%בד"כ –

פקודות רגילות + קפיצה4לולאה טיפוסית: –

מחזורים )תוספת 8 מחזורים, תימשך 5במקום –3 NOP)

בביצועים... 60%ירידה של –

December 2013 23

Page 24: Data Hazards

Useful delay slotsפתרון שני:

לאחריו? BEQ פקודות מלפני 3אולי אפשר להעביר •

דוגמה:•

בין אם תתבצע הקפיצה ובין אם לא, שלוש הפקודות בצבע •צריכות להתבצע

פקודות יעילות 3פתרון לא קל: קשה מאוד למצוא תמיד •למשל שישפיעו )אסור Branchשאפשר להעביר לאחר ה-

כמו בפתרון NOP. אם לא, נוסיף על החלטת הקפיצה(הראשון

יש פתרונות טובים יותר ! נראה בהמשך הערה:•

loop: sub $t0,$t0,$t1add $s0,$s1,$s2add $v0,$v1,$v0xor $t2,$t3,$t4bne $t0,$zero,loopnop X 3

loop: sub $t0,$t0,$t1bne $t0,$zero,loopadd $s0,$s1,$s2add $v0,$v1,$v0xor $t2,$t3,$t4

December 2013 24

data hazard?

Page 25: Data Hazards

Flush on Takenפתרון שלישי:

נשתמש בקוד המקורי ללא שינוי. אם לא תהיה •( נמשיך כרגיל. אם תהיה Not Takeקפיצה )

קפיצה, נשמיד שלוש פקודות

(flush the pipeריקון הצינור )•

: נאפס את קווי Load Hazardבדיוק כמו במקרה של –הבקרה

הביצועים:•

(CPI=1אם לא תהיה קפיצה, פקודה לכל מחזור שעון )–

3: תוספת NOP×3אם תהיה קפיצה, כמו במקרה של –60%מחזורי סרק, ירידת ביצועים עד

December 2013 25

Page 26: Data Hazards

EXE לשלב BRפתרון רביעי: העברת

PC

Instructionmemory

Inst

ruct

ion

Add

Instruction[20– 16]

Mem

toR

eg

ALUOp

RegDst

ALUSrc

4

16 32Instruction[15–0]

0

0

Mux

0

1

Add Addresult

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux1

ALUresult

Zero

Writedata

Mux

1

ALUcontrol

Shiftleft 2

Reg

Wr it

e

MemRead

Control

ALU

Instruction[15– 11]

6

EX

M

WB

M

WB

WB

Readdata

IF/ID

PCSrc

ID/EX

EX/MEM

MEM/WB

Mux

0

1

Mem

Writ

e

AddressData

memory

Address

December 2013 26

Branch

Page 27: Data Hazards

EXE לשלב BRפתרון רביעי: העברת

פשוט )אין שינוי משמעותי בתכנון(•

3מספר הפקודות שעלולות להיזרק ירד מ-•2ל-

40%הפגיעה המרבית בביצועים ירדה ל- •

Branchהאם ניתן להמשיך ולהעביר את ה-•עוד יותר מוקדם?

כן!

December 2013 27

Page 28: Data Hazards

ID לשלב BRפתרון חמישי: העברת

PC Instructionmemory

4

Registers

Mux

Mux

Mux

ALU

EX

M

WB

M

WB

WB

ID/EX

0

EX/MEM

MEM/WB

Datamemory

Mux

Hazarddetection

unit

Forwardingunit

IF.Flush

IF/ID

Signextend

Control

Mux

=

Shiftleft 2

Mux

December 2013 28

Page 29: Data Hazards

ID לשלב BRפתרון חמישי: העברת

ואין כיצד לבצע השוואה )חיסור(ID בשלב ALUאין •

(XORנוסיף משווה פשוט )מבוסס שערי •

כדי שההשוואה תתבצע בין נתונים FORWARDנוסיף עוד יחידת •"טריים"

•STALLעשוי עדיין להיות דרוש

December 2013 29

ID.חישוב כתובת הקפיצה נעשה כבר בשלב ה

חישוב כתובת הקפיצה נעשה לכל פקודה! מדוע?

…sub $t0,$t0,$t1bne $t0,$zero,loop

Page 30: Data Hazards

Flushing Instructions

PC Instructionmemory

4

Registers

Mux

Mux

Mux

ALU

EX

M

WB

M

WB

WB

ID/EX

0

EX/MEM

MEM/WB

Datamemory

Mux

Hazarddetection

unit

Forwardingunit

IF.Flush

IF/ID

Signextend

Control

Mux

=

Shiftleft 2

Mux

Forwardingunit

December 2013 30

Page 31: Data Hazards

Single Delay Slotפתרון שישי:

אחד בלבדdelay slotנחזור לפתרון השני, אבל עם •

ID לשלב branchאפשרי, כי כבר העברנו את ה-•

מתבצעת תמידbranchאין צורך בריקון, הפקודה אחרי •

פקודה מועילה, אם המתכנת / הקומפיילר הצליחו–

במקרים אחריםNOPפקודת –

אזהרה: אסור לערבב תכניות שנכתבו לפתרונות •החמישי והשישי. מדוע?

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

December 2013 31

Page 32: Data Hazards

פתרון שביעי: החלטה דינמית

ננחש )ע"פ ההיסטוריה( האם הקפיצה תתבצע או לא•

ע"פ הניחוש, נביא את הפקודה הצפויה•

T, יעד הקפיצה אם )NT )Not Takenהפקודה הבאה אם –

אם הניחוש הצליח, הרווחנו זמן•

אם הניחוש נכשל:•

לפקודה שהובאה ונמשיך כרגילFlushנבצע –

נשקול לעדכן את הניחוש לפעם הבאה–

הסיפור המלא שייך לקורס "מבנה מחשבים ספרתיים"•

December 2013 32

Page 33: Data Hazards

סיכום

אמור להאיץ את החישובpipelineהשימוש ב-•

משלמים בחומרה ובהספק•

משלמים בסיבוך )תוכנה + חומרה( לטיפול •hazardsב-

December 2013 33