RDTSC 指令的Intel 手册警告说,当 RDTSC 实际执行时,乱序执行可能会发生变化,因此他们建议在其前面插入一条 CPUID 指令,因为 CPUID 会序列化指令流(CPUID 永远不会乱序执行)。我的问题很简单:如果他们有能力让指令序列化,为什么他们不让 RDTSC 序列化?它的全部目的似乎是获得周期准确的计时。是否存在您不想在其前面使用序列化指令的情况?
较新的 Intel CPU 有一个单独的 RDTSCP 指令正在序列化。英特尔选择引入单独的指令,而不是更改 RDTSC 的行为,这向我表明,在某些情况下,您想要的可能是时序乱序。它是什么?