我已阅读维基百科页面关于无序执行和推测性的exectution.
我不能理解的是相似之处和不同之处.在我看来,当推测执行没有确定条件的值时,它会使用无序执行.
当我阅读Meltdown和Spectre的论文并做了进一步的研究时,出现了混乱.它在陈述消融纸即熔毁是基于乱序执行,而其他一些资源,包括对维基页面sepeculative执行状态消融是基于推测执行.
我想对此有所澄清.
我相信在创建CPU时,当选择错误的分支时,分支预测是一个主要的减速.那么为什么CPU设计师选择一个分支而不是简单地执行两个分支,然后一旦你知道哪一个被选中就切掉一个?
我意识到这只能在短数量的指令中深入2或3个分支,或者并行阶段的数量会变得非常大,所以在某些时候你仍然需要一些分支预测,因为你肯定会遇到更大的分支,但是不会像这样的几个阶段有意义吗?在我看来,它会显着加快速度,值得增加一点复杂性.
即使只是一个分支深度几乎有一半的时间被错误的分支吃掉,对吧?
或者它可能已经有点像这样?当您进行组装时,分支通常只在两种选择中进行选择,对吗?