嗨假设以下指令:
R1<-M1
R2<-M2
R3<-R1*R2
M3<-R3
现在我们将在不绕过的情况下创建如下管道:[XXX : bubble]
IF1 ID1 EX1 ME1 WB1
IF2 ID2 EX2 ME2 WB2
IF3 XXX XXX XXX ID3 EX3 WB3
XXX XXX XXX XXX IF4 ID4 EX4 WB4
我们将创建一个带有旁路的管道,如下面的管道:[XXX : bubble]
IF1 ID1 EX1 ME1 WB1
IF2 ID2 EX2 ME2 WB2
IF3 XXX ID3 EX3 WB3
XXX XXX IF4 ID4 EX4 WB4
我们应该等到 WB1 和 WB2 完成,然后我们可以执行指令 3。所以在绕过方法中,我们将在 EX1 和 EX2 电平之后将 R1 和 R2 值存储到缓冲区中。
但是......在绕过方式,EX1之后,我们怎样才能得到寄存器R1的值??我们还没有达到 WB1 值。为什么我们需要一个缓冲区,为什么不直接读取 R1 呢?