MIPS 数据路径混乱
MIPS Datapath Confusion
一直在学习 mips 数据路径并有几个问题。
为什么会有回写阶段?
-Thoughts:如果它没有增加更多的延迟或使时钟周期更长,那么您似乎可以将写回阶段的多路复用器移动到 Mem 阶段并删除 Mem/Writeback 缓冲区并完全摆脱写回阶段.为什么不是这样?
关于分支预测和停顿的困惑。
-思考:如果一条add指令跟随beq指令进入流水线(beq在ID阶段,add在fetch阶段)但是分支被采用,那么add指令如何转换为空操作? (设置什么控制信号,怎么设置?)
级间缓冲区何时更新?
想法:我认为它们是在时钟周期结束时更新的,但无法验证这一点。另外,我想了解摊位期间到底发生了什么。当需要暂停时,IF/ID 级间缓冲器是否被锁定?如果是这样,这是怎么做到的?然后指令是否从缓冲区中读取以确定 ID 阶段中应包含的指令?
感谢您的帮助
这是管道的图片:
回写阶段是将结果写回寄存器。 MEM/WB 缓冲区用于保存前一阶段的任何数据。通过摆脱写回阶段,您要做的实际上是扩展 mem
阶段。例如在这样的指令中,
LW R1, 8(R2)
8(R2)
寻址的内存位置的内容将存储在 MEM/WB 缓冲区中。通过将内容复制到缓冲区,MEM 阶段现在可以接受另一个 LW
指令,因此更多的 ILP。
@Craig Estey 已经正确回答了这个问题。但是,即使您不执行 @Craig 提到的交换,您也可以始终使用控制信号并在 IF、ID 阶段为以下指令冲洗东西。
我不确定关于何时更新级间缓冲区的准确答案。我的看法是,在时钟周期开始时,级间缓冲器中的数据不相关,而在时钟周期结束时它是相关的。控制信号用于控制流水线的每个阶段发生的事情,这意味着它们可用于告诉 IF 阶段不要获取任何内容。
一直在学习 mips 数据路径并有几个问题。
为什么会有回写阶段? -Thoughts:如果它没有增加更多的延迟或使时钟周期更长,那么您似乎可以将写回阶段的多路复用器移动到 Mem 阶段并删除 Mem/Writeback 缓冲区并完全摆脱写回阶段.为什么不是这样?
关于分支预测和停顿的困惑。 -思考:如果一条add指令跟随beq指令进入流水线(beq在ID阶段,add在fetch阶段)但是分支被采用,那么add指令如何转换为空操作? (设置什么控制信号,怎么设置?)
级间缓冲区何时更新? 想法:我认为它们是在时钟周期结束时更新的,但无法验证这一点。另外,我想了解摊位期间到底发生了什么。当需要暂停时,IF/ID 级间缓冲器是否被锁定?如果是这样,这是怎么做到的?然后指令是否从缓冲区中读取以确定 ID 阶段中应包含的指令?
感谢您的帮助
这是管道的图片:
回写阶段是将结果写回寄存器。 MEM/WB 缓冲区用于保存前一阶段的任何数据。通过摆脱写回阶段,您要做的实际上是扩展
mem
阶段。例如在这样的指令中,LW R1, 8(R2)
8(R2)
寻址的内存位置的内容将存储在 MEM/WB 缓冲区中。通过将内容复制到缓冲区,MEM 阶段现在可以接受另一个LW
指令,因此更多的 ILP。@Craig Estey 已经正确回答了这个问题。但是,即使您不执行 @Craig 提到的交换,您也可以始终使用控制信号并在 IF、ID 阶段为以下指令冲洗东西。
我不确定关于何时更新级间缓冲区的准确答案。我的看法是,在时钟周期开始时,级间缓冲器中的数据不相关,而在时钟周期结束时它是相关的。控制信号用于控制流水线的每个阶段发生的事情,这意味着它们可用于告诉 IF 阶段不要获取任何内容。