コンピュータ(CPU)とGPUの進化の歴史
ここまでがTIM WEENEY氏の携わってきたUEシリーズの概要で、ここからが話の本題となっていく。
まず、TIM SWEENEY氏はここ20年の近代のコンピュータ(CPU)の進化の歴史を振り返った。1985年の80386以降、CPUはスーパースカラ実行、アウトオブオーダー実行というシーケンシャル実行の効率化を目指し、複雑化の一途をたどってきた。そして2003年あたりから今度はマルチコア化の波が押し寄せ、プログラム側が率先してマルチスレッド実装しないとハイパフォーマンスが出せない時代がやってきた。
そして2005年末に発売されたXbox 360、2006年末に発売されたPS3にもその波は波及し、マルチコアCPUを採用している。1つ興味深いのは、ここまで進化させてきたアウトオブオーダー(順不同実行)を捨て、インオーダー(順次実行)実行アーキテクチャのシンプルな構造のCPUをマルチコア化したものがXbox 360、PS3に採用された点だ。Xbox 360、PS3のメインCPUは共にPowerPC 970互換だが、命令の実行形態はインオーダーであり、いわば初代Pentiumの超高クロック駆動版的な実装となっている。これは、モダンなソフトウェア思想として、実行するプログラムがマルチスレッド大前提となっていれば、アウトオブオーダー・アーキテクチャの複雑な構造のCPUではなく、インオーダーのシンプルな構造のCPUを複数コア実装しても十分に大きい費用対効果が得られると踏んだ結果だ。
つまり、これは、アウトオブオーダーでシングルスレッドの実行プログラムを分解してどうにかチマチマと並列実行させる工夫をするよりも、あらかじめマルチスレッド化されたプログラムを同時に複数スレッドとして実行し、ハードウェア・マルチスレッディングでスレッド切り替えして実行した方が、CPU内部の演算器や各ロジックが高効率駆動されやすいと考えられたということでもある。ちなみに、Xbox 360 CPUは3コアのPowerPC 970互換コアで、各コアが2ウェイ・ハードウェア・マルチスレッディングに対応しているので6スレッドのハードウェアレベルでの並列実行が可能となっている。PS3のCELLプロセッサではPowerPC 970互換コアのPPE(Power Processor Element)が1基のみだが、これが2ウェイ・ハードウェア・マルチスレッディングに対応して2スレッドの同時実行が可能であり、7基のシンプルな128ビットSIMD型ベクトルRISCプロセッサSPE(Synergistic Processor Element)が実装されている。
Intel CoreマイクロアーキテクチャやAMD Phenomに代表されるCPUもマルチコア化されているが、ここまでシンプルではない。これはゲーム機とは違い、PCでは過去のシングルスレッド・ソフトウェアの実行性能が重視されるためだ。
いずれにせよ、TIM SWEENEY氏も、トレンドは現在のマルチコア(複数コア)時代からメニーコア(多量コア)時代へ移行すると予見している。
グラフィックスプロセッサの歴史についても振り返られた。
1980年代、グラフィックスプロセッサはプロフェッショナル向け、あるいは研究開発機関向けのワークステーションに搭載され、とても高価なものであった。1990年代になると3dfx社(後にNVIDIAに買収される)が民生向けの3Dグラフィックスプロセッサ(GPU)を発売し、PCやゲーム機にもGPUが搭載されるようになる。GPUは当初、頂点単位の計算とピクセル単位の3D計算を「ハードウェアでアクセラレーションさせる」という概念の元に生まれたが、2000年初頭にはそうした頂点/ピクセル単位の3D計算を自由にソフトウェア実装させられるプログラマブルシェーダの概念が実用化される。これ以降プログラマブルシェーダ・アーキテクチャのGPUが主流となり、GPUは「プログラマビリティの向上」という方向性で進化をしていく。
そして2009年登場といわれているIntelの「Larrabee」は、そのGPUのプログラマビリティの究極形として、前述したシンプル・アーキテクチャのPentium相当のCPUを、GPUアーキテクチャに組み込んだデザインを採用している。これによりプログラマブルシェーダ・アーキテクチャ・レベルのGPU的なポテンシャルに加え、CPU的な完全なフルプログラマビリティまでを身に付けたとされている。