開発日記

Erlangをダラダラ書きます。

RISC-V MMU

ハードウェアページテーブルウォークを採用

RISC-Vではページ入れ替え処理(ページテーブルウォーク)をハードウェアで制御する.

したがって,仮想アドレスを導入したくば専用ハードウェアを実装しなければならない.

仮想メモリの仕様

RV32

  • 0 Bare ... アドレス変換しない
  • 1 Sv32 ... 仮想アドレス32ビット(ページベース)

RV64

  • 0 Bare ... アドレス変換しない
  • 1-7 ... 予約済み
  • 8 Sv39 ... 仮想アドレス39ビット(ページベース)
  • 9 Sv48 ... 仮想アドレス48ビット(ページベース)
  • 10 Sv57 ... 仮想アドレス57ビット(ページベース,予約済み)
  • 11 Sv64 ... 仮想アドレス64ビット(ページベース,予約済み)
  • 12 - 15 ... 予約済み

[Privileged ISA v1.11 p64 ]

https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMFDQC-and-Priv-v1.11/riscv-privileged-20190608.pdf

ページングアルゴリズム(ページテーブル検索)

Sv32

  1. 「仮想アドレスの [31:22] の部分 (VPN[1])」と「SATPシステムレジスタの値」から次のページテーブルのアドレスを得る.
  2. 「1で得たページテーブルアドレスでページテーブルエントリ (PTN) を参照した値」と「仮想アドレスの [21:12] の部分 (VPN[0])」から物理ページ番号 (PPN) を得る.
  3. 「2で得たPPN」と「仮想アドレスの [11:0] の部分 (page offset)」から物理アドレスを得る.

それでは.いろはにへとへと.