対するNVIDIAのGeForce GTX 480はSPの総数は480基として発表されているが、これはブロックダイアグラム中に描かれているSPの数を数えると512基あり、数が合わない。実際、2009年に「NVIDIAの次世代DirectX 11世代GPU」として予告された時は「512基のSPがある」と発表されたので、32基はどこに消えたのか……という話になる。

GeForce GTX 480の全体ブロックダイアグラム。実機ではこのうちの1SMが無効化されている

GeForce GTX 280の全体ブロックダイアグラム(参考)

これはNVIDIAの説明によれば「アーキテクチャとしては512SPだが、GeForce GTX 480として出荷されるものは480SPになる」という説明をしている。これはどうやら歩留まり向上のための策のようで、要するに「仮に32SPが性能を発揮できなくても、それらを無効化して480SPの製品として出荷する」ということを言っている。PS3向けのCELLプロセッサも、そのアーキテクチャ上は128ビットSIMD型ベクトルRISCプロセッサ「SPE」(Synergistic Processor Element)が8基あるが、歩留まり向上のために1基は無効化されて、PS3のCPUとして動作するときは7基のSPEしか稼動できない。半導体の世界ではしばしばあることだが、30億トランジスタにもなる今期のGeForce GTX 4x0は、こうした策を取らないと安定供給が出来ないのだろう。ちなみに、さらにSPを32基、無効化して出荷されるのがGeForce GTX 470になる。

SPが512基仕様のGeForce GTX 4x0の登場の可能性については「否定も肯定もしない」というのがNVIDIA側の公式見解だ。筆者は、SPが512基仕様のコアはGPGPU製品のTeslaブランドで出荷するのではないか、想像している。ちなみに引き合いに出したCELLプロセッサをもう一度引っ張り出すと、8SPEのフル仕様のCELLプロセッサはサーバやワークステーションといったプロフェッショナル製品向けのCPUとして出荷されている。

さて、先々代GeForce 8000/9000シリーズ、そして先代GeForce GTX 2x0までは8基のSPでクラスタを形成させ、これを「Streaming Multi-Processor」(以下、SM)と呼称していたが、GeForce GTX 4x0では、このデザインを改め、32基のSPで1SMを構成する構造へと変更している。

Streaming Multi-Processor(SM)のクローズアップ。1SMあたり32個のSPを内包する

先々代GeForce 8000/9000シリーズではSMを2基、先代GeForce GTX 2x0ではSMを3基集めたクラスタを「Thread Processor Cluster」(TPC)と呼称していたが、Geforce GTX 4x0では、SMを4基集め、さらにGPUとして機能するために必要な主要な機能ブロックまでを搭載してひとまとめにしたものを「Graphics Processing Cluster」(以下、GPC)と命名している。GPCに含まれる4SM以外のものとしては、ポリゴンを画面上のピクセルに対応づけるラスタライザや、DirectX 11の新機能であるテッセレーションユニット(後述)もGPC単位に与えられている。GPCは、ほとんどそれ自身がGPUとして機能できるのではないかというほど完成されており、実際、NVIDIAも、「GPCはミニGPUである」という表現を用いるほどだ。ちなみに、GPCが単体GPUとして動作するのに足りない機能ブロックを上げるとすればメモリ出力周り(要するにROPユニット)の部分になる。

Graphics Processing Clusterのクローズアップ。GeForce GTX 4x0では、このGPCが4つあって1つのGPUを形成する

GeForce GTX 4x0では、このGPCが4基集まって1GPUを構成するデザインとなる。先ほど筆者はRadeon HD 58x0が、先代Radeon HD 48x0のデュアルコア構成となっている……と表現したが、むしろGeForce GTX 4x0は、先々代GeForce 8000/9000のクワッドコアというような様相となっている。

まとめると、

32SP×4SM×4GPC=512SP (うち32SPないしは64SPは非稼動)

ということだ。

GeForce GTX 4x0のSPだが、こちらもRadeon HD 58x0と同様に1基あたりのSPはスカラ演算器となっている。ただし、GeForce GTX 4x0のSPはFP32スカラ演算器と32ビット整数(Int32)スカラ演算器のデュアル構成となっていて、両者は並列に動作することができるのが特徴だ。

GeForce GTX 4x0のSPのクローズアップ。FP32スカラ演算器と32ビット整数(Int32)スカラ演算器のデュアル構成となっているのが特徴的

SP自体も、Radeon HD 58x0のSPと同様に、DirectX 11へ対応するための機能強化が施され、新しい二進論理演算が追加された。また、GPGPUを重視するNVIDIAらしい命令語レベルの拡張だといえるのが「64bitアドレッシングへの対応」だろう。この拡張によって、GPGPU用途のデータ処理の際に、CPU並の大規模なデータ空間を取り扱えるようになる。メモリアクセスを担当する「ロード/ストアユニット」(図中表記はLD/ST)は、SMごとに16基実装され、これらはSM内のSP32基から共用される構造になっている。1基のロード/ストアユニットは、1クロックで1スレッド分のソースアドレスとデスティネーション(宛先)アドレスを計算可能だという。

Streaming Multi-Processor(SM)のクローズアップ。1SMあたり、LD/STユニットは16基、SFUは4基

先代GeForce GTX 2x0では、1SM(8SP)あたり2基の超越関数ユニット(Special Function Unit。以下、SFU)が実装されていたが、GeForce GTX 4x0では1SM(32SP)あたり4基のSFUを実装するようになった。1SM内のSFU個数が増えたように錯覚するが、先代GeForce GTX 2x0では8SPにつき2SFU(4:1)だったのに対し、GeForce GTX 4x0では32SPに対して4SFU(8:1)となる。つまり、SPの増加率に比べてSFUの増加率は控えめとなったわけだ。

倍精度、FP64演算については、取り組み方をGeForce GTX 2x0の時から変わっている。GeForce GTX 2x0では1SM(8SP)あたり、1基の専用FP64スカラ演算器を有していたが、GeForce GTX 4x0でこれを削除したのだ。しかし、GeForce GTX 4x0ではSP内のFP32スカラ演算器で2サイクルをかけてFP64演算を行うようにしている。専用演算器はなくなったが、増加したSP群のおかげでピーク時のFP64演算性能は先代からちゃんと向上することにはなる。なお、アプローチは違うが、既存のFP32スカラ演算器を転用することでFP64演算を行うのはRadeon HD 58x0と似ている。まだまだFP64の用途が限定的であるため、こうしたアプローチに批判が集まることはあるまい。

あまり意味があるとは思えないが、GeForce GTX 480のFLOPSを計算してみよう。

GeForce GTX 4x0は480SPで1SPあたりが積和算(2OP)をこなせ、さらにSFUは1基あたり4個の浮動小数点乗算をこなせる。SFUはGeForce GTX 480では60基ある(アーキテクチャ上は64基あるが1SMが無効化される関係で4SFUも無効化される)ので、

1401MHz×(480SP×2OP+60SFU×4OP)≒1681GFLOPS(1.68TFLOPS)

となる。倍精度は、単位時間あたりのスループットが半分になるので

1401MHz×240×2OP≒672GFLOPS

となる。

あくまでピーク性能のスペック値だが、結果だけ見れば、ピークFP32演算性能はRadeon HD 5870に遠く及ばないが、ピークFP64演算性能はGeForce GTX 480の方が優れる……ということになる。

実際の3Dグラフィックスの処理において、あるいはGPGPU処理において、その実効性能は、このスペック通りにはならない。

Radeon HD 58x0のSPは数が多いが、整数もFP32スカラ演算器で処理することになるし、なにしろ、命令の処理単位がSIMD(Single Instruction Multiple Data)となる。具体的には、Radeon HD 58x0では、5SPで1TPを構成するが命令の実行単位は1TP単位(5SP単位)となる。つまり、GPUコア全体で単位時間あたりに実行できる最大スレッド数という着眼で比較すると、GeForce GTX 480は480SPがそのまま480スレッドを処理できるが、Radeon HD 5870は1600SP÷5SP=320スレッドしか処理できない。言い換えると同時多発的に依存関係の複雑な計算をする場合は命令の実行粒度の高いGeForce GTX 480の方が優位になる。

ただ、Radeon HD 5870も、依存関係の少ない複数要素ベクトル計算が大量に発生する3Dグラフィックス処理においては、SIMDアーキテクチャが効果的に機能するので1600SPのフル稼働率は上がる。

というわけで、実際の性能は1600SP対480SPとか、FLOPS値の大小だけでは決まらないのだ。ただ、1つ言えるのは、Radeon HD 58x0系は「根っからの3Dグラフィックスプロセッサ」アーキテクチャであり、GeForce GTX 4x0はどちらかと言えば「GPGPU用途に重きを置いて、3Dグラフィックス処理もこなせるようにチューニングされたGPU」ということができる。