单周期处理器的设计步骤
① 分析指令系统,得出对数据通路的需求
② 为数据通路选择合适的组件
③ 连接组件建立数据通路
④ 分析每条指令的实现,以确定控制信号
⑤ 集成控制信号,形成完整的控制逻辑
MIPS指令系统的简化版本
无符号加法和减法——无立即数参与,属于R型指令
addu rd,rs,rt
subu rd,rs,rt
立即数的逻辑或(OR) ——有立即数参与,属于I型指令
ori rt,rs,imm16
装载(Load)和存储(Store)一个字(32位)
lw rt,imm16(rs)
sw rt,imm16(rs)
条件分支(Beq)
beq rs,rt,imm16
指令的含义
-
指令位域的分解
- 指令的操作
其中,对于零扩展和符号扩展,就是在高位上补零或者符号。
指令系统的需求
-
算术逻辑单元(ALU)
- 运算类型:加、减、或、比较相等
- 操作数:2个32位的数,来自寄存器 或 扩展后的立即数
-
立即数扩展部件
- 将一个16立即数扩展为32位数
- 扩展方式:零扩展、符号扩展
-
程序计数器(PC)
- 一个32位的寄存器
- 支持两种加法:加4 或 加一个立即数
- 寄存器堆
- 每个寄存器为32位宽,共32个
- 支持读操作:rs 和 rt
- 支持写操作:rt 或 rd
注:这称为“两读一写”的寄存器堆
- 存储器
- 一个只读的指令存储器,地址和数据均为32位
- 一个可读写的数据存储器,地址和数据均为32位
注:这两个存储器实际对应了CPU中的指令和数据高速缓存(Cache)
存储组件:寄存器堆
- 内部构成
- 32个32位的寄存器
数据接口信号
- busA,busB:两组32位的数据输出;
- busW:一组32位的数据输入。
- 读写控制
- Ra(5位):选中对应编号的寄存器,将其内容放到busA
- Rb(5位):选中对应编号的寄存器,将其内容放到busB
- Rw(5位):选中对应编号的寄存器,在时钟信号(clk)的上升沿,如果写使能信号有效(WriteEnable==1),将busW的内容存入该寄存器
注:寄存器堆的读操作不受时钟控制
存储组件:存储器
数据接口信号
- Data In:32位的数据输入信号
- Data Out:32位的数据输出信号
读写控制
- Address:32位的地址信号。该信号指定一个存储单元,将其内容送到数据输出信号
- Write Enable:写使能信号。在时钟信号(clk)的上升沿,如果写使能信号有效(为1),将数据输入信号的内容存入地址信号指定存储单元
注:存储器的读操作不受时钟控制