|
会場:San Jose McEnery Convention Center
■ PS3のパフォーマンスはSPEが握っている PS3を支える根幹技術はBlu-Rayドライブ、グラフィックスを司るRSX、CPUであるCELLプロセッサの3点に集約されると思う。Blu-Rayは50GBの大容量性とハイビジョン画質の映像を身近なものにするわけだが、既にハイビジョンは放送では身近なものになっているし、50GBという容量も数倍の容量のハードディスクがローエンドPCにも搭載されているのでイメージはしやすい。RSXについても前回述べたようにPC用グラフィックスプロセッサ(GPU)であるGeForce 7800 GTXと設計を同じくするためにそのポテンシャルは想像の範囲内だ。 問題はCELLだ。とくに7基搭載され、うち6基が自由用途として提供される128ビットのSIMD型ベクトルRISCプロセッサ「SPE(Synergistic Processor Elelement)」が謎めいている。一体なにができてどのくらいのパフォーマンスなのか。
前回述べたように、SPEは256KBのローカルストアと呼ばれるL1キャッシュ並みの速度で動作する高速なSPEにとってのメインメモリにてデータを取り扱いプログラムを走らせる。SPE自身はメインメモリや複数ある自分以外のSPEのことを気にせず、文字通り完全独立並列動作できるが、メインメモリや他のSPEとの連携にはMFC(Memory Flow Controller)のDMA(Direct Memory Access)を介さなければならず、このレイテンシが無視できない大きさとなるので、今までのマルチスレッドプログラミングとは異なった設計方針が必要になるのだ。
それではSPEを具体的にどのように活用することができるのだろうか。 なお、PS3におけるSPEの動作モードについてはここで一度解説しているので、ここではそれ以外のことについて見ていく。
(筆者注:PPEの中にあるプロセッサコアがPPU、SPEの中にあるプロセッサコアがSPUなのだが、登壇者や各スライドによって同義に扱っている場合がある。PPU→PPE、SPU→SPEと読み替えて貰っても問題はない点に留意されたし)
■ SPEにもグラフィックス処理をさせるという発想
SPEは優秀なベクトルプロセッサであるため3Dグラフィックス処理も問題なく行なえる。 セッションで示されたのはSPEでレンダリングのための事前準備をRSXと平行して行なってしまうというもの。 実際のピクセル描画のレンダリングはRSXで行なうとして、その前のスキニングをはじめとしたジオメトリ変形処理をSPEでやってしまえばいい。
あるいは、この発想をもっと発展させて、SPEで、視点からの距離に応じたテッセレーション処理(ポリゴンの自動分割。サブディビジョン)や、キャラクタを別のものへ変形させていくモーフィング処理のようなジオメトリを増大させる処理系も可能だろう。SPE、一基だけでは重荷かも知れないが。
■ SPEの仮想化とSPEの活用スタイル
この点、PS3は新世代のゲーム機らしく、SPEを仮想化する仕組みを実装しているので問題がない。 PS3のシステム側より提供されるSPEの仮想化ソリューションは2つ。
1つは「SPEスレッド」というモード。これはOSが(≒PPE:Power Processor Element。PowerPC 970互換のCELLのメインプロセッサ)、実行待ちのタスクの優先順を吟味しつつ、手の空いているSPE達に対して発注を行なうモードだ。各スレッドには「優先順位」と「幾つのSPEを使うことになるのか」という情報が持たされていてPPEはこれを吟味する。SPEへのタスク発注時にはプログラムとデータがDMAを介して各SPEに配信されることになる。これは丁度、この記事で解説したジョブ・キュー・モードをPS3で実装した形態だ。
こうしたSPE駆動モードを用いて、一体何がSPEに任せられる仕事なのかが、あくまでアイディアの提供という範囲でだが、具体的に示された。
■ CELLのパフォーマンスはどのくらい?
このあたりのことについてはIBMからいくつかのデータが示された。
1つは160万個と500万個のパーティクルの物理挙動シミュレーション付きレンダリングを行なった時のパフォーマンステストの結果だ。
そして比較対象はPentium 4の3.2GHz版。計測データは描画完了するまでの所要時間で、その最小値と最大値と平均値。フレームレートではないので値が小さいほど優秀であることを示している。 160万パーティクル、150万パーティクル、いずれのケースにおいても、SPE1基でPentium 4の1.5倍、SPE8基では12倍のパフォーマンスを見せている。
続いて、示されたのは画像処理のパフォーマンスだ。定点監視カメラなどにおいて背景を除外して動体のみを出力する画像処理を行なったケースのフレームレート計測値ではSPE1基のケースでPentium 4に辛うじて勝っているという程度だが、8基ではPentium 4の9倍のスコアを記録している。
2.4GHz駆動のCELLでAutodeskの開発した布シミュレーションを実装した場合と、同一のものをPentium 4 3.6GHzクラスのCPU(おそらくAthlon64 3600+を指し示していると思われる)で実装した場合との比較では3基のSPEでPentium 4 3.6GHzクラスCPUの2倍のパフォーマンスを記録。注目すべきはSPEを使わないPPE(VMX使用)のみのケースで、この場合はPentium 4 3.6GHzクラスCPUの20%程度のパフォーマンスしか出せていない。この値を見る限りではPPEの浮動小数点ベクトル演算性能は高くない(相当低い?)ということが言えそうだ。
また、GPUを一切使わずに、CELLだけで3Dグラフィックス描画を行なうデモも披露した。 これは16ビットの高さ情報(ハイトマップ)と16ビットの色情報を持つ衛星写真から生成したジオグラフィックデータを元に、レイキャスティング法でレンダリングするもの。ちなみにレイキャスティングとは、描画フレーム面から描画範囲に無数のレイ(≒視線)を放って最初に衝突する場所の色を描画ピクセル色とするようなボリュームレンダリングの基本技法だ。バンプマッピングの発展形である遮蔽視差マッピングにもこの発想が使われている。
結果は、1基のCELL(8基のSPE)では1,280×720ドットを30fps以上で、2基のCELL(16基のSPE)では1,920×1,080ドットで30fps以上。これだけ見るとRSXのみにグラフィックス処理をさせてもそこそこ行けそうだ。
■ PS3用の新作デモのパフォーマンス
実は、あのデモの主役はアヒルではなく、群れをなす魚の方なのであった。 あれは、SCEの研究開発グループがSPEで実装した群衆シミュレーションのサンプルデモだったのだ。 この群衆シミュレーションでは、群れのひとかたまりをバケット(Bucket)という単位で管理し、さらに複数のバケットをひとかたまりとしたラティス(Lattice)という単位で管理している。1フレームごとに自分(この場合は各魚)がどのバケットに属しているかを更新する。さらに同じ種類で固まろうとする個人AIと、群れとしてどう行動するかの集団意志決定を行なう群集AIを動かして、群れの挙動や移動方向を制御している。 なお、この群衆シミュレーションはPSCrowdとしてPS3の最新開発キットにライブラリとして収録されるそうだ。合わせてこのPSCrowdライブラリの基本デモも公開された。
こちらのデモもPS3開発機の3.2GHz駆動のCELLベース上で動作させたもの。デモは2種類公開され、真ん中の黒い岩のあるシーンの外周を周回するデモは2Dのスプライトベースの魚の群集デモでこちらは10,000匹の魚に対して群集シミュレーションを行なって60fpsが達成できている。もう1つのカラフルなテクスチャ無しの3Dの魚のデモの方は、36ポリゴンの魚に頂点レベルのアニメーションを適用し、7,000匹の群集シミュレーションを行なって60fpsが達成できているという。
この群集デモの負荷率だが、SPE全体で30%、RSXによるグラフィック描画は15%とかなり余裕があるように見える。一方、PPEの方は84%の負荷率でかなり忙しい。
■ まとめ~PS3はSPE命。SPEがなければXbox 360以下かPS2並?! こうしてみてきて、おぼろげに見えてくるのは、CELLが3.2GHzという高クロック動作していながらも、そのメインCPUともいえるPPEにはあまり余裕がないなということ。これは、インオーダー限定の命令実行形態や浮動小数点演算の遅さといった弱点が響いていることなのだろうか。 GDC2006期間中、何人かの開発者達から「PPEだけだと局面によってはXboxやPS2のCPUの方が速いと感じる」というボヤキを聞いたが、なるほど、こうした結果はそれを裏付けるものかもしれない。 とはいっても、SPEを効果的に活用した場合には、その不利点を補って有り余る高性能ぶりを発揮する。CPUだけの最大性能に着目すれば、PPE“+”相当のCPU(“+”は拡張VMXの部分)を3基しか持たないXbox 360よりも、もしかすると、PS3の方がパフォーマンスは上かも知れない。が、逆にSPEを活用できなければ、PPE“+”が3基あるXbox 360の方がプロセッシングパワーは上といえるかもしれない。 PPEがXboxやPS2のCPUより遅いかどうかは別にして、いずれにせよ、SPEをうまく活用してこそ、PS3のパフォーマンスが最大限に発揮されるということだ。 SPEを制するものがPS3を制するのだ。 問題はPS3、Xbox 360、それぞれにヘビーカスタマイズしたソフトの相互への移植だ。 Xbox 360はPCと同じ対称型マルチコアなので、PCで培ってきたこれまでのマルチスレッドソフトウェアの設計技法が活用できるが、PS3ではそうは行かない。PS3の性能を最大に引き出すためには独特のソフトウェア設計方針に従ってSPEをフル活用しなければならず、開発は簡単ではない。また、せっかくSPEをフル活用するマルチスレッドモジュールを開発したとしても、そのままXbox 360に持って行くことは不可能だし、無理矢理実装してもPS3並の性能は得られないだろう。 PS3とXbox 360のCPUの最大公約数を求めれば「PowerPC 970互換コア一基」ということになる。「ゲームはスペックじゃない」とはいえ、マルチプラットフォームを展開する多くのゲームがこれだけで開発されることになったとしたら次世代コンピュータ・エンターテインメントを夢見るユーザの立場からすれば寂しい。
幸いグラフィックスはATIとNVIDIAという違いはあるがポテンシャルそのものは両者プログラマブルシェーダ3.0(SM3.0:Shader Model3.0)世代でほぼ同じ。ゲーム開発の立場に立ってみれば、この世代のゲーム機では、このCPUアーキテクチャの差異を吸収する優秀なミドルウェアの重要性が鍵を握るような気がする。
□Game Developers Conference(英語)のホームページ (2006年3月31日) [Reported by トライゼット西川善司]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2006 Impress Watch Corporation, an Impress Group company. All rights reserved. |
|