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

WGF2.0時代の次世代GPUのアーキテクチャはこうなる




●WGF2.0世代で再びGPUのマイクロアーキテクチャが変わる

 GPUが再びアーキテクチャの変革期を迎える。2005年後半から2006年にかけて、登場する新世代のGPUは、内部アーキテクチャが一新される。下の想定図のように、従来GPUの固定されたパイプライン構造から離れ、よりフレキシブルで並列性の高い構造になる。スレッドスケジューラを備え、並列化されたProgrammable Shaderのアレイに対して、動的にシェーダプログラムをスケジューリングできるようになる。もはや、GPUというより、プログラマブルで汎用的なベクタ型プロセッサだ。早ければこの夏にもこうした新世代アーキテクチャのGPUが登場。2006年にはGPUアーキテクチャの主流になって行くと推定される。

WGF時代のGPUの想定図
PDF版はこちら

GPUアーキテクチャの変遷
PDF版はこちら

 今回、GPUアーキテクチャの変革は、次世代ゲームコンソール(据え置き型ゲーム機)にも大きな影響を与える。それは、次世代Xbox(Xenon)と次世代PlayStation(PS3)のどちらのGPUも、ちょうどこの変革期にかかるからだ。次世代ゲームコンソールのグラフィックスも、少なくとも部分的には次世代アーキテクチャに沿っている可能性が高い。つまり、次世代ゲームコンソールは、高性能なCPU以外に、もう1個、ある程度は汎用的に使うことができるベクタ型プロセッサを備えることになる。

 このコラムでは、これら次世代GPUを、仮に「WGF(Windows Graphics Foundation) 2.0世代GPU」と呼ぶことにする。Windows Graphics Foundationは、Microsoftの次世代Windows「Longhorn(ロングホーン)」に実装される新しいグラフィックスサブシステムだ。WGFにはWGF1.0とWGF2.0の2レベルがある。簡単に言えば、WGF1.0はLonghorn版DirectX 9でLonghornのユーザーインターフェイス「Avalon」のベース、WGF2.0は以前DirectX 10あるいはShader 4.0と呼ばれていた次世代のグラフィックスサブシステムだ。

 そして、WGF2.0世代GPUは、ベースアーキテクチャも、現行のDirectX 9世代GPUから一新される。ちなみに、このコラムでは、GPU世代にMicrosoftのマルチメディアAPIの名称をかぶせているが、このカテゴライズは、ソフトウェア側のAPIの話ではなく、あくまでもGPUのハードウェア仕様とアーキテクチャを示す。つまり、DirectX 9世代GPUは、DirectX 9に準拠したハードウェア仕様を備えたGPU世代、WGF2.0世代GPUはWGF2.0に準拠したハードウェアを備えたGPU世代ということになる。

 なぜGPUアーキテクチャ世代の名称にMicrosoftのAPI名を使うのか。それには理由がある。業界主流のグラフィックスAPIにはOpenGLもあるが、多くのGPUベンダーにとってベースの仕様を決定する最重要ファクタはMicrosoftのAPIだからだ。少なくとも、過去数世代のPC向けGPUの多くは、DirectXの世代交代を基準点として仕様を変えてきた。特に、NVIDIAとATI Technologiesという2強にその傾向が強い。

 もっとも、DirectX 9やWGF2.0自体はAPIのスペックであって、必要とする仕様のGPUへの実装方式自体を厳密に規定しているわけではない。しかし、実際にはMicrosoftとGPUベンダーの間で、実装についてもある程度話し合われている節がある。そのため、Microsoft側のAPIの世代交代に合わせて、GPUベンダー側も、ある程度足並み揃えてベースアーキテクチャを変革している。API側がベースアーキテクチャを規定するわけではないが、現実にはアーキテクチャの変化とリンクしている。

 この2点から、このコーナーでは、Microsoft APIをGPUアーキテクチャの世代区分に使っている。

●WGF2.0世代GPUのアーキテクチャの特徴

 では、WGF2.0世代GPUでは、何が変わるのか。現状では、まだWGF2.0世代GPUは1つも発表されていない。しかし、GPUベンダーはさまざまなヒントを出しており、そのためある程度まではWGF2.0世代GPUの姿は推測できるようになってきた。

 WGF2.0世代でまず目立つのは“3Dパイプラインを崩している”ことだ。DirectX 7世代の固定機能GPUは、3Dグラフィックスの処理パイプラインに沿った構造になっていた。つまり、「ジオメトリ処理→セットアップ&ラスタライズ→ピクセルレンダリング処理→ラスター処理→フレームバッファ書き込み」という処理の流れをハードウェア化していた。つまり、ソフトウェアが流れ作業でやっていたことを、そのまま一連のハードウェアパイプラインに置き換えたわけだ。

 次に、DirectX 9世代GPUでは、本格的なプログラマビリティが加わった。固定機能パイプラインの頂点処理はVertex Shaderに、テクスチャ&色計算はPixel Shaderに置き換えた。しかし、DirectX 9世代GPUでも、パイプライン構造に沿ったハード配置自体は変わっていなかった。ハード的に見ると、パイプラインの一部をプログラマブルユニットに置き換えただけだ。

 それに対して、WGF2.0世代GPUでは、内部の構造が根底から変わる。処理フローに沿ったハードウェアの分配はなくなり、各ハードウェアリソースは並列に並び、スケジューラがリソースをアロケートするスタイルになる。つまり、WGF2.0世代GPUは、これまでと異なり、3Dグラフィックスパイプをそのままハードウェア実装したものではない。3Dグラフィックスの処理パイプラインは、並列化されたハードの上で半ば仮想的に実現される。

 具体的には、GPUは多数のProgrammable Shaderのアレイを中心に構成されるようになると推定される。WGF2.0世代になると、Vertex ShaderやPixel Shader、Geometry Shaderといった異なるShader間の命令セットの違いは基本的には解消される。ソフトウェア側から見ると、各Shaderは均質な「Unified-Shader」となる。実際には、全てのShaderが同じ機能を備えるとは限らないものの、命令セット上は同等となる。さらに、Shaderアレイを制御するスケジューラユニットが新たに加わり、Shaderへのタスクの割り当てやデータのリタイヤメントといった、GPU全体の管理を担当する。

 従来のGPUでは、ジオメトリパイプとレンダリングパイプの間にラスタライザが位置し、ポリゴンからピクセルを生成していた。WGF2.0では、ラスタライザはパイプラインから分離されたユニットになると言われている。ShaderアレイでのGeometry Shaderの処理が終わった段階で、スケジューラがデータをラスタライザにインプットし、生成したピクセルデータをShaderアレイに戻してPixel Shaderの処理を行なう。また、テクスチャルックアップなどの機能は別ユニット群としてまとめられ、各Shaderからアクセスできるようになるだろう。

●GPUをより汎用プロセッサ化することが目的

 こうして見ると、WGF2.0世代ではGPUアーキテクチャが根底から変わることがわかる。新アーキテクチャの目的は、一言で言えば、GPUをより汎用プロセッサ化することだ。

 ATIのDavid E. Orton(デビッド・E・オートン)社長兼CEOは以前、インタビューで次のように答えている。

 「Shader 4.xについて言えば、パイプラインを通じてのプログラマビリティの拡張と一貫性が背景にあるアイデアだと考えている。バックエンド(ピクセルパイプ)まで一貫性を備え、一般的な意味でのプログラマビリティを得る。グラフィックスエンジンを、より汎用化すると言い換えてもいいかも知れない。

 グラフィックスアーキテクチャがこうした方向性へ向かう理由の第1は、優れたスケーラビリティを得ることにある。限られた数のエンジンを高速に動かすのではなく、より並列化されたエンジンにすることが、(GPUの性能向上にとって)現実的なソリューションだからだ」

 整理すると、GPUはハードワイヤード実装された固定機能のパイプラインだったDirectX 7世代から、多少のプログラマビリティを加えたDirectX 8世代を経て、より高度なプログラマビリティを付加したDirectX 9世代へと進化してきた。しかし、DirectX 9世代でも、GPUを汎用コンピューティングに利用しようという「GPGPU」は話題として持ち上がったものの、現実に盛り上がるまでには至らなかった。

 その理由の1つは、GPUが、まだ汎用プロセッサとして使いやすい構造を備えていなかったことだ。しかし、WGF2.0(=DirectX 10)世代では、GPUのマイクロアーキテクチャ自体も、GPGPUに最適化されたものとなり、いよいよ汎用利用への準備が整う。実際にGPGPUが花開くかどうかは、ソフトウェア開発側の問題もあるので、まだわからない。しかし、ハード的にはその準備が整うことは確かだ。

 そして、これはGPUベンダーにとって、5年越しの移行計画が実を結ぶことを意味している。WGF2.0世代GPUのアーキテクチャのアイデアを、Orton氏のようなビジョナリ達から最初に聞いたのは、まだGPUベンダーがDirectX 8世代GPUを売っていた2002年の前半だった。その頃からすでにGPUベンダーは、WGF2.0世代をゴールとして、アーキテクチャ開発を進めてきた。その意味では、WGF2.0世代GPUは、GPUの進化の1つの到達点になるだろう。

□関連記事
【2004年4月26日】【海外】最新GPUのテーマはShaderの実行効率
http://pc.watch.impress.co.jp/docs/2004/0426/kaigai086.htm
【2004年1月15日】【海外】統合Shaderが次々世代のGPUアーキテクチャの鍵
http://pc.watch.impress.co.jp/docs/2004/0115/kaigai056.htm
【2004年1月14日】【海外】DirectX 11世代のGPUはShaderのアレイになる
http://pc.watch.impress.co.jp/docs/2004/0114/kaigai055.htm
【2003年12月26日】【海外】5年後に“GPUスパコン”の時代がやってくる!?
http://pc.watch.impress.co.jp/docs/2003/1226/kaigai054.htm
【2003年11月28日】【海外】ATI、デビッド・E・オートン社長兼COOインタビュー
http://pc.watch.impress.co.jp/docs/2003/1128/kaigai050.htm

バックナンバー

(2005年4月26日)

[Reported by 後藤 弘茂(Hiroshige Goto)]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp ご質問に対して、個別にご回答はいたしません

Copyright (c) 2005 Impress Corporation, an Impress Group company. All rights reserved.