在写指令之前,自己动手写cpu那本书还介绍了OpenMIPS处理器计划实现的五级流水线,介绍了该处理器的接口,解释各个源码文件的作用,最后描述OpenMIPS处理器的实现方法。
设计目标
流水线
流水线:流水线是指将计算机指令处理过程拆分为多个步骤,并通过多个硬件处理单元并行执行来加快指令执行速度。
指令的处理:
取指、译码、执行
假设有3个硬件单元,分别做这三项工作的一项,可以在执行的同时对下一条指令译码,在对下一条指令译码的同时还可以再取一条指令,这就是三级流水线
五级流水线(解决执行阶段过长的方式):
取指、译码、执行、访存、回写
取指时间过长的解决方式:
引入缓存(cache),处理器从缓存读取指令只需要1个周期。
五级流水线示意图:
各阶段作用
取指阶段: 从指令存储器读出指令,同时确定下一条指令地址
译码阶段: 对指令进行译码,从通用寄存器中读出要使用的寄存器的值,如果指令含有立即数,那么还要将立即数进行符号扩展或者无符号扩展,如果是转移指令,并满足转移条件,那么给出转移目标,作为新的指令地址。
执行阶段: 按照译码阶段给出的操作数、运算类型,进行计算,给出运算结果,如果是load/store指令,那么还会计算load/store的目标地址
访存阶段: 如果是load/store指令,那么在此阶段会访问数据存储器,反之,只是将执行阶段的结果向下传递到回写阶段。同时,在此阶段要判断是否异常需要处理,如果有,清除流水线,然后转移到异常处理例程入口地址处,继续执行。
回写阶段: 将运算结果保存到目标寄存器
指令执行周期
处理器接口
左边是输入接口,右边是输出接口。
接口分为3类:
- 系统控制接口(复位、时钟、中断)
- 指令存储器接口
- 数据存储接口
处理器外部接口描述
草草结束。。。