後藤弘茂のWeekly海外ニュース

IntelはLarrabee計画とアーキテクチャをどう変えるのか



●Larrabeeアーキテクチャにも手を加える可能性が大

 Intelは、データ並列偏重型のメニイコアCPU「Larrabee (ララビ)」の計画を後退させた。当初予定していた2010年のグラフィックス製品としての投入は、今のところ仕切り直しとなっている。しかし、Intelが汎用のデータ並列中心型のCPUアーキテクチャの開発を諦めるとは思えない。そこにしか、CPUの活路がないからだ。では、仕切り直しのLarrabeeまたはその後継アーキテクチャは、どうなるのだろう。

 カギは効率性だ。おそらく、Intelは現在の16-wayベクトルエンジン+コヒーレントキャッシュのLarrabeeよりも効率の高いアーキテクチャへと向かうだろう。1つ予想されるのは、ベクトルの粒度を高めて命令当たりの並列処理を多くすること。つまり、MIMD(Multiple Instruction, Multiple Data)とSIMD(Single Instruction, Multiple Data)のバランスを、さらにSIMDに振ること。もう1つ想定されるのは、ハードウェアでのキャッシュコヒーレンシを止めて、ソフトウェア管理のメモリコヒーレンシモデルを採用すること。これらの予想が当たるかどうかはわからない。しかし、最近のIntelの動きやIntel幹部の発言からは、こうした展開も予想される。

 その一方で、Intelが既存グラフィックスAPIに最適化したアーキテクチャへ切り替える可能性は低いと推測される。それは、Larrabeeの本来の目的から外れてしまうからだ。本来の目的、それは、行き詰まる汎用のスーパースカラCPUを、ヘテロジニアス(Heterogeneous:異種混合)プロセッサへと転換させることだ。

Larrabeeの概要

●CPUの前に立ちふさがる3つの壁を破る

 IntelがLarrabeeに実装した命令拡張「Larrabee New Instruction (LNI)」は、プロセッサ業界に吹き荒れるマルチコア&データ並列の嵐に対するIntelなりの解答だ。IntelのJustin R. Rattner(ジャスティン・R・ラトナー)氏(Intel Senior Fellow, Vice President, Director(Corporate Technology Group))によると、そのポイントは、SIMDとMIMDの間でバランスを取ることにある。SIMDのコンピュート効率の良さと、MIMDのプログラム上の柔軟性のバランスを取ったアーキテクチャだ。16-wayのSIMDエンジンを積んだコアを16個も載せたLarrabeeは、4-wayのSIMDエンジンを積んだコアを4個載せたNehalemに対して、動作周波数で劣っても10倍近い浮動小数SIMD演算性能を発揮できる。それも、GPUにはない柔軟性で。

 こうした解が必要になったのは、現在のCPUが3つの壁(ウォール)にぶち当たっているからだ。この3つの壁は、CPU業界でのバイブルとも言える書籍「Computer Architecture : A Quantitative Approach, 4th edition」で詳しく説明されている。命令レベルの並列性であるILP (Instruction-Level Parallelism)の限界「ILPウォール(ILP Wall)」、消費電力の壁「パワーウォール(Power Wall)」、メモリアクセスの壁「メモリウォール(Memory Wall)」だ。ILPを上げるためにハードウェアを追加しても以前ほどの性能向上は得られない。一方で、省電力化が行き詰まり、電力効率を上げなければCPU性能を上げることができなくなった。さらに、メモリ性能が上がらないことも足を引っ張る。下はComputer Architectureの共著者として有名なDavid A. Patterson(デヴィッド・A・パターソン)教授(University of California at Berkeley)が、2006年8月のCPUカンファレンス「HotChips 18」で説明したスライドだ。

3つの壁プロセッサの性能向上の進展

 この3つの壁を解決するためには、ILPを高めるのではなく、「データレベルの並列性(DLP:Data-Level Parallelism)」と「スレッドレベルの並列性(TLP:Thread-Level Parallelism)」の追求でCPUの性能を高めることが必要になる。その方が効率性が高く、電力当たりの性能が上がるからだ。さらに、オンチップのメモリを使ったデータの局所性の活用も重要となる。

 現在のプロセッサはこうした状況にあるため、DLPを突き詰めたGPUが汎用のプロセッサとして注目されるようになり、CPUがマルチコアによるTLPの活用へと向かうことになった。これは、IntelやAMDのみならず、プロセッサ業界全体の大きな潮流であり、Intelもこの問題に対処しなければならない。つまり、従来の大型スーパースカラCPUコアを補完するために、高DLP+高TLPのアーキテクチャを開発する方向自体はブレようがない。

SIMDとMIMD

