当前位置: 代码迷 >> 综合 >> 动手写CPU----day1 CPU架构和五级流水概念
  详细解决方案

动手写CPU----day1 CPU架构和五级流水概念

热度:104   发布时间:2023-11-27 09:48:25.0

目录

  • 一、CPU采用的流水线
    • 1.采用的是五级流水线
    • 2.为什么采取五级流水线?
  • 二、五级流水线
    • 1.取指
      • 1&2:取值和译码间的寄存器
    • 2.译码
      • 2&3:译码和执行间的寄存器
    • 3.执行
      • 3&4:执行和访存间的寄存器
    • 4.访存
      • 4&5:访存和回写间的寄存器
    • 5.回写

一、CPU采用的流水线

1.采用的是五级流水线

  1. 取指令
  2. 译码
  3. 执行
  4. 访存
  5. 回写

2.为什么采取五级流水线?

因为每一个阶段运行的时间不一定一致,而为了处理速度的加快,采取了并行的方式,而此时不采取流水线的设计仍会使得处理速度放缓。理解起来可能不是很形象,但是了解大概即可。

二、五级流水线

1.取指

  • 从指令存储器取出指令,
  • 同时确定下一条指令的地址

1&2:取值和译码间的寄存器

  • 取指的结果先存放,在下一个clk到达的时候传递

2.译码

  • 对取得的指令进行译码,
  • 同时从通用寄存器取出要使用的目的寄存器的值,
  • 指令内有立即数,进行符号扩展
  • 指令为转移指令,那么进行转移

2&3:译码和执行间的寄存器

  • 译码的结果先存放,在下一个clk到达的时候传递

3.执行

  • 进行运算
  • 如果有Load/Store指令,要计算其地址

3&4:执行和访存间的寄存器

  • 执行的结果先存放,在下一个clk到达的时候传递

4.访存

  • 如果有Load/Store指令,根据地址访问数据存储器
  • 判断是否有异常,如果有清除流水线

4&5:访存和回写间的寄存器

  • 访存的结果先存放,在下一个clk到达的时候传递

5.回写

  • 将运算结果放回目的寄存器

给出目前的设计,后续还要进行修改

在这里插入图片描述