Rocket - core - mem_reg_rs2
https://mp.weixin.qq.com/s/zIus4MysOdrGYpbZiqNVGg
简单介绍mem_reg_rs2相关的实现。
1. mem_reg_rs2
mem_reg_rs2是一个流水线寄存器:
用于接收ex阶段传递过来的寄存器参数:
其中:
a. ex_rs(1)存放的是rs2,ex_rs(0)存放的是rs1;
b. StoreGen用于生成相应size的数据;
c. 在sfence的情况下,会更新mem_reg_rs2的值;
2. 在流水线上的传递
在sfence的情况下,mem_reg_rs2被传递给wb_reg_rs2:
wb_reg_rs2用于封装io.imem.sfence:
3. io.dmem
mem_reg_rs2用于填充io.dmem:
其中:
a. io.dmem.req.valid/tag/cmd/size/signed/addr等使用ex阶段的信号;
b. io.dmem.s1_data.data使用mem_reg_rs2,这是一个mem阶段的寄存器,其值比ex阶段的值晚一个周期。这跟DCache的实现有关,这里暂时不关注: