嗨,假设下面的指令:
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:by
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?
发布于 2012-01-16 00:22:01
因为要加载到R1中的从存储器读取的值还没有写入寄存器文件。如果要从R1读取值,您将获得R1<-M1指令之前包含的值R1。在ME1之后,新的R1值存储在ME->WB流水线寄存器中。
https://stackoverflow.com/questions/8871004
复制相似问题