Input/Output Memory Management Unit

I/Oメモリ管理ユニット (IOMMU) とメモリ管理ユニット (MMU)

Input/Output Memory Management Unit (IOMMU) とはDMA可能なI/Oバスと主記憶装置を接続するメモリ管理ユニット (MMU) である。MMUがCPUに見える仮想アドレスを物理アドレスに変換するように、IOMMUは周辺機器から見える仮想アドレス(デバイスアドレスとかI/Oアドレスと呼ぶ)を物理アドレスに変換する。周辺機器の誤動作からメモリを守るため、メモリ保護機能も提供する。

実例と呼称

IOMMUの例として、AGPやPCI Expressのグラフィックスカードで使われるGraphics Address Remapping Table (GART) がある。

AMDは、HyperTransportアーキテクチャでのIOMMU技術の仕様を公表している。インテルはIOMMUの仕様をVirtualization Technology for Directed I/O (VT-d) として公表している。サン・マイクロシステムズのIOMMUはSolaris Developer Connection の Device Virtual Memory Access (DVMA) として公表されている。IBMのIOMMUはTranslation Control Entry (TCE) と称している文書がある。PCI-SIGでは関連する部分をI/O Virtualization (IOV) とAddress Translation Services (ATS) と呼んでいる。

x86のIOMMUについては、x86仮想化#チップセットも参照のこと。

利点

物理アドレスを直接使う場合と比較したIOMMUの利点は以下の通りである。

IOMMUはCPUがデバイスと(DMAではなく)ポートマップドI/Oで通信する場合には使われない。

欠点

IOMMUを使う場合の欠点として、次の事柄が指摘されている。

IOMMUと仮想化の関係

OSがXenなどの仮想マシン上で動作する場合、各OSはアクセスしている物理アドレスを知らない。そのため、周辺機器にDMAを指示しようとしても、直接的に物理アドレスを指定することができない。実際には、仮想マシンがI/O操作に対して変換を施しており、I/O操作に遅延が生じる原因となっている。

IOMMUは、ゲストOSと周辺機器のアクセスするアドレスのマッピングをそろえることで、これを解決できる。

脚注

  1. ↑ “AMD I/O Virtualization Technology (IOMMU) Specification Revision 1.0” (PDF) (英語). 2006年2月1日閲覧。
  2. ↑ “Mainstreaming Server Virtualization: The Intel Approach” (PDF) (英語). 2006年3月1日閲覧。
  3. ↑ “DVMA Resources and IOMMU Translations” (英語). 2007年4月30日閲覧。
  4. ↑ “Logical Partition Security in the IBM eServer pSeries 690” (英語). 2007年4月30日閲覧。
  5. ↑ “I/O Virtualization specifications” (英語). 2007年5月1日閲覧。
  6. ↑ Muli Ben-Yehuda, Jimi Xenidis, Michal Ostrowski (2007年6月27日). “Price of Safety: Evaluating IOMMU Performance” (PDF). Proceedings of the Linux Symposium 2007. Ottawa, Ontario, Canada: IBM Research. 2007年7月2日閲覧.{{cite conference}}: CS1メンテナンス: 複数の名前/author (カテゴリ)
  7. ↑ “Xen FAQ: In DomU, how can I use 3D graphics” (英語). 2006年12月12日閲覧。

参考文献

関連項目