増渕 Cellの開発は,2000年にソニー・グループ,東芝,IBM社 の3社で次世代の新しいプロセサを一から考えるところから始まりました。グラフィックスや画像などのデータ処理を高速に実施するためにマルチコアにしながら,一般家庭で使えるように消費電力を抑えなければならない(図5)。システム面から考えてセキュリティーに気を付けました。
設計ではアーキテクチャがシンプルになるように気を付けました。検証の複雑度がマルチコアでは指数関数的に上がりますので,基本的にハードウエアはなるべくシンプルにしました。ただ,スレッド・レベル,命令レベル,データ・レベルで並列性を出さないといけない。これに関しては,ハードウエアをリッチにするのではなくて,ソフトウエアで実現します。プログラムの並列化,コードのスケジューリングをプログラミングで考慮してもらうことを前提にしました。
これまでプロセサは,ハードウエアの機構を隠蔽して,ソフトウエアに対しては抽象的なモデルを見せるようにしてきました。例えば,スーパースケーラ,レジスタ・リネーミングなどはプログラムでは意識させずに,裏でハードウエアが並列性を出しました。
Cellではこれらをいったん忘れて原点に立ち返り,ハードウエアをなるべくシンプルにしました。ハードウエアのアーキテクチャと動作を,ある程度ソフトウエアに見せる。極論すれば「ソフト屋さんのほうで制御をうまくやってくださいね」という考えです。
もちろんコンパイラでサポートできる部分もあるので,すべてソフト屋さんがガリガリとアセンブリ言語で書かなければいけないということではないのですが,かなりハイレベルな並列性の抽出を,ソフト屋さんにお願いしますという割り切り方になっています。
グラフィックスや映像,音声などを処理する8個のSPE(synergistic processor element)は,単精度の浮動小数点演算やメディア・データ演算を重視しており,基本的にRISCの命令セット体系のプロセサになっています。ロード/ストア・アーキテクチャ,32ビット固定長の命令というRISCの特徴も備えています。