クロスプラットホームの仮想化
QuickTransitでクロスプラットホーム仮想化
現在、Intel、SPARC、POWER、MIPSなど、さまざまなアーキテクチャのCPUが存在し、それぞれのCPUの上で多種多様なOSが動いている。こうしたCPUなどのハードウエアやOSのアーキテクチャの技術革新は速く、ハードウエアもOSも5年~10年程度で陳腐化してしまう。
しかし、日々の業務は10年以上変わらないことも多く、ハードウエアやOSが陳腐化してもシステム自体は十分通用する場合が多い。ここで問題となるのが、OSやハードウエアがサポート終了になったために、アプリケーションが使えなくなるという点だ。
ユーザーとしては業務で必要なアプリケーションが使いたいだけなのだが、その下層にあるOSやハードウエアに足を引っ張られ、アプリケーションも事実上、「サポート対象外」となってしまう。このような問題を解決する方法として考えだされたのが、「クロスプラットホーム仮想化」であり、それを実現しているのが、「QuickTransit」である。
QuickTransitとは
QuickTransitは、米Transitive社によって開発・販売されている製品で、根幹となる技術は英マンチェスター大学で開発されたものだ。ちなみに現在も開発拠点は英マンチェスターにあり、開発メンバーにはマンチェスター大学の情報系学部の卒業生が多く占めている。
このTransitive社だが、初耳の方も多いだろう。その主な理由としてはTransitive社がOEMとして製品を出荷しているためだ。IntelベースのMac OS X上で、PowerPCベースのアプリケーションが動作できることをご存じの方も多いだろう。これは「Rosetta」というテクノロジーなのだが、この「Rosetta」もQuickTransitのOEM製品である。
そのほかにも、IntelベースのLinuxアプリケーションをIBMのPower5や、Power6プロセッサベースのシステムで動作させる「PowerVM」もQuickTransitのOEMである。OEMの製品が多い中、パッケージとしてリリースされた製品が以下の3つだ。
・QuickTransit for Solaris/SPARC to Solaris/x86-64
・QuickTransit for Solaris/SPARC to Linux/x86-64
・QuickTransit for Solaris/SPARC-to-Linux/Itanium
どの製品も、Solaris/SPARCプラットホームのアプリケーションをターゲットとしており、そのアプリケーションをSolaris/x86-64、Linux/x86-64、Linux/Itaniumのプラットホーム上で動作させるための製品である。
QuickTransitが異なるアーキテクチャのバイナリを動かす流れは、非常にシンプルだ。図1にこの処理の流れをまとめているが、大まかな流れは以下のようになる。
1.異なるアーキテクチャのバイナリが実行され、 QuickTransitが起動
2.異なるアーキテクチャのバイナリを、QuickTransitがネーティブコードに変換
3.変換されたコードをCPUが処理
4.システムコールについては、OSが異なるため、QuickTransitが適切に変換
上記のように、QuickTransitはハードウエアの仮想化は行っていない。しかし、UNIXやLinuxなどの近代的なOSでは、アプリケーションが直接ハードウエアを操作することが少なく、多くの場合システムコールを経由している。そのため、システムコールを変換することで、ほとんどのアプリケーションを実行することが可能となる。また、ハードウエアを仮想化していないため、オーバーヘッドが少なく、QuickTransitが高速で動作する要因の1つともなっている。
次は、より細かくQuickTransitのトランスレーション技法を見ていこう。