2014-04-24 22 views
2

我已经看到相关的问题,包括herehere,但似乎唯一的序列化提到的指令rdtsccpuid有比cpuid更便宜的序列化指令吗?

不幸的是,cpuid把我的系统上大体有1000个周期,因此,如果有人知道更便宜的(周期更少,没有读取或写入到内存)串行指令我想知道?

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

其实我已经看了看Alex的答案链接有关rstscp的whitespaper,但它说:

的RDTSCP指令等待,直到所有先前的指令已经 阅读柜台前执行。 但是,在执行读操作 之前,可能会开始执行后续的 指令。

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

+0

关于编辑:你读过下一节吗?他们正好为此添加了CPUID(避免了在RDTSCP之上重新排序的后续指令) – Leeor

回答

8

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

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

克斯(英特尔)

+1

感谢您的回答。我其实曾经看过它,但忘了将它添加到我的文章。我刚刚更新了我的问题。 – merlin2011

+0

鉴于问题的原始措词,这仍然是最好的答案。 – merlin2011

+0

你有看过我上面提到的白皮书吗?这明确提供了解决RDTSCP限制的方法。但不幸的是这并不能解决所涉及的开销。 –

0

好,我想这是有益的:lfence .REF这个“64-IA-32体系结构的软件开发者手册”Vol.2B 4-301

相关问题