多核心與同步
在RISC-V的LR/SC(載入保留/條件式儲存)這類指令組中,SC(條件式儲存)會在什麼情況下失敗?
- A以SC寫入的值與以LR讀取的值相同時
- B從LR讀取到SC之間,其他核心寫入該位址等,使保留失效時
- CLR與SC之間只要執行了任何一個其他指令時
查看答案與解析
正確答案:B. 從LR讀取到SC之間,其他核心寫入該位址等,使保留失效時
LR在讀取值的同時,會「保留」該位址。之後以SC寫入時,若保留仍然有效就寫入並成功;若因其他核心的寫入等使保留失效,則不寫入並回傳失敗。相對於CAS檢查值是否一致,LR/SC檢查的是有無寫入,因此即使值曾改變又變回原樣,也能偵測到。ARM也有同樣的指令組。
- A. 即使寫入相同的值也會成功。
- B. 正確。檢查的不是值,而是有無寫入。
- C. 若是簡短的處理,之間可以放入其他指令。