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

Intelの2013年のCPU「Haswell」へと続くNehalem開発の舞台裏



●Pentium 4をベースにするプランもあったNehalem

 IntelはNehalem(ネヘイレム)マイクロアーキテクチャの開発を2003年からスタートさせ、2004年中盤までに、ほとんどのマイクロアーキテクチャを決定した。2005~2007年はエンジニアリングに費やした。トータルでは製品リリースまで5年かかった。

 Nehalem開発に当たっては、多くの選択肢を検討した。その中には、「Northwood(ノースウッド:130nm版Pentium 4)」をベースにするプランと、フロムスクラッチ(ゼロから)でマイクロアーキテクチャを新開発するプランもあった。だが、開発労力の削減とソフトウェア最適化の一貫性の維持のために、Core 2と同じ「Pentium Pro(P6)」パイプラインの拡張を選択した。

 また、Nehalemに256-bitのSIMD(Single Instruction, Multiple Data)演算命令「VSSE」を組み込むプランや、Hyper-Threadingを実装しないプランも検討された。それに伴い、256-bit命令を組み込む代わりに、同程度のダイサイズ(半導体本体の面積)でCPUコア数を減らすことも検討された。

 Nehalemがターゲットとする市場については、サーバーとモバイル(ノートPC)にフォーカスした。意外なことに、デスクトップPCの優先度は下げられていた。Nehalemが現在の設計に落ち着いたのは、サーバーとモバイルに有利だと判断されたからだった。デスクトップ&サーバーとモバイルそれぞれに異なる2種類のCPUマイクロアーキテクチャを提供することを止めたのは、コードの最適化をシンプルにするためだった。

 Nehalemを開発したチームは、現在、2013年の次々期マイクロアーキテクチャの開発を行なっている(「Haswell」と見られる)。

 Intelは、こうしたNehalem開発にまつわる秘話を公開しつつある。

Nehalem系CPUの比較
PDF版はこちら

●5年かかったCPU開発を2年サイクルに短縮

 今年(2010年)2月に米スタンフォード大学の公開講義EE380で、IntelのアーキテクトGlenn J. Hinton氏(Intel Fellow, Intel Architecture Group, Director, IA-32 Microarchitecture Development, Intel)は「Key Nehalem Choices」と題した講演を行なった。Webcastされた同講義からは、IntelのCPU開発の裏舞台が垣間見える。

 Intelは数年前から、2年サイクルで新マイクロアーキテクチャCPUを投入する「チックタック(Tick Tock)」モデルを唱えている。2年置きに半導体プロセス技術を革新(Tick)、その中間の2年置きにCPUマイクロアーキテクチャを刷新(Tock)する開発モデルだ。これまでの4年間、このモデルは守られてきた。2006年に新マイクロアーキテクチャの「Merom(メロン:Core Microarchitecture)」を投入(タック)、2007年にはMeromの45nmプロセス版である「Penryn(ペンリン)」をリリース(チック)、2008年には新マイクロアーキテクチャのNehalemを(タック)、2010年頭にはNehalemの32nmプロセス版「Westmere(ウエストミア)」を投入(チック)した。

 Intelは、さらに2011年に新マイクロアーキテクチャの「Sandy Bridge(サンディブリッジ)」を(タック)、2012年頃にはSandy Bridgeの22nmプロセス版(チック)を投入することを明らかにしている。ここへ来て、Hinton氏によって2013年には次々期マイクロアーキテクチャのCPUが導入(タック)されることも明確になった。

 チックタックモデルがそれ以前の開発モデルと違う点は、アーキテクチャ開発のスピードだ。PC向けCPUの開発には、4~5年といった長い時間がかかる。例えば、'95年のPentium Pro(P6)から次の2000年のNetBurst(Pentium 4)までは5年空いている。デスクトップでの次のマイクロアーキテクチャMeromは2007年なので、7年かかっている。それがチックタックモデルでは2年サイクルに短縮された。

チックタック開発モデル
Intel、AMDのCPUアーキテクチャ移行図
PDF版はこちら

●闇に消えた初代プランのNehalem

 5~7年もかかっていた新マイクロアーキテクチャの投入を2年に短縮できた理由の1つは、よく知られている通り、2つの開発チームがオーバーラップしてCPUを開発する態勢にしたことだった。MeromとSandy Bridgeはイスラエル北部のハイファ(Haifa)にある開発センターで開発、NehalemとHaswellは米オレゴン州ヒルズボロ(Hillsboro)の開発センターで開発している。Hinton氏はヒルズボロ側のリーダーだ。

 2年サイクルといっても、2チームがオーバーラップしているため、実際には各CPUマイクロアーキテクチャの開発にはそれぞれ5年をかけている。Merom(メロン)は2001年に開発がスタートして製品がリリースされたのは2006年。Nehalemは2003年にスタートして製品が出荷されたのは2008年の終わり。Sandy Bridgeは2005年にスタートして2011年頭の予定だ。ほぼ5年のレイテンシだ。

 ちなみに、Intelは2001年からNehalemと言うコードネームのCPUの開発をスタートさせたが、この初代Nehalemは、2003年頃にいったん仕切り直しとなっている。IntelのアーキテクトDoug Carmean氏が、Intelの社内インタビュー記事の中で2002年に「2001年はNehalemのアーキテクチャ定義に費やした」と語っていた。しかし、IntelがCPU開発の方向をマルチコア化へと大きく転換する中で、この初代Nehalemのプランはキャンセルとなった。

 そのため、現在のNehalemの開発がスタートしたのは、あくまでも2003年だ。Hinton氏は、このプレNehalemについては、2003年に開発がスタートする前にもリサーチが行なわれたと言及している。ちなみに、Carmean氏は現在は、メニイコアCPU「Larrabee(ララビ)」のチーフアーキテクトとなっている。

