如果我有两条生产线,比如:
add $s1, $s3, $s5
sub $s3, $s6, $s8这应该会引起战争(读后写)的危险,对吗?
问题是,我不明白它是否会导致在管道中插入气泡,因为我必须绘制管道表。
有什么不同的情况下,这可能会造成危险或不?
发布于 2016-05-13 18:51:12
在合理的(有序)管道中,战争危险是不常见的/不可能的。
管道危险,第2页
这里有一个表来演示为什么,在一个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 (指令解码)阶段从寄存器文件中获取操作数,但是结果直到WB (写回)阶段才被写回寄存器文件。指令1在指令2进入WB阶段之前处于ID阶段4时钟周期,因此在使用之前不可能覆盖$s3。
https://stackoverflow.com/questions/37217142
复制相似问题