■後藤弘茂のWeekly海外ニュース■
AMDは、台湾で開催されているCOMPUTEXで、DirectX 11世代のGPU「Evergreen(エヴァグリーン:旧R8xx)」の2009年内投入を発表。同チップの、DirectX 11フィーチャーのデモを行なった。また、40nmプロセスで製造するEvergreenのウェハも公開した。AMDのRick Bergman氏(Senior Vice President, AMD)は、DirectX 11でも一番乗りできると主張する。だとすれば、今世代のAPIサポート競争では、AMDがNVIDIAを征することになる。発表会の様子は、別記事でレポートされている通りだ。
Microsoftの新API群「DirectX 11」では、グラフィックスAPIが拡張される。最大のポイントは、平面分割を行ない少ないポリゴン数から、多数のポリゴンで構成されたディテールの細かな3Dオブジェクトを生成するテッセレーションステージ群の追加だ。GPUの汎用利用のためのシェーダステージ「DirectX Compute Shader」も、もともとはDirectX 11のために開発された(DirectX 10.xにも提供される)。
発表会では、見栄えの良いテッセレーションを中心にデモが行なわれた。ただし、その中で目立たないながらも、GPUによる群衆AIの実装デモも行なわれた。これは多数のカエルキャラクタ群の行動原理とパスファインディングをGPUに実装したものだ。「AI on GPU」は、ゲームでのGPUの汎用コンピューティング利用の次のステージで、NVIDIAも盛んに謳っている。AIのうち重い処理は、デシジョンメイキングではなく、サーチやパスファインディングであり、これらはコンピューティングインテンシブでありデータ量が多いため、GPUに実装して高速化しやすい。汎用コンピューティングを組み入れたDirectXの新しい方向性にも合致している。
テッセレーションデモ | AIデモ |
AIデモ | DirectX 11のサポート |
●シリコンスケジュールでは穏当な年内投入
2009年内のDirectX 11 GPU発表を宣言したAMD。そのスケジュールは順調なのだろうか。元々、GPUベンダーのDirectX 11 GPUの開発は、Windows 7と歩調を合わせることを前提に進んでいた。年内のDirectX 11スケジュールは、この予定に合致している。
通常、GPUの開発では、テープアウト(設計完了)から量産までには6~9カ月が必要となる。テープアウトからサンプルが実際に製造されるまで、マスクとサンプルシリコンの制作で数週間かかる。次にサンプルを評価して検証するのに1カ月半から2カ月かかる。ここまでで約3カ月が必要となる。
またファーストシリコンが完全動作したとしても、クリティカルパスつぶしなどで、通常は最低でも一回はシリコンを作り直す。その後、同じプロセスを繰り替えすため、テープアウトから製品出荷まで最短で6カ月かかる。もし、サンプルチップの段階で、大きな不具合が見つかり、もう1サイクルのサンプル出しが入ると、3カ月が追加され9カ月かかってしまう。
Evergreenは現在、シリコンがすでにあり、試験的に走っている段階だ。すると、大きなバグがなければ、最長でもここから5カ月で出荷できることになる。Bergman氏が年内出荷に自信を見せる理由はここにある。
●比較的小さなダイサイズCOMPUTEXの発表会では、Evergreenのダイも公開された。同チップのダイは、ウェハ上に25.x個×19.x個が配置されている。ダイサイズは計算上180平方mm台となる。これは、AMDがダイサイズを小さくする戦略を始めた最初のGPUだったRadeon HD 3800(RV670)と、ほぼ同じレベルだ。RV670は、55nmプロセスで192平方mmのダイだった。
製造プロセス技術は40nm。RV670からはフルノードで1世代分微細化する。ダイサイズから推定されるトランジスタ数は13億前後となる。トランジスタ数については、実際にはこの推定値より上下する可能性が高い。
AMDはエンスージアスト市場向けに巨大なダイ(半導体本体)のGPUを開発することを止めた。その代わりに、RV670世代からは、200平方mm前後の中程度のダイサイズのGPUをパフォーマンス市場向けに開発。エンスージアスト向けには、200平方mm程度のダイを2個使ったマルチGPUソリューションで対応することにした。DirectX 11世代でも、その戦略が踏襲されることが確認された。
しかし、Evergreenのダイサイズは、メインストリーム向けGPUのRadeon HD 4770(RV740)との差が大きくない。同じ40nmプロセスのRV740のダイサイズは136平方mmでトランジスタ数は826M(8億2,600万)。Evergreenは、3割程度しか規模が大きくなっていないことになる。グラフィックスAPIの世代が1世代ジャンプするのに、この差は小さすぎるように見える。過去の例を見ると、DirectX 8からDirectX 9、そしてDirectX 9からDirectX 10でそれぞれ前世代に対してトランジスタ数は倍増して来た。今回、DirectX 10からDirectX 11への移行が、そうならないのには、理由がある。
現在のGPUダイサイズ戦略 |
GPUダイサイズの推移 |
Evergreenのウェハ |
●大きかった過去のDirectX世代の移行のコスト
DirectX GPUの開発はどれだけハードルが高いのか。どれだけGPUのトランジスタ数が増えて、GPUが大きくなるのか。
DirectX 9世代からDirectX 10世代への移行は大きなジャンプだった。DirectX 9世代までは、GPUベンダーはグラフィックスの論理パイプラインをそのままハードウェアで実装していた。頂点(バーテックス)処理→ラスタライズ→ピクセル処理→アウトプットマージャーというパイプラインに沿った、垂直型のアーキテクチャを取っていた。
ところが、DirectX 10世代ではGPUアーキテクチャが完全に変わった。グラフィックスの論理パイプラインとは離れて、再帰型のプロセッサに編成され、その上で仮想的に論理パイプラインが実装された。
DirectX 10世代で、こうした変革が必要だったのは、DirectX 10の汎用性を徹底して高めたモデルを取ったためだ。DirectX 9世代まで、バーテックスシェーダとピクセルシェーダは、論理上の機能と命令に違いがあった。ところがDirectX 10世代からはほぼ同等となった。そのため、バーテックスシェーダとピクセルシェーダを別々にハードウェア実装するより、両論理シェーダを同じハードウェアでサポートする方が合理的になった。
そのため、DirectX 10世代では、GPUアーキテクチャの根本的な変革が行なわれた。DirectX 10からは水平のプロセッサアレイを制御して、グラフィックス論理パイプを実現することになった。そのため、シェーダプロセッサアレイの制御が飛躍的に複雑になり、GPUが複雑になった。また、それまでは実装が軽かったバーテックスシェーダがピクセルシェーダと同等になった。
こうした変化のため、DirectX 9からDirectX 10のジャンプでは、同等の性能のGPUで30~40%のロジック回路の増加が必要になると言われた。同じパフォーマンスレベルを維持して、DirectX 10のフィーチャーを実装するとGPUが肥大化する。しかも、GPUベンダーはパフォーマンスを世代毎に倍増することを謳っていたので、DirectX 10世代では、さらにGPUが大型化した。実際に、NVIDIAとATI TechnologiesのDirectX 10世代GPUを見ると、ダイサイズが一気に400平方mm以上へと大型化している。
DirectX 10論理パイプライン |
DirectX 11論理パイプライン |
●高くはないDirectX 11への移行のハードル
では、DirectX 11ではどうなのか。実は、DirectX 10からDirectX 11への移行では、GPUのハードウェアアーキテクチャに、抜本的な改革は必要ない。インクリメンタルな機能付加が必要であるだけで、ハードウェア設計に与えるインパクトは、前回の移行よりずっと小さい。DirectX 11のための追加ハードウェアは、比較的小さな規模に留まるだろう。
まず、テッセレーション関連のハードウェア。DirectX 11では、テッセレーションのために、テッセレータと、その前に「ハルシェーダ(Hull Shader)」、後ろに「ドメインシェーダ(Domain Shader)」と2つの新しいシェーダステージが加わった。テッセレータ自体は効率のためにハードウェア実装する必要があるが、前後のシェーダは専用ハードウェアとして実装する必要性は薄いと見られる。もっとも、テッセレーションを行なうとバーテックスデータの増大が起こるため、データをシェーダコア内でテンポラリに格納する必要が出てくる。そのための拡張は必要だが、GPUはすでにライタブルメモリをシェーダコア内に持つため対応は可能だろう。
次にコンピュートシェーダ(DirectX Compute Shader)関連のハードウェア拡張。これは、ほぼ必要がない。なぜなら、コンピュートシェーダは、GPUベンダーがすでに独自に拡張した汎用コンピューティングのための機能を、DirectXの枠組みの中に組み込んだものだからだ。
DirectX 9までは、グラフィックスAPIがGPUの機能を規定していた。しかし、DirectX 10世代では、GPUベンダーは、グラフィックスAPIで規定されている機能以外の拡張を積極的に行なった。特にNVIDIAは、汎用コンピューティングのための機能を強化し、シリコンをそちらに割いた。シェーダコアに非グラフィックス専用のメモリを設け、シェーダクラスタの粒度を極度に小さくして、スレッドの並列性を高めた。DirectX 10世代GPUは、グラフィックスAPIが絶対だった時代の終焉でもあった。
DirectX Compute Shaderはその状況に対応した。GPUベンダーがDirectXの枠組みから外れた部分で拡張した、汎用コンピューティングのための機能に、DirectXの枠組みからアクセスできるようにする。GPUベンダーは、従来のグラフィックス向けの仮想化レイヤー(グラフィックスドライバ)ではなく、汎用コンピューティング向けの仮想化レイヤーでそれに対応する。こうしたバックグラウンドであるため、DirectX Compute Shaderのサポートでは、GPU側に大きな拡張は必要がない。
こうした理由で、EvergreenのダイサイズにDirectX 10.x世代からそれほど大きくならないことがわかる。