【Watch記事検索】
最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

【Electronic Entertainment Expo 2005現地レポート】

3DゲームファンのためのXbox 360-GPU講座
~「ATIのXbox 360-GPUはNVIDIAもうらやむGPUだ」

5月18日~20日開催(現地時間)

会場:Los Angeles Convention Center

 北米時間2005年5月19日、ATIはグラフィックス業界や半導体業界のアナリストやメディアを集めて、Xbox 360用のGPUの詳細な技術ブリーフィングを行なった。

「The Xbox 360 Visual Experience」と題されて開催された技術ブリーフィング ATIブースでは、最近のATIイメージキャラクタRUBYにそっくりなコスプレモデルがお出迎え。CGキャラにすごく似ていることもあってブース前は写真撮影の嵐 ATIブースではXbox 360試作機を使ってのリアルタイムデモを披露
デモの内容は当然、RUBYの新作ムービークリップだ


 単なる数値スペックの羅列でしかなかった配付資料とは異なった、かなり詳細な情報が開示されたのでレポートしたい。


■ Xbox 360-GPUの開発経緯~ボトルネックのないGPUを創り出す

 簡単な前置きがあったのでまずはここから軽く整理しておこう。

 Xbox 360-GPUは、「PS3のRSX」のような正式名は今のところなく、当面はXbox 360-GPUのような一般名で呼ばれることになるのだそうだ。開発にあたりキーコンセプトとして提示されたのは

 (1) Power
 (2) Balance
 (3) Flexibility
 (4) Headroom

 以上の4点だったという。抽象的でわかりにくいと思うので簡単に解説しておこう。

マイクロソフト、Xboxハードウェア・ジェネラルマネージャー、Todd Holmdahl氏。「2003年のマイクロソフトとの技術提携発表より開発が始まり、約2年間の開発期間を経て生まれることとなった」 ATIリサーチ、バイス・プレジデント/エンジニアリング、Robert Feldstein氏。「我々のはXbox 360-GPU専用設計だ。eDRAM機能などPC用GPUとは異なる専用設計が多い。ただ流用しただけの“彼ら”のとは素性が違う」 Xbox 360-GPUの開発キーコンセプトとはこの4点だった


 (1) Powerは絶対的な性能を意味しており、それこそ競合機のPS3に負けないだけのパフォーマンスを獲得できる設計を目指すという意味になる。

 (2) Balanceはボトルネックの排除を指している。様々なゲームが動作させられるゲーム機において、GPUにかかる負荷はタイトルごとに、あるいはシーンごとによって異なる。常に最大パフォーマンスを得るためには、グラフィックス処理を進めていく中でボトルネックがあっては困るのだ。これを検知して自動的に負荷を軽減できる仕組みがあればこれは素晴らしいことだ。

 (3) Flexibilityは柔軟性……すなわちプログラマビリティや機能の多様性を意味している。プログラマブルシェーダは当然として、Xbox 360-GPUではその先にあるものを目指したという。

 (4) Headroomは性能に余力があることを指している。ゲーム機は登場後、数年は、そのアーキテクチャが固定化されるために、性能が十分でないと、登場してくるゲームの根本設計に制限を与えてしまうことになる。

Xbox 360-GPUの特徴的なアーキテクチャは「Adaptive Shader」、「Modeling Engine」、「Intelligent Memory」……この3つのキーワードに集約されている
 そこで、ATIが導き出したのは

 (a) Adaptive Shader Array(動的な配列交換が行えるプログラマブルシェーダ)
 (b) Modeling Engine(プログラマブルシェーダソフトウェアによって実現される特殊機能API)
 (c) Intelligent Memory(3Dグラフィックス処理ロジックを内蔵統合した特殊なeDRAM)

という、これまでのATI RADEONやNVIDIA GeForceには見られなかった独創的なアーキテクチャデザインであった。


■ Xbox 360-GPUのパイプラインはこうなっている~世界初の統合型シェーダアーキテクチャを採用したGPU

