今日的行程:
辦公室:10:00 - 19:30
讀書室:20:30 - 22:30
今日的記錄:
用來規範記憶體存取指令的順序,以確保整個系統的正確性。
ARMv8 引入了 RCsc (Release Consistency sequentially consistent), RCpc (Release Consistency processor consistent) 模型,引入的意思是新增了指令來支援這樣的 memory consistency model;
RISC-V 也有 RVTSO (RISC-V Total Store Ordering) 的 extension,這個則是規範硬體在 load/store/atomic 指令的行為。
所以其實可能是有這樣狀況,原本的 ISA 預設使用的是一種 consistency model,但提供其他 memory consistency model 的支援。
RISC-V 規範中有詳細的訂定 RVWMO 會有怎樣的約束條件,例如,有記憶體存取指令有相依性的話,指令就不能被重排或是亂序執行,類似這樣的規範;
所以我的理解是,不同的 memory consistency model 會有不同的約束強度,而越嚴格的,就越難有優化的空間,但是越鬆弛的,則是越難保證正確性,需要程式設計者,自行使用 ISA 提供的指令來確保正確性。
Normal memory: Idempotency
Device memory: 會根據 G(Gathering) R(Reordering) E(Early Write Acknowledgement) 來做分類,G 代表 transaction 可不可以合併,R 代表可不可以被 reorder,E 代表寫入的操作可不可以在還沒完成寫入 device 前就先發出 ACK (能不能在寫入 store buffer 後就發 ACK)。