2015年4月27日月曜日

独力で仮想化システムを作った学生

ちょっと前に書いたブログに若干の加筆と修正をしたものです。登場する人の現在の所属などは確認していないのでご注意ください。


2010年10月、情報処理学会のセミナーに参加してきました。

そこで、司会をしていた近山隆先生にご挨拶。

セミナーでは4つセッションがあったのですが、中でもLily VMという、筑波大の学生が作ったシステムが素晴らしい。あまり知られていないのが残念ですが、海外のカンファレンス(確かBSD関係の何か)で発表し、Best Student Awardをもらったそうなので、世界の記録には残ったそうです。

近山先生のこと

近山先生といっても分からない人が多いと思いますが、当時世界最高速のLisp処理系UTI Lispの作者です。UTI LispはUniversity of Tokyo Interactive Lispの略だったと思います。

UTI Lispは、近山先生の博士論文で、高度な最適化で有名です。もちろん完全アセンブリ言語(日立/富士通Mシリーズ用)。

当時、修士課程の学生だった私は、学内で独自に実装された貧弱なLisp 1.5レベルの処理系に嫌気が差していました。ガベージコレクタが実装されていなかったので、正確にはLisp 1.5以下です。

学会誌を見るとUTI Lispというのがあるらしい。しかも、その上では、尊敬する中島秀之先生の自信作Prolog/KRが動作するというのです。

幸い、学校のコンピュータは東大と同じ日立Mシリーズ、早速電話して(当時、インターネットはないも同然です)、オープンリールテープを送ってもらい、処理系をビルドしました。

修士論文が書けたのも、近山・中島、両先生のおかけです。

ちなみに、研究室の電話は市外ダイヤル直通通話が禁止されており、100番通話(オペレーター通話)を使いました。オペレーター通話は以下のように使います。

  1. 100番に電話
  2. オペレータに対して、通話したい電話番号を伝える
  3. オペレーターが電話してくれる
  4. 本来の目的である通話
  5. 電話を切る
  6. オペレーターから電話がかかってきて、料金が通知される
  7. その料金を経理に申告する

中島先生は修士2年生のときだったと思います、広島の学会で見つけて著書にサインをもらいました。

近山先生は、会う機会がなかったのですが、約30年ぶりに念願が叶い、大変嬉しく思っています。

Lily VMのこと

インテル/AMDのCPUアーキテクチャx86には仮想環境で使えない非特権命令が17あります。VMWareは、これらの命令を実行時に動的に変換します。動的変換はVMWareの重要な特許です。

一方、Amazon Web ServicesのEC2やSoftLayerなどのクラウドサービスで使われているXen(のPara Virtualization Mode)は仮想OSのソースコードを手作業で修正し仮想化します。手作業なので出来上がった仮想OSはI/Oも含めて実マシンとほぼ同じ速度で動作しますが、何しろ手作業なので時間がかかる。ちなみに、VMWareはI/O性能で実マシンに劣ります。

Lily VMは、コンパイラに手を入れて、コンパイル時に静的な命令変換を行います。詳しく聞けなかったのですが、おそらくコンパイラが参照する命令セットテーブルに手を入れるのでしょう。

これはなかなか素晴らしいアイデアだと思います。しかも作成したのが、筑波大学の3年生(当時)。日本にも、こういう素晴らしい学生がいるのですよ。

その後、SoftEtherの登大遊さんたちと一緒に研究と事業をしているそうです。