かなり現実味のあるゲームシステムをCell上とPen4上で組んでみたら,どうなるか?っていうレポート.
まず,有りもののデータベースやネットコードやイベントハンドラ,2Dエンジンを持ってきて,
3D物理エンジンはSPE向けに最適化したものを作った模様.
8SPEの256GFlopsを生かすためには,PPEとSPEsの独立性を高めるようにデザインしなくてはならないけど,時間的な制約により殆どのコードはそこまで手が回らなかったらしい.
つか,そこが肝なわけで,そこを頑張らなくちゃやる意味半減なのでは?
それはともかく,最適化されたSPEの演算能力は凄まじいものがある.(Fig.6)
1SPEでPen4(SSE)相当以上のスループットを誇っている.
物理演算やコリジョンってのはSIMD演算の嵐なので,スペック相応当然の結果ともいえる.
ただ,複数のSPEの場合はあまりパフォーマンスが上がっていない.
これは前述したとおり,デザインの問題(と後述の問題)だが,実際のところ複数のSPEをフル活用するためには,アルゴリズムやデータ構造から全て見直す必要が出てくると思われ,かなりの研究が伴うはず(単純なパーティクルシミュレータですら,SPEをフルに活用しようとすると急に難しい問題に変身するでしょう).
Fig.6でPPEがやけに遅いのはSPEのワークロードのpack/unpackやスケジュールに食われてるせい??らしい.(間違ってるかも)
とりあえず,PPEが遅いのは確かで,SPEの数が増えてもパフォーマンスが上がらないのもPPEのせいらしい.うーん,これってPPEが悪いんじゃなくて,そんなpack/unpackに時間がかかるような構成が悪いんじゃなかろうか.
どうせPPEでSIMD演算してもしょぼいし,VMXなんて取っ払ってそのリソースをSPEにまわした方が良かったんじゃ.
余
Copyright (C) 2003-2004 mitsuman(mnishibe at ertl.jp) All Rights Reserved.