|
単なる数値スペックの羅列でしかなかった配付資料とは異なった、かなり詳細な情報が開示されたのでレポートしたい。 ■ Xbox 360-GPUの開発経緯~ボトルネックのないGPUを創り出す 簡単な前置きがあったのでまずはここから軽く整理しておこう。 Xbox 360-GPUは、「PS3のRSX」のような正式名は今のところなく、当面はXbox 360-GPUのような一般名で呼ばれることになるのだそうだ。開発にあたりキーコンセプトとして提示されたのは
(1) Power
以上の4点だったという。抽象的でわかりにくいと思うので簡単に解説しておこう。 (1) Powerは絶対的な性能を意味しており、それこそ競合機のPS3に負けないだけのパフォーマンスを獲得できる設計を目指すという意味になる。 (2) Balanceはボトルネックの排除を指している。様々なゲームが動作させられるゲーム機において、GPUにかかる負荷はタイトルごとに、あるいはシーンごとによって異なる。常に最大パフォーマンスを得るためには、グラフィックス処理を進めていく中でボトルネックがあっては困るのだ。これを検知して自動的に負荷を軽減できる仕組みがあればこれは素晴らしいことだ。 (3) Flexibilityは柔軟性……すなわちプログラマビリティや機能の多様性を意味している。プログラマブルシェーダは当然として、Xbox 360-GPUではその先にあるものを目指したという。 (4) Headroomは性能に余力があることを指している。ゲーム機は登場後、数年は、そのアーキテクチャが固定化されるために、性能が十分でないと、登場してくるゲームの根本設計に制限を与えてしまうことになる。
(a) Adaptive Shader Array(動的な配列交換が行えるプログラマブルシェーダ)
という、これまでのATI RADEONやNVIDIA GeForceには見られなかった独創的なアーキテクチャデザインであった。 ■ Xbox 360-GPUのパイプラインはこうなっている~世界初の統合型シェーダアーキテクチャを採用したGPU
まず、ざっとみて驚くと思われるのが、プログラマブルシェーダに、頂点シェーダとピクセルシェーダという区分がないということ。そう、汎用の強力なプログラマブルシェーダユニットが16基×3ブロック=48個あり、これを今実行しているグラフィックス処理における負荷状況に応じて、これらを任意に頂点処理とピクセル処理に振り分ける仕組みをもっているのだ。
そう、これが、前段で触れた、Xbox 360-GPUの特徴的なアーキテクチャである「(a)Adaptive Shader Array」なのだ。ここからは各ブロック別に解説を行なっていきたいと思う。 メモリから描画コマンド(描画リスト)を取り出しデコードするブロックだ。 ●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.
ポリゴンはピクセルに分解されて最終的にレンダリングパスへと進む。つまり頂点シェーダは必然的に複数のピクセル処理を生み出す。この際に、それぞれのピクセルシェーダへ受け渡す値を作り出しているのがこのブロックになる。 Xbox 360-GPUのような統合型シェーダアーキテクチャでは、各シェーダが頂点シェーダになったりピクセルシェーダになったりする。頂点シェーダとして働いた際の出力結果をこのブロックで一時保管して、ピクセルシェーダとして働く際にはここからその結果を引き継いで仕事をこなす。
なお、将来、プログラマブルシェーダがメジャーバージョンアップしたさいに頂点シェーダの出力が増えたとしても対応できるキャパシティを備えているという。 Piep Communicationの略だと思われる。Xbox 360には組み込みメモリが搭載されており(詳しくは後述)、こことのやりとりを行なうのがこのブロックの仕事だ。
非常にユニークな構成だが、このブロック図の左側の「Vertex Grouper→Primitive Assembly→Scan Converter」という流れ(パイプライン)は、従来のGPUにおける「プログラマブル頂点シェーダ→ラスタライザ→プログラマブルピクセルシェーダ」そのものであり、その実行自体を「Sequencerを介して外注に出す」と考えれば、「これまでの見慣れたGPUの変形版」というふうにも思えてくるはずだ。 ■ Xbox 360-GPUの組み込みメモリの秘密~3Dグラフィック処理機能が内蔵された特殊なメモリ、それが10MBのeDRAMだ!
この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……相互反射や高次反射をはじめとした大局照明 といったものがあげられた。 実装レベル、実体レベルの話をすれば、この「Modeling Engine」とは、非常に高度なXbox 360-GPUのプログラマブルシェーダのプログラマビリティを活用して作られた、ソフトウェアベースのシェーダライブラリということになる。
Feldstein氏によれば、「Xbox 360-GPUのプログラマブルシェーダは非常に高度なプログラマビリティを備えており、しかも、各シェーダで取り扱うデータは、頂点処理、ピクセル処理といったグラフィックスのセマンティックスにとらわれない。そこで、これまではCPUでしか行なえなかった処理系をGPUフェーズで行なえるようになるのだ」と強調する。 (ア)について、Feldstein氏は「複数回の光の反射をシミュレーションする処理系」だというので、おそらくレイトレーシング的なものだと思われる。 レイトレーシングというと3Dゲームグラフィックスのようなリアルタイム処理系とは縁遠い存在に思えるかもしれないが、そんなこともない。その3Dモデルがどのような遮蔽構造をしているかをテクスチャで表す遮蔽項マップなどの生成には、局所的なレイトレーシングの概念が活用される。これは交叉判定の処理系が必要であるためにCPUで行なうことが普通であったが、高度なプログラマビリティを備えるXbox 360-GPUのシェーダユニットならばそれも可能になる。 そして、遮蔽項マップは通常、事前計算で用意するものだが、これが変形するキャラクタに対して毎フレームリアルタイムで高速に計算できれば、そのキャラクタ自身で完結してよいセルフシャドウ程度ならばかなり容易に表現できるようになる(さすがにこれは今世代では無理か?)。
こうした光を投げてその軌跡を追ってその結果をテクスチャに焼き込む……という処理系は、マイクロソフトがDirect 3Dで力を入れ始めた球面調和関数(Spherical Harmonics)を活用した事前計算放射輝度伝達(Precomputed Radiance Transfer:PRT)などにも応用できるだろう。
Feldstein氏は「スプラインやベジェなど様々な関数メソッドでポリゴンを自在に分割する、適応型テッセレータを実現した」と述べた。
「適応型テッセレータ」は次世代WindowsのLonghornのグラフィックサブシステム「WGF2.0」で、実装が断念/延期されたフィーチャーだ。これをXbox 360-GPUではModeling Engineというソフトウェアの形で実装している。
「凹凸テクスチャに従って、ポリゴンモデルを変形させるディスプレースメントマッピングも当然のごとく実現可能だ」(Feldstein氏)
ある意味、Xbox 360-GPUでは、次世代DirectXであるWGF2.0のさらに先のグラフィックスシステムを先取りして実現している……といってもいいかもしれない。
PS3のSPEもかなりユニークなグラフィックス処理の未来像を示唆してくれたが、Xbox 360-GPUは、そのGPUの中にSPEがあるような印象を抱かせ、可能性という意味に置いてはPS3に優るとも劣らない。
リアルタイム3Dグラフィックスのキャンパスとして、Xbox 360とPS3はそれぞれ異なった可能性を秘めているといえるのではないだろうか。 (2005年5月20日) [Reported by トライゼット西川善司]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2005 Impress Corporation, an Impress Group company. All rights reserved. |
|