目录
- 一、CPU采用的流水线
-
- 1.采用的是五级流水线
- 2.为什么采取五级流水线?
- 二、五级流水线
-
- 1.取指
-
- 1&2:取值和译码间的寄存器
- 2.译码
-
- 2&3:译码和执行间的寄存器
- 3.执行
-
- 3&4:执行和访存间的寄存器
- 4.访存
-
- 4&5:访存和回写间的寄存器
- 5.回写
一、CPU采用的流水线
1.采用的是五级流水线
- 取指令
- 译码
- 执行
- 访存
- 回写
2.为什么采取五级流水线?
因为每一个阶段运行的时间不一定一致,而为了处理速度的加快,采取了并行的方式,而此时不采取流水线的设计仍会使得处理速度放缓。理解起来可能不是很形象,但是了解大概即可。
二、五级流水线
1.取指
- 从指令存储器取出指令,
- 同时确定下一条指令的地址
1&2:取值和译码间的寄存器
- 取指的结果先存放,在下一个clk到达的时候传递
2.译码
- 对取得的指令进行译码,
- 同时从通用寄存器取出要使用的目的寄存器的值,
- 指令内有立即数,进行符号扩展
- 指令为转移指令,那么进行转移
2&3:译码和执行间的寄存器
- 译码的结果先存放,在下一个clk到达的时候传递
3.执行
- 进行运算
- 如果有Load/Store指令,要计算其地址
3&4:执行和访存间的寄存器
- 执行的结果先存放,在下一个clk到达的时候传递
4.访存
- 如果有Load/Store指令,根据地址访问数据存储器
- 判断是否有异常,如果有清除流水线
4&5:访存和回写间的寄存器
- 访存的结果先存放,在下一个clk到达的时候传递
5.回写
- 将运算结果放回目的寄存器
给出目前的设计,后续还要进行修改