基础知识
一,指令类型
1.R型指令
- OP为零表示R型指令
2.I型指令
3.J型指令
二,取指令数据通路
- 单周期不能设置AR,DR,IR寄存器,直接以PC为地址
- 程序和数据分开存放——哈佛结构
- 运算器和PC累加器分离
三,R型指令数据通路
单周期硬布线控制器的实现
一,指令译码逻辑
1.根据真值表来写逻辑——OP字段
这里输入十进制数后会自动转化为二进制数,这里写的是OP字段。
2.FUNC字段
用比较器来实现,注意这里用与门,是要保证OP为0,且FUNC字段等于一定值
根据这个表来完成ADD,SLT,SysCall三个指令
二,ALU控制逻辑以及根据指令译码信号实现控制器输出控制信号的逻辑
根据信号产生条件来完成指令译码信号与控制信号之间的连接
这个图是用来做ALU控制逻辑单元的
三,CPU测试
利用Logisim中的电路仿真对八条指令进行单独测试以及一个排序算法的测试,可利用时钟单步和时钟连续来进行对指令的执行。
我这里是用的排序加载sort.hex来检测。
四,数据通路
三个多路选择器,RegDst,AluSrc,MemToReg
1.单周期MIPS数据通路
控制器是纯组合逻辑
2.R型指令数据通路建立过程
- 将RD写入
- 移位指令将移位偏移量送入ALU
3.LW指令数据通路建立过程
4.SW指令数据通路建立过程
5.Beq指令数据通路建立
6.J型指令数据通路建立?
这里没做J型的
五,单周期MIPS控制器设计
多周期MIPS(微程序)
多周期与单周期的区别:
单周期MIPS:每个指令在一个时钟周期内完成。这意味着从取指、解码、执行、访存到写回,所有步骤都在一个周期内完成。
多周期MIPS:每个指令的执行被分解成多个阶段,每个阶段在一个或多个时钟周期内完成。例如,取指、解码可能在一个周期完成,执行可能在另一个周期完成,依此类推。
一,微程序控制器的基本概念
- 一条指令对应一段微程序
一段微程序包含多条微指令
一条微指令对应一组相容性微指令(控制信号) - 指令周期包含多个机器周期,如取指周期,执行周期等,一个机器周期包含多个节拍脉冲(时钟周期)
- 各个指令周期的前两个时钟周期相同(都是取指和译码)
- 了解每个指令的控制信号,课本211页
二,微地址转移逻辑设计
- 找到微程序地址转移逻辑自动生成,由指令类型产生地址入口s0~s3
- 原理:根据前面微指令信号,来决定微程序入口地址
- 译码产生指令类型(和之前单周期类似)
简单总结:首先在地址转移逻辑表格填写入口地址,将结果进行电路分析,自动生成线路然后把译码逻辑和ALUOP补充完整即可
三,指令译码逻辑
四,设计微指令
1.编写控制存储器
根据微指令自动生成器,得到微指令代码,然后把代码编写到控制存储器中。
五,多周期MIPS架构
这里的指令取指令都是两个周期
1.R型指令执行状态周期T3~T4
- 取指令阶段两个周期
- 执行指令两个周期:第三个周期完成运算,第四个周期会把值写回,T3运算,T4写回
2.LW指令执行状态周期T3~T5
T3:算操作数地址
T4:访存
T5:写回
3.Beq指令执行状态周期T3
4.多周期状态转换图
蓝色的两个是取指令的两拍
六,实验步骤
1.构建多周期MIPS CPU数据通路
2.设计微程序控制器
多添加了一个地址输出
a.完善控制器内部逻辑
b.实现微程序地址转移逻辑
一个状态对应一个时钟周期
一个状态对应一条微指令
状态值对应微指令地址
c.根据状态图构建微程序
注意不要搞错位宽,紫色的微程序编码前面要加0