gpt4 book ai didi

performance - 为什么 RDTSC 不是序列化指令?

转载 作者:行者123 更新时间:2023-12-03 11:21:05 25 4
gpt4 key购买 nike

Intel manuals for the RDTSC instruction警告当 RDTSC 实际执行时乱序执行可能会发生变化,因此他们建议在其前面插入一条 CPUID 指令,因为 CPUID 会序列化指令流(CPUID 永远不会乱序执行)。我的问题很简单:如果他们有能力使指令序列化,他们为什么不进行 RDTSC 序列化?它的全部意义似乎是获得周期准确的时间。是否存在您不想在序列化指令之前添加序列化指令的情况?

较新的 Intel CPU 有一个单独的 RDTSCP 指令进行序列化。英特尔选择引入单独的指令,而不是更改 RDTSC 的行为,这向我表明必须存在某些情况,即您想要的可能是无序时序。它是什么?

最佳答案

如果您尝试使用 rdtsc 来查看分支是否预测错误,那么非序列化版本就是您想要的。

//math here
rdtsc
branch if zero to done
//do some work that always takes 1 cycle
done: rdtsc

如果分支被正确预测,增量会很小(甚至可能是负数?)。如果分支被错误预测,增量会很大。

使用序列化版本,分支条件将得到解决,因为第一个 rdtsc 等待数学完成。

关于performance - 为什么 RDTSC 不是序列化指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12065721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com