我试图了解流水线数据路径中的以下MIPS代码将如何执行。
lw $4, 100($2)
sub $6, $4, $3
add $2, $3, $5
MIPS指令集有5个阶段(获取,解码,执行,存储器访问,写回)。
答案是:8个周期,但我很难理解为什么。这是管道的样子(不完整)。
C F D E M WB
1 lw
2 sub lw
3 add sub lw
4 add sub x lw
5 add sub lw
6 add sub
7
8
问题:为什么x(失速?)在4和5?我如何提出包括7和8的周期?
答案 0 :(得分:2)
我们需要确保您的教科书或作业(我假设)中的完整数据路径详细信息。以下是一些可能性:
sub
指令在进入Execute之前停止2个周期,因为它需要等待lw
结果完成Writeback add
指令停止,直到sub
完成回写,再次因为它等待结果。与这两种可能性相关的细节是来自给定指令的结果可用于后来的相关指令。您的数据路径是否具有某种类型的寄存器旁路? Writeback中的结果是否可以使用相同的循环,或下一个?