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

40
234267 - November 2005 1 םםםם םםםםםם םםםםםםם234267 םםםםם םם'3 : Data Hazards םםםםם םם םםםםם םם םםםם םםםםYohai Devir Franck Sala

Upload: allegra-nichols

Post on 02-Jan-2016

21 views

Category:

Documents


1 download

DESCRIPTION

מבנה מחשבים ספרתיים 234267. תרגול מס' 3 : Data Hazards מבוסס על תרגול של מורן גביש Yohai Devir Franck Sala. ADD $1 $2 $3 (R1  R2 + R3) ADD $4 $1 $5 (R4  R1 + R5). ALU. Instruction Memory. Data Hazard. ID. EX. MEM. WB. Register File. Data Memory. - PowerPoint PPT Presentation

TRANSCRIPT

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

234267 - November 2005 1

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

:3תרגול מס' Data Hazards

מבוסס על תרגול של מורן גבישYohai DevirFranck Sala

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

Data Hazard

2

ADD $1 $2 $3 (R1 R2 + R3)

ADD $4 $1 $5 (R4 R1 + R5)

RAW (read after )תלות מידע( מסוג Data Hazardקטע קוד זה יוצר •write)

קוראת ID נוצרת כשפקודה הנמצאת בשלב ה- Data Hazardבעיית ה- • WB או EX ,MEMערך של רגיסטר שפקודה קודמת לה, הנמצאת בשלב ה-

.RFצריכה לעדכן ועדיין לא כתבה את העדכון לתוך ה-

pipelined יכולה להיווצר בין פקודות ב- RAW Data Hazardבעיית ה- •MIPS.שקיים בינן הפרש של לכל היותר שתי פקודות ,

ALU

Regis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

3

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

Inst

ruct

ion

InstructionMemory

Read Address

mux

1

0

WB

Read Address

Write Data

ReadData

Write Address

DataMemor

y

ID EX MEM WBIF

Data Hazard

ADD $4 $1 $5 ADD $1 $2 $3

ADD $1 $2 $3

ADD $4 $1 $5 ADD $1 $2 $3

Value that was read from R1 is the old

one!

R1 new value is still being processed

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

4

Data Hazardsפתרונות ל- STALL

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

לסיום הפקודה שמעדכנת את הרגיסטר ובזבזני ביותר.pipelineפוגע בביצועי ה- •

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

Stall

5

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

Inst

ruct

ion

InstructionMemory

Read Address

mux

1

0

WB

Rd\Rt

Read Address

Write Data

ReadData

Write Address

Rd\Rt

ADD $1 $2 $3

ADD $4 $1 $5 ADD $1 $2 $3 ADD $1 $2 $3

ADD $1 $2 $3

ADD $1 $2 $3

ADD $4 $1 $5ADD $4 $1 $5

ADD $4 $1 $5

ADD $4 $1 $5

DataMemor

y

ID EX MEM WBIF

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

Data Hazardsפתרונות ל- (2):

(RF) register Fileחציית

• Reduce the cases where we need to stall the pipeline

• Use the clock phases • Write the RF at first phase• Read the RF at the second phase• Possible to update the RF and read it in the same pipe

stage

6

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

register File חציית

7

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

Inst

ruct

ion

InstructionMemory

Read Address

mux

1

0

WB

Rd\Rt

Read Address

Write Data

ReadData

Write Address

Rd\Rt

DataMemor

y

ID EX MEM WBIF

ADD $1 $2 $3

ADD $4 $1 $5 ADD $1 $2 $3 ADD $1 $2 $3

ADD $1 $2 $3 ADD $1 $2 $3

ADD $4 $1 $5

ADD $4 $1 $5ADD $4 $1 $5 ADD $4 $1 $5ADD $4 $1 $5

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

8

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

Forwarding / bypassing

