5

cpuid在基准测试时用作序列化指令以防止 ooo 执行,因为rdtsc如果单独使用基准测试指令的执行之前可能会重新排序。我的问题是下面的说明是否仍然可以在和rdtsc之间重新排序?既然不是序列化指令,那么指令可以围绕它自由重新排序吗?cpuidrdtscrdtsc

4

1 回答 1

1

由于 RDTSC 原则上不依赖任何输入(它不带参数),因此 OOO 管道将尽快运行它。在它之前添加序列化指令的原因是不让 RDTSC 更早执行。

这里有 John McCalpin 的答案,您可能会发现它很有用。他解释了您可能更喜欢使用的 RDTSCP 指令(其行为与 RDTSC 不同)的 OOO 重新排序。

于 2016-02-11T10:15:37.897 回答