Xbox 360-GPUのブロックダイアグラム
 Xbox 360-GPUアーキテクチャのパイプラインは図のようになる。

 まず、ざっとみて驚くと思われるのが、プログラマブルシェーダに、頂点シェーダとピクセルシェーダという区分がないということ。そう、汎用の強力なプログラマブルシェーダユニットが16基×3ブロック=48個あり、これを今実行しているグラフィックス処理における負荷状況に応じて、これらを任意に頂点処理とピクセル処理に振り分ける仕組みをもっているのだ。

 そう、これが、前段で触れた、Xbox 360-GPUの特徴的なアーキテクチャである「(a)Adaptive Shader Array」なのだ。ここからは各ブロック別に解説を行なっていきたいと思う。

●Command Processor

 メモリから描画コマンド(描画リスト)を取り出しデコードするブロックだ。

●Vertex Grouper

 描画コマンドから頂点データを取り出し、これをどう処理していくかを計画するブロック。頂点データはここに来て、頂点シェーダにて頂点単位の光源処理や座標変換処理を行なう必要が出てくる。

 ここでSequencerを介して48個(16×3)あるシェーダアレイのうちどれかを「プログラマブル頂点シェーダ」として起用する。なお、頂点キャッシュが効きやすいように、複数の頂点を適宜ピックアップして1グループとしてSequencerに発行する。このため、シェーダアレイから、いくつのシェーダリソースが「プログラマブル頂点シェーダ」として起用されるかは可変。

●Primitive Assembly

 透視変換(視点から見た情景を創り出すこと)してできあがったポリゴンで創られたシーンを画面上のピクセルに割り当てていく操作。いわゆるこれまでのGPUでいうところの「ラスタライザ」だ。この部分は完全に機能が固定されたロジックでプログラマビリティはない。

●Scan Converter

 ピクセル単位に分割された仕事を、Sequencerを介して48個あるシェーダのうちどれかを「プログラマブルピクセルシェーダ」として起用する。

●Sequencer

 Sequencerは、大局的に見れば、48個あるプログラマブルシェーダリソースをプログラマブル頂点シェーダに割り振るのか、プログラマブルピクセルシェーダに割り振るのかを制御する部分というイメージになる。

 しかし、Robert Feldstein氏の説明では、Sequencer自体がプロセッサのようなイメージで、ここでシェーダプログラム自体を実行しているとのこと。ここでは箱1つの図柄だが、実際には相当複雑かつ大規模なロジックになっていると思われる。命令セットは頂点シェーダとピクセルシェーダの命令セットを統合しており、プログラム実行には高度な分岐予測機構も組み込まれているという。

 Feldstein氏によれば「想像の付く範囲の命令はほぼ全て実装している」とのことで、プログラマビリティに関しては、PS3のCPU(CELLプロセッサ)のSPE(Synergistic Processor Element)に優るとも劣らないレベルだと思われる。

●Shader Pipe

 16基単位で3ブロック、合計で48基のシェーダユニット。実体としては浮動小数点実数(FP)で構成されるベクトル(SIMD)演算器というイメージだ。4要素のベクトル演算(積和算)とスカラFP演算(1要素FP)を同時に1サイクル(クロック)で行なうことができる。1サイクルあたり(4要素×2演算+1スカラ演算)×48=432FLOPとなり、Xbox 360-GPUは500MHz駆動されるので、ピーク性能はシェーダだけで432*500MHz=216GFLOPSとなる。

 なお、実は、このシェーダ部分は仮想化がなされており、Sequencerからは64個のシェーダがあるように見える。64スレッドのシェーダ処理は、適宜48個のシェーダにて時分割的に行なわれる。

●Texture Cache/Texture Pipe

 局所的なテクスチャアクセスの高速化のためにあるのが一度参照したテクスチャ(というよりもある一握りのテクセルデータ)をため込んでおくのがTexture Cacheだ。Texture Pipeはビデオメモリ上に配置されたテクスチャマップからテクセルデータ(テクスチャを構成している画素のこと)を取り出す役割を担う。4基しかないのは少なく思えるかもしれない。テクスチャ読み出しとはメモリの読み出しであり、プロセッササイクルと比較すればメモリの読み出しには結構な時間が掛かる。

 つまり、闇雲にTexture Pipeを増やしてもメモリの速度が十分でなければ意味がない。メモリ帯域~Xbox 360の場合は22.4GB/sec~とのベストバランスを考えてこの構成となったようだ。

