我已经看到了包括这里和这里在内的相关问题,但似乎序列化rdtsc的唯一指令是cpuid。
rdtsc
cpuid
不幸的是,cpuid在我的系统上需要大约1000个周期,所以我想知道是否有人知道一个更便宜(周期更少,没有读或写到内存)的序列化指令?
我看过iret,但这似乎改变了控制流,这也是不可取的。
iret
我实际上看过亚历克斯关于rstscp的答案中链接的白纸,但它说:
rstscp
在读取计数器之前,RDTSCP指令等待到所有先前的指令都已执行。然而,之后的指令可以在执行读操作之前开始执行。
第二点似乎使它不太理想。
发布于 2014-09-06 01:58:59
好吧,我想这是helpfull:lfence.Ref -《64-ia-32-architectures-software-developer-manual》第2B4-301卷
https://stackoverflow.com/questions/23280697
相似问题