Acer Chromebook GRID

グラフィックのクラウド処理と仮想化を考える

  • このエントリーをはてなブックマークに追加

by [2014年10月01日]

パソコン用GPUメーカーとしてはAMDと並ぶ最大手のNVIDIA。

最近はすっかりスーパーコンピューター用GPUであるTeslaシリーズやワークステーション向けGPUであるQuadroシリーズなどの製造販売に軸足を移してしまっていますが、同社はGeForce GTX TITAN Zを筆頭とするゲーマー向けハイエンドGPUカードや携帯用ゲーム機であるSHIELDなど、個人向けゲーミング製品も忘れず研究開発と製造を続けています。

そんな同社が近年研究を続けている分野の一つに、GPU機能の仮想化があります。

要するにGPUレベルから仮想化することで、GPUが提供する演算や描画の機能をクラウド環境でも利用できるようにし、データセンターなどに設置された高性能GPU搭載のサーバ上で一括して仮想化サービスを処理させることで、比較的低スペックのGPUしか持たない端末でも高性能GPUの恩恵を受けられるようにしよう、というものです。

このアイデアを実現させるには、仮想化の技術をもったソフトハウスと、そうした仮想化サービスの提供を必要とする端末用OSのメーカーとの協力が必要なのですが、先日NVIDIAが、仮想化技術ではトップメーカーとして知られるVMWareとGoogleとの協業により、Chromebookで動作する仮想デスクトップ上でクラウド処理による「リッチな」グラフィック環境の実現を図る技術の開発構想を発表しました。

すべてをWebベースで処理するChrome OSとそれを搭載するChromebookでは、元々低価格路線を基調としていたこともあって搭載GPUの性能が結構貧弱で、いかにHTML5環境といえどリッチでハイパフォーマンスなグラフィック処理というのはいろいろハードルの高い問題だったのですが、それをサーバ側で仮想マシンを走らせてGPU処理も含めて一括して実行させることで解決してしまおうというのです。

今回はこうしたグラフィック技術の仮想化によるクラウド処理について考えてみたいと思います。

そもそもは機密保持の手段だった

実のところ、GPU仮想化が真剣に検討されるようになった最大の原因、あるいは積極的な動機となったのは、法人などでの機密保持とソフトウェアのライセンス管理の問題でした。

従来、業務でGPUの機能が最も必要となるアプリケーションソフトの筆頭であるCADソフトを動作させるには、相応の性能のCPUとGPUを搭載したグラフィック・ワークステーションと呼ばれる高性能なマシンが利用されるのが一般的でした。

しかし、こうしたマシンを必要に応じて各部署に導入し、それぞれに高価なCADアプリケーションソフトなどをインストールするとなると、ソフトウェアのライセンス管理やマシンの導入にかなりのコストがかかりますし、それらの機器の管理も、各部署個別に対応する必要があります。

さらに、最近ではそうした各部署のワークステーション上でのセキュリティ対策の甘さに由来する機密情報の漏洩事件も多発しており、オフィススイート製品を扱う一般的なパソコンと同様にこうしたワークステーションのアプリもサーバ上に構築された仮想デスクトップ上で快適に、そして確実に機密漏洩を防げる形で扱えるようにしてほしい、ライセンス管理やソフトウェアのバージョン管理を一括して簡単に行えるようにしてほしい、という要望が増えてきていたのです。

ゲームも仮想化が求められるようになってきた

一方、機密保持やライセンス管理の問題からワークステーションのクラウドサービスによる仮想マシン環境の提供が求められるようになったのと前後して、ゲームでもクラウドでの高度なGPU機能の仮想化が求められるようになってきました。

サーバとWebベースのクライアントを組み合わせて動作させるタイプのネットワークゲームは、各ユーザーの用いる端末が比較的低性能なハードウェアであっても動作することで普及が進んだ側面があります。

そうしたゲームで「リッチな3Dグラフィック」を実現するには、各端末に搭載のGPU性能を底上げして個々に描画処理を行うか、さもなくばサーバでGPUでの処理を肩代わりすることで、つまりクラウドでグラフィック処理の重い部分を代行させ、その処理結果のみを端末に送信するか、のいずれかしか事実上選択肢がなく、さらに前者の手法はバッテリー駆動される端末の場合、概ね連続プレイ可能時間の短縮を意味していたため、可能であれば後者が望ましい、ということになったのです。

