MICROPROCESSOR FORUM 2001レポート

TRANSTIVE TECHNOLOGIESがDynamiteをデモ
~AthlonでPowerPCのバイナリが動作

会場:Fairmont Hotel(カリフォルニア州サンノゼ)
会期:10月15日~19日(現地時間)



 マイクロプロセッサ関連の発表が行なわれるカンファレンスのMICROPROCESSOR FORUMは、本日で3日目を迎え、組み込み系CPUのデモなどが行なわれた。

 その中で最も注目を集めたのがTRANSTIVE TECHNOLOGIESが公開した“Dynamite”と呼ばれるソフトウェア。Dynamiteは、CPUのネイティブのバイナリコードをほかのCPUの命令に翻訳し実行するというソフトウェアで、実際にAthlonを利用してPowerPCのバイナリを動作させるデモンストレーションが行なわれた。



●バイナリコードを高速に変換するDynamite

Dynamiteに関する講演を行なうジェイソン・ソルーダ氏。TRANSTIVE TECHNOLOGIESの共同創設者でプロダクトデベロップメントマネージャ
 TRANSTIVE TECHNOLOGIESのDynamiteは、ソフトウェアによるバイナリトランスレータで、動的にバイナリコードをネイティブのコードに変換し、他アーキテクチャのバイナリ用に書かれたアプリケーションをマイクロプロセッサで実行するようにするソフトウェアだ。

 これを利用することにより、例えばx86アーキテクチャのCPUであるAthlonの上で、PowerPCアーキテクチャ用のLinuxを動かすなど、CPUの命令セットアーキテクチャ(ISA)にとらわれず、さまざまな命令セットアーキテクチャ向けのバイナリが実行できるようになる。

 こうしたアプローチは今に始まったことではなく、旧DEC(Digital Equipment Corporation、現コンパック)がAlpha用のWindows NTで、x86用のアプリケーションを実行できるようにしたFX32などで古くから模索されてきたアプローチだ。しかし、これまでこうしたアプローチが成功した例はほとんどなかった。1つにはこうしたエミュレーションのソフトウェアを利用した場合、本来CPUが持つパフォーマンスを発揮できず、ネイティブの方が高速であれば、ネイティブにあわせたアプリケーションを使った方がよいという議論になってしまうからだ。


Dynamiteではフロントエンドにあるデコーダで、中間言語であるIRに変換し、さらにカーネルで命令を最適化し、エンコーダに渡されて実行される
 ところが、昨年、Transmetaがこうしたアプローチで成功したことにより、状況が変わってきた。TransmetaはCPUそれ自体にはVLIW型のRISCプロセッサを利用し、それにx86命令をVLIW型命令に変換するコード・モーフィング・ソフトウェアを組み合わせることで、x86互換を実現している。このコード・モーフィング・ソフトウェアは、言ってみれば一種のエミュレーションソフトウェアで、Crusoeがそれなりの性能で動作したことから、“エミュレーションだから性能がでない”という認識をうち破ることに成功した。

 Dynamiteでも、そうしたエミュレーションの“壁”を破るべく、性能を上げるための工夫があちこちにされている。

 Dynamiteでは3つのモジュールからなるモジュラー構成となっており、フロントエンドのデコーダ、カーネル、バックエンドのエンコーダが用意される。まず、バイナリが実行されるとデコーダが、それを解読し、IR(Intermediate Representation)と呼ばれる中間コードに翻訳される。それがカーネルに渡され、さらにバックエンドのエンコーダに渡されてCPUのネイティブの命令にエンコードされ、CPUが命令を実行できるようになる。CPUごとに、デコーダ、エンコーダが用意され、例えばx86のデコーダと、PowerPCのエンコーダを用意すれば、x86命令が実行できるPowerPC搭載PCが実現できるし、MIPS命令のデコーダと、StrongARMのエンコーダを用意すれば、MIPS命令が実行できるStrongARM搭載のPDAを実現することができるようになるわけだ。



