05-指令在CPU中的执行_PPT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中央处理器的设计与实现
陈微
国防科技大学计算机学院
指令在CPU中的执行
OP
R S R t
shamt
R d
6bits funct
5bits 5bits 5bits
5bits 6bits OP
R S R t
6bits imm16
5bits 5bits 16bits OP
6bits
imm26
26bits R 型指令
I 型指令
J 型指令
R-Type 典型R 型指令:
OP
R S
R t
shamt
R d
funct
6bits
5bits 5bits 5bits 5bits 6bits 操作码
源寄存器
目的寄存器功能字段
000000rs rt ADD rd 00000100000000000rs rt SUB
rd 00000100010000000
rs
rt AND rd 00000100100000000rs rt OR rd 00000100101000000
rs
rt
SLT
rd
00000
101010
源寄存器移位位数
I-Type OP
R S R t
6bits imm16
5bits 5bits 16bits 操作码
源寄存器目的寄存器
立即数
100011rs rt LW
offset (imm16)001000
rs
rt
BEQ
offset (imm16)
101011rs
rt SW offset (imm16)典型I 型指令:
001101rs rt ORI offset (imm16)
J-Type
OP
6bits imm26
26bits 操作码
立即数
000010
J
target address (imm26)
典型J 型指令:
R-Type
000000rs rt ADD rd 00000100000000000rs
rt SUB
rd 00000100010000000rs rt
AND rd
00000
100100
000000rs rt OR rd 00000100101000000rs rt SLT rd
00000
101010
100011rs rt
LW offset (imm16)
001000rs
rt
BEQ offset (imm16)
101011rs rt SW offset (imm16)001101rs rt ORI offset (imm16)I-Type 000010
J
target address (imm26)
J-Type
RF[rd] ← RF[rs] + RF[rt]指令功能:
写寄存器
取指令
译码/读操作数计算/执行PC
A
B
ALU (+)
addr
ins[31:0]
Instruction
Memory rd:ins[15:11]
rt:ins[20:16]rs:ins[25:21]4
+
RF(rt)
Register Files Rw Rb
W
Ra A
B
RF(rs)
000000
rs
rt
ADD
rd
00000
100000
RF[rd] ← RF[rs] -RF[rt]指令功能:
写寄存器
取指令
译码/读操作数计算/执行A
B
ALU (-)
addr
ins[31:0]
PC
Instruction
Memory rd:ins[15:11]
rt:ins[20:16]rs:ins[25:21]4
+
Register Files RF(rt)
Rw Rb
W
Ra A
B
RF(rs)
000000
rs
rt SUB
rd 00000100010
Register Files rd:ins[15:11]
RF(rt)
rt:ins[20:16]rs:ins[25:21]Rw Rb
W
Ra A
B
A
B
4
addr
ins[31:0]
+
RF(rs)
AND : RF[rd ] ← RF[rs] &RF[rt]指令功能:
写寄存器
取指令
译码/读操作数计算/执行PC
ALU (&,|)
Instruction Memory 000000rs rt AND rd 00000100100000000
rs
rt
OR
rd
00000
100101
OR : RF[rd ] ← RF[rs] | RF[rt]
RF[rd] ← RF[rs] < RF[rt] ? 1 : 0指令功能:
写寄存器
取指令
译码/读操作数计算/执行A
B
ALU (<)
Register Files rd:ins[15:11]
RF(rt)
rt:ins[20:16]rs:ins[25:21]Rw Rb
W
Ra A
B
4
addr
ins[31:0]
+
RF(rs)
PC
Instruction
Memory 000000
rs
rt
SLT
rd
00000
101010
11/00
ADD SUB
SLT
AND OR
R-type
Register Files rd:ins[15:11]
RF(rt)
rt:ins[20:16]rs:ins[25:21]Rw Rb W
Ra A
B
A
B
4
addr
ins[31:0]
+
RF(rs)
PC
ALU
Instruction Memory RegWrite
Control ALUctr
ALUctr
RegWrite
RegWrite ALUSrc
RF[rt ] ← RF[rs] | ZeroExtend (imm16)指令功能:
写寄存器
取指令
译码/读操作数
计算/执行
PC
ALU (|)
Register Files
Instruction Memory M U X
RegDst
Control ALUctr
M U X
rt:ins[20:16]
RF(rt)
rs:ins[25:21]Rw Rb W
Ra A
B
A
B
4
addr
ins[31:0]
Extend
rd:ins[15:11]
imm:ins[15:0]
+
16
32
RF(rs)
001101
rs
rt ORI
offset(imm16)
MemtoReg RegWrite RF(rt)
rs:ins[25:21]rt:ins[20:16]
Rw Rb W
Ra A
B
A
B
4
addr
ins[31:0]
Extend
addr
W
D
rd:ins[15:11]
imm:ins[15:0]
+
16
32
RF(rs)
ALUSrc RF[rt ] ← memory[RF[rs] + SignExtend (imm16)]指令功能:
读存储器取指令
译码/读操作数
计算/执行写寄存器
PC
ALU
Register Files
Instruction Memory Data Memory
M U X
RegDst
Extop
Control ALUctr
MemWrite
M U X
M U X
100011
rs
rt
LW
offset(imm16)
MemtoReg RF(rt)
rs:ins[25:21]rt:ins[20:16]
Rw Rb W
Ra A
B
A
B
4
addr
ins[31:0]
Extend
addr
W
D
rd:ins[15:11]
imm:ins[15:0]
+
16
32
RF(rs)
ALUSrc memory[RF[rs] + SignExtend (imm16)] ← RF[rt]指令功能:
写存储器
取指令
译码/读操作数
计算/执行PC
ALU
Register Files
Instruction Memory Data Memory
M U X
RegDst
RegWrite Extop
Control ALUctr
MemWrite
M U X
M U X
101011
rs
rt
SW
offset(imm16)
PC
ALU
Register Files
Instruction Memory Data Memory
M U X
RegDst
RegWrite Extop Control ALUSrc MemtoReg ALUctr
MemWrite
Branch RF(rt)
rs:ins[25:21]rt:ins[20:16]
Rw Rb W
Ra A
B
A
B
4
addr
ins[31:0]
zero
+
Extend
addr
W
D
rd:ins[15:11]
imm:ins[15:0]
Out +
16
32
RF(rs)
M U X
M U X
M U X
if RF[rs] = RF[rt] then branch 指令功能:
取指令
译码/读操作数
计算/执行
001000
rs
rt
BEQ
offset(imm16)
if RF[rs] = RF[rt] then PC = PC+4+SignExtend ({imm16,2’b00});else PC= PC+4
即:
Shift left 2
PC
ALU
Register Files Instruction Memory Data Memory
M U X
RegDst
RegWrite Extop Control ALUSrc MemtoReg ALUctr
MemWrite
Branch RF(rt)
rs:ins[25:21]rt:ins[20:16]
Rw
Rb
W
Ra A
B
A
B
4
addr
ins[31:0]
zero
+
Extend
addr
W
D
rd:ins[15:11]
imm:ins[15:0]
Out +
16
32
RF(rs)
M U X
M U X
M U X
Shift left 2
PC { (PC+4)[31:28], target_address, 2’b00}
指令功能:取指令
译码/读操作数
000010
J
target address (imm26)
PC+4[31:28]
RF(rt)
PC
ALU
rs:ins[25:21]rt:ins[20:16]
Register Files
Rw Rb W
Ra A
B
A
B
4
Instruction Memory addr
ins[31:0]
zero
+
Extend
Data Memory
addr
W
D
rd:ins[15:11]
M U X
imm:ins[15:0]
Out RegDst
RegWrite Jump
Extop Control ALUSrc MemtoReg ALUctr
MemWrite
Branch +
16
32
imm:ins[25:0]
26
28
4
32
RF(rs)
M U X
M U X
M U X
M U X
Shift left 2
Shift left 2
COMPUTER PRINCIPLE
指令在CPU 中的执行10条指令的控制和数据通路
RegDst
RegWrite Jump Extop Control ALUSrc MemtoReg ALUctr
MemWrite
Branch PC+4[31:28]
RF(rt)
PC
ALU
rs:ins[25:21]rt:ins[20:16]
Register Files
Rw Rb W
Ra A
B
A
B
4
Instruction Memory addr
ins[31:0]
zero
+
Extend
Data Memory
addr
W
D
rd:ins[15:11]
M U X
imm:ins[15:0]
Out +
16
32
imm:ins[25:0]
26
28
4
32
RF(rs)
M U X
M U X
M U X
M U X
Shift left 2
Shift left 2。

相关文档
最新文档