“Control hazard”(控制冒险/控制相关)是计算机体系结构中流水线处理器的一类冒险:由于分支跳转等控制流指令会改变下一条要执行的指令地址,处理器在分支结果未确定前可能取到“错误路径”的指令,从而导致停顿(stall)或清刷流水线(flush),降低性能。(也常称为 branch hazard。)
/kənˈtroʊl ˈhæzərd/
A control hazard happens when the CPU executes a branch instruction.
当 CPU 执行分支指令时,就可能发生控制冒险。
Without branch prediction, control hazards can force the pipeline to stall or flush, reducing instruction throughput.
如果没有分支预测,控制冒险可能迫使流水线停顿或清空,从而降低指令吞吐率。
该术语由两部分组成:control(控制、控制流)源自拉丁语 contra(相对、对抗)演变而来,在计算机中常指“控制流”;hazard(危险、风险)源自法语 hasard(偶然、风险)。在流水线语境里,“hazard”引申为“会破坏理想顺序执行的风险因素”,因此 control hazard 就是“由控制流不确定性带来的风险”。