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

GeForce GTX 460はGT200アーキテクチャのFermi拡張か?



●グラフィックス市場向けの決定版がGeForce GTX 460

 NVIDIAは、今後数カ月間の間に、2~3個の新しいFermi(フェルミ)系GPUを投入する。その中には、デスクトップGPUの強力な切り札「GeForce GTX 460(GF104?)」や、ノートPC GPUのフラッグシップとなる「N11E-GS(GeForce GTX 460M?)」も含まれる。

 新アーキテクチャGPUをハイエンド製品として発表してから半年から1年後に、下の市場セグメントに展開するのは、NVIDIAの通例のパターン。しかし、今回は、今までと大きく異なる部分がある。近く登場すると見られる、2番手のデスクトップGPU GeForce GTX 460が、異常に大きく強力なのだ。

 「最初のFermiであるGeForce GTX 480(GF100)は、GPUコンピューティングを第一に考えて作られたから、グラフィックスでは効率が悪かった。しかし、GeForce GTX 460は、480とダイが違う。グラフィックス以外の余計な機能は全部外して、グラフィックスの効率だけに集中した。だから、480と比べると、消費電力の割にグラフィックスの性能が極めて高い。グラフィックス向けの決定版で、これなら、ATI(現AMD)と戦える」。

 あるGPU業界関係者は、NVIDIAの新しいGeForce GTX 460を、このように説明する。GeForce GTX 460は、スペック上のプロセッシングパフォーマンス1つを見ても、従来の2番手ダイのGPUとは思えない。プロセッサ数はハイエンドのGeForce GTX 480と比べて約70%。もちろんDirectX 11フィーチャは備えており、なのに消費電力はGTX 480の3分の2程度と言われている。

 なぜ、GTX 460はそこまで違うのか。それは、ベースにしたアーキテクチャがGF100ではなく、GT200(GeForce GTX 280)アーキテクチャと見られるからだ。GT200アーキテクチャを40nmに移行させ、DirectX 11(Direct3D 11)対応のFermiの新グラフィックスフィーチャを加えた、ハイブリッド型のアーキテクチャが、NVIDIAのGeForce GTX 460の正体と推測される。

 このことは、NVIDIA GPUのCUDAコア(プロセッサ)数から判別できる。GeForce GTX 460のプロセッサ数は、現在リークされている数字は336個。このリーク情報はWebなど各所で公開されており、確実性が高い。この数字で重要な部分は、32で割り切れず、24で割り切れる点だ。なぜなら、GF100系アーキテクチャでは、CUDAコア数は32の倍数でなければならないからだ。そして、24で割り切れるプロセッサ数は、GT200系アーキテクチャのものだからだ。

●プロセッサ数からわかるGPUアーキテクチャの違い

 GF100アーキテクチャでは、1個のマルチプロセッサ「SM(Streaming Multiprocessor)」の中に32個のCUDAコアがあり、その中でWARP(NVIDIA GPUの論理ベクタでスレッドの集合)スケジューリングが行なわれる。32個というプロセッサ構成は、アーキテクチャ上で変更が難しく、32個のCUDAコアアレイを分割することはできない。そのため、GF100アーキテクチャGPUでは、プロセッサ数は必ず32の倍数になる。これは、現在のGeForce GTX 4xx系GPUのプロセッサ数を比較すればすぐにわかる。

 そのため、336個のCUDAコアを搭載するGeForce GTX 460は、GF100の基本アーキテクチャを採用していないことがわかる。336プロセッサを割り切れるのは24。そして、24プロセッサを基本単位としているのは、NVIDIA GPUではGT200系だ。

 GT200アーキテクチャでは1個のSMの中に8個のプロセッサ「Streaming Processor(SP)」があり、SMが3個集まって1個の「Texture/Processor Cluster (TPC)」を構成している。1つのTPCの中のプロセッサSPの数は24で、GT200の場合は、TPCがほぼ最小単位となる。GT200では、24個のプロセッサを分割することは難しい。SM単位(またはTPC単位)でしか有効化/無効化の切り替えができないのがNVIDIA GPUアーキテクチャの特徴で、それはGT200でも共通している。上位のGT200系CPUが、いずれも24の倍数のSPを搭載しているのはそのためだ。

 このことから、GeForce GTX 460は、GT200をベースにしたアーキテクチャである可能性が高いことがわかる。おそらく、DirectX 10世代だったGT200系アーキテクチャをベースに、DirectX 11拡張やFermiとのプログラム性での共通性をある程度加えたものがGeForce GTX 460のダイだと推定される。それは、イコール、NVIDIA GPUの基本的な構成であるSMなどの構造が460とGF100とでは異なり、それに付帯する機能も異なることを意味している。

GT200のStreaming Multiprocessor(PDF版はこちら)
GF100のSM(PDF版はこちら)
NV40~GF100のユニット数比較(PDF版はこちら)

 ちなみに、GeForce GTX 460のコードネームはGF104だが、この記事ではコードネームはあまり強調していない。NVIDIAは同じコードネームでありながら、実際には製品化までの間にダイが変わってしまうケースがあり、コードネームの一貫性に疑問がある。

 NVIDIAの場合は、信じられるのはコードネームではなく、ダイそのものだ。製品出荷後で完全に一致しているケースを除けば、ダイとコードネームの一致に不安があるからだ。ダイ自体は、多くても5から6種類のバリエーションしかないので、ダイで識別する方が合理的だ。

●グラフィックス時の効率が高いGT200アーキテクチャ

 GeForce GTX 460がGT200をベースにしているとしたら、それには、いい側面と悪い側面がある。いい面は、NVIDIAがデスクトップ向けにグラフィックスパフォーマンス効率の高いGPUを投入すること。悪い面は、プログラミング上での最適化の一貫性が失われてしまう危険性があることだ。

 GF100アーキテクチャは、汎用アプリケーションを走らせやすくするための柔軟性を求めた結果、アーキテクチャ上である程度のオーバーヘッドがある。そのため、グラフィックスを走らせるだけなら、効率が悪いケースが多い。例え、内部メモリ階層に対するECCのような、HPC(High Performance Computing)に特化したフィーチャを取り去ったとしても、GT200の効率性には到達しないだろう。

 それに対して、GT200は、まだグラフィックスに寄ったアーキテクチャであり、その分、従来型のグラフィックスではパフォーマンス効率が原理的に高くなる。つまり、NVIDIAにとって、コンシューマ向けにグラフィックス効率を優先的に考えれば、GT200はいい選択となる。

 特に、デスクトップで200ドル前後の価格レンジのGPUは、ゲーマーが購買層の中核であるため、グラフィックスの効率性は重要だ。NVIDIAのFermi戦略は、市場によって受け止め方が違い、HPCの世界で期待度が高い一方で、コンシューマ市場では相変わらずATI(現AMD)に押されている。NVIDIAはゲーマー向けGPUで、グラフィックスワークロードの効率が高いGPUを必要としており、NVIDIAがGT200のDirectX 11拡張を行なったのなら、そのニーズにはピタリと合う。

●ダイ自体は384コアを載せていると推測されるGeForce GTX 460

 GT200拡張版と見られるGeForce GTX 460の想定される構成は次のようになる。まず、SMはGT200と同様に、それぞれ8個のCUDAコアを搭載し、3個のSMで1個のTexture/Processor Cluster (TPC)が構成される。TPCは14個がダイ上に実装され、14 TPC×3 SM×8 CUDAコアで合計336個のCUDAコアとなる。

 もっとも、GT200をベースにしたとしても、DirectX 11のための拡張は必要だ。そこで問題になるのは、ポリゴン分割を行なうテッセレータの実装と、ラスタライザの複数化だ。GF100では、1個のSM毎に1ユニットのテッセレータが実装され、4個のSM毎に1ユニットのラスタライザが実装されていた。GeForce GTX 460が1個のTPC毎に1個のテッセレータを備えるとしたら、テッセレータは合計14個となる。これは、上位のGF100ダイの16個テッセレータに迫る数で、どう見てもオーバーキルだ。

 おそらく、合理的な数は、2個のTPC毎に1個のテッセレータを備え、GPU全体で7個のテッセレータを載せた構成だと推測される。プロセッサ対テッセレータの比率は48対1となり、GF100ダイの32対1より下位になる。

 ただし、その場合の7という奇数のテッセレータ数は、どうも収まりが悪い。しかし、GeForce GTX 460のダイが実際には16個のTPCを搭載しており、SMが合計48個、CUDAコアの数が384個だとしたら、全ての数字はピタリと収まる。その場合はテッセレータは8個となり、完全に対称だ。

GF100のファミリー(PDF版はこちら)

 そう推測する根拠は、NVIDIAの40nmプロセス世代のかかえる歩留まり問題にある。40nmプロセスでは冗長配線の比率が低くなったことで、プロセス側の欠陥率がGPUの歩留まりに大きく影響するようになった。例え従来のプロセスと同じ欠陥密度であったとしても、40nmでは歩留まりのロスが従来よりはるかに大きい。そのため、NVIDIAは冗長性を持たせることで、GPUの歩留まりを向上させている。

 具体的には、NVIDIAは欠陥が含まれている部分のSM(Streaming Multiprocessor)を無効にしている。すると、欠陥を含んだダイでも製品として出荷できるため、歩留まりがぐんと上がる。GF100ダイを使った製品は、いずれもSMが1個以上無効にされており、その状況は今も変わっていない。

 比較的ダイサイズが大きなGeForce GTX 460でも、事情は同じだと推測される。NVIDIAは460でも、同様の冗長化をしなければ歩留まりを上げることができないだろう。そして、GeForce GTX 460ではアーキテクチャ上、48または24プロセッサ単位でなければ、無効にできないと推測される。384個のCUDAコアを載せたダイで、48個を無効にすれば336個になる。これがGeForce GTX 460の正体だと推測される。

●デュアルラスタライザの可能性が高い

 GeForce GTX 460のダイ自体のTPC数が16だと考えると、その上位の「GPC(Graphics Processing Cluster)」の構成も見えてくる。テッセレータの数が増えれば、バランス上、ラスタライザを増やして、テッセレーション時の頂点爆発に備えた方がよくなる。NVIDIAは、GF100からラスタライザを複数個搭載し、ラスタライザ単位でGPUを分割して、その単位をGPCと名付けた。

 バランスを考えるなら、GeForce GTX 460ではラスタライザを2個搭載し、GPUを2つに分離して、それぞれに8個のTPCを配置する構成が合理的だと考えられる。ただし、これはラスタライザを複数化することに伴う、ジオメトリプロセッシングの分割制御をバッチスケジューラに組み込むことを、NVIDIAが許容した場合という条件がつく。NVIDIAによるとこの制御は意外とやっかいなので、その面倒を避けようと思えば、ラスタライザを1個のままにする可能性もある。ただし、その場合は、テッセレータがフル稼働した場合に、ラスタライズが追いつかなくなる危険があるので、考えにくい。

 ここまでのGeForce GTX 460の推測をまとめると、CUDAコアは物理的には384個で有効になっているのが336個、SM(Streaming Multiprocessor)が物理48個(有効42個)、Texture/Processor Cluster(TPC)が物理16個(有効14個)で、テッセレータとそれに付帯するPolyMorph Engineが物理8個(有効7個)、ラスタライザでまとめる単位のGPCが1~2個となる。かなり大規模なGPUだ。トレードオフは当然ダイサイズとなる。

●階層が厚いNVIDIAのDirectX 11世代GPUファミリ

 通常なら、GPUベンダーはハイエンドGPUの下に、パフォーマンスGPU、メインストリームGPUと展開して行く。ダイサイズは、NVIDIAの場合はハイエンドGPUが400~500平方mm台(シュリンク版が300平方mm台)で、パフォーマンスGPUが半分の150~200平方mm台、メインストリームGPUが100平方mm前後で、バリューGPUとしてさらに小さなダイのGPUが来る場合がある。ハイエンドからメインストリームまでは、同じプロセス同じアーキテクチャなら、大まかに言って3~4階層だ。プロセッシングパフォーマンスもほぼダイに比例しており、ハイエンドGPUの2分の1がパフォーマンスGPU、4分の1がメインストリームGPUとなるのが通例だった。

 ところが、今回はパターンが違う。ダイに実際に乗っている物理的なプロセッサ数で比較すると、それがよくわかる。今回は、ハイエンドGPUダイ(GF100)の512個に対して、その下に、4分の3の384個を載せたダイがあると推測される。GeForce GTX 460(GF104)が使うこのダイは、ハイエンドとパフォーマンスの中間層と考えることができる。従来なら、ハイエンドのダイから製品を派生させていた領域だ。

 その1階層下には、今度は上位のパフォーマンスGPUであるN11E-GS/GF106のダイがある。これは、8分の3の192個のCUDAコアを載せていると推測される。さらにその下に96個と見られるパフォーマンスとメインストリームの中間のGPUのダイがある。最終的には、その下のメインストリーム&バリューが登場すると見られる。ちなみに、上位の大型ダイGPUでは、製品化の際に1個以上のSMが歩留まり向上のため無効化される。そのため、製品のプロセッサ数は、ダイ上の物理的なプロセッサ数より少なくなる。

 ダイサイズは、想定できるアーキテクチャに幅があるので推定が難しいが、おそらくハイエンドとパフォーマンスの中間のセミハイエンドGPUが300平方mm台。“重い”実装なら300平方mm台のかなり上の方だし、削りに削った実装なら300平方mm台の下の方になる。パフォーマンスGPUも同様で、200平方mm前後から、重ければ200平方mm台の上の方の数字が予想できる。その下のダイが96プロセッサだとすれば、150平方mmより大きなチップになるだろう。下の図に示した予測ダイサイズは、あくまで最小の値で、実際にはこれよりかなり大きくなる可能性が高い。

ダイサイズの推移(PDF版はこちら)

 いずれにせよ重要な点は、セミハイエンドGPUが新たな階層として増えていることだ。階層全体も、おそらく最終的には5階層となり、これまでとはややパターンが異なる。この変化は一体何を意味しているのか。

 結論から言えば、これはNVIDIAの戦略の変化を示唆している。ハイエンドGPUを2系統に分けつつあることで、GPUコンピューティング対応のハイエンドGPUと、純粋にグラフィックス性能を追求したハイエンドGPUの2系統への分岐が見える。これまでは、上位のアーキテクチャが下へ降りてくるウォータフォール型だったが、今回は様相が異なるようだ。また、これは、市場戦略的には、AMD(旧ATI)とコンシューマ市場でグラフィックス効率で戦うことを意味する。GeForce GTX 460(GF104)は、ダイサイズから見てRadeon HD 58xx系(Cypress)対抗だからだ。

NVIDIAのダイと製品(PDF版はこちら)