2014-04-24 24 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

相關問題