「PlayStation 3用のゲームを開発しているプログラマの中には,Cellをダメなアーキテクチャと評している人もいるようですね」---先日ゲーム関連の仕事に携わるA氏と飲んだときにこんな話が出た。多くのメディアで賞賛してばかりのCellプロセッサについてこんな発言が出るとは思っていなかった記者は少々驚いた。

 Cellは,IBM,ソニー,ソニー・コンピュータエンタテインメント,東芝が開発したプロセッサで,PlayStation 3の心臓部となる。1個のPowerアーキテクチャ・ベースの汎用コアと8個のSPE(Synergistic Processor Element)と呼ぶ浮動小数点ベクトル演算コアを搭載したマルチコア・プロセッサである。

 マルチコアとは言うものの,CellはインテルのCore 2 Duoなどのマルチコア・プロセッサとメモリーの扱い方がかなり異なる。Cellが搭載する8個のSPEは,それぞれLS(ローカル・ストア/ローカル・ストレージ)と呼ぶ256Kバイトのメモリーを持ち,SPEが実行するコード(命令の列)やデータはすべてこのLSに格納する。演算に使用するデータなどは,必要に応じてメイン・メモリーからLSへDMA(Direct Memory Access)転送しなければならない。

 こうした仕組みは,一見,コアごとにキャッシュを持つシステムとよく似ているが,その動作はキャッシュとは異なる。キャッシュの場合,キャッシュの内容は,基本的にハードウエアによって自動的にメイン・メモリーとの整合性が保たれる。マルチプロセッサ/マルチコア・システムでは,キャッシュしたアドレス領域をほかのプロセッサ/コアが書き換えていないかをハードウエアによって監視(スヌープ)し,整合性が取れなくなった場合にはキャッシュの該当する領域を破棄するといった処理を実行する。

 対してCellの場合,LSとメイン・メモリーの内容は直接的には何の関係もない。ある時点でのLSの内容に責任を持つのはあくまでもプログラムを書くプログラマだ。メイン・メモリーからSPEにデータを渡したければ,明示的にDMA転送を実行させなければならない。

 このようなLSの仕組みは,プログラマがDMA転送のタイミングを細かく調整することで,メモリー・アクセスに要する時間の多くを隠ぺいして高速化を図れるというメリットを生み出す。例えば,SPEで長時間の演算を実行させる間に次の演算で必要なデータをDMA転送しておく,複数のSPEのDMA転送のタイミングをずらすことでバスの帯域幅が足りなくなるのを防ぐ,といった具合だ。通常のSMP(Symmetric Multiple Processor)システムのキャッシュでは,ここまでタイミングをコントロールするのは難しい。

 半面,こうした細かいタイミングの調整を手作業のプログラミングで行うのは本当に大変だ。Cellの開発元として名を連ねる東芝は,こうした作業を支援するために,SPEの動作状況をリアルタイムに表示するツールなどを提供している。が,そうした開発支援ツールをもってしても手間がかかることは間違いない。

 冒頭のA氏の発言は,こうしたプログラマの大変さを考えてのことである。ただ,これをもって「Cellがダメ」というのは少し言いすぎのように思える。Cellアーキテクチャは,一部の機能をソフトウエアにゆだねた,ある意味で自由度の高い設計とも言える。ゲーム・プログラマが大変だというなら,SPEを管理するライブラリやミドルウエアをSCEが提供すれば済む話だ。

 むしろ問題は,タイミングを細かくコントロールして高速化することを良しとする風潮が,いまだに日本のゲーム・プログラマに残っていることだろう。細かいところをチマチマと工夫して良いものを作るのは日本のお家芸だ。データ・サイズを減らそうとして構造体のパッキングに頭を悩ませる,などというのは今でもよく聞く話である。だが,ゲームが大作化して慢性的に開発リソースが不足している現在,こうした点にこだわるよりも,ほかの部分に注力したほうが結果的に面白くて売れる,“良い”ゲームができるのではないだろうか。

 A氏の言葉の真意は,実はここにあったようである。3Dエンジンにせよ,物理エンジンにせよ,出来合いのものを使ったり,ほかのゲームと共通化したりすることで開発費を下げることができる。海外の大手ゲーム・パブリッシャーや,その傘下のゲーム開発会社ならこうしたことが可能だ。ところが,日本のプログラマは昔から妙なところにオリジナリティを発揮しようとする癖があり,ライブラリがあっても使わなかったりする。今のような職人気質のプログラマによる家内制手工業的なゲーム開発をしていては,海外のゲーム・ベンダーに負けてしまうのではないか,というのがA氏の主張である。

 15年ほど前のNEC PC-9800シリーズによる“鎖国”時代には,パソコン・ゲームにせよワープロなどのビジネス・アプリケーションにせよ,国産のソフトのほうが多かったものである。だが,Windowsが普及して以降,これらのほとんどは海外製となってしまった。ゲーム専用機向けのゲームでも,PlayStation 3などのハードウエアが世界共通である以上,同じことが繰り返される可能性がないとは言えない。日本の強みはどこにあるのか,一度振り返るべき時期が来ているのではないだろうか。