(C) Yohai Devir 234267 - 2005October 1
מבנה מחשבים ספרתיים234267
:1תרגול מס' מנהלות
MIPSחזרה על ארכיטקטורת ה-
(C) Yohai Devir 234267 - 2005October 2
אתר הקורס:http://webcourse.cs.technion.ac.il/234267
תרגילי בית: תרגילי בית במהלך הסמסטר5יינתנו בחינה סופית)80% התרגילים הטובים (4 תקף ע"פ 20%
הגשה בזוגות - נקודות יורדו על כל יום איחור5
ספרי קורס:Hennessy & Patterson - Computer Architecture: A Quantitative Approach.Hennessy & Patterson - Computer Organization and Design: The Hardware/ Software Interface
(C) Yohai Devir 234267 - 2005October 3
רגיסטרים (אוגרים)
ALU
Src
6
ALU
result
Zero
+Shift left 2
ALUControl
RegDst
Reg
Wri
te
Readreg 1Readreg 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
mux1
0
mux
1
0
mux1
0
ID/EX
WB
EX
M
Con
trol
32
WB
Rd\Rt
Reg
Wri
te
WB
M
Read Address
Write Data
ReadData
DataMemo
ryWrite Address
Rd\Rt
ALU
op
Reg
Dst
(C) Yohai Devir 234267 - 2005October 4
רגיסטרים (אוגרים)
ושווה קבוע ערכו R0 רגיסטרים לשימוש כללי. רגיסטר 32ישנם 0 .
float סיביות עבור פעולות 64 רגיסטרים של 16כמו כן ישנם אשר לחילופין ניתן להשתמש בכל אחד מהם כשני רגיסטרים
סיביות.32של R0 = 0R0 = 0
R1R1
R30R30
32
R31R31
F1F1
F3F3
F29F29
32
F31F31
F0F0
F2F2
F28F28
32
F30F30
F0F2
F28F30
(C) Yohai Devir 234267 - 2005October 5
MIPSאופני מיעון ב-: האופרנד מאוחסן ברגיסטר)register(רגיסטר
ADD $2,$3,$4; reg 2 reg3 + reg4
סיביות עם סימן16: האופרנד הוא קבוע (מקודד בקוד) גודל השדה הוא )Immediate(מיידי ADDI $2,$3,15; reg 2 reg3 + 15
:)Base + Displacementבסיס + היסט ( לערך שבשדה היסטהאופרנד נמצא בזיכרון. הכתובת בזיכרון מחושבת ע"י הוספת שדה ה
רגיסטר הבסיס
LW $2,105($3); reg 2 mem(Reg3 + 105)
לערך שדה PC: הערך מחושב ע"י חיבור הערך שב-)PC-relativeיחסי למונה התוכנית (. (קפיצה ביחס למקום הנוכחי)branches סיביות). מיועד אך ורק עבור immediate) 16ה-
BEQ $3,$4,15000; if reg3 == reg4 then PC PC + 4 + 4*15000
(C) Yohai Devir 234267 - 2005October 6
נוספותMIPSפקודות סיביות32) מילה בת Storeגישה לזיכרון, אכסן (
SW $3,100($4); mem(100+reg4) reg3
)reg0 = 0שימו לב ש- ) קבועה) מכתובת Loadגישה לזיכרון, טען (LW $4,8($0); reg4 mem(8 + 0)
Branch מותנה BEQ $0,$1,Label1; if reg1 == 0 then jump to Label1
)Set Less Thanהשוואה (כאן לפי SLT $1,$2,$3 if reg2 < reg3 then reg1 1 else reg1 0BNE $0,$1,L2 if reg0 != reg1 then jump to L2
אחרת המשך כרגיל)reg2<reg3 צמד הפקודות יגרום לקפיצה אם reg0=0(מאחר ו-
קפיצות בלתי מותנות PC – relative" J 10000קפיצת "
JR $31
(C) Yohai Devir 234267 - 2005October 7
קידוד הפקודות
בתים.4 כלומר – סיביות 32כל הפקודות בנות 32כל סוג מגדיר את החלוקה הפנימית בתוך אותן
סיביות:ישנם שלושה סוגי פקודות:
R-type - register instructions I-type - immediate J-type - jumps
קבוע בגודלו ונמצא תמיד. הוא op (opcode)שדה ה-חיוני כדי לדעת מהו סוג הפקודה וכיצד לבצע את
החלוקה הפנימית השונה בין פורמט לפורמט.
(C) Yohai Devir 234267 - 2005October 8
Rבפקודות מסוג
אומר מהי func ואילו שדה ה-0 תמיד שווה opשדה ה-הפקודה. rd עבור רגיסטר המקור, ושדה ה- rt וה- rsשדות ה-
עבור רגיסטר המטרה. מיועד לפקודה הזזת shamt (shift amount)שדה ה-
סיביות (שמאלה או ימינה)
קידוד הפקודות
Opcode Rs Rt Rd Shift amount
func
6bit 5bit 5bit 5bit 5bit 6bit
(C) Yohai Devir 234267 - 2005October 9
Iבפקודות מסוג
rs שדה ה-imm ופקודות עם שדה loadבפקודות עבור רגיסטר rtעבור רגיסטר הבסיס ושדה ה-
המטרה. עבור רגיסטר הבסיס rs שדה ה- storeבפקודות מכיל את הערך לאחסון בזיכרון. rtושדה ה-
עבור רגיסטרי המקור rt ו-branch, rsבפקודות PCוהקבוע מקודד את כתובת הקפיצה ביחס ל-
קידוד הפקודות
Opcode
Rs Rt Address \ Immediate
6bit 5bit 5bit 16 bit
(C) Yohai Devir 234267 - 2005October 10
Jבפקודות מסוג
סיביות 4קופצים אל הכתובת המתחילה משמאל ב- הסיביות 26שלאחריהן בזיכרון)segment (ה-PCמה-
סיביות אחרונות מימין שהן 2 ו-addressשבשדה ה-מאחר וכל הפקודות נמצאות בכתובות 00תמיד
.4המתחלקות ב-
קידוד הפקודות
Opcode כתובת קפיצה
6bit 26 bit
(C) Yohai Devir 234267 - 2005October 11
MIPSקונפיגורציות של ה-
single cycle כל פקודה מבוצעת במחזור שעון יחיד בעל - זמן מחזור ארוך מאוד.
multycycle - חלוקת הפקודות למספר שלבים ועבור כלפקודה לבצע בכל שלב חלק מהפעולות. רוב הפקודות עדיין
מחזורי שעון לפחות (קצרים יותר). אין שיפור 4משתמשות ב-משמעותי. Pipeline -מחלקים את ה – datapath .הסדרתי לשלבים
כאשר פקודה מסוימת מסיימת את השלב הראשון ועוברת לשלב השני, פקודה חדשה נכנסת לשלב הראשון וכן הלאה. מתקבל מצב בו בכל מחזור שעון כל פקודה מתקדמת בשלב
אחד. כלומר, בכל מחזור מסתיימת פקודה אחת ופקודה חדשה נכנסת לביצוע.
(C) Yohai Devir 234267 - 2005October 12
השלבים הבסיסיים בביצוע פקודות
כל פקודה (למעט נקודה צפה) ניתנת לחלוקה שלבים בסיסיים:5ל-1 .Fetch :
שליפת הפקודה לביצוע מהזיכרון.קידום מונה התוכנית לפקודה הבאה לביצוע
)IRאכסון הפקודה ברגיסטר זמני (
(C) Yohai Devir 234267 - 2005October 13
Instruction Fetch
ALU
Src
6
ALU
result
Zero
+
Shift left 2
ALUControl
RegDst
Reg
Wri
te
Readreg 1
Readreg 2
Writereg
Writedata
Readdata 1
Readdata 2
Re
gis
ter
Fil
e
[15-0]
[20-16]
[15-11]
Sig
ne
xte
nd
16
32
EX/MEM MEM/WB
Inst
ruct
ion
Mem
Rea
d
Mem
Writ
e
Bra
nch
PCSrc
Me
mto
Re
g
4
+
IF/ID
PC
InstructionMemory
Read Address
mux
1
0
mux
1
0
mux
1
0
mux
1
0
ID/EX
WB
EX
M
Co
ntr
ol
32
WB
Rd\Rt
Reg
Wri
te
WB
M
Read Address
Write Data
ReadData
DataMemory
Write Address
Rd\Rt
ALU
op
Reg
Dst
(C) Yohai Devir 234267 - 2005October 14
השלבים הבסיסיים בביצוע פקודות
2 .decode:.RFשליפת ערכי הרגיסטרים המתאימים מתוך •פענוח הפקודה ויצירת את אותות הבקרה •
שילוו את הפקודה בהמשך.•sign extension הרחבה של האופרנד :
סיביות. 32 סיביות ל- 16המקודד מ -
(C) Yohai Devir 234267 - 2005October 15
Instruction Decode
ALU
Src
6
ALU
result
Zero
+Shift left 2
ALUControl
RegDst
Reg
Wri
te
Readreg 1Readreg 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
mux1
0
mux
1
0
mux1
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 - 2005October 16
השלבים הבסיסיים בביצוע פקודות
3 .execute:ביצוע הפעולה הנדרשת על בסיס הערכים בערוצי
המידע:– ביצוע הפעולה הנדרשת ALUעבור פעולת •עבור גישה לזיכרון – חישוב הכתובת האפקטיבית•) – חישוב כתובת היעד branchעבור הסתעפות (•
2וחישוב תנאי הקפיצה – מבצעים את החישוב על הראשי ALUהאופרנדים מהרגיסטרים הנכנסים ל-
נדלק 0אם התוצאה היא אשר מבצע פעולת חיסור. ).BEQ וכך ידוע באם יש לקפוץ (ZEROדגל
חישוב כתובת היעד של הקפיצה.
(C) Yohai Devir 234267 - 2005October 17
EXecute
ALU
Src
6
ALU
result
Zero
+Shift left 2
ALUControl
RegDst
Reg
Wri
te
Readreg 1Readreg 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
mux1
0
mux
1
0
mux1
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 - 2005October 18
השלבים הבסיסיים בביצוע פקודות
3 .memory:.Store / Loadקריאה / כתיבה לזיכרון בפקודות
.branchהחלטה האם לקפוץ בפקודות : בכל שלב נכנסות Control Hazardשימו לב -
. עד שהבנו שצריך pipelineפקודות חדשות ל- לקפוץ, אולי נכנסו פקודות שכלל אינן צריכות
להתבצע.4 .Write back:
או מהזיכרון) לרגיסטר היעד.ALUאכסון התוצאה (מ-
(C) Yohai Devir 234267 - 2005October 19
MEMory \ WriteBack
ALU
Src
6
ALU
result
Zero
+Shift left 2
ALUControl
RegDst
Reg
Wri
te
Readreg 1Readreg 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
mux1
0
mux
1
0
mux1
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 - 2005October 20
אותות הבקרהSignal Name Effect when 0 Effect when 1
MemRead None. Data Memory contents at the read address are put on read data output.
MemWrite None. Data memory contents at address given by write address are replaced by value on write data input
ALUSrc The second ALU operand comes from the second register file output.
The second ALU operand is the sign-extended lower 16 bits of the instruction.
RegDst The register destination for the register write comes from the rt field.
The register destination number for the register write comes from the rd field.
RegWrite None. The register given by write register number input is written into with the value on the write data input.
PCSrc (== Branch & cond)
The PC is replaced by the output of adder that computes the value of PC+4.
The PC is replaced by the output of the adder that computes the branch target.
MemtoReg The value fed to the register write data input comes from the ALU.
The value fed to the register write data input comes from the data memory.
(C) Yohai Devir 234267 - 2005October 21
אותות הבקרה
ALU
Src
6
ALU
result
Zero
+Shift left 2
ALUControl
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
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
mux1
0
mux
1
0
mux1
0
ID/EX
WB
EX
M
Con
trol
32
WB
Rd\Rt
Reg
Wri
te
WB
M
Read Address
Write Data
ReadData
DataMemo
ryWrite Address
Rd\Rt
ALU
op
Reg
Dst
(C) Yohai Devir 234267 - 2005October 22
ALU control, ALUop func
Instruction opcode ALUop
Instruction operation
Function code
Desired ALU action
ALU control input
LW 00 load word - add 010
SW 00 store word - add 010
BEQ 01 branch equal - subtract 110
ADD 10 add 100000 add 010
SUB 10 subtract 100010 subtract 110
AND 10 AND 100100 and 000
OR 10 OR 100101 or 001
SLT 10 set-on-less-than 101010 set-on-less-than 111
(C) Yohai Devir 234267 - 2005October 23
עבור פקודות שונות:control linesדוגמאות לערכי
:branch של פקודת offsetדוגמא לקידוד ) branch (כתובת פקודת ה-700: אנו נמצאים בכתובת שאלה
. מה עלינו לקודד?800ורוצים לקפוץ לכתובת
stage Execution Memory WriteBack
פקודה RegDst ALU op1 ALU op0 ALU src ALU control
Branch PCsrc
Mem Read
Mem Write
Reg Write
Memto Reg
add 1 1 0 0 010 0 0 0 1 0
beq X 0 1 0 110 1/0 0 0 0 X
(C) Yohai Devir 234267 - 2005October 24
:שאלה. MIPS לסט הפקודות של ה- addconstברצוננו להוסיף פקודה בשם
).unsignedהפקודה תבצע חיבור של רגיסטר לקבוע חסר סימן ( והפעולה המתבצעת היא addconst R1,R2,constתחביר הפקודה
R1=R2+const הקבוע .const) 0) - 216-1 הינו מספר חיובי בטווח.
קידוד הפקודה החדשה הוא מסוג:•R•I•JRISCלא ניתן לממש פקודה כזאת במעבד מסוג •אף תשובה אינה נכונה•
?MIPSבמידה וניתן לממש את הפקודה, מה השינוי שנדרש במבנה ה-
(C) Yohai Devir 234267 - 2005October 25
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
1632
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
2
0
ID/EX
WB
EX
M
Con
trol
32
WB
Rd\Rt
Reg
Wri
te
WB
M
Read Address
Write Data
ReadData
DataMemo
ryWrite Address
Rd\Rt
ALU
op
Reg
Dst
16
zero
exte
nd
32
1
(C) Yohai Devir 234267 - 2005October 26
backups
(C) Yohai Devir 234267 - 2005October 27
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
DataMemo
ryWrite Address
Rd\Rt
ALU
op
Reg
Dst
(C) Yohai Devir 234267 - 2005October 28
MIPS machine language Name Format
ExampleComments
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
add R 0 2 3 1 0 32 add $1,$2, $3
sub R 0 2 3 1 0 34 sub $1, $2, $3
addi I 8 2 1 100 addi $1, $2, 100
addu R 0 2 3 1 0 33 addu $1, $2, $3
subu R 0 2 3 1 0 35 subu $1, $2, $3
addiu I 9 2 1 100 addiu $1, $2, 100
mfc0 R 16 0 1 14 0 0 mfc0 $1, $epc
mult R 0 2 3 0 0 24 mult $2, $3
multu R 0 2 3 0 0 25 multu $2, $3
div R 0 2 3 0 0 26 div $2, $3
divu R 0 2 3 0 0 27 divu $2, $3
mfhi R 0 0 0 1 0 16 mfhi $1
mflo R 0 0 0 1 0 18 mflo $1
and R 0 2 3 1 0 36 and $1, $2, $3
or R 0 2 3 1 0 37 or $1, $2, $3
andi I 12 2 1 100 andi $1, $2, 100
(C) Yohai Devir 234267 - 2005October 29
MIPS machine language (2) Name Format
ExampleComments
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
ori I 13 2 1 100 ori $1, $2, 100
sli R 0 0 2 1 10 0 sli $1, $2, 10
sri R 0 0 2 1 10 2 sri $1, $2, 10
lw I 35 2 1 100 lw $1, 100($2)
sw I 43 2 1 100 sw $1, 100($2)
lui I 15 0 1 100 lui $1, 100
beq I 4 1 2 100 beq $1, $2, 100
bne I 5 1 2 100 bne $1, $2, 100
slt R 0 2 3 1 0 42 slt $1, $2, $3
slti I 10 2 1 100 slti $1, $2, 100
sltu R 0 2 3 1 0 43 sltu $1, $2, $3
sltiu I 11 2 1 100 sltiu $1, $2, 100
j J 2 10000 j 10000
jr R 0 31 0 0 0 8 jr $31
jai J 3 1000 jal 10000
(C) Yohai Devir 234267 - 2005October 30
Field bits 31--26 25—21 20—16 15--11 10--6 5--0 All instructions 32 bits
Format R R op rs rt rd shamt funct Arithmetic instruction format
Format I I op rs rt address/immediate Transfer, branch, imm. inst. format
Format J J op target address Jump instruction format
Main MIPS machine language. Formats and examples are shown, with values in each field: op and funct fields from the opcode (each 6 bits), rs is a source register (5 bit), rt is also normally a source register (5 bits), rd is the destination register (5 bits), and shamt supplies the shift amount (5 bits). The field values are all in decimal .