目录

https://blog.csdn.net/weixin_45792450/article/details/109314693


指令执行阶段

MIPS处理器 指令执行过程

单个时钟周期内执行单个阶段,指令执行有序执行

MIPS处理器 指令执行过程

执行数据通路

MIPS处理器 指令执行过程

MIPS处理器 指令执行过程

注:上述图中ALUOp=01应该为:ALU执行减法

执行过程解析

取指-IF阶段

主要任务:从内存中取出指令,并计算下一条指令的地址

从内存取出指令:控制器设置控制信号MemRead和IRWrite有效,将IorD置0以选择PC作为内存地址来源

计算下一条地址:控制器置控制信号ALUSrcA为0,ALUSrcB为01,ALUOp为00(加法运算),ALU实现计算PC+4,置PCSrc为00,下一条指令地址成功存入PC

指令译码和读取寄存器-ID阶段

主要任务:翻译指令和准备数据,IF和ID阶段均不知道指令内容

由于指令没有具体翻译出来,具体执行何种指令是未知的,此时我们需要多做一些准备,以应对可能需求,尽管可能有些步骤在某些指令看来是多余的,但所幸没有坏处。

读取寄存器:读取寄存器Rs和Rt,并分别存入寄存器A和B

如果是分支指令,下一周期可能还要用到PC的地址,故需要提前准备

准备偏移地址:控制器置ALUSrcA=0,ALUSrcB=11,ALUOp=00(加法运算),这样偏移地址就计算出来,并存入寄存器ALUOut了

指令执行,存储地址计算或者分支完成-EX阶段

主要任务:完成具体的指令操作或者准备具体的指令数据

访存指令:控制器置ALUSrcA=1,ALUSrcB=10,ALUOp=00,ALU将操作数相加,得到存储地址,存入ALUOut

此处考虑R型的运算指令,立即数型的运算指令对比之下不难实现。

运算指令:控制器置ALUSrc=1,ALUSrcB=00,ALUOp=10,完成算术运算,结果存入ALUOut

分支指令:控制器置ALUSrcA=1,ALUSrcB=00,ALUOp=01,以进行等值测试;置PCWriteCond=1,PCSrc=01,若ALU的零输出为1,与PCWriteCond做与运算得1,最后写入运算后的PC值,否则不做任何处理。

跳转指令:控制器置PCSrc=10,PCWrite=1,通过一个或门后将跳转地址送入PC

存储器访问或R型指令完成-WB阶段&MeM阶段

这个阶段的R型指令会将结果写回寄存器,对访存指令来说将进行访存操作

运算指令:控制器置RegDst=1,RegWrite=1,MemtoReg=0,向寄存器Rd存入计算结果

访存指令:若为取字指令,则从内存读出数据,并写入MDR;若为存字指令,则直接将数据写入内存。控制器置MemRead或MemWrite=1,IorD=1,实现数据直接存入内存或者从内存取数据到MDR。

取字指令的尾声:这一步将MDR的数据写入对应寄存器。控制器置MemtoReg=1,RegWrite=1,RegDst=0,实现寄存器数据的写入。

MIPS处理器 指令执行过程

相关文章:

  • 2021-12-19
  • 2021-07-31
  • 2021-06-23
  • 2021-12-29
  • 2021-11-13
  • 2021-10-01
  • 2021-12-15
  • 2019-12-14
猜你喜欢
  • 2021-06-14
  • 2021-11-02
  • 2021-09-11
  • 2022-01-13
  • 2021-09-17
  • 2021-11-01
  • 2021-01-18
相关资源
相似解决方案