図1●Intel Virtualization Technologyのロードマップ<br>CPUの仮想化,チップセットに実装するプラットフォームとしてのI/Oデバイスの仮想化,I/Oデバイスの仮想化,の3つの方向性がある。
図1●Intel Virtualization Technologyのロードマップ<br>CPUの仮想化,チップセットに実装するプラットフォームとしてのI/Oデバイスの仮想化,I/Oデバイスの仮想化,の3つの方向性がある。
[画像のクリックで拡大表示]

 米Intelは開発者向け会議「IDF(Intel Developer Forum)」で,仮想化技術「Intel Virtualization Technology(VT)」の内容と今後のロードマップについて語った。「VT-x」と呼ぶCPUの仮想化技術を実装したPentium 4が既に出荷済みだが,今後は「VT-d」と呼ぶI/Oの仮想化技術を実装したチップセットの出荷が2006年内に予定されており,ハードウエアによる仮想化の対応が進む(図1[拡大表示])。

 仮想化技術によって1台の物理的なコンピュータの上で動作する複数の仮想マシンは,当然のことながら1つのハードウエア・リソースを共有することになる。だが,各仮想マシンは,自分だけがハードウエア・リソースを利用しているつもりで動作している。そのため,VMwareやVirtual Server,Xenといった現在のx86向け仮想マシン・ソフトは,物理的なハードウエア・リソースを複数の仮想マシンで共有できるよう,CPUに関してはバイナリ・トランスレーション(命令の動的変換)やパラバーチャライゼーション(疑似仮想化)といった手法を使い,I/Oデバイスに関しては,エミュレーションや割り込みの仮想化,DMAのリマップなどの手法によって,複数の仮想マシン間のハードウエア・アクセスを調停している。

 ただ,バイナリ・トランスレーションを利用すると,多くのOSをそのまま仮想マシン上で動作させられるものの,処理に時間がかかるため仮想マシン上の処理性能が悪くなる。一方のパラバーチャライゼーションならば,バイナリ・トランスレーションよりも処理性能はよくなるものの,仮想マシン上で動かすためにOSをあらかじめ修正しておく必要がある。オープン・ソースのOSならば比較的対応しやすいが,Windowsのような商用OSの場合は,対応が難しい。

 このように,現在のx86プロセッサ向け仮想マシン・ソフトには,実行性能や実行環境の点でいくつかの課題がある。Intelの仮想化技術は,これらの課題を解決しようとする技術である。

 既に一部のPentium 4に実装されているVT-x(VT for x86)は,権限が小さい「VMX non-root」と,権限の大きい「VMX root」の,2つの新しい動作モードを備えている。VMX non-rootは仮想マシン上で動作する「ゲストOS」のための動作モード,VMX rootは,複数の仮想マシンを管理する「仮想マシン・モニタ(VMM)」のための動作モードである。

 VTを利用して仮想マシンを動かしている場合,仮想マシン上でI/Oアクセスなどの特権命令が実行されると,VMX rootモードに移行し,VMMに制御が強制的に移る。このとき,「仮想マシン制御構造体(VM Control Structure)」と呼ぶデータ構造によって,VMMはどの仮想マシンがどのような処理をしようとしたか(どのハードウエア・リソースにアクセスしようとしたか)を取得できるようになっている。

 このような仕組みで,これまで仮想マシン・ソフトが行っていたバイナリ・トランスレーションや,パラバーチャライゼーション方式の仮想マシンで動作させるために行っていたOSの修正が不要になり,仮想マシン・ソフトが開発しやすくなった。

 一方,メモリー・アクセスに関しては,複数の仮想マシンが実機の物理メモリーを共有する。各仮想マシン上のOSは,それがアクセスしているアドレスが物理アドレスであるものとして動作しているので,仮想マシン・ソフトは,仮想マシン間でメモリー領域を保護する必要があり,その管理テーブルを備えている。つまり,x86プロセッサは,アプリケーションが扱う仮想アドレスを物理アドレスに変換するのに3段階の変換を行っているが,さらにもう一段の変換を要するわけだ。この処理は,現在の仮想マシン・ソフトが自前で行っており,そのために多くのメモリー領域を必要とし,システム全体の処理性能を落とす原因にもなっている。Intelは,仮想化技術の1要素として,仮想マシン上の物理アドレスを実機の物理アドレスに変換するための「拡張ページ・テーブル(EPT)」機能も実装する予定だ。この機能が実装されると,アドレス変換のオーバーヘッドがなくなり,仮想マシンが今よりも高速に動作するようになるだろう。

 さらに,I/Oデバイスの仮想化技術「VT-d(VT for Directed I/O)」がチップセットに実装されると,現在の仮想マシンがエミュレートによって実現されている周辺機器の仮想化も,ハードウエアによって可能になり,システム全体の処理性能がより向上するだろう。VT-dは,ノース・ブリッジに実装され,I/Oの仮想化の基本的なプラットフォームとしての役割を担う。

 例えばDMAについての具体的な仕組みは次の通りだ。

 DMA(Direct Memory Access)とは,周辺機器からのデータを,CPUを介さずに,直接メモリー領域に転送する仕組みである。仮想マシン上で利用しているデバイスからDMAによってデータを転送しようとすると,DMAリクエストによって指定された物理アドレスは,実際には実機の物理アドレスではないので,そのままでは誤ったメモリー領域にデータを転送してしまうことになる。

 VT-dでは,DMAリクエストがあると,DMA再割り当てエンジン(DMA Remapping Engine)が「デバイス割り当て構造体(Device Assignment Structure)」を参照し,「アドレス変換構造体(Address Translation Structure)」を取得する。このようにしてDMAアドレスを変換する。さらに,VT-d対応システムでは,I/Oデバイスを各仮想マシンに直接割り当てられるようになる。

 ただし,同時に動作している複数の仮想マシンから,それぞれ独立してアクセスできるようになるのは,PCI Express対応機器のみになりそうだ。そのためにPCI Express向けに,現在新しいプロトコルが定義される予定だ。これは,PCIの標準化団体であるPCI-SIGによって,現在策定中である。