計算機アーキテクチャ

      1980年代は計算機アーキテクチャの時代であった。それはICOT (新世代コ ンピュータ技術開発機構)が非ノイマン型計算機の新しいアイディアによって 並列推論マシンを作ろうという10年間の巨大プロジェクトを行っていた事が ,  世界中に影響を与えた事が大きな理由であろう。私はその時代に計算機の世界 に入ったが、私が入社した会社の研究所は、当時マサチューセッツ工科大、東 大、日本電信電話(株)、電子技術総合研究所と並んで、データフローマシン研 究のトップ水準を誇っていたので、入社当時は「計算機アーキテクチャをやら せてくれ!」とわめいたものである。数学科出身の友人と二人で上司を新宿ネ オン街に連れ出し、五次会まで酒に付き合わせて頼み込んだが、結局「君達数 学出身者はソフトウエアをやる方がいいのだよ」と言う上司を口説き落せず、 オペレーティング・システムの研究グループに配属されることとなった。それ でもあきらめ切れずに、しばらくは論理回路と計算機アーキテクチャの本を買 い込んで、夜な夜や読み耽っていたものである。

      計算機アーキテキチャの研究を行うには、結局計算機ハードウエアの豊富な知 識と経験が必要になるから、この上司の判断は正しい。しかし、計算機アーキ テクチャというのは、ソフトウエアよりも数理科学的なものである。ノイマン 型計算機の基本アイディアは、結局数学基礎論にまで手を出していた天才数学 者フォン・ノイマンが考えたものだし、新しい非ノイマン型計算機の開発は, 「計算とは如何なるメカニズムによって行えるか?」という計算理論 の問題から出発する。実際当時盛んに研究されていたリダクション・マシンというも のも、とどのつまりは計算理論でいうところのラムダ計算やコンビネータ・ロジッ クにおける中心概念である「リダクション」という式変形を、計算機ハードウ エアで実現しようというアイディアにほかならない。最近話題になっている 「量子コンピュータ」というのも、量子計算理論という新しい計算理論がもと になって研究されているのである。また、ノイマン型計算機自身の研究でも、 機械語の基本命令をどう設計すれば良いかという、命令セット計算機アーキテ クチャの研究が重要だが、基本命令をうまく設計すれば、あらゆる計算が基本 命令の組合せだけで行えるというのは、まさに計算理論の中の帰納的関数論の 考え方そのものである。実際に性能の良い計算機アーキテクチャを開発すると なると、回路技術をはじめとしたハードウエアの実装技術、はてまた代表的な アプリケーションでどのようなパターンの計算を多く使うか、といった統計的 調査などなど、工学的センスと腕力が必須である。しかし、基本思想の部分 はまさに数理科学そのものと言えるわけだ。

     しかしながら、1990年代に入る頃には、計算機アーキテクチャの時代は完 全に終ってしまった。フォン・ノイマンはやはり偉かった。誰もノイマン型を 超える非ノイマン型計算機アーキテクチャの決定版を発見できなかかったよう である。その理由の一つとして、非ノイマン型アーキテクチャとして提案され たものは、いずれもハードウエア量が膨大になり、その部分のオーバヘッドが 大きくなるため、理論的には高速計算が可能であっても実際には思うような性 能が出ない事が明らかになったからだとされている。ハードウエア量が少なく て済むノイマン型計算機の改良も進み、巨大な非ノイマン型計算機よりもパソ コンのチップの方がはるかに性能が良くなった事も決定的であった。非ノイマ ン型計算機アーキテクチャのアイディアは、むしろハードウエアよりもソフト ウエアで実現した方が性能が良くなる場合がある事もあって、当時の計算機アー キテクチャの研究者達の多くは、ソフトウエアの方に流れたようである。

      それにしても計算機アーキテクチャ屋は偉いと思う。ソフトウエア屋が計算機 アーキテクチャ屋のようなハードウエア専門家に転向するのは、ほとんど不可 能である。しかし、計算機アーキテクチャ屋はソフトウエア屋に転向して立派 にやっていけるのである。これは数学から計算機ソフトウエアに転向するのは 簡単だが、計算機ソフトウエア屋が数学者になるのはほとんど不可能である事 に似ている。計算機アーキテクチャが基本思想の部分で数理科学的である事か ら考えると、このアナロジーは単に表面的な類似以上のものがあるのではない かという気もする。

     私が尊敬していた、ハードウエア出身の研究所所長が、かつてこのような事を 言っていた。ハードウエアの世界では回路図とかタイミング・チャートとかブ ロック図といった、一種の形式言語を使って設計をやっている。だからこそ、 現物の回路や基盤をいちいちひっくり返さなくても設計の変更や検証ができる し、設計担当者と実装担当者とのコミュニケーションも容易の行えるし、 仕事の引き継ぎでも図面を渡せば終りである。その形式言語は厳密に ハードウエアを記述することができるから、それを計算機で処理できるように すれば、ハードウエア設計を計算機を使って行うこともできる。 ソフトウエアの世界でも、それに相当する形式言語があって然るべきではない か、と。これはまさにソフトウエア工学でいうところの、形式的仕様記述言語 にほかならない。

      無論、ソフトウエアはハードウエアに比べてはるかに複雑な 現象が起こるから、回路図やブロック図のような調子には行かず、形式的仕様 記述言語の良いものを作るのはとても難しい。だけど、ソフトウエア屋という のは、概して形式言語が嫌いである。回路図やブロック図なんていちいち書く のはメンドクサイ、俺はいきなりハンダ小手を握ってプリント基盤に向かうの だ式の考え方が主流である。また、回路図やブロック図などは、専門家 向けに作られた形式言語であるが、何故かソフトウエアの形式的仕様記述言語 は「素人でもわかるものでなければならない。専門家でないと使えないものでは全く意味がない」とされる。 技術にはそれなりの発展段階というものがある。いきなり素人でも使える物を作れ、さもなければ そんなものは研究してもしょうがない、というのはわけのわからない考え方である。 これらのことをもって、ソフトウエア屋はハードウエ ア屋よりも意識もレベルも低いのだと断ずべきかどうかは知らないが、形式的仕様記述言語 の研究がなかなか進歩しない一つの原因になっていると思う。