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

DirectX 11でも強力なNVIDIAの新GPU「GF100」



●倍々で増やしたGF100アーキテクチャ

 NVIDIAは、今年第1四半期中に出荷する予定の、次期GPU「Fermi(フェルミ)」アーキテクチャのハイエンドGPU「GF100」(コードネーム)の概要を明らかにした。GF100は、グラフィックス(Graphics)製品でのFermiアーキテクチャの1世代目(100)を示す。Graphics-Fermi 1世代という意味だ。GT200(GeForce GTX 280)が、グラフィックス製品でのTesla(テスラ)アーキテクチャの2世代目を示していたのと同様だ。

 もっとも、GT200の時は、NVIDIA関係者はGT200は「GeForce Tesla 2世代」を示すと説明していた。しかし、今回GF100のホワイトペーパーでは、正式にGFはGraphicsソリューションのFermiを示すと説明された。そのため、今はGF=Graphics FermiがNVIDIAの公式な説明となっている。

 数字で見ると、GF100は、これまでのGT200系の倍の規模のGPUとなっている。トランジスタ、メインプロセッサ数はそれぞれ約2倍、ROPは1.5倍、メモリサポートはGDDR5でピン当たり転送レートは2倍以上に向上する。

トランジスタ3 billion(30億)
CUDAコア512 cores
Streaming Multiprocessor(SM)16 SMs
テッセレータ16 Units
ラスタライザ4 Units
L2キャッシュ768KB
テクスチャユニット64 Units
ROP(Rendering Output Pipeline)48 ROPs
メモリインターフェイス384-bit GDDR5

NVIDIA G80、GT200、Fermiの比較
Fermiの構成

 NVIDIAは、GF100でGPUアーキテクチャを根本から改革した。そのため、GF100は、これまでのNVIDIA GPUにない構造を取っている。下がGF100アーキテクチャの概要だ。一部は、NVIDIAのアーキテクトの話をベースに推測している。

GF100 Overview

 

メモリ階層の比較

 GF100の概要が公開されたことで、Fermiアーキテクチャの、グラフィックス部分がようやく明らかになった。その内容は、これまでの予想をくつがえす、革新的なものだった。グラフィックス面での最大のポイントは、DirectX 11のテッセレーションへの最適化を推し進めたことだった。

 

●次世代のグラフィックスにフォーカス

 NVIDIAの次期GPUアーキテクチャFermiは、汎用コンピューティングだけでなく、DirectX 11でも強力なGPUだった。汎用コンピューティングに焦点を当てて、グラフィックスを軽視するのではなく、DirectX 11での新しいグラフィックス技法に集中してアーキテクチャを拡張した。NVIDIAは、次期GPUの開発で、汎用コンピューティングと次世代グラフィックスの2つのポイントに重点を置いたことになる。

 NVIDIAが次世代のグラフィックスと位置づける要素には、DirectX 11と「ハイブリッドグラフィックス」の2つが含まれている。ハイブリッドグラフィックスとNVIDIAが呼ぶのは、従来のグラフィックスパイプラインに含まれない、レイトレーシングやボリューメトリックレンダリングを従来パイプラインに融合させて行く方向だ。また、物理シミュレーションなどによって、リアルにエフェクトを描くことで、グラフィックスを向上させることも、この方向に含まれる。Fermiは、GPUコンピューティング(GPUによる汎用コンピューティングに対するNVIDIA用語)に最適化することで、結果としてハイブリッドグラフィックスにも最適化した。

 そして、今回、Fermiはハイブリッドグラフィックスだけでなく、DirectX 11のメインフィーチャであるテッセレーション(Tessellation)にも最適化されていることが、明らかになった。NVIDIAのテッセレータ(Tessellator:平面分割ユニット)回りの実装に、AMD(旧ATI)よりもはるかにリソースを割いて強化した。テッセレーションに関連する機能を使った場合の性能では、Fermiアーキテクチャの方が優位に立つとNVIDIAは説明する。