●データ並列コアを浸透させる手段としてのグラフィックス

 3つの壁を破るために開発したデータ並列重視型コアLarrabeeで、Intelが打ち立てた計画は次のようなものだと推定される。

 まず、データ並列エンジンの命令アーキテクチャ自体は、IntelのIA(x86)命令拡張として実装した。これは、さまざまなスカラパイプとの組み合わせができるようにするためだと考えられる。最初のハードウェア実装として、IntelはPentium(P54C)ベースの小型でシンプルなスカラパイプとLNIのベクタエンジンを組み合わせた小型コアを設計した。Intelの研究では、Intelの現行のスーパースカラCPUに対して、Larrabee型のコアは1/5程度のサイズになるという。

LarrabeeとPentiumコアの比較

 Intelの究極の目的は、CPUにデータ並列型のコアを統合して、ヘテロジニアスな構成にすることだ。しかし、その前段階として、Intelは、まずLarrabeeをディスクリートチップとして普及させて、プログラミングモデルを浸透させる方法を選んだ。そして、その手段として、大量に売れる可能性があるディスクリートグラフィックス市場をターゲットにした。

 Intelの考え方は、効率の高いデータ並列コアを作れば、データ並列の馴染むワークロードであるグラフィックスでもいい性能を出せるというものだ。現状では膨大なデータ並列処理を必要とするアプリケーションで、多くのユーザーをつかむことができるものはグラフィックスしかないという事情もある。

 データ並列を高めたCPUの、将来のアプリケーションターゲットは、いわゆる“RMS”と呼ばれる「Recognition(認識)」、「Mining(分析&抽出)」、「Synthesis(合成)」ジャンルだ。ナチュラルヒューマンインターフェイスなどに代表される、全く新しい分野が開けると期待されている。しかし、そこに到達するまでのアプリケーションでは、グラフィックスがとっかかりとなる。

 Intelは、プログラマブル化が進むリアルタイム3Dグラフィックスが、将来は、窮屈なグラフィックスAPIに縛られず、ソフトウェアデベロッパが自分たちのソフトウェアレンダラを書く時代が来ると見ている。そして、既存GPUより柔軟性の高いLarrabeeは、その時代に最適なアーキテクチャになると考えた。だから、ディスクリートのグラフィックス向け製品としても成功できるというのが、IntelのLarrabee戦略の根幹だ。

 まとめると、Larrabeeの遠地点の目標は効率的なデータ並列コアをCPUに統合することにある。おそらく、そこはブレない。ブレるとIntelのCPU戦略自体が瓦解してしまう。しかし、近地点の方策として選んだのはディスクリートグラフィックスを最初のターゲットとすることだった。そして、今回は、この部分が崩れた。

●Larrabee 3までの道のり

 こうした状況を考えると、Larrabeeの今後も、ある程度は予想がついてくる。

 まず、階層は3つある。1つは、表層のLarrabee製品計画の白紙への仕切り直し、次は、その背後のデータ並列コア浸透戦略の見直し、さらに、深層でのアーキテクチャの改良。この3つのフェイズは、一緒にはできない。

 製品計画については、現状ではどんな情報も当てにできない。変わる可能性があるからだ。今のところ白紙と考えた方がいい。データ並列コア浸透戦略については、もしかすると、大きく仕切り直しの可能性もある。例えば、ディスクリートのコプロセッサは諦めて、最初から統合を狙うことも考えられる。

 Larrabeeには知られているように、65nmプロセスでのリサーチ、45nmプロセスの第1世代Larrabee、32nmプロセスで第1世代と同系列のアーキテクチャのLarrabee 2があった。そして、その後に、アーキテクチャを刷新すると見られるLarrabee 3が控えていた。顧客に対してはLarrabee 1と2は伝えて、Larrabee 3の展望も示唆していたという。Larrabee 1では競争力がないため、Larrabee 2で立ち上げるという話も聞こえてきていた。

 しかし、Larrabeeの既存グラフィックスAPIベースでの効率性の悪さは、アーキテクチャ上のことであるため、Larrabee 2での立ち上げもうまく行くとは考えられない。実際、あるゲームソフトウェア企業のトップ技術者は9月頃に「Larrabee 3まで待ちだろう」と言っていた。こうした状況から、Larrabee製品計画の仕切り直しは当然だったと言える。また、こうした顧客の側の反応からは、アーキテクチャ変更が望まれていることもわかる。

