Click


後藤弘茂のWeekly海外ニュース

x86MPUに“化ける”Transmetaの秘密


●ビジネス的には失敗続きだったx86エミュレーション

 Transmetaから先週デビューした新MPU「Crusoe」は、エミュレーション技術を使ってx86互換を実現したMPUだ。
 しかし、これまでもエミュレーションでx86のソフトウェア資産を使えるようにしようというプロジェクトはいくつもあった。例えば、RISC系MPUが登場した頃は、シンプルで高速化が容易なRISCでx86をエミュレートしてしまえば、複雑で高速化が難しいx86MPUより高速になるという期待で盛り上がった。しかし、x86エミュレーションはいずれもビジネス的に成功しなかった。エミュレーションではそのMPU本来のパフォーマンスを生かすことができず、RISCの高速化手法を取り入れて高性能化したPentium以降のx86 MPUに対して、性能面での優位性を十分にアピールできなかったからだ。また、互換性も完全ではない場合が多かった。そのため、長いことx86エミュレーションにはバッドイメージがつきまとっていた。
 だが、Crusoeのエミュレーションの方法は、従来の手法とは大きく異なる。そのため、性能と互換性の面で従来の問題の多くを解決できている可能性がある。


●Crusoeをx86互換MPUに化けさせるコードモーフィングソフトウェア

 まず、OSの上で動作する多くのエミュレータと異なり、Crusoeのコードモーフィングソフトウェア(Code Morphing Software)は、OSやBIOSの下、MPUに密着したレイヤとして機能する。MPUがブートすると、まずコードモーフィングソフトウェアがMPUの専用インターフェイスで接続された1MBのフラッシュメモリからロードされる。外部からのプログラムをロードするのは、コードモーフィングソフトウェアでCrusoeがx86互換MPUに“化け”たあとになる。つまり、コードモーフィングソフトウェアは、コードをモーフ(変形)するというより、MPUをソフトウェアで包むことで、x86MPUにモーフ(変形)してしまうという概念でいるようだ。
 そのため、OSやBIOSからは、Crusoeは完全なx86 MPUに見える。OSも、コードモーフィングソフトウェアの上で動くアプリケーション的な扱いになる。Crusoe上で動くプログラムの中で、Crusoeのネイティブの命令セットで書かれたプログラムは、このコードモーフィングソフトウェアしかない。というか、必要としない。そのため、原理的には、ハードウェアでx86互換を実現した場合と同じだけの互換性を実現できることになる。


●Intelの知的所有権を回避できる

 この手法の利点として、互換性とともに興味深いポイントのひとつは、x86互換MPUでありながら、Intelの知的所有権を回避できる可能性が高いことだ。実際に、同様の方式のx86互換MPUを開発しているロシアのElbrus Internationalは、そう主張している。
 これまで、x86互換MPUを製造するには、公式にはIntelとクロスライセンスなどを結び、x86互換MPUを製造する権利を持つメーカーのFab(工場)を使わなくてはならなかった。これが、x86互換MPUでビジネスをする際の大きな障壁だった。だが、Transmetaの方式で、この問題を解決できるとしたら、x86互換MPUへの門戸は完全に開いたことになる。そうなると、この市場へ参入を狙うメーカーはもっと増えるかもしれない。例えば、Transmetaから技術ライセンスを受けて、台湾の安いファウンダリ(受注生産半導体メーカー)でチップを作り、Transmetaが狙っていないデスクトップPC市場をターゲットにしたMPUを開発するといった展開もありえるわけだ。
 もっとも、Transmeta自体は、この知的所有権を回避できるという利点を使っていない。というのは、Crusoeを、Intelとのクロスライセンスを持つIBMに製造してもらっているからだ。IBMはファウンダリとしては高コストだと言われているので、TransmetaがあえてIBMを選んだのにはライセンス以外に理由があると思われる。


●エミュレーションに向いているVLIWアーキテクチャ

 Transmetaは、CrusoeのMPUコアに、「VLIW(Very Long Instruction Word:超長命令語)」アーキテクチャを採用した。このことは、Crusoeのx86コードの実行効率を高める大きな要素となっていると思われる。
 VLIWでは、1つの長い命令語の中に整数演算や浮動小数点演算、メモリアクセスといった複数のオペレーションをパックして、各オペレーションを並列に実行する。そのため、x86命令を変換する際に、複数のx86命令やその命令に含まれる複数のオペレーションをひとつの命令語の中にパックすることが可能になる。効率がよくなるわけだ。ところが、今までのRISCでのエミュレーションでは、複雑なx86命令を単純なRISC命令に分解(しばしば命令数が増えてしまう)、そのあとネイティブのRISC命令をハードウェアでスケジューリングして並列に実行することになる。それだけ、余計な手間が多かったことになる。
 つまり、ソフトウェアでのエミュレーションを前提とするなら、VLIWコアというのは非常にロジカルな選択ということになる。最近登場している、似たようなエミュレーションを前提としたMPUのプロジェクト(Elbrusのe2kプロセッサなど)が、どれもVLIWアーキテクチャを取るのは、偶然ではないだろう。


