BUAA计组p5_Pipeline_复习tips
p5
coding tips
- 注意框架
- 注意模块间接口
- 注意pc值传递关系
- 注意分布式控制信号操作
添加指令流程
- branch_link意即写回pc_0+4
- branch_likely意即不跳转时清空延迟槽
branch类跳转:
-
比较类型:control_cmp
-
是否写入pc_0 + 4
- 注意WD_12选择为pc_0
-
是否为条件写入,即写使能与branch是否有关
- 如果是条件写入:则将branch信号随instr一同流水
- 在reg_34流水出来后,将branch信号传给control_4,与新增指令一同控制写使能信号
-
是否需要清空延迟槽
- 如果需要清空延迟槽,将branch信号传给control_1,如果branch && instr_1为1,则将reset_01置1传给IF_module
- 注意当处于stall时,不reset,即reg_01内为 if(reset||(reset_01 && en_01))
bgezall:条件跳转,否则清空延迟槽
bgtzalr:条件写寄存器
访存类指令:
- 是否为条件写入
- 该情况下,DM种读出的数值决定了是否进行写入寄存器的操作
- 不管是否写入,注意控制WD_34为修改后的写入值,必要时给control_3里的control_WD34加一位
- 因此需要把是否需要写入的信号随instr一同流水
- 在reg_34流水出来后,将控制写入的信号传给control_4,与新增指令一同控制写使能信号
lwso:如果lw的data大于0,则写入,否则不写入