Intel CPUコアの移行計画の変遷
PDF版はこちら

●2013年のCPUはオレゴンで開発中

 5年の開発サイクルをより詳しく見ると、アーキテクチャ定義で1年ほど、開発に3年、バリデーションなどに1年で合計5年かかっていることがわかる。Nehalemについて言えば、ほとんどのマイクロアーキテクチャの決定は2004年の中盤までになされたという。しかし、実際のエンジニアリングに、2005から2007年の3年間をかける必要があった。2007年にテープアウトしてから後の1年はバリデーション作業が中心となる。その段階では、アーキテクト陣は手が空くので、次のマイクロアーキテクチャに取りかかることができる。だから、アーキテクトにとっては4年サイクルで、それが2チームだから2年サイクルのスループットというわけだ。

Intel CPUのアーキテクチャ開発サイクル
PDF版はこちら

 Hinton氏によると、この態勢は2011年以降も続くらしい。「Sandy Bridgeが2011年で、新しいのが2013年に出る」(Hinton氏)。2013年のCPUはHinton氏のチームが担当しているという。これが、コードネーム「Haswell(ハスウェル)」だと推定される。コードネーム自体は変更されたりする可能性があるので不確かだが、2013年の新マイクロアーキテクチャがあることは確かだ。

 また、Hinton氏は"新マイクロアーキテクチャ"の定義も以前とは異なると説明している。現在のIntelでは、新マイクロアーキテクチャは必ずしも「フロムスクラッチ」を意味してはいない。チックタックモデルのリストに並ぶ新マイクロアーキテクチャは、いずれも基本的にはP6(Pentium Pro/II/III)パイプラインの拡張版だと言う。ベースのパイプラインは、過去のアーキテクチャを踏襲、それを拡張することで開発時間と労力を削減している。この手法も、複雑になったx86系CPUの開発時間を短くすることに役立っている。

Nehalemブロックダイヤグラム
PDF版はこちら

●ソフトウェア最適化のためにマイクロアーキテクチャを一本化

 Intelは、一時はデスクトップ&サーバー向けCPUと、モバイル向けCPUのアーキテクチャを変えていた。デスクトップのPentium 4とモバイルのPentium Mが並列していた時だ。もともと、イスラエルの開発チームはモバイル向けCPUの開発チームだった。しかし、チックタックモデルを取るようになってからは、CPUのマイクロアーキテクチャを一本化。1つのアーキテクチャで、デスクトップ&サーバーとモバイルの両方をカバーするようになった。

 Hinton氏は、その理由について、ソフトウェア側の最適化をシンプルにするためだと説明した。Pentium 4とPentium Mが並列していた時は、これが大きな問題になったという。デスクトップ&サーバーとモバイルで、異なるコンパイルが求められるのは難しかったという。

 現在はマイクロアーキテクチャの一本化によって、サーバーからモバイルまで同じベースコアを使っている。そのため、ソフトウェアの最適化という面では、シンプルになっている。共通アーキテクチャ化によって無駄が生じても、ソフトウェア側にとって、その方が最終的に利益になると見ているようだ。

 しかし、そのために、IntelはCPU開発においてサーバーからモバイルまで異なる市場要求を満たす必要に迫られている。問題はそれぞれの要求が大きく異なり、トレードオフがある点だ。

 モバイル市場では電力が最重要で、特に平均消費電力を下げる必要がある。パフォーマンスではシングルスレッドを重視し、またコストも重要となる。

 デスクトップ市場ではメディアプロセッシングの性能が重要で、こちらもシングルスレッド性能を重視する。また、ローコストからハイパフォーマンスまでのスケーラビリティが必要だ。

 サーバー市場ではマルチスレッド性能が重要となるため、Hyper-ThreadingのようなSMT(Simultaneous Multithreading)技術が有用となる。マルチスレッド性能を上げるために、CPUコア数を増やすには、CPUコア当たりの電力を下げる必要がある。そのためノートPCと同様に動的なパワーマネージメントが重要となる。また、より広いメモリアドレス空間や、信頼性と大容量キャッシュ、仮想化、大メモリ容量対応など、PCとは異なるフィーチャ(仕様)が重要になる。

モバイル、デスクトップ、サーバーそれぞれのトレードオフ

●サーバーとモバイルにフォーカスしたNehalem

 Intelが2003年にNehalemのマイクロアーキテクチャを定義するに当たって、まず直面した問題は、サーバーからモバイルまでの範囲で、フォーカスをどこに置くかという点だったという。

 結論から言えば、Nehalemはサーバーとモバイルを優先した。その理由は明瞭だ。Nehalemの開発がスタートした2003~2004年は、IntelがAMDのOpteronによってサーバー市場で挑戦を受け始めた頃だ。Intelが競争に直面していたため、Nehalemには、まずサーバーで競争することが求められた。また、この頃からPC市場はノートPCへの傾斜が進み始めていた。「そのため、サーバーとラップトップに高い優先順位が置かれた」(Hinton氏)という。

 この決定の結果、いくつかのアーキテクチャ要求が産まれた。ノートPCに適合するように、シングルスレッドで高パフォーマンスで、かつデュアルコアで低コストかつ低消費電力。その一方で、サーバーに適合できるだけのCPUコア数のスケーラビリティを持つ。また、サーバー向けのマルチコアでは、低いコア当たりの電力とコストで、高いスループットを実現できる。しかも、開発にかかるエンジニアリングコストは最小に抑えなければならない。

Intelのダイサイズ移行図
PDF版はこちら