前回紹介した「VT-x」と「VT-i」はCPUを仮想化する技術である。これに対して,「ダイレクトI/Oテクノロジー(VT-d)」は,I/Oを仮想化する技術だ。特に,チップ・セット,I/Oコントローラ,メモリー・コントローラの部分を担うのがVT-dである(図1)。以下では,このVT-dについて詳しく解説する。

図1●PCのプラットフォームにおけるVT-dの位置付け。チップ・セットに搭載され,各種I/Oデバイスを仮想化する。PCI ExpressデバイスがCPUを介さずにメイン・メモリーとの間でデータ転送を行う際に,適切にアドレスを変換するのもVT-dの役割である
図1●PCのプラットフォームにおけるVT-dの位置付け。チップ・セットに搭載され,各種I/Oデバイスを仮想化する。PCI ExpressデバイスがCPUを介さずにメイン・メモリーとの間でデータ転送を行う際に,適切にアドレスを変換するのもVT-dの役割である

3種類のI/O仮想化モデル

 I/Oの仮想化にはいくつかの手法がある。代表的な手法として,サービスVM(仮想マシン)モデル,Hypervisorモデル,パススルー・モデルの3つが挙げられる(図2)。

図2●3つの代表的なI/O仮想化モデル
図2●3つの代表的なI/O仮想化モデル

 サービスVMモデルでは,I/OアクセスはいったんすべてサービスVMに転送される。このサービスVMがI/Oリソースの管理,調停を行いながらゲストOSに対し仮想化されたI/Oを提供する。

 Hypervisorモデルでは,VMM(仮想マシン・モニター)がI/Oをエミュレートし,ゲストOSにI/Oを提供する。エミュレーションであるため,実際に搭載するI/Oデバイスの機能をすべて提供するのではなく,標準的な機能だけを提供することが多い。

 パススルー・モデルでは,VMMがI/Oデバイスを直接VMに割り当てる。つまり,ゲストOSごとに専用のSCSIカードやネットワーク・カードなどを用意し,それらを1つずつOSに割り当てるのである。仮想化のオーバーヘッドが少なく,コンパクトなVMMに仕上げることができるので,性能面では非常に有利だ。半面,デバイスを共有できないために利用する際のフレキシビリティが犠牲となる。

 今後PCIの標準化団体であるPCI-SIGでIOV仕様が標準化されれば,I/Oデバイス(PCI-Express拡張カード)がネイティブにI/Oの仮想化をサポートするようになり,デバイス自身の支援機能を利用したI/O共有が標準となっていくと思われる。このデバイスの支援機能によるI/O共有は,パススルー・モデルにおけるデバイス割り当ての拡張とも言えるモデルだ。I/Oデバイス自体がハードウエア・レベルで複数のI/O要求,複数のVMをサポートすることによってI/Oの共有を実現できるようになる(3ページ目の囲み記事「IOV――もう1つのI/O仮想化標準仕様」を参照)。

 VT-dは,この3つのモデル,さらに今後期待されるデバイスの支援機能を利用したI/O共有モデルのすべてをサポートできるように設計されている。