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

見えてきたIntelの5~10年後のCPUアーキテクチャ
~ホモジニアス命令セット&ヘテロジニアスマイクロアーキテクチャへ




●ホモジニアス型の命令セットアーキテクチャにフォーカス

 Intelの「Many-core(メニイコア)」プロセッサは、「Cell」プロセッサと同様に“ヘテロジニアス(Heterogeneous:異種混合)”型マルチコアへと向かっている。CPUコア内部のマイクロアーキテクチャが異なる複数のCPUコアが混在する形だ。しかし、Cellとは大きな違いもある。Cellでは、CPUコアの命令セットアーキテクチャ(ISA:Instruction Set Architecture)も異なるが、Intelは異なる選択をする。メニイコアでは、CPUコア間の命令セットアーキテクチャは“ホモジニアス”(Homogeneous:均質)となりそうだ。命令セットは同じだが、シングルスレッド性能を追求する大型のCPUコアと、マルチスレッド性能を重視する小型のCPUコア。同じコードを実行できても、性格が異なるタイプのコアが混在する可能性が高い。

Intelのメニイコア構想とCellの相違
(PDF版はこちら)

 Intelの研究部門を統括するJustin R. Rattner(ジャスティン・R・ラトナー)氏(Intel Senior Fellow, Director, Corporate Technology Group)は、東京で11月8日に行なった記者会見で、メニイコア研究の方向性について明かした。

Justin R. Rattner(ジャスティン・R・ラトナー)氏(Intel Senior Fellow, Director, Corporate Technology Group) Intelが2004年に示したメニイコアのビジョンのスライド

 Intelは、現在、数十個のCPUコアを搭載する次々世代アーキテクチャ メニイコアの研究を進めている。Intelが以前示した簡単な図では、メニイコアは少数の大型CPUコアと多数の小型CPUコアを組み合わせたものになることが示唆されていた。明らかに、異なる種類のマイクロアーキテクチャのCPUコアの混在を想定したものだ。実際、別なIntel関係者も、ヘテロジニアス型のアーキテクチャをIntelでも検討していると語っていた。ただし、命令セットレベルでも異なるアーキテクチャを混在させるつもりなのかどうかは、わかっていなかった。

 今回、Rattner氏は、メニイコア世代では、CPUコアのマイクロアーキテクチャは異なる種類を組み合わせるが、ISAは一種類に保つ方向で研究していると語った。

 「我々はホモジニアスなISAにフォーカスしている。ミクスド命令セットアーキテクチャは、すでに並列プログラム化のために複雑な状況になっているプログラム側に、さらに余計な複雑性を加えてしまうと考えている。ただし、ホモジニアスフレームワークの中で、特殊化と最適化をして行く。おそらく、単一命令セットアーキテクチャの、ミクスドプロセッサコアになるだろう」

 同じヘテロジニアス型でも、Cellとは明らかに方向性が異なる。ソニー・コンピューターエンタテインメント(SCE)がIBM、東芝と共同開発したCellは、「PPE(Power Processor Element)」と「SPE(Synergistic Processor Element)」の2種類のコアで命令セットが異なるミクスド命令セットプロセッサだ。制御系タスク中心のPPEは既存ソフトウェアの移植を容易にするためにPowerアーキテクチャの命令セット、信号処理タスク中心のSPEはパフォーマンスを最大に引き出すため新命令セットを採用した。それに対して、Intelは命令セット自体は単一に留めながら、CPUコアのマイクロアーキテクチャにはバリエーションを加えようとしている。

●シングルスレッドとマルチスレッドの両方の性能を向上

 Intelがメニイコアで、複数タイプのCPUコアを搭載しようとしているのは、マルチスレッドとシングルスレッドの両側のパフォーマンスを同時に高めようとしているからだ。Rattner氏は次のように説明する。

 「(メニイコアでは)複数のコアタイプを混在させる。一部(のコア)はシングルスレッドに最適化し、別のいくつか(のコア)は、マルチスレッドに最適化する。シングルスレッドパフォーマンスに最適化されたコアは、通常、大きなコアになるだろう。一方、マルチスレッドパフォーマンスに最適化された設計は、ずっと小さく、ずっと電力効率の高いコアになるだろう。加えて、(コアサイズの)それ以外の特殊化もありうる。より大きく高速な浮動小数点演算ユニットを持つコアと、浮動小数点演算リソースがより小さいコアといったように」

 これまでのIntel CPUは、シングルスレッド性能を追求するために、より複雑で大型のCPUコアとなってきた。そのため、CPUコアサイズが肥大化し、1個のCPUに多数のCPUコアを搭載することが難しくなっていた。同じ90nmプロセスで同程度のダイ(半導体本体)を比較すると、IntelのNetBurst系は2コア(Smithfield)に留まるのに対して、マルチスレッド性能に最適化したCellでは9個ものCPUコアを載せている。シングルスレッド性能を追求したコアを続ける限り、メニイコアを早期に実現することはできない。

 しかし、マルチスレッド性能を追求して、CellのようにシンプルなCPUコアを多数搭載すると、今度はシングルスレッド性能が犠牲になってしまう。シングルスレッド性能が重要となる、既存のソフトウェア資産を抱えるIntelにとっては選択できない道だ。そこで、メニイコアでは、シングルスレッド性能を追求する大型コアと、マルチスレッド性能を追求する小型コアの組み合わせへと向かうことにしたわけだ。

 「大きなアウトオブオーダ(out-of-order)型コアは、シングルスレッドパフォーマンスのために、マルチスレッドパフォーマンスがトレードオフとなる。メニイコア設計では、(大型コアと小型コアの)2つのタイプのバランスを取ることが重要となる」とRattner氏は語る。

 Rattner氏によると、Intel内部では、現在、アプリケーションの種類毎に、マルチコア化によって得られるスケーラビリティについて研究しているという。並列化が容易なタスクでは、CPUに搭載するコア数を増やすにつれてリニアに性能が上がる。しかし、逐次処理しかできないタスクが多ければ、CPUコア数を増やしてもリニアにはパフォーマンスは上がらない。これは、「アムダールの法則」の制約と呼ばれており、マルチコア/マルチスレッド化の壁と認識されている。そして、Intelはアムダールの法則のために、シングルスレッド性能も、引き続き向上させて行くつもりだ。

 「(アプリケーション性能を)規定している要素の1つがシリアル(逐次)ワークだ。並列に処理できるパラレルワークと、逐次に処理しなければならないシリアルワークの比率、この適正バランスを図ることが、潜在的に最大のスピードアップの実現になりうる。だから我々は、ハイパフォーマンスのシングルスレッドプロセッサ対ハイパフォーマンスのマルチスレッドプロセッサのベネフィットを検証している」(Rattner氏)

 おそらく、Intelは中期的にはシングルスレッド性能を追求する大型CPUコアの発展も継続。同時に、CellのようにCPUコアをシンプル化して多数搭載することでマルチスレッド性能を高める方策を採ると見られる。中核に少数の大型コアを配置してシングルスレッド性能が重要なプログラムを走らせ、多数の小型コアでマルチスレッド化したプログラムを走らせるわけだ。