●Vertex Cache

 局所的な頂点データの取り出しを高速化する仕組み。一度利用した頂点データをここにため込んでおく

●Shader Interp.

プログラマブルシェーダ3.0仕様では2.0仕様に対して頂点シェーダからの出力として「2D座標系でのXY画面座標」や「面の向き」などの情報が追加された。Xbox 360-GPUのShader Interpolatorはこうしたプログラマブルシェーダの仕様拡張にも対応できるということだ
 Shader Interpolatorの略で、頂点シェーダからの出力に対し、各ピクセルシェーダに渡す値として補間処理を行うユニットになる。

 ポリゴンはピクセルに分解されて最終的にレンダリングパスへと進む。つまり頂点シェーダは必然的に複数のピクセル処理を生み出す。この際に、それぞれのピクセルシェーダへ受け渡す値を作り出しているのがこのブロックになる。

 Xbox 360-GPUのような統合型シェーダアーキテクチャでは、各シェーダが頂点シェーダになったりピクセルシェーダになったりする。頂点シェーダとして働いた際の出力結果をこのブロックで一時保管して、ピクセルシェーダとして働く際にはここからその結果を引き継いで仕事をこなす。

 なお、将来、プログラマブルシェーダがメジャーバージョンアップしたさいに頂点シェーダの出力が増えたとしても対応できるキャパシティを備えているという。

●Pipe Comm.

 Piep Communicationの略だと思われる。Xbox 360には組み込みメモリが搭載されており(詳しくは後述)、こことのやりとりを行なうのがこのブロックの仕事だ。

 非常にユニークな構成だが、このブロック図の左側の「Vertex Grouper→Primitive Assembly→Scan Converter」という流れ(パイプライン)は、従来のGPUにおける「プログラマブル頂点シェーダ→ラスタライザ→プログラマブルピクセルシェーダ」そのものであり、その実行自体を「Sequencerを介して外注に出す」と考えれば、「これまでの見慣れたGPUの変形版」というふうにも思えてくるはずだ。


■ Xbox 360-GPUの組み込みメモリの秘密~3Dグラフィック処理機能が内蔵された特殊なメモリ、それが10MBのeDRAMだ!

Xbox 360の象徴的な機能ブロックであるeDRAM。実はここにはピクセルプロセッサが内蔵されていた


アンチエリアス処理はXbox 360のゲームタイトルに必須とされる要素。Xbox 360-GPUでは、4xFSAAまでは性能低下にならない
 Xbox 360-GPUの特徴の一つとなっている10MBのeDRAM(組込型メモリ)。ここにもあるように、この10MBのeDRAMはNECエレクトロニクスによって製造される。

 この10MBという中途半端な容量のeDRAMは、一体何に使われるのかが謎だったのだが、今回のブリーフィングで解明された。結論から言えば、一種のスクラッチパッドメモリ的な活用がなされる。単なるキャッシュメモリではない。主にピクセル処理の際に活用され、“ひとかたまり”の複数のピクセルがここに集められ、各種ピクセル処理をここで一気に行なってしまうイメージになる。そう、Xbox 360-GPUのeDRAMは単なるメモリでなく、ピクセルプロセッサを内包しているのだ。その数は192個にも上る。

 この高速なeDRAMと大量のピクセルプロセッサで何の処理を行なうかというと、Z処理(深度情報処理)、α処理(透明度合成処理)、ステンシル処理(切り抜き処理)だ。さらに、アンチエリアス処理もここで行なってしまう。

 Z処理は、これから描画しようとしているピクセルが、既に描画済みの映像の存在の奥行き関係で見えるかどうかを調べ、見えなければ描画しないで破棄する/見えるのなら描画する……といった処理に必要とされる。Z処理はとどのつまりはZバッファからのZ値の取り出しと書き込みの繰り返しであり、つまりはメモリアクセスだ。Z処理は各種影生成の処理系でも活用されることになるため、そのメモリアクセス量は頻繁でパフォーマンス低下に結びつきやすい。

 α処理やステンシル処理、アンチエリアス処理も同様で、頻度の高いメモリアクセスとごく基本的な演算処理の組み合わせ突き詰められる。こうした処理系を、この高速なeDRAM内で、しかもここに組み込まれたピクセルプロセッサで一気に並列処理してしまえば、効果的ではないか……ということでこの仕組みが実装されたのだ。Xboxプレスカンファレンスでマイクロソフトのピーター・ムーア氏が「Xbox 360の全てのゲームはかならずアンチエリアス処理が適用される」と強調したことは記憶に新しい。

 Feldstein氏によれば、4点サンプル式のアンチエリアス処理……いわゆる「4xFSAA処理」であれば、このeDRAMの仕組みにより、パフォーマンス低下はゼロだ(あるいはそれに近い)……と説明する。

 上であげたXbox 360-GPUの特徴機能である(c)Intelligent Memoryとは、この機能のことを行なっているのだ。


