マルチコア時代のゲームプログラミング

西川善司の3Dゲームファンのための「ロスト プラネット」グラフィックス講座 - Xbox 360グラフィックスここに極まる! 日本発の次世代技術の秘密とは? (Game Watch)

特集:カプコン×インテル。「ロスト プラネット」のマルチスレッド最適化対談 (4Gamer.net)

石田智史氏:
 「マルチスレッドはゲーム向きじゃない」という常識みたいなものがあったんですが,今後の流れとしてはマルチコアは避けられません。だからマルチスレッド化に取り組もうと。
4Gamer:
 ゲームのマルチスレッド化が難しいのはなぜですか?
石田智史氏:
 簡単に言うと依存関係(※詳細は後述)が複雑なんですよ。マルチスレッドでパフォーマンスを上げるためには個々のスレッドの独立性が高くなければなりませんが,ゲームはそうじゃないんです。

Core 2 Duoを皮切りにマルチコア時代に突入したPC市場。シングルコアの性能を極限まで追究したPentium4までとはアプローチが全く異なります。Core 2 DuoやCore 2 Quadは、個々のコア性能は若干落ちても、それぞれのコアで並列作業させて速度を補おうという考え。マルチスレッド化されていないゲームではシングルコアしか使われないので、下手をすればPentium4よりもスコアが落ちます。そのため、ゲームにおいてもパフォーマンス向上にはマルチスレッド化を視野に入れなければならなくなりました。

しかし、ゲームでは敵やプレイヤー等、相互が密接に係わり合っている状態。それぞれを独立したスレッドで好き放題に処理をされては、ゲームの同期が取れなくなってしまいます。どの部分をどのように分業させるか、今後は試行錯誤が続いていくと思われます。記事で紹介されているカプコン謹製MTフレームワークは、その一つの実装型として興味深いですね。

4Gamer:
 では,Xbox 360とPCでマルチスレッド化に関して違いはありましたか?
石田智史氏:
 Xbox 360とWindowsはCPUが違いますよね。Xbox 360のCPUはL2キャッシュを三つのCPUコアで共有しています。だから速い。Core 2 Quadは,(CPUコアは四つあるが,2コアずつ)L2キャッシュが独立しているので,そのオーバーヘッドがかなり大きいんです。Core 2 Duoだとシングルコアに対して1.8倍のパフォーマンス向上を実現できるんですけど,Core 2 Quadだと(シングルコアに対して)2.3倍くらいしか出ない。

また、Core 2 QuadはL2キャッシュが2つあり、それぞれ2コアで1つを共有しています。つまり、Core 2 Duoを1つのダイに押し込んだだけのなんちゃって4コア。キャッシュが2分されてしまうため、これではデータを効率よく処理出来ません。現段階ではCore 2 Quadはマルチスレッド化の恩恵を受けにくい地雷CPUということになるでしょうか。ハードもソフトも激動の転換期のようです。果たして、どれだけの技術者が生き残れるのでしょう。

Share