前回までのベンチマーク・レースの記事でも述べたように,ようやくItaniumファミリは本領を発揮してきたようだ。プロセサ単体の性能では既にRISCプロセサを凌駕(りょうが)しているし,ベンチマークによるシステム性能でもほぼ同格になりつつある。OSやDBMSなどのシステム・ソフトウエア群がItaniumファミリ向けにチューニングされていくことで,今後,現実世界のシステム性能も向上していくだろう。

 Itaniumファミリは他のRISCプロセサやIA-32とどこが違うのか? Itaniumファミリはなぜ速いのか? 今後も速度上の優位性を維持できるのか? なぜ,米IntelはIA-32との互換性を犠牲にしてまで新しいアーキテクチャを採用したのか? なぜ,米Hewlett-Packard(HP)は優秀なRISCアーキテクチャであるPA-RISCを捨ててまで,Intel社と共同開発の道を選んだのか? これからのマイクロプロセサ・アーキテクチャはどのように進んでいくのか?――これからの数回にわたり,これらの問いにできるだけ分かりやすく答えていくことにしよう。いわば,マイクロプロセサ・アーキテクチャの超入門コースである。

 ハードウエア・アーキテクチャ専門の方にはちょっと物足りないかもしれないが,非専門家の人へのアーキテクチャの分かりやすい説明の仕方という観点から読んでいただければと思う。

 なお,ここ数回では「アーキテクチャ」という用語を原則的に命令セット・レベルでのプロセサの仕様という意味で使っていく(アーキテクチャとは元来このような意味だったのだが)。今はやりのエンタープライズ・アーキテクチャとは意味が違うので念のため。

◆プロセサを高速化するための基本的考え方

 ごくごく簡単に言えばプロセサの性能は次の式で表される。

(1命令の機能)×(1クロックあたりの実行命令数)×(クロック周波数)

 プロセサの性能を車での荷物の運搬量に例えるならば,1命令の機能は1台あたりの運搬量,クロックあたりの実行命令数は車の台数,クロック周波数は車の速度と言えるだろう。

 ここで,重要なのはこの3要素は互いに関係しているので,どれか1つだけを独立して向上させるのは難しいということである。1つの命令で行える機能を高度化すれば(例えば,高級言語を直接ハードウエアで実行できるようにすれば),プロセサの性能は上がりそうなものであるが,命令を高度化するとクロック周波数の向上が難しくなり,プロセサ全体としての性能は上がらないことが多い。要は,車1台の運搬量をあまりに大きくし過ぎると,スピードが上がらず全体の輸送効率が低下してしまうということである。肝心なのはバランスだ。

◆エレガントでも低性能ではしょうがない

 1980年代においては,VLSIベースのマイクロプロセサの性能向上において,まだこのあたりの設計の最適なバランスは試行錯誤の段階であり,いくつかの失敗があった。

Intel社iAPX432:
 順風満帆にみえるIntel社の歴史の中でも,その大失敗ゆえにその歴史からほぼ抹消されているマイクロプロセサがある。それが,iAPX432である。iAPX432は1975年ころから開発が始まった32ビット・プロセサであり,Intel社はこのチップを,過去とのバイナリ互換性を打ち切り,OSの機能の一部やオブジェクト指向実行環境をハードウエアでサポートするという野心的な目標の下に開発してきた。

 アーキテクチャ的には極めて注目を浴びていたが,1981年にようやく出荷開始されたチップの性能はなんとも悲惨なものであった。32ビット・プロセサにもかかわらず8ビット・プロセサ級の性能だったのである。結局,iAPX432は組み込み市場で限定的に使用されただけで忘れさられてしまう(まったくの余談であるが,たまにオークション・サイトのeBayにiAPX432のチップがレア物として出品されるらしい)。

 Intel社は企業存続の危機を迎えたわけであるが,プランBとして開発してきた8086/80286などのチップ(アーキテクチャ的にはとてもエレガントとは言えない)を市場に投入することで,ビジネス的には何とか持ちこたえたのである。命令セット・アーキテクチャを高機能かつエレガントにすれば性能は上がるわけではないという事実を多大な犠牲の下に実証したのがiAPX432だったわけである。

TRONチップ:
 TRONとはBTRON,ITRON,CTRONなどの多くのプロジェクトの総称なわけだが,TRONチップとは1990年ころに開発されていた32ビットの独自マイクロプロセサのことを指す(製品名で言えばG/Micro100などになる)。TRONチップも,豊富なアドレッシング・モードをサポートし,一見エレガントなアーキテクチャなのだが,性能がかなり出しにくかったようで,アプリケーション・ソフトウエアの不足とも相まって市場で成功することはなかった。

 TRONは米国の外圧により普及できなかったというのが定説になっている。また,TRONプロジェクトの中でもITRONのようにある程度普及したものもある。しかし,TRONチップに関して言えば,外圧があろうとなかろうと市場で普及することはなかっただろう。既存のプロセサとの互換性を欠くだけでなく,その後のコンパイラやVLSIテクノロジの進化との乖(かい)離が著しかったからである(例えば,オブジェクト・コードのサイズ縮小が設計目標の1つになっていたようだが,その後のPCのメモリー容量の拡大のペースを考えれば,あまり重要な項目とは言えなかっただろう)。

 上記以外にも,高級言語を直接ハードウエアで実行するタイプのアーキテクチャが過去にいくつも提案されてきたが,少なくともビジネス・コンピューティングの世界で普及したものはない。理由は明らかである。このような特殊なチップを使うよりも,汎用のマイクロプロセサと優秀なコンパイラを使用した方が,はるかに安価で高速なソリューションが得られるからである。

◆命令の複雑性の議論は重要ではない

 上記のような話は,CISC(Complex Instruction Set Computer)対RISC(Reduced Instruction Set Computer),つまり,「複雑な命令セットのアーキテクチャ」対「縮小命令セットのアーキテクチャ」として議論されることが多い。しかし,命令が複雑=遅い,命令が単純=速いという単純な話ではない。Itaniumも命令セットは極めて複雑であり,とても“Reduced”と呼べるものではないからだ。

 Itaniumファミリ,そして,その他の現在成功しているアーキテクチャのポイントは,コンパイラ・テクノロジとVLSIテクノロジの進化をうまく活用できた点にある。次回は,これらの点をもう少し詳しく(かつ難しくならないように)見ていくことにしよう。