●高速に実行するためにカーネルを最適化

 Dynamiteではネイティブの命令を実行するのと同じぐらい高速にアプリケーションを実行できるようにするため、いくつかの工夫がされている。例えば、コードキャッシュの有効利用だ。

 Dynamiteでは、最初の実行時にはデコード→カーネル→エンコードという手順をたどることになる。まず、デコーダでバイナリを読みとり、IRに翻訳されカーネルに渡される。そのIRがカーネルからエンコーダに渡され、CPUのネイティブな命令に変換されて実行されると同時にその変換結果はキャッシュに格納される。この場合は、CPUは翻訳、変換という演算を行ないながら実行する必要があるため、実行時にはオーバーヘッドが発生し、処理能力はネイティブのアプリケーションを実行した場合に比べて低下する。Dynamiteでは2度目以降はキャッシュから直接ネイティブ命令を読み出し、実行することで、オーバーヘッドなく実行することができるようになるのだ。

 このほかにも、Dynamiteのカーネルはさまざまな最適化が行なわれている。例えば、Dynamiteはよく使われるコードを見つけ、それに対して動的に最適化を行なっていく。コードにジャンプ命令がある場合には、それらの結果を予測したり、ジャンプをさけるなどしながら命令実行の最適化を行なっていく。また、多くの場合、命令は利用しないレジスタやフラグなどを設定しているが、必要のない時にはそれらを設定しないなど、必要ない命令実行をできるだけ押さえる工夫がされる。もちろん、実際の実行部分となるバックエンドのエンコーダにもILP(Instruction Level Parallelism)を導入するなど、マイクロプロセッサの性能を最大限活用できるような工夫がされている。

 実際、TRANSTIVEはAthlon 1.4GHz上で、X-Windowを走らせ、そこでDhrystone v2.1というベンチマークソフトを実行した。実行したのはx86ネイティブのDhrystoneとPowerPCバイナリのDhrystoneで、x86ネイティブのものよりも、PowerPCバイナリの方が高速であるという結果になった。このほかにも、x86バイナリをMIPS上で走らせた結果などが公開され、いずれもネイティブを上回るという結果が示された。

PowerPC/1GHz(実際には450MHzを計算で1GHzにした仮想1GHz)とDynamiteがインストールされたAthlon 1.4GHz上で同じPowerPCバイナリのベンチマークを行なった結果 Athlon 1.4GHz上で、x86バイナリのDhrystone v2.1(左)と、Dynamite上でPowerPCバイナリのDhrystone v2.1を実行した結果(右)。Dynamiteの方が高いスコアを出している


●Athlonが使われたMacintoshも実現可能?

インプリメント方法。OSにインストールする場合と、Dynamiteの下にHALとドライバを用意してハードウェア的にCPUを見せかけるCrusoeのようなアプローチの両方が考えられている
 Dynamite自体は200~300KB程度の小さなプログラムで、フラッシュROMやハードディスク上などに搭載することができる。

 利用方法についてTRANSTIVEでは、現在2つの方法を考えているようだ。1つは、OSにインストールしてアプリケーションレベルでの互換性を維持する方式、もう1つがフラッシュROMに格納するなどしてOSからみた場合にはネイティブのCPUであるように見せる方式だ。前者は従来のエミュレーションソフトと同様の方式であり、例えばx86のプラグインなどをほかのOSで使いたい場合などに利用し、後者はTransmetaのCrusoeに似たアプローチで、新しいアーキテクチャのCPUを古い命令セットアーキテクチャに対応させる場合などに利用できる。

 TRANSTIVEでは、今後このDynamiteのIRをマイクロプロセッサメーカーなどに供給していく予定があるといい、顧客と協力して最適化を進めていくという。現時点では、実際のCPUに導入された時のパフォーマンスがどうであるかがわからないが、TRANSTIVEのいうようにネイティブに近い性能を発揮できるとしたら、かなり有望な技術といえるだろう。だとすれば、Dynamiteは、これまでの命令セットアーキテクチャという“縛り”をなくし、マイクロプロセッサメーカーが、現存する命令セットとの互換性を簡単に実現できるというメリットがある。将来的にはAthlonを使ったMac OS搭載PCが実現できる可能性もでてくるわけで、今後とも注目していきたい技術だ。


□MICROPROCESSOR FORUMのホームページ(英文)
http://www.mdronline.com/mpf/
□関連記事
【10月16日】MICROPROCESSOR FORUM 2001開幕速報
http://pc.watch.impress.co.jp/docs/article/20011016/mpf01.htm

(2001年10月19日)

[Reported by 笠原一輝@ユービック・コンピューティング]

I
最新ニュース
【11月30日】
【11月29日】
【11月28日】

【Watch記事検索】


【PC Watchホームページ】


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

Copyright (c) 2001 impress corporation All rights reserved.