SIGGRAPH AsiaでのNVIDIAの基調講演「ヘテロジーニアス・コンピューティングの効果」より
SIGGRAPH AsiaでのNVIDIAの基調講演「ヘテロジーニアス・コンピューティングの効果」より
NVIDIAによるレイトレーシングの例
DirectX 11 APIとGPU実装

●ジオメトリプロセッシングの比重を高めるアーキテクチャ

 NVIDIAは強力なテッセレータの実装の理由を、ピクセル中心のプロセッシングから、ジオメトリ中心のプロセッシングへの転換にあると説明する。これまでのGPUは、主にピクセルのシェーディングによってグラフィックスの向上を図ってきた。つまり、3Dモデルのポリゴン数を増やすよりも、ピクセルを加工してそれらしく見せることで、画質を向上させて来た。

 いい例が、法線マップ(Normal Map)を使ったバンプマッピング(Bump Mapping)だ。少ないポリゴン数でも、緻密なディテールが存在するように見せかけるこの手法は、現在の3Dグラフィックスゲームでは一般的で、よりリアルに見せるためにいくつかの発展型テクニックが登場している。

 しかし、そうした手法ではグラフィックスの向上に限界が見えてきたという。そのため、CG映画で多用されているような、ポリゴン数を大幅に増やす(マイクロポリゴン化)ことによる、グラフィックスの向上を目指すという。テッセレータは、ポリゴンを分割して多ポリゴン化して、緻密なディテールの3Dモデルを実現できる。

 NVIDIAは「視差遮蔽マッピング(Parallax Occlusion Mapping)のような複雑なバンプマッピングをピクセルレベルで行なうより、ジオメトリを緻密に生成した方が、はるかにグラフィックスの品質が上がる」と説明する。つまり、苦労してピクセルをいじくり回してポリゴンがあるように見せかけるより、ポリゴン自体を増やしてしまおうという発想だ。下はテッセレータを使って多ポリゴンでキャラクタを作る例で、左が単純なポリゴン、右が多ポリゴン表示となっている。水面は、バンプマップで波を表現するのではなく、実際に波をジオメトリとして生成することで、起伏が豊かな表現を実現している。

 こうして概観すると、NVIDIAがFermiで目指すグラフィックスの方向が見えてくる。物理シミュレーションで物理的にリアルな表現に近づけ、レイトレーシングなどをスポット的に使うことで新しい表現を加え、ポリゴン数を増やすことでディテールの精細な造形を表現する。これは、方向性としては、オフラインレンダリングのCG映画が進んできた方向に近い。それをリアルタイムのグラフィックスで目指すのがGF100の思想だ。

●テッセレータの実装が大きく異なるNVIDIAとAMD

 そのため、NVIDIAはGF100設計において、DirectX 11のテッセレーションへの最適化を図った。AMDはDirectX 11世代GPU「Evergreen(エバーグリーン)」ファミリでは、GPU全体で1個のテッセレータの実装に止めた。それに対して、NVIDIAは「Streaming Multiprocessor(SM)」と呼ばれるプロセッサコアそれぞれに1個ずつ、GF100では、合計16個のテッセレータを実装した。

AMDのCypress(Radeon HD 5870)

 テッセレータはポリゴンを分割して頂点を増やすため、頂点数が膨大に膨れあがる問題を抱えている。そのため、テッセレータは、頂点単位のデータをピクセル単位に変換する固定機能ユニット「ラスタライザ(Rasterizer)」に負担をかける。これまでは、この部分がボトルネックとなり、頂点数(=ポリゴン数)を増やすことが難しかった。そのため、NV30(GeForce FX 5800)からGT200(GeForce GTX 280)までの間に、シェーディングパフォーマンスは150倍も上がったのに、ジオメトリパフォーマンスはたった3倍以下の向上しかなかったと言う。

 そこで、NVIDIAは、GF100ではボトルネックを抜本的に解決するアプローチに出た。従来アーキテクチャではGPU全体で1個だったラスタライザを、GF100では合計で4個に増やした。その結果、GF100は合計で16個のテッセレータと4個のラスタライザを備える、ジオメトリモンスターとなった。テッセレータ自体のスループットは明かではないが、NVIDIAは、GPUの10%をこうしたジオメトリ関係の新機能の実装に費やしたという。

