RISC-Vの仮想化管理には複数のモードが存在する。 どのように設定するかの調査はさておき、とりあえずどのようなモードがあるのか調査してみよう。
仮想化のモードは、mstatusレジスタのVM[4:0]ビットで設定する。以下のような割付になっている。
- 0x00 (Mbare) bareモード。メモリ管理は存在しない。Mモードのみ。
- 0x01 (Mbb) bare-and-bound 2つのモード(U,M)が存在する。ユーザモードのコードと、マシンモードのコードが混ざらないようにする基本的なモード。
- 0x02 (Mbbid) separate instruction and data base-and-bound 2つのモード(U,M)が存在する。命令と、データのプロテクションが分かれる。
- 0x08 (Sv32) 32ビットのRV32アーキテクチャ向けのモード。Unix-basedなシステムで利用されることを想定する。
- 0x09 (Sv39), 0x0a (Sv48) RV64アーキテクチャ向けのモード
- 0x0b (Sv57), 0x0c (Sv64) RV128アーキテクチャなどの、今後の拡張に向ける。
Svxxのモードについては、操作方法などがいろいろ説明が書いてあるが、まだ全部読み切れていない。調査していく。