指令流水线的通过方法

时间:2012-01-15 15:51:04

标签: multithreading assembly computer-science pipeline computer-architecture

嗨假设以下说明:

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?

1 个答案:

答案 0 :(得分:1)

因为从要加载到R1的内存中读取的值尚未写入寄存器文件。如果要从R1读取值,则在R1&lt; -M1指令之前得到值R1。在ME1之后,新的R1值存储在ME-> WB流水线寄存器中。