●かつてCPUのたどった道を来るGPU CPUの進化は処理データ幅の倍増でもあった。4bitから8bit、16bit、32bitへと倍々で進化してきた。また、データタイプは整数に浮動小数点が加わり、さらにSIMD(Single Instruction, Multiple Data)型データも加わっている。GPUでも、現在、同じ進化が起きつつある。ピクセル処理は整数SIMDから浮動小数点SIMDへと変わった。データ精度も整数から浮動小数点32bitへと一気に上がった。 そして、各社のDirectX9/OpenGL2.0世代GPUでは、この浮動小数点ピクセルをどう実装するかで大きく違いが出た。ちょうど、アーキテクチャの節目の時期に、CPUの実装で大きな違いが出たのと同じように。だから、DirectX9/OpenGL2.0世代GPUでは、各ベンダーによって性能や特徴が大きく異なる。単一の指標で、横並びで比較することは、できなくなっている。 前回の記事でレポートしたように、DirectX9では、各コンポーネント16bitのABGR16f、同じく32bitのABGR32fの2種類の浮動小数点精度をPixel Shaderでサポートする必要がある。いずれも4個のデータを同時に処理するSIMD(Single Instruction, Multiple Data)なので、64bitSIMD(16bit)と128bitSIMD(32bit)をサポートしなければならないわけだ。 ここで、ATIやS3 Graphicsなどは、精度はやや落ちるがトランジスタをそれほど食わない内部24bit精度のPixel Shaderを8個実装した。それに対して、NVIDIAは、精度は高いがトランジスタを食う32bit精度のPixel Shaderを4個実装した。そのため、GeForce FXは精度では他社に確実に勝るが、32bit時のピクセルの最大出力は(同クロックで比較した場合)半分になってしまう。演算パイプが半分なので、その分、パフォーマンスは落ちるわけだ。 ●オフラインCGのために32bit精度をサポート
「我々が、Pixel Shaderで32bitを実装した理由は、(オフラインCGの)コンテンツ制作の現場を見ればすぐにわかる。コンテンツ制作は、全てx86アーキテクチャなどの32bitCPUを使って行なわれている。つまり、コンテンツ開発者は32bitパイプラインを使っているわけだ。それが、我々が32bit精度にこだわるもっとも重要な理由だ。開発者コミュニティと話し合って(GPUを開発して)いるからこそ、32bitを実装した」とNVIDIAのBill Henry氏(Director, Mobile Products Management)は説明する。 映画などに使われる高品質のオフラインレンダリングCG制作では、現在、レンダリング過程でGPUを使っていない。何台ものサーバーを並べたレンダーファームのCPU(x86やRISC)を使ってレンダリングしている。そして、CPUは、32bit単精度浮動小数点データをサポートしている。NVIDIAは、その市場をターゲットとするために、GeForce FXで32bitをサポートしたというわけだ。 「NV30(GeForce FX 5800)は、フル浮動小数点精度で、高度なプログラマビリティを備える。だから、どんなRenderManシェーダも、CPUと同様に走らせることができる。全く同じ絵が得られる」とNVIDIAのDavid B. Kirk(デビッド・B・カーク)氏(Chief Scientist)は言う。 つまり、ハリウッド映画制作などに使われるRenderManのシェーダ(3Dグラフィックス処理向けのプログラム)が、そのままの精度でGPU上で走るというのがGeForce FXの強みだ。これは、特に複雑で高い精度が求められるシェーダの場合に顕著となる。オフラインCGでのGeForce FXアーキテクチャのベネフィットは明確だ。 ●リアルタイムCGは16bit精度中心で しかし、NVIDIAがゲームなどのリアルタイムCGを忘れてしまったわけではもちろんない。 「(32bit精度だけでなく)より高いパフォーマンスを達成できる16bit精度も、もちろんサポートしている。これは、16bitモードの性能を求めるゲーム開発者のために実装した。つまり、我々のアーキテクチャは、(オフラインCGとゲームの)両方の開発者が望んでいる、柔軟性と高効率の両方を実現している」とHenry氏は言う。 昨日のコラムで説明した通り、GeForce FXの常時16bit処理の際の性能は非常に高い。そのため、16bit時には32bit演算ユニットを2個に分割して、2倍の数の演算を行なっていると推測される。実際には、常時32bitと常時16bitでは2倍とまではいないはずだが、ベンチマークでは明確な性能差がある。16bit時には高性能という、NVIDIAの説明はウソではない。 その一方で、Henry氏は他社が採用した24bit内部精度は中途半端過ぎると指摘する。 「我々はピクセル処理でショートカット(24bit精度を指すと思われる)を取ることもできた。しかし、それは、コンテンツ開発者たちにとって正しい選択ではないと考え、フル精度のパイプラインを実装した。これも、CPUアーキテクチャを見ればわかる。CPUでは、16bitと32bitがあり、それぞれ(のモードに向けて)アプリケーションが開発されている。だが、24bitはどうか。私は、24bitのCPUがあるかどうか知らない(笑)。24bitは、あっちとこっちの中間みたいなものだ。デザインスタジオが求めている精度ではないし、16bitモードほど高パフォーマンスでもない」 つまり、どっちつかずの24bitを実装するよりも、精度の32bitと性能の16bitを実装した方がいいと考えたというわけだ。 こうした、NVIDIAの説明からすると、同社はGeForce FXでは、32bit精度を主にオフラインCG用に、16bit精度を主にリアルタイムCG用に実装したことになる。オフラインCGには32bitが必須で、リアルタイムCGは16bit中心で大丈夫だと考えているわけだ。これが、オフラインCGでも(ほとんどの処理は)24bit精度で十分で、リアルタイムCGでも24bit精度が必要なケースがあると考えるATIとの大きな違いとなっている。 ●未来のアプリケーションの摩天楼の土台を築く もっとも、NVIDIAも今後ずっと32bit=オフラインCG、16bit=リアルタイムCGだと考えているわけではない。現状でも、性能をある程度犠牲にするなら32bit精度をリアルタイムCGで使うこともできる。さらに、将来を見た場合、GPUで32bit精度演算も高速にできるようになり、リアルタイムCGでも32bitが当たり前になることを見越しているようだ。というのは、オフラインCGとリアルタイムCGが融合するというのが、NVIDIAの考えている近未来の3Dグラフィックスの像だからだ。そのために、GeForce FXファミリ通して32bit精度をサポートしたと思われる。 「GeForce FXのアーキテクチャは、我々がモダンアプリケーションと呼ぶ次世代のコンテンツシフトのために設計した」「その方向へコンテンツを向けるには、まずハードウェアをアベイラブルにしなければならない。つまり、摩天楼のために非常に堅固な土台を作る作業を、いま行なっている。人々は、その土台だけを見て『何をやってるんだ』と言うが(笑)、我々は未来に投資をしている。今日のゲームのために製品を作るのではなく、今後2年を考えて作りたい」とNVIDIAのGeoff Ballew氏(Product Line Manager)は言う。 こうして見ると、GeForce FXの現在の性能問題は、じつはNVIDIAにとって覚悟の上だったと推測できる。オフラインCGと未来のリアルタイムCGを考えた場合、精度が重要と考えたからこそ、こうしたアーキテクチャを取ったわけだ。 では、GeForce FXの現在の問題は何か。まず、(1)同社のこうしたメッセージはどこにも伝わっていない。GeForce FXアーキテクチャの詳細も、どうしてこうしたアーキテクチャを取ったのかも説明されていない。明らかに説明不足だ。次に、(2)開発者を惹きつけることがGeForce FXアーキテクチャのキモのはずなのに、そこも十分にできているとは言い難い。少なくとも、リアルタイムCG系の開発者に対しては説明不足だ。 本来、NVIDIAは、ユーザーや開発者にアーキテクチャを“伝道(エバンジャライズ)”することが得意だったはず。なのに、今はATIにすっかりお株を奪われた格好だ。 もっとも、NVIDIAのスタッフにとっても、これは頭の痛い問題らしい。あまりにGeForce FXアーキテクチャが特殊過ぎて、説明が難しいのだという。あるNVIDIAのディレクタは、こうぼやいていた。 「Kirk博士らアーキテクトたちは深い海の底にいて、深遠なことを考えている。一方、我々は海の上にいて、他の船にそれを伝えようとしているわけだが、これが難作業だ。いったいどうやればうまく伝えられるのか、未だわからない。君たちメディアは、こうした複雑な技術を伝える時、いったいどうしているのか?」
□関連記事 (2003年4月21日) [Reported by 後藤 弘茂(Hiroshige Goto)]
【PC Watchホームページ】
|
|