RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。
もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。
A.3.6 フェンス(規則4)
規則4によれば、FENCE命令はプログラム順序においてフェンスの前にあるすべてのメモリアクセスがグローバルメモリ順序でフェンスの後にあるメモリアクセスよりも前に来ることを保証する。 しかし、FENCEはオプションで前または後のセットを制限することができる。 具体的には、FENCEにはPR、PW、SR、SWのビットがあり、これらは前後のセットを制限する。
フェンス命令は、特定のPR、PW、SR、およびSWの組み合わせを使用して、メモリアクセスの順序を制御する。 プログラマは、これらのうち通常実際に使用される6つの組み合わせのみを使用することを強く推奨される。 他の組み合わせは未知または予期せぬメモリモデルとの相互作用を持つ可能性がある。
- FENCE RW,RW
- FENCE.TSO
- FENCE RW,W
- FENCE R,RW
- FENCE R,R
- FENCE W,W