巨大化するソフトウェアと家内制手工業的研究の未来

わかっている人にはとっくにわかっていることだが、最近私が特に感じたことなので書く。昨今のソフトウェア、特にミドルウェアはあまりにも巨大化しすぎていて、大学の研究室で修士や博士の学生が独りでシコシコと家内制手工業的に研究するには手に負えなくなっている。
Java VMなどの仮想マシンJITコンパイラアプリケーションサーバ、データベースサーバなどの重要性は今後も増す一方だろうし、解消すべき性能的ボトルネックは数多い。しかしこういったミドルウェアは自分でゼロから書くのはおろか、既存のソフトをセットアップしてベンチマークを走らせられる環境を構築するだけで一苦労である。SPEC jAppServer などは動作環境を初心者が自分で構築してまともにデータが取れるようになるまで数ヵ月かかりそうだ。もちろん一台のマシンで単純な環境を作るだけならそれなりに簡単だろうが、研究的に面白い挙動を示すのはCPU4個以上、主メモリ数十ギガバイトといったウルトラリッチな環境である。とてもそこらの大学の研究室の手には負えない。

この状況は何かに似ていると思っていたが、ちょうどCPUアーキテクチャの研究が十年以上前にたどってきた道なのだ。かつては日本でもあちこちの研究室がCPUアーキテクチャの研究をしており(研究としてまともかどうかはともかく)、実際のプロセッサと基板を設計して実機の上でデータを取っていた(らしい)。今ではそこまで気合いの入った研究室など片手で数えられるくらいだろう。そうなった理由は色々あるだろうが、一因としてCPU設計の巨大化があげられる。IBM、DEC、IntelAMDなどの企業が力業でCPUアーキテクチャを超高速で進化させていった結果、研究的に面白味のあるアイデアを実機に実装しようにも、とてもそこらの研究室の手に負えるものでは無くなってしまった。例えば分岐予測の新しいアルゴリズムを考えついたとしても、それを一体どうやって実際に動くCPUに組み込んで実験するんだよ。そりゃインオーダー実行+ダイレクトマップキャッシュのヘボCPUくらいなら自分で作れるだろうが、そんなCPUでデータを取ったところで今の時代的に意味あるデータではない。結果、アカデミックな世界におけるCPUアーキテクチャの研究はほとんどがシミュレータを用いた研究になってしまった。これは日本だけでなく世界的に見てもそうだろう。

プロセッサの研究がたどったこの道を今、ミドルウェアの研究もまたたどっている。いや、たどっていると言うよりもとっくの昔に手に負えなくなっている。私は大学でJITコンパイラの研究をしていたが、対象ベンチマークは SPECjvm98 や Java Grande Forum Benchmark などの数値計算や小さめのアプリであった。大学で独りで研究するにはそれぐらいしか扱いようが無かったのだ。IBMの研究所に入って感じたことは、サーバサイドにはまだまだ研究として面白い世界が広がっているということだ。しかしそれは大学に居たのでは理屈ではわかっていても実感として理解できなかっただろう。博士を取った後も大学に残っていたとしたら、私はどういう研究を続けていただろうか。大学におけるシステムソフトウェアの研究に未来はあるのだろうか。せいぜい「Linuxカーネルをちょこっと改造してデータ取ってみました」系に矮小化して落ち着くのだろうか。環境を構築するのも面倒だから全部シミュレータを用いた研究になっていくのだろうか。

参照:Systems Software Research is Irrelevant