●Larrabeeを捨て去りGPUを開発する可能性は

 では、Larrabeeアーキテクチャと戦略を仕切り直して改良するとしたらどうなるのだろう。現状では確固とした情報がない。しかし、指摘されていた問題やRattner氏の過去の発言などから、およその方向性は見える。

 まず、大枠で言えば、Intelが現在のグラフィックスパイプラインに最適化したGPUコアを開発する可能性は低い。理由は明瞭で、Intelの目的はグラフィックスの性能だけを伸ばすことではないからだ。また、固定的なGPUハードウェアには、Intelがスキルを持っておらず、Intelの設計上の強味を発揮できない。

 それなら、AMDがATI Technologiesを買収したように、NVIDIAを買収すれば(可能だとしての話)どうか。おそらく、そうした方向への展開もないだろう。確かに、NVIDIAが現在進めていることは、GPUの側から比較的自由度の高いデータ並列コアへと向かうことで、Intelとある意味で路線は一致している。しかし、Intelは最初からCPUを発展させる形を望んでLarrabeeを設計しており、ある意味でNVIDIAと逆の方向から進んでいる。Larrabeeで培った資産を活用した方が、おそらく近道だろう。路線が近いがために、IntelがNVIDIAから得られるものは、実は少ない。例えば、NVIDIAアーキテクチャの大きな特長は、データ並列に最適化したスケジューラなどだが、それはIntelには不要な部分だ。

 では、IntelがCPUに統合するデータ並列コアという路線を堅持しながら、アーキテクチャを改良するとしたらどうなるのか。

FermiでのWarpのスケジューリング

●32-wayへのベクトル拡張とソフトウェアコヒーレンシの可能性

 Rattner氏は10月の来日時の記者ラウンドテーブルで、CPUにデータ並列コアを並列する場合について、次のようにビジョンを語っていた。「近い将来は、おそらく、大きなコアが8-wayのベクトルエンジン、スモールコアは16または32-wayのベクトルエンジンという組み合わせになるだろう」

 現在のLarrabeeのベクトルエンジンは16-wayだが、Rattner氏は32-wayも示唆した。ベクトルは長くすればコンピュート効率が高くなるが、その反面、コントロールフローの効率が悪くなる。LarrabeeやGPUのベクトルエンジンは、ベクトル分岐命令を備えており、コントロールフローを制御できる。しかし、ベクトルが長くなると、分岐制御の粒度が大きくなり、効率が悪化するからだ。

 このバランスは、アプリケーションのワークロードに対して、どれが最適かを見極めて決める必要がある。現状ではNVIDIAが32-way、AMD GPUが64-wayとなっている。つまり、原理的には、Intelが一番コントロールフローの柔軟性は高いが、コンピュート効率が最も悪い。

ベクタ条件分岐
ベクタ長の比較

 もし、Intelがワークロードを分析して、よりコンピュート効率が高い方がいいと判断したら、この部分に手を付ける可能性もある。Rattner氏が示唆したような、16-wayを32-wayに拡張する方法は、1つの手段だ。これをハードウェア的に実装する場合は、1個のCPUコアが大きくなり、コアの並列度は下がる。MIMDとSIMDのバランスをSIMD側へと寄らせることになる。ただし、GPUがやっているように、16-wayのベクトルエンジンで2サイクルで32-way実行する方法もある。GPUの場合、これはスレッドスケジュールの簡素化やレイテンシの隠蔽に効果があるが、Larrabeeの場合は話が違ってくるため、単純には適用しにくい。

Larrabeeのリングバス

 Larrabeeはリングバスで結んだ各コアが備えるキャッシュメモリ間でコヒーレントをハードウェアで取っている。これも、バストラフィックを食い、ハードウェアを複雑にする原因になっていると見られる。Intelは、これも取り去るかもしれない。もちろん、キャッシュコヒーレンシが取られなければプログラミングがやっかいになる。しかし、Rattner氏が今後の重要技術として挙げたシェアードバーチャルメモリ(Shared Virtual Memory)は、この問題をある程度解決できる。

 Intelは、これまで、シェアードバーチャルメモリをCPUとディスクリートLarrabeeの間でのメモリ共有として紹介してきた。しかし、シェアードバーチャルメモリは、メモリを共有するコア間に適用することもできる。実際、Intelが先週概要を発表した48コアのメニイコアリサーチCPU「Single-chip Cloud Computer」は、シェアードバーチャルメモリによるソフトウェアベースのページレベルのメモリコヒーレンシを取る。特に、データ並列の場合は、データサイズが大きいためシェアードバーチャルメモリを適用させやすい。

 もちろん、Intelが取れる手は他にもいくつもある。しかし、プロセッサアーキテクチャの流れを見る限り、大枠では方向性は変わらないと推定される。もし、変わるとすれば、それはIntelが、現在の市場動向だけで製品戦略を決めた場合だ。その場合は、Intelが、今のCPUアーキテクチャの変化の流れに乗り遅れる可能性が出てくる。