Pipelining: Basics and data hazards
Download
Report
Transcript Pipelining: Basics and data hazards
מסלול נתונים של מחזור יחיד:תזכורת
PCSrc
Add
ALU
Add result
4
Shift
left 2
RegWrite
Instruction [25– 21]
PC
Read
address
Instruction
[31– 0]
Instruction
memory
Instruction [20– 16]
0
M
u
Instruction [15– 11] x
1
RegDst
Instruction [15– 0]
Read
register 1
Read
register 2
Read
data 1
MemWrite
ALUSrc
Read
Write
data 2
register
Write
Registers
data
16
Sign
extend
1
M
u
x
0
0
M
u
x
1
Zero
ALU ALU
result
MemtoReg
Address
Write
data
32
ALU
control
Read
data
1
M
u
x
0
Data
memory
MemRead
Instruction [5– 0]
ALUOp
December 2013
1
מחזורים במחשב מרובה מחזורים:תזכורת
Instruction fetch
IF .1
Instruction decode + Register file read
ID .2
Execute / Address calculation
EX .3
Memory access
MEM .4
Write back
WB .5
ננסה להבחין בשלבים אלו גם במסלול הנתונים של
:מחזור יחיד
December 2013
•
2
מסלול נתונים מחולק לשלבים
IF: Instruction fetch
ID: Instruction decode/
register file read
0
M
u
x
1
EX: Execute/
address calculation
MEM: Memory access
WB: Write back
! לשתי המטרות
Add
4
Add
Add
result
Shift
left 2
PC
Read
register 1
Address
Instruction
Instruction
memory
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
0
M
u
x
1
Zero
ALU ALU
result
Address
Data
memory
Write
data
16
December 2013
Sign
extend
Read
data
1
M
u
x
0
32
3
Pipelining
• חלוקת מסלול הנתונים לחמישה שלבים הופכת אותו
למחשב מרובה מחזורים
– CPI=5
– רק פקודה אחת מתבצעת בכל רגע
– רק שלב אחד מתוך חמישה פעיל — בזבוז !!
• האם ניתן להפעיל את כל חמשת השלבים בו זמנית?
– כן! Pipelineשל חמש פקודות שונות המתבצעות בו זמנית
4
December 2013
Pipeline -ביצוע פקודה בודדת וביצוע ב
Program
execution
Time
order
(in instructions)
lw $1, 100($0)
2
Instruction
Reg
fetch
lw $2, 200($0)
4
6
8
ALU
Data
access
10
12
16
18
Single cycle
Reg
Instruction
Reg
fetch
8 ns
14
lw $3, 300($0)
Data
access
ALU
Reg
Instruction
fetch
8 ns
...
8 ns
Program
2
execution
Time
order
(in instructions)
Instruction
lw $1, 100($0)
fetch
lw $2, 200($0)
2 ns
lw $3, 300($0)
4
Reg
Instruction
fetch
2 ns
6
ALU
Reg
Instruction
fetch
2 ns
December 2013
8
Data
access
ALU
Reg
2 ns
10
Reg
Data
access
14
12
Pipelined multi cycle
Reg
ALU
Data
access
2 ns
2 ns
Reg
2 ns
5
השהייה וCPI-
• ביצוע פקודה בודדת:
– זמן המחזור נקבע לפי הפקודה האיטית ביותר ( 8nsבפקודת )lw
– השהייה = מחזור אחד = 8ns
– CPI=1
– תדר שעון מקסימלי = 125 MHz = 1/8ns
• ביצוע :Pipeline
– זמן המחזור נקבע לפי השלב האיטי ביותר ()2ns
– השהייה = עומק ה 5 = pipeline-מחזורים = 10ns
– ( CPI=1מדוע?)
– תדר שעון מכסימלי = 500MHz = 1/2ns
6
December 2013
Pipeline-ביצוע פקודות ב
Time (in clock cycles)
Program
execution
order
(in instructions)
lw $1, 100($0)
CC 1
CC 2
IM
Reg
lw $2, 200($0)
lw $3, 300($0)
December 2013
IM
CC 3
ALU
Reg
IM
CC 4
CC 5
DM
Reg
ALU
Reg
DM
ALU
CC 6
CC 7
Reg
DM
Reg
7
Pipeline כולל רגיסטרי,מסלול הנתונים
0
M
u
x
1
IF/ID
ID/EX
EX/MEM
MEM/WB
Add
Add
Add result
4
PC
1
Instruction
Shift
left 2
Address
Instruction
memory
Read
register 1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
1
2
December 2013
Zero
ALU ALU
result
Address
Read
data
1
M
u
x
0
Data
memory
Write
data
16
Sign
extend
32
1
3
4
5
8
LW
December 2013
של פקודתFetch שלב
9
LW
December 2013
של פקודתDecode שלב
10
LW
December 2013
של פקודתExecute שלב
11
LW
December 2013
של פקודתMemory שלב
12
LW
של פקודתWrite-Back שלב
problem!
December 2013
13
הצצה על בקרת הPipeline-
• בעיה :עד שמגיעים לשלב write-backשל LW
(שלושה מחזורים לאחר פענוח הפקודה) ,כבר נעלם
מספר הרגיסטר ( )rt/rdולא נזכור לאן לכתוב את
התוצאה...
• פתרון:
– נשלח את מספר הרגיסטר ( )rt/rdבמורד ה pipeline-יחד
עם הנתונים!
– המילה לטעינה לרגיסטר ומספר הרגיסטר יגיעו יחד ל-
Register File
• בעצם זו רק דוגמה — הבעיה והפתרון מתאימים לכל
אותות הבקרה
14
December 2013
rt/rd מסלול נתונים מתוקן — כולל העברת
0
M
u
x
1
IF/ID
ID/EX
EX/MEM
MEM/WB
Add
4
Add
Add
result
PC
Address
Instruction
memory
Instruction
Shift
left 2
Read
register 1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
Zero
0
M
u
x
1
ALU
ALU
result
Address
Read
data
1
M
u
x
0
Data
memory
Write
data
16
December 2013
Sign
extend
32
15
שלב IFשל פקודת LWשאחריה
16
פקודת SUB
December 2013
SUB (IF)
December 2013
במקביל עםLW שלID שלב
17
SUB (ID)
December 2013
במקביל עםLW שלEX שלב
18
SUB (EX)
December 2013
במקביל עםLW שלMEM שלב
19
SUB (MEM)
December 2013
במקביל עםLW שלWB שלב
20
SUB (WB)
, לאחר סיוםLW
R-type instruction takes 5 cycles!
December 2013
21
בקר לPipelined MIPS-
• כל אותות הבקרה מועברים ב ,pipeline-ממש כמו הנתונים
• בקרת הכתיבה ברגיסטרים (לשלב )WBלא באמת מועברת
חזרה:
– כניסת הכתיבה לרגיסטרים בעצם שייכת לשלב הסופי בpipeline-
22
December 2013
pipeline-הוספת אותות בקרה ל
WB
Instruction
Control
IF/ID
December 2013
M
WB
EX
M
WB
ID/EX
EX/MEM
MEM/WB
23
הבקרה+ מסלול הנתונים
PCSrc
ID/EX
0
M
u
x
1
WB
Control
IF/ID
EX/MEM
M
WB
EX
M
MEM/WB
WB
Add
ALUSrc
Read
register 1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
Zero
ALU ALU
result
0
M
u
x
1
MemtoReg
Instruction
memory
Branch
Shift
left 2
MemWrite
Address
Instruction
PC
Add
Add result
RegWrite
4
Address
Data
memory
Read
data
Write
data
Instruction 16
[15– 0]
Instruction
[20– 16]
Instruction
[15– 11]
Sign
extend
32
6
ALU
control
0
M
u
x
1
1
M
u
x
0
MemRead
ALUOp
RegDst
December 2013
24