以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
完整的OR1200处理器流水线数据通路图,如图9.12所示,图中显示了数据处理类、特殊寄存器访问类、转移类、异常处理类、乘法除法类、加载存储类指令处理过程中流水线各个阶段的数据流转。
(1)取指阶段:GENPC模块计算指令地址,然后通过指令Wishbone总线从指令存储器中取得指令,取得的指令送入IF模块,该指令进入流水线。
(2)译码阶段:取出指令需要的通用寄存器的值dataa、datab,同时对指令中可能有的立即数进行符号扩展或零扩展得到id_simm,OPERAND_MUX模块从中选择两个数据作为下一步的运算数据operand_a、operand_b,为了解决流水线数据相关的问题,将执行阶段计算的结果muxout也作为OPERAND_MUX模块的备选数据。
(3)执行阶段:分七种情况:
A、如果是数据处理类指令,那么ALU模块依据操作码alu_op、alu_op2、comp_op,对操作数a、b进