![]() |
CPUの仮想化サポート技術は一体何をサポートしているのか--仮想化技術をひも解く(5) |
前回はサーバの仮想化技術について、その概要を説明した。その際にも触れたが、現状の仮想化ブームを後押ししているのはサーバの仮想化だ。そのサーバの仮想化を後押ししているのが、VMwareやXenといった仮想化を実現するソフトウェアの普及であり、IntelやAMDなどのプロセッサが提供するサーバ仮想化をサポートする技術の登場であろう。
プロセッサにもさまざまなものがあるが、LinuxやWindowsといった現在最も身近に普及しているOSの仮想サーバを実現するのであれば、いわゆるx86アーキテクチャをサポートするIntelとAMDのプロセッサ搭載マシンがプラットホームとなる。今回は、Intel、AMDが提供する仮想化サポート技術をひも解いてみたい。
一部のハードウェアを除き、これまでは物理的に1台のマシンでは1つのOSだけが動くようなアーキテクチャになっていた。そのため、1つのOSがすべてのハードウェアリソースを占有できたが、仮想化により複数のOSが1台で動くようになると、本来1つのOS用に用意されていたリソースを複数のOSで共有して利用しなければならない。
ストレージのようにゲストOS 1の領域、2の領域と分けられるリソースならば問題はないが、もともと1つのOS用に用意されたリソースには分離できないものもある。そのため、仮想サーバを実現しようとすると、仮想化ソフトウェアがゲストOSの要求に応じ、分離できないリソースを切り分けてゲストOSに渡す必要がある。
プロセッサによる仮想化サポート技術がない場合は、この切り分け処理をソフトウェア的に行わなければならない。そのためにゲストOSのソースコードを変更したり、ゲストOSからのハードウェアに対する命令を仮想化ソフトウェアでバイナリ変換する必要があった。OSのソースコードを変更するとなると、ソースコードが公開されている必要がある。また、OSパッチを適用する際には、その都度動作を検証する必要があるかもしれない。
当然ながら、複数のゲストOS間で頻繁にリソースの切り替えが発生する場合、ソフトウェアのバイナリ変換処理で仮想化すると仮想化ソフトウェアに大きな負荷が発生する。また、このゲストOSの命令を代理実行する実装はかなり複雑で、仮想化ソフトウェアを提供するベンダーは、システムの信頼性を確保するためにそれなりの時間と手間が必要だ。ゲストOSに対しソースコードの改変が必要となるのが、旧来のXenの仮想化実現方法だ。一方、ソフトウェアでバイナリ変換処理をするのが、VMwareのハイパーバイザーということになる。
このような仮想化の問題点を大幅に解決したのが、プロセッサの仮想化サポートの技術だ。簡単に言ってしまえば、従来1台につき1つのOSしか動かなかったプロセッサのアーキテクチャを、最初から複数のOSが動くように変えてしまうというものだ。
この仮想化のための拡張をIntelでは「Intel-VT(Virtualization Technology)」、AMDでは「AMD-V(Virtualization)」と呼んでいる。
「Intel-VT以前のCPUは複数のOSを原則的にサポートしておらず、これが仮想化実装における一番の問題だった。そのため、実現のアプローチ方法にもよるが、仮想化には何らかの制限があった。例えば、パフォーマンスが落ちたり、64ビットのゲストOSがインストールできなかったりといったことだ。ある意味、ソフトウェアだけで仮想化に対応することは、グレーゾーンだったとも言える」
インテル マーケティング本部デジタル・エンタープライズ・グループ サーバ・プラットフォーム・マーケティング部 テクノロジー・プロダクト・マーケティング・エンジニアの岩本成文氏は、プロセッサの仮想化サポート技術が存在しなかった時代のソフトウェアによる仮想化の実現は、正式なものとは言えなかったと説明する。これに対し、特にエンタープライズ領域では1つのマシンで複数のOSを動かすことが無視できない状況となり、Intelでは複数のOSを動かすアーキテクチャについて2000年初めから考え、新しいアーキテクチャとして定義した。
仮想化サポート技術を搭載したプロセッサは、1台のマシン上で複数のOSが動くことを前提としており、ゲストOSを効率的に動かすための新たな動作モードや仮想化を実現するための命令セットなどが追加されている。こうした技術で、OSが使用するメモリ空間などをそれぞれのゲストOS用に分割するほか、リソースの切り替えなどの制御をプロセッサ内部で実行し、性能を向上させている。
「AMD-Vでは、ゲストモードとホストモードを用意している。この2つを切り替えて仮想化を実現するが、この切り替えを高速化するためのメモリ管理機能も提供している。また、ゲストOSは通常、(自分がマシン上で唯一のOSだと思い込んでいるため)プロセッサに対しそれぞれに特権命令を発する。ソフトウェアの仮想化では、それを制御するためゲストOSを改変していたが、プロセッサに仮想化サポート機能を搭載すればゲストOSの特権命令をプロセッサが判断できるのでゲストOSの改変が必要なくなる。これは大きなメリットだ」
日本AMD グローバルソリューションチーム マネージャーの岡野浩史氏は、プロセッサの仮想化サポート技術のメリットをこのように説明する。上記のようなメリットは、Intel、AMD両社で実装方法が異なり、幾分かの機能的、性能的な差はあるものの、双方ともに実現されているものだ。ただし当然ながら、これらのプロセッサが提供する仮想化サポート技術を、ハイパーバイザーなどの仮想化ソフトウェアが利用するようになっていなければ、メリットを享受することはできない。
IntelとAMDの仮想化サポート技術は、細かく見ればさまざまな違いがある。しかし、仮想サーバを利用するユーザーはあまりその違いを実感できないかもしれない。双方の実装で得意、不得意もあり、処理性能の違いも発生するが、仮想サーバで動かすアプリケーション処理の違いや、CPU以外のハードウェアの違いなどでも仮想サーバの処理性能が大きく変わる場合もあり、プロセッサの仮想化サポート技術の違いだけで性能差を議論してもあまり意味はないだろう。
両社の仮想化に対するソリューションの違いとして、AMDでは仮想化サポートの技術とセキュリティを1つにしている点を挙げられる。「Virtualization+Security」がAMD-Vだと言うのだ。
「AMDでは『Trinity』というコンセプトのもと、仮想化とセキュリティを1つのソリューションとしている。OS、ハイパーバイザー、プロセッサのそれぞれの領域でセキュリティを積み上げていく必要があると考えているためだ」
日本AMD マーケティング部 CPUプロダクトマーケティング部 部長代理の山野洋幸氏は、セキュリティも一緒に考えているのがAMDの特長だと説明する。これは、メモリコントローラをCPUに持つというアーキテクチャにより、メモリもCPUでセキュリティ管理できるためだ。
これに対しIntelでは、セキュリティと仮想化という2つの課題に対し、個別に取り組んでいる。セキュリティついては、CPUの周辺も含めてトータルで考えていくというのがIntelの立場だ。
AMDの仮想化に対する取り組みを見ると、2006年にAMD-Vを提供開始し、プロセッサによる仮想化支援技術で仮想化ソフトの複雑性を軽減、仮想化によるCPU処理の負荷を軽減した。そして、2007年には「ネステッド ページテーブル」という仮想化の性能向上技術を追加する。そして2008年以降に、デバイスの仮想化を実現すべく、I/Oの仮想化技術を提供していく。Intelも、細部は異なるが基本的には同様のロードマップが描かれ、今後Intel-VTの第2世代で仮想化環境でのさらなるパフォーマンス向上を実現し、次にI/Oの仮想化技術を提供する。I/Oの仮想化は、「AMD IOMMU」あるいは「Intel VT-d」と呼ばれる技術だ。
1つのOSが1つのマシンを占有しているならば、仮にネットワークの処理性能が不足しても高速なネットワークカードを追加することで容易に性能が向上できるだろう。ところが仮想サーバの場合には、この方法では限界となる場合がある。どんなに高速なデバイスカードを追加しても、ハイパーバイザーがいったん処理を仲立ちするためボトルネックとなってしまうのだ。これを各ゲストOSに対し、直接I/Oをマッピングすることで仮想化ソフトの負荷を軽減しようというのがI/Oの仮想化技術だ。
I/Oの仮想化技術は、パフォーマンスだけでなく、仮想化環境でのデバイスドライバの問題も解決できる可能性がある。従来のデバイスドライバが仮想化環境でそのまま使用できるようになるのだ。これが実現すると、従来は仮想化環境で利用できなかったデバイスが利用できるようになる。
また、仮想化に最適化されたデバイスそのものの開発も進みそうだ。今後は、各種デバイスも仮想化環境で利用されることを前提として開発されることになるのだ。I/Oボードが仮想化対応していれば、ボトルネックをボード側に持って行くことができ、I/Oボードを高速なものに交換して性能改善できる可能性は高い。このための、PCI Expressの拡張仕様の標準化も進められている。今後は、CPUだけでなくチップセットなどの周辺ハードウェアについても、仮想化が前提となっていくだろう。
そうなると「仮想化のシステムデザインをする専門エンジニアが必要になるだろう」とインテルの岩本氏は言う。XenやVMwareなど仮想化ソフトウェアのことを熟知し、ハードウェアの仮想化技術も身につけたエンジニアでなければ、適切な仮想サーバ環境が構築できないということだ。仮想化がさらに普及すると、技術者が勉強すべきことはまだまだ増えていきそうだ。
ZDNET Japanは、Ziff Davisからのライセンスに基づき株式会社4Xが運営しています。
ZDNET Japan is operated by 4X Corp under license from Ziff Davis.
Copyright © 2026 4X Corp, Inc. All rights reserved. No reproduction or republication without written permission.