RISC-VのPrivileged仕様Version 1.12 ではCMO命令群(Cache Management Operation)についての仕様が検討されている。 これについて調査してみよう。
仕様書は以下に置いてある。誰でもダウンロードできる。
キャッシュ操作命令については以下の3種類に大きく分けることができる。
- 管理(management)命令 (Zicbom) : キャッシュされたデータに対する操作を行う。
- ゼロ(zeros)命令 (Zicboz) : メモリ位置に対してゼロ埋めを行う。
- プリフェッチ命令 (Zicbop) : プリフェッチを行う。
管理(management)命令
ちなみに、以下のClean
, Flush
, Inval
操作の定義は以下のようになっている。
- Invalidate, 無効化:は、キャッシュブロックのコピーの割り当てを解除する。
- Clean:キャッシュブロックのコピーのデータがストアオペレーションによって変更されている場合に、他のキャッシュまたはメモリへの書き込み転送を行うものである
- Flush:Cleanの後にInvalidateをアトミックに実行する
CBO.CLEAN
命令
オペランドで与えられるアドレスに対してそれが含まれるキャッシュブロックを消去する。
CBO.FLUSH
命令
オペランドで与えられるアドレスに対してそれが含まれるキャッシュブロックをフラッシュする。
CBO.INVAL
命令
オペランドで与えられるアドレスに対してそれが含まれるキャッシュブロックを無効化する。
CBO.ZERO` 命令
オペランドで与えられるアドレスに対してそれが含まれるキャッシュブロックにゼロを埋める。
PREFETCH.I
命令
命令フェッチ向けに、オペランドに含まれるアドレスをキャッシュするためのヒントをハードウェアに与える。
PREFETCH.R
命令
データリード向けに、オペランドに含まれるアドレスをキャッシュするためのヒントをハードウェアに与える。
PREFETCH.W
命令
データライト向けに、オペランドに含まれるアドレスをキャッシュするためのヒントをハードウェアに与える。