蜂鸟E203 硬件学习-两级流水线的实现(三)
(二)EXU模块 EXU段包括指令译码,指令派发,指令发射,指令执行,内存操作,数据写回。而E203是简单的顺序单发射,顺序执行,顺序写回类型的处理器。 将IFU通过IR寄存器发送给EXU的指令进行译码和派遣。 通过译码出的操作数寄存器索引(Index)读取Regfile(如图中RD-Regfile) 维护指令的数据相关性(如OITF) 将指令派遣(Dispatch)给不同的运算单元执行(ALU、Long-Pipes、LSU、以及EAI) 将指令交付(检查指令分支预测是否正确,是否产生中断和异常) 将指令运算的结果写回Regfile(WB ARB) (1)EXU译码模块 (e203_exu_decode.v) 译码模块的输入信号来自于IR阶段,包含当前需要译码的指令,执行PC,预测结果,非对齐和存储器访问错误。 首先根据最后两个比特位判断当前译码指令是RV32还是RV16,再根据指令格式,产生不同的指令类型信息。如:寄存堆的索引和控制信号,跳转类型和所需计算的信息。 输出dec_info包含很多模块的控制信息,有BJP单元的控制信息,ALU单元的控制信息,CSR单元的控制信息,乘除单元的控制信息,AGU单元的控制信息。同时还要生成后面执行所需要的各类型立即数,当执行的指令为非法指令时,译码器模块还将产生各类型的异常指令异常信息。 (2)整数通用寄存器组 (e203_exu