今知っておきたい仮想化時代のCPU技術

2010年7月29日(木)
中田 久史

仮想化とミッション・クリティカル

昨今「クラウド」というキーワードをいろいろなところで耳にする。もともと「サーバー」は各企業のサーバールームにあって、その企業専用のデータベース等に使用されるのが一般的であった。無論今でもこういった用途で使われているところは多いと思うが、ご存じの通り携帯電話を始めとする、さまざまなモバイル形態の発達とそれに伴うネットワーク網の急速な発達によって、サーバーにも新しい役割が与えられてきている。

大量のサーバーを集約したデータセンターを構築し、ネットワークを通じてさまざまなサービスを提供する業態が発生し、ユーザーから見るとサービスの提供元はネットワークの向こうに存在しているが、それがどういった経路でどこに存在しているのかは意識していない。まさに相手は「雲の中」に存在しているのだ。データセンターはさまざまな制限、例えば限られたサーバーの設置面積、電力量等の中で、可能な限り利用効率を上げて利益を最大化することが求められる。そこで期待されるのが、仮想化技術の活用である。

一方、「ミッション・クリティカル」というキーワードで語られるサーバー用途も存在する。サーバーは非常に複雑で繊細な電子機器なので、長時間に亘って連続稼働しているとさまざまな要因によって障害が発生することがあり得る。しかしこういった障害発生が許されない場合がある。例えば金融業や通信業のように、サーバーの障害発生が非常に深刻な影響を与えかねないケースだ。こういった用途では、障害発生をできる限り避ける仕掛けが必要になる。

サーバー仮想化時代のCPU、チップセット

「仮想化」とは、複数のオペレーティング・システムをひとつのサーバー・プラットフォーム上で動作させる技術である。サーバーを「仮想化」すると、おのおののオペレーティング・システムはあたかも自分専用のサーバー上で動作しているように振る舞えるが、実際には自分以外の複数のオペレーティング・システムも同一サーバーを使用しており、これは動作しているオペレーティング・システムの数だけサーバーが動作しているのと同じことになる。

つまり、その分サーバー・ハードウエアを削減することが可能になるので、データ・センターにおける機材導入コスト、電力、冷却などを含む運用コストの削減を行うことが可能になる。しかしそこには当然、通常の「仮想化」していないサーバーにはない特殊な仕組みが必要で、新たに仮想マシン・モニター(VMM)と称するソフトウエア・レイヤーが必要になる。

VMMはハードウエア・リソースを管理し、複数のオペレーティング・システム間の調停を行う。CPUの性能が劇的に向上したことによって、こういった仕組みで仮想化を行うことが可能になってきたが、VMMの処理をすべてソフトウエアで実行するには処理が複雑すぎて性能に限界がある。

インテルのバーチャライゼーション・テクノロジー(インテルVT)は、これに対する解である。仮想化の複雑な処理の一部をCPUに実装したハードウエアにより高速処理し、VMMの不足している部分を補う。以下に説明するVT-x、VT-dはバーチャライゼーション・テクノロジーの具体的な実現方法である。

図1:仮想マシンモニター(VMM)はサーバー仮想化の要となるソフトウェア・アプリケーション
(クリックで拡大)

VT-x

インテルVTには、いくつかの種類がある。まず、VT-xは、プロセッサーに実装されているバーチャライゼーション・テクノロジーである。

CPUは安全性を高めるために特権レベル(リング0~3)というものを規定している。リング0が最も高く、システムに大きな影響を与える特権命令やクリティカルなデータへのアクセスが許される。

仮想化環境ではVMMがその特性上、リング0で動作する必要があるが、同時にOSもリング0で動作することを前提にしており、同一特権レベルでVMMとOSを共存させる必要がある。VMMとOSを同時にリング0で動作させることを考えた場合、特権命令をはじめとするさまざまなアクセスの競合が発生するので、VMMとOSに特殊な仕掛けが必要になり、これはパフォーマンスの低下につながる。

そこでインテルではここにVMMのための特殊なモード(VMX rootとVMX non-root)を設け、VMMとOSに必要だった複雑な処理を軽減している。またリング0における動作をハードウエアで管理するので、ソフトウエアによる攻撃に対するセキュリティーをより強化にできる利点もある。

さらに、インテルのVT-xはこの技術を軸にして、プロセッサーの世代と共に利便性、パフォーマンスの向上を図ってきている。

図2:VT-xの仕組み(クリックで拡大)

VT-d

VT-xがプロセッサーに実装されているバーチャライゼーション・テクノロジーであるのに対して、VT-dはI/O側に実装されている技術である。システム上のI/Oは仮想マシン(VM)が共有する必要がある。従ってI/O処理を高速化するには、従来はVMやゲストに特殊なドライバが必要だったが、このハードウエア・リソースのリマッピングをハードウエアで行うのがVT-dである。

各VMが使用するアドレス空間は実際のシステムの物理アドレス空間とは違う。従ってI/OデバイスがDMAを行う場合もVM毎に異なるアドレス空間に対して実行する必要がある。このアドレスのリマッピングをハードウエアで行うことにより、特殊なドライバではなく通常のドライバが使用できるようになり、その分パフォーマンスを改善することができ、ハードウエアレベルでリソースを管理することによって信頼性向上に寄与している。

図3:VT-dの仕組み(クリックで拡大)
インテル株式会社

インテル技術本部。サーバー、ワークステーションのフィールド・アプリケーション・エンジニアとして日本のサーバー・メーカーのサポート業務を経て、現在はインテルXeonプロセッサーのアプリケーション・スペシャリストとしてフィールド・アプリケーション・エンジニアのバックエンド・サポート業務に従事している。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています