連載
西川善司連載 / NVIDIA,新世代ハイエンドGPU「GeForce GTX 200」シリーズを発表(1)
1 2
2008年6月16日10:00PM,NVIDIAは,新世代のウルトラハイエンドGPU「GeForce GTX 280」および「GeForce GTX 260」を発表した。開発コードネーム「GT200」と呼ばれていた両製品は,GeForce 9世代のハイエンドGPUシリーズ「GeForce 9800」の後継となる,DirectX 10のプログラマブルシェーダ4.0(以下,SM4.0)対応GPUだ。
一目で製品命名ルールが変わったと分かる新世代GeForceだが,果たしてそのポイントはどこにあるのだろうか? 今回は,2008年5月に,米サンタクララ市のNVIDIA本社で行われた先行技術説明会「Editor’s Day」の内容を中心に,GeForce GTX 200シリーズのアーキテクチャを,詳しく見ていきたいと思う。
まずは製品概要をまとめてみたいと思うが,なんといっても気になるのは,新しい命名ルールだろう。
これについてNVIDIAの関係者は筆者の取材に対し,これまでの「4桁数字+性能指標を示すアルファベット」から,「性能指標を示すアルファベット+3桁数字」へ,製品名が変更になった理由として,「これを機にGeForceブランドを分かりやすくしようとしたため」と説明する。自動車でも,「Lexus IS350」「Lexus IS250」といったように,「グレードを示すアルファベット+排気量(≒性能)を連想させる数値」が採用されるケースが少なくないので,これに倣ったというところだろうか。……とは言いつつも,すでにGeForceの4桁モデルナンバーは9800まで数字が上がりきってしまっていたので,実際のとこは「うまく仕切り直したかった」のだろう。
ちなみに競合のATI Technologiesは,仕切り直さないまま,「10」を意味する「X」を付けて「ATI Radeon X1000」へと“繰り上げて”いたが,AMDによる買収後に仕切り直され,現在は「HD 2000/3000」シリーズに切り替わっている。
ところで,GeForce GTX 200シリーズでは製品名以前に,開発コードネームが従来――「GeForce 8800」の開発コードネームは「G80」,GeForce 9800は同「G92」だった――とは異なっている。Gの後ろに「T」が挿入され,数字も3桁になっている。
これについて前出の関係者は,「Gは『GeForce』のG,Tは『Tesla』のTで,200には『2』ndジェネレーションの意味が込められている。数字が3桁なのは,元々GeForce 8800シリーズが『GT100』として開発されていたことを受けてのものだ」という。
この発言は,非常に重要だ。Teslaというのは,NVIDIAの推進するGeForceベースの並列コンピューティングブランド,もっといえばそれに向けたGPGPU(General Purpose GPU,汎用GPU)システム製品群のことだが,NVIDIAはこれまで「まず3Dグラフィックス処理用にGPUを開発し,それを並列コンピューティングに転用する」製品展開を行っていた。GT100は結局「G80」になったが,今回のGT200=GeForce GTX 200は,「最初から並列コンピューティングにも注力した設計になっている」ことを意味するからである。
NVIDIAは2008年4月に,日本で「PCの最適化カンファレンス」を開催し(関連記事),GPGPUコンセプトをやたらと推していたが,それはこのGeForce GTX 280/260発表への伏線,下地作りだったということが,今になってよく分かる。ちなみにNVIDIAはさっそく,GT200コアベースのTesla製品を発表する予定のようだ。
冒頭で,GeForce GTX 280/260はGeForce 9800シリーズの後継としたが,本質的には「GeForce 8800」シリーズの後継製品といったほうがいいだろう。なぜなら,GeForce GTX 280/260は,GeForce 8800 Ultra/GTX以来となる,久々の「ワン・ビッグチップ」仕様だからだ。
GeForce GTX 280/260のトランジスタ数は,1プロセッサとして世界最大級の14億個。2002年に発表された「GeForce FX 5800」シリーズが約1億3000万トランジスタだったので,約6年で10倍以上の規模になったこととなる。
GeForce GTX GT200シリーズの製造プロセスルールは安定志向の65nm。GeForce FX世代に,当時の先端製造プロセスを採用して世界最大のビッグチップを作り,歩留まりの悪さに泣いた経験から,それ以来NVIDIAは,ハイエンドGPUの大規模なモデルチェンジを行うとき,必ず安定した製造プロセスを使ってきているが,今回もその習わしに従った格好だ。
ストリーミングプロセッサ(Streaming Processor,以下SP)数は240基で,128基のGeForce 9800 GTXと比べて2倍弱に達する。
各SPは浮動小数点演算と整数演算,データ移動/比較と大量のレジスタファイルシステムからなるスカラプロセッサ(Scalar Processor)で,「細部レベルの改善は行われた」(NVIDIA)とのことだが,基本アーキテクチャ自体はGeForce 8800 GTXから変わっていない。ただし,浮動小数点演算器は,GPU業界で初めて,倍精度64bit浮動小数点(FP64)演算に対応している(※詳細は後述)。
製品ラインナップの詳細も確認しておこう。GeForce GTX 280とGeForce GTX 260は,いずれも「GeForce 9800 GX2」の置き換えが想定されており,GeForce 9世代のシングルGPUハイエンド「GeForce 9800 GTX」は,GeForce GTX 200シリーズの下に置かれることになる。北米市場における搭載グラフィックスカードの想定売価は,GeForce GTX 280が649ドル,GeForce GTX 260が399ドル。それぞれ,主要スペックは以下のとおりだ。
●GeForce GTX 280の主なスペック
- SP数:240基
- コアクロック:602MHz
- シェーダクロック:1296MHz
- メモリクロック:2214MHz相当(実クロック1107MHz)
- メモリインタフェース:512bit
- グラフィックスメモリ容量:GDDR3 1GB
- カード長:約267mm(10.5インチ)
- 内部接続インタフェース:PCI Express 2.0 x16
- 外部出力インタフェース:DVI-I×2,高解像度アナログビデオ出力×1
- 占有スロット:2基分
- 公称消費電力:236W(※アイドル時は200W以下)
- PCI Express給電コネクタ:6ピン+8ピン
- 推奨電源容量:550W以上
●GeForce GTX 260の主なスペック
- SP数:192基
- コアクロック:576MHz
- シェーダクロック:1242MHz
- メモリクロック:1998MHz相当(実クロック999MHz)
- メモリインタフェース:448bit
- グラフィックスメモリ容量:GDDR3 896MB
- カード長:約267mm(10.5インチ)
- 内部接続インタフェース:PCI Express 2.0 x16
- 外部出力インタフェース:DVI-I×2,高解像度アナログビデオ出力×1
- 占有スロット:2基分
- 公称消費電力:182W
- PCI Express給電コネクタ:6ピン×2
- 推奨電源容量:500W以上
GeForce GTX 280(上)とGeForce GTX 260(下)の主なスペック。外観に大きな違いはない。ミドルクラス以下のGPUがどういった名前になるのかは,まだ分からないが,「GT」や「GS」といったアルファベットに,240とか220とかいった3桁数字が組み合わされる?
GeForce GTX 280の動作クロックは,65nmプロセスで製造されるGeForceファミリーのなかでとくに高いわけではないが,これは巨大なGPUであるGT200チップの冷却や消費電力に配慮した結果と思われる。
グラフィックスメモリ容量は,リファレンスレベルで単一のGPUと組み合わされるものとしてはGeForce史上最大容量となる1GB。クロスバー接続のグラフィックスメモリインタフェースとしては,業界最大の512bitを誇る。
公称消費電力が236Wとされるのもトピックだ。アイドル時は200Wを下回るとされるが,6ピン+8ピン仕様のPCI Express外部給電仕様はものものしい。
一方のGeForce GTX 260は,GeForce GTX 280と同じGT200コアを採用し,カードデザインも共通だが,下位動作コンフィグレートされた,要するに「選別落ちした」モデルとなる。最も大きな違いはSP数が192基と,GeForce GTX 280の80%にまで削減されている点。これに合わせて,グラフィックスメモリインタフェースも448bitとなり,また公称消費電力も182Wへと下がっている。
一通り概要を見てきたところで,ここからはアーキテクチャに深く切り込んでいくことにしよう。
GeForce GTX 280/260は,先ほども述べたとおり,GeForce 8800シリーズのアーキテクチャを基本的には受け継いだ製品だ。
GeForce GTX 200シリーズのアーキテクチャを解説するTony Tamasi氏(VP, Technical Marketing, NVIDIA)
以下,とくに断りのない限り,最上位のGeForce GTX 280について述べていくが,SP数が240基となったことにより,GPUコア内部で走るスレッド数は1万程度となったという。メモリレイテンシを,アグレッシブなスレッド切り替えで隠蔽していく基本方針が,さらに極まった形となる。
下に示したのは,先ほど示したブロックダイアグラムから,SP周辺を拡大したものだ。
「IU」は「Instruction Unit」の略で,実行する命令を,支配下にあるSP達に適宜分配する役割を果たす。SPはスカラプロセッサなので,例えばIUがベクトル計算をデコードした場合は,複数のSPを起用してベクトル計算を行うことになる。
1基のIUに対しSPは8基がひとまとまりとしてぶら下がっており,8基のSP達には16KBの共有「Local Memory」(以下,LM)が与えられているが,この「1IU+8SP+1LM」の構成を,NVIDIAは「Streaming Multi-processor」(SM)と呼ぶ。さらに,SMは三つで1クラスタを成すが,これには「Thread Processor Cluster」(以下,TPC)という名が与えられている。
SP周辺部の拡大図
IU,SM,TPCという言葉は初耳という読者も多いと思うが,実のところ,これらはいずれもGeForce 8800 GTXで実装されていた。単に語られなかっただけだ。GeForce 8800 GTXの発表時点では,なるべく,それまでのパイプライン型アーキテクチャ風の説明に沿った形が望まれたためと思われる。
GeForce 8800 GTXでは2SMが1クラスタになっていたのに対し,GeForce GTX 200シリーズでは3SMが1クラスタ(TPC)となっているが,これは,TPC間を結ぶ内部クロスバスの複雑性をなるべく上げずにSPを増やすための,現時点における最良の策ということなのだろう。いずれにせよ大局的に見れば,基本構成そのものは,GeForce 8800 GTXから大きく変わっていない。
また,この1IU+8SPの構成を,NVIDIAのテクニカルマーケティング担当副社長であるTony Tamasi氏は「SIMT」と位置づけている。聞き慣れない言葉ではないかと思われるが,SIMTは「Single Instruction, Multiple Thread」の略で,「1命令の実行を完了するまでに複数スレッドを動かす」という意味になる。ちなみに,Intelのベクトル演算拡張命令セット「SSE」や,ATI RadeonのSPはSIMD(Single Instruction, Multiple Data)だ。
SMはSPは浮動小数点演算ユニット(FP),整数演算ユニット,比較移動命令ユニットからなる。各ユニットはスカラプロセッサだ
スライドに示されている「Thread Processor Array」(TPA)はSMと同義。TPCは3つのTPAからなるので,実はこの図,TPCの大きさがおかしい
ダイを機能別に塗り分けた分布図
SIMDでは,ベクトル演算器の得意とするベクトル様式に,データ側を調整する必要がある。例えばSSEだと4要素ベクトル演算器で処理系が実装されているため,すべての演算器が活用されて,最高のパフォーマンスが得られるのは,演算対象となるデータが4要素ベクトルのときに限られる(※あるいは2要素ベクトル×2セットなど)。
その点,GeForce GTX 280のSIMTでは,「任意の要素数のベクトル演算を,SM(のIU)がデコード。支配下となる8基のSPから,必要な数だけを活用して実行スレッドを発生させ,SPが余っていたり,SPがメモリアクセスを発注していて,その結果が返ってくるまでストールしていたりするのを検知すると,IUは次の命令を受注し,SPを活用すべく別のスレッド発生させる」という仕組みが採用されているのだ。この仕組みにより,SMは常に複数の実行スレッドを請け負い,休みなく“働く”ことになる。
実のところ,これもGeForce 8800 GTXから変わっていないが,キーワードが増えて分かりやすくなった,といったところだろうか。
ただし,ここで特筆しておきたいのは,GeForce 8/9までのシェーダコアが,汎用の半導体(ASIC)をベースに改良を加えていく設計だったのに対し,GeForce GTX 200シリーズのシェーダコアが,CPUなどと同じように一から設計されている点だ。つまり,「汎用ロジック」ではなく,「カスタムロジック」が採用されているのである。
ベースとなるアーキテクチャ,そして“設計図”がほぼ同じ場合,カスタムロジックを採用すると,汎用ロジックを採用するよりも開発期間が長くかかり,コストも高くなるが,その代わりにより高速な動作が可能になる。もしかするとNVIDIAは,フルプロセスチェンジとなる45nm世代を迎えるまでの間,今回開発したカスタムロジック形成のシェーダコアを流用し続けるつもりで,ロジックを設計し直したのかもしれない。
さて図に戻ると,16KBの共有LMは,キャッシュメモリではない。8基のSP間で連携するために使われるが,詳細は後述する。
TPC(=SM×3)一つ当たり,Texture Filtering Unit(以下,TF)は8基あり,TFは1基でバイリニア(Bi-Linear)テクスチャフィルタリング演算を1サイクルでこなせる能力を持つ。トライリニア(Tri-Linear)や異方性(Anisotropic)フィルタリングも,処理の最小単位はバイリニアなので,トライリニアならスループットが2分の1,異方性なら2分の1もしくは4分の1になる。このあたりについては,筆者の連載バックナンバー「『テクスチャの異方性フィルタリング』ってなに?」に詳しいので,興味のある人はぜひ参照してほしい。
最後にL1キャッシュだが,TPCを構成する3ブロックのSMで共有される構造。ただし,その容量は明らかになっていない。
ブロック図全体に再び目を向けると,10基あるシェーダクラスタ(=TPC)の下には「Atomic」および「Tex L2」というブロックがあり,さらにその下には,赤と黒の四角が複数並んでいるブロックがある。
この,計16個の四角からなるブロックはROP(Rendering Output Pipeline)だ。ただしNVIDIAは,GeForce GTX 280から,ROPを「Raster Output Processor」と明記するようになった。
全体でひとかたまりのイメージになる,AtomicとTex L2,そしてROPパーティション。GeForce GTX 280はこれが8ブロック,GeForce GTX 260は7ブロック用意される。ちなみにGeForce 8800 GTXは6ブロック,GeForce 9600 GTXは4ブロックだった
Atomicユニットは,グラフィックスメモリへの書き込みと読み出しを統括するユニットで,Tamasi氏は「メモリシステムに対するScatter(拡散)とGather(採集)を行うユニット」と説明する。10基のシェーダクラスタとメモリシステムの橋渡しを行うユニットという解釈でいいだろう。
Tex L2については,その字面から想像できる読者もいると思うが,テクスチャ用のL2キャッシュメモリだ。GeForce GTX 280の場合,約1万ものスレッドが同時に走るため,異なるアドレスへのメモリアクセスが同時多発的に生じると,効率が悪い。そこで,このL2キャッシュを効果的に活用して,メモリバス帯域幅の消費量を少しでも抑えようというわけだ。こちらもL1キャッシュと同じく,容量は非公開となっている。
一方,地味ながらアグレッシブな拡張を見せているのがROPユニットである。上の図で,赤い四角はピクセル関連のROPユニット,灰色の四角はZ値関連のROPユニットを示しており,それぞれ16個(=16基)ずつ用意されて一つのパーティション(ROP Partition)を形成する。GeForce GTX 280の場合,ROPパーティションは8ブロックあって,それぞれが64bit単位のメモリコントローラとつながっている(※64bit×8ブロック=512bit)。さらにメモリコントローラは,GDDR3の32bitチップ×2と接続される格好だ。
こちらはGeForce GTX 260のブロックダイアグラム。基本的にはGeForce GTX 280と同じだが,TPCが2ブロック少なく(192SP),ROPパーティションも1ブロック少ない(28ROPs相当)コンフィグレーションになる
GeForce GTX 280の場合,ROPパーティションは8ブロックあるから,合計すると1サイクルで可能なのは32ピクセル+32 Z値のサンプリングと出力。従来どおり,カラーサンプリングを行わなければ,64 Z値の出力を行えるようになっているが,いずれにせよ,“DirectX 9世代以前のレンダリングパイプライン風”に述べると,ROPユニット数は32基になった計算である。3Dゲームグラフィックスにおいて,この強化は高解像度設定時のパフォーマンス向上に直接効いてくるため,かなり強力な改良といえる。
なお,NVIDIAの示したブロックダイアグラムには書かれていないが,ROPパーティション一つ当たりのBlender Logic数も倍増されており,1サイクルで32ピクセルのブレンドが可能になっている。GeForce 8800シリーズにおいて,ブレンド性能はROP数の半分(※24 ROPsなら1サイクル当たり12ピクセルブレンド)だったので,ここも大きな改善だ。
ブレンド性能の向上は,半透明描画に貢献するため,GeForce GTX 280は,半透明オブジェクトやパーティクル,ポストプロセス処理において,かなり優秀な性能を発揮することが期待される。
詳細は同時に掲載しているもう一つの連載記事「CUDA 2.0&PhysXでGeForceは生まれ変わる」を参照してほしいと思うが,GeForce GTX 280では,3Dグラフィックスを処理するGPUモードと,並列コンピューティング用のGPGPUモードの2モードを備えている。本稿でここまで用いてきたブロックダイアグラムは,二つのモードを合成して示したような図で,実際にはモードごとに,下に示したブロックダイアグラムになるのだ。
ブロック単位であったりなかったりするので違いは明白だろう。GPUモードではAtomicが消え,シェーダクラスタからROPユニットに向けた一方通行の出力になり,一方のGPGPUモードでは,Atomicブロックが機能して,ROPユニットが姿を消している。
各SMに搭載される16KBの共有LMは各SP同士の連携に利用されると前述したが,GPGPUモードにおいて,LMは複数のSPを用いたベクトル演算のための連携情報やデータ移動,比較命令実行のための中間データ保持用に活用される。GPUモードに限ってはジオメトリシェーダの動作用の一時的メモリとしても活用される。
SPが倍精度64ビット浮動小数点演算に対応したことをすでに述べたが,FP64計算が行えるのはGPGPUモードの時のみだ。DirectX 10がFP64バッファやテクスチャに対応していないので,これはやむを得ない。
なお,FP64演算系には,「本物」のFP64スカラ演算器,つまり倍精度対応の積和算器(DFMA:Double Floating-point Mul and ADD unit)が搭載されている。SM(8SP)当たり1基ずつ(FP32スカラ演算とは別に)置かれており,SP側のFP32演算器とFP64演算器とは同時実行も可能だ(※ただし,レジスタファイルの空き状況に強く依存しているため,実行できないケースもあるとのこと)。
下に示したのは,NVIDIAによる,GeForce 8800 GTXとGeForce GTX 280の詳細スペック比較だ。
その多くは本稿でここまでに解説してきているが,そうでない部分では,レジスタファイル(Register)がGeForce GTX 280でGeForce 8800 GTXの2倍になった点が興味深い。
レジスタファイルは,GPUが計算に用いる変数値や一時的な計算結果の収納場所なのだが,これは動的に使用されていくため,スレッド状況によっては足りなくなって,SMに「空き待ち」させてしまう。つまり,ストールの原因になるわけだが,ここが2倍に増強されたことで,高度かつ複雑な演算が頻発してもストールが起こりにくくなり,ひいてはパフォーマンスの低下が起こりにくくなるのを期待できる。
また,新しくサポートされた倍精度FP64演算には,先代までの単精度FP32演算比2倍となるビット長のレジスタファイルを消費することになるので,レジスタファイルの倍増は,単純にレジスタファイルを枯渇させないための配慮という見方もできよう。
プログラマブル・ビデオ・プロセッサ(PVP)については,GeForce 9で全モデルに搭載が完了した第2世代のPVP2が搭載されている。
また注目したいのは,Direct X10世代のSM4.0アプリケーションが増えてきたことを受けて,ジオメトリシェーダのパフォーマンス向上に対して積極的に取り組んだとされている点だ。Tamasi氏も「ジオメトリシェーダをテッセレータとして活用したいという要求が増えてきている。こうした用途に対応させるため,ジオメトリシェーダのアウトプットバッファをGeForce 8/9比で6倍に拡大した」と述べる。
ジオメトリシェーダを活用したテッセレーション(※ポリゴンを自動的に分割する仕組み。低ポリゴンモデルから滑らかな多ポリゴンモデルを動的に生成するために活用される)については,NVIDIAも「Instanced Tesselation in DirectX 10」(※リンクをクリックすると,pdfファイルのダウンロードが始まります)として研究発表を行っている。まあ,ジオメトリシェーダでのテッセレーションが現実的にどこまで使えるかは未知数だが,少なくともジオメトリシェーダのパフォーマンスが,相当引き上げられているであろうことは想像できる。
ところで,今回の発表ではSLIについて詳しい言及はまったくなかったが,GeForce GTX 280,GeForce GTX 260ともに,NVIDIA SLI(以下,SLI)コネクタが二つ用意されている点,NVIDIAの公開した資料に3枚差しのイメージがあったことから,3-way SLIに対応しているのはまず間違いない。Hybrid SLIに関しては,HybridPowerのみ対応しているとのことだ。
GeForce 9800 GX2で,マルチGPUソリューションによる性能向上に注力したNVIDIAだが,GeForce GTX 280は,GeForce 8800以来のワンビッグGPUとなった。では,NVIDIAは再び「大艦巨砲主義」に戻ったのだろうか? これは分からない。
本来,ウルトラハイエンドのワンビッグGPUは売れてもまったく儲からない製品だ。意外に思うかもしれないが,これは製造コストがとてつもなく高いからで,GPU業界全体としては,コストバランスのいいGPUを1基製造し,それをマルチGPU動作させることでハイエンド市場を狙う方向へ向かい始めている。少なくともAMDは,次世代ATI Radeonの「R700」(開発コードネーム)で,この路線を継承する。
Editor’s Dayで登壇した,GeForce担当プロダクトマネージャーであるJason Paul氏(GeForce Product Manager,NVIDIA)。GT200チップを高く掲げた
繰り返しになるが,GT200コアがビッグチップになったのは,1システムで数十万円から100万円超という高値で販売できる,プロ,研究開発やCAE(Computer Aided Engineering)用となるTesla向けの基本設計がなされたため。PCパーツ市場において,GeForce GTX 280/260として投入されるGT200は,いわばNVIDIAのトップブランドイメージを維持するための戦略製品であり,NVIDIAがビジネスとして捉える,GT200の販売先は,Tesla,つまり並列コンピューティング市場なのだ。
逆にいうと,今まさに成長しつつある並列コンピューティング市場がホットなうちは,Tesla向けのプロセッサが,ウルトラハイエンドGPUとしてリリースされ続けそうである。
とまあ,そういった裏事情はさておき,NVIDIAが今回がんばっていると思うのは,ほとんど並列コンピューティング向けプロセッサでありながら,GeForce GTX 280/260として,3Dグラフィックス処理をさせても,ウルトラハイエンドGPUの名に恥じないパフォーマンスを発揮できている点だ(※詳細は宮崎真一氏によるレビュー記事を参照してほしい)。GeForce 9800シリーズが,場つなぎ的な味わいだっただけに,GeForce 8800の正当後継となる,本当の意味でのウルトラハイエンドGPUとして,ハイエンド指向のPCゲーマーには,まさに待望の製品となるだろう。
それともう一つ。GeForce 8/9シリーズは,ジオメトリシェーダのパフォーマンスにおいて,ATI Radeon HD 3000シリーズと比べてやや見劣りしていた部分がある。この問題が,今回のGeForce GTX 280/260で払拭されたとすると,ジオメトリシェーダの本格活用をためらっていたゲーム開発者にとって,格好のGOサインになると思われる。
- 関連タイトル:
GeForce GTX 200
- この記事のURL:
Copyright(C)2008 NVIDIA Corporation