带和不带转发的 MIPS 流水线
MIPS Pipeline with and without Forwarding
我正在查看以下 MIPS 代码中有和没有转发的停顿数。我试图更好地了解数据路径中何时需要数据。
lw , 0()
sw , 24()
通过转发,我了解到从加载字指令进入寄存器 10 的值在内存阶段之后可用,而存储字指令在其内存阶段之前需要该值。因此,零档。
F D E M W
F D E M W
如果没有转发,直到寄存器10在回写阶段的前半个时钟周期被写入时,寄存器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
我想我想要一种在脑海中表达的方式,以便更好地理解。
如果没有转发,加载字指令将在写回阶段的第一个半时钟周期后更新寄存器 10。存储字指令需要在解码阶段的后半个时钟周期读取寄存器 10 中的值,从而在解码阶段产生以下 2 个停顿:
F D E M W
F D D D E M W
我正在查看以下 MIPS 代码中有和没有转发的停顿数。我试图更好地了解数据路径中何时需要数据。
lw , 0()
sw , 24()
通过转发,我了解到从加载字指令进入寄存器 10 的值在内存阶段之后可用,而存储字指令在其内存阶段之前需要该值。因此,零档。
F D E M W
F D E M W
如果没有转发,直到寄存器10在回写阶段的前半个时钟周期被写入时,寄存器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
我想我想要一种在脑海中表达的方式,以便更好地理解。
如果没有转发,加载字指令将在写回阶段的第一个半时钟周期后更新寄存器 10。存储字指令需要在解码阶段的后半个时钟周期读取寄存器 10 中的值,从而在解码阶段产生以下 2 个停顿:
F D E M W
F D D D E M W