מבנה מחשבים ספרתיים 234267
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 PresentationTRANSCRIPT
234267 - November 2005 1
מבנה מחשבים ספרתיים234267
:3תרגול מס' Data Hazards
מבוסס על תרגול של מורן גבישYohai DevirFranck Sala
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
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
4
Data Hazardsפתרונות ל- STALL
הפתרון הפשוט ביותר•פעולה כזו תעכב את ריצת הפקודות התלויות עד •
לסיום הפקודה שמעדכנת את הרגיסטר ובזבזני ביותר.pipelineפוגע בביצועי ה- •
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
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
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
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
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להשהות את ה-
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
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!
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
34
backups
)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
)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
)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
)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
)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
)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