我已经看到了相关问题,包括here和here,但似乎有关序列化rdtsc
的唯一说明是cpuid
。
不幸的是,cpuid
在我的系统上大约需要1000个周期,所以我想知道是否有人知道更便宜(更少的周期和没有读取或写入内存)序列化指令?
我看了iret
,但这似乎改变了控制流程,这也是不可取的。
我实际上看过亚历克斯关于rstscp
的回答中的白皮书,但它说:
RDTSCP指令等待所有先前的指令 在阅读柜台之前执行。 然而,随后 指令可以在读操作之前开始执行 进行。
第二点似乎是让它不理想。
答案 0 :(得分:8)
答案 1 :(得分:1)
答案显然不是。 Intel Manual, Volume 3a仅列出3个非特权序列化说明(cpuid
,iret
和rsm
),后两者似乎具有控制流副作用。< / p>
答案 2 :(得分:0)
好吧,我想这很有帮助: lfence 。请参阅“64-ia-32-architecturalures-software-developer-manual”Vol.2B 4-301