ラジオ少年、マイコン少年の道を歩み、TK-80(日本で最初の本格的なマイコンキット)が世に出る前からマイコン用のチップセットを購入してマイコンを自作していました。自作と言っても、完成した基板を組み立てる現代のPC自作ではなく、チップの接続方法をすべて自分で決めて(回路を設計して)基板を自作していました。当時はまだ中学生でしたが、いつかは自分で最先端のマイクロプロセッサ自体を作ってみたいと思っていました。
マイコンの自作を通して、コンピュータに詳しくなってしまったため、自然とコンピュータハードウェアの研究開発を行う職業に就くことになりました。最初に勤めた研究所で共有メモリ型並列計算機の研究開発を行っていたので、私もそれに加わりました。その中でelastic barrier、snoopy spin-wait、ページ単位のsnoopプロトコル切替といったアイデアを思いつき、実装して世の中に出したいと強く思いました。しかし、CPUチップの設計や開発に誰でも関われるわけではなく、そんな簡単には自分のアイデアは実現できないことを思い知りました。
グラフィックスカードを高性能化するには並列計算機と同じ構造をカード上に実現する必要があるだろうという見通しから、産業界からの要望が強かった高性能グラフィックスカード作製プロジェクトをその会社で1991年に起こそうとしました。しかし、政治的能力の低さ、会社内の地位の低さといった要因でうまくは行かず、私のアイデアを高く買ってくれた先生の招聘で東大に移ることになりました。
東大に移ってからは、当時発売されたばかりのFPGAを使って学部生にオリジナルプロセッサを設計製作させる学生実験を始めました。プロセッサが学部学生でも簡単に作れる時代になったことは感慨がありましたが、FPGAのプロセッサでは動作周波数が遅く、キャッシュやTLBがほとんど実装できないので機能的に満足できませんでした。学生実験以外では、超並列計算機を研究開発するプロジェクトに深く関わりました。IBM時代から温めていたローカリティ(局所性)を活用しキャッシュ容量やレジスタ数が大きなRegister-Based Processorとローカリティをあまり活用できないためレジスタ数やキャッシュ容量が少なくメインメモリと物理的に近い位置に分散配置されるMemory-Based Processrの組み合わせで共有メモリ型超並列計算機を作製することを提案しました。ただし、この超並列計算機プロジェクトは多くの大学の研究室が連携して行う巨大プロジェクトであったため、政治的に思うようには進展しませんでした。また、オペレーティングシステムの部隊は私が提案したアーキテクチャは面白いと思ってくれたようでしたが、専用OSを開発しようとはまったくしませんでした。
アーキテクチャがいかに斬新で面白くても、ソフトウェアがなければ何も動きません。OSがないハードウェアなんか実用になりません。そこで、一念発起して自前のOSをゼロから作ることにしました。このときには、OSだけでどこまで高性能化できるのか見極めようとして、普通のワークステーションを複数台組み合わせたクラスタを並列計算機と看做して自分たちのOSの動作対象にしました。1994年の開発開始後すぐにクラスタ内でTCP/IPに代えて使用する高速通信プロトコルMemory-Based Communication Fasility(MBCF)を考案実装し、ワークステーションクラスタにおいて低レイテンシ高スループットの通信が普通の100Baseイーサネットで実現可能なことを実証しました。MBCFが概念的にも性能的にも非常に気に入ったため、MBCFをすべての通信同期の基礎として使った汎用OSを作製することにしました。これがスケーラブルオペレーティングシステム研究開発の始まりです。
MBCFは開発当初より仮想化が考慮されていたため、通信しながら動いているタスクを停止することなく別のノード(マシン)に移送してそのまま動かし続けるというマイグレーションが私のスケラーブルオペレーティングシステムでは可能になります。現在では、OSレベルでOSごとすべてのタスクを別のノードに移送するライブマイグレーションがOS仮想化によって実現されていますが、タスクレベルのマイグレーションは私のOS以外では実装されていません。このタスクマイグレーション機能のおかげで、私の作ったOSはかなり注目を浴びました。しかし、私としてはタスクマイグレーションを可能にするMBCF自体に注目してもらいたいと思って歯がゆく思っていました。
ワークステーションクラスタ用のOSを開発していましたが、PC用のCPUの性能向上が目覚しく、ワークステーションを対象としたのでは普及や実用化がおぼつかなくなりました。また、完全にオリジナルなOSでシステムコール等もオリジナルAPIでしたので、従来のワークステーションやPC用のアプリケーションがまったくそのままでは動きません。少人数の開発部隊でアプリケーションまで作るのは不可能ですから、C言語ライブラリレベルで他のOSとの互換性を取ることにしました。こうして、互換性を取りPCクラスタ用に開発されたのがSSS-PCオペレーティングシステムです。2005年ではFreeBSD上のアプリケーションが安定して動くようになりました。
OS開発だけでも超多忙だったのですが、2001年に大学発ベンチャーブームのおかげで、プロセッサ開発する大きな資金を当てる幸運がめぐって来ました。LSI開発で脚光を浴びていたベンチャー企業と組んだのが幸いして、「高性能組込マイクロプロセッサ」の開発提案は審査に通り、助成金を獲得しました。スクラッチから汎用クラスタOSを開発するということと、スクラッチから最先端プロセッサを含むシステムLSIを開発するという行為をたった4~5人程度で行うことになりました。しかも、プロセッサ開発の補助金は額が大きかったため、プロジェクト管理のオーバヘッドも非常に大きく、この当時の記憶はほとんどありません。しかし、2006年には子供のころからの夢が叶い高性能組込マイクロプロセッサを含むシステムLSIは完成しました。
システムLSIの方は低コストで量産する方法がないため、実用化は暗礁に乗り上げてしまいましたが、スケーラブルオペレーティングシステムの方はマイグレーション機能に注目して大口のスポンサーとなってくれる会社が現れて、大学等発ベンチャーで起業した株式会社情報科学研究所の下で研究開発が続行されました。組込OSとしてのリアルタイムスケジューリング機能やマルチコア?SMP対応といった拡張がなされました。リーマンショック後は大きな開発資金出してくれるところが無くなったために、松本が情報科学研究所の役員として個人的に開発とメンテナンスを続けて、最新のPCを使ったクラスタで動作する状態に保たれています。
プロセッサやOSに関するアイデアを出す能力もこれらを実装する能力に関しても誰にも負けるつもりはありませんので、これらの能力や資産(OSのソースコード+書いた本人のノウハウ、CPUのソースコード+書いた本人のノウハウ)を今後の研究開発に活かして行きたいと思っています。日本は、本当に国産のOSもCPUもいらないのでしょうか?そんな国が将来の情報産業を担っていけるのでしょうか?
計算機はどんどん進化して、低消費電力にも関わらず高性能になっています。現在の計算機システムの内部構造は非常に複雑で、ほとんどの人はブラックボックスもしくは魔法の箱ぐらいの感覚で、使っているのだと思います。しかし、内部の一つ一つの仕組みはそれほど複雑ではなく、誰でも十分に理解可能なものです。最新のプロセッサや計算機を設計する機会がそんなに多くの人にあるとは思いませんが、物事の本質や仕組みを整理して理解するトレーニングとして、計算機が動く仕組みを明確に理解していただけると幸いです。
インターネットの意味の広域ネットワークはもちろん、並列計算機にも内部的にネットワーク(相互結合網)が不可欠です。インターネットと相互結合網が何が共通で何が違うのか?ネットワークの技術的な本質を明らかにしたいと思います。今やニュースでも平然と取り上げられるTCP/IP等のプロトコルについても、動作の仕組みについて理解してもらいたいと思っています。
Windowsの登場以来、ウィンドウシステムや画面表示の方式がオペレーティングシステム(OS)の特徴だと誤解されている人が多くいますが、OSの本質は第一義的には資源の仮想化です。二義的には、ユーザに使いやすい環境を提供するという役割もあるとは思いますが、使いやすい環境の方は各アプリケーションが提供しても構わないはずです。一つしかないプロセッサがあたかも複数存在するかのように仮想化する。メモリが搭載量よりも多く存在するように見せかける(仮想化する)。アプリケーションが異なるとまったく別のメモリを使っているかのように保護をかける(仮想化する)ことができる。複数のアプリケーションに対して周辺装置がそれぞれ専用の装置があるかのように仮想化する。仮想化をキーワードにOSの本質について理解してもらいたいと思っています。
成果活用兼業による大学等発ベンチャー会社、前職の民間のソフトウェア開発会社において会社の経営にたずさわって来ました。ソフトウェア開発にも工場のように作られるソフトウェアと一流のハッカーによって芸術作品のように作られるものがあることをその中で痛感しました。どちらのソフトウェアも世の中にとって不可欠なものです。芸術作品の方は工学的にコントロールするのは難しいのですが、ソフトウェア工場的に作られるものの方はある程度はコントロールできます。ソフトウェア開発業を仮定して、経営工学的手法の紹介とその限界を述べます。また、経済やお金の仕組みについても世の中に出て酷い目に会わない程度の知識は身につけてもらいたいと考えています。
溢れかえる情報の海から、有益かつ正しい情報を選別吟味して、さらに自分の頭をフル回転させて、ものごとの本質を理解する力を大学で身に付けて下さい。マネーゲームによる金儲けが横行するようになってから、世の中では詐欺まがいの商売や投資が大流行です。本質を理解する力があればこんなものにはひっかかることはなくなります。本質を理解する力があれば、業務の合理化やコンピュータシステムの導入も表面上の困難に惑わされずにスムーズに行うことができます。本質を理解せずに外面だけを模倣して作ったシステムは往々にしてまともに機能しません。本質を理解する能力を身に付けたら、その力を自分を含む他の多くの人々のためになる仕事や活動に大いに活用して下さい。