2

我已经看到了相关的问题,包括这里这里,但似乎唯一提到的序列化指令rdtsccpuid

不幸的是,cpuid在我的系统上大约需要 1000 个周期,所以我想知道是否有人知道更便宜的(更少的周期,没有读取或写入内存)序列化指令?

我看了看iret,但这似乎改变了控制流,这也是不可取的。

我实际上已经查看了 Alex 的关于 的回答中链接的白皮书rstscp,但它说:

RDTSCP 指令等到所有先前的指令都已执行后才读取计数器。然而,后续指令可能在执行读取操作之前开始执行。

第二点似乎是让它不太理想。

4

3 回答 3

7

你看过rdtscp说明书吗?这是读取的序列化版本rdtsc

对于基准测试,我建议阅读此白皮书。它提供了一些测量时钟滴答声的最佳实践。

亚历克斯(英特尔)

于 2014-04-25T11:24:56.567 回答
1

答案显然不是。英特尔手册,第 3a 卷仅列出了 3 个非特权序列化指令(cpuidiretrsm),后两个似乎具有控制流副作用。

于 2014-04-24T22:46:02.123 回答
0

好吧,我想这很有帮助:lfence .Ref this 《64-ia-32-architectures-software-developer-manual》 Vol.2B 4-301

于 2014-09-06T01:58:59.813 回答