- 松本 尚
- まつもと たかし
- 教授 博士(理学)
- 【専門分野】計算機アーキテクチャ、オペレーティングシステム、並列分散処理
- 【連絡先】e-mail:tm[@]ics.nara-wu.ac.jp 居室:G411
研究内容
ラジオ少年、マイコン少年の道を歩み、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もいらないのでしょうか?そんな国が将来の情報産業を担っていけるのでしょうか?
職歴
- 1987年4月〜1991年10月
- 日本アイ・ビー・エム株式会社東京基礎研究所 研究員
並列計算機(共有メモリ型並列計算機)の研究開発および超高性能グラフィックスカードの研究開発に従事 - 1991年11月〜2002年3月
- 東京大学理学部情報科学科 助手
超並列計算機(共有メモリ型超並列計算機)の研究開発、スケーラブルオペレーティングシステムの研究開発、およびプロセッサ作製学生実験の立ち上げと運営に従事 - 1998年10月〜2001年9月
- 科学技術振興事業団さきがけ研究21研究員(兼任)
スケーラブルオペレーティングシステムに使用する自由市場原理に基づくスケジューリング方式の研究開発に従事 - 2000年10月〜2001年2月
- 情報処理振興事業協会未踏ソフトウェア創造プロジェクト開発者(兼任)
安価なPCを複数組み合わせて耐故障性を保障するネットワークRAIDファイルシステム(NRFS)の基本部分を研究開発 - 2001年7月〜2002年2月
- 情報処理振興事業協会未踏ソフトウェア創造プロジェクト開発者(兼任)
安価なPCを複数組み合わせて耐故障性を保障するネットワークRAIDファイルシステム(NRFS)をLinuxに実装して公開 - 2001年10月〜2004年9月
- 科学技術振興事業団平成13年度新規事業志向型研究開発成果展開事業「高性能組込マイクロプロセッサ」チームリーダー(兼任)
内蔵キャッシュと外部メモリの内容を陽に同期可能な命令を搭載し、コストがかかり速度低下を引き起こすスヌープキャッシュの搭載を不要にする高性能組込マイクロプロセッサの研究開発を行った。この成果を利用して、プロセッサだけではなく通信回路、暗号化回路、暗号復号回路、ATAインタフェース、メモリインタフェース等をワンチップに統合したSystem on a Chip(SoC)をスクラッチから設計した。2006年には、この設計に基づき0.26μmスタンダードセルテクノロジープロセスでSoCを実装し200MHzで完動させた。 - 2002年4月〜2011年5月
- 国立情報学研究所情報基盤研究系計算機アーキテクチャ部門 助教授
高性能組込マイクロプロセッサの研究開発ならびにスケーラブルオペレーティングシステム:SSS-PCの研究開発に従事 - 2002年7月
- 大学等発ベンチャー企業 株式会社情報科学研究所 設立
- 2002年12月〜
- 成果活用兼業により株式会社情報科学研究所代表取締役副社長就任
株式会社情報科学研究所はスケーラブルオペレーティングシステム:SSS-PCの実用化を担う企業として開発助成金提供元の実用化重視の強い意向の下で設立された。開発助成金の支給期限が切れた後も、OS販売やスポンサー企業等の支援により、SSS-PCの機能拡張および実用化を進めている - 2004年10月
- 大学等発ベンチャー企業 株式会社エス・オー・シー 設立
株式会社エス・オー・シーは高性能組込マイクロプロセッサの研究開発成果の実用化を担うために大学発ベンチャー企業量産政策に沿って設立させられたが、チップを低コストで製造する目処が立たないため、休眠状態にある - 2011年6月〜2013年6月
- キヤノンイメージングシステムズ株式会社 主席研究員
組込仮想化およびStream Processingの研究開発、エンジニアに対する計算機アーキテクチャ教育に従事 - 2013年7月〜
- 奈良女子大学研究院 教授
並列計算機アーキテクチャおよびスケーラブルオペレーティングシステムの研究開発、学部生と院生の計算機科学教育に従事する予定
担当講義について一言
計算機アーキテクチャ論計算機はどんどん進化して、低消費電力にも関わらず高性能になっています。現在の計算機システムの内部構造は非常に複雑で、ほとんどの人はブラックボックスもしくは魔法の箱ぐらいの感覚で、使っているのだと思います。しかし、内部の一つ一つの仕組みはそれほど複雑ではなく、誰でも十分に理解可能なものです。最新のプロセッサや計算機を設計する機会がそんなに多くの人にあるとは思いませんが、物事の本質や仕組みを整理して理解するトレーニングとして、計算機が動く仕組みを明確に理解していただけると幸いです。
計算機ネットワークインターネットの意味の広域ネットワークはもちろん、並列計算機にも内部的にネットワーク(相互結合網)が不可欠です。インターネットと相互結合網が何が共通で何が違うのか?ネットワークの技術的な本質を明らかにしたいと思います。今やニュースでも平然と取り上げられるTCP/IP等のプロトコルについても、動作の仕組みについて理解してもらいたいと思っています。
オペレーティングシステム論Windowsの登場以来、ウィンドウシステムや画面表示の方式がオペレーティングシステム(OS)の特徴だと誤解されている人が多くいますが、OSの本質は第一義的には資源の仮想化です。二義的には、ユーザに使いやすい環境を提供するという役割もあるとは思いますが、使いやすい環境の方は各アプリケーションが提供しても構わないはずです。一つしかないプロセッサがあたかも複数存在するかのように仮想化する。メモリが搭載量よりも多く存在するように見せかける(仮想化する)。アプリケーションが異なるとまったく別のメモリを使っているかのように保護をかける(仮想化する)ことができる。複数のアプリケーションに対して周辺装置がそれぞれ専用の装置があるかのように仮想化する。仮想化をキーワードにOSの本質について理解してもらいたいと思っています。
経営工学成果活用兼業による大学等発ベンチャー会社、前職の民間のソフトウェア開発会社において会社の経営にたずさわって来ました。ソフトウェア開発にも工場のように作られるソフトウェアと一流のハッカーによって芸術作品のように作られるものがあることをその中で痛感しました。どちらのソフトウェアも世の中にとって不可欠なものです。芸術作品の方は工学的にコントロールするのは難しいのですが、ソフトウェア工場的に作られるものの方はある程度はコントロールできます。ソフトウェア開発業を仮定して、経営工学的手法の紹介とその限界を述べます。また、経済やお金の仕組みについても世の中に出て酷い目に会わない程度の知識は身につけてもらいたいと考えています。
受験生へのコメント
溢れかえる情報の海から、有益かつ正しい情報を選別吟味して、さらに自分の頭をフル回転させて、ものごとの本質を理解する力を大学で身に付けて下さい。マネーゲームによる金儲けが横行するようになってから、世の中では詐欺まがいの商売や投資が大流行です。本質を理解する力があればこんなものにはひっかかることはなくなります。本質を理解する力があれば、業務の合理化やコンピュータシステムの導入も表面上の困難に惑わされずにスムーズに行うことができます。本質を理解せずに外面だけを模倣して作ったシステムは往々にしてまともに機能しません。本質を理解する能力を身に付けたら、その力を自分を含む他の多くの人々のためになる仕事や活動に大いに活用して下さい。