我已经看到相关的问题,包括here和here,但似乎唯一的序列化提到的指令rdtsc
是cpuid
。有比cpuid更便宜的序列化指令吗?
不幸的是,cpuid
把我的系统上大体有1000个周期,因此,如果有人知道更便宜的(周期更少,没有读取或写入到内存)串行指令我想知道?
我看着iret
,但这似乎改变了控制流,这也是不可取的。
其实我已经看了看Alex的答案链接有关rstscp
的whitespaper,但它说:
的RDTSCP指令等待,直到所有先前的指令已经 阅读柜台前执行。 但是,在执行读操作 之前,可能会开始执行后续的 指令。
第二点似乎是使它不理想。
关于编辑:你读过下一节吗?他们正好为此添加了CPUID(避免了在RDTSCP之上重新排序的后续指令) – Leeor