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

3Dゲームファンのためのプレイステーション 3 GPU講座
~「PS3のGPUは1つではない。全部で1+7個ある」

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

会場:Los Angels Convention Center

 プレイステーション 3のグラフィックサブシステムには謎があった。それは

 (1) UMAを採用せず、CPU(CELLプロセッサ)に接続されるメインメモリをXDR DRAMを256MB、グラフィックスチップ(GPU:RSX、以下RSX-GPU)にGDDR3 SDRAMを256MB……という構成にしたこと。

 (2) NVIDIA社長のJen-Hsun氏のプレゼンでRSXが、自身のビデオメモリ容量256MBを超える512MBのレンダリングが行なえるという記述があったということ。

 この2点だ。

GDDR3 256MBでは、512MB-UMAのXbox 360よりも使い勝手に劣るように思えるが? 実は…… 「最大で512MBメモリへのレンダリングが可能」という記述。ただし、RSXには256MBのビデオメモリしかないはず。この意味するところは?


NVIDIAチーフサイエンティスト、David Kirk氏。あだ名はNVIDIAのKirk船長だ
 これの謎について、RSXの設計元であるNVIDIAへの取材を行なってみた。

 お相手は、NVIDIAの全てのGPU開発に携わる「GeForceの父」の異名を取るチーフ・サイエンティストのDavid Kirk氏だ。


■ PS3のRSX-GPUはメインメモリへもレンダリングが可能

PS3のアーキテクチャブロック図。この図を見る限りRSX-GPUは256MBのGDDR3ビデオメモリしか利用できないように見えるが実は違う
 (1)のメインメモリとビデオメモリが切り分けられて搭載されることのデメリットは、1つに、「グラフィックスに256MBか使えない」という容量制限ができてしまうことだ。レンダーターゲットとなるフレームバッファはPCでいうところのXGAやUXGAに相当するピクセル数のハイビジョン解像度。

 さらに大量のデカールテクスチャの他に、法線マップまでペアに活用される次世代機の3Dグラフィックスではビデオメモリをかなり消費する。

 メインメモリとビデオメモリが統合された形で512MBあるXbox 360では、シーンや状況に応じて512MBの範囲で自在にグラフィック用途とその他の用途で振り分けられる。ところがPS3では256MBの境界があるために自由度の面でXbox 360に劣るのではないか……という疑問が浮上する。

 これについてKirk氏はこう説明する。

 「RSXはCELL側のメインメモリであるXDR DRAM側をレンダーターゲットとして利用できるのだ。だからそうした制約はほとんどないと思っていい」つまり、RSXは、GDDR3 256MB+XDR 256MB=512MBの、トータル512MBの領域をビデオメモリとして活用することが理論上は可能と言うことだ。これが自ずと(2)の謎を解き明かすことになる。

 そう、PCをよく知る読者であればPCでいうころのAGPメモリ……GART(Graphics Aperture Remapping Table)という機構を利用して、GPUがメインメモリをローカルビデオメモリ感覚で直接アクセスできる機能……に近いもの……と考えればこの概念がイメージしやすいはずだ。

 それでは、現実的に、メインメモリをGPUに直結されるGDDR3ビデオメモリと同等の活用ができるかどうかという話をすれば、それは難しいと言わざるを得ない。

CELLプロセッサのアーキテクチャ。RSX-GPUはFlexIOバスに接続される
 このブロック図を見てほしい(右画像)。

 RSX-GPUはCELLとFlex I/Oで接続され、CPU→GPUの下り方向が20GB/s、CPU←GPUの上り方向が15GB/secの帯域に制限される。CPUからXDRメインメモリへの帯域は25.6GB/secあるが、結局、GPUからメインメモリへのレンダリングは上りバス帯域の15GB/secに制限されてここがボトルネックとなってしまう。

 さらにいえば、ブロック図中の「BUS」と記載された部分はPPEと8基のSPEをバケツリレー式に結んだ「Element Interconnect Bus」リングバス構造をしておりここを通る際のレイテンシーはゼロではない。

 結局、完全にビデオメモリのように取り扱うのは難しいということだ。具体的に言えば、シーンをテクスチャにレンダリングしてこれをさらにそのシーンのレンダリングに適用するようなマルチパスレンダリングのシナリオにおいて、そのレンダーターゲットとしてXDRメインメモリだけを活用するとかなりパフォーマンスが低下してしまうということだ。