PlayStation Now公式サイト
北米で現在ベータテスト中の、PlayStation 3およびPlayStation 2向けの古いゲームタイトルを提供するクラウドゲーミングサービス。PlayStation 4で廃止になった、従来機種用ソフトウェアの互換機能を代替する役割を担うが、今後ソニー製以外のスマートフォンやタブレットPCなど各種デバイスでも利用できるよう予定されている。

またゲーム、特に家庭用ゲーム機用ゲームソフトでは、対応するハードウェアごとのソフトウェア互換性の低さから、古い機種向けのソフトが新機種で動作しない、という状況が一部の例外を別にすれば長らく常態化していました。

しかし、旧世代のゲーム機用コンテンツを(ハードウェア的にはそのコンテンツが動作するようにできていない)最新ゲーム機でも遊びたいという需要はどの機種でも大きく、特にこれまで専用ソフトについて一定の上位互換性を保ってきたソニーのPlayStationシリーズの最新作、PlayStation 4ではCPUアーキテクチャから完全に変更されてPlayStation 3までとのソフトウェア互換性が一切排除されてしまったことから、これまでと同様に古い機種向けのゲームコンテンツをこの機種で遊べるようにするため、別の手段を講じる必要に迫られていました。

その「別の手段」としてソニーなどが打った対策が、クラウドサービスによる仮想的な旧機種向けコンテンツ動作環境を提供する技術の導入だったのです。

仮想化で最大の障害となったGPU

しかし、こうした仮想化によるクラウド処理を求める声に応えるには、ワークステーションでもゲーム機でも、いくつかの問題がありました。

ターゲットとなる機種のハードウェア仕様が極端に限られていて決め打ちで処理のできる(=ソフトウェア的に簡単な構造・処理で済む)ゲーム機ではソニーの「PlayStation Now」のように既にベータ版の提供が行われているか、その開始が予告されています。

しかし、そもそも端末となる機種の性能すら定かでは無い、より広範な形での仮想デスクトップのクラウドサービス、特にGPU機能を多用するようなワークステーション向けサービスの実用化には、そもそもその前提条件の段階で様々な問題がありました。

まず、仮想デスクトップを扱う仮想マシンそのものに重大な問題がありました。

Windows 7で古いソフトウェアを動作させるために搭載されているXPモードのフルセット版にあたる、各パソコン上でスタンドアローン動作するPC/AT互換機エミュレータ(仮想マシン)であるVirtual PC 2007などを利用したことのある方ならば恐らくご存じのことと思いますが、仮想マシンで利用できるグラフィック機能は、その仮想マシンの動作している「リアル」のマシンに備わっているGPUの機能と比較して著しく制限され、またパフォーマンスも非常に低いのが一般的です。

具体的にいえば、XPモードおよびVirtual PC 2007に搭載されている仮想マシンで利用できるグラフィック機能は、何と1995年当時のWindowsパソコンで、それも低価格の機種に搭載されて安物VGA互換グラフィックコントローラの代名詞となっていたS3社のViRGEシリーズというチップを模したものとなっています。

つまり、Virtual PC 2007やXPモードを利用する限り、実際にそのソフトが動作するマシンにどれほど高性能なGPUが積まれていようともその機能を十全に利用できず、Windows 95の現役当時に「安物」あるいは「ないよりはマシ」などと散々な評価だったグラフィックコントローラ並の低レベルな描画機能しか利用できない(※ただし、これにはVirtual PCの基本設計が古いまま遂に改良されなかった、という事情もありますが、現在のWindows 8.1などで提供されている仮想化技術であるHyper‑Vでも仮想マシンで提供されるグラフィック機能の貧弱さは変わっていません)のです。要するに、ワークステーションで求められるような高度なGPU機能の利用など、こうした仮想マシンでは望むべくもないのです。

