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

ついにベールを脱いだIA-64アーキテクチャ


●386以来、最も重要なアーキテクチャ上の進展

 x86からIA-64へ、歴史的な転換が始まった。IntelとHewlett Packard(HP)が、ついにIA-64アーキテクチャの全容を発表したのだ。

 インテル日本法人は、IA-64を「i386以来、最も重要なアーキテクチャ上の進展」と説明する。しかし、IA-64の持つ意味は、386よりもはるかに大きい。それは、IA-64が単に従来のIA-32(x86)アーキテクチャを64ビット化したものではなく、Intelのアーキテクチャを根底から変革しているからだ。そして、IA-64が、他のどのコンピュータ用プロセッサにも採用されたことがない、革新的なアーキテクチャだからだ。

 IA-64は、x86に代表されるCISC(複雑命令セットコンピュータ)アーキテクチャではなく、PowerPCやSPARCなどのようなRISC(縮小命令セットコンピュータ)アーキテクチャでもない。CISC対RISCの構図に当てはめるなら、ポストRISCを狙う新しいアーキテクチャだ。流れとしては、VLIW(超長命令語)系のアーキテクチャだが、伝統的なVLIWとはかなり異なっている。

 IA-64アーキテクチャの概要はあとで説明するが、その革新性は、プロセッサの性能の上限を、今後数世代にわたって大幅に引き上げる可能性がある。その結果、現在RISC系プロセッサが占めている、UNIX系ハイエンドサーバーやワークステーションの領域にIA-64が浸透。PCの世界に起きたような水平型マーケットによる性能価格比の向上をもたらす可能性がある。また、今後10年を視野に入れるなら、デスクトップPCやノートPCの世界にもIA-64が浸透、個人が使えるコンピューティングパワーを劇的にアップさせるかも知れない。

 こんな可能性を秘めるIA-64について、IntelとHPが今回発表したのは、アプリケーションを書くために必要なIA-64の命令セットやリソース、フィーチャなどだ。Intelは、ここ1~2年の間にIA-64アーキテクチャのポイントを、さまざまなカンファレンスや学会で小出しにしてきた。しかし、今回の発表が異なるのは、アーキテクチャの全貌を明らかにし、詳細なドキュメントを公開したことだ。ドキュメントは両社のWebサイトにあるので、根性さえあれば、IA-64アーキテクチャを知ることができる。

 もっとも、現在の段階では、まだ、実際のインプリメンテーションである「Merced(マーセド)」の詳細はわからない。しかし、IA-64のアーキテクチャから、Mercedの方向性も見えてきた。まず、IA-64の基本的な概念を眺めてみよう。


●IA-64はシンプルを目指すアーキテクチャ

 IA-64プロセッサは、次世代アーキテクチャと言うからには、複雑で膨大なモンスターチップになるのでは-意外なことに、これは当たっていない。IA-64プロセッサの全体のトランジスタ数はPentium IIIより増えるだろうが、ハードウェア自体は現在のPentium IIIよりもシンプルになる部分が多いだろう。それは、IA-64のコンセプトが、できるかぎりハードウェアをシンプルにすることにあるからだ。

 IA-64がシンプル? いや間違いではない。IA-64は、複雑な今のMPUに対するアンチテーゼとして登場してきたのだ。MPU上から複雑なハードウェアを取り去り、ソフトウェアで処理することでMPUをシンプルにすることがIA-64の目的なのだ。

 現在の最先端MPUは、命令を実行するユニットを多数備えて複数の命令を同時に実行できる。それも、命令を並んだ順番でなく、実行できるものからどんどん実行できる(アウトオブオーダー実行)ようになっている。しかし、複雑な並列実行を制御するため、命令のスケジューリングを行うためのMPU上のハードウェア部分はどんどん肥大化してきた。また、ハードウェアによる並列化では、実行ユニットを増やしても、なかなか効率的に利用できないという壁があり、「RISCでは、1クロックあたりに実行できるのは2.5命令が限界だろうと言われている」(インテル、サーバー・ワークステーションマーケティング本部、サーバー/IA-64マーケティングマネージャ、平野浩介氏)という。

 IA-64のポイントは、このスケジューリングの多くを、MPU(ハードウェア)からコンパイラ(ソフトウェア)へと移してしまうことにある。MPUが実行しながらあわただしくスケジューリングするのではなく、コンパイラが時間をかけて広範囲のソースコードを解析し、効率よく並列実行できるようにあらかじめ命令を並べる。その結果、ハードウェアよりも優れた並列化を行ない、効率的に実行ユニットを利用できるようにする。また、MPU側からはスケジューリング機構の多くを取り去って単純化し、その分だけ実行ユニットを増やしたり、機能をリッチにする。そして、最終的には1サイクルに2.5命令以上を実行できるようにするわけだ。

 こうしたアーキテクチャを持つIA-64は、原理的には同じ動作クロックでも、他のアーキテクチャよりも実行できる命令数が多い=パフォーマンスを高くできることになる。また、ハードウェアの複雑さを減らせるために高速化も容易になる。将来のMPUでは、さらに実行ユニットの数を増やしてパフォーマンスの向上を図ることができるし、チップが出た後でもコンパイラを改良することでパフォーマンスを上げることが容易になるはずだ。

 もっとも、現実的には、出荷スケジュールがずれ込んでしまったMercedが、最先端RISCの性能を大きく超えることは難しいだろう。だが、性能のヘッドルームが大きいというアーキテクチャ上の利点は大きい。実際、2001年の終わりに、第2世代IA-64プロセッサの「McKinley(マッキンリ)」が登場したら、IA-64がパフォーマンスでは独走態勢に入ると見る業界関係者もいる。