ערך רגיסטר המטרה של הפקודה הכותבת ידוע כבר בסוף שלב ה- •EX( שלה ונכתב ל- רגיסטר EX\MEM (latchבסוף שלב זה

ורק MEM\WB ערך זה נכתב לרגיסטר MEM בסיום שלב ה- • נכתב הערך לרגיסטר המטרהWBבשלב ה-

כלומר, נוכל להשתמש בערך רגיסטר המטרה לפני שערך זה נכתב •בפועל לרגיסטר.

ALU

Regis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

9

צמודות הן RAW Data Hazardהפקודות שיש בינן • הפקודה שכותבת לרגיסטרRx נמצאת בשלב MEM הפקודה שקוראת מרגיסטרRx נמצאת בשלב EX

לאחר שכבר קראה ערך לא נכון שלRx בשלב ID

)של הפקודה MEM משלב Rx: העברת התוכן החדש של רגיסטר פתרון• )של הפקודה שמשתמשת בנתון( לכניסה המתאימה של EXהכותבת( לשלב

ALUה- כלומר נבצעForwarding משלב MEM לשלב EX

Data Hazardsפתרונות ל- (4)

Forwarding / bypassing

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

, לא נוכל LWאם הפקודה הראשונה )הכותבת לרגיסטר( היא פקודת כי ערך רגיסטר EX לשלב ה- MEM משלב ה- forwardingלבצע

. לא נוכל לפתור בעיה זאת מבלי MEMהמטרה ידוע רק בסוף שלב ה- .pipelineלהשהות את ה-

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

Forwarding / bypassing

10

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

Inst

ruct

ion

InstructionMemory

Read Address

mux

1

0

WB

Rd\Rt

Read Address

Write Data

ReadData

Write Address

Rd\Rt

DataMemor

y

ID EX MEM WBIF

ADD $4 $1 $5

ADD $1 $2 $3 ADD $4 $1 $5

ADD $1 $2 $3

ADD $4 $1 $5

mux

1

0

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

Forwarding / bypassing: LW

11

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

Inst

ruct

ion

InstructionMemory

Read Address

mux

1

0

WB

Rd\Rt

Read Address

Write Data

ReadData

Write Address

Rd\Rt

DataMemor

y

ID EX MEM WBIF

mux

1

0

LW $1 100)$4) ADD $4 $1 $5

X

LW $1 100)$4) ADD $4 $1 $5

Value that was read from R1 is the old

one!

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

12

RAW Data Hazard בין הפקודות שיש בינן הפרש של פקודה אחתקיים • WB נמצאת בשלב Rxהפקודה שכותבת לרגיסטר • EX נמצאת בשלב Rxהפקודה שקוראת מרגיסטר •

RXלאחר שכבר קראה את הערך הישן של •

EX לשלב WB משלב RX:העברת התוכן החדש של רגיסטר פתרון • ALUלכניסה המתאימה של

.EX לשלב ה- WB משלב ה- forwardingכלומר נבצע •

Data Hazardsפתרונות ל- (5)

Forwarding / bypassing

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

LOADמקרה זה כולל מצב בו קיים הפרש של פקודה אחת בין פקודת LOAD RAW Dataופקודה אחרת ,שיש בינה לבין פקודת ה-

Hazard.

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

Forwarding / bypassing

13

ALU

result

Zero

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

32

Inst

ruct

ion

InstructionMemory

Read Address

mux

1

0

WB

Rd\Rt

Read Address

Write Data

ReadData

Write Address

Rd\Rt

DataMemor

y

ID EX MEM WBIF

mux

1

0

ADD $4 $1 $5 LW $1 100)$4)

ADD $1 $2 $3

ADD $4 $1 $5 Independent instruction

Independent instruction

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

14

שכתבה לרגיסטר )ולכן במקרה האחרונה מהפקודה forwardingתמיד נבצע את ה- • משלב forwardingששתי הפקודות הקודמות כתבו לרגיסטר אותו צריך לקרוא, נבצע

.WB ולא משלב ה- MEMה-

אשר מקבלת את forwarding unit מתבצע ע"י RAW Data Hazardזיהוי ומניעת • ומפקודות EX מהפקודה שבשלב ה- RAW Data Hazardהנתונים הנדרשים לזיהוי

-ים בכניסות MUX מבצעת פיקוד על שני forwarding unit. ה- MEM ו-WBבשלבי .ALUהמידע של ה-

לבין WB או MEM בין פקודה בשלב RAW Data Hazardע"מ לזהות אם קיים • חייבת לקבל את הנתונים הבאים:forwarding unit, ה- EXהפקודה בשלב

:MEM\WBמהפקודה בשלבי • ולאיזה רגיסטר.RF (RegWrite = 1)האם הפקודה כותבת בסוף ל- •

:EXמהפקודה בשלב ה- •מספרי רגיסטרי המקור של הפקודה.•

Dataפתרונות ל- Hazards:

Forwarding UnitALU

Regis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

15

Forwarding Unit

Co

ntr

ol

EX

M

WB

ForwardingUnit

1mux

0

0mux

1

0mux

B

1

2

0mux

A

1

2

DataMemoryA

LU

Register File

Ins

tru

cti

on

Me

mo

ry

