מדידת ביצועי מערכת חישוב

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‬‬