数据通路之算术逻辑类指令实现

  • 分析指令,确定需求
  • 选择组件
  • 连接组件,建立数据通路
  • 分析指令实现,确定控制信号

步骤一:分析指令,确定需求

分析指令格式

数据通路之算术逻辑类指令实现_第1张图片
数据通路需求分析_指令位域分解.png

需求1 存放指令的存储器,可读,地址和数据均为32位;
需求2 存放指令地址的32位寄存器

分析指令操作

数据通路之算术逻辑类指令实现_第2张图片
数据通路需求分析_运算逻辑类指令操作.png

需求3 一组存放数据的32位通用寄存器
需求4 同时读取寄存器的内容(rd或者rt)
需求5 改写一个寄存器的内容(rd或者rt)
需求6 提供加、减、逻辑或等三种功能的运算器,运算的操作数可以是寄存器或者立即数
需求7 将16位立即数零扩展到32位

步骤二:选择组件

  • 组件1 算术逻辑单元
    运算类型:加、减、或等
    操作数:两个32位数,来自寄存器或者拓展后的立即数
    完成需求:6
  • 组件2 立即数扩展部件
    功能:将1个16位的数扩展为32位数
    拓展方式:零扩展
    完成需求:7
  • 组件3 程序计数器
    类型:32位的寄存器
    运算:支持两种加法,即加4或加一个立即数
    完成需求:2
  • 组件4 寄存器堆
    内部构成:32个32位宽的寄存器
    运算:支持读操作(rs和rt),支持写操作(rd或者rt)
    完成需求:3+4+5
  • 组件5 存储器
    类型:指令存储器
    运算:只读
    操作数:地址和数据均为32位
    完成需求:1

步骤三:建立数据通路

addu rd, rs, rt
步骤1 从指令存储器中取回指令:MEM[PC]
步骤2 执行指令的操作:R[rd]=R[rs]+R[rd]
步骤3 计算下一条指令的地址:PC=PC+4

步骤四: 确定控制信号

步骤1 确定取指令的控制信号


数据通路之算术逻辑类指令实现_第3张图片
加法指令操作步骤1.png

步骤2 确定加法指令操作的控制信号


数据通路之算术逻辑类指令实现_第4张图片
加法指令操作步骤2.png

步骤3 确定下一条指令计算的控制信号
数据通路之算术逻辑类指令实现_第5张图片
加法指令操作步骤3.png

你可能感兴趣的:(数据通路之算术逻辑类指令实现)