■ PS3にはSPEというサブGPUがあるじゃないか~RSX-GPUと7基のSPEがSLIを実現する?

 それでは、結局、このPS3のアーキテクチャにアドバンテージはないのだろうか。

 「そんなことはない。CELLプロセッサ内の7基のSPE(Synergistic Processor Element)とRSX-GPUは共同作業ができる。メインメモリ上のグラフィックス関連データにSPEが前処理を施したり、あるいはRSX-GPUからのレンダリング結果をポスト処理的な映像加工を施すことだってできる(Kirk氏)」。

 RSX-GPUがCELLプロセッサのメインメモリにアクセスできると言うことは、裏を返せば、メインメモリはいわば、CELLプロセッサとRSX-GPUの共有メモリという見方もできる。PS3ではこのアーキテクチャがアドバンテージとなる。

 既にここで基本的な解説は行なっているが、CELLプロセッサにはSPEと呼ばれる、4要素の32ビット浮動小数点実数ベクトル演算に特化した128ビットSIMD型RISCプロセッサが7基搭載されている。

 このSPE自身のポテンシャルは、SCEの性能指標を信じてよいものならば、たとえばSPE1基に頂点処理を行なわせると3.2GHz動作時で8億頂点毎秒となり、これは一般的なGPUの複数個分のプログラマブルシェーダに相当する。さらにプログラマビリティに関してはフルスペックのC++が動作するレベルであり、プログラマブルシェーダを遙かに凌駕している。

 既に、SCEでは複数個のSPEをGPU的に活用するソフトウェアグラフィックスエンジンも実験的に完成させており、先日開催されたプレスカンファレンスでも、SPEだけでレンダリングしたグラフィックスを公開した。

SPEだけでレンダリングしたフライトシミュレータライクなフライバイ・デモ。法線マップまでも適用
ロンドンのピカデリーサーカスの風景をリアルタイムレンダリングで表現したデモ。これもCELLプロセッサのSPEのみを使ってレンダリングしたものだという
Electronic Artsが示したPS3試作機で動作するボクシングゲームのインタラクティヴ・コンセプト・デモ。こちらはSPEとRSXのコンビネーションによって実現されたものだという


NVIDIA提供
 たとえば、あるシーンを複数のレンダーターゲットを用いてマルチパスでレンダリングする際を考えてみる。

 たとえば、図のような水面に周囲の情景が映り込むシーン。

 こうしたシーンの場合、シーン全体のレンダリングの前に、水面を境に反転した水面下の位置からのシーンをテクスチャとしてレンダリングする(反射マップの生成)。

反射マップ。これをSPEでレンダリングさせれば?
 そして最終レンダリング時には、このテクスチャを使って水面への映り込みを表現していくわけだが、1個のGPUのシステムでは、これらを全て自分一人で行なう。仮に反射マップの生成に時間を取られるとレンダリング全体が遅延しフレーム落ちへと結びつく。

 この反射マップをもし、CELLプロセッサ側のSPEでRSX-GPUの動作と並行してレンダリングすることができれば、RSX-GPU一人で全てをやるよりも処理時間の短縮になる。すなわちパフォーマンスが向上する。

 RSX-GPUが最終的なレンダリングを行なう際には、XDRメインメモリからこの反射マップを取り出すことになり、これはFlexIOのGPUへの下り帯域である20GB/secに制限される。しかし、トータルで見れば十分な性能稼ぎになるはずだ。

 この場合、メインメモリ側にもビデオメモリ側にもジオメトリセットやテクスチャセットをロードしておく必要があるが、反射マップのような用途の場合、もともと歪ませて表示したりするので、モデル精度が粗かったりテクスチャ解像度が低くてもさしたる問題にはならない。まあ、ここで示したものは説明のための例でしかないが、このようにレンダリングをRSX-GPUとSPEの共同作業で行うというアイディアはかなりユニークなフィーチャーだと言える。

 NVIDIAは複数のGPUでレンダリングを行なう技術「SLI」をもっているが、このPS3の仕組みは、ある意味、セミ版SLIといえるかもしれない。


■ SPEでレンダリングした映像の画像処理を行なうこともできる

GDC2004「Practical Implementation of High Dynamic Range Rendering」川瀬正樹氏のスライドより。HDRレンダリングしたフレーム中の高輝度部分が溢れ出す効果を実現するためには、このような低解像度で生成したブルームエフェクトフレームを多数枚合成する必要がある。Kirk氏は「こうしたポスト処理をSPEに任せることもできるだろう」という
 「モーションブラーや被写界深度のシミュレーション、HDRレンダリング時のブルームエフェクトなどのポスト処理……すなわちRSX-GPUがレンダリングした結果をCELLのSPEで画像処理する……といった活用も考えられるだろう(Kirk氏)」。

 高速に動いているようにぶれて見せるモーションブラー、ピントが合ってないようなぼやけた映りにする被写界深度のシミュレーション、あまりにも強く輝いているために光が溢れ出して見えるブルームエフェクトなどの処理においては、RSX-GPUがXDRメインメモリ側にシーンをレンダリングし、このフレームに対して、複数のSPEがよってたかって画像加工処理する……という流れになるだろうか。

 あるいは、先ほどの反射マップの考え方と同じに、解像度の低いブラー用、ほやけ用、ブルーム用のフレームをSPEで作成し、これを最終段階でRSX-GPUにてレンダリングした表示フレームと合成する……といった流れも考えつく。どちらが効果的か、性能が高いか、はケースバイケースだ。


■ SPEでレンダリングした映像の画像処理を行なうこともできる