■ シェーダソフトウェアの形で提供されるグラフィック特殊機能、それがModeling Engine

 解説する順番が逆転してしまったが、前述したXbox 360-GPUの特徴機能である(b)Modeling Engineについても解説しよう。これは、ブロック図には存在しない。結論から言えば「ソフトウェア」と思ってもらっていい。もっと言えば、開発サイドから見ればAPI的に提供されるもの……だ。

 今回のブリーフィングでは「Modeling Engine」にて提供される機能としては

 (ア) Global Illumination……相互反射や高次反射をはじめとした大局照明
 (イ) High Order Surface……高次曲面
 (ウ) Tone Mapping……ハイダイナミックレンジレンダリング後のラチチュード補正。カメラの露出、瞳の絞り制御のシミュレーション

 といったものがあげられた。

 実装レベル、実体レベルの話をすれば、この「Modeling Engine」とは、非常に高度なXbox 360-GPUのプログラマブルシェーダのプログラマビリティを活用して作られた、ソフトウェアベースのシェーダライブラリということになる。

 Feldstein氏によれば、「Xbox 360-GPUのプログラマブルシェーダは非常に高度なプログラマビリティを備えており、しかも、各シェーダで取り扱うデータは、頂点処理、ピクセル処理といったグラフィックスのセマンティックスにとらわれない。そこで、これまではCPUでしか行なえなかった処理系をGPUフェーズで行なえるようになるのだ」と強調する。

「我々のXbox 360-GPUは家庭用ゲーム機向けのGPUとしてはどう考えても最強だ」(Feldstein氏) ブリーフィング後のインタビューで、筆者の「SPEのようにゲーム内物理を計算させることも可能か」という質問に「十分可能。でもCPUも十分パワフルなのでそっちを使うべきかも」と答えてくれたのは、元マイクロソフト社員でXbox1のミドルウェアのプログラムマネージャだったDrew Angeloff氏。現在はATIでSenior Strategy Managerを務める


 (ア)について、Feldstein氏は「複数回の光の反射をシミュレーションする処理系」だというので、おそらくレイトレーシング的なものだと思われる。

 レイトレーシングというと3Dゲームグラフィックスのようなリアルタイム処理系とは縁遠い存在に思えるかもしれないが、そんなこともない。その3Dモデルがどのような遮蔽構造をしているかをテクスチャで表す遮蔽項マップなどの生成には、局所的なレイトレーシングの概念が活用される。これは交叉判定の処理系が必要であるためにCPUで行なうことが普通であったが、高度なプログラマビリティを備えるXbox 360-GPUのシェーダユニットならばそれも可能になる。

 そして、遮蔽項マップは通常、事前計算で用意するものだが、これが変形するキャラクタに対して毎フレームリアルタイムで高速に計算できれば、そのキャラクタ自身で完結してよいセルフシャドウ程度ならばかなり容易に表現できるようになる(さすがにこれは今世代では無理か?)。

 こうした光を投げてその軌跡を追ってその結果をテクスチャに焼き込む……という処理系は、マイクロソフトがDirect 3Dで力を入れ始めた球面調和関数(Spherical Harmonics)を活用した事前計算放射輝度伝達(Precomputed Radiance Transfer:PRT)などにも応用できるだろう。

