我正在查看以下MIPS代码中有和没有转发的停顿数。我试图更好地了解数据路径中何时需要数据。
lw $10, 0($4)
sw $10, 24($5)
通过转发,我得到以下结论,理解在存储器阶段之后,从加载字指令进入寄存器10的值是可用的,并且在存储器阶段之前存储字指令需要该值。因此,零档位。
F D E M W
F D E M W
如果没有转发,寄存器10将不会从加载字指令中获得正确的值,直到在写回阶段的时钟周期的前半部分写入为止。
在解码阶段,说存储字指令在时钟周期的后半部分需要正确的寄存器10值是否正确,产生以下两个档位:
F D E M W
F F F D E M W
或者是存储字指令在执行阶段需要它产生这两个档位的序列:
F D E M W
F D D D E M W
我想我想在脑海里用一种方法来表达我的理解。
答案 0 :(得分:1)
在没有转发的情况下,加载字指令将在写回阶段的时钟周期的前半部分之后更新寄存器10。存储字指令需要在解码阶段的时钟周期的后半部分读取寄存器10中的值,在解码阶段产生以下2个停顿:
F D E M W
F D D D E M W