【发布时间】:2016-02-07 20:12:17
【问题描述】:
我最近在这个链接https://en.wikipedia.org/wiki/Out-of-order_execution了解了乱序执行CPU
有些东西我不太明白。为什么这些 CPU 不麻烦?我的意思是,如果我有指令乱序执行,即使它们适用于不同的数据,我是否能够达到数据不按照程序顺序更新的情况?
我的意思是,如果我有类似的东西:
x = 1;
y = 2;
x = x+y;
print x;
print y;
是什么阻止了“print y”指令在“print x”之前执行?
也许我对这种 CPU 有什么误解,你能给我解释一下吗?
提前致谢
【问题讨论】:
-
如果第二个不依赖第一个,它只能乱序执行两个操作。它还可以推测性地执行它认为将要采用的分支,然后如果它以另一种方式分支,则放弃该状态。基本上,制造这些 CPU 的人非常聪明,并且使用强大的工具来确保它们无序工作。
-
在这里挖掘大学记忆......但我相信这与不同指令所采用的途径有关。两个打印命令共享一个路径,因此第二个必须等待第一个。但是如果两个命令使用不同的路径,它们可以自行移动,直到它们与当前正在使用的另一条指令的路径相交