遮蔽項テクスチャを使ったライティングはもっとも単純化されたGlobal Illumintionの形(左端と中央)。最近のPCゲームではAGE OF EMPIRES IIIが使っている(右端)
Global Illuminationとは何か。光の伝搬をシミュレーションするもの 光の伝搬とはこんなケースが考えられる。こうした光の伝搬のシミュレーションをテクスチャに球面調和関数のパラメータとして焼き込んでGlobal Illuminationを行なうのがPRTだ


テッセレータの例。かつてRADEON8500では(c)のN-Patchをサポートした。Xbox 360-GPUでは(d)の頂点テクスチャリングも可能
 (イ)も注目度の高いフィーチャーだ。

 Feldstein氏は「スプラインやベジェなど様々な関数メソッドでポリゴンを自在に分割する、適応型テッセレータを実現した」と述べた。

 「適応型テッセレータ」は次世代WindowsのLonghornのグラフィックサブシステム「WGF2.0」で、実装が断念/延期されたフィーチャーだ。これをXbox 360-GPUではModeling Engineというソフトウェアの形で実装している。

 視点からの距離に応じて、分割増減数を自動制御する仕組みも可能だといい、これは実質的に動的なLevel of Detail(LOD:視点からの距離に応じて3Dモデルを構成するポリゴン数を増減させる仕組みのこと)の実現に相当する。

Level of DetailをGPUでアクセラレーションすることはリアルタイム3Dグラフィックスの長年の夢であった


 「凹凸テクスチャに従って、ポリゴンモデルを変形させるディスプレースメントマッピングも当然のごとく実現可能だ」(Feldstein氏)

適応型テッセレータが実装されると凹凸マップを3Dモデルに適用してジオメトリレベルでの変形を行なうディスプレースメントマッピングも実用化が可能 かつてMATROXは適応型テッセレータをParheliaシリーズに実装させた。これと同等の処理系をXbox 360-GPUならばプログラマブルシェーダのソフトウェアとして実装できるようになった


 ある意味、Xbox 360-GPUでは、次世代DirectXであるWGF2.0のさらに先のグラフィックスシステムを先取りして実現している……といってもいいかもしれない。

次世代Windowsのグラフィックサブシステム。点線ボックスの「テッセレータ」は当面搭載が見送られることとなった。「ジオメトリシェーダは今のModeling Engineにはないが、多分実装できると思う」(Feldstein氏)
 なお、このModeling EngineはXbox 360の開発キットのAPIとして提供され、順次アップグレードがなされていくという。将来登場するかもしれない新しいグラフィック技術のアイディアも、シェーダプログラムとして随時実装され、Xbox 360の新たなグラフィックス特殊表現として追加されていくことになる。

 PS3のSPEもかなりユニークなグラフィックス処理の未来像を示唆してくれたが、Xbox 360-GPUは、そのGPUの中にSPEがあるような印象を抱かせ、可能性という意味に置いてはPS3に優るとも劣らない。

 リアルタイム3Dグラフィックスのキャンパスとして、Xbox 360とPS3はそれぞれ異なった可能性を秘めているといえるのではないだろうか。

□Xboxのホームページ
http://www.xbox.com/ja-jp/
□「Xbox 360」のページ
http://www.xbox360.com/
□関連情報
【5月18日】3DゲームファンのためのXbox 360基本講座
~Xbox 360の目指すゴールはどこにあるのか
http://game.watch.impress.co.jp/docs/20050518/x360.htm

(2005年5月20日)

[Reported by トライゼット西川善司]


Q&A、ゲームの攻略などに関する質問はお受けしておりません
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします

ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp

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