实现一个CPU(序)

  之前我看了一些体系架构方面的书籍和资料,现在感到有些手痒。因此计划自己动手实现一个CPU,在板子上跑起来。

  计划采用MIPS指令集架构,采用哈佛结构,设置独立的指令和数据存储器,支持R、I、J类型指令,支持异常处理,采用五级流水实现。

 

  MIPS的经典五级流水划分包括 取指(Fetch)、译码(Decode)、执行(Excute)、存储(Memory)、写回(Writeback)。五个阶段的意义分别是

  取指:从指令存储器读出指令,同时确定下一条指令地址。

  译码:对指令进行译码,从通用寄存器中读出要使用的寄存器,如果指令中含有立即数,还需要对立即数进行符号扩展或无符号扩展。如果是转移指令,并且满足转移条件,需要给出转移目标,作为新的指令地址。

  执行:按照译码阶段给出的操作数、运算类型,进行运算,给出运算结果。如果是Load/Store指令,那么还会计算Load/Store的目标地址。

  存储:如果是Load/Store指令,那么本阶段会访问数据存储器,反之,只是将执行阶段的结果向下传递到回写阶段。同时,在此阶段还要判断是否有异常需要处理,如果有,那么会清楚流水线,转移到异常处理例程入口进行执行。

  回写:将运算结果保存会目标寄存器。

 

  在实现微架构的过程中,计划并不是一次性全部实现,而是采用增量模型的方法,先实现部分指令,再在此基础上逐步增加指令集的实现。这样也能在实践的过程中不断反思所学。

posted @ 2021-11-02 21:59  penghaoqi  阅读(49)  评论(0)    收藏  举报