第五讲 单周期处理器(Single Cycle Processor)

内容要点:控制器,数据通路

处理器的实际步骤

  • 分析指令系统,得出对数据通路的需求
  • 为数据通路选择合适的组件
  • 连接组件建立数据通路
  • 分析每条指令的实现,以确定控制信号
  • 集成控制信号,形成完整的控制逻辑

MIPS指令系统的简化版本

  • 无符号加法和减法(R指令)

    • addu rd, rs, rt

      1. MEM[PC]:从指令存储器中取回指令

      2. R[rd] = R[rs] + R[rt]:指令指定的操作

      3. PC = PC + 4:计算下一条指令的地址

    • subu rd, rs, rt

  • 立即数的逻辑或(I指令)

    • ori rt, rs, imm16

      1. MEM[PC]:从指令存储器中取回指令

      2. R[rt] = R[rs] | ZeroExt [imm16]:指令指定的操作

      3. PC = PC + 4:计算下一条指令的地址

  • 装载和存储一个字(32位/4Byte)(I指令)

    • lw rt, imm16(rs)
      1. MEM[PC]:从指令存储器中取回指令
      2. R[rt] = DataMemory{R[rs] + SignExt[imm16]}:指令指定的操作
      3. PC = PC + 4:计算下一条指令的地址
    • sw rt, imm16(rs)
      1. MEM[PC]:从指令存储器中取回指令
      2. DataMemory{R[rs] + SignExt[imm16]} = R[rt] :指令指定的操作
      3. PC = PC + 4:计算下一条指令的地址
  • 条件分支

    • beq rs, rt, imm16

      1. MEM[PC]

      2. if (R[rs] - R[rt] == o) //从指令存储器中取回指令,判断转移条件是否成立

        then zero = 1; else zero = 0 //zeroSignal传入IFU)

      3. then:PC = PC + 4 + SignExt[imm16] * 4; // label (imm16)的实际数值是转移目标地址和下一条指令地址之间的差值,此差值以4Byte(32bits)为一个单位

        else:PC = PC + 4;//计算下一条指令地址

指令系统的需求

  • 算术逻辑单元(ALU)

    • 运算类型:加、减、或、比较相等
    • 操作数:2个32位的数,来自寄存器或扩展后的立即数
  • 立即数扩展部件

    • 讲一个16立即数扩展为32位数
    • 扩展方式:零扩展、符号扩展
  • 程序计数器(PC)

    • 一个32位的寄存器
    • 支持两种加法:加4或者加一个立即数
  • 寄存器堆(两读一写)

    • 每个寄存器为32位宽,共32个
    • 支持读操作:rs和rt
    • 支持写操作:rt或rd
  • 存储器(对应了CPU中的指令和数据高速缓存(Cache))

    • 一个只读的指令存储器,地址和数据均为32位
    • 一个可读写的数据存储器,地址和数据均为32位
  • 建立数据通路

    • 基本原则:根据指令需求,连接组件,建立数据通路
    • 指令的需求
      1. 所有指令的共同需求
        • 取指令:
          • 程序计数器(PC)的内容是指令的地址
          • 用PC的内容作为地址,访问指令存储器获得指令编码
        • 更新程序计数器(PC)
          • 顺序执行:PC <- PC + 4
          • 发生分支时:PC <- 分支目标地址
      2. 不同指令的不同需求

控制信号的集成

MIPS简化版指令所需的控制信号.png
add指令.png
控制逻辑.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容