【CEDEC 2010】 メニーコア対応ゲームエンジン

http://cedec.cesa.or.jp/2010/program/PG/C10_P0166.html

グラフィクス関係の新規技術を導入してもインパクトの薄い昨今、欧米に勝つためにはどうしたら良いのか。日本人は刃物が好きだし、欧米は銃が好き。日本人にとって銃は身近ではないから、合わせる方向で攻めても負けるだろう。ここは新しい流れを作っていくべきではなかろうか? ハードウェアの進化の方向を見定めて技術的な方向からの検討を試みる。というお話。

ムーアの法則は 18 〜 24 ヶ月毎に CPU のドランジスタ数は 2 倍になる*1という経験則。CPU 屋のモチベーションにもなっている*2。微細化、消費電力や発熱の増加で単にクロック周波数を向上させる事は困難になっている。性能を向上させるには SIMD 化、マルチコアが必要だというのは、「メニーコア時代へのプログラミング言語からのアプローチ」でも言われている通り。

ムーアの法則を逆に言えば、同じ性能の CPI は 18 ヶ月 〜 24 ヶ月毎に半分のサイズで出現するという事でもある。これはメインフレーム → PC → ケータイへの小型化の歴史からも物語られる。小型化、省電力化、グラフィクス能力の向上にあたって CPU と GPU を統合したプロセッサも出現してきている*3

将来的なプロセッサの方向としては、CPU と GPU の完全なる統合が進むであろうし、メニーコア化にムーアの法則が作用するのであれば、PPE 64 core + SPE 512 core という構成のプロセッサが出現するかもしれない*4

そこまで極端なものは出現しないにせよ、想定しておき準備をしておかねば、対応はできないのだから、せめて考察は必要だろう。

プログラミングするにあたってのテクニックとしては、SIMD や fork-join モデルはコンパイラの支援を受けられるかもしれない。負荷分散を行なうにあたってはタスクマネージャーによって負荷の均等化を図る、タスクマネージャー自体を分散化する事によりタスクマネージャー自身の負荷を下げる、プロセス毎にメッセージのやりとりをする事によって協調してタスクの制御を行なう、終了条件の判定として双方向リング終了アルゴリズム*5の話が出た。

将来データバスが問題になるだろうという予測も考えられ、これはデータバスをメッシュ化したりハイパーキューブ化したりといった方向で対抗されるだろう *6。コアに微細化したプロセスを半ば固定的に割当りあて、これらをバスで繋ぎパイプラインを形成する事により処理能力を引き出すというアーキテクチャが考えられる。

これらを有効に利用したゲームデザインは、2^25 (=約3300万)のオーダーの個別に AI を持ったキャラを扱うゲームといったものが考えられる。点以下の情報は確率分布等で扱い簡易的に計算し、復元計算には一定の展開アルゴリズムを使うと良いだろうという示唆がなされた。

*1: http://ja.wikipedia.org/wiki/%E3%83%A0%E3%83%BC%E3%82%A2%E3%81%AE%E6%B3%95%E5%89%87

*2:予言の自己成就ですね

*3:fusion APU 然り、PS3 なら PPE+SPE、XBOX360 なら XCGPU といった具合。

*4:ただ、この話は単純化しすぎの話であって、ある意味冗談レベルの話

*5: http://www.is.kyusan-u.ac.jp/~bob/para04-part6ap.pdf

*6: http://ja.wikipedia.org/wiki/MIMD