筆者は今年で30歳。合体・変形するロボットの特撮やアニメ番組を見て育った世代だ。もっとも,ただ嬉々として見ていたわけではない。「合体すると強くなる」---。そう単純に受け取れれば良かったのだが,合体する手間暇があまりにも多すぎるのが気になって仕方がなかったクチである。

 何しろ合体までのプロセスが隙だらけだ。パワーが欲しいなら最初から合体していれば良いし,そもそも巨大ロボットを作った方が頑丈そうだ。巨大ロボットが目的に応じて変形する方が理に適っている? 車や飛行機が二足歩行ロボットになるんだから,合体や変形に伴って操作系も変わるはず。これは慣熟に時間がかかりそうだ。といった具合に,「複数のロボットが合体して強くなる」というコンセプトに共感は覚えるものの一体どういう形態が最強なんだろうと悩んだものだ。

 そんなことを思い起こしたのは,日経バイト2005年11月号の特集「仮想化の正体」の執筆中のことである。(1)コンピュータを合体させて仮想的な巨大コンピュータを作る。(2)しかも操作系,つまりプログラミングの作法は従来と同じ,という形態が最強のように思えたのだが,話はそう単純ではなかった。詳細は本誌に譲るとして,コンピュータの“合体”の落としどころを考えてみたい。

 その特集では,コンピュータの仮想化技術の今と今後の展望を追った。結果的に中心になったのは,1台のコンピュータの中に複数の仮想マシンを生成して利用する方法。米VMware社の「VMware」や米Microsoft社の「Virtual PC」,最近では米Xen Source社の「Xen」といった仮想マシン・ソフトでおなじみの形態だ。メインフレームの時代からコンピュータに携わる方であればそう新しくも感じないのだろうが,標準化の進んだPCベースのコンピュータの世界ではホットな話題だ。

 しかしその逆は難しい。複数のコンピュータを“合体”させて巨大な仮想コンピュータとする手法は,現時点では使える技術になっていない。架空の合体ロボットのメカニズムを実際にプラモデルなどの模型に落とし込むのが難しいのと同じく,コンピュータを仮想コンピュータとしてまとめ上げるまでにさまざまな壁が存在する。

“操縦法”が変わらない「仮想SMP」

 「1台のコンピュータで複数の仮想マシンを動かせるのだから,複数の仮想マシンを合わせれば巨大な仮想コンピュータになるはず」。そう考えるエンドユーザーは少なからずいるようで,仮想化ソリューションを扱う複数のメーカーやベンダーがそうした問い合わせを受けていた。ここで言う仮想コンピュータは,大規模クラスタやグリッド・コンピューティングではない。1CPU搭載機を8台束ねると8CPU搭載機になる,といった「仮想SMP(Symmetric MultiProcessor)」機のことだ。

 大規模クラスタやグリッド・コンピューティングといった手法は,アプリケーションやミドルウェアの連携によるのが普通である。この形態では当然,従来のSMP機を対象とするマルチスレッド・アプリケーションを実行しても,複数マシンで分散処理されるわけではない。アプリケーションやミドルウェアの仕様に従って,分散処理をプログラミングする必要がある。仮想化というよりは抽象化という言葉がしっくりくるアプローチだ。

 今まで通りの使い方がそのまま生かせる合体コンピュータが欲しい。そんなニーズを満たそうとして出てきたのが,現在の仮想SMPというアイデア。SMP機を想定したマルチスレッド・プログラムを改変することなく分散処理できる。例えば米Virtual Iron Software社は,最大16CPUの仮想SMP構成が可能な仮想マシン・ソフト「Virtual Iron VFe」を2005年内に出荷する。東京大学米澤研究室も,1CPU搭載機を8台組み合わせた8CPUのシステムを仮想SMPとして稼働させることに成功した(関連情報)。

 とはいえ複数マシンを組み合わせた仮想SMPは,実マシン間を結ぶネットワークの通信コストによるオーバーヘッドが泣き所となる。SMPは文字通り,すべてのCPUで物理メモリーを共有する構成をとる。メモリー内容に変更があった場合には,全CPUのキャッシュを同期させる必要がある。

 同じ筐体にCPUが密結合した実マシンのSMPでさえ,CPU間のキャッシュ同期がボトルネックとなり,4CPU程度でCPU数に応じた性能向上が難しくなる。このため4CPUを超えるSMP機は,4CPUごとにモジュール化して,そのモジュールを高速なバスで通信させるのが一般的だ。遅延(レイテンシ)が少ないMyrinetやInfiniBandといった高速ネットワークを使わなければ,通信コストによって仮想SMPのメリットが帳消しになってしまう。

ブレード間接続の組み替えで“変形”

 合体を前提にした大規模クラスタやグリッド・コンピューティングではプログラミングの作法を変えなくてはならず,今まで通りの使い方が可能な仮想SMPは通信コストが高くつく。現時点では,仮想SMPほどの柔軟性はないものの,薄型のコンピュータをラックに集積したブレード・サーバーをハードウェアの工夫で電気的に結合・分離する手法が現実的,というのが結論のようだ。

 実用化の例としては,日立製作所のブレード・サーバー「BladeSymphony」がある。2CPUを搭載するブレードを組み合わせて,最大8CPUのSMP機として利用できる。CPUのホットプラグに対応したOS(なおWindowsとLinuxは現在開発中)であれば,起動中の構成変更も可能だ。ブレード間を高速な内部バスで結ぶことで,ボトルネックを抑えている。コンピュータ同士が物理的に密集したブレード・サーバーならではの“変形”だ。

 合理的解釈がある程度可能なあるロボットアニメの世界では,分離・合体機能を持つロボットはあくまでも試作機だったりする。複数のパーツを整備・運用するのが大変というのがその理由だ。この点,ハードウェアではなくソフトウェアで機能が決まるコンピュータの方が運用は楽である。もちろん,コンピュータを入れ替えたりソフトウェアをインストールしたりと,実際には人があくせくと手をかけてやらなくては合体コンピュータは維持できない。そこで各メーカーが仮想化の次のステップとして自律制御の実用化に取り組んでいる。

 なるほど合い言葉やボタン一つの操作で合体するロボットというのは,技術的には正しい。しかしその先は特撮やアニメになぞらえるのは無理がある。何しろそれら物語の多くは,パイロットの精神力によって勝てそうもない敵に勝ってしまうのだから。

(高橋 秀和=日経バイト)