文章目录
[+]
流水线许可我们通过并发实行指令来隐蔽指令的延迟,但也会产生一些自身的潜在障碍——我们统称为称为流水线危害,即下一条指令不能有效的不才一个时钟周期实行的情形。
这可能发生的办法有多种:
办理危害的唯一方法是进行流水线停顿:在拥塞的缘故原由消逝之前停滞所有之前步骤的进展。这在流水线中创造了气泡——类似于流体管道中的气泡——一种韶光传播的状态,当实行单元空闲且没有有效事情完成时。

(图片来自网络侵删)
Pipeline stall on the execution stage
不同的危害有不同的代价:
在构造危害中,我们必须等待(常日是多一个周期)直到实行单元准备好。它们是性能的基本瓶颈,无法避免——我们必须环绕它们进行工程设计。在数据危害中,、我们必须等待所需数据被打算出来(关键路径的延迟)。数据危害通过重构打算来办理,以便关键路径更短。在掌握危害中,我们常日必须清空全体流水线并重新开始,摧残浪费蹂躏整整15-20个周期。它们通过完备移除分支或使分支可预测来办理,以便CPU可以有效地推测接下来将实行什么。由于它们对性能有非常不同的影响,后面我们会以相反的顺序开始,从更严重的问题开始谈论。