「Half-Life 2」は,GeForceFXシリーズでなぜ遅い?

Page 2/2

GeForceFX系は遅いのか?

 今回のセミナーでは,GeForceFX系のパフォーマンス不振に対する説明も行われた。
 GPUに限らずプロセッサを設計するとき,プロセッサの販売価格(製造コスト)やダイサイズ,製造プロセスルールなどから自ずと決まってくるのが最大積載トランジスタ数だ。
 最先端のプロセッサの設計においても,詰め込みたい機能をいくらでも詰め込めるわけではなく,決められたトランジスタ予算をやりくりして設計しなければならないのだ。
 まず,GeForceFXアーキテクチャを設計するとき,以下のような要素を検討する必要があったという。

(A)浮動小数点実数(FP)演算精度は何ビットにするか→32ビットか16ビットか
32ビットFP積和算器はトランジスタ喰い。16ビットや24ビットFP積和算器ならばトランジスタを節約できるが演算精度に限界がある。
(B)データパスの複雑度,パイプライン本数はいくつにすべきか
本数を増やせば配線長が長くなり,また,チップが大きくなって製造コストが上がる。

セミナーで公開されたGeForceFX系アーキテクチャのブロック図

 NVIDIAはここで,(A)において最大FP演算精度32ビットデザインを採択。このため,(B)において,トランジスタ予算やダイサイズとの兼ね合いから明確な独立構成のパイプライン・デザインを採ることができず,結局,ブラックボックスの入り口と出口を8個(下位GeForce FXは半分)設け,このブラックボックスの内部運算器をマネージメントして使う「バーチャル・パイプライン」のアーキテクチャへと向かう。
 ちなみにライバルであるATIは,(A)において最大FP演算精度24ビットデザインを採択。NVIDIAとは異なり,従来通りのアクチャル・パイプラインのアーキテクチャを採用した。
「24ビットFPは24ビットの精度があると思っている人がいるが,仮数部は16ビットしかない。精度的には16ビット整数を使った場合とほとんど変わらない。これでは,今まで我々が抱えてきたテクスチャ座標精度や,ダイナミックレンジに関する問題が何一つ解決できないではないか」(Kirk博士)。とのことで,NVIDIAはGeForceFXデザイン方針に間違いがないことを確信している。
 演算精度は高いものが実現できたが,明確なパイプラインがなくなってしまったことで,GeForceFX系では命令実行のとき,内部演算器のマネージメントをしっかりやりつつ命令を実行しないとパフォーマンスが上がらないという特性が生まれてしまった
 しかしこれも,Kirk氏によれば,大きな問題にならないという。
 シェーダプログラムの流れには一定の法則性がある。例えばテクスチャを読んで値を取り出して,次にはこの値を用いてのベクトル演算(陰影演算)を行う……のような流れが繰り返される。
 GeForceFX系アーキテクチャでは,こうしたシェーダプログラムの特性を最大限に利用し,入力された8ピクセル分のオペレーション・シーケンスのうち,独立性の高いテクスチャ読み込みとベクトル演算をオーバーラップさせて,メモリレイテンシを隠蔽したり,あるいは複数のベクトル演算を1基のSIMD演算器でまとめて実行させるといった工夫を行う。これにより従来の「アクチャル・パイプライン」と何ら変わらないパフォーマンスが達成できるというのだ
 空いている演算器があれば,それをどんどん活用して実行できるので,長いシェーダプログラムがハイパフォーマンスで動かせるメリットも出てくる。一方RADEON9500以上では,各ピクセル処理が明確なパイプラインに分かれているために逐次実行性は高いが,長いシェーダプログラムはパイプラインを何度も回す形で実行される。このためRADEON9500以上では長いシェーダであればあるほどパフォーマンスが出ない
 前述したように,一見素晴らしいGeForceFX系のアーキテクチャだが,内部演算器がフル回転するような命令順序になっていないとパフォーマンスが上がらないという弱点がある。そう,GeForceFX系の性能は,RADEON9500以上よりもシェーダプログラムの最適化状態がシビアに影響してしまうのだ。なお,GeForceFX系最適化コードを生成するためにはNVIDIAが提供するCgコンパイラを利用する。逆にいえばこの最適化が施されていないアプリケーションではGeForceFX系の優位性がまったく出てこないことになる。
 DirectX9世代の代表的な3Dグラフィックスベンチマークソフトの「3DMark03」でパフォーマンスが向上しないのもそうしたことが原因であり,おそらくHL2におけるパフォーマンス問題もこれが大きな要員の1つになっていることは間違いない。
「特別な最適化が必要なのがGeForce FXの特異点だって? そんなことは絶対にない。CPU業界を見て欲しい。様々なソフトウェアがさまざまなCPU命令セット(インテル系/AMD系/各種SIMD命令セット)向けに最適化されているじゃないか」(Kirk博士)。
 とはいうものの,今のところ3Dアプリケーション開発者達の間に,NVIDIAの思想は行き渡っていないようで,「GeForceFX系にズバリ最適化しました!」という3Dゲームは今のところ出てきていない。もっとも,これはDirectX9世代のテクノロジ(≒プログラマブルシェーダ2.0)を最大限に利用した3Dゲームの数がまだ少ないということもあるだろうが。
 いずれにせよ,NVIDIAは,GeForceFX系アーキテクチャの特性を開発者達によく理解してもらえるよう,今後はより一層強い"布教活動"が必要になることだろう。


GeForceFX系アーキテクチャはどこへ行く

 今回のセミナーは,GeForceFX系アーキテクチャの設計に携わった主要人物が壇上に立ち,パネルディスカッション形式で行われた。随時,来場者からの質問を受け付けるスタイルということもあって,講演中はかなり厳しい質問も寄せられた。
 シェーダのプログラマビリティを最大限に追求してデザインされたはずのGeForceFX系アーキテクチャにおいてMRT(*1)に対応できていないのは「矛盾」しているという指摘や,相変わらずDirectX9環境下で浮動小数点実数テクスチャが利用できないことに対する疑問に対して,NVIDIAは今回も明解な返答をしなかった。
 このほか,HL2に関する質問事項において,NVIDIAが公式に開示した情報について以下に列記しておく。

【Q】GeForceFX系ではHL2のフォグ効果が無効化になるというのは本当か?
【A】先月開催された「ATI's SHADER DAY」で公開されたこの一件についてはドライバのバグということが判明した。バージョン50.xx以上のドライバでは対応済みである

【Q】バージョン50.xxドライバと45.xxドライバではHL2のパフォーマンスが劇的に違うのはなぜか?
【A】ここ数か月で我々のドライバ開発チームはドライバの改良を重点的に行った。これらの改良はHL2開発元のValve社を含むゲームスタジオとのコラボレーションで実現した。このパフォーマンス向上はそのたまものだ

【Q】Valve社はバージョン50.xxを歓迎しているのか?
【A】現在公開中のバージョン50.xxドライバはWHQL認証(Windows HArdwAre Quality Labの略。"マイクロソフトが品質保証している"の意)されたものであり,開発者達はもちろんエンドユーザー達が使う標準的な存在となるだろう

【Q】HL2をGeForceFX5950Ultraで動かしたとき,アンチエイリアスを有効に出来るか?(*2)
【A】HL2は世に出ていないのでなんともいえない。我々の技術者はValve社と密接な情報共有のもとに開発を進めており,最終的には,ユーザーが満足できる品質に仕上げられることを確信している

(*1)MRT:マルチ・レンダー・ターゲットの略。単一のシェーダパスから複数のバッファに値を出力できる技術。RADEON9500以上では対応
(*2)テクスチャサンプリング処理系のシェーダを多用した3Dゲームソフトでは,同じくテクスチャサンプリング処理をするアンチエイリアスエンジンと競合を起こし,結果として映像が変になるという問題がある。この問題は「Tom Clancy's Splinter Cell」などで発生しており,最新ドライバではこうした3Dゲームを動作させたときには,アンチエイリアスを強制的に無効化する仕組みを介入させている

HL2は諸般の事情により,来年春へと発売が延期された。この延期期間にNVIDIA GeForceFX系への徹底した最適化も行われる見込みだ

前のページへ戻る