【发布时间】:2016-10-05 23:05:28
【问题描述】:
然后提取被猜测为最有可能的分支并 投机执行。如果后来检测到猜测是 错误则投机执行或部分执行 指令被丢弃,流水线从 正确的分支,导致延迟。
引用来自维基百科。
为什么总是可以丢弃已执行的指令?例如,错误预测的采用分支中的第一条指令是syscall 0x60(在 Linux 上是中断:“退出程序”)的情况呢?我知道如果发生错误预测,程序不会退出,但是 CPU 是如何丢弃的呢?
我知道每条指令(拆分为微操作)都必须退出才能完成。也许它对推测执行很重要?
【问题讨论】:
-
指令流水线中的第一阶段,不修改内存或寄存器,(例如:指令获取和解码)总是可以执行,不会有任何丢弃结果的问题。
标签: x86 branch-prediction