目录
计算机指令流水线
流水线冒险
结构冒险
数据冒险
控制冒险
计算机指令流水线
流水线方式的洗衣房可以以并行的方式提高性能
计算机执行指令,同样可以以流水线的方式并行
MIPS 流水化的数据通路
流水线冒险
下一周期不能按时执行下一条指令
结构冒险
数据冒险
一条指令依赖于前面某条执行的计算结果
add $s0, $t0, $t1
sub $t2, $s0, $t3
下一条指令需要气泡停顿等待前面计算出结果
前推/旁路(forwarding/bypassing)
不要等待计算结果保存到目的寄存器,增加一条额外数据通路,将计算的结果直接传给下一条指令计算的输入
但是并非所有冒险都能通过前推来避免气泡停顿
lw $s0, 20($t1)
sub $t2, $s0, $t3
前推+阻塞
在需要使用前一个指令的结果时,前一个指令还没有拿到结果,此时需要停顿一下
还可以通过调整指令的顺序来避免阻塞等待
控制冒险
分支预测
更有效的分析预测