流水线停顿

流水线停顿(英语:Pipeline stall),亦称流水线冒泡,是指有指令管线化处理器,为了应对冒险(相邻位址读写相同位址,不同执行顺序可能会影响结果)而延时执行指令

在指令解码的阶段,控制单元会判断解码后的指令所读取的暂存器位址是否是执行阶段要写入的位址。若是,控制单元会将该指令暂停一个时脉周期,控制单元也会暂停读取阶段指令,避免读取阶段读到的命令被下一个命令盖过。

在指令解码的指令停顿时,为了避免读取新的指令,会固定程式计数器以及读取阶段的指令,避免被修改。此动作会一直持续到可能造成上述冲突的指令已执行完成为止[1],之后才会继续指令解码及读取指令,此事件常称为bubble,类似液体管路中的气泡。

有些架构下,流水线的执行阶段需要在每一个周期都要有动作。此时会在执行阶段加入NOP(无作用),以达到停顿的效果。

相关条目

参考资料

  1. ^ Patterson, David A.; Hennessey, John L., Computer Organization and Design 4, Morgan Kaufmann: 373