●クアッドコア構成を取るGF100の全体構成

 NVIDIAは、GF100で、テッセレータの実装とラスタライザの強化に合わせてGPUアーキテクチャを組み立てた。GPUのプロセッサコア全体は、4つのクラスタ「GPC (Graphics Processing Cluster)」に分割されている。GPCはそれぞれがラスタライザなどを備えた、フル機能のグラフィックスプロセッシングエンジンとなっている。NVIDIAは、GPCは「ミニGPU(mini GPU)」であると形容している。

GF100のGPC(Graphics Processing Cluster)

 従来のNVIDIA GPUは1個しかラスタライザを持たなかったため、こうした高レベルのクラスタ構造は持たなかった。言ってみれば、従来のGPUは"シングルコア"、GF100は"クアッドコア"のような構造となっている。このGPC構成そのものが、ジオメトリプロセッシングへの最適化となっている。

 全体の構成を簡単に説明すると、4個のGPCは、全体のカーネルディスパッチとコンテクストを管理する「ギガスレッドエンジン(GigaThread Engine)」によって管理されている。しかし、実際には、下位のGPCがそれぞれ独立して頂点処理からピクセルプロセッシングまでを行なう。基本的にはシリアルな処理であるラスタライズを矛盾なく並列化するため、NVIDIAはGPCに対する制御を行なっている。

 具体的には、描画する画面をタイルで分割した区分が、4個のGPCそれぞれに割り当てられるという。タイリングにつきもののジオメトリのオーバーヘッド(2つのタイルにまたがるポリゴンなどのジオメトリオブジェクトは2重に処理される)がGPC間で生じる。しかし、タイルの粒度が大きいため、それほど問題にはならないとNVIDIAは説明する。ちなみに、GF100ではグラフィックスパイプラインの最終段はタイルではないため、いわゆるタイルベースグラフィックスとは異なる。

●4個のコアを内蔵するミニGPU「GPC」

 GPUはそれぞれ、Streaming Multiprocessor(SM)を4個内蔵している。SM(Streaming Multiprocessor)は、NVIDIA GPUでスレッドスケジューリングを行なう単位で、独立した命令ユニットを持つ。GF100では、それぞれのSM(Streaming Multiprocessor)が、個別に異なるカーネルプログラムを走らせることができる。つまり、コンピューティングのためのプロセッサとしては、SM(Streaming Multiprocessor)が、CPUでのCPUコアに当たる。

 ただし、GPUとしてはラスタライザによる頂点→ピクセルの変換を行なう必要がある。ラスタライザは、GPC(Graphics Processing Cluster)につき1個ずつ配置されている。そのため、GPUとしてはGPCがコアに当たる。つまり、GF100は、汎用コンピューティングでは16コア、グラフィックスでは4コアのような振るまいができる。

 このアーキテクチャから、GF100系の下位のアーキテクチャでは、GPCを基本単位としてスケールダウンが図られると推測される。GPCが2個の構成なら半分の規模のGPU、1個の構成なら1/4の規模のGPUとなる。

 GPCに備えられたラスタエンジン(Raster Engine)は、従来のGPUが1個ずつ備えていたラスタエンジンの機能をフルに備える。描画範囲に入らないポリゴンを破棄する「Z-Cull」も備えている。各SMで処理した頂点は、GPCのラスタエンジンでピクセルに変換され、ピクセルシェーディングのために各SMへと戻されるイメージだ。

 そして、GF100のグラフィックス機能の最大の特徴であるテッセレータは、GPCの内部の4個のSM(Streaming Multiprocessor)それぞれに1個ずつ設置されている。じつは、この実装には、Fermiアーキテクチャを活かす利点がある。次回の記事で説明したい。

 

GF100のストリーミングプロセッサ