VMWare Player上でWindows XP Professionalを動作させ、独自の仮想グラフィックデバイスであるVMWare SVGA IIを動作させた状態
このように、最近の仮想マシンソフトでは実在しない仮想グラフィックデバイスとそのドライバを用意し、可能な限り薄いソフトウェア階層で仮想マシン上のOSがGPUにアクセスできる(=より高速・高機能に描画できる)機能を提供している。

さすがに、業界最大手のVMWareや現在はオラクルが提供しているVirtual Boxのような現行のエミュレーションソフトでは、そうした仕様だとグラフィック機能に対する要件が厳しくなったWindows Vista以降の新しいWindowsを仮想マシンにインストールするのが難しいことを考慮して、3Dグラフィック描画機能が使える程度には高機能なGPUをエミュレーションする、仮想的なGPUとその専用ドライバを仮想マシン上で動作する各OS向けに提供するようになっています。

しかし、それでさえ現行の一般的なGPUの機能をきちんと再現できているかといえば、そうなっておらず、Windowsの求める最低限の機能をサポートするにとどまっています。

難しいGPUの仮想化

仮想マシン上でGPUの機能を十全に利用するのが難しい理由、それは現在一般に利用されているパソコン向けGPUのデバイスドライバやOSのグラフィックAPI周りのレベルで、そのサービスを仮想化して提供できるような仕様・構造になっていないことです。

VLバス、PCIバス、AGP、PCI Expressと高速インターフェイスの開発・進化で常に先陣を切ってきた歴史が示すとおり、また各ゲーム機でもCPUと同じか、ものによってはCPU以上に膨大なトランジスタ数のLSIを採用した、という歴史が示すとおり、グラフィックコントローラ(GPU)は限界ぎりぎりまで性能を絞り出すような使い方をされるのが常でした。

現在のパソコン用GPUで頻繁に最新版ドライバが更新・提供されているのも、まさにこうした限界性能発揮のための努力の一環であるわけですが、これは逆に見ればGPUチップは常に性能的・集積トランジスタ数的に余裕のない状態で使われてきたということで、仮想化のように1階層以上余計なソフトウェアレイヤーを追加し、チップレベルでコンテキストスイッチのような異なった処理を複数並列で処理させるための仮想化機能を付加するといった仕様変更は性能低下に直結するため、ほとんど考慮されてこなかったのです。

実際、ゲーム機などではソフトウェアでの性能向上が限界に近づく製品寿命の末期になると、グラフィックコントローラチップの解析が進んでソフト側がそのチップの持つ内部機能を直に呼び出して利用する、といったソフトウェア的にはいささか「お行儀の悪い」イレギュラーな使い方がなされることも度々(※実はゲーム機のソフトウェア互換性確保が難しい背景には、「極限までハードを駆使しゲームとして良くできているがソフトとしては非常に行儀の悪い」名作群の存在があったりします)でした。

ゲームソフトを仮想環境を構築した汎用性の高いサーバ上で複数動作させてクラウドサービスとして提供するなど皆目想定もされていない事態だったのです。

Microsoft Researchが発表したフレーム遅延防止技術の論文要旨
CPUの条件分岐命令における投機的実行と同様、分岐先予測を行い、事前に画面レンダリングを行うことでフレーム遅延を防止する。

また、特にゲームで無視できないこととして、フレーム遅延の問題があります。

先にも述べたとおり、仮想化技術では仮想マシンをはじめ何らかの仮想化レイヤーが仮想化したいソフトウェア環境と実際のハードウェアとの間に介在することになるわけですが、そうするとどうしても本来のネイティブな環境と比較して余計な処理が入り、処理時間に遅れが生じることになります。

CADソフトなどではこれはそれほど深刻な問題となりませんが、例えば対戦格闘ゲームのように1フレーム単位の「見切り」が対戦結果の死命を制することにもなりかねないタイプのコンテンツでは、致命的な問題です。

この問題は、ターゲットとなるソフトウェア環境がネイティブ動作していたマシンと比較して、仮想環境を動作させるマシンの性能の方が十分高速になればエミュレーションをスタンドアロン環境で行う分には一応回避可能なのですが、問題はこれだけではありません。

