什麼是LR/SC(載入保留/條件式儲存)
載入保留(LR)與條件式儲存(SC)指令的組合。亦稱 LL 與 SC。在 LR 之後若其他核心寫入該位址,SC 就會失敗,因此可實現不可分割的更新。
日文名稱: LR/SC
「LR/SC(載入保留/條件式儲存)」出現在1領域的3道練習題中(多核心與同步等)。
這個名詞所屬的領域: 多核心與同步
載入保留(LR)與條件式儲存(SC)指令的組合。亦稱 LL 與 SC。在 LR 之後若其他核心寫入該位址,SC 就會失敗,因此可實現不可分割的更新。
日文名稱: LR/SC
「LR/SC(載入保留/條件式儲存)」出現在1領域的3道練習題中(多核心與同步等)。
這個名詞所屬的領域: 多核心與同步
正確答案:B. 從LR讀取到SC之間,其他核心寫入該位址等,使保留失效時
LR在讀取值的同時,會「保留」該位址。之後以SC寫入時,若保留仍然有效就寫入並成功;若因其他核心的寫入等使保留失效,則不寫入並回傳失敗。相對於CAS檢查值是否一致,LR/SC檢查的是有無寫入,因此即使值曾改變又變回原樣,也能偵測到。ARM也有同樣的指令組。
相對於CAS檢查值是否一致,LR/SC檢查的是有無寫入,因此即使值曾改變又變回原樣,也能偵測到。
在RISC-V的LR/SC(載入保留/條件式儲存)這類指令組中,SC(條件式儲存)會在什麼情況下失敗?有CAS(比較並交換)、取得並相加(fetch-and-add),以及RISC-V的LR/SC與AMO指令等,是建構鎖與無鎖資料結構的基礎。
關於原子指令(不可分割指令),下列說明何者正確?可以用在指標上附加更新次數一起比較的方法,或使用LR/SC的方法來防止。
關於使用CAS的無鎖資料結構中會出現的ABA問題,下列說明何者正確?原子指令(Atomic instruction) 比較並交換(Compare-and-swap) 更新(Refresh) 互斥鎖(Mutex) 目錄式一致性(Directory-based coherence) 交易式記憶體(Transactional memory) 死結(Deadlock) 自旋鎖(Spinlock) 屏障同步(Barrier synchronization) 記憶體一致性模型(Memory consistency model)