●P6コアの1/4のロジックトランジスタで実現か

 Transmetaでは、CrusoeのVLIW命令語を「molecule(分子)」と呼んでいる。これは128ビット長または64ビット長で、32ビット固定長と思われるRISCライクな命令「atoms(原子)」を最大4個含む。このmoleculeの中では、おそらくatomsの入るスロットの位置によって含まれているオペレーションが決まっていて、ダイレクトに実行ユニットに発行されるらしい。つまり、Crusoeでは、複雑なディスパッチ(命令発行)ユニットは持たないということだ。ちなみに、Transmetaによると、CrusoeのVLIWコアは整数演算ユニットが2つ、浮動小数点ユニットが1つ、ロードストアユニットが1つ、ブランチユニットが1つという構成になっている。どれかのスロットが2つのユニットに対応しているのかもしれない。
 また、moleculeはインオーダー(命令の順番に従って)実行されるので、Pentium IIIやAthlonのような、複雑なアウトオブオーダー(命令の順序を入れ替えて)実行をスケジューリングする必要もない。つまり、CrusoeのMPUコアでは、デコードとスケジューリングのユニットが、極端にシンプルになっているというわけだ。
 その代わりCrusoeでは、コードモーフィングソフトウェアがx86命令をネイティブのVLIW命令に変換する際に、最適化する。それにより、並列に実行できる組み合わせのatomsをできる限り多くmoleculeに詰め込む。これは、最先端x86互換MPUのスケジューリング機構がやっているのと似たようなことだ。つまり、Crusoeは、MPUの内部のユニットのうち、デコーダとスケジューリング機構を、ソフト化してしまったシロモノだと言うこともできる。その分のハードウェアがごっそりないのだから、それはシンプルなMPUになって当然だ。
 では、Crusoeはどれくらいシンプルなのか。Transmetaの特許申請書類やCrusoeのドキュメントでは、CrusoeのMPUハードウェアのロジックトランジスタの数が、Pentium Proの1/4程度だと示唆している。Crusoeの小さなダイサイズ(半導体本体の面積)も、この主張を裏付けている。現在の最先端x86 MPUでは、ハードウェアのかなりの部分がスケジューリング機構やデコード機構などでしめられているので、これも不思議ではないだろう。


●異なるMPUアーキテクチャを同一に

 Transmetaのコードモーフィングソフトウェアのアプローチでこのほか面白いのは、これがハードウェアの違いを隠蔽してしまうことだ。例えば、TransmetaはCrusoeファミリとしてノートPC向けの「TM5400」と、WebPADやハンドヘルドデバイス向けの「TM3120」の2種類のMPUを発表したが、この両MPUのネイティブの命令セットには互換性はないという。ところが、Transmetaでは異なるコードモーフィングソフトウェアを走らせることで、その違いを隠蔽してしまっている。
 Transmetaは、Crusoeに関連する特許申請書類の中で、この技術はVLIWアーキテクチャに限定されないと言っている。例えば、Transmetaが次世代MPUで、さらに革新的なMPUアーキテクチャを取ってきた時でも、表面上は同じCrusoeに化けることができることになる。また、異なるアーキテクチャのMPUに、技術をライセンスすることもできるかもしれない。
 x86命令セットがソフトウェアでインプリメンテーションされている利点はほかにもある。命令セットの拡張に対応できる点だ。例えば、IntelのMPUに新命令が加わった場合、それと互換を取ろうとすると、ハードウェアオンリのx86互換MPUでは、次の世代の製品まで待たなくてはならない。しかし、Crusoeでは、実行ユニットやレジスタなどによる物理的な制約がない限り、コードモーフィングソフトウェアの書き換えで迅速に対応できることになる。しかも、TransmetaではCrusoeのコードモーフィングソフトウェアをインターネット経由でダウンロードできるようにする計画も持っている。エンドユーザーが、自分の購入したPCやデバイスの命令セットを拡張できる可能性すらありえる。

□関連記事
【'99年11月19日】Transmetaの謎のMPU「クルーソー」の実像
x86命令をVLIWプロセッサでエミュレートするMPUが来年1月に登場?
http://pc.watch.impress.co.jp/docs/article/991119/kaigai01.htm
【1月20日】Transmeta、噂の新x86プロセッサCrusoeを発表
~モバイル向け超低消費電力、年内に700MHzも登場~
http://pc.watch.impress.co.jp/docs/article/20000120/trans.htm
【1月21日】後藤弘茂のWeekly海外ニュース
ついにベールを脱いだTransmetaの概要
http://pc.watch.impress.co.jp/docs/article/20000121/kaigai01.htm


バックナンバー

(2000年1月24日)

[Reported by 後藤 弘茂]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当pc-watch-info@impress.co.jp