iommuとは?初心者でも分かる基礎ガイド:DMAと仮想化をやさしく解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
iommuとは?初心者でも分かる基礎ガイド:DMAと仮想化をやさしく解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


iommuとは?初心者でも分かる基礎ガイド

iommu とは Input-Output Memory Management Unit の略で、パソコンの中で周辺機器がメモリを安全に使えるように管理する仕組みです。普段は見えませんが、デバイスが直接メモリへアクセスする場面、つまり DMA アクセスの安全性と隔離を実現します。

DMA とは、デバイスが CPU を介さず直接メモリにデータを書き込んだり、読み取ったりする仕組みのことです。グラフィックカードやネットワークカード、ストレージなどは高速化のため DMA を使います。ところが DMA は正しく管理されないと、別のデータに触れてしまったり、OS の安全を崩す危険がありました。

ここが IOMMU の役割です。IOMMU はデバイスごとの DMA アクセスを仮想的に分離し、メモリのどの部分へアクセスできるかを制御します。これにより、他のプロセスのデータや OS のカーネル領域へ侵入することを防ぎます。

仮想化の世界では特に IOMMU の意味が大きくなります。仮想マシン(VM)を作るとき、外部デバイスを VM に直接割り当てたい場合があります。これを PCI パススルーと呼びますが、このとき IOMMU がデバイスの DMA を仮想マシンごとに切り替え・隔離してくれるのが重要です。

実装例としては VT-d(Intel の IOMMU 機能)や AMD-Vi(AMD の実装名)があります。Linux では VFIO というドライバ群を使って「ホスト側のデバイスを仮想マシンに安全に渡す」ことができます。VFIO は IOMMU の機能を前提として動くため、BIOS/UEFI の設定で IOMMU を有効にすることが必要になることが多いです。

BIOS や UEFI の設定を変えるときは、セキュリティとパフォーマンスのバランスを意識してください。IOMMU を有効にするとデバイスの安全性が上がりますが、設定やドライバの組み合わせ次第で一部のハードが正しく動作しなくなることがあります。設定を変える前には、使っているマザーボードのマニュアルや OS のドキュメントを参照すると安全です。

以下は IOMMU の要点をまとめた小さな表です。

<th>用語
説明
IOMMUDMA アクセスの安全な変換とメモリ保護を行う機構
VT-d / AMD-ViIOMMU の実装名。Intel/AMD の機能
VFIO仮想マシンへデバイスを割り当てる Linux のドライバ群
PCI パススルー仮想マシンに直接デバイスを割り当てる技術

最後に覚えておくべきことは IOMMU は万能薬ではなく、適切な設定と組み合わせが大事 という点です。使い方次第でセキュリティが高まりますが、動作問題の原因にもなり得ます。初心者の方は、まずは IOMMU を有効化して基本的な仮想化の仕組みを学び、徐々に PCI パススルーの設定を試してみると良いでしょう。


iommuの同意語

IOMMU
I/O Memory Management Unitの略。CPUと周辺機器が共用するメモリ空間のアドレス変換と保護を担当するハードウェア機能です。DMAによる直接的なメモリアクセスを安全に制御し、デバイスごとのアクセス権を設定します。
I/O Memory Management Unit
IOMMUの正式名称。IOデバイスのアドレス変換と保護を行う専用のハードウェアユニットです。
Input-Output Memory Management Unit
IOMMUの英語表現の別表記。意味は同じです。
IO-MMU
I/O Memory Management Unitの略称の一つ。IO-MMUと表記されることが多いです。
I/O MMU
I/O Memory Management Unitの別表記。表記揺れの一つで、同じ機能を指します。
入出力メモリ管理ユニット
IOMMUの日本語表記の直訳。入出力デバイスのメモリアクセスを管理・保護する装置です。

iommuの対義語・反対語

IOMMUなし
IOMMU機能が搭載されていない状態。デバイスのI/Oはメモリ保護やアドレス変換を受けず、直接的なアクセスになる可能性が高い。
IOMMU無効
システムにはIOMMU機能があるが設定で無効化されており、通常のメモリ保護・アドレス変換が適用されない状態。
DMAの直接アクセス
デバイスがIOMMUを介さずに直接メモリへアクセスすること。保護や変換が適用されず、リスクが高まる可能性がある。
アドレス変換なし
IOMMUによる仮想アドレスから物理アドレスへの変換が行われない状態。結果としてアドレスの正当性検証が行われにくい。
メモリ保護なし
デバイスのメモリアクセスを護る保護機構が機能していない状態。セキュリティリスクが高まる可能性がある。
ハードウェア保護なし
IOMMUのようなハードウェアによる保護機構が機能していない状態。
ソフトウェア保護のみ
保護をソフトウェア/OSレベルに依存し、ハードウェアのIOMMUによる保護が存在しない状態。
直接メモリアクセス
IOデバイスがCPU介在なしで直接メモリへアクセスする設計。境界が明確でない場合がある。
物理アドレスの直接使用
デバイスが仮想メモリ管理を介さず、物理アドレスを直接使用する状態。柔軟性と安全性が低下することがある。

iommuの共起語