●ハードウェアからソフトウェアへの移行はMPUの歴史

 IA-64の最大のポイントは、ハードウェアからソフトウェアへと処理を移したことだと書いたが、プロセッサの歴史を見ると、これはなにも不思議なことではない。同じことは、じつは過去にもあったのだ。

 初期のMPUは、アセンブラでプログラムを書くことを前提として、プログラマーの生産性を高めるため、ひとつの命令で複数の処理ができる複雑な命令をどんどん増やした。これは、当時高価だったメモリを節約するために、プログラムのコードサイズを減らすという目的もあった。単純に言ってしまうと、これがCISCアーキテクチャだ。

 しかし、CISCの複雑さは、やがてMPUに高速化が求められるようになると障害になり始めた。そこで登場したのがRISCだった。RISCは、高級言語でプログラミングしてコンパイルすることを前提として、命令セットを単純命令に絞り、MPUハードウェアを単純化した。つまり、命令セット(ハードウェア)の複雑さをコンパイラ(ソフトウェア)側に移したのがRISCだったのだ。そのため、RISCメーカーは、MPUのハードウェアだけでなく、コンパイラの開発にも注力(同規模の開発チームを抱えたメーカーもある)した。

 MPUを単純化した第1世代のRISCは、パイプライン化で、可能な限り1サイクル1命令に近づけようとした。しかし、第2世代RISCでは、さらに性能を引き上げるために、複数のパイプラインに並列実行させて、1サイクルに1命令以上を実行させるアーキテクチャ、すなわちスーパースカラの採用へと進んでいった。このアプローチは、x86系MPUにも取り入れられた。P6(Pentium Pro/II/III)系やAMD-K6系などはいずれも最先端RISCと同じスーパースカラ構造を持っている。だが、その代償に、最先端MPUのハードウェアは再び複雑になり、性能向上の限界が見えてきてしまった。そこで浮上してきたのが、VLIWアーキテクチャだった。


●伝統的なVLIWの難点を克服

 VLIWは、コンパイラによって並列実行できる命令をあらかじめ1つのとても長い命令の中に組み込む。MPU側はその超長命令に対応した実行ユニットを備え、スケジューリング機構は最小限しか持たない。つまり、最新MPUの問題を解決できる技術だった。しかし、このVLIWには難点があった。それは、コンパイラに非常に高い技術が要求されることと、MPUの実行ユニットの構成を発展させたりするとバイナリの互換性が失われること、それとコードサイズが肥大化する場合があることだった。

 IA-64のベースになっている「EPIC(Explicitly Parallel Instruction Computing)」は、このVLIWの難点をユニークな方法で解決、さらにパフォーマンスを高めるための他の新技術を加えたものだ。

 IA-64では、各命令は3個づつ128ビットの「Bundle(バンドル)」と呼ばれる命令グループに収められる。各命令は41ビット長で、バンドルにはこのほか5ビットのテンプレートが付加される。テンプレートは上位4ビットでバンドルに収めた3命令のタイプと並び順と依存関係、つまりそのまま並列に実行できるかどうかを表現する。また、最後の1ビットは、次のバンドルとの依存関係を表現する。つまり、バンドル内に依存関係がなく、続くバンドルとも依存関係がなければ、4命令以上が依存関係なく実行できることがMPU側にわかるわけだ。

 この手法なら、MPU側は命令の依存関係をテンプレートから読みとって実行ユニットに送り込めばいいので、ハードウェアの負担は大幅に減る。また、複数のバンドルの中から同時に実行できる命令を取り出すことで、MPUの内部の実行ユニットの構成が変わってもバイナリの互換性を保つことができる。バンドルは、一種のVLIW命令圧縮技術であり、コードサイズの肥大化も最小限に抑えられる。つまり、VLIWの難点を解消して、その利点を取ることができるわけだ。

 しかし、IA-64の革新性は、コンパイラにスケジューリングを移したことと、VLIWの難点を克服する命令グルーピングを行なったことだけではない。MPUの複雑さを軽減した代わりに、さらに先進的なフィーチャをハードウェアに組み込んだ。このあたりは、次回に紹介したい。

□関連記事
【5月27日】IntelとHP、IA-64のアーキテクチャを公開
http://pc.watch.impress.co.jp/docs/article/990527/ia64.htm

バックナンバー

('99年5月26日)

[Reported by 後藤 弘茂]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当pc-watch-info@impress.co.jp