FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (4. IOMMUの特徴)

前回:msyksphinz.hatenablog.com

github.com

RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。

何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。


1.4. IOMMUの特徴

  • RISC-V IOMMU仕様のバージョン1.0は、以下の機能をサポートしている:
  • メモリ・ベースのデバイス・コンテキストで、パラメータとアドレス変換構造を見つける。デバイス・コンテキストは、ハードウェアが提供する一意のdevice_idを使用して配置される。サポートされるdevice_idの幅は24ビットまでである。
  • ハードウェアが提供する一意のprocess_idを使用して、パラメータとアドレス変換構造を見つけるための、メモリベースのプロセスコンテキスト。サポートされるprocess_idは最大20ビットである。
  • 16ビットのGSCIDと20ビットのPSCID。
  • 2段階のアドレス変換。
  • RISC-V Privileged仕様[3]で規定されているページベースの仮想メモリシステムにより、CPU MMUとIOMMUに共通のページテーブルを使用するか、IOMMUに個別のページテーブルを使用するかをソフトウェアが柔軟に選択できる。
  • 最大57ビットの仮想アドレス幅、56ビットのシステム物理アドレス幅、59ビットのゲスト物理アドレス幅。
  • PTE アクセス済みビットとダーティビットのハードウェア更新。
  • RISC-V Advanced Interrupt Architecture [2]で規定されたMSIページテーブルを使用して、仮想割り込みファイルへのメモリアクセスとMSIアドレス変換を識別する。
  • Svnapot と Svpbmt 拡張。
  • PCIe ATS および PRI サービス [1]。翻訳要求に応答して、SPA ではなく GPA に IOVA を翻訳することをサポートする。
  • ハードウェア・パフォーマンス・モニター(HPM)。
  • ソフトウェアにサービスを要求するためのMSIおよびワイヤシグナル割り込み。
  • ソフトウェアがデバッグをサポートするためにアドレス変換を要求するためのレジスタ・インターフェース。
  • IOMMUがサポートする機能は、5.3節のcapabilitiesレジスタを使用して検出することができる。