cpuid被用作序列化指令,以防止在基准测试时执行ooo,因为如果单独使用,可能会在rdtsc之前重新排序基准测试指令的执行。我的问题是,rdtsc下面的指令是否仍有可能在cpuid和rdtsc之间重新排序?由于rdtsc不是序列化指令,所以指令可以自由地围绕它重新排序吗?
发布于 2016-02-11 10:15:37
因为RDTSC原则上不依赖于任何输入(不需要任何参数),所以OOO管道会尽快运行它。在序列化指令之前添加它的原因是不让RDTSC更早地执行。
约翰·McCalpin 这里给出了一个答案,你可能会发现它很有用。他解释了RDTSCP指令的OOO重新排序(RDTSCP指令的行为与RDTSC不同),您可能更喜欢使用RDTSCP指令。
https://stackoverflow.com/questions/32662518
复制相似问题