Ế
KI N TRÚC MÁY TÍNH
Tu n 10ầ
Ộ Ử
B X LÝ PROCESSOR
Copyrights 2017 CEUIT. All Rights Reserved. 1 03/2017
Ộ Ử B X LÝ
ụ
M c đích:
ế ự
ệ
ơ
ướ
ü Hi u c ch th c thi l nh và các quy
ề c v thi
ế ế t k
ể logic ́
́
ơ ả
ộ ộ ử ệ ü Thiê t kê Datapath v i 8 l nh c b n cho m t b x ế ế
ự
ệ
ớ lý và cách hi n th c thi
t k này.
1. Computer Organization and Design: The Hardware/Software Interface, Patterson,
ả ừ Slide tham kh o t :
2. NUS, Singapore
D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011.
Copyrights 2017 CEUIT. All Rights Reserved. 2 03/2017
Ộ Ử B X LÝ
ớ
ệ
1. Gi
i thi u
ắ ạ
ướ
ế ế
2. Nh c l
i các quy
c thi
t k logic
ự
ườ
ữ ệ
ơ
ả
3. Xây d ng đ
ng d li u (datapath) đ n gi n
ự
ơ
ệ
ỳ
4. Hi n th c datapath đ n chu k
Copyrights 2017 CEUIT. All Rights Reserved. 3 03/2017
ớ
Gi
ệ i thi u
ấ ủ
ệ
ộ
ượ
ế ố
ị
v Hi u su t c a m t máy tính đ
ở c xác đ nh b i ba y u t
:
p T ng s câu l nh ố
ệ ổ ượ ị ở Đ c xác đ nh b i trình biên d ch
ậ ệ ị ế và ki n trúc t p l nh
ượ
p Chu k xung clock ỳ p S chu k xung clock trên m t l nh
ộ ệ ố ỳ ệ ở ị Đ c xác đ nh b i quá ự ộ ử trình hi n th c b x lý
v M c đích chính c a ch
ủ ắ
(Clock cycles per instruction − CPI)
ụ - Gi
ng này: i thích quy t c ho t đ ng và h ơ
ươ ạ ộ ả
ự ẫ ng d n xây d ng datapath cho m t b x lý
ố ộ ố ệ ướ ế ậ ệ ả ứ ạ ồ ộ ộ ử ch a m t s l nh đ n gi n (gi ng ki n trúc t p l nh d ng MIPS), g m hai ý chính:
• Thi
ế ế t k datapath
• Hi n th c datapath đã thi
ự ệ ế ế t k
ồ ừ ữ ế ắ ủ t t
ộ t c a ‘Microprocessor without Interlocked Pipeline Stages’) ạ ượ ướ ể ở c phát tri n b i MIPS Technologies (tr c
ắ MIPS (b t ngu n t ch vi ậ ậ ệ ế là m t ki n trúc t p t p l nh d ng RISC, đ đây là MIPS Computer Systems, Inc.)
Copyrights 2017 CEUIT. All Rights Reserved. 4 03/2017
ớ
Gi
ệ i thi u
ủ ậ ệ
ệ
ỉ
ng này ch xem xét 8 l nh trong 3 nhóm chính c a t p l nh
ươ Ch MIPS:
§
ệ
ả
ộ
Nhóm l nh tham kh o b nh (
ớ lw và sw)
§
ệ
ế
Nhóm l nh liên quan đ n logic và s h c (
ố ọ add, sub, AND, OR, và slt)
§
ề
ệ
ệ
ệ
ả
ả
ằ
ớ
Nhóm l nh nh y (L nh nh y v i đi u ki n b ng
beq)
Copyrights 2017 CEUIT. All Rights Reserved. 5 03/2017
ớ
Gi
ệ i thi u
ổ
ệ
ệ ầ T ng quan các l nh c n xem xét: ả ộ ớ Nhóm l nh tham kh o b nh :
ọ ộ ử ụ N p l nh ạ ệ Đ c m t/hai thanh ghi S d ng ALU Truy xu t b nh đ ớ ể ấ ộ
ữ ệ ọ đ c/ghi d li u
ố ọ
ệ
Nhóm l nh logic và s h c:
ọ ộ ử ụ ữ ệ N p l nh ạ ệ Đ c m t/hai thanh ghi S d ng ALU Ghi d li u vào thanh ghi
ả
ệ Nhóm l nh nh y:
ọ ộ ử ụ ỉ ệ ể ị N p l nh ạ ệ Đ c m t/hai thanh ghi S d ng ALU Chuy n đ n đ a ch l nh ế
ự ế ế ả ti p theo d a trên k t qu so sánh
Copyrights 2017 CEUIT. All Rights Reserved. 6 03/2017
ớ
Gi
ệ i thi u
ả
ộ ộ ử
ủ
ớ
ệ
add, sub, AND, OR,
Hình nh datapath c a m t b x lý v i 8 l nh MIPS: slt, lw, sw và beq
7 03/2017
Ộ Ử B X LÝ
ớ
ệ
1. Gi
i thi u
ắ ạ
ướ
ế ế
2. Nh c l
i các quy
c thi
t k logic
ự
ườ
ữ ệ
ơ
ả
3. Xây d ng đ
ng d li u (datapath) đ n gi n
ự
ơ
ệ
ỳ
4. Hi n th c datapath đ n chu k
Copyrights 2017 CEUIT. All Rights Reserved. 8 03/2017
ướ
Quy
c thi
ế ế t k
ắ ạ
ầ
ệ
Ph n này nh c l
i các khái ni m:
ổ ợ
ạ v M ch t
h p (Combinational): ALU
ầ ự
ạ
v M ch tu n t
(Sequential): instruction/data memories và thanh ghi
ể
ề
ệ
v Tín hi u đi u khi n (Control signal)
v Tín hi u d li u
ệ ữ ệ (Data signal)
§
§
m c cao ho c ‘true’ ặ ệ ở ứ
ặ ấ
m c th p ho c ‘false’
§
ệ ở ứ Asserted (assert): Khi tín hi u Deasserted (deassert): Khi tín hi u Edgetriggered clocking (Rising/Falling)
v Bus
Copyrights 2017 CEUIT. All Rights Reserved. 9 03/2017
Ộ Ử B X LÝ
ớ
ệ
1. Gi
i thi u
ắ ạ
ướ
ế ế
2. Nh c l
i các quy
c thi
t k logic
ự
ườ
ữ ệ
ơ
ả
3. Xây d ng đ
ng d li u (datapath) đ n gi n
ự
ơ
ệ
ỳ
4. Hi n th c datapath đ n chu k
Copyrights 2017 CEUIT. All Rights Reserved. 10 03/2017
ự
ệ
Quy trình th c thi l nh
ạ ệ
n Instruction Fetch (tìm n p l nh):
ừ ộ
b nh (memory)
ớ ư
ỉ ủ ệ Program Counter (PC)
p N p l nh t ạ ệ p Đ a ch c a l nh l u trong thanh ghi ị
ả
ệ i mã l nh):
t x e N
ự
n Instruction Decode (gi p Tìm ra l nh th c hi n ệ ệ
n o i t c u r t s n I
Instruct ion Fetch Instruct ion Decode Operan
d Fetch
ạ
n Operand Fetch (tìm n p toán
ế
ệ
ầ
ạ
t cho l nh
Execut
e Result Write
ạ h ng): p L y các toán h ng c n thi ấ ự
ự
11 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ữ
n Execute (th c thi): p Th c hi n câu l nh ệ n Result Write (l u tr ): ữ ế
ệ ư ả
ư
p L u tr k t qu
ự
ệ
Quy trình th c thi l nh
ả
ơ ả
ự
ệ
ệ
ạ
n B ng sau mô t
ba giai đo n th c thi l nh trong ba nhóm l nh c b n
ượ
ả ủ c a MIPS (Giai đo n
ạ Fetch and Decode không đ
ị ể c hi n th )
standard
standard
standard
Fetch & Decode
o Đ c thanh ghi $1, xem
o Đ c thanh ghi $1, xem
o Đ c thanh ghi $1, xem
ạ
opr1
opr1
nh toán h ng
ọ ư ọ
opr1 nh toán h ng ư
Operand Fetch
nh toán h ng o Đ c thanh ghi $2, ư
ạ
ạ o Đ c thanh ghi $2, xem ạ
ọ ư ọ ư
opr2
nh toán h ng
ọ ạ ư ử ụ 20 nh toán o S d ng h ng ạ opr2
xem nh toán h ng opr2
Result = opr1 + opr2
o MemAddr = opr1 + opr2 o S d ng
Execute
Taken = (opr1 == opr2 )? Target = PC + Label*
ử ụ MemAddr đ ể ớ ọ ữ ệ ừ ộ đ c d li u t
b nh
ữ ệ ủ ừ ớ
ượ ư
ữ
c l u tr vào
ị nh có đ a ượ ượ c c đ
Result đ $3
if (Taken) PC = Target
Result Write
D li u c a t ch ỉ MemAddr đ ữ ư l u tr vào $3
n
n
opr = Operand
* = simplification, not exact
n MemAddr = Memory Address
add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label
12 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ệ
ự
ủ
ệ ệ ự ạ t k các giai đo n th c hi n l nh:
Quy trình th c thi l nh c a MIPS (5 công đo n)ạ ổ ế ế ả ạ Decode và Operand Fetch – Giai đo n Decode c a MIPS khá đ n gi n
n Thay đ i thi ü G p giai đo n ü Tách giai đo n ạ Execute thành ALU (Calculation) và Memory Access
add $3, $1, $2
lw $3, 20( $1 )
beq $1, $2, label
ị
ỉ ủ
ị
ỉ ủ
ọ ệ ư
ọ ệ ư
Fetch
ọ ệ ỉ ủ ệ ị Đ c l nh (đ a ch c a l nh ư l u trong thanh ghi PC)
Đ c l nh (đ a ch c a ệ l nh l u trong thanh ghi PC)
Đ c l nh (đ a ch c a ệ l nh l u trong thanh ghi PC)
ọ
o Đ c thanh ghi $1, xem
o Đ c thanh ghi $1, xem
opr1
nh toán h ng
toán h ng ạ
opr1 nh toán h ng ư
ọ
Decode & Operand Fetch
ạ o Đ c thanh ghi $2, xem ạ
ọ ư ọ ư
opr2
ư o Đ c thanh ghi $1, xem nh opr1 ư o Đ c thanh ghi $2, xem nh opr2
nh toán h ng
toán h ng ạ
ọ ạ ư ử ụ 20 nh toán o S d ng h ng ạ opr2
Result = opr1 + opr2
MemAddr = opr1 + opr2
ALU
Taken = (opr1 == opr2 )? Target = PC + Label*
ể ọ
S d ng
ử ụ MemAddr đ đ c
ữ ệ ừ ộ
ớ
d li u t
b nh
Memory Access
ượ ư
ữ
c l u tr vào
ữ ệ ủ ừ ớ ỉ
nh có đ a ượ ượ c đ
ị c
Result đ $3
if (Taken) PC = Target
ủ ạ ơ ộ
D li u c a t ch MemAddr đ ữ ư l u tr vào $3 Copyrights 2017 CEUIT. All Rights Reserved.
Result Write 03/2017
13
ủ
ự
ệ
Quy trình th c thi l nh c a MIPS (5 công đo n)ạ
Fetch
ạ ệ
n Instruction Fetch (N p l nh) n Instruction Decode & Operand
Instruct ion Decode ALU
ấ
ạ
ế
i mã và l y các toán h ng c n thi
t,
Fetch ả (Gi ọ ắ G i t
ầ t là “Instruction Decode”)
t x e N
n o i t c u r t s n I
ạ ử ụ
ạ
n ALU (Giai đo n s d ng ALU hay giai đo n
ự
th c thi)
Memor y Access Result Write
ấ
ạ
n Memory Access (Giai đo n truy xu t vùng
nh )ớ
ạ
ạ ế
ả ư
i k t qu /l u
n Result Write (Giai đo n ghi l
tr )ữ
14 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ự
ủ
ệ
ạ
Quy trình th c thi l nh c a MIPS (5 công đo n)
Fetch
ạ ệ
n Instruction Fetch (N p l nh) n Instruction Decode & Operand
Instruct ion Decode ALU
ấ
ạ
ế
i mã và l y các toán h ng c n thi
t,
Fetch ả (Gi ọ ắ G i t
ầ t là “Instruction Decode”)
t x e N
n o i t c u r t s n I
ạ ử ụ
ạ
n ALU (Giai đo n s d ng ALU hay giai đo n
ự
th c thi)
Memor y Access Result Write
ấ
ạ
n Memory Access (Giai đo n truy xu t vùng
nh )ớ
ạ
ạ ế
ả ư
i k t qu /l u
n Result Write (Giai đo n ghi l
tr )ữ
15 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ ệ
ạ
Giai đo n tìm n p l nh (Instruction Fetch)
ạ ệ
ể
ạ
Program Counter (PC) đ tìm n p
ạ n Giai đo n n p l nh: ử ụ 1. S d ng thanh ghi ệ l nh t
ừ b nhộ ớ
ặ
ộ
ệ
ử
n Thanh ghi PC là m t thanh ghi đ c bi
ộ t trong b vi x lý
ị ể ấ
ơ
ị
2. Tăng giá tr ị trong thanh ghi PC lên 4 đ n v đ l y đ a
ế
ch c a l nh ti p theo
ỉ ệ ẽ
ả jump) là m t ộ
ỉ ủ ệ ế ị ạ n T i sao đ a ch l nh ti p theo là PC + 4? ệ ệ n Chú ý, l nh r nhánh ( branch) và l nh nh y ( ợ
ng h p ngo i l
ầ
ế ạ
ạ ệ ạ n K t qu c a giai đo n này là đ u vào cho giai Decode):
ủ ệ ự ạ
ườ tr ả ủ ế đo n ti p theo ( ỗ ả ủ ế K t qu c a giai đo n này là 32 bit mã máy c a l nh c n th c thi. Chu i 32 bits này s s d ng nh đ u vào (input) cho giai đo n ti p theo là Decode
ẽ ử ụ ầ ế ư ầ ạ
16 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ ệ
ạ
Giai đo n tìm n p l nh (Instruction Fetch)
ộ ộ B c ng
Add
4
PC
Read address
Instruction
Instruction
Instruction memory
D e c o d e S t a g e
Thanh ghi PC
ớ ư
ữ Vùng nh l u tr l nhệ
17 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
Kh i ố Instruction Memory
Instruction Address
Instruction
ị ộ
ng
ỉ ủ ệ ệ là n i dung l nh t ỉ ượ
ứ
ữ ệ ớ ư n Vùng nh l u tr l nh ầ là đ a ch c a l nh n Đ u vào: ươ ầ n Đ u ra: ấ ớ ị ng v i đ a ch đ c cung c p
Instruction Memory
Instruction Memory
……….. add $3, $1, $2
2048
sll $4, $3, 2
2052
ế ủ ộ
ớ ố
ư ắ Cách s p x p c a b nh gi ng nh hình bên ph iả
………..
2056 andi $1, $4, 0xF ……
18 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ộ ộ B c ng
ế ợ
ộ ộ
ể ộ
ạ
ố
n M ch logic k t h p đ c ng 2 s b c ng
A
n Đ u vào:
A+B
Sum
A, B
Add
B
ầ p Hai s 32bit ố ầ n Đ u ra: p A + B
19 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ề ệ ử ụ
ệ
Ý ni m v vi c s d ng xung clock
ườ
ư
ượ ọ
ậ
ậ
n D ng nh thanh ghi PC đ
c đ c và c p nh t
ư ế
ạ ộ
cùng lúc: p PC ho t đ ng chính xác nh th nào?
n Magic of clock:
ượ ọ
ử
ầ
ậ
ậ
c đ c trong n a clock đ u và c p nh t thành PC+4
p PC đ
ế
ạ trong l n ầ kích c nh lên ti p theo
Add
4
Time
PC
Read address
Clk
In
Instruction
100
104
108
112
PC
Instruction memory
In
104
108
112
116
20 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ự
ủ
ệ
Quy trình th c thi l nh c a MIPS (5 công đo n)ạ
Fetch
ạ ệ
n Instruction Fetch (N p l nh) n Instruction Decode & Operand
Instruct ion Decode ALU
ầ
ấ
ạ
ế
i mã và l y các toán h ng c n thi
t,
Fetch ả (Gi ọ ắ g i t
t là “Instruction Decode”)
t x e N
n o i t c u r t s n I
ạ ử ụ
ạ
n ALU (Giai đo n s d ng ALU hay giai đo n
ự
th c thi)
Memor y Access Result Write
ấ
ạ
n Memory Access (Giai đo n truy xu t vùng
nh )ớ
ạ
ạ ế
ả ư
i k t qu /l u
n Result Write (Giai đo n ghi l
tr )ữ
21 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ
ả
i mã (
Giai đo n gi
Decode)
ạ n Giai đo n decode: ộ
ữ ệ
ườ
ủ
L y n i dung d li u trong các tr
ng (field) c a
ấ l nh:ệ
ể ệ
ủ ừ
ể
ề
ị
ng trong mã máy
tr
ầ
ế t
1. Đ c ọ opcode đ xác đ nh ki u l nh và chi u dài c a t ng
ệ
ườ ọ ữ ệ ừ ể n Có th 2 (l nh
2. Đ c d li u t ệ
các thanh ghi c n thi ặ add), 1 (l nh ệ addi) ho c 0 (l nh
j)
ạ
c (
ướ Fetch):
giai đo n tr ư
ầ ừ n Đ u vào t ầ ượ ệ L nh c n đ
c th c thi (Mã máy)
ạ
Execute):
ế Copyrights 2017 CEUIT. All Rights Reserved.
ạ
ầ
ầ n Đ u ra cho giai đo n ti p theo ( 03/2017 ế t Phép tính và các toán h ng c n thi
22
ạ
ả
i mã (
Giai đo n gi
Decode)
Register Number
Data
5
Read register 1
Read data 1
5
Inst.
Read register 2
Operands
Register File
5
Write register
F e t c h S t a g e
Read data 2
E x e c u t e S t a g e
Write data
ố
ợ ủ ứ ậ Kh i ch a t p h p c a ọ các thanh ghi, g i là Register file Ho c ặ Registers
23 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
Kh i ố Register File
thanh ghi:
ể ượ ọ
ặ
c đ c ho c
ỉ ố ủ
ỉ
ộ ậ n M t t p 32 p M i thanh ghi có chi u dài 32 bit và có th đ ề ỗ ghi b ng cách ch ra ch s c a thanh ghi
ằ ỗ ệ
ớ
ấ ừ
ọ
ề đ c nhi u nh t t
ỗ ệ
ớ
ề
p V i m i l nh, cho phép p V i m i l nh, cho phép
ghi vào nhi u nh t
2 thanh ghi ấ 1 thanh ghi
ụ
ằ
ộ
ề
ệ n RegWrite: là m t tín hi u đi u khi n nh m m c đích:
ể p Cho phép ghi vào m t thanh ghi hay không ộ p 1(True) = Write, 0 (False) = No Write
5
Read register 1
Read data 1
5
Register Number
Read register 2
Data
Register File
5
Write register
Read data 2
Data
Write data
RegWrite
24 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ả
Gi
i mã: l nh
ệ RType
add $8, $9, $10
Inst [25:21]
5
Read register 1
Read data 1
ủ ộ N i dung c a thanh ghi $9
5
Ins t [20:16]
Read register 2
Register File
5
rs
Write register
01001
01010
01000
100000
ộ ủ
[ 1 5 : 1 1 ] 00000
25:21
rt 20:16
rd 15:11
funct 5:0
shamt 10:6 I n s t
Read data 2
N i dung c a thanh ghi $10
Write data
RegWrite
ả
Ký hi u: ệ Inst[Y:X] ớ ỗ = chu i bit t
i Y trong
ừ X t l nhệ
ị ầ ế K t qu /giá tr c n ư l u vào thanh ghi ẽ ượ ở c sinh ra (s đ ạ giai đo n sau)
25 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ả
ệ
Gi
i mã: l nh
IType
lw $21, -50($22)
Inst [25:21]
5
ộ ủ
opcode 31:26
rs 25:21
rt 20:16
Read register 1
Read data 1
N i dung c a thanh ghi $22
5
Ins t [20:16]
Read register 2
Register File
5
Write register
10110
10101
1111 1111 1100 1110
[ 1 5 : 1 1 ]
I n s t
Read data 2
Write data
RegWrite
1 5 : 0
I m m e d i a t e
ấ
ề V n đ :
ặ
ị
Thanh ghi đích $21 “đ t không đúng v trí”
26 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ả
ả
Gi
i pháp cho ngõ “Write
i mã: Gi register”
lw $21, -50($22)
Inst [25:21]
5
opcode 31:26
rs 25:21
rt 20:16
Read register 1
Read data 1
5
In s t [ 2 0: 16]
Read register 2
Register File
5
Write register
10110
10101
1111 1111 1100 1110
Read data 2
Write data
Inst [15:11]
M U X
ả
Gi
1 5 : 0
RegDst
ượ
ẽ ỉ ố i pháp (cho ch s thanh ghi s c ghi):
I m m e d i a t e
ử ụ ọ
đ ộ multiplexer đ l a ể ự write
S d ng m t ch n ch s thanh ghi cho ngõ
ạ ệ
ừ
ỉ ố register chính xác d aự trên t ng lo i l nh
ệ ể
RegDst: ọ ề Tín hi u đi u khi n ch n ể ư Inst[20:16] hay [15:11] đ đ a vào ngõ write register
27 03/2017
Multiplexer (MUX)
ứ n Ch c năng:
ộ
ọ
ừ ậ
p Ch n m t input t
t p input
ầ đ u vào
Control
m
n
in0
ề ộ
Inputs: ườ p n đ
ng vào có cùng chi u r ng
out
. . .
inn1
bit trong đó n = 2m
n Control: p C n mầ
Control=0 select in0 Control=3 select in3
ọ ườ
ứ
ệ
ế
ề
ể
ị
n Output: p Ch n đ
ng input th i n u giá tr tín hi u đi u khi n control = i
M U X
28 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ả
ả
Gi
i mã:
gi
i pháp cho ngõ “Data 2”
lw $21, -50($22)
Inst [25:21]
5
opcode 31:26
rs 25:21
rt 20:16
Read register 1
Read data 1
5
In s t [ 2 0: 16]
Read register 2
Register File
5
Write register
10110
10101
1111 1111 1100 1110
Read data 2
Write data
Inst [15:11]
M U X
M U X
RegWrite
1 5 : 0
RegDst
ể
I m m e d i a t e
ALUSrc
32
Inst [15:0]
16
Sign Extend
ị ủ
đ
ữ ệ
Gi
ng d li u data 2) ạ
ứ
ử ụ S d ng m t
ALUSrc: ề ệ Tín hi u đi u ể ọ khi n đ ch n “Read data 2” hay giá tr c a Inst[15:0] (đã ở ộ ượ c m r ng có ấ d u) cho toán ạ h ng th hai
ả i pháp (cho đ ứ ộ multiplexer đ ch n chính xác toán h ng th
ở ộ ờ ố
ườ ể ọ 2. ố ứ Sign extend: kh i m r ng s t c th i 16 bit thành 32 bit
29 03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
ả
ệ
Gi
i mã: L nh Load Word
Inst [25:21]
5
opcode 31:26
rs 25:21
rt 20:16
Read register 1
Read data 1
5
In s t [ 2 0: 16]
Read register 2
Register File
5
Write register
10110
10101
1111 1111 1100 1110
Read data 2
Write data
Inst [15:11]
M U X
M U X
RegWrite
1 5 : 0
RegDst
I m m e d i a t e
ALUSrc
Inst [15:0]
32
16
Sign Extend
q Ví d v i l nh: “ ụ ớ ệ ả ầ
ổ
sw $21, -50($22)" ầ
– Có c n ph i thay đ i thành ph n nào?
30 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ả
ệ
Gi
i mã:
ả L nh nhánh/nh y
n Ví d : "ụ beq $9, $0, 3" ế
ả ẽ
ế
ộ
ạ ủ
ế ấ
ề
ầ lúc ! ả
ü C n tính k t qu r nhánh và đích đ n cùng m t
i quy t v n đ này trong giai đo n c a ALU
ü Gi
Inst [25:21]
5
opcode 31:26
rs 25:21
rt 20:16
Read register 1
Read data 1
5
In s t [ 2 0: 16]
Read register 2
Register File
5
Write register
01001
00000
0000 0000 0000 0011
Read data 2
Write data
Inst [15:11]
M U X
M U X
RegWrite
1 5 : 0
RegDst
I m m e d i a t e
ALUSrc
Inst [15:0]
32
16
Sign Extend
31 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ả
Gi
ế ổ i mã: t ng k t
Inst [25:21]
5
Read register 1
Operand 1
Read data 1
5
I n s t [ 2 0 : 16]
Read register 2
Registers
5
Write register
Inst[31:0]
Read data 2
Write data
Inst [15:11]
M U X
M U X
Operand 2
RegWrite
RegDst
ALUSrc
Inst [15:0]
32
16
Sign Extend
32 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ự
ủ
ệ
Quy trình th c thi l nh c a MIPS (5 công đo n)ạ
Fetch
ạ ệ
n Instruction Fetch (N p l nh) n Instruction Decode & Operand
Instruct ion Decode ALU
ấ
ạ
ế
i mã và l y các toán h ng c n thi
t,
Fetch ả (Gi ọ ắ G i t
ầ t là “Instruction Decode”)
t x e N
n o i t c u r t s n I
ạ ử ụ
ạ
n ALU (Giai đo n s d ng ALU hay giai đo n
ự
th c thi)
Memor y Access Result Write
ấ
ạ
n Memory Access (Giai đo n truy xu t vùng
nh )ớ
ạ
ạ ế
ả ư
i k t qu /l u
n Result Write (Giai đo n ghi l
tr )ữ
33 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ Công đo n ALU
ạ
n Công đo n ALU:
ệ
ượ
ủ ế
ệ
c hi n ch y u
ệ trong giai đo n này
ố ọ
ụ add, sub), Logic (ví d : ụ and, or): ALU
ế
§ S h c (Arithmetic) (ví d : tính ra k t qu cu i cùng
ớ
ả ố ệ ớ ộ § L nh làm vi c v i b nh (ví d :
ụ lw, sw): ALU dùng tính toán đ a ị
ớ
§ L nh nh y/nhánh (ví d :
ự ụ bne, beq): ALU th c hi n so sánh các giá
ệ ỉ ủ ộ ch c a b nh ả ệ ị
ẽ
ỉ
ị
ệ ả ớ tr trên thanh ghi và tính toán đ a ch đích s nh y t
i
ừ
ạ
n Đ u vào t
công đo n tr
c (
ướ Decode): ạ
ầ ü Các thao tác (operation) và toán h ng (operand(s))
ü ALU = ArithmeticLogic Unit ü Công vi c th t s c a h u h t các l nh đ ậ ự ủ ầ ế ạ
ế
ạ
34 Copyrights 2017 CEUIT. All Rights Reserved.
Memory):
ế
ả
03/2017 ầ n Đ u ra cho công đo n ti p theo (
ố ớ ệ
ả ủ
ế
ẽ
ạ
ị
(Đ i v i l nh lw và sw: K t qu c a công đo n này s là đ a
ể ấ ữ ệ
ấ
ỉ
ch cung c p cho memory đ l y d li u)
ü Tính toán k t qu
ạ Công đo n ALU
ALU result
Operands
ALU
D e c o d e S t a g e
M e m o r y S t a g e
ố ự
ạ Kh i m ch th c ệ hi n các phép toán ố ọ logic và s h c
35 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
Kh i ố ALU (Arithmetic Logical Unit)
ALUcontrol
4
n ALU (Arithmeticlogical unit)
A
(A op B) == 0?
ể ự
ệ
ố
ü Kh i dùng đ th c hi n các phép tính
isZero?
ALU
ố ọ logic và s h c
ALU result
B
n
Inputs: ü 2 s 32bit ố
A op B
ALUcontrol
Function
AND
ề
0000
OR
0001
add
0010
ứ ị
ề ế
subtract
0110
ể n Đi u khi n kh i ALU: ệ ể ụ ể
slt
0111
ố ü Do ALU có th th c hi n nhi u ch c ể ự năng dùng 4bit đ quy t đ nh ứ ch c năng/phép toán c th nào cho ALU
NOR
1100
n Outputs:
ố ọ
ả ủ
ặ
ü K t qu c a phép toán s h c ho c
ế logic
36 03/2017
ể ỉ
ế
ệ
ằ
ộ
ü M t bit tín hi u đ ch ra r ng k t
ằ
ả
qu có b ng 0 hay không
Copyrights 2017 CEUIT. All Rights Reserved.
ệ
ạ
nonbranch
Công đo n ALU: các l nh
ệ
ế ố
ả
ư ALU nh hình:
n Các l nh không nhánh/nh y (nonbranch) k t n i add $8, $9, $10
Inst [25:21]
5
ALUcontrol 4
Read register 1
Read data 1
5
In s t [ 2 0: 16]
isZero?
Read register 2
ALU
Register File
rs
Write register
01001
01010
01000
00000
5 100000
ALU result
rt 20:16
rd 15:11
shamt 10:6
25:21
Read data 2
Write data
Inst [15:11]
funct M 5:0 U X
M U X
RegWrite
RegDst
ALUSrc
Inst [15:0]
32
16
Sign Extend
Thi
ALUcontrol: ị ế ậ t l p giá tr cho ầ ử ụ
ườ
ALUcontrol c n s d ng tr
ng opcode và funct
37 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ệ
ạ
Branch
Công đo n ALU: Các l nh
ẽ
ả
ơ n L nh r nhánh thì khó h n vì ph i tính toán hai phép
ệ toán:
ả ẽ
ế
n Ví d : "ụ beq $9, $0, 3" 1. K t qu r nhánh:
ể ể
ấ ằ
ằ
ể ử ụ ü S d ng ALU đ so sánh thanh ghi ệ isZero?“ đ ki m tra tính ch t b ng/không b ng ü Tín hi u 1bit "
ị
2. Đ a ch đích c a nhánh:
ể
ỉ
ừ
ộ
Fetch Stage)
ỉ ử ụ ầ ầ
ừ
ủ ị ộ ộ ộ ü- S d ng m t b c ng đ tính đ a ch ủ ü- C n n i dung c a thanh ghi PC (t Decode Stage) ü- C n Offset (t
38 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
Datapath vi công đon ALU hoàn chnhớạỉ
Add
PC
4
ữ
Add
M U X
Left Shift 2bit
PCSrc
ả
PCSrc: ề ệ Tín hi u đi u ể ể ự khi n đ l a ọ ch n gi a ho c ặ (PC+4) ỉ ị đ a ch đích mà l nh ệ ẽ nhánh/nh y s ả ớ i nh y t
ALUcontrol
r s 2 5 : 2 1
r t 2 0 : 1 6
Inst [25:21]
5
4
Read register 1
Read data 1
o p c o d e 3 1 : 2 6
5
In s t [ 2 0: 16]
isZero?
Read register 2
Register File
ALU
5
Write register
ALU result
Read data 2
0 1 0 0 1
0 0 0 0 0
0 0 0 1 0 0
Write data
Inst [15:11]
M U X
M U X
RegWrite
RegDst
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
ALUSrc
Inst [15:0]
32
16
Sign Extend
: 0
1 5
a te
d i
m e
I m
Ví d : "ụ beq $9, $0, 3"
03/2017 39
ủ
ự
ệ
Quy trình th c thi l nh c a MIPS (5 công đo n)ạ
Fetch
ạ ệ
n Instruction Fetch (N p l nh) n Instruction Decode & Operand
Instruct ion Decode ALU
ấ
ạ
ế
i mã và l y các toán h ng c n thi
t,
Fetch ả (Gi ọ ắ G i t
ầ t là “Instruction Decode”)
t x e N
n o i t c u r t s n I
ạ ử ụ
ạ
n ALU (Giai đo n s d ng ALU hay giai đo n
ự
th c thi)
Memor y Access Result Write
ấ
ạ
n Memory Access (Giai đo n truy xu t vùng
nh )ớ
ạ
ạ ế
ả ư
i k t qu /l u
n Result Write (Giai đo n ghi l
tr )ữ
40 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ
ấ
ớ
ấ
ớ n Giai đo n truy xu t vùng nh :
ự
ệ
ầ
ỉ
Giai đo n truy xu t vùng nh (Memory stage) ạ ü Ch có l nh
Load và Store c n th c hi n các thao tác trong
ỉ
ở
ạ giai đo n ALU
c tính toán
ặ
ớ ượ ữ ệ
ệ ạ giai đo n này: ị ử ụ ọ ữ ệ ệ
ớ ữ ệ ạ
giai đo n tr
c (
ị
ớ ế
ỉ c dùng làm đ a ch vùng nh (n u có
ụ
Result Write):
ả ượ ư
ế
§ S d ng đ a ch vùng nh đ § Đ c d li u ra ho c ghi d li u vào vùng nh d li u ü T t c các l nh khác s r nh trong giai đo n này ẽ ả ấ ả ướ ALU): ạ ừ ầ n Đ u vào t ü K t qu tính toán đ ượ ả ế ể ứ th ng d ng) ầ ü K t qu đ
ế n Đ u ra cho giai đo n ti p theo ( ế ầ ữ ạ i (n u c n)
ạ c l u tr l
41 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ
ấ
ớ
Giai đo n truy xu t vùng nh (Memory stage)
MemWrite
Address
Result
Read Data
Write Data
A L U S t a g e
Data Memory
R e s u l t S t o r e S t a g e
MemRead
ộ
ữ ữ ớ ư B nh l u tr d li uệ
42 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
Kh i ố Data Memory
ữ ữ ệ ầ
ế ủ
ư n Vùng nh này l u tr d li u c n thi
t c a
ươ
ớ ng trình
n
MemWrite
ỉ
ớ
Address
ữ ệ ẽ ượ
c ghi vào vùng
Read Data
ch Inputs: ü Address: Đ a ch vùng nh ị ü Write Data: D li u s đ nh đ i v i l nh Store
Write Data
Data Memory
ớ ố ớ ệ ề ệ
n Tín hi u đi u khi n: ệ
ọ
MemRead
ệ ượ ậ
c b t
ạ ấ
ể
ể ü Tín hi u đ c (MemRead ) và ghi ỉ ộ (MemWrite); ch m t tín hi u đ ờ ộ i b t kì m t th i đi m nào lên t
n Output:
ớ ố ớ
c đ c t
vùng nh đ i v i
ü D li u đ ữ ệ ượ ọ ừ ệ l nh Load
43 03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
ệ
ạ
Giai đo n Memory: l nh
Load
ỉ ữ
ế
n Ch nh ng ph n liên quan đ n Decode & ALU Stage
ượ
ầ c trình bày
đ
lw $21, -50($22)
ALUcontrol
r s 2 5 : 2 1
r t 2 0 : 1 6
Inst [25:21]
4
5
RR1
RD1
o p c o d e 3 1 : 2 6
5
RR2
MemWrite
In s t [ 2 0: 16]
ALU
Registers
5
WR
10110
1111 1111 1100 1110
Address
ALU result
RD2
WD
Inst [15:11]
Data Memory
M U X
M U X
RegWrite
Read Data
RegDst
Write Data
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 10101 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1
ALUSrc
Inst [15:0]
32
16
MemRead
Sign Extend
: 0
1 5
a te
d i
m e
I m
44 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ệ
ạ
Giai đo n Memory: l nh
Store
ể ư
Write Data
sw $21, -50($22)
ALUcontrol
r t 2 0 : 1 6
r s 2 5 : 2 1
Inst [25:21]
4
5
RR1
RD1
n C n ầ Read Data 2 (Decode) đ đ a vào o p c o d e 3 1 : 2 6
5
RR2
MemWrite
In s t [ 2 0: 16]
Registers
ALU
5
WR
10110
1111 1111 1100 1110
Address
ALU result
RD2
WD
Inst [15:11]
Data Memory
M U X
M U X
RegWrite
Read Data
Write Data
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 10101 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1
Inst [15:0]
32
RegDst 16
MemRead
Sign Extend
: 0
1 5
a te
d i
m e
I m
45 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ
ệ
ấ
Giai đo n Memory: l nh không truy xu t vùng nhớ
ử ụ
ả ư
ữ
ế
ọ
ộ
ể ự n S d ng thêm m t multiplexer đ l a ch n k t qu l u tr vào thanh
ghi
add $8, $9, $10
ALUcontrol
Inst [25:21]
4
5
RR1
RD1
MemWrite
5
RR2
In s t [ 2 0: 16]
Registers
ALU
WR
rs
01001
01010
01000
00000
5 100000
Address
ALU result
rt 20:16
rd 15:11
shamt 10:6
25:21
RD2
WD
Data Memory
funct M 5:0 U X
Inst [15:11]
M U X
RegWrite
Read Data
Write Data
Inst [15:0]
32
RegDst 16
M U X
Sign Extend
MemRead
MemToReg
ừ
MemToReg: ự ọ ể ề Tín hi u đi u khi n giúp l a ch n ừ Read giá tr l u vào thanh ghi là t 46 ALU result
ệ ị ư Data hay t
Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ủ
ự
ệ
ạ
Quy trình th c thi l nh c a MIPS (5 công đo n)
Fetch
ạ ệ
n Instruction Fetch (N p l nh) n Instruction Decode & Operand
Instruct ion Decode ALU
ấ
ạ
ế
i mã và l y các toán h ng c n thi
t,
Fetch ả (Gi ọ ắ G i t
ầ t là “Instruction Decode”)
t x e N
n o i t c u r t s n I
ạ ử ụ
ạ
n ALU (Giai đo n s d ng ALU hay giai đo n
ự
th c thi)
Memor y Access Result Write
ấ
ạ
n Memory Access (Giai đo n truy xu t vùng
nh )ớ
ạ
ạ ế
ả ư
i k t qu /l u
n Result Write (Giai đo n ghi l
tr )ữ
47 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ ư
ữ ế
ả
Giai đo n l u tr k t qu (Result Write)
n Công đo n Result Write: ả ủ
ạ ệ
ữ
ế
ầ
§ Ví d : s h c, logic, shifts, load, setlessthan § C n ch s thanh ghi đích và k t qu tính toán
ụ ố ọ ỉ ố ệ
ả ế ả ư
ữ
ế
ü Nh ng l nh ghi k t qu c a các phép toán vào thanh ghi:
ữ
ạ
ả § Không có ghi k t quế ẽ ả ệ Nh ng l nh này s r nh trong giai đo n này
ạ
giai đo n tr
ừ n Đ u vào t ả ế
ướ Memory): ặ
ặ
ừ
ầ ü K t qu tính toán ho c là t
c ( ừ Memory ho c là t
ALU
ü Nh ng l nh không ghi k t qu nh : store, branch, jump:
48 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ ư
ữ ế
ả
Giai đo n l u tr k t qu (Result Write)
5
Read register 1
Read data 1
5
Read register 2
Registers
5
Write register
Read data 2
M e m o r y S t a g e
Result
Write data
ấ ỳ
ạ
n Công đo n Result Write không có thêm b t k thành
ầ
ả
ph n nào khác: ü Ch đ n gi n đ a k t qu vào thanh ghi (ngõ Write data ỉ ơ
ả ư ế ủ c a kh i Registers/Register file)
ượ
c ghi vào (ngõ vào
Write
ượ
c sinh ra trong giai đo n
ố ỉ ố ủ Register) đ
ạ Decode Stage
ü Ch s c a thanh ghi đ
49 Copyrights 2017 CEUIT. All Rights Reserved. 03/2017
ạ ư
ữ ế
ả
Giai đo n l u tr k t qu (Result Write)
add $8, $9, $10
ALUcontrol
Inst [25:21]
4
5
RR1
RD1
MemWrite
5
RR2
In s t [ 2 0: 16]
Registers
ALU
WR
rs
01001
01010
01000
00000
5 100000
Address
ALU result
rt 20:16
rd 15:11
shamt 10:6
25:21
RD2
MemToReg
WD
Data Memory
funct M 5:0 U X
Inst [15:11]
M U X
RegWrite
Read Data
Write Data
Inst [15:0]
M U X
Sign Extend
MemRead
50 03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
ể ề ư ề ể ể ệ ố (Ch a có kh i Control đ đi u khi n các tín hi u đi u khi n)
Datapath hoàn chnhỉ
Instruction Memory
Add
PC
4
Instruction
Add
M U X
Address
Left Shift 2bit
PCSrc
ALUcontrol
Inst [25:21]
4
5
RR1
RD1
5
is0?
MemWrite
RR2
In s t [ 2 0: 16]
ALU
Registers
ALUSrc
WR
rs
01001
01010
01000
00000
5 100000
Address
ALU result
rt 20:16
rd 15:11
shamt 10:6
25:21
RD2
MemToReg
WD
Inst [15:11]
Data Memory
funct M 5:0 U X
M U X
RegWrite
Read Data
RegDst
Write Data
Inst [15:0]
M U X
Sign Extend
MemRead
03/2017 51 Copyrights 2017 CEUIT.
All Rights Reserved.
Ộ Ử B X LÝ
ế
ả
ơ
t k datapath đ n gi n cho
ế ế ơ ả ủ
ớ
ổ T ng k t: ộ ầ Ph n này trình bày m t cách thi ệ ộ ử b x lý 32 bits, v i 8 l nh c b n c a MIPS:
• add, sub, and, or, slt
• lw, sw
• beq
ớ
ứ
ơ ả
ộ ộ ử
ậ
ố
ế ố ớ
ố
ố ố ớ ả
ự
ệ
V i kh i ch c năng c b n trong m t b x lý (t p thanh ghi, kh i ALU, kh i Control, thanh ghi PC, thanh ghi IR) và ể ẽ ượ ộ b nh chính, các kh i này s đ c k t n i v i nhau đ ư ả đ m b o th c thi đúng 8 l nh nh trên.
52
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
Ộ Ử B X LÝ
ế
ả ọ v Lý thuy t: Đ c sách tham kh o
ụ
• M c: 4.1, 4.2, 4.3
•
Sách: Computer Organization and Design: The Hardware/Software Interface, Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011.
v Bài t p: ậ file đính kèm
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
53