渕一博と仮想マシン

渕一博。というと「第五世代コンピュータ」を率いた人という印象しかなかったのだが、彼が若い頃(1969年)にACM SOSPで発表した論文「A Program Simulator By Partial Interpretation」を読んで驚いた。これはまさに仮想マシンである。これはもっと知られてよい業績なのではと本エントリを書くことにした。

当時は電気試験所(電総研を経て、今の産総研)でETSS (Experimental Time Sharing System)と呼ばれたタイムシェアリングシステムの研究開発を行っていた。プロジェクトチームの立ち上げは1966年10月で、1968年5月には運用が始まっていたという。当時は国産のTSSは存在せず、ETSSの完成の数ヶ月前に阪大のTSS*1が動いたという状況だった。アメリカでは1964年に始まったMulticsMACプロジェクトが佳境を迎えており、69年のSOSPでもMultics関連の発表がいくつもあったようだ。この年、ベル研はMulticsプロジェクトから撤退。UNIXはまだ産声を上げてない。

TSSのことを何も知らない渕らは、Multicsの開発部隊を招いて1週間講義を受けたそうだ。Saltzer教授も招聘したとか。それでもTSSの開発は困難が予想された。そこで、TSSをユーザレベルプログラムとして実行し、開発・デバッグを容易にすることを目的に、当論文で述べられているプログラムシミュレータが開発された。「部分解釈(Partial Interpretation)」は、特権命令のみをトラップして解釈し、その他の命令はCPUがそのまま実行することを意味する。つまり仮想マシンモニタだ。IBMもSystem/360上でバッチ用OSだけじゃなくて、TSSも動かすために仮想マシン技術の開発、商用化を行っていた時期だ*2。渕らもこれらの動向は知っていたのかもしれないけど、OS開発の道具として仮想マシン技術に目をつけたのはさすが。本論文は、仮想マシンの研究で有名なR. Goldberg教授の「Architecture of Virtual Machines」(1973)などからも引用されている。

余談になるが、ETSSは日立のHITAC 8400上に実装された。HITAC 8000シリーズは、RCA Spectra 70をベースとしたIBM互換機であり、国鉄の座席予約システムMARSなどに使われた。HITACで思い出したが、このころのTSSとして忘れてはいけないのはHITAC 5020/TSSだ。HITAC 5020は8000シリーズとは異なる国産アーキテクチャの計算機で、そのTSSはMulticsから強い影響を受けている。そしてなんと、2次元アドレス空間を採用したTSSとしては、Multicsよりも早い1968年3月末に稼働している。

渕一博―その人とコンピュータサイエンス

渕一博―その人とコンピュータサイエンス

*1:阪大MACと呼ばれ、NECのNEAC上に実装された。

*2:VM/370の原型となるCP-67が出たのが1967年?