sync
指令型別 M
格式
(qp) sync.i
說明
sync.i 可以確保先前啟動的由當地處理器發出的“清除快取” (fc) 操作可被當地數據記憶體引用看見時,先前的“清除快取”操作也被當地處理器指令預取流觀察到。sync.i 還確保先前啟動的“清除快取” (fc) 在遠端處理器被數據記憶體引用觀察到時,它們也被遠端處理器上的指令記憶體引用觀察到。sync.i 根據被另外的處理器觀察的所有快取清除操作進行排序。sync.i 與先前的 fc 必須在單獨的指令組中。如果語義需要,程式設計師必須顯式插入有序數據引用(獲取、釋放或邊界型別),適當地約束 sync.i(以及 fc)對於其它處理器上數據流的可見性。
sync.i 用於在當地與遠端處理器上的指令與數據快取之間維護一種順序關係。指令序列化操作可用於確保程式執行中的給定點已經觀察到本地處理器上的 sync.i 啟動的同步操作。
自我修改程式碼(本地處理器)的示例:
st [L1] = data //store into local instruction stream
fc L1 //flush stale datum from instruction/data cache
;; //require instruction boundary between fc and sync.i
sync.i //ensure local/remote data/inst caches are synchronized
;;
srlz.i //ensure sync has been observed by the local processor,
;; //ensure subsequent instructions observe modified
//memory
L1: target //instruction modified