NVIDIAが、第三世代となる 【 GPU切り替え技術 】 を投入しています
ね。
この技術は、
【 GPUを搭載しても消費電力を食わないコンセプト 】
であった訳ですが、NVIDIAは自動で切り替わる製品を投入しています。
この技術は、第3世代になるのですが、 【 Optimus Technology 】 と
言うモノで、メーカーPCではVAIOが搭載しているのですが、ユーザーが操作す
ることなく、起動するアプリケーションに応じて、GeForceを起動するオンデ
マンド型のGPU切り替え技術となっています。
GPUの切り替え技術というのは、チップセットやCPUに内蔵されたグラフィッ
クス機能(IGP)とNVIDIAの単体GPU(dGPU)の両方を搭載し、それらを任意に切り
替えて利用する技術で、負荷が多いときにはdGPUで、付加あ少ないときにはIG
Pで動作するようになっています。
チップセットやCPU内包のGPUは消費電力が少なく、dGPUのほうが処理能力が
あるケド消費電力が高いと言う特性があります。
現在のノート製品だとスペースが無い製品だとチップセット(もしくはCPU)
内蔵型のグラフィック機能を使い、ゲーミングノートなどでは、PCI Express
x16接続のモバイル用のグラフィックボードを使っています。
この場合、前者は、バッテリーにおいてのアドバンテージがあるのですが、
後者はありないほど速くバッテリーが切れてしまいます。
流石に、コレでは問題があるので、コンパチブルで使えばいいのではないの
か?と言う発想がコレです。
GPUの使われ方と言うと、SLIやCross fireのように複数枚のVGAを刺して速
度が向上する(その代りに消費電力は強烈になる)と言うモノがあったり、モ
バイルだと、ハイブリッドでつかえるような構造もあったのですが、このコン
セプトは、
【 消費電力の削減とパフォーマンスの両立 】
と言うモノだったりします。デスクトップの場合、AC電源から電力確保をして
いますから、電力変化による影響は皆無なのですが、ノート製品の場合は、バ
ッテリー駆動と言う方式なので、実は消費電力と言うのはシビアだったりする
訳です。
【 持ち歩く 】 と言う特性から、バッテリーが切れて貰うと充電しなく
ては使えない状況に陥るという特性と、フツーに電源を切るもしくはサスペン
ドにしておくと言う状況でもバッテリーは消耗していますから、利用時の電力
が低いほど、長時間バッテリーの性能のみで動いてくれると言うメリットがあ
ると言う訳です。(ビジネス用では、IGPのほうが良く、ゲームやグラフィッ
ク性能を求めるサギョ~ンだとdGPUのほうが優位性があるのですが、それぞれ
が異なる状態にあったので、使い分けが必要だたわけです)
とりあえず、そんな状況でも切り替える技術と言うのは、2006年1月に発表
されたソニーの 【 VAIO type SZ 】 で搭載されています。
この製品は、GPU切り替え技術を採用し、13.3型のモバイル向けでありなが
ら、dGPU利用時に高い性能を発揮できることで話題を呼んびました。
ただし、当時はIGPとdGPUを切り替えるのに、OSの再起動が必要で、起動時
にシステムBIOSがハードウェア的に片方を有効、もう一方を無効にしてから立
ち上げるという仕組みになっていため、切り替えに当たってはアプリケーショ
ンを全て終了し、再起動まで2~3分ほど待つ必要がありました。
この後継製品で2008年7月に発表され、今なお現行製品である
【 VAIO type Z 】
に実装されました。この製品では、この問題を克服し、IGPとdGPUの切り替えを
ソフトウェアスイッチでできるようにしています。
この第2世代のGPU切り替え技術では、IGPのドライバ(Intel製)とdGPUのドライ
バ(NVIDIA製)をDisplay Driver Interposerと呼ばれるソフトでラップすること
でOSから1つのGPUに見せかけ、InterposerがカスタムAPIを使ってIGPと通信する
仕組みとなっています。
そのため、ディスプレイドライバの開発に当たっては、NVIDIAはIntelの開発
者の協力を仰ぐ必要があったようです。また、このカスタムドライバでWindows
のWHQLを取得するにあたっては、Microsoftとも協業する必要があったほか、IGP
とdGPUのドライバがアップデートされる度に膨大な量の検証も要したとされてい
ます。
切り替えの仕様なんですが、たしかにこう書くと便利に思えます。ただ、幾つ
か問題があったりします。
例えば、負荷が高いときに切り替わるシステムだとするならば、
【 メモ帳 】
【 マインスィーパー 】
のようなあからさまに 【 RAGE 128 】 (極端な例ですが...。)でも動き
そうなソフトを立ち上げて重たいオンラインゲームを起動したとしましょう。
この場合、エラーが出ます。そして、電力設定が省電力モードになっていれば
やはり、重たいゲームは動かないわけです。
省電力モードを切っていたとして、軽いアプリと重いアプリを同時起動して
いたとして、軽いアプリのほうを切ったと仮定します。この場合、GPU切り替え
に数秒の時間を要するため、何かトラブルがお来て締まったのでうはないかと
錯覚する訳です。
この手の問題が発生しコールセンターに来るのは全てのユーザーの1%程度
らしいのですが、それでもあまり快適とは言い難いモノがありますし、多くの
ユーザーは、この手の機能を使っていなかったりするようです。(となると、
その機種である意味は少ないのでビジネスかグラフィック性能を要するものか
のどちらかに降った方がいいと言うことになりますよね。そして、コストをメ
モリーやストレージに費やした方が賢明だと言う話になる訳です。)
流石に、 【 無意味 】 や 【 使いにくい 】 を通り越して
【 使っていないユーザーが居る 】
と言うのは大問題なので、第三世代の製品では更なる改善がなされたようです。
【 Optimus 】 ではハードウェアの構成を根本的に変更していて、Optimus
対応のdGPUには、内部に 【 Copy Engine 】 という回路が内蔵されています。
これは、dGPUの3Dエンジン(シェーダ)が計算し、レンダリングしたローカルフレ
ームバッファのデータを、その都度IGPがフレームバッファとして利用するシス
テムメモリに転送することを請け負います。
そしてOptimusシステムでは、dGPUからディスプレイインターフェイスへの直
接出力が省略され、システムメモリに渡されたフレームデータは、GPUに代わっ
てIGPが直接ディスプレイインターフェイスへと出力する仕様になっています。
これによって、MUXは不要となり、これに起因する、コストや配線などのハー
ドウェアの問題が一挙に解決します。
Copy Engineによって、GPUが1フレームを描画して、次のフレームの計算が完
了するまでの1/5程度で済むため、IGPを経由することによる性能への犠牲は生じ
ないとのこと。
消費電力の面についても、まずIGPだけが動いているとき、dGPUへの電源供給
は、それが接続されているPCI Expressのレーンを含め完全にゼロになるようで
す。
さらにOptimusではソフトウェアの面でも先進的な機能が取り入れられていま
す。これまで、GPUの切り替えはユーザーがスイッチや設定で明示的に行なうか、
あるいは電源の接続状態に応じて切り替えが行なわれていた。これがOptimusで
は、 【 完全に自動化 】 されています。
Optimusのソフトウェアには 【 ルーティングレイヤー 】 と呼ばれるカ
ーネルレベルのライブラリが含まれています。
このソフトは、現在実行されているそのほかのアプリケーションがdGPUを必要
とするかどうかを判断し、それに応じてdGPUのオン/オフを切り替える役割を持
っています。
この“必要とするかどうか”というのは、具体的にはそのアプリケーションが、
■ DirectX
■ DXVA
■ CUDA
のコールを行なうかどうかを検知しています。つまり、この3種類のAPIを利用す
るアプリケーションが起動すると、dGPUが自動的にオンになり、アプリケーショ
ンを終了すると、dGPUがオフになる仕組みですね。
ちなみに、DXVAについてはIGPでも再生支援機能を持っている場合があります。
この際は、
【 再生するファイルのCODECがGPUでしかサポートできない状況 】
であれば当然GPUがオンになり、IGP、GPUでも同じような性能/画質で再生できる
と判断した場合は、消費電力の観点からIGPを利用する仕組みになっています。
言い換えると、同じプレーヤーソフトを使っても、SDクラスならIGPのまま、
フルHDならGPUを使う、といったことが自動的に処理される訳です。
この検知に際しては、Optimus専用のアプリケーションプロファイルを用意し
ています。同社のグラフィックスドライバは、以前からSLIについてのプロファ
イルを持っており、特定のゲームがSLIに対応しているかどうかの判断基準に使
われています。
これと同じようにOptimusでも、NVIDIAは、
■ DirectX
■ DXVA
■ CUDA
を利用するアプリケーションのリストをプロファイルとして持っています。
ただ、Windows対応アプリケーションと言うと、現在製品から個人が作っ
たアプリケーションに至るまで数えると、個人の理解を超えた数が存在して
います。
仮に、
■ DirectX
■ DXVA
■ CUDA
のいずれかを使うものに限定しても、膨大な量であることには変わりありま
せんし、それらは日々新しいものが作られています。
NVIDIAでは、それらを逐一検証し、プロファイルへ追加しています。そして
プロファイルがアップデートされると、それはNVIDIAのサーバーからオンライ
ンで各ユーザーのPCに保存されたプロファイルにも即時反映されるようになっ
ています。
これは、アンチウイルスソフトのパターンファイルが日々更新されるのと同
じような仕組みになっています。(シグネチアみたいなものですね。)
つまり、ユーザーが意識することなく、かつドライバ自体を変更することな
く、プロファイルを最新のものに保てるようになっています。
このプロファイルおよびルーティングレイヤーはグラフィックスドライバに
統合されており、プロファイルのリストはNVIDIA Control Panelから見ること
ができ、
【 アプリケーションごとにIGPを使うかdGPUを使うかをユーザーが変更 】
したり、
【 まだリストに挙がっていないアプリケーションを登録 】
することも可能となっています。
なお、現在はほとんどの場合、アプリケーションの起動が引き金となって、
GPUをオンにしていますが、アプリケーションによっては、DirectXなどのコー
ルを行なった時点で初めてGPUをオンにすることもできます。
このときGPUは数百ms程度で起動するので、体感できる遅延は発生しないよ
うです。
対応システムについては、OSは 【 Windows 7のみ 】 となっています。
これはOptimusが、Windows 7における、
【 異なるGPUでデュアルスクリーン表示させる機能を利用している 】
為で、Windows Vistaにはこの機能がないので、利用できません。
対応dGPUは、現行の40nmプロセス採用の
■ GeForce 200Mシリーズ
■ GeForce 300Mシリーズ
と
■ 次世代のGeForce Mシリーズ
■ ION
となります。組み合わせられるプラットフォーム(IGP)は、
■ Arrandale(Core i7/i5/i3)
■ Montevina(Core 2 Duo + Intel GM4 Express)
■ Pine Trail(Atom N400)
となります。(と言うか、PineTrailは興味深いですね。ただ、N400ですが。)
このようにOptimusでは、ユーザーが操作することなく、PCの持つGPU性能
とバッテリ性能を常に最善の形で実現でき、第2世代のように、Intelのグラ
フィックスドライバに手を加える必要がなくなったため、ユーザーが自由に
アップデートできるようになっています。
OptimusにおけるdGPUの使い方は、切り替えるというよりも、オンデマンド
で必要なときにだけ使うといった形になりますから、その点でも、これまでの
切り替え技術とは別モノと言えます。
だた、課題もあるようで、
【 グラフィックの出力仕様がIGPに引きずられる 】
という点ですね。例えば、NVIDIA 3D VISION対応のdGPUを搭載していたとし
てもこのシステムだと、IGPもソレに対応していないと機能しないと言う事
です。
この点についてはNVIDIAも承知しており、今後、そういった用途に向けて、
dGPUからの直接ディスプレイ出力を持たせることも検討しているようです。
ちなみに、今海外で出ているVAIO TYPE Zですが、これにもAUTOと言うモー
ドがついているのですが、搭載されているのは第二世代のモノなのでこの第
三世代の切り替え技術ではないようです。