クラウド処理の場合、ネットワーク回線経由での「通信」という大きな遅延要素があるわけで、例えばデータセンターで現行最新最速クラスのサーバを用意して仮想マシンを動作させ、そこで超高速で画面のレンダリング処理を行ったとしても、ネットワークの向こうにあるクライアントの端末にその描画情報が伝わるのが遅延してしまえば、やはりフレーム遅延の問題は残るのです。

ちなみにこの問題、Microsoftの開発しているゲーム実行用クラウドサービス環境では最近の高速なCPUの条件分岐予測と同様、プレイヤーが次にどの動作を選択するのかを先読みして、確率の高いものをあらかじめ実行・描画して遅延を無くす、投機的実行と呼ばれる力業の技術が「DeLorean(デロリアン)」という名で発表されていたりします。

この方式であれば理屈上かなりの精度でフレーム遅延を解消できることになりますが、CPUの分岐予測をご存じの方ならお気づきの通り予測作業のために莫大な計算リソースが必要で、予測が外れた場合の画面再レンダリングに伴う電力ロスもばかにならないため、これは現状では言わば「最後の手段」に近い対策です。

結局は端末にも一定性能のGPUが必要になる?

さすがに、今回のNVIDIA・VMWare・Googleの共同開発でも、クラウドサービスで1フレームの遅延すら許さないようなクリティカルな使い方が可能になるとは考えがたいのですが、それでも将来的にGPGPUによる高負荷の演算処理がクラウドサービスによる仮想マシン環境で実行できるようになる、というのは大きな進歩です。

もっとも、この技術が三社共同開発となったこと自体が、GPUのデバイスドライバおよびハードウェア(NVIDIA)・仮想マシン本体および仮想マシン上のOS環境用仮想GPUデバイスドライバ(VMWare)・ホストマシンおよびクライアントマシンのOS(Google)と仮想マシン環境を実現するのに必要なほぼ全ての部分について、現行の環境に大きく手を入れて改良せねばならないこと、つまりそれぞれの分野1社単独の技術開発だけでGPU仮想化を実現するのが困難であることを意味しています。

また、サーバマシンに強力なGPUを搭載するだけでなく、クライアントの端末となるマシンについても、ある程度の性能を備えたGPUを搭載せねば、基本的な描画用APIの実行さえままならないわけで、前途はなかなか大変そうです。

実のところ、昨今では一般的なWebブラウザですらGPUの機能を利用してレンダリングエンジンの動作を高速化するのが当然となってきているわけで、クライアント側のマシンでネイティブ動作するOS上にてWebブラウザを実行するだけでも、ある程度のGPU性能が必須となってきています。

このあたりは今後の3社の共同研究の結果にもよるとは思うのですが、GPUの機能の利用範囲が広がって、中にはAMDの提唱するHSAのようにCPUとGPUの境界を無くし、相互補完的に計算リソースを共用させようという方法論での技術開発が各社で進んでいることや、先にも述べたフレーム遅延の問題を考えると、端末側の機能を全く利用せずサーバ側に全てを任せてしまうような形でのクラウドサービスというのも、それはそれで現実的ではない気がします。

ただ、スマートフォンやタブレット機などをクライアント側の端末とすることを考えると、今後GoogleがChrome OSだけでなくAndroidにもこうした仮想化技術を持ち込んでクラウドでの仮想デスクトップサービスを行う可能性は十分にあります。

そうなったとき、果たしてどのような仕組みでそれを実現するのか。その前哨戦となるのが今回の共同開発と言え、興味は尽きません。

▼参考リンク
NVIDIA Newsroom – News – VMware, NVIDIA and Google Unveil Future of Graphics-Rich Applications Delivered on Enterprise Cloud Desktops
OnLive(OnLive社が行っているオンデマンド形式によるクラウドゲーミングサービスの公式サイト)
PlayStation™Now – Streaming Game Service on Consoles | Overview
Outatime: Using Speculation to Enable Low-Latency Continuous Interaction for Cloud Gaming(PDF)Microsoft Researchが発表した投機的実行によるフレーム遅延防止技術の論文要旨

コメントは受け付けていません。

PageTopへ