操作碼 |
指令 |
說明 |
0F AE /5 |
LFENCE |
序列化載入操作。 |
對在 LFENCE 指令前面發出的所有載入指令執行序列化操作。此序列化操作確保:在全域性範圍內看到 LFENCE 指令後面(按程式順序)的任何載入指令之前,可以在全域性範圍內看到 LFENCE 指令前面的每一條載入指令。LFENCE 指令的順序根據載入指令、其它 LFENCE 指令、任何 MFENCE 指令以及任何序列化指令(如 CPUID 指令)確定。確定它的順序時不考慮儲存指令或 SFENCE 指令。
通過使用無序發出、推測性讀取等技術,弱序型別的記憶體可獲得更高的效能。數據使用者對數據弱序程式的認知或瞭解因應用程式的不同而異,並且可能不為此數據的產生者所知。LFENCE 指令提供一種確保在產生弱排序結果的例程與使用此數據的例程之間進行排序的有效方法。
應該注意的是,對於指定為允許推測性讀取的記憶體型別(即 WB、WC 及 WT 記憶體型別)的系統記憶體區域,處理器可以隨意憑推測從該區域獲取與快取數據。PREFETCHh 指令被視作對此推測行為的提示。由於此推測性獲取隨時可能發生,並且與指令執行沒有聯繫,因此確定 LFENCE 指令的順序時,不必考慮 PREFETCHh 或任何推測性獲取機制(也就是說,可以憑推測在執行 LFENCE 指令之前、之中或之後將數據載入到快取)。
Wait_On_Following_Loads_Until(preceding_loads_globally_visible);
void_mm_lfence(void)
無。