Playstation 3の開発用マシンを見てきた
5月に発表されたPlaystation 3。そのビジネス面での可能性はともかく、2テラFLOPSオーバーという超強力な演算性能で実現される世界は、(Cellの性能があらかじめ解っていたとは言え)かなり衝撃的なものでした。これがゲーム機ねぇ、と言うと、久夛良木さんはゲーム機ではないと怒るのかもしれませんが……。
僕は実際、発表会に参加していたのですが、高精細なグラフィックスにはあまり驚きを感じませんでした。しかし、その動きのリアリティと言ったら、それはもう今までのゲームとは別次元のモノです。それは単純にグラフィックがきれいだからイイという基準では測れないものです。
そのPS3の開発用マシンというのを見せてもらうことができたので、ちょっとだけ紹介したいと思います。
ゲームというアプリケーションはインタラクティブなものですから、何かの操作に応じて何らかの振る舞いをしなければなりません。しかし、これまではその振る舞いをあらかじめプログラムしていました。計算で振る舞いをさせる場合もありますが、自然界の常識とは異なる動きになることがほとんどです。
ところがCellの場合、あらゆる振る舞いがすべて物理演算で徹底的に計算できるんですね。ここが面白い。シェーダプログラムでそれらしく見せるといったテクニックを使うのではなく、Cellの中で3Dモデルを展開し、衝突チェックなども行いつつ、どのように形状や運動が変化するかを求めることができるわけです。
たとえば帆船の帆がどのように動くのか。そこに大砲の弾が当たったとき、どんな穴が空くのか、帆が破れると風が当たったときにどのようになびくのか。全部計算で動いてしまいます。見た目は凄くありません。何しろ当たり前の動きをしますから、ごくごく普通にしか動かない。でも、そこが凄いんですね。
PS3の場合、Cell側である程度、ジオメトリを展開して形状を確定させて衝突処理やインタラクティブ処理を行えます。なにしろ超高速なので、その程度の演算ではへこたれません。演算結果は膨大なジオメトリデータとして残りますが、これを高速通信インターフェスのRedwoodでGPUであるRSXに転送。RSX内部でテッセレーションやシェーディング処理を行ってリアルな絵に仕上げます。PS3はバス幅が広くCellの能力が高いため、CPUとGPUの使い方がPCとはかなり異なり、Cell側である程度まではやってしまえるわけです。
で、そのCell。他にはどんな用途で使われるのかとか、プログラミングモデルはどうなっているのか。スレッドレベルの並列化を簡単に行うツールはないのか。ライブラリを呼べば並列化してくれるのか。8個(PS3の場合は7個)のSPEを使うとき、各スレッドはどのようなメソッドで割り当てられるのか。いろいろ疑問はあるでしょう。
このうちのいくつかは開発者向けには既に公開されているので、関係者はご存じだと思います。簡単に言えば、今のところジョブをマルチスレッドに砕く仕組みはライブラリレベルではないけれど、自分で細かなスレッドに砕き、3種類あるスレッド割り当てのアルゴリズムから1つを選択しておけば、あとはシステムが自動的にSPEを充当してくれます。
まだすべてが解っている訳じゃありませんが、普通のアプリケーションプログラマから見るとパフォーマンスを出すのにやっかいに見えるかもしれないけれど、ゲーム屋さんなどローレベルなプログラミングに慣れている人から見れば、C言語レベルでマルチスレッドのプログラムを書いておけば、あとは比較的簡単に割り当ててくれる、というレベルではあるようです(ガリガリにチューンする場合は除く)。言い換えると、その程度でも十分なほど、Cellの性能にはかなり余裕があるということかもしれません。
ただ、ちまたではE3での発表会では、本物とは違うもっと高性能なマシンでデモしたんじゃないの?という疑いが掛けられているようです。PS3のグラフィックチップとなるRSXは、まだ実物がテープアウトしていないですしね。でも、実際には本来のPS3のスペックからするとかなり劣るスペックの開発用マシンを使って動かしていた、というのが本当の話です。しかも、ごく一部を除けばほとんどがリアルタイム演算で動いていました。
その開発用マシンというのがこの写真。
PS3のCellは3.2GHzのスペックですが、この開発ツールで使われているのは2.4GHzバージョン。さらに本来のスペックよりややクロックの低い○○がGPUとしてつながっています。○○はまだ未発表のチップで、バスインターフェイスがRedwoodではなくPCI Expressになっていることと、メモリインターフェイスの幅がちょっと違う程度で、RSXとはほとんど同じ。
ちなみにPCI Expressはテスト用にインターフェイスが乗っかっているだけなので、4レーンしかありません。ということで、開発ツールはクロック周波数が低い(と同時にメモリクロックも低い)上、RSXの接続バンド幅も数分の1しかないマシンということになります。
従って、Redwoodのバンド幅を活かし、Cellで生成したジオメトリをどっか〜んとRSXに送ってレンダリングといったアプリケーションの作り方だとパフォーマンス面で制限を受けますし、普通の使い方でもある程度の性能低下は免れないでしょう。
ということで、本物のPS3はデモで使われた開発機よりもずっとハイパフォーマンスになるってのが正解。他にもいろいろ面白い話はあるのですが、さらに詳細は、機会があればどこかで書くかも知れません。