מדידת ביצועי מערכת חישוב
Download
Report
Transcript מדידת ביצועי מערכת חישוב
מרכיבי מסלול הנתונים
) חוץ מזמן טעינת תכנית חדשה,Read Only( זיכרון פקודות
•
)Read / Write( זיכרון נתונים
•
רגיסטרים
•
Program counter (PC)
•
ALU
•
Data
PC
Address
Instruction
Instruction
memory
Register #
Registers
Register #
ALU
Address
Data
memory
Register #
Data
December 2013
1
A General Register File
כתובת רגיסטר לקריאה
כתובת רגיסטר לכתיבה
Register number
Write
Register
number
enable 0
E
1
D
log n
to-n
decoder
n– 2
Register 0
E
Register 1
n-to-1
selector
D
תוכן
נקרא
n–1
E
Register n – 2
D
Register
data
תוכן לכתיבה
n-to-1
selector
E
Register n – 1
D
Register number
כתובת רגיסטר לקריאה
December 2013
2
Register Files (Read Ports)
Read register
number 1
Register 0
Register 1
Register n-2
Register n-1
M
u
x
Read data 1
M
u
x
Read data 2
Read register
number 2
December 2013
3
Register Files (Write Port)
Write
0
Register number
E
Register 0
1
D
n-to-1
decoder
E
n-2
Register 1
D
n-1
E
Register n-2
D
E
Register n-1
Register data
December 2013
D
4
MIPS Register File
Register number
5
Write
Register
number
5
enable 0
E
1
D
5-to-32
Decoder
30
Register 0
32
E
Register 1
32×
32-to-1
Selectors
32
32
D
31
E
32
Register 30
D
E
Register
data
32×
32-to-1
Selectors
32
Register 31
D
32
32
5
Register number
December 2013
5
ביצוע פקודות בשלבים
• מסלול הנתונים ממומש כמכונת מצבים
• ביצוע פקודה מחזור שעון אחד
• אבל במהלך הביצוע לא הכול קורה בו זמנית .ניתן
להבחין בשלבים שונים הקורים זה אחר זה
• נבחן כל שלב בנפרד.
• מאוחר יותר נשנה את המכונה כך שכל שלב יתבצע
במחזור שעון נפרד
– במכונה שבה כל פקודה מתבצעת במספר מחזורי שעון
– במכונה עם pipeline
6
December 2013
שני השלבים הראשונים זהים לכל הפקודות
– FETCH .1הבאת הפקודה שה PC-מצביע עליה
מזיכרון הפקודות
– DECODE .2פענוח הפקודה ו – READ-קריאת
0,1או 2רגיסטרים ,בהתאם לפקודה.
Instruction memory
funct
7
shamt
rd
rt
rs
op
PC
December 2013
4- בPC-הבאת פקודה והגדלת ה
Add
4
PC
Read
address
Instruction
Instruction
memory
December 2013
8
פענוח הפקודה
add $t1, $t2, $t3
:R-type • פענוח פקודה מסוג
הינהALU פעולת ה
Func וOp תוצאה של
Op=0
Rs=10
5
Register
numbers
5
5
Data
Rt=11
Shamt=0
3
Read
register 1
Read
register 2
Registers
Write
register
Write
data
Rd=9
Funct=32
ALU control
Read
data 1
Data
Zero
ALU ALU
result
Read
data 2
RegWrite
a. Registers
December 2013
b. ALU
9
במסלול הנתוניםstore ,load-תמיכה ב
base
Reg
temp
Reg
Op=35
Rs=9
Instruction
Rt=8
Address offset=100
3
Read
register 1
Read
register 2
Registers
Write
register
Write
data
:• דוגמה
lw $t0, 100($t1)
ALU operation
MemWrite
Read
data 1
Zero
ALU
ALU
result
Address
Read
data 2
Write
data
RegWrite
16
Sign
extend
Read
data
Data
memory
32
MemRead
offset
December 2013
10
תמיכה בקפיצה מותנית
:• דוגמה
beq $t0, $t1, 100
'00'-• ננצל שוב את העובדה שכתובות של פקודות מסתיימות ב
Op=4
Rs=8
Rt=9
Address offset=25
PC + 4 from instruction datapath
words
Add Sum
multiply by 4
Shift
left 2
Instruction
Read
register 2
Registers
W rite
register
W rite
data
bytes
3
Read
register 1
Branch target
ALU operation
Read
data 1
ALU Zero
To branch
control logic
Read
data 2
RegW rite
16
December 2013
S ign
extend
32
11
שילוב חלקי מסלול הנתונים
משולביםlw/sw - ובadd/sub -• החלקים התומכים ב
:)mux( בעזרת בוררים
3
R e ad
reg ister 1
Instruction
M e m W rite
Read
da ta 1
M em to R eg
R e ad
reg ister 2
R egisters Read
W rite
da ta 2
reg ister
A LU S rc
M
u
x
ALU
result
A ddress
W rite
d ata
R eg W rite
16
Ze ro
ALU
W rite
d ata
December 2013
A L U op e ration
Sign
e xte nd
Read
d ata
Data
m em ory
M
u
x
32
M e m R ea d
12
שילוב התמיכה בקפיצות מותנות
next instruction
sequential
PCSrc
M
u
x
Add
Add A LU
result
4
Shift
left 2
PC
Read
address
Instruction
Instruction
memory
Registers
Read
register 1
Read
Read
data 1
register 2
W rite
register
ALUSrc
Read
data 2
M
u
x
W rite
data
December 2013
A LU operation
Zero
A LU ALU
result
Sign
extend
MemWrite
MemtoReg
Address
Write
data
RegW rite
16
3
Read
data
D ata
memory
M
u
x
32
MemRead
13
כיעד לכתיבהrt / rd ובחירתALU בקרת
PCSrc
Add
ALU
Add result
4
lw / sw
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]
RegWrite
Read
register 1
Read
register 2
Read
data 1
Read
Write
data 2
register
Write
Registers
data
16
Sign 32
extend
0
M
u
x
1
Shift
left 2
MemWrite
ALUSrc
0
M
u
x
1
Zero
ALU ALU
result
MemtoReg
Address
Write
data
ALU
control
Read
data
1
M
u
x
0
Data
memory
MemRead
Instruction [5– 0]
ALUOp
R-type
December 2013
14
ALU בקרת
מןFUNCT ,OP כתלות בערכי השדותALU-• בוחרים מה יעשה ה
הפקודה
I-type
Op
Rs
Rt
Address offset
R-type
Op
Rs
Rt
Rd
Shamt
Funct
Instruction
Op
Funct
(ALUOp)
ALU ctrl
Function
lw
35
-
00
010
ADD
sw
43
-
00
010
ADD
beq
4
-
01
110
SUB
addu
0
33
10
010
ADD
sub
0
34
10
110
SUB
and
0
36
10
000
AND
or
0
37
10
001
OR
slt
0
42
10
111
SLT
December 2013
15
ALU-קווי הבקרה לבוררים ו
0
M
u
x
ALU
Add result
Add
4
Instruction [31 26]
Read
address
Instruction
memory
Instruction [15 11]
PCSrc
Read
register 1
Instruction [20 16]
Instruction
[31– 0]
Shift
left 2
RegDst
Branch
MemRead
MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25 21]
PC
1
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Zero
ALU ALU
result
Address
Write
data
Instruction [15 0]
16
Sign
extend
Read
data
1
M
u
x
0
Data
memory
32
ALU
control
Instruction [5 0]
December 2013
16
הבקר הראשי
לקביעת כל הבורריםOP • הבקר הראשי משתמש רק בערכי השדה
Inst.
Opcode
RegDst
ALUSrc
Memto
-Reg
RegWrite
MemRead
MemWrite
Branch
ALUOp
R-type
0
1
0
0
1
0
0
0
10
lw
35
0
1
1
1
1
0
0
00
sw
43
X
1
X
0
0
1
0
00
beq
4
X
0
X
0
0
0
1
01
December 2013
17
מימוש הבקר הראשי
Inputs
Op5
Op4
Op3
Op2
Op1
Op0
0
35
43
4
O utputs
R -for mat
Iw
sw
beq
RegD st
ALUSrc
M emtoReg
RegWrite
M emRead
M emWrite
Branch
ALUOp1
ALUOpO
December 2013
18
(1/4) R-type ביצוע פקודת
0
M
u
x
Add
Add
4
Instruction [31– 26]
Control
Instruction [25– 21]
PC
Read
address
Instruction
memory
Instruction [15– 11]
1
Shift
left 2
RegDst
R
egDst
Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Read
register 1
Instruction [20– 16]
Instruction
[31– 0]
ALU
result
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Zero
ALU ALU
result
Address
Write
data
Instruction [15– 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5– 0]
December 2013
19
(2/4) R-type ביצוע פקודת
0
M
u
x
Add
4
Instruction [31– 26]
Control
Instruction [25– 21]
PC
Read
address
Instruction
memory
Instruction [15– 11]
1
Zero
ALU ALU
result
Address
Shift
left 2
RegDst
Branch
Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Read
register 1
Instruction [20– 16]
Instruction
[31– 0]
ALU
Add result
0
M
u
x
1
Read
data 1
Read
Rea
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Write
data
Instruction [15– 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5– 0]
December 2013
20
(3/4) R-type ביצוע פקודת
0
M
u
x
Add
4
Instruction [31 26]
Control
Instruction [25 21]
PC
Read
address
Instruction
memory
Instruction [15 11]
1
Zero
ALU ALU
result
Address
Shift
left 2
RegDst
Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Read
register 1
Instruction [20 16]
Instruction
[31– 0]
ALU
Add result
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Write
data
Instruction [15 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5 0]
December 2013
21
(4/4) R-type ביצוע פקודת
0
M
u
x
Add
4
Instruction [31 26]
Control
Instruction [25 21]
PC
Read
address
Instruction
memory
Instruction [15 11]
1
Zero
ALU ALU
result
Address
Shift
left 2
RegDst
Branch
Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Read
register 1
Instruction [20 16]
Instruction
[31– 0]
ALU
Add result
0
M
u
x
1
Read
dat 1
data
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
Write
data
Instruction [15 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5 0]
December 2013
22
הוספת פקודת J
• דוגמהj 10000 :
Jump target address=2500
byte
Op=2
word
• בכתובת אין מספיק סיביות (רק —26דרושות .)32
נשלים ע"י שרשור הסיביות:
– 4סיביות עליונותPC+4 [31…28] :
– 26סיביות מהפקודה
– 2סיביות '( '00ע"י הזזה שמאלה בשני מקומות)
23
December 2013
JUMP-הוספת הטיפול ב
Instruction [25– 0]
26
Shift
left 2
Jump address [31– 0]
28
PC+4 [31– 28]
Add
Add
1
M
u
x
M
u
x
1
0
Shift
left 2
RegDst
Jump
4
ALU
result
0
Branch
Instruction [31– 26]
MemRead
Control
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25– 21]
PC
Read
register 1
Read
address
Instruction [20– 16]
Instruction
[31– 0]
Instruction
memory
Instruction [15– 11]
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Zero
0
M
u
x
1
Write
data
ALU
ALU
result
Address
Write
data
Instruction [15– 0]
16
Sign
extend
Read
data
Data
memory
1
M
u
x
0
32
ALU
control
Instruction [5– 0]
December 2013
24
מהלך ביצוע פקודה במימוש מחזור יחיד
PCout
INSTR. MEMout
CONTROLout
REG1,2out
ALUout
DATA MEMout
REG DATAin
Only for lw
tSU
PCin
December 2013
25
? מתי מגיע השעון
Instruction [25– 0]
26
Shift
left 2
Jump address [31– 0]
28
PC+4 [31– 28]
Add
Add
1
M
u
x
M
u
x
1
0
Shift
left 2
RegDst
Jump
4
ALU
result
0
Branch
Instruction [31– 26]
MemRead
Control
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [25– 21]
PC
Read
register 1
Read
address
Instruction [20– 16]
Instruction
[31– 0]
Instruction
memory
Instruction [15– 11]
t
0
M
u
x
1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
0
M
u
x
1
Write
data
ALU
result
16
Sign
extend
t+1
Instruction [5– 0]
Read
data
Address
Write
data
Instruction [15– 0]
December 2013
Zero
ALU
Data
memory
1
M
u
x
0
32
ALU
control
t+1
26
ביצועי מחשב בעל מחזור שעון יחיד
• מחשב בעל מחזור שעון יחיד הוא פשוט לתכנון
• אבל זמן המחזור תלוי בזמן הביצוע של פקודה האיטית ביותר...
• אילו פקודות מהירות ואילו איטיות?
• נבדוק את זמני ההשהיה של היחידות במחשב:
27
– זיכרונות:
2 ns
– ALUומחברים:
2 ns
– רגיסטרים:
1 ns
– בוררים:
( 0 nsבאופן מעשי זה יותר)
– חוטים:
( 0 nsבאופן מעשי זה יותר)
December 2013
מסלולים קריטיים במחשב
Instr.-type
Components used
ALU
I-Mem
Registers
ALU
Load
I-Mem
Registers
ALU
D-Mem
Store
I-Mem
Registers
ALU
D-Mem
Branch
I-Mem
Registers
ALU
Jump
I-Mem
Instr.-type
I-Mem
Registers
ALU
ALU
2
1
2
Load
2
1
2
2
Store
2
1
2
2
Branch
2
1
2
Jump
2
December 2013
Registers
D-Mem
Registers
Registers
Total
1
6 ns
1
8 ns
7 ns
5 ns
2 ns
28
שיפור הביצועים
• המסלול הקריטי בדוגמה 8nsקובע את זמן המחזור
• תדר השעון המרבי1/8ns = 125 MHz :
• ניתן להפוך את המחשב לpipeline-
– ילמד בהמשך הסמסטר
• שיטה אחרת אפשרית הינה תכנון מסלול נתונים של
מספר מחזורי שעון
– מה ניתן להרוויח ע"י מספר מחזורי שעון בפקודה?
29
December 2013
• פקודות store ,loadלוקחות זמן רב ,ואחרות פחות
– אולי כדאי לכתוב תכניות שמכילות פחות פקודות איטיות
ויותר פקודות מהירות?
• בתכניות רבות יש התפלגות פקודות טיפוסית:
– 24% Loads, 12% Stores, 44% ALU, 18%
Branches, 2% Jumps
• הזמן הממוצע של ביצוע פקודה:
= 8×24% + 7×12% + 6×44% + 5×18% + 2×2%
6.3ns
• שיפור הביצועים פוטנציאלי8ns / 6.3ns = 1.27 :
30
December 2013