●ランタイム環境での隠蔽は

 Intelが命令セットの一貫性を保とうと目指すことは、Intelプロセッサの歴史を考えれば不思議はない。Intelの現在の繁栄は、IA-32命令セットアーキテクチャを堅持することで築かれたからだ。IA-32に依存する膨大なソフトウェア資産が、Intelの立場を堅固なものにして来た。

 そのため、Intelが、Pentium Pro(P6)以降取ってきたIA-32戦略は、命令セットのベースは保ったままで、マイクロアーキテクチャの改良で性能向上を図ることだった。例えば、物理レジスタ数を増やしても、アーキテクチャ上のレジスタ数は増やさないといったように(EM64Tでようやく増えた)。Intelは、メニイコア時代も、この路線を続けると見られる。もっとも、Intelは、メニイコアに採用する命令セットがIA-32なのかIA-64なのか、まだ明らかにしていない。

 面白いことに、Cellも初期のプランでは、ホモジニアス型の命令セットアーキテクチャを考えていたという。CPUコアのマイクロアーキテクチャはヘテロジニアスにしても、命令セットは均質にしようとしていた。Cellがヘテロジニアス命令セットを取ったのは、命令セットの制約を外すことで、さらに性能向上を図ったためだ。

 それに対して、Intelは逆の選択をしつつある。命令セットが足かせにならないと考えているのか、命令セットの制約があっても、命令セットの一貫性を維持した方が得策と考えたのか、今のところわからない。かつて、IA-32が制約になるとRISC陣営側から攻撃されたのを、マイクロアーキテクチャの改良で跳ね返したという自負もあるのかもしれない。

 面白いのは、Intelのこの選択が、同社がソフトウェア側のランタイム環境への移行を、それほど急激と見ていないことも示していることだ。

 ソフトウェア側のトレンドは、プログラミングフレームワークのランタイム環境への移行だ。中長期的には、ソフトウェアの多くは、Javaや.NETのように、中間コードプログラムをランタイム環境でリアルタイムコンパイルして実行するスタイルへと移って行くと見られている。

 こうしたモデルでは、CPUの命令セットアーキテクチャの重要性は薄れる。ランタイムエンジンが、ネイティブの命令セットを隠蔽してしまうためだ。そのため、ヘテロジニアス型の命令セットアーキテクチャを取っても、ソフトウェア側は全く意識しないですむようになる。例えば、バイトコードをサブCPUコアの命令セットに変換するJavaランタイムがあれば、Javaアプレットはそのまま異種命令セットのCPUコア上で動くようになる。おそらく、Cellの次の手はこれだ。優れたリアルタイムコンパイラ技術を持つTransmetaと提携した理由の1つは、そこにあると推測される。

 しかし、Intelはあくまでも命令セットレベルでの共通性を重視する。それは、ソフトウェア層での抽象化が、今後5~10年では、そこまで進まないと考えているためと見られる。

 もっとも、Intelは、自身でマルチコア環境に最適化した新しいソフトウェア層も研究している。これは「コンカレントランタイム(Concurrent Run-time)」と呼ぶエンジンで、コアに対するタスクの割り当てなど、メニイコアに関するさまざまな管理を行なうと推測される。Intelの、次の次のビジョンである「投機マルチスレッディング(Speculative Multitheading)」も、こうしたレイヤでハンドルすると思われる。

□関連記事
【11月8日】Intelフェロー ラトナー氏、未来に向けた研究開発内容を解説
http://pc.watch.impress.co.jp/docs/2005/1108/intel.htm
【1月12日】【海外】アムダールの法則を巡るIntelとAMDの戦い
http://pc.watch.impress.co.jp/docs/2005/0112/kaigai147.htm
【2004年12月28日】【海外】マルチコア/メニイコア時代のCPUアーキテクチャ
http://pc.watch.impress.co.jp/docs/2004/1228/kaigai146.htm

バックナンバー

(2005年11月10日)

[Reported by 後藤 弘茂(Hiroshige Goto)]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp ご質問に対して、個別にご回答はいたしません

Copyright (c) 2005 Impress Corporation, an Impress Group company. All rights reserved.