Upload
calum
View
57
Download
0
Embed Size (px)
DESCRIPTION
D. a. t. a. R. e. g. i. s. t. e. r. #. A. d. d. r. e. s. s. P. C. I. n. s. t. r. u. c. t. i. o. n. R. e. g. i. s. t. e. r. s. A. L. U. A. d. d. r. e. s. s. R. e. g. i. s. t. e. r. #. I. n. s. t. r. u. c. t. i. o. n. D. a. t. - PowerPoint PPT Presentation
Citation preview
1
מרכיבי מסלול הנתונים, חוץ מזמן טעינת תכנית חדשה(Read Onlyזיכרון פקודות )•
(Read / Writeזיכרון נתונים )•
רגיסטרים•
•Program counter )PC(
•ALU
Registers
Register #
Data
Register #
Datamemory
Address
Data
Register #
PC Instruction ALU
Instructionmemory
Address
December 2013
2
A General Register File
log nto-n
decoder
Register 0
Register 1
Register n – 2E
E
D
DRegister n – 1
E
E
D
D
Write
0
1
n – 2
n – 1
n-to-1selector
n-to-1selector
Register number
Register number
enable
numberRegister
dataRegister
כתובת רגיסטר לכתיבה
תוכן לכתיבה
כתובת רגיסטר לקריאה
כתובת רגיסטר לקריאה
December 2013
תוכן נקרא
3
Register Files )Read Ports(
Mux
Register 0
Register 1
Register n-2
Register n-1
Mux
Read data 1
Read data 2
Read registernumber 1
Read registernumber 2
December 2013
4
Register Files )Write Port(
n-to-1decoder
Register 0
Register 1
Register n-2E
E
D
DRegister n-1
E
E
D
D
Register number
Write
Register data
0
1
n-2
n-1
December 2013
5
MIPS Register File
Register 0
Register 1
Register E
E
D
DRegister 31
E
E
D
D
Write
0
1
31
32×32-to-1Selectors
32×32-to-1Selectors
Register number
Register number
enable
numberRegister
dataRegister
30
30
32
32
32
5
5
5
32
32
32
32
5-to-32Decoder
December 2013
6
ביצוע פקודות בשלבים
מסלול הנתונים ממומש כמכונת מצבים•
מחזור שעון אחדביצוע פקודה •
אבל במהלך הביצוע לא הכול קורה בו זמנית. ניתן •להבחין בשלבים שונים הקורים זה אחר זה
נבחן כל שלב בנפרד.•
מאוחר יותר נשנה את המכונה כך שכל שלב •יתבצע במחזור שעון נפרד
במכונה שבה כל פקודה מתבצעת במספר מחזורי שעון–
pipelineבמכונה עם –
December 2013
7
שני השלבים הראשונים זהים לכל הפקודות
.1FETCH – -הבאת הפקודה שהPC מצביע עליה מזיכרון הפקודות
.2DECODE –-פענוח הפקודה וREAD קריאת – . רגיסטרים, בהתאם לפקודה2 או 0,1
PC op rs rt rd shamt funct
Instruction memory
December 2013
8
4 ב-PCהבאת פקודה והגדלת ה-
PC
Instructionmemory
Readaddress
Instruction
4
Add
December 2013
9
פענוח הפקודה
R-type: add $t1, $t2, $t3פענוח פקודה מסוג •
Op=0 Rs=10 Rt=11 Rd=9 Shamt=0 Funct=32
ALU control
RegWrite
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Writedata
ALUresult
ALU
Data
Data
Registernumbers
a. Registers b. ALU
Zero5
5
5 3
הינה ALU פעולת ה ו Opתוצאה של
Func
December 2013
10
במסלול הנתוניםload, storeתמיכה ב-
)lw $t0, 100)$t1 דוגמה: •
Op=35 Rs=9 Rt=8 Address offset=100
Instruction
16 32
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Datamemory
Writedata
Readdata
Writedata
Signextend
ALUresult
Zero
ALU
Address
MemRead
MemWrite
RegWrite
ALU operation3
base Reg
offset
temp Reg
December 2013
11
תמיכה בקפיצה מותנית
beq $t0, $t1, 100דוגמה: •
'00ננצל שוב את העובדה שכתובות של פקודות מסתיימות ב-'•
Op=4 Rs=8 Rt=9 Address offset=25
16 32Sign
extend
ZeroALU
Sum
Shiftleft 2
To branchcontrol logic
Branch target
PC + 4 from instruction datapath
Instruction
Add
RegistersW riteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
W ritedata
RegWrite
ALU operation3
words
bytes
multiply by 4
December 2013
Instruction
16 32
RegistersW ritereg ister
Readdata 1
Readdata 2
Readregister 1
Readreg ister 2
Datamemory
W ritedata
Readdata
Mux
MuxW rite
data
Signextend
ALUresult
Zero
ALU
Address
RegW rite
ALU operation3
Mem Read
M em W rite
A LUSrcM em toReg
12
שילוב חלקי מסלול הנתונים
lw/sw וב- add/subהחלקים התומכים ב- •(:muxמשולבים בעזרת בוררים )
December 2013
13
מותנות שילוב התמיכה בקפיצות
PC
Instructionmemory
Readaddress
Instruction
16 32
Add ALUresult
Mux
Registers
Writeregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Shiftleft 2
4
Mux
ALU operation3
RegWrite
MemRead
MemWrite
PCSrc
ALUSrc
MemtoReg
ALUresult
ZeroALU
Datamemory
Address
Writedata
Readdata M
ux
Signextend
Add
next instruction
sequential
December 2013
14
כיעד לכתיבהrd / rt ובחירת ALUבקרת
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
RegWrite
4
16 32Instruction [15– 0]
0Registers
WriteregisterWritedata
Writedata
Readdata 1
Readdata 2
Readregister 1Readregister 2
Signextend
ALUresult
Zero
Datamemory
Address Readdata M
ux
1
1
Mux
0
1
Mux
0
1
Mux
0
Instruction [15– 11]
ALUcontrol
Shiftleft 2
PCSrc
ALU
Add ALUresult
R-type
lw / sw
December 2013
15
ALUבקרת
OP, FUNCT כתלות בערכי השדות ALUבוחרים מה יעשה ה-•מן הפקודה
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
Op Rs Rt Address offsetI-type
Op Rs Rt Rd Shamt FunctR-type
16
ALUקווי הבקרה לבוררים ו-
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux
1
ALUresult
Zero
PCSrc
Datamemory
Writedata
Readdata
Mux
1
Instruction [15 11]
ALUcontrol
Shiftleft 2
ALUAddress
December 2013
17
הבקר הראשי
לקביעת כל הבורריםOPהבקר הראשי משתמש רק בערכי השדה •
Inst.Op-
codeReg-Dst
ALU-Src
Memto-Reg
Reg-Write
Mem-Read
Mem-Write
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
18
מימוש הבקר הראשי
R-format Iw sw beq
Op0
Op1
Op2
Op3
Op4
Op5
Inputs
Outputs
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUOp1
ALUOpO
December 2013
0 4335 4
19
)R-type )1/4ביצוע פקודת
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31– 26]
4
16 32Instruction [15– 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Shiftleft 2
Mux
1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15– 11]
ALUcontrol
ALUAddress
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchR
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31– 26]
4
16 32Instruction [15– 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Read
egDst
ALUSrc
Instruction [31– 26]
4
16 32Instruction [15– 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Shiftleft 2
Mux
1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15– 11]
ALUcontrol
ALUAddress
December 2013
20
)R-type )2/4ביצוע פקודת
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31– 26]
4
16 32Instruction [15– 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Shiftleft 2
Mux1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15– 11]
ALUcontrol
ALUAddress
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branc
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31– 26]
4
16 32Instruction [15– 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Rea
hRegDst
ALUSrc
Instruction [31– 26]
4
16 32Instruction [15– 0]
0
0Mux
0
1
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Shiftleft 2
Mux1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15– 11]
ALUcontrol
ALUAddress
December 2013
21
)R-type )3/4ביצוע פקודת
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0Mux
0
1
ALUcontrol
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux1
ALUresult
Zero
Datamemory
ReaddataAddress
Writedata
Mux
1
Instruction [15 11]
ALU
Shiftleft 2
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0Mux
0
1
ALUcontrol
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
BranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0Mux
0
1
ALUcontrol
Control
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux1
ALUresult
Zero
Datamemory
ReaddataAddress
Writedata
Mux
1
Instruction [15 11]
ALU
Shiftleft 2
December 2013
22
)R-type )4/4ביצוע פקודת
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0Mux
0
1
ALUcontrol
Control
Shiftleft 2
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15 11]
ALUAddress
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
B
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Instruction [20 16]
Instruction [25 21]
Add
Instruction [5 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
BranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0Mux
0
1
ALUcontrol
Control
Shiftleft 2
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdat
ranchRegDst
ALUSrc
Instruction [31 26]
4
16 32Instruction [15 0]
0
0Mux
0
1
ALUcontrol
Control
Shiftleft 2
Add ALUresult
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15 11]
ALUAddress
December 2013
23
Jהוספת פקודת
j 10000דוגמה: •
(. 32—דרושות 26בכתובת אין מספיק סיביות )רק •נשלים ע"י שרשור הסיביות:
PC+4 [31…28] סיביות עליונות: 4–
סיביות מהפקודה26–
' )ע"י הזזה שמאלה בשני מקומות(00 סיביות '2–
Op=2 Jump target address=2500
word byte
December 2013
24
JUMPהוספת הטיפול ב-
Shiftleft 2
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Datamemory
Readdata
Writedata
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Instruction [15– 11]
Instruction [20– 16]
Instruction [25– 21]
Add
ALUresult
Zero
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branch
JumpRegDst
ALUSrc
Instruction [31– 26]
4
Mux
Instruction [25– 0] Jump address [31– 0]
PC+4 [31– 28]
Signextend
16 32Instruction [15– 0]
1
Mux
1
0
Mux
0
1
Mux
0
1
ALUcontrol
Control
Add ALUresult
Mux
0
1 0
ALU
26 28
Address
Shiftleft 2
December 2013
25
PCout
INSTR. MEMout
CONTROLout
REG1,2out
ALUout
DATA MEMout Only for lw
REG DATAin tSU
PCin
מהלך ביצוע פקודה במימוש מחזור יחיד
December 2013
26
מתי מגיע השעון ?
Shiftleft 2
PC
Instructionmemory
Readaddress
Instruction[31– 0]
Datamemory
Readdata
Writedata
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Instruction [15– 11]
Instruction [20– 16]
Instruction [25– 21]
Add
ALUresult
Zero
Instruction [5– 0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
Branch
JumpRegDst
ALUSrc
Instruction [31– 26]
4
Mux
Instruction [25– 0] Jump address [31– 0]
PC+4 [31– 28]
Signextend
16 32Instruction [15– 0]
1
Mux
1
0
Mux
0
1
Mux
0
1
ALUcontrol
Control
Add ALUresult
Mux
0
1 0
ALU
Shiftleft 2
26 28
Address
December 2013
t
t+1t+1
27
ביצועי מחשב בעל מחזור שעון יחיד
מחשב בעל מחזור שעון יחיד הוא פשוט לתכנון•
אבל זמן המחזור תלוי בזמן הביצוע של פקודה האיטית •ביותר...
אילו פקודות מהירות ואילו איטיות?•
נבדוק את זמני ההשהיה של היחידות במחשב:•
ns 2זיכרונות:–
–ALU:2 ומחברים ns
ns 1רגיסטרים:–
)באופן מעשי זה יותר(ns 0בוררים:–
)באופן מעשי זה יותר(ns 0חוטים:–
December 2013
28
מסלולים קריטיים במחשב
Instr.-type
Components used
ALU I-Mem Registers ALU Registers
Load I-Mem Registers ALU D-Mem Registers
Store I-Mem Registers ALU D-Mem
Branch I-Mem Registers ALU
Jump I-Mem
Instr.-type
I-Mem Registers ALU D-Mem Registers Total
ALU 2 1 2 1 6 ns
Load 2 1 2 2 1 8 ns
Store 2 1 2 2 7 ns
Branch 2 1 2 5 ns
Jump 2 2 ns
December 2013
29
שיפור הביצועים
קובע את זמן 8nsהמסלול הקריטי בדוגמה •המחזור
1/8ns = 125 MHz תדר השעון המרבי: •
pipelineניתן להפוך את המחשב ל-•
ילמד בהמשך הסמסטר–
שיטה אחרת אפשרית הינה תכנון מסלול נתונים •של מספר מחזורי שעון
מה ניתן להרוויח ע"י מספר מחזורי שעון בפקודה?–
December 2013
30
לוקחות זמן רב, ואחרות פחות load, storeפקודות •
אולי כדאי לכתוב תכניות שמכילות פחות פקודות –איטיות ויותר פקודות מהירות?
בתכניות רבות יש התפלגות פקודות טיפוסית: •
–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שיפור הביצועים פוטנציאלי: •
December 2013