BUAA计组p5_Pipeline_复习tips

p5

coding tips

  1. 注意框架
  2. 注意模块间接口
  3. 注意pc值传递关系
  4. 注意分布式控制信号操作

添加指令流程

  • branch_link意即写回pc_0+4
  • branch_likely意即不跳转时清空延迟槽

branch类跳转:

  1. 比较类型:control_cmp

  2. 是否写入pc_0 + 4

    • 注意WD_12选择为pc_0
  3. 是否为条件写入,即写使能与branch是否有关

    • 如果是条件写入:则将branch信号随instr一同流水
    • 在reg_34流水出来后,将branch信号传给control_4,与新增指令一同控制写使能信号
  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:条件写寄存器

访存类指令:

  1. 是否为条件写入
    • 该情况下,DM种读出的数值决定了是否进行写入寄存器的操作
    • 不管是否写入,注意控制WD_34为修改后的写入值,必要时给control_3里的control_WD34加一位
    • 因此需要把是否需要写入的信号随instr一同流水
    • 在reg_34流水出来后,将控制写入的信号传给control_4,与新增指令一同控制写使能信号

lwso:如果lw的data大于0,则写入,否则不写入

posted @ 2020-12-28 15:36  Frida_h  阅读(1622)  评论(0编辑  收藏  举报