次世代Windows、longhornにはテッセレータの仕組みが導入される予定だったが諸般の事情によってキャンセルされた
 「SPE達に頂点処理をさせて、これをRSX-GPUでレンダリングすることもできる(Kirk氏)」。

 RSX-GPUには既にプログラマブル頂点シェーダがあるため、SPEで頂点処理をする意味がないように思えるかもしれない。しかし、SPEの高いプログラマビリティをもってすれば、RSX-GPU側のプログラマブル頂点シェーダにはできない高度な処理系を実装することができる。

 たとえば、次世代Windowsのグラフィックサブシステムでも標準実装が見送られてしまったテッセレータをSPE上のソフトウェアで実装するアイディアを思いつくだろう。ちなみにテッセレータとは特定のメソッドでポリゴンを自動分割する仕組みのこと。

 テッセレータの応用はいくつかあって、最も基本的な活用は、少ない頂点で与えられた3Dモデルをベジェ曲線関数などに従ってテッセレータを適用して多ポリゴンモデルに昇華させる場合だ。

 もう少し高度なのは、凹凸を表現した高さマップ・テクスチャに従って3Dモデルを粘土細工のように変形させる活用法もある。これは特にディスプレースメントマッピング(変移マッピング)という。

ディスプレースメントマッピングの例。この例では少数ポリゴンで構成された基本モデルに対し、ディテールを表す凹凸テクスチャを適用して多ポリゴンモデルを作り上げている。図提供:MATROX


 こうしたテッセレータの処理系がGPUにインプリメントされない理由はいくつかあるが、理由の筆頭としてあげられているのは、GPU側でテッセレータを実装してしまうと、ゲーム処理系とは分離されてしまい、ビジュアルとゲーム処理の整合性がうまくいかなくなるため。

 たとえばディスプレースメントマッピングで角をキャラクタに生やせた場合。ゲームの当たり判定はCPUのソフトウェア処理で実践するのが一般的だ。GPU側の処理系で見た目的に角を生やしたとしても、CPU側で管理するキャラクタモデルには角が生えていないため、角には事実上当たり判定が行なえない。ところが、SPEはCPUの一部であり、SPEで角を生やせば、この角を生やしたモデルに対しても当たり判定の処理が行なえる。

 この他、視点からの距離に応じて描画ポリゴン数を増減させる動的なLODの実装もSPEを活用して行なえるかもしれない。

Level of Detailの概念。視点に近い位置ほど多くのポリゴン数を使い、遠くは少数のポリゴンでおおざっぱに描いて描画パフォーマンスを稼ぐ。この仕組みをSPEで実装できるか? 図提供:MATROX



■ SPEで物理シミュレーションをさせて結果をグラフィックスに反映させる

 「SPEとGPUの共同作業を活用すれば、グラフィックスと相互作用する物理シミュレーションも可能になるか」という問いかけに対してKirk氏は「十分可能だろう」と答える。

 水面の“さざ波”表現は現在、法線マップのアニメーションで表現されることが多い。このさざ波の波動シミュレーションは、さざ波の高さをテクスチャ化したハイトマップ(高さマップ)の次元で波動物理シミュレーションを行ない、その結果から法線マップを生成して、これを最終的なレンダリングに使用する。

 これまではこうしたテクスチャベースの波動シミュレーションをGPUで行なっていたが、これをCELLのSPEでRSX-GPUと並行作業で行なえればパフォーマンスアップに結びつく。これもやっている内容自体は違うが、考え方としては、最初の反射マップの例と変わらない。

Kirk氏は「PS3の仕組みはソニーとNVIDIAの技術の結晶体だ。とにかく素晴らしいものになったと自負している」と言う これまで全てGPUでやっていたようなことを、CELLプロセッサのSPEに担当させられる。例えばこの図でいけば、PS3のアーキテクチャであれば「シミュレーション」と「テクスチャ」のブロックをSPEに任せることができるはずだ


 アーキテクチャ・ブロック図上はメインメモリとビデオメモリとで分断されてしまった形のPS3だが、CELLのSPE達がグラフィックス処理に参加できる可能性が示唆されたことは、「PS3でできること」の可能性を大きく広げたように思える。

 もちろん、CELLのSPE、7基全部がグラフィックス処理にかり出されるケースは少ないと思われるが、SPEのグラフィックス処理への活用が、RSX-GPUのポテンシャルを超えた映像を作り出すことに結びつくことは間違いない。

SPEでジオメトリ処理系のパイプラインを構築するとこんな感じになるだろうか。この図では4基のSPEをグラフィックス処理に活用してみた例


□ソニー・コンピュータエンタテインメントのホームページ
http://www.scei.co.jp/
□関連情報
【5月17日】3Dゲームファンのためのプレイステーション 3基本講座
~プレイステーション 3のスペック表の読み方
http://game.watch.impress.co.jp/docs/20050517/ps3.htm
【3月16日】3DゲームファンのためのPS3発表直前予習講座
~PS3はOpenGL/ES“2.0”ベース
http://game.watch.impress.co.jp/docs/20050316/ps3.htm

(2005年5月19日)

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


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

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

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