AMDは、Sempronを除く、デスクトップ、モバイル、サーバー向けの全Rev.F(リビジョンF)CPUに、新たに仮想化支援機能「AMD Virtualization(AMD-V)」を搭載した。今回はその概要を解説する。仮想化とは、複数の異なるOSを1つの物理的システムで動かす技術のことだ。元々はメインフレームで培われた技術だが、近年、x86サーバーでも実用段階に入り、PCの世界にも浸透しつつある。

ソフトのみの仮想化には限界、複雑でOS改変が必要なことも

 現在のところは、VMwareの「VMwareシリーズ」などのソフトウエアによる仮想化が主流となっている。今後はCPUやチップセットなどのハードウエアが仮想化ソフトを支援し、信頼性や性能をより高めたシステムを構築できる時代になる。AMDは、AMD-V搭載のCPUをその先駆けとなる製品であると位置付けている。

 ソフトウエアで実現する仮想化には、いくつか課題がある。まず1つ目が、仮想化ソフト(VMM:Virtual Machine Monitorまたはハイパーバイザー、ホストなどと呼ばれる)が複雑な点だ。仮想化ソフトは、ゲストOSに対して完全なハードウエアの「幻影」(仮想化環境)を作り出す。しかし、その処理は非常に高度・複雑であり、システムのパフォーマンスや安定性、信頼性に大きな影響を与える。

 仮想化ソフトは、ゲストとなるOSが仮想化環境で正しく動作するよう改変(パッチ)を行う。あらかじめゲストOSにパッチを適用しておく方法、リアルタイムにパッチを当てる方法があるが、コード(ソフトウエアの設計図)が分からないOSには対応できない。パッチの適用で、ゲストOSの信頼性、保守性を損なう可能性もある。

 CPUによる仮想化支援機能では、この2つの課題を解決する。仮想化ソフトの複雑性を解消するため、AMD-Vでは仮想化ソフトで使う特殊な命令セットを追加した。下の表1はそのごく一部だ。これらの命令は、今まで仮想化ソフトが行っていた複雑な処理をCPUで一括処理する。

 例えば、vmrun命令は、ホストからゲストOSを起動したり、中断状態にあるゲストOSの復帰処理を行う。具体的には、ホストのレジスターなどの情報を保存(セーブ)、指定ゲストOSを管理するデータブロックである「VMCB(Virtual Machine Control Block)」から情報を読み出し(ロード)、指定ゲストOSを起動(または中断点からの復帰)する。命令セットではないが、「#VMEXIT」という、ゲストOSからホストに処理を戻す機能もCPUが肩代わりする。

 実は、Intelの仮想化技術とAMD-Vは、仮想化用の命令セットが異なる。これは、両社がそれぞれ独自に開発したためだ。ただ、仮想化用の命令セットは、仮想化ソフトでのみ使われるし、仮想化技術自体は、既に大元が確立している。外部から見た動作に違いはなく、命令セットの違いは、仮想化ソフトで吸収できるレベルにある。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら