NVIDIA、FermiベースのGeForce「GF100」のアーキテクチャを公開
~ジオメトリ処理のパラレル化にフォーカス

3-way SLIを構築したGF100搭載のデモ機

1月17日(現地時間)発表



 米NVIDIAが2009年9月30日に発表した次世代GPUのアーキテクチャ「Fermi」は、GPUコンピューティングに関するアーキテクチャは公開されていたものの、グラフィックスアーキテクチャは非公開のままだった。

 2009年11月の「Tesla 20」シリーズ発表のプレスリリースでは、FermiベースのGeForceを2010年第1四半期にリリースする旨を記載してたが、その登場が近づくなか、同社は17日(現地時間)、ついにそのグラフィックスアーキテクチャを公開した。

 なお、今回の説明会においても、製品の動作クロックなどを含む具体的なスペックについては一切語られず、本稿で紹介するデモも「最終製品によるものではなく、現在のプロトタイプ版によるもの」と断りがあった。また、Fermi版GeForceは「GF100」と呼ばれるが、これは製品名ではなく、あくまでコードネームである。具体的な製品名については今回は言及されていない。

 製品の出荷についてはこの四半期を目標にしていると改めて説明があり、早期の製品化に向けて動いているそうだ。

●ジオメトリ処理のリアリズムに向けた改良
NVIDIA Senior Vice President, GPU EngineeringのJonah M. Alben氏

 GPUエンジニアリングチームのSVPを務めるJonah M. Alben氏は、まずGF100のブロックダイヤグラムを示した上で、設計の方向性として最初に、「ジオメトリック・リアリズム」というキーワードを挙げた。3Dグラフィックスにおいては、オブジェクトがポリゴンで描かれるが、ジオメトリとはその頂点のことである。

 物体の凹凸を含めたディテールを、単純にジオメトリの数を増やして表現すると、広いメモリ帯域幅が必要になるため、性能を上げにくくなる。既存のゲーム(説明会では例としてFar Cry 2が示された)では、そうした問題を回避するために、テクスチャを用いて物体の凹凸表現を行なう。これは、見た目には立体感があっても、ジオメトリレベルでは平面であるといったことが珍しくない。

 一方、映画の分野では、テッセレーションとディスプレイスメントマップ(これについての詳細は後述)によって、ジオメトリレベルで詳細なディテールを生み出しており、これを実現するというのがGF100の大きな方向性だ。

 GF100以前のGPUは、シェーダパフォーマンスに特化した作りをしていた。GeForce FX 5800とGT200(GeForce GTX 200シリーズ)を比較した場合、シェーダパフォーマンスは150倍になっているのに対し、ジオメトリパフォーマンスは3倍弱しか上がってないという。これは前者が固定ユニットを持っていることで効率の良い処理が可能だったからだ。

 また、APIの問題でDirectX 10以前ではジオメトリをGPU上で自由に扱うための仕組みも十分に提供されていなかった。しかしDirectX 11ではテッセレーションが導入。それに向けた対応をすることで、GF100はGT200に対して最大8倍のパフォーマンスを提供可能としている。

●ジオメトリプロセッシングの詳細
NVIDIA Distinguished EngineerのHenry Moreton氏

 続いて説明を行なったDistinguished EngineerのHenry Moreton氏は、テッセレーションとディスプレイスメントマップの紹介と、その実現に向けたGF100のアーキテクチャについて紹介した。

 テッセレーションによって、メモリ帯域幅を節約しつつ、テクスチャなしで複雑な造形を作りあげることができると説明。さらに、遠近によってオブジェクトの詳細さを変化させるLOD(Level Of Detail)もシンプルに実現できるとした。

 テッセレーションの例では、UniEngineのHeavenのデモに登場するドラゴンや家屋を引用し、テッセレーション有効時には、ドラゴンが複雑なスタイルへと変化するほか、屋根や壁面などをジオメトリレベルで凹凸を付けることで、より立体感が増し、影もリアルになると説明。

 さらに、このテッセレーションとディスプレイスメントマップを組み合わせた例も紹介。ディスプレイスメントマップとは、頂点を変位させる部分を指定したグレースケールのシンプルな画像(ハイトマップとも呼ぶ)を参照して、ジオメトリレベルでオブジェクトの凹凸を出す手法だ。これを利用して、地形のハイトマップを用意しておき、リアルな影を生み出す例も紹介された。

 これらの手法と、ジオメトリシェーダ、PhysXによる演算を組み合わせたデモも示されている。それらは動画で紹介する。

左が基本的なポリゴンモデルで、テッセレータを使うとジオメトリレベルで右のような複雑なモデルを、効率良く実現できる
同じくテッセレータの例で、UniEngineのHeavenデモのオブジェクトである。左が無効時、右が有効時のもの。
テッセレーションとディスプレイスメントマップの基本的な考え方。凹凸の情報を単純なグレースケールに表したディスプレイスメントマップ(ハイトマップ)を基に、テッセレーションをかけるディスプレイスメントマップを用いて複雑な地形に生じる影をリアルに描写している例

テッセレータを用いて水面の波動をリアルに表現したデモ。シミュレーションの計算はPhysXで行なう
同じようにGPUによるシミュレーション計算とテッセレータなどを組み合わせた、髪の毛の動きのデモ

 GPU側の設計であるが、GT200の設計にそのままテッセレータを追加しようとした場合、SMの外に固定ユニットを置く手法になるため、そこがシリアルな処理になりボトルネックになる可能性がある。そこで、GF100ではグラフィックス・プロセッシング・クラスタ(GPC)という概念を導入した。

 このGPCは、4SMを1単位とし、それぞれにRaster Engineを搭載。さらにすべてのSMにワールド空間におけるジオメトリ処理を行なうことを中心としたPolyMorph Engineを置いた。

 PolyMorph Engineでは、頂点情報を受け取り(Vertex Fetch)、SMでVertex Shader処理やHull Shader処理を実施。その上で、テッセレータへ受け渡し、Domain Shader処理をして出力する、という流れになる。SMごとにPolyMorphエンジンを備えることで、こうした処理がSM単位でパラレルに行なわれることになる。

 そこから出力された情報はRasterエンジンに送られ、ラスタライズ処理が行なわれる。ラスタライズも4SM単位でエンジンを持っておりパラレルに処理が行なわれる。

 このGPCという単位は、グラフィックス処理の主要機能を備えていることから、Mini-GPUというべきものであるとしており、将来的に登場するであろう下位モデルにおいては、このMini-GPUの構造も大きく関わってくる。

 テッセレーション処理のパフォーマンスについても言及がなされた。Radeon HD 5870を比較対象として、より高い性能を発揮することが示されており、とくにUniEngineのHeavenベンチマークにおいては、最低FPSの値が落ちにくいことも強調されている。

GF100のグラフィックスアーキテクチャのブロックダイヤグラム
4SM単位に置かれるRaster Engineと、各SM単位に置かれるPolyMorph Engineの構造テッセレータのパフォーマンス。ディテールが詳細であるほどRadeon HD 5870に対して差を広げることを示した
UniEngineのHeavenベンチマークでは、最低FPSの値が落ちにくいことをアピールしているジオメトリシェーダのパフォーマンス比較

●GPUアーキテクチャとイメージクオリティの向上について
NVIDIA Vice President, GPU ArchitectureのEmett Kilgariff氏

 引き続いて、Emett Kilgariff氏、メモリ周りやテクスチャユニット、ROPなどのGPUアーキテクチャについて説明を行なった。

 GF100の各SMはFermiのアーキテクチャが公開されたときに示されたとおり、32個のCUDAコア、64KBのL1/Sharedメモリを持つ。これに先述のPolyMorphエンジンに加え、4基のテクスチャユニットを備える。GPU全体では64テクセルを1クロックで処理できる計算になる。GT200では3SMごとに8基のテクスチャユニットを備える構造だったが、GF100では各SMごとに専任のテクスチャユニットを置くようになった。ROPは8ユニット単位のブロックが6個で計48ROPとなっている。

 Fermiアーキテクチャの特徴となっている768KBのL2キャッシュの存在がある。GT200にもL2キャッシュは存在したが、これはテクスチャユニットが参照するリードオンリーのメモリであったのに対し、GF100は各ユニットから利用可能なライトバックになるのが特徴だ。GF100のL2キャッシュは、SM、テクスチャユニット、ROP、ジオメトリの各データが共有されるスペースとなり、レンダリングステージをGPU上だけで(つまりDRAMアクセスなしで)進められる機会が多くなる。

 説明会ではこのキャッシュ構造によって、ROPおよびテクスチャの性能がGT200よりも向上したことが強調された。

GF100のSMの構造。32個のCUDA Coreに加え、SM単位でテクスチャユニットを備える。また64KBのL1/Sharedキャッシュを持つのも特徴となるL2キャッシュはシェーダの各ステージから読み出し/書き出しが可能なほか、ROPやテクスチャユニットのデータを共有することもでき、DRAMへのアクセスを減らすことができる
GF100とGT200のメモリ構造/容量の違いGT200と比較したROPおよびテクスチャのパフォーマンス

 さらに、イメージクオリティの向上についても言及があった。1つはDirectX 11で提供される4テクセルを一気に参照可能な「Gather 4」と呼ばれる機能で、AMDのRadeonが備えるFetch 4と同等の機能だ。現在主流のシャドウマッピングにおいては、影のジャギーを消す(ぼかす)のに高い負荷がかかる問題があったが、Gather 4により4点の色情報を一気に参照できることで効率よくジャギーを隠蔽しやすくなる。

 また、新しい機能として32x CSAAが紹介された。CSAAはマルチサンプルアンチエイリアスに、アルファ値などのカバレッジサンプルを圧縮して高画質化する機能で、これまでは16xCSAAまでがサポートされていた。32xCSAAでは8点のカラーサンプルに加えて、24点のカバレッジサンプルを収集してアンチエイリアスを適用するもの。8xマルチサンプルAAからの性能低下を最小限にして、画質を向上させることができるとしている。これによりTMAA(Transparency Multisample Anti-aliasing)のイメージ向上も可能になる。

32xAAでは8点のカラーサンプルと、24点のカバレッジサンプルを基にアンチエイリアスを適用することで、8xMSAAに近い性能で、より高いクオリティを出す左が16xCSAA、右が32xCSAAの描画。16xCSAAでは不自然な描画になっているのが、32xCSAAでは自然な描画になっていることが分かる
32xCSAAは透過物を含むようなアンチエイリアス処理においても画質の改善につながる。右がその例である
32xCSAAは、8xMSAAに対して、それほど性能を低下させることなく高画質化できることを示したスライド

 このほか、GPUコンピューティングとの連携で、より高いイメージクオリティを出せる点についても言及された。Fermiアーキテクチャの発表時にも説明があったとおり、Fermiでは高速なコンテキストスイッチや、多数のカーネルを処理する点が、従来アーキテクチャから改善された。

 さらにはGPUコンピューティングの環境も、CUDA C++のほか、PhysXやOpenCL、DirectComputeと充実してきた上、NVIDIAはNEXUSと呼ばれるVisual Studioに統合するGPUコンピューティング用開発環境を用意した。そうしたことから、ゲームとGPUコンピューティングと連携が一層強まるということである。

 例としては、レイトレーシング、流体シミュレーション、パスファインディングといったものが示された。CAPCOMがリリースを予定しているDark VoidはPhysXを使ったゲームタイトルということで紹介があったが、ここでは、PhysX向けの開発フレームワークである「APEX」に含まれるタービュランスモジュールを使っているという。

GPUコンピューティングをゲームへ適用する例。イメージ処理、物理シミュレーションやAI。そして、従来的なレンダリングとレイトレーシングど、さまざまな技法を組み合わせてクオリティを高めることができるとするゲームへの適用が考えられるGPUコンピューティング処理の性能を、GF100とGT200で比較したもの
CAPCOMがリリース予定のDark Voidのデモ。デモで流れる表現のほか、ジェットエンジンの噴射もAPEXのタービュランスモジュールで実現している

(2010年 1月 18日)

[Reported by 多和田 新也]