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

PS3のSPUライブラリに見える
今後のゲーム機アーキテクチャ




●Cell B.E.が本当に使い物になるかが議論に

 PLAYSTATION 3(PS3)の、膨大な演算パフォーマンスは、はたして“使える”のか。これが、現在のPS3タイトル開発の大きなテーマとなっている。これは、さらに波及して、PS3のCPU「Cell Broadband Engine(Cell B.E.)」のような、ヘテロジニアス(Heterogeneous:異種混合)マルチコアCPUは、実際に使いものになるのか、という論議まで引き起こしている。CPUアーキテクチャが、ソフトウェア開発側にとって使いにくければ、理論上のCPUパフォーマンスがいくら高くても意味がないのでは、という論議だ。

 特に、今のフェイズでは、PC向けとサーバー向けCPUは対称型のマルチコアで、汎用CPUコアの数を倍々に増やしている。そのため、PC&サーバー向けCPUの方が、同じマルチコアでも、ソフトウェア開発のハードルが低い。PC&サーバーと比較すると、Cell B.E.は理論上の浮動小数点演算性能は数倍高いが、それを活かしにくい、そういった議論になっている。

 こうした状況で、ソニー・コンピュータエンタテインメント(SCE)は「GDC(Game Developers Conference)」で、Cell B.E.の演算CPUコア「SPU(Synergistic Processor Unit)」の利用について2つのアプローチを試みた。1つは、ファーストパーティを中心とした先進的なSPUの使い方の紹介。もう1つは、SPUライブラリの提供により、より簡単にSPUを使えるようにすることだ。

 後者の試みの第1段としてSCEは、SPUのためのコンポーネント群を「PLAYSTATION Edge」の一部として発表した。Edgeにはいくつかの要素が含まれるが、中でも目立ったのは、SPUジオメトリプロセッシングだ。これは、グラフィックス処理のうち、ジオメトリパイプラインのプロセッシングにSPUを使うというもの。簡単に言えば、GPUの「バーテックスシェーダ(Vertex Shader)」の代わりをSPUにさせる。

「PLAYSTATION Edge」のコンポーネント群 SPUをバーテックスシェーダとして利用するジオメトリパイプライン

 SCEがSPUでのジオメトリプロセッシングを、Edgeの目玉として持ち出したのには理由がある。それはRSXが搭載する、ジオメトリプロセッシング用のバーテックスシェーダのパフォーマンスが低いためだという。また、ゲームデベロッパ側から、SPUをうまく使い切ることができないという声が上がっていたことも大きいようだ。

 つまり、SPUジオメトリの使い方は、PS3というハードについて見ると(1)RSXの弱点をCell B.E.でカバーする、(2)ゲームデベロッパが使いあぐねているSPUをジオメトリプロセッシングという馴染みのある分野で使わせる、というわかりやすい話となる。「SPUをもっと新しいことに使おうよ」という提案は、とりあえず置いておき、「使い道に困るなら、まず、今問題となっているジオメトリプロセッシングに使ってください」という切り替えとも言える。

 しかし、もう少し引いて見ると、これが今後のCPUとGPUのパーティショニングという、これから先のアーキテクチャのカギの部分に関わるポイントであることがわかる。

