AMDとIntelのハードウェア仮想化技術で何が実現されるのか

 米AMDと米Intelが提供し始めたハードウェア仮想化技術は、ブレイクスルーとまではいかないが、ブレイクスルーの端緒であることは明らかだ。AMDの「SVM(Secure Virtual Machine)」と、Intelの「VT(Virtualization Technology)」は、CPU設計上の前提の著しい変化と、その結果としてのアーキテクチャの大幅な変更を意味している。

 AMDとIntelは同じ問題の解決に取り組み、それぞれ独自ではあるが結果として類似した解決策にたどり着いた。解決に取り組んだ問題とは、バックワードCPUアーキテクチャにおけるソフトウェア仮想化によって生じる多大なオーバーヘッドを軽減することであり、その解決策とは、まさにCPU自身に“力仕事をさせる”ことである。

 両プロセッサ・メーカーが行った最初のステップは、システムの状態に変更を加えるリクエストを途中でインターセプトしてリダイレクトできる機能を、CPUに持たせることだった。

 単一マシン単一OSのモデルでは、OSがCPU、チップセット、周辺機器の状態をノーチェックで変更できるようになっている。これは、効率的な仮想化を行うためには明らかに障害であり、ゲストOSのインスタンスは、そのシステム設定の変更が維持されなければクラッシュしてしまう。仮想環境下において、1オーナー・システムの見掛けを維持するのは容易なことではない。

 必要とされる修正は、どのOSに対しても、他のOSとのコンピュータの共用を妨げるようなシステム状態の変更をできないようにすることだ。

 ソフトウェアは特権命令の実行によってシステム状態を変更するので、仮想化における最も面倒な仕事は、そうした特権命令を識別してリダイレクトすることだ。だからこそ、AMDもIntelもその効率化に最初に取り組むことにしたのである。

 SVMまたはVT上でOSが実行されると、特権命令の処理すべては完了前にインターセプトされ、ハイパーバイザ(スーパーバイザのスーパーバイザ)によってセットアップされた入口点に送られる。この場合、ハイパーバイザだけが、システム状態の変更を実施および許可する権限を持つ。

 例えば、ゲストからの仮想メモリ・セグメントのマッピング・リクエストをインターセプトした場合、ハイパーバイザのコードは、そのゲスト用に前もって割り振られていたメモリ・セグメントを渡すことで、そのリクエストに対応する。

 仮想化されたサーバ上では、このような特権処理は1秒間に数百〜数千回生じるので、ソフトウェアで処理することは予想以上に厄介だ。

 IntelとAMDは、特権命令インターセプトを自社のCPUチップに組み込み、拡張されたシステムの状態(いうなれば、OSインスタンスのコンテキスト)の保存とリストアを新しい命令として投入した。VTとSVMの機能はそれだけではないが、インターセプトとコンテキストは何といっても重要だ。

 AMDのAMD64アーキテクチャ、特にCPUのオンボード・メモリ・コントローラはかなり有利である。Intelのメモリ・コントローラはCPUに対して外付けであるため、VTを認識しない。AMD64のオンボード・メモリ・コントローラはアップデートが行われ、ゲスト・インスタンスそれぞれに独自のメモリ・アドレス変換テーブルを提供するネステッド・ページングが行えるようになっている。Intelのアーキテクチャでは、ゲストのメモリ・アドレス変換はソフトウェアで行わなければならない。

 両社の実装にはそのほかにも違いがあるが、AMDの実装のほうが充実しているように見える。しかしながら、当初は、ハードウェア・アクセラレーションに対応する仮想化ソリューションは、それら2つの実装の共通部分をターゲットにするため、それによる恩恵はささやかなものにとどまると見られる。ただ、しばらくすれば、AMD64アーキテクチャの強化点を活用できるようにコーディングされた製品も登場してくる見通しだ。

(トム・イェイガー/InfoWorld 米国版)

米AMD
http://www.amd.com/

米Intel
http://www.intel.com/

提供:Computerworld.jp