2-第六章 中央处理器武大计算机课件考研

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

0
M{R[rs] + SignExt[imm16]} ← R[rt]
Rd 1Mux 0 Rt RegWr = 0 5 5 Rs 5
32
RegDst = x
Branch = 0 Jump = 0 Rt Clk
busA
32 0 1 32
Instruction<31:0>
Instruction Fetch Unit <21:25> <16:20>
Branch = 0 Instruction Rd Rt Jump = 0 Fetch Unit RegDst = 0 Clk 1Mux 0 ALUctr = Or Rs Rt Rd Imm16 Rt RegWr = 1 5 5 Rs 5 MemWr = 0 MemtoReg = 0 busA Rw Ra Rb Zero 32 busW 32 32-bit 0 busB 32 32 Registers 0 Clk <21:25> <16:20>
PC ← PC + 4
除 Branch and Jump以外的指令都相同
30 Addr<31:2> Addr<1:0>
PC<31:28> Target Instruction<25:0> 26 PC Clk imm16
16 30 4
30
30 0 1
“00” Instruction Memory
32
<11:15>
<0:15>
ALUctr = Add
busW
Clk
Rw Ra Rb 32 32-bit busB Registers
32
Rs Rt Rd Imm16 MemWr = 1 MemtoReg = x Zero
32 0
ALU
Mux
Mux
imm16
Data In 32 Clk
16
WrEn Adr Data Memory
op target address
0
Instruction<31:0> Branch = 0 Instruction Rd Rt Jump = 1 Fetch Unit RegDst = x Clk 1 Mux0 ALUctr = x Rs Rt Rd Imm16 Rt RegWr = 0 5 5 Rs 5 MemWr = 0 MemtoReg = x busA Rw Ra Rb Zero 32 busW 32 32-bit busB 0 32 32 0 Registers Clk <21:25> <16:20>
Jump指令结束前 IFU 中的动作 31 26
op target address
0
PC ← PC<31:28> concat target<25:0> concat “00”
30
PC<31:28> Target Instruction<25:0>
PC 30 “1” Adder SignExt 30
13
Branch指令最后阶段取指部件中的动作 31 26 21 16
op rs rt immediate
0
if (Zero == 1) then PC = PC + 4 + SignExt[imm16]*4 ; else PC = PC + 4
30
PC<31:28> Target Instruction<25:0> 26 PC Clk imm16 Instruction<15:0> 16
公共操作:取指令和计算下址PC R-Type指令(add / sub) 立即数指令 (ori) 访存指令(lw / sw) 分支指令 (beq) 跳转指令 (j)
汇总各指令的控制信号取值
两类控制信号:直接送往数据通路 / 送往局部控制单元
分析ALU操作对应的控制信号与func字段间的关系 设计ALU局部控制单元 设计主控制单元
Mux
0
Adder
30
Mux
“ 1”
Adder
30
1
Jump = 0 Instruction<31:0>
30
Instruction<15:0>
Branch = 0 Zero = x
因为新的控制信号保证 了正确的PC值产生,在 足够长的时间后,下个 时钟Clk到来!
8
SignExt
Register-Register(R型指令) Timing
PC<31:28>
Target Instruction<25:0> 26
PC
30 “1” Adder 30 Adder 4
30 30 0 Mux 1 Mux 0
Instruction<31:0> Jump = previous
Clk imm16 Instruction<15:0>
16
1 30
30
取出指令的第31-26位作为操 作码首先被译码 op=000000, 则为R-type指令
4
ADD / SUB 指令
addrd, rs, rt
31 26 21 16 11 6 0
op
6 bits
rs
5 bits
rt
5 bits
rd
5 bits
shamt
5 bits
funct
6 bits
M[PC]
取指(每条指令一样)
R[rd] ← R[rs] + R[rt] 实际操作(每条指令可能不同)
32
busW
32
Clk
Rw Ra Rb 32 32-bit Registers
Register Write Occurs Here Result
ALU
busB
32
32
9
ori 指令译码后的执行过程
R[rt] ← R[rs] or ZeroExt[Imm16]
31 26 21 16 op rs rt immediate 0
ALU
Rs Rt Rd Imm16 MemWr = 0 MemtoReg = x Zero
32 0
<21:25>
<16:20>
<11:15>
<0:15> Mux
Mux
imm16
16
32
Data In 32 Clk
WrEn Adr Data Memory
32
1
ExtOp = x
Extender
ALUSrc = 0
30
4 26
30
1 Mux 0
Addr<31:2> Addr<1:0> “00” Instruction Memory
Branch = 1 Jump = 0 Rt Clk
Rs Rt
5
Instruction<31:0>
Instruction Fetch Unit ALUctr = Sub
32 0 1
RegWr = 0 5
busW Clk
32
Rw Ra Rb 32 32-bit busB Registers
32
busA
计算机原理
第六章 中央处理器
本讲简要说明
目的与要求:掌握单周期控制器的设计
授课重点:单周期控制器的设计
授课难点:如何设计单周期控制器
参考章节:《Computer Organization and Design》第5章第4节
2
主要内容
考察每条指令在数据通路中的执行过程和涉及到的 控制信号取值
Zero = previous
6 取指部件由旧控制信号控制,会不会有问题? 没有问题!Why?
SignExt
Branch = previous
指令译码后R型指令(Add / Sub) 31 26 2 16 11 6 操作过程 op rs 1 r rd shamt
R[rd] ← R[rs] + / - R[rt]
<21:25> <16:20>
<11:15>
<0:15>
ALU
Mux
32
Mux
imm16
1 32
Data In 32 Clk
16
ALUSrc = 1
1 WrEn Adr Data 32 Memory
ExtOp = 1
Extender
11
Store指令译码后的执行过程 31 26 21 16
op rs rt immediate
PC+4 PC
PC+4
ALUctr
RegWr busA, B busW
RegWr Rd Rs Rt
5 5 5
New Value Register File Access Time New Value Old Value ALU Delay Old Value New Value
ALUctr busA
Clk PC Old Value Rs, Rt, Rd, Op, Func Clk-to-Q New Value Instruction Memory Access Time New Value Old Value Delay through Control Logic Old Value New Value Old Value
PC ← PC + 4
计算顺序执行时PC的值(每条指令一样)
5
Add / Sub操作开始时取指部件中的 动作
取指令: Instruction ← M[PC]
所有指令都相同
30
新指令未取出译码,控制信号值 还是原指令旧值 新指令还没执行,标志亦为旧值
Addr<31:2> Addr<1:0> “00” Instruction Memory 32
<21:25> <16:20> <11:15> <0:15> ALU Mux
32
Instruction<31:0>
imm16
16
WrEn Adr 32 1 Data In Data 32 Clk Memory ALUSrc = 0
Mux
32
1
ExtOp = x
Extender
7
R型指令(Add /Sub)最后阶段取指 部件中的动作
t
0 funct
Branch = 0 Instruction Rd Rt Jump = 0 Fetch Unit RegDst = 1 Clk 1 Mux0 Rs Rt ALUctr = Add Rs Rt Rd Imm16 RegWr = 1 5 5 5 or Sub MemWr = 0 MemtoReg = 0 busA Rw Ra Rb 32 busW Zero 32 32-bit 0 32 busB 32 0 Clk Registers
Instruction<31:0>
<11:15>
<0:15>
ALU
Mux
32
imm16
16
WrEn Adr 1 Data In 32 Data 32 Clk Memory ALUSrc = 1
Mux
32
1
ExtOp = 0
Extender
10
Load指令译码后的执行过程 31 26 21 16
op rs rt
30
30
4
30
1
“00” Instruction Memory
32
Addr<31:2> Addr<1:0>
Mux
0
Adder SignExt
30
30
0
Mux
“ 1”
30
1
Jump = 0
Branch = 1 Zero = 1
Adder
Instruction<31:0>
wenku.baidu.com
14
Jump指令译码后的执行过程 31 26
immediate
0
R[rt] ← Data Memory {R[rs] + SignExt[imm16]}
Instruction<31:0> Branch = 0 Instruction Rd Rt Jump = 0 Fetch Unit RegDst = 0 Clk 1 Mux 0 ALUctr = Add Rs Rt Rd Imm16 Rt RegWr = 1 5 5 Rs 5 MemWr = 0 MemtoReg = 1 busA Rw Ra Rb Zero busW 32 32 32-bit 0 32 busB 32 0 Registers Clk
32
1
ExtOp = 1
Extender
ALUSrc = 1
12
Branch指令译码后的执行过程 31 26 21 16
op rs rt immediate
0
if (R[rs] - R[rt] == 0) then Zero ← 1 ; else Zero ← 0
Rd 1Mux 0
5
RegDst = x
IFU中目标地址送PC,其他什么都不做(只要保证存储部 件不发生写的动作) 如何保证存储部件不发生写?
<11:15>
<0:15>
ALU
Mux
32
Mux
imm16
16
32
1
Data In32 Clk
ALUSrc = x
WrEn Adr Data Memory
32
1
ExtOp = x
Extender
15
3
The Big Picture: Where are We Now?
The Five Classic Components of a Computer
Processor
Control Memory Input
Datapath
Output
下一个目标:设计单周期数据通路的控制器 设计方法
(1)根据每条指令功能,分析控制信号取值,并在表中列出 (2)根据列出的指令和控制信号关系,写出每个控制信号的 逻辑表达式
相关文档
最新文档