●G80コアなら有効性がより高かったSPUジオメトリ

 もともと、ジオメトリプロセッシングは、CPUやプログラマブルハードが担当する処理だった。PS2でも、ジオメトリはCPUである「Emotion Engine(EE)」に内蔵された「VU(Vector Unit)」が担当していた。SPUジオメトリは、そうした時代に回帰する動きとも取れる。しかし、この先のハードアーキテクチャを見通すと、かなりストーリが違うことがわかる。

 旧来のパーティショニングは、プログラマブルハードでジオメトリ、固定ハードでレンダリングといった固定された切り分けだった。例えば、PS2のGPU「Graphics Synthesizer(GS)」は固定機能のレンダリングチップだった。だが、現在のグラフィックスパイプラインはそのほどんどの部分でプログラマブル化が進みつつある。そのため、SPUジオメトリは、もっと柔軟なパーティショニングの可能性を示している。

 例えば、PS3のGPUが、同じNVIDIAアーキテクチャでもGeForce 8800(G80)のような「ユニファイド(統合)シェーダ(Unified-Shader)」型で制約が少ないDirectX 10世代のGPUアーキテクチャだったらどうだったか。ジオメトリプロセッシングをSPUに振り分けた分、シェーダプロセッサをピクセルシェーディングに振り分けることができた。そうなれば、ロードバランスを取って、トータルのパフォーマンスを上げることができたはずだ。

 ところが、PS3のRSXはインディペンデント(独立)シェーダ型であるため、そうした柔軟性はない。SPUジオメトリはRSXのバーテックスシェーダの負荷を軽減できるが、ピクセルシェーディングのパフォーマンスが単純に増えるわけではない。SPUジオメトリは、もし、RSXがG80アーキテクチャだったら、もっと有効だったことになる。

 この「if」が示しているのは、今世代のゲームコンソールのアーキテクチャがちょうど過渡期にあるということだ。PS3があと半世代後ろにずれており、より柔軟なG80型のGPUアーキテクチャを選択できていれば、SPUジオメトリの意味は異なっていた。

 また、SCEも、最初期のPS3のプランでは、Cellベースのグラフィックスを検討していた。そのプランのままなら、SPUジオメトリはPS3のスタンダードな使い方で、SPUベースのレンダリングコアとロードバランスを取れるようになっていただろう。

 しかし、SCEがPS3で選択した解は、独立型シェーダのRSXアーキテクチャだった。そのあたりが、PS3アーキテクチャのぎくしゃくした部分となっている。これは、GPUアーキテクチャのちょうど転換点に製品化せざるをえなかったPS3の不運でもあると言えそうだ。

●次世代ではテラフロップスのリソースがアロケート可能に

 今世代が、過渡期というのは、次の世代のハードになると話はもっと単純になると思われるからだ。

 2010年以降のゲームコンソールやPCでは、CPUはGPUコアを混載しているか、あるいは、CPUにSPUのような演算CPUコアを混載しているかどちらかになる可能性が高い。特に、ゲーム用途では、パフォーマンス効率を重視するなら、汎用CPUコアだけでなく演算コアを持つ可能性は低い。また、GPUコアはユニファイドシェーダは当然で、さらに汎用性を高めたアーキテクチャに変わっているだろう。

 システム全体の構成としては、「汎用CPUコア+演算プロセッサコア+ユニファイドシェーダGPUコア」の構成や、「汎用CPUコア+ユニファイドシェーダGPUコア」の構成、「汎用CPUコア+演算プロセッサコア」でグラフィックスまでカバーする構成などが想定できる。汎用コンピューティングのリソースも増えるだろうが、それ以上に演算性能にフォーカスしたリソースの方が増えると想定される。

PS3、Xbox 360と将来のゲームコンソールの構成
PDF版はこちら(別ウィンドウで開きます)

 例えば、Xbox 360は今も汎用CPUコア+ユニファイドシェーダGPUコアだが、次の世代のハードでは、グラフィックス処理に必要なパフォーマンス以上のGPUコアリソースを持つ余裕が十二分にできる。おそらく、システム全体で、1〜数テラフロップス(TeraFLOPS)の演算リソースが、比較的柔軟に使えるようになると推定される。ゲームコンソールのうたい文句のFLOPS値は、これまでは固定機能まで入れたマーケティングトークだった。しかし、次の世代になると、完全にプログラマブルに使えるようになるだろう。

 そうなると、ソフトウェア側は、非グラフィックスの演算中心のアプリケーションとグラフィックスの両方を、演算リソースのプールに自由に割り振れるようになる。例えば、演算CPUコアとユニファイドシェーダGPUコアの間で、ジオメトリプロセッシングやその他の演算タスクを割り振る。あるいは、汎用CPUコア+ユニファイドシェーダGPUコアの場合は、シェーダGPUコアに、グラフィックス以外の演算タスクも動的に割り当てることが可能になるだろう。消えたCell B.E.ベースGPUのプランは、まさに、こうした流れを先取りする形だったが、やや早すぎたのかもしれない。

 一方、アプリケーションの方も、今は、グラフィックスプロセッシング以外に、コンピューティングパフォーマンスを必要とする処理が増えつつある。例えば、物理シミュレーションはゲームでは当たり前になりつつある。PCにしても、これから先、汎用コンピューティング的な処理が急増するとは思えない。増えるのは、ストリームプロセッシングなど、演算性能にフォーカスしたコアに向いた処理になると想定される。

 また、演算パフォーマンスがどんどん上がると、投機的な演算を行なうといった贅沢な使い方もしやすくなる。例えば、GDCではPS3タイトル「Motor Storm」の物理シミュレーションのセッションが行なわれたが、その中で、方向性として投機的な使用方法の例が提示された。ネットワーク対戦での遅延を隠蔽するために、他のプレイヤーの車両などの物理挙動を予測して、ローカルのPS3側で投機的に演算してしまう手法だ。遅延して受け取ったデータとの間に誤差があれば、あとで修正するという。演算パフォーマンスが余っていれば、こうした使い方もできるようになる。

