是否有比cpuid更便宜的序列化指令?

时间:2014-04-24 22:02:41

标签: intel cpu-cache rdtsc

我已经看到了相关问题,包括herehere,但似乎有关序列化rdtsc的唯一说明是cpuid

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

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

我实际上看过亚历克斯关于rstscp的回答中的白皮书,但它说:

  

RDTSCP指令等待所有先前的指令   在阅读柜台之前执行。 然而,随后   指令可以在读操作之前开始执行   进行。

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

3 个答案:

答案 0 :(得分:8)

你看过rdtscp指令了吗?这是rdtsc的读取序列化版本。

对于基准测试,我建议您阅读this whitepaper。它提供了几种测量时钟滴答的最佳实践。

克斯(英特尔)

答案 1 :(得分:1)

答案显然不是。 Intel Manual, Volume 3a仅列出3个非特权序列化说明(cpuidiretrsm),后两者似乎具有控制流副作用。< / p>

答案 2 :(得分:0)

好吧,我想这很有帮助: lfence 。请参阅“64-ia-32-architecturalures-software-developer-manual”Vol.2B 4-301