DMAR
DMAリマッピング機能の略称。IOMMUの核となる機能で、デバイスがアクセスできるメモリ範囲を安全に変換・保護します。
VT-d
IntelのIOMMU技術。仮想マシンへデバイスを安全に割り当てるための仕組みです。
AMD-Vi
AMDのIOMMU機能。仮想化環境でのデバイス分離を実現します。
PCIパススルー
PCIeデバイスを仮想マシンに直接割り当てる方法。高速なI/Oが可能です。
VFIO
Linuxの仮想化デバイス割り当てフレームワーク。IOMMUを使いVMへデバイスを渡します。
IOVA
I/O仮想アドレス。IOMMUがデバイスとメモリ間で使う仮想的なアドレス空間です。
IOMMUグルーピング
デバイスをグループ分けして、他のデバイスと干渉を避ける設計思想。
割り込みリマッピング
割り込み通知を正しいVMへ渡すための変換・再割り当て機構。
割り込み MSI/MSI-X
デバイスが使う割り込み方式。IOMMUと組み合わせて安全に処理します。
DMAリマッピング
DMAのアドレス変換・保護を実現する機能。DMARの要素です。
IOメモリ管理ユニット
IOMMUの正式名称。I/Oデバイスのメモリ管理を担当します。
I/O仮想化
I/Oデバイスを仮想マシンごとに分離して扱う考え方です。
PCIeデバイス
PCI Express規格のデバイス。IOMMUはこのデバイスの保護と割り当てを管理します。
仮想マシン
VM。IOMMUはVM間のデバイス分離と保護を助けます。
KVM
Linux上の仮想化ソリューション。VFIOやIOMMUと組み合わせてデバイスパススルーを実現します。
QEMU
オープンソースの仮想化ソフト。IOMMUを使ったデバイスパススルーをサポートします。
SR-IOV
1つの物理デバイスを複数の仮想デバイスとして分割する技術。IOMMUと組み合わせてセキュリティを保ちます。
BIOS設定
IOMMUを有効にするにはBIOS/UEFIでVT-d/AMD-Viを有効化します。
intel_iommu
IntelのIOMMUを有効化するためのカーネルパラメータ(例:intel_iommu=on)。
amd_iommu
AMDのIOMMUを有効化するためのカーネルパラメータ(例:amd_iommu=on)。
iommu=on
Linux起動時にIOMMUを有効化する基本パラメータ。
iommu=pt
IOMMUを通さず直接割り当てる設定の一つ。デバイスのパススルー時に使われます。
GPUパススルー
GPUを仮想マシンに直接割り当てること。高性能なグラフィックスI/Oを実現します。
VGAパススルー
仮想マシンへGPUを割り当てるケースの一つ。画面出力をVMに直接渡します。
PCIデバイスのバインド/アンバインド
ホスト側でデバイスをVMに渡す前に、バインドやアンバインドを行います。

iommuの関連用語

IOMMU
入出力メモリ管理ユニット。デバイスが使うメモリのアドレスを安全に変換・管理し、DMAの隔離と仮想化を実現するハードウェア機構です。
DMAR
IntelのDMAリマッピング機能の正式名称。IOMMUを実装するテクノロジーで、デバイスのDMAアクセスを保護・変換します。
VT-d
IntelのIOMMU機能の呼称。Directed I/O Virtualization の略で、PCIeデバイスのI/Oを仮想マシンへ安全に割り当てる技術です。
AMD-Vi
AMDのIOMMU機能の名称。I/O仮想化を実現し、デバイスの DMA を安全に制御します。
IOVA(IO仮想アドレス)
デバイスが参照する IO 仮想アドレス空間。IOMMU がこのアドレスを実際の物理アドレス(PA)へ翻訳します。
PCIパススルー
仮想マシンへ物理 PCIe デバイスを直接割り当てること。IOMMUが安全な分離と動作を確保します。
VFIO
Linux の仮想 I/O フレームワーク。IOMMU を使ってデバイスを VM に安全に割り当てるためのドライバ群です。
DMA
Direct Memory Access。デバイスが CPU を介さず直接主記憶へ読み書きできる仕組みで、高速化と帯域の有効活用を実現します。
DMAリマッピング
IOMMU を用いてデバイスの DMA アドレスを別の物理メモリへ安全に再マッピングします。
IOMMUグループ
同じ IOMMU グループに属する複数のデバイスは、同時に分離して使うことが難しくなる等の制約。VM への割り当て判断材料になります。
BIOS/UEFIでIOMMUを有効化
IOMMU を使うには BIOS/UEFI 設定で有効化する必要があります。起動時に対応デバイスを IOMMU で管理可能にします。
IOMMUページテーブル
IOVA と実物理アドレスの対応表を管理するテーブル。IO アドレスの翻訳に使われます。
IOMMU障害
デバイスが許可されていないアドレスへ DMA しようとした場合等に IOMMU がエラーを返す現象。ログに IOMMU fault と出ることがあります。
SR-IOV
PCIe デバイスを複数の仮想関数に分割して、複数の VM へ同時割り当てを可能にする技術。IOMMU と組み合わせて使用します。
SMMU
ARM 系の IOMMU。System MMU の略で、ARM デバイスの I/O 仮想化を実現します。
VFIO-PCI
VFIO の PCI デバイスサポート。PCI デバイスを仮想マシンへ安全に割り当てるためのモジュールです。
PCIeデバイスの隔離
IOMMU によりデバイスが他のメモリへ不正アクセスできないようにデバイスを分離します。
直接割り当て
Direct Assignment の日本語表現。VM へデバイスを“直接”割り当てることを指します。

iommuのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
15082viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2459viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1098viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1076viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
963viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
924viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
887viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
868viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
817viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
815viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
743viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
726viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
628viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
627viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
611viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
565viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
551viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
523viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
515viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
489viws

新着記事

インターネット・コンピュータの関連記事