superrs.v
重排序缓冲区(RS)模块,主要负责指令的发射和调度。以下是对代码的信号和功能的介绍:
信号介绍
- 输入信号:
clk,reset: 时钟和复位信号。
inst_valid: 指令有效性标志。
prega_idx,pregb_idx,pdest_idx: 寄存器索引,用于操作数的源和目的。
ALUop: 表示要执行的算术逻辑单元操作。
rd_mem,wr_mem: 读写内存标志。
rs_IR,npc: 当前指令和下一个程序计数器。
- 其他信号用于表示功能单元的可用性(如
multfu_free,exfu_free)。
- 输出信号:
rs_stall,rs_rdy: 表示资源是否被占用。
pdest_idx_out,prega_idx_out,pregb_idx_out: 输出寄存器索引。
ALUop_out,rd_mem_out,wr_mem_out: 输出的操作指令和内存标志。
功能介绍
该模块的核心功能是根据指令的有效性和资源的可用性来调度和发射指令。它包含两个重排序缓冲区实例(RS rs0 和 RS rs1),以支持超标量处理。根据指令的状态和可用的功能单元,模块决定哪些指令可以被调度执行。通过对输入信号的解码和组合逻辑,模块还可以确定是否发生数据冒险,从而生成相应的控制信号(如 en_out 和 rs_stall)。