PC

Inst

ruct

ion

IF/ID.Rs

IF/ID.Rt

IF/ID.RtIF/ID.Rd

Rs

Rt

Rt

Rd

WB

M WB

EX/MEM.Rd

MEM/WB.Rd

EX

/ME

M.R

eg

Wri

te

ME

M/W

B.R

eg

Wri

te

ID EX MEM WBIF

Rt/R

d

Rt/R

d

RegDst

RegDst

RegDst

WrData

WrData

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

16

:Data Hazards Forwarding Unitפתרונות ל- משמש את הפקודה כרגיסטר מקור או Rtשימו לב לכך שלא חובה לבדוק אם

תוצאה מהסיבה הבאה: לכתיבה ולא EX משמש את הפקודה הנוכחית בשלב Rtנניח שלמרות ש-

תבצע בדיקה שלו מול רגיסטרי התוצאה של forwarding unitלקריאה, ה- של Rt. נניח גם שאכן מתקיים שוויון בין מספר WB ו- MEMפקודות בשלב

WB או MEM לבין רגיסטר תוצאה של אחת הפקודות בשלב EXהפקודה בשלב תבצע העברה forwarding unit)או שתיהן יחד, זה לא משנה(. במקרה זה ה-

הבוחר בין תוכן MUXשל תוכן הרגיסטר החדש מהשלב המתאים דרך ה- . עפ"י השרטוט MEM או WB לבין הערכים משלב IDהרגיסטר הנקרא בשלב

הבוחר בין MUXהמפורט יותר בעמוד הבא, אפשר לראות שלאחר מכן נמצא Rt לבין Imm -ולכן אם הפקודה לא משתמשת ב ,Rt לא Rt -יעבור את ה MUX

forwarding unit שהתבצעה ע"י ה- Rt. לכן העברת הערך של Immהזה אלא .ALUלא תשפיע על מה שבאמת ייכנס בכניסה התחתונה של ה-

• No need to check if Rt is source or dest• If RT is dest @ EXE so no need for RT value @ EXE

• Check dest @ MEM, WB and forward Rt• Rt forwarded value won’t be used

• If RT is src @ EXE • Check dest @ MEM, WB• Rt forwarded value will be used

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

ID/EX

WB

EX

M

ALU

Src

6

ALU

result

Zero

+

Shift left 2

RegDst

Reg

Wri

te

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

[15-0]

[20-16]

[15-11]

Sig

nexte

nd

16

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

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

ALUControl

Forwarding unit

mux

mux

mux

1

0

RegDst

WrData

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

18

דוגמא

נסתכל על התכנית הבאה:

1. SUB $2 $1 $32. AND $4 $2 $53. OR $8 $2 $64. LW $9 1000($4)5. <Any independent command>6. SLT $1 $6 $9

.RAW Data Hazard נוצר2 לפקודה מס' 1בין פקודה מס'

R2 כלומר נעביר את הערך המעודכן של רגיסטר EX לשלב ה- MEM משלב ה- forwardingנבצע .2 של פקודה מס' EX בשלב ה ALU לכניסה העליונה של ה 1 של פקודה מספר MEMמשלב ה-

EX

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

19

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

ID/EX

WB

EX

MWB

WB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Forwarding unit

SUB $2 $1 $3AND $4 $2 $5OR $8 $2 $6LW $9 1000)$4)

New $2

$2 needed as 1st arg

RegDst = $2

RegDst

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

20

(2דוגמא )

1. SUB $2 $1 $32. AND $4 $2 $53. OR $8 $2 $64. LW $9 1000($4)5. <Any independent command>6. SLT $1 $6 $9

.RAW Data Hazard נוצר 3 לפקודה מס' 1בין פקודה מס' EX לשלב ה- WB משלב ה- forwardingנבצע

1 של פקודה מספר WB משלב ה- R2כלומר נעביר את הערך המעודכן של רגיסטר •.3 של פקודה מס' EX בשלב ה ALUלכניסה העליונה של ה

EX

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

ALU

result

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

MWB

WB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Forwarding unit

SUB $2 $1 $3AND $4 $2 $5OR $8 $2 $6Instruction

$2 needed as 1st arg

RegDst = $2

New

$2

LW $9 1000)$4)

RegDst = $4New $4

Inst

ruct

ion

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

22

(3דוגמא )

1. SUB $2 $1 $32. AND $4 $2 $53. OR $8 $2 $64. LW $9 1000($4)5. <Any independent command>6. SLT $1 $6 $9