「Motor Storm」における物理シミュレーションの方向性

●予想と違いRSXに接続していたGS+チップ

 こうして概観すると、CPUのマルチコア化とGPUの汎用化が進む次世代では、ハードは今世代よりすんなりと整理される可能性が高い(プログラミングしやすいかどうかは別な話)。また、その進化は、今世代のゲームコンソールハードの延長線上にある。その意味では、今世代機が転換点と言えるかもしれない。

 実際、SCEは、PS3の後継アーキテクチャはPS3の上位互換になるといった説明をしているという。PS4に、Cell B.E.の発展型と、NVIDIA GPUの発展型を載せる構想なら、その説明も納得できる。その場合は、汎用CPUコア+演算プロセッサコア+ユニファイドシェーダGPUコアとなり、説明したようなリソースのアロケーションが容易になる。Xbox 360にしても、汎用CPU+ユニファイドシェーダGPUで進化するとしたら、今世代の延長となる。

 PS3以降は、ハードウェアの継承性が確保されるとしても、現行のPS3ハードでは、PS2との後方互換性の確保がハード設計上のネックの1つとなっている。特に、SCEのPS2互換戦略は、意図が掴みにくい。それを象徴するのが、先週末、ヨーロッパで発売になった新仕様のPS3だ。

 日本版PS3は、PS2のCPU「EE(Emotion Engine)」とGPU「GS(Graphics Synthesizer)」を統合した「EE+GS」チップとPS2のメインメモリ128Mbit RDRAM 2個を、PS2タイトルとの後方互換のために搭載している。しかし、ヨーロッパ仕様のPS3では、EE+GSチップと2個のRDRAMチップは取り去られる。EE上のタスクはPS3のCPU「Cell Broadband Engine(Cell B.E.)」上でのエミュレーションに、GS上のレンダリング処理は新たに加えられた拡張版GSチップで処理されている。

 先週末から、この新世代のPS3ハードのチップ構成などが明らかになり始めた。それによると、このコーナーでの予測とは異なり、改良型GSはサウスブリッジチップではなくGPUであるRSXと接続されている。また、RSXからのデジタルビデオ出力はHDMIコントローラではなく新GSチップに入力されているように見える。今のところ、この構成の意図はわかっていない。

 1つ明確なのは、これは、コスト削減だけを考えた構成ではないということだ。GSは規模の大きなRSXには統合しにくい。そのため、コストを削るチップ統合を第一に考えた場合には、RSXに接続するという選択肢は取りにくい。メインチップの数を減らすことを主眼にした選択ではなく、機能面での必要からRSX側に接続したと見られる。また、この構成ではメインメモリからのレイテンシが伸びる可能性は高く、GSチップ側にバッファを載せる必然性は高いと見られる。

欧州版PS3の想定図
PDF版はこちら(別ウィンドウで開きます)

□関連記事
【3月14日】【海外】欧州で登場した“低コスト版”PS3の正体
http://pc.watch.impress.co.jp/docs/2007/0314/kaigai344.htm
【1月15日】【海外】第2世代Xbox 360とXNA Frameworkの狙い
http://pc.watch.impress.co.jp/docs/2007/0115/kaigai329.htm

バックナンバー

(2007年3月29日)

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


【PC Watchホームページ】


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

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