■後藤弘茂のWeekly海外ニュース■Pentium 4ベースのCellプロセッサの可能性 |
●ストリーム処理に最適化したSIMD型CPUコアのマルチコアは最適解
マルチコア時代のCPU技術トレンド(再掲) PDF版はこちら |
前回のコラムで、ソニーグループ+IBM+東芝の新CPU「Cellプロセッサ」のポイントは、異なる種類のCPUコアを組み合わせた「ヘテロジニアス(Heterogeneous:異種混合)マルチコア」にあると説明した。3社が異種混載のマルチコアを採用した目的は、パフォーマンス/消費電力効率のアップにある。より効率の高いプロセッサコアにすることで、妥当な消費電力で極めて高いパフォーマンスを実現することだ。実際、Cellは、既存の汎用プロセッサと比べると、格段にパフォーマンス/電力が高いと推定される。
現在のプロセッサ開発の最大の命題は、“いかに性能を効率よくアップさせ続けることができるか”にある。それは、プロセッサのパフォーマンス/消費電力効率が極度に悪化しているためだ。この問題は、ここ1~2年のプロセッサ業界の最大のトピックであり、カンファレンスなどでも何回もテーマに取り上げられてきた。
Cellが発表された2月の「ISSCC(IEEE International Solid-State Circuits Conference) 2005」でも同様で、「When Processors Hit the Power Wall」と題された低消費電力化のパネルディスカッションが行なわれた。同パネルの中で、ストリーム型プロセッサ研究で知られるスタンフォード大学のWilliam Dally氏(Stanford University and Stream Processors)は、プロセッサの効率化について次のように説明している。
まず、現在の90nmプロセッサを比較すると、32bitのオペレーション1回に必要なエナジーは大きく異なるという。ASICの専用ロジックの場合には2pJ、DSPだと60pJ、RISC系CPUだと200pJ、それがPC/ワークステーションになると2000pJと、ASICとPCプロセッサの間には1,000倍もの効率ギャップがあるという。PCプロセッサの非効率の原因となっているのは、長い配線、アレイアクセス、コントロールオーバーヘッド、オフチップへのデータムーブメントなど。過去25年に渡ってPCプロセッサは非効率化を積み重ねた結果、ギャップが大きく拡大したわけだ。
そして、リーク(漏れ)電流の増大がこの問題を深刻にしたという。リーク電流が増えたことで、ハイエンドのシングルスレッドのPCプロセッサでは、プロセスを微細化してもオペレーション当たりの消費エナジーは、逆に上がってしまうようになりつつあるという。
Dally氏は、この問題を解決する方法として3つのアプローチを示した。(1)多くの小型プロセッサを集積することで並列性を高める、(2)SIMD(Single Instruction, Multiple Data)型処理と明示的なコードマネージメントによってコントロールオーバヘッドを減らす、(3)分散型で階層型のレジスタによってデータ移動を減らす。つまり、ストリーム型処理に向いた構造を持ったSIMDプロセッサを多数集積することで、非常にパフォーマンス/電力効率の高いプロセッサを作ることができるというわけだ。
この発想は、実際にはスタンフォード大学の研究プロジェクトに反映されているが、面白いのは、基本コンセプトの多くの部分がCellとも重なることだ。Cellもまた、ストリーム型処理にある程度最適化された(階層型レジスタはないが、スクラッチパッド型のメモリを持ちキャッシュを持たない)SIMD型中心のCPUコア「SPE(Synergistic Processor Element)」を8個搭載しているからだ。そうした流れから見ると、Cellは現在のプロセッサのトレンドの必然から出てきたとも言える。
●デジタル家電系の世界には最適なアプローチ
ただし、冒頭に書いたように、Cellの場合は性格の異なるプロセッサコアを組み合わせている。これは、コントロール系タスクが中心でスレッド切り替えが多い従来型のソフトウェア環境の性能と、ストリーム型のデータ処理の性能の両方を効率よく向上させるための構造だ。そのため、ストリーム処理に特化したプロセッサとは異なり、CellではOSなどを走らせるための制御用プロセッサコア「PPE(Power Processor Element)」を1個搭載している。
現状では、多くのアプリケーションでこの2つの処理性能の両立が求められるため、Cellのような制御用CPUコア+データ処理用CPUコア混合のマルチコアは合理的な解となりうる。そのため、Cell以外のプロセッサにも、同じ様なヘテロジニアスマルチコア構造が広まる可能性がある。というか、組み込みではCPUコア+DSPコアなアプローチはこれまでの流れでも存在するが、それが強化される傾向にあるかもしれない。
「他の(プロセッサ)分野でも、多くのアプリケーションにこうした(ヘテロジニアスマルチコアの)トレンドが見える。組み込みプロセッサ、コミュニケーションプロセッサ…。我々以外の人々も、この種のオーガニゼーションを目指している。おそらく、今後、もっと多くのこうした(ヘテロジニアスマルチコア型の)オーガニイゼーションを見ることになるだろう」とCell開発を担当したIBMのJim Kahle(ジム・ケール)氏(IBM Fellow)は語る。
例えば、デジタルTVやホームサーバーのようなアプリケーションを想定してみると、ヘテロジニアスマルチコアの利点がよくわかる。この種のデジタル映像系機器では、OSやGUI、ネットワークスタックなどのためにそこそこの性能の汎用プロセッサコアが欲しい。そして、ビデオ処理では、多くの圧縮規格や多様なトランスコードなどのサポートのためには、固定ハードではなく、柔軟性のある高性能なプログラマブルなプロセッサが望ましい。しかし、OS、エンコード/デコード、トランスコードにそれぞれ別個のチップを用意すると、コスト面で不利になってしまう。また、汎用CPUで全ての処理を行なうのは、ムダが多すぎる。
そうすると、比較的高い汎用性能と、非常に高いストリーム処理性能を備えたCell型のヘテロジニアスマルチコアが、回答の1つとして浮上してくる。Cellを、デジタルTVやホームサーバーに展開しようというソニーや東芝の戦略は、アーキテクチャから見る限り、非常にロジカルだ。Cellをデジタル家電へという展開は、ビジョンとして納得ができるし、Cell以外に似たような発想のCPUが出てくる可能性もある。コミュニケーション機器も、ある程度似たような状況だ。
●飛躍的にCPU性能を高めるには選択肢はない
こうしてみると、デジタル家電を中心とした組み込み用途では、ヘテロジニアスマルチコアはある程度明確なビジョンがあることになる。
では、コンピューティング分野ではどうなのだろう。CellあるいはCell派生CPU、またはCellに似たアプローチが成功できる要素があるのだろうか。
まず、発想をCPUパフォーマンスという側面に切り替えると、PC/サーバー/モバイルPCといったコンピューティング分野のCPUが、パフォーマンス向上の壁に当たってしまっているのは明瞭だ。特に、PCでは既存のソフトウェア資産のシングルスレッド性能の維持という呪縛に縛られているために、パフォーマンス/電力やパフォーマンス/ダイエリアが悪化している。
Intelはそのため、効率をアップさせながら、既存ソフトウェアの性能を性能も向上させる手法を研究している。この方向では、以前このコーナーで紹介した「PARROT」のように、コードの局在性により注目して、局所的に深い最適化スケジューリングを行なう手法が有望だと考えられる。同様の手法は、ソフトウェアベースだが、TransmetaのEfficeonが使っている。しかし、こうしたアプローチで高められる効率は、非常に限定されている。あくまでも、既存のソフトウェア資産のシングルスレッド性能を重視する場合にのみ有用な方法だ。
それに対して、Cellが取ったようなヘテロジニアスマルチコアでストリーム型データ処理の性能を高めるアプローチは、飛躍的にパフォーマンス/電力を向上させることができる。既存のPC向けCPUのアプローチでは、この効率には追いつけない。現状のx86系CPUで、Cellの256GFLOPSを達成できるマルチコアCPUを現状で作ろうとしたら、膨大な消費電力、それこそ1,000WクラスのCPUになってしまうだろう。
そのため、もし、PC環境でも、Cellクラスの高パフォーマンスのデータ処理が求められるなら、ヘテロジニアスマルチコアがPCの世界にも入って来る可能性が出てくる。実際、Intelも、従来型のリッチなCPUコア+効率重視の小型CPUコアという構成の「Many-core」で同じ方向を指向し始めたように見える。
●Cellコンピューティング構想とCellプロセッサ
その場合のハードルは、前回指摘した通りソフトウェアだ。ヘテロジニアス型のマルチコアでは、たとえ異なるCPUコアの命令セットが共通だとしても、OSやアプリケーション側のかなりの対応が必要になる。命令セットが異なるなら、プログラムは新規に新命令でコンパイルしてもらう必要がある。
じつは、この問題に対するアプローチは、Cellが示している。それは、Cellのフィロソフィはコードのポータブル化にあるからだ。JAVAや.NETが目指しているポータビリティを、ハードウェアベースで実現しようというのがCellの根本の発想だ。そのため、もし、Cellが大きな支持を得ることができれば、次のようなCellコンピューティング世界が成立する可能性がある。
Cellの成功によって、現在のCellプロセッサ以外にもCell型のアプローチが広まる。SPE型CPUコアを搭載し、Cellライクな構造を持ったCPUが、現行Cell以外にも多数登場し始める。PowerPC G5クラスのリッチなPowerPCコア+SPEを搭載したMacintosh向けのCPUや、もっとシンプルなPPEと4個程度のSPEを載せた廉価組み込み版などもありうるかもしれない。どころか、メインの制御用CPUコアがPowerとは異なる命令セットのものも登場する可能性もある。極端なことを言えば、Pentium 4やAthlon 64クラスのx86系CPUコア+SPEといった構成のCPUがありえても、原理的にはおかしくはないはずだ。各SPE搭載CPUは、制御用CPUコアの上で、SPEを制御するためのランタイムエンジンをOSの上で走らせて差異を吸収することもできると考えられる。
その場合、ソフトウェア開発者は、SPEの命令セットでアプリケーションを書く。これは、ソフトウェアCellのオブジェクトフォーマットに沿っていることが望ましい。すると、同じアプリケーションが、SPEを搭載したCPUのどれでも高パフォーマンスに走る。単体のSPE搭載CPUで性能が足りない場合には、ネットワーク上の他のSPE搭載CPUのリソースを利用して、処理を分散化する。それによって、プラットフォームインディペンデントで(実際にはSPEに依存しているが)、事実上パフォーマンスに制約のないソフトウェア実行環境ができあがる。
おそらく、最終的に描いているCellコンピューティングの姿はこのようなものになると推測される。もちろん、現状ではこれは空想物語だが、“Cellコンピューティング”にはそれだけの潜在的な発展性がある。
□関連記事
【2月18日】【海外】CPUの新しいトレンド「ヘテロジニアスマルチコア」
http://pc.watch.impress.co.jp/docs/2005/0218/kaigai158.htm
【2月12日】【海外】Cellのパワーの源「SPE」の正体
http://pc.watch.impress.co.jp/docs/2005/0212/kaigai156.htm
【2月9日】【海外】PlayStation 3に搭載されるCellの性能
http://pc.watch.impress.co.jp/docs/2005/0209/kaigai154.htm
(2005年2月25日)
[Reported by 後藤 弘茂(Hiroshige Goto)]