.RAW Data Hazard נוצר 4 לפקודה מס' 2בין פקודה מס' EX לשלב ה- WB משלב ה- forwardingנבצע

2 של פקודה מספר WB משלב ה- R4כלומר נעביר את הערך המעודכן של רגיסטר •.4 של פקודה מס' EX בשלב ה ALUלכניסה העליונה של ה

EX

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

ALU

result

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

MWB

WB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Forwarding unit

SLT $1 $6 $9 AND $4 $2 $5OR $8 $2 $6Instruction

$4 needed as 1st arg

RegDst = $4

New

$4

LW $9 1000)$4)

RegDst = $8

New

$8

Inst

ruct

ion

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

24

(4דוגמא )

1. SUB $2 $1 $32. AND $4 $2 $53. OR $8 $2 $64. LW $9 1000($4)5. <Any independent command>6. SLT $1 $6 $9

.RAW Data Hazard נוצר 6 לפקודה מס' 4בין פקודה מס' EX לשלב ה- WB משלב ה- forwardingנבצע

4 של פקודה מספר WB משלב ה- R9כלומר נעביר את הערך המעודכן של רגיסטר •.6 של פקודה מס' EX בשלב ה ALUלכניסה התחתונה של ה

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

EX

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

ALU

result

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

MWB

WB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Forwarding unit

SLT $1 $6 $9 Instruction

$9 needed as 2nd arg

RegDst = $9

New $9

LW $9 1000)$4)

Inst

ruct

ion

RegDst

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

26

המצב היותר בעייתי הוא כאשר אין לפקודה LOADמרווח בין פקודת ה-

הבאה אחריה

1. LW $9, 1000($4)2. SLT $1 $6 $9

צמודה לפקודה הצורכת את הרגיסטר LOADכעת נוצר מצב בו פקודת ה- ( R9 טוענת לתוכו )LWשה-

שזה גם LW של MEM מוכן רק בסוף שלב R9במקרה זה הערך החדש של (. SLT של הפקודה שצריכה את הערך הזה )במקרה שלנו – EXסוף שלב

של הערך המחושב forwardingזה המקרה היחיד בו לא נוכל לבצע .stall ע"י ביצוע pipelineוחייבים לעקב את ה-

EX

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

27

HDUבשביל לטפל במקרה הזה קיימת יחידת ה- •

( ובכך מאפשרת SLT )לפקודת ה- ID בשלב ה- stallיחידה זו מבצעת •.EX לשלב ה- WB משלב ה- forwardingלבצע

צריכה לזהות את הדברים HDU ה- stallע"מ לזהות אם יש צורך ב-•הבאים:

o -האם הפקודה שבשלב הEX היא אכן פקודת LW אות הבקרה .MemToReg מציין האם זאת פקודת LW.

o האם קייםRAW בין Rt של LW לבין אחד מרגיסטרי המקור של IDהפקודה בשלב ה-

o שימו לב שכאן מוטב לזהות בוודאות האם הפקודה בשלבID כרגיסטר מקור או כרגיסטר תוצאה! – למה?Rtמשתמשת ב-

HDU: Hazard Detection Unit

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

28

שולטתHDUיחידת ה-•PCברגיסטר • IF/ID( latchבבריח )• בעזרתו ניתן לאפס את אותות הבקרה.MUXב-•

לבין הפקודה שאחריה היא מבצעת LW בין RAW זיהתה את ה-HDUבמקרה וה-•את הדברים הבאים:

•stall-ל PC ולבריח IF/ID כך שתוכנם לא ישתנה במחזור השעון הבא•

IDנטרול הפקודה שבשלב •. RFכך שהיא לא תשפיע על מצב המעבד ולא תכתוב לזיכרון ול-•

הנטרול מבוצע ע"י איפוס קווי הבקרה. פקודה עם קווי בקרה אפס הופכת •(. bubbleלהיות "בועה" )

.IDרק במחזור השעון הבא תשתחרר הפקודה האמיתית משלב ה-•

HDU: Hazard Detection Unit

ALUR

egis

ter

File

Inst

ruct

ion

Mem

ory

Data

Mem

ory

ID EX MEM WB

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

29

ALU

result

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

WBWB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Forwarding unit

Con

trol

4

+

PC

mux

1

0

Reg

Wri

te

ID/EX

WB

EX

M

Is EX Instruction LOAD?

EX instruction write register

HDU

ID instruction’s source regs

0mux

Make ID instruction a bubble

Stall PC and IF/ID latch

Inst

ruct

ion

RegDst

RegDst

Zero

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

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

Forwarding unit

Con

trol

4

+

PC

mux

1

0

Reg

Wri

te

ID/EX

WB

EX

M

HDU

0mux

30

SLT $1 $6 $9 LW $9, 1000)$4)

SLT $1 $6 $9 LW $9, 1000)$4)NEXT OP

SLT $1 $6 $9 LW $9, 1000)$4)NEXT OP ( SLT $1 $6 $9 )

SLT $1 $6 $9 LW $9, …NEXT OP ( SLT $1 $6 $9 )

Inst

ruct

ion

WrReg = $9

Exe Inst = LW

Src

Re

g =

$9

Stall PC Kill Exe

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

31

תלויות מידע נוספות

.Read After Write( RAW-שדברנו עליהם עד עכשיו היו מסוג )Data Hazardכל ה

:Data Hazards סוגים שונים של 3קיימים

• RAW Read After Write

• WAW Write After Write

• WAR Write After Read

)מעבד שמבצע פקודות רק בסדר הופעתן בקוד( יכולים לקרות In Orderבמערכות Data Hazard מסוג RAW.בלבד

MIPS היא מערכתIn Order ולכן מעבד MIPS לא מושפע מ Data Hazards מסוגים- Out עלולים להיות בעיה רק במערכות WAR אוWAW מסוג Data Hazardsאחרים.

Of Order.

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

32

WAW (Write after Write) Dataדוגמא של Hazard

ראשונה ADD לוקחת הרבה זמן, ולכן פקודת DIVפקודת •מתעכבת ולא יכולה להמשיך )למה?(

השנייה לפני ADD המעבד יבצע את פקודת ה-OOOבמערכת •(R1 הראשונה )המתעכבת עד לחישוב תוצאת ADDפקודת ה-

אחרי שלושת R4מה שעלול לקרות אז הוא שהתוכן הסופי של •הפקודות הוא זה שהיה אמור להיות אחרי הפקודה השנייה ולא אחרי

הפקודה השלישית.

.WAW Data Hazardזהו •

1.DIV $1 $2 $32.ADD $4 $1 $53.ADD $4 $7 $9

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

33

WAR (Write after Read) Data Hazardדוגמא של

האיטית גורמת לעיכוב פקודה 1כמו בדוגמא הקודמת, פקודה •2

R5 הבלתי תלויה מתבצעת וכותבת ערך ל- 3פקודה • תקבל את ערכו לפני העדכון R5 שמשתמשת ב- 2צריך לדאוג שפקודה •

.3של פקודה מספר

אלו.Data Hazards צריך לדאוג לטפל ב-OOOבמערכות •

1.DIV $1 $2 $32.ADD $4 $1 $53.ADD $5 $7 $9

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

34

backups

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

)C( Yohai Devir 234267 - November 2005 35

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 36: מבנה מחשבים ספרתיים 234267

)C( Yohai Devir 234267 - November 2005 36

ALU

result

Zero

Readreg 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

ID/EX

WB

EX

M

WB

Rd\Rt

WB

M

Read Address

Write Data

ReadData

Write Address

Rd\Rt

DataMemor

y

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

)C( Yohai Devir 234267 - November 2005 37

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

ID/EX

WB

EX

MWB

WB

M

Read Address

Write Data

ReadData

DataMemor

yWrite Address

mux

mux

Forwarding unit

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

)C( Yohai Devir 234267 - November 2005 38

ID instruction’s source regs

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

Forwarding unit

Con

trol

HDU

4

+

PC

mux

1

0

Reg

Wri

teID/EX

WB

EX

M

mux0

mux0

Is EX Instruction LOAD?

mux

0

Make ID instruction a

bubble

Stall PC and IF/ID latch

EX instruction write register

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

)C( Yohai Devir

ID/EX

WB

EX

M

ALU

Src

6

ALU

result

Zero

+

Shift left 2

RegDst

Reg

Wri

te

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

[15-0]

[20-16]

[15-11]

Sig

nexte

nd

16

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

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

ALUControl

Forwarding unit

mux

mux

mux

1

0

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

)C( Yohai Devir

ID/EX

WB

EX

M

ALU

Src

6

ALU

result

Zero

+

Shift left 2

RegDst

Reg

Wri

te

Readreg 1

Readreg 2

Writereg

Writedata

Readdata 1

Readdata 2

Reg

iste

r File

[15-0]

[20-16]

[15-11]

Sig

nexte

nd

16

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

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

ALUControl

Forwarding unit

mux

mux

mux

1

0