WAR 危险导致管道中出现气泡 (MIPS)?

WAR hazard causes bubbles in the pipeline (MIPS)?

如果我有 2 行汇编,例如:

add $s1, $s3, $s5 
sub $s3, $s6, $s8

这应该会导致 WAR(读后写)危险,对吗?

问题是要画管道,不知道会不会造成管道中插入气泡table。

这是否会造成危险,是否有任何不同的情况?

WAR hazard is uncommon/impossible in a reasonable (in-order) pipeline

Pipeline Hazards, Page 2

这里有一个 table 来说明原因,在 5 级流水线 CPU 中。让我们将它们标记为指令 1 和 2。

 IF | ID | EX | MEM | WB
-------------------------
 1  |    |    |     |
-------------------------
 2  |(1) |    |     |     Instruction 1 is obtaining $s3
-------------------------
    | 2  | 1  |     |    
-------------------------
    |    | 2  |  1  |
-------------------------
    |    |    |  2  | 1
-------------------------
    |    |    |     |(2)  Instruction 2 is writing $s3 back

指令在ID(Instruction Decode)阶段从寄存器文件中获取操作数,但直到WB(write-back)阶段才将结果写回寄存器文件。指令 1 在指令 2 进入 WB 阶段前 4 个时钟周期进入 ID 阶段,因此 $s3 在使用前不可能被覆盖。