TIM SWEENEY氏の予見する未来のプログラミングモデルの"層"構造

以上を踏まえた上でTIM SWEENEY氏は、将来のメニーコア世代CPU & GPU統合型プロセッサ時代のプログラミングモデルを層構造に喩えるとこんな感じになるとして1つの図を示した。

将来のメニーコア世代CPU & GPU統合型プロセッサ時代のプログラミングモデルを層構造に喩えた図

最外殻から見ていくと最外殻の部分は20世紀までの主流技法であるシングルスレッド、スカラーコードからなる順次実行だ。これはどうしてもそれで実装するしかない部分を担当させる。具体的にはやり直しが利きにくいハードウェアのI/O部分だ。

そして、メモリのアクセスは発生するが、ハードウェアI/Oアクセスを伴わない部分についてはソフトウェア・トランザクショナル・メモリの技法を実装することが、マルチスレッド化がたやすく、そしてメニーコアの恩恵を得やすいとする。ここはゲーム進行を司る、各種ゲームロジックを司る部分の実装が向いている。

さらに、メモリ更新はローカルのみで、グローバルメモリへの更新は伴わず、ハードウェアI/Oも担当しない部分は純関数型プログラミングの技法を応用すべきだとしている。ここは必然的に独立性が高いモジュールとなるため並列実行に向いているためマルチスレッド化が容易でメニーコアの効果が出やすい。主に、効果系の物理シミュレーション、衝突判定、シーン認識、経路探索などのロジックの実装が向いている。

最内部はコードレベルで並列化実行が行われる部分で、ここはあるまとまった処理系を"新しいベクトル"化の容量でベクトル命令に展開して実行される。ここは自動で行われる部分であり、プログラマは強く意識をする必要はない。

2012年から2020年頃には64コアが現実にのものになっているはず……という前提の元に、現状のソフトウェアパフォーマンスを「×1倍」の基準として、前出のプログラミングモデル層構造を実装したときのパフォーマンス向上試算をTIM SWEENEY氏が示した。

TIM SWEENEY氏は最近ではIntelのLarrabeeプロジェクトに深く携わっていると聞き及んでいるので、この図は「64コアのLarrabee」と妄想して見てもらってもいいし、その方がリアルにメッセージが伝わるはずだ。

ソフトウェア・トランザクショナル・メモリと純関数型プログラミングの部分は64コアなので64倍のパフォーマンスアップが期待できるというわけだ。最外殻の部分はシングルスレッドのスカラコードから成る順次実行コードなのでパフォーマンスは向上しないという前提見積もりだ。最内部の1024倍は、Larrabeeの16幅ベクトルユニットを例にとったもので、16幅ベクトル×64コアで1024倍という試算となっている。

CPUがクロック競争にひとまずの終止符が打たれ、マルチコア化への進化が明確に見えた際に、「今後、ソフトウェア側の方でマルチコアを活かすように設計しないともうパフォーマンスはあまり向上しませんよ」という主旨の論文「The Free Lunch Is Over:A Fundamental Turn Toward Concurrency in Software」(by Herb Sutter,Dr.Dobb's Journal,March 2005)が発表され話題となったが、今後、マルチスレッド化されたソフトウェアと、そうでないソフトウェアとのパフォーマンスの違いが数十倍の開きとなると、マルチスレッド・プログラミングに関する関心はこれまで以上に高まることだろう。

TIM SWEENEY氏がここまで述べてきたことは、彼なりの未来予想図で、その具体的な部分ついての信じる信じないは自由だが、少なくとも「ソフトウェア開発のパラダイムが完全にマルチスレッド・プログラミングにシフトし切れていない現状をよそに、ハードウェアメーカーはメニーコア化、ベクトル化を加速度的に進めているので、そういう未来が確実にやってくるという意識だけは持っておきましょう」というメッセージが込められていた点だけは受け止めておきたい。

2012年から2020年にはパフォーマンスはこう向上する!

後編では、TIM SWEENEY氏が考える「次世代グラフィックスパイプライン」について紹介したい。

(トライゼット西川善司)

後編はこちら
【レポート】CEDEC 2008 - EPIC GAMESのTIM SWEENEYが語る「10年後のゲーム機の姿、ソフトウェアの形」(後編)