後藤弘茂のWeekly海外ニュース

GeForce FXアーキテクチャの秘密を明かす
~NVIDIAキーパースンインタビュー




NVIDIAのChief Scientist、David B. Kirk氏
 GeForce FXファミリでユニークなアーキテクチャを採ったNVIDIA。同社でChief Scientistを務めるDavid B. Kirk(デビッド・B・カーク)氏に、GeForce FX 5900(NV35)のアーキテクチャや今後の方向性などについて話を伺った。

●NV35では演算ユニット自体も増強

【Q】NV35のアーキテクチャでは、クロック当たりの浮動小数点オペレーションが、NV30の2倍と説明されていた。

【Kirk】我々は、NV35で浮動小数点シェーダコンピュテーションユニット群の数を増やした。コンピュテーションユニットの正確なアーキテクチャは明かすことはできない。しかし、(NV35では)NV30の2倍の浮動小数点シェーダプロセッシングパワーを実現している。また、我々はシェーダプロセッサの、インターコネクトのいくつかをチューンした。それによって、アプリケーションによっては、2倍以上速くなっている。つまり、より効果的に浮動小数点プロセッサを使えるようになった。

【Q】Pixel Shaderには様々な要素が含まれる。例えば、カラー&アルファプロセッシング、テクスチャプロセッシング&フィルタリング、テクスチャアドレッシングなどが必要だ。浮動小数点シェーダパワーを増やしたということは、カラー&アルファプロセッシングのユニットを増やしたのか。

【Kirk】我々は、“カラー&アルファプロセッシング”に限定したユニットは、もう考えていない。GeForce FXでは、4Wayの(SIMD型)積和算が可能な積和算ユニットでカラー&アルファの演算を行なっている。しかし、同じユニットが、他のシェーダオペレーションも行なう。例えば、スペキュラ演算やテクスチャアドレス計算、また、バンプマッピングやリフレクション、ある種の環境マッピングの演算も行なっている。つまり、我々は、より多くのコンピュテーションユニットを増やしたが、それらはカラー&アルファ演算以外のことにも使うことができる。

【Q】ユニットがより汎用化しているということか。2倍の浮動小数点オペレーションパワーと言っている根拠は?

【Kirk】これは非常に込み入っていて、ディテールを話すことはできない。

【Q】演算ユニットを増やしたら、もっとトランジスタ数が必要になるのではないのか。

【Kirk】我々はNV35ではプロセッサを加えた。しかし、それと同時に他の場所でトランジスタをもっと節約している。NV30とNV35の間には、じつに多くの小さな改良がある。

【Q】E3時には、(NVIDIAのマネージャが)NV30とNV35の最大の違いは、テンポラリレジスタでのシェーディング管理だと説明していた。レジスタは増やしたのか。

【Kirk】もちろん、レジスタはプロセッサの一部なので、プロセッサを増やすと、レジスタも増えることになる。しかし、レジスタだけ(の改良)ではない。

●処理によって異なるバーチャルパイプを構成

【Q】NV35アーキテクチャでは、処理によって並列のオペレーション/クロックが異なる。資料によると、カラー+Zでは4オペレーション/クロックだが、Zとステンシルの処理は8オペレーション/クロックが可能になっている。通常のGPUは、これらは全て同じ処理数で、8パイプと言えば、カラー+ZとZとステンシルそれぞれ8個の処理が並列してできるのが常識だった。

【Kirk】GeForce FXアーキテクチャを発表した頃は、人々はピクセルパイプラインアーキテクチャという観点から語っていた。しかし、GeForce FXでは、初めてピクセルパイプをパーツに分解した。だから、我々はピクセルパイプラインという言い方はもうしない。プロセッシングパワーや浮動小数点オペレーション、それからデータパスという考え方をしている。

 これらのうち、プロセッサのデータパスは非常にエクスペンシブ(実装に多くのトランジスタが必要)だ。そのため、GeForce FXでは、(データバスはそのままで)クロック毎に異なる数のピクセルをレンダリングできるようにした。レンダリングの種類によって、異なるバーチャルパイプラインを取る。

 例えば、Zとステンシル(シャドウ)レンダリングでは、我々はもっと多くのピクセルをクロック当たりレンダリングできる。なぜなら、Zとステンシルのデータ量は少ないので、多くのピクセルを処理できるように、データパスを構成したからだ。しかし、フルレンダリング、つまりカラー+Zで、全ての種類の演算を行なわなければならない時には、遅くなる。つまり、どんな演算を行なうかによって、Zとステンシル(処理)の場合には、有効なデータパスを使えるようになっている。浮動小数点プロセッサの利用率を高めることで、より効率的にシェーダを走らせることができる。

【Q】バーチャルパイプラインと言っている意味は。

【Kirk】ケースによっては8ピクセル/クロックのプロセッシングが可能だが、4ピクセル/クロックの場合もあるからだ。それは、必要とされるデータ量と浮動小数点プロセッシングの量によって変わる。

【Q】仮想的に4または8(パイプ)といった構成を取ることができると考えていいのか。

【Kirk】オペレーションによって、4または8のどちらかになる。8パイプだが(パイプ同士の)共有もできる(構成)、あるいは4パイプだが場合によっては各パイプが1ピクセル以上をプロセスできる(構成)、と考えることもできるだろう。

 しかし、チップ設計者としては、我々は浮動小数点プロセッシングパワーを、パイプラインのデータパイプから分離したと考えている。独立したパイプは、もうGeForce FXには存在していないわけだ。これは、きっと読者に説明するのは難しいだろう(笑)。全てが変わってしまったから。

【Q】CPU的に考えると納得がいく。例えば、CPUではPentiumからPentium Proへの移行時に、従来のパイプラインを分解して、演算パイプをパーツに分解した。

【Kirk】その通りだ。

●アプリケーションの要求に応じたアーキテクチャ

【Q】どうしてGPUでこんな複雑なアーキテクチャを取ったのか。

【Kirk】我々は、まず第一に、今日開発中のアプリケーションを効率的に走らせるにはどうすればいいかを考えた。例えば、DOOM IIIのようなアプリケーションでは、多くのステンシルオペレーションが発生するが、ステンシル処理ではそんなにシェーディングオペレーション数は必要がない。ところが、いったん(ピクセルを)シェーディングするとなると、多くのプロセッシングサイクルが各ピクセル毎に必要となる。

 つまり、(同じアプリケーションでも)多くのピクセルパイプが必要な時と、少ないピクセルパイプしか必要としないが多くのコンピューティングが必要となる時がある。だから、(GPU側の)アーキテクチャはもっとフレキシブルになる必要がある。

 そして、将来の多くのアプリケーションでは、もっともっと浮動小数点ホースパワーが必要になるだろう。だから、6ヶ月毎にコンピュテーションの量を2倍にし続ける。

【Q】先ほど、カラー+Zのノーマルピクセルレンダリングでは遅いと説明した。実際、NV35の資料を見ると、カラー+ZについてはGeForce FX 5600(NV31)と同じ4オペレーション/クロックに留まる。なぜこうしたアーキテクチャにしたのか。

【Kirk】多くのアプリケーションは、コンピュテーションのパフォーマンスにより依存している。つまり、シェーダとテクスチャの演算、あるいは単にデータスループットに依存している。我々は異なるゲームを分析し、その結果、ボトルネックはカラー+Zパフォーマンスにはないことを見つけた。通常、ボトルネックはテクスチャかステンシルにあり、カラー+Zパフォーマンスであることはまれだ。そこで、我々は高速にすることが本当に求められている(Zとステンシルの)分野にハードウェアではフォーカスした。

【Q】一部の人は、NV35発表時の説明から、NV35が単純にNV30の2倍の数のPixel Shaderを備えていると誤解していると思う。しかし、説明を聞いていると、Shader内の演算ユニット数を増やして一部の処理の並列度や処理性能を上げたりして、全体の処理性能を2倍に引き上げたように思える。

【Kirk】そうだ。NV30を2倍にしたのではない(We didn't take NV30 and double it)。NV30からプロセッシングパワーを2倍にし、また、構造も変えた。

 ピクセルパイプラインは、浮動小数点パワーとデータパスのコンビネーションだ。我々は、浮動小数点パワーは2倍にしたが、データパスは2倍にはしなかった(we doubled the floating point power, but we didn't double the data path)。しかし、プロセッシングパイプラインを再アレンジして、2倍のパワーを引き出せるようにした。

【Q】8オペレーション/クロック以上という説明もあったが。

【Kirk】それはベクター演算で見るなら4倍になるからだ。RGB+アルファ(ピクセル)、XYZ+W(頂点)、それ以外にもABC+Dとどんな4値も一緒に(ベクターユニットで)処理できる。

●32bit演算ユニットで2個の16bit演算を実行

【Q】GeForce FXでは32bit演算が遅いので、シェーダプログラム内の32bit処理を16bitフォーマットに変換しているというウワサがあった。

【Kirk】演算の速度についてだが、32bitは16bitの2倍の数値だ。そうすると、32bit浮動小数点オペレーションは、16bitのそれに比べて4倍もハードになる。だから、32bitオペレーションは、16bitと比較したら必ず遅くなってしまう。これは物理だ。そこには“マジック”はない。(GeForce FXの設計には)なにもミスはない。ただ、大きな数値を小さな数値と同じ速度で処理するマジックはない、というだけの話だ。もしそんなマジックがあるのなら、我々は全て128bit浮動小数点で処理しているだろう(笑)。

【Q】CPUでは、16bitから32bitへの移行期には、1個の32bit演算ユニットで、2個の異なる16bit演算を実行できるようにしたアーキテクチャが現れた。GeForce FXもそうしたアーキテクチャを取っていると指摘されているが。

【Kirk】我々もそれが可能だ(We can do that)。

【Q】つまり、GeForce FXの32bit演算ユニットは、2個の16bit演算ができる?

【Kirk】そうだ。

【Q】32bitレジスタも、2つの16bitレジスタに分割できるのか

【Kirk】その通りだ。演算よりもむしろ重要なのは、ストレージとデータパスだ。データパスが何bitなのか、プロセッサのテンポラリ値を格納するレジスタはどうなのか。

【Q】データ出力も問題になる?

【Kirk】そうだ。16bit演算ではテンポラリ値は16bitだが、32bitの場合には2倍の(幅の)レジスタが必要となる。だから、外部フォーマットへはもっと効率的な(出力の)方法を考える方がいい。

 PixarやDisneyなど映画業界(のCGデベロッパ)では、イメージを計算する時は32bit浮動小数点精度を使い、イメージファイルをストレージに格納する時には16bit浮動小数点精度にしている。なぜなら、32bitは大きすぎるし、レンダリングが終わってしまえば32bit精度はもう必要がないからだ。イメージを格納するには16bitで十分だ。

【Q】それによって、ストレージパスを節約できるということか。

【Kirk】その通りだ。

●消費電力は低減

【Q】テクスチャリングについては、NV30では、同時に8テクスチャの処理と16テクスチャのアドレスが可能と聞いた。これはNV35も同じなのか。

【Kirk】ああ、そうだ。もっとも、テクスチャはフィルタリングモードによって、どれだけ処理できるかは変わる。アドレス生成は16(アドレスを並列に)できる。

【Q】NV30ではメモリは128bitインターフェイスで十分だと説明していた。なぜNV35では256bitにしたのか。

【Kirk】それは、GeForce FX 5900がもっと帯域を使う可能性があるからだ。浮動小数点パフォーマンスを上げたら、メモリ帯域も加える必要がある。バランスを取らなければならない。

【Q】NV35はNV30と比べると静かな冷却機構を備えている。NV35の消費電力はNV30より少ないのか。

【Kirk】(NV35は)第2世代のテクノロジだからだ。2つ目の(チップの)設計では、改良を加え、熱効率を向上させ、(ダイサイズを)縮小する。実際に測ってみれば、NV35の方がより発熱が少ないことがわかる。

【Q】NV35ではファンノイズが80%も減ったと資料にあった。

【Kirk】ノイズ(の量)はファンの回転数に比例しないからだ。それに対して冷却能力は、比例かそれ以下の関係にある。そのため、もし(ファンの)冷却能力を半分にするとしたら、回転数は(半分より)もっと遅くできる。だから、ノイズがぐっと減る。

【Q】NV35の動作周波数が低いのはなぜなのか。

【Kirk】NV35はより多くのプロセッシングパワーとメモリ帯域を備えるから、低速にできる。低速であっても、スループットは(NV30)より高い。

【Q】NV35のダイサイズ(半導体本体の面積)はどの程度なのか。

【Kirk】大きく小さい(bigger and smaller)。

【Q】言えないということか(笑)。

【Kirk】ああ。だが、あなたは“大きく小さい”という答えを使えると思う。サイズにそんなに大きな違いはない。

GeForce FXファミリの違い
製品ブランド名GeForce FX 5900GeForce FX 5800GeForce FX 5600GeForce FX 5200
コードネームNV35NV30NV31NV34
Color + Z PPC4444
Z PPC8844
Stencil PPC8844
Textures/clk8844
FP Shader Ops4x2x1x1x
Memory Bandwidth27.21611.210.4
製造プロセス技術0.13μm0.13μm0.13μm0.15μm
トランジスタ数1億3,000万1億2,500万8,000万4,500万

□関連記事
【5月22日】【海外】まだまだ疑問が残るGeForce FX 5900のアーキテクチャ
http://pc.watch.impress.co.jp/docs/2003/0522/kaigai01.htm

バックナンバー

(2003年6月12日)

[Reported by 後藤 弘茂(Hiroshige Goto)]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2003 Impress Corporation All rights reserved.