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