CPU
上級
IOMMU (Input/Output Memory Management Unit)(アイオーエムエムユー)
I/Oデバイス用MMU。DMAアドレス変換とアクセス制御を提供。Intel VT-d / AMD-Vi / ARM SMMU がCPU実装。
0 回閲覧
0 いいね
2026/5/15 更新
関連タグ
CPU
仮想化
DMA
PCIe
概要
IOMMU (Input/Output Memory Management Unit) はI/Oデバイス専用のMMU。CPUのMMUがCPU命令↔物理メモリのアドレス変換を担うのに対し、IOMMUはPCIeデバイスがDMA経由で発行する物理アドレスを別のアドレス空間にリマップする。仮想化におけるデバイスパススルー / SR-IOV / Thunderbolt セキュリティ等の基盤技術。
主要実装
- Intel VT-d (Virtualization Technology for Directed I/O): Nehalem世代 (2008) 以降
- AMD-Vi (AMD I/O Virtualization Technology): Barcelona (2007) 以降
- ARM SMMU (System Memory Management Unit): SMMUv1/v2/v3
- POWER PHB (PCIe Host Bridge)
主な機能
| 機能 | 内容 | 利用例 |
|---|---|---|
| DMA remapping | ゲスト物理→ホスト物理 変換 | VFIO passthrough |
| Interrupt remapping | MSI/MSI-X 割込のVM振分 | KVM IRQ routing |
| ATS | デバイス側TLBキャッシュ | PCIe ATS 1.1 |
| PRI | Page Request Interface | SVA (Shared Virtual Addressing) |
| デバイス分離 | 不正DMA防止 | Thunderbolt 3+ セキュリティ |
IOMMUグループ
PCIeトポロジ上で分離不可能な単位。同じグループ内のデバイスは一括でVMへ割当必要。ACS (Access Control Services) で細分化可能。
関連用語との違い
- vs MMU: MMUはCPU命令アドレス、IOMMUはI/Oデバイス側のDMAアドレス
- vs VT-x / AMD-V: VT-x/AMD-VはCPU仮想化、VT-d/AMD-ViはI/O仮想化
FAQ
Q1: 自分のCPUがIOMMU対応か確認するには?
A: dmesg | grep -i iommu または /sys/kernel/iommu_groups/ 配下にディレクトリがあるか確認。
Q2: BIOS設定で有効化必要? A: 必要。Intel板「VT-d」、AMD板「IOMMU」または「SVM Mode」項目を Enable。
Q3: 性能ペナルティは? A: 通常時はほぼゼロ (キャッシュヒット時)。DMA 1次キャッシュミス時のみ数十nsのオーバーヘッド。