Text & Photo by トライゼット西川善司

ページ 2/2



■プログラマブルシェーダ2.0は,"今"使えるテクノロジなのか

善:
 GeForce FXが将来を見据えたGPUなのは分かりました。しかし私自身は,今年はDirectX 8円熟期だと思っていて,これから出てくるゲームは,しばらくの間DirectX 8世代テクノロジベースだと思うんです。

GB:
 GeForce FXはDirectX 8世代テクノロジベースのアプリケーションも高速に動きますから,大丈夫ですよ(笑)。
善:
 ええ,そうだと思います。ですから,GeForce FXは"高速なDirectX 8GPU"として活用するべきなのではないか,と。  例えば,プログラマブルシェーダ2.0を使って長いシェーダを書いたとしたら,GeForce FXではリアルタイムに処理できないのではないでしょうか。

GB:
 確かに,すべてのピクセルに対して,プログラマブルシェーダ2.0仕様の限界命令数に近い,長いシェーダプログラムでレンダリングしたら,高フレームレートは出ないでしょうね。その意味では,まだ開発者はパフォーマンスとクオリティのトレードオフを考える必要があると思います。  ただ,そういった高度なシェーダプログラムで構成された3Dアプリケーションを開発し始めることは,絶対無駄にはならないはずです。
センセーショナルに公開された次期GeForce FX(NV35)のデモンストレーション。妖精Dawnが4人同時に踊っても,フレーム落ちしなかった
善:
 いずれ出てくる新世代GPUでは,リアルタイムに動かせるようになるかもしれないからですね。

GB:
 そうです。GeForce FXは開発者に新しい技術,そして手段を提供したという意味において革新的なのです。  FX5600/FX5200発表会の最後に,次期GeForce FX(NV35)のショートデモを特別に見せました。あれではDawnが4人登場していたでしょう? つまり次期GeForce FX(NV35)は,プログラマブルシェーダ2.0を駆使して表現しているDawnを4人出しても遅くならないパフォーマンスをもっているわけですね。プログラマブルシェーダ2.0ベースの技術を磨けば,将来的には絶対役に立つのです。


■今明かされる,GeForce FXシリーズのアーキテクチャの"真の姿"

善:
 GeForce FXシリーズのコア・アーキテクチャが,スケーラビリティに富んでいるのは分かりました。分からないのは,そのアーキテクチャの中身です。

GB:
 今までのGPUは,パイプラインの本数で性能がほぼ決まっていました。4本のパイプラインなら,2本のパイプラインのGPUの二倍の性能という具合にです。
善:
 GeForce 4 Ti(以下,GF4Ti)までは,まさにそういう進化の過程を辿ってきましたね。

GB:
 ただ,このアーキテクチャには問題があります。それは「各パイプラインが所有しているリソースを,ほかのパイプラインが利用できない」という点です。
筆者が当初予想したGeForce FXコアのダイアグラム。しかし,これは説明として不十分だった。より詳しいアーキテクチャの図解は,2003年3月末売りの「DOS/V Magazine」4月15日号で公開予定
善:
 RADEON 9700(以下,R9700)やGF4Tiには,各パイプラインにテクスチャユニットがあります。しかし,あるパイプラインのテクスチャユニットが遊んでいたとしても,別のパイプラインからこれを借りて利用することはできない……ということですね。

GB:
 そうです。便宜上,これを固定パイプライン(Fixed Pipeline)と呼ぶことにしましょう。
 固定パイプラインはテクスチャユニット数が限られています。したがって,それ以上のテクセル処理が要求されたときは,パイプライン出力をビデオメモリやテンポラリレジスタに出力し,その結果を利用して,もう一度パイプラインを回すという処理が必要になります。
善:
 GeForce FXアーキテクチャは,その必要がない……と?

GB:
 GeForce FXのピクセルエンジン・アーキテクチャは,パイプラインを抜けずに,内部的に何重もループバック(反復)できます。また,一度に多くのピクセルを出力しないケースでは,(テクスチャユニットを共有できるので)各パイプラインを内部反復せずに,1度のパイプラインパスで,ピクセルに複数テクセル処理ができるのです。
善:
 このアーキテクチャを採用したのはなぜですか?

GB:
 プログラマブルシェーダ時代のグラフィックスに対応するために柔軟性を備えるか,それ以前の古いアプリケーション高速化のためだけに,これまでのような進化を辿るかを,天秤にかけました。そして我々が出した答えが,GeForce FXアーキテクチャなのです。
善:
 プログラマブルシェーダ2.0時代を迎えるにあたり,これからのGPUに重要なのは,柔軟性というわけですね。

GB:
 そうです。例えばこれからの3Dグラフィックスは,ある場所では1クロックあたり8ピクセルのスループットが得られるほど単純でしょうが,別の場所だと8テクスチャを1ピクセルに適用するかもしれません。
善:
 では,GeForce FX 5800(以下,FX5800)系とFX5200/5600では,それぞれ何が違うのですか?

GB:
 GeForce FXシリーズのコアアーキテクチャが,"固定パイプライン"でないのはお分かり頂けたかと思います。
 そのうえでいうと,FX5800の処理能力は1クロックあたり8ピクセルのですが,これに対してFX5600/5200の処理能力は,1クロックあたり4ピクセルです。"FX5800の半分の性能"……ということになりますが,16テクスチャアドレッシング可能というのは同じです。
善:
 あるシェーダ開発者は,「GeForce FXで32ビット実数ピクセル・サーフェースを使用すると,RADEON9500(以下,R9500)/R9700よりも遅い」という意見を述べています。これは,R9500/R9700の内部演算ユニットが24ビット精度であることに起因しているのでしょうか。

GB:
 これは非常に複雑な問題です。
 まず,FX5800には4基の32ビット実数(FP32)ピクセル演算器と,4基の整数(INT)ピクセル演算器があります。つまり,1クロックあたり4個のFP32ピクセルと4個のINTピクセルのスループット能力があるわけです。
善:
 これらはすべて共有リソースなのですね。

GB:
 そうです。例えば,シェーダプログラムにおいて整数と実数の両方を使っていたとすると,非常に効率良く動作します。また,あるパイプラインで実数ピクセルを演算して,別のパイプラインで整数ピクセル演算をする……なんていうケースも起こりうるでしょうね。
 逆にいえば,実数ピクセルのみを使っている場合,確かに4基のFP32演算器に制限されますが,プログラマブルシェーダ2.0時代のシェーダプログラムは整数と実数を使いますから,GeForce FXアーキテクチャは有利だといえますね。
善:
 R9500/R9700はそうなっていない?
GeForce FXファミリーの性能比較表(プレスキットより)


GB:
 R9500/R9700は,各固定パイプラインに存在する実数演算器一つで,整数も実数も演算することになります。その点でも,GeForce FXアーキテクチャは柔軟だといえるでしょう。
 ただ,どちらがいいとは断言はできないでしょう。我々のアーキテクチャに最適化したシェーダも出てくるだろうし,R9500/R9700向きのシェーダも出てくるでしょうし。
善:
 そういえば「GDC 2003」のNVIDIA技術者が公演したセッションで,「速度と精度のバランスのいい16ビット実数(FP16)ピクセルフォーマットを使いましょう」と言っていましたが,あれはどういうことなんでしょう?

GB:
 FP16はデータ長がFP32の半分ですから,メモリバンド幅が半分になるし,テンポラリストレージも半分の長さです。そのため,速度の点で確かに有利かもしれないですね。
善:
 先ほど「1クロックあたり4個のFP32ピクセルのスループットがある」との説明がありましたが,FP16ピクセルのスループットはどうなんでしょうか?

GB:
 実数演算器を使うので同じです。
善:
 なるほど,納得しました。ありがとうございました。

ページ 2/2