2020-09-28:內存屏障的彙編指令是啥?

福哥答案2020-09-28:#福大大架構師每日一題#架構

1.硬件內存屏障 X86
sfence: store| 在sfence指令前的寫操做當必須在sfence指令後的寫操做前完成。
lfence:load | 在lfence指令前的讀操做當必須在lfence指令後的讀操做前完成。
mfence:modify/mix | 在mfence指令前的讀寫操做當必須在mfence指令後的讀寫操做前完成。url

2.原子指令,如x86上的」lock …」 指令是一個Full Barrier,執行時會鎖住內存子系統來確保執行順序,甚至跨多個CPU。Software Locks一般使用了內存屏障或原子指令來實現變量可見性和保持程序順序。.net

3.JVM級別如何規範(JSR133)
LoadLoad屏障:
對於這樣的語句Load1; LoadLoad; Load2,
在Load2及後續讀取操做要讀取的數據被訪問前,保證Load1要讀取的數據被讀取完畢。blog

StoreStore屏障:
對於這樣的語句Store1; StoreStore; Store2,
在Store2及後續寫入操做執行前,保證Store1的寫入操做對其它處理器可見。內存

LoadStore屏障:
對於這樣的語句Load1; LoadStore; Store2,
在Store2及後續寫入操做被刷出前,保證Load1要讀取的數據被讀取完畢。get

StoreLoad屏障:
對於這樣的語句Store1; StoreLoad; Load2,
在Load2及後續全部讀取操做執行前,保證Store1的寫入對全部處理器可見。io


評論class

相關文章
相關標籤/搜索