2015-09-18 27 views
5

cpuid被用作序列化指令,以防止在基準測試時進行ooo執行,因爲如果單獨使用基準指令的執行可能會在rdtsc之前重新排序。我的問題是rdtsc以下的說明是否可以在cpuidrdtsc之間重新排列?由於rdtsc不是序列化指令,指令可以自由地在其周圍重新排序?cpuid + rdtsc和無序執行

回答

1

由於RDTSC不依賴於任何輸入(它不需要參數),原則上OOO管道會盡快運行它。在不讓RDTSC更早執行之前添加序列化指令的原因。

John McCalpin here有一個答案,你可能會覺得它很有用。他解釋了RDTSCP指令(與RDTSC的行爲不同)的OOO重新排序,您可能更願意使用它。