data hazards

Post on 25-Jan-2016

28 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

Data Hazards

•Data Hazard

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

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

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

December 2013 1

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

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

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

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

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

December 2013 3

מסלולים שונים(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

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

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

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

Load Hazards

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

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

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

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

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

MEM/WBבאוגר December 2013 8

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

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

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

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

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

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

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

Example: Load is Decoded )1/4(

December 2013 16

Example: Load Hazard is Detected )2/4(

December 2013 17

Example: Bubble Inserted )3/4(

December 2013 18

Example: Data Gets Forwarded )4/4(

December 2013 19

Control Hazards

עד כה ראינו:•

–Data hazards

–Load hazard

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

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

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

EXE, ID, IFלשלבי –

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

December 2013 20

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

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

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

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

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

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

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

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

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

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

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

December 2013 23

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?

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

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

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

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

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

הביצועים:•

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

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

December 2013 25

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

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

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

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

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

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

כן!

December 2013 27

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

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

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

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

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

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

December 2013 29

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

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

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

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

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

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

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

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

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

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

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

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

December 2013 31

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

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

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

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

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

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

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

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

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

December 2013 32

סיכום

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

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

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

December 2013 33

top related