Click


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

Crusoeのパフォーマンスは本当にPentium IIIクラスか?


●コード変換のオーバーヘッド

 米Transmetaの新x86互換MPU「Crusoe(クルーソー)」に関しての、大きな疑問のひとつはパフォーマンスだ。Crusoeのパフォーマンスをクロックから推測することは非常に難しい。それは、Crusoeの特異なアーキテクチャのため、単純な性能比較ができないからだ。Crusoe発表の際は、3Dゲームもデモされたが、一般的なベンチマークの結果は発表されなかった。

 Crusoeは、コードモーフィングソフトウェアと呼ばれるソフトでx86のコードをネイティブのVLIWコアのコードに変換する。つまり、VLIWプロセッサの上でx86のバーチャルマシンが動くようなカタチになる。そのため、x86のハードウェアデコーダを持つMPUと較べた場合、必ずコード変換のオーバーヘッドが生じる。つまり、700MHzのサイクルで動作する場合なら、何割かのサイクルをコードモーフィングソフトウェアに使い、残りを変換されたx86コードの実行に使うことになる。コードモーフィングソフトウェアが消費するサイクルがどれだけかによってパフォーマンスが大きく異なる。

 普通に考えれば、全てのx86コードをソフトで変換するコードモーフィングのオーバーヘッドは極めて大きい。しかし、Transmetaが公開しているパフォーマンス資料は、その推測とは異なる結果を示している。それによると、CrusoeファミリのWindowsノートPC向けMPU「TM5400」533MHz版のアプリケーションの処理性能は、モバイルPentium III 500MHzと較べてそれほど遜色はない。単位時間当たりの処理能力、つまりスループットに関しては、「Load Operating System」と「Office 2000」の項目でやや劣る(80~92%)ほかは、WebブラウジングやMP3再生、DVD再生などでモバイルPentium IIIと同等の性能を達成するとしている。これを額面に通り受け取るなら、TM5400の性能は同クロックのPentium IIIに近く、とくにマルチメディア性能では同じということになる。


●変換したコードをキャッシングで再利用

 どうしてそうなるのか。じつは、ここにはマジックがある。コードモーフィングソフトウェアは、毎回x86コードを変換しているわけではないのだ。

 コードモーフィングソフトウェアは、Crusoeに直結されたフラッシュからブートしたあと、メインメモリ上にx86コードがアクセスできないように隔離したトランスレーションキャッシュ領域を確保する(自身もコピーする)という。そして、x86のコードをCrusoeのネイティブのコードに変換すると、その変換済みのコードブロックをトランスレーションキャッシュに収める。コードモーフィングソフトウェアは、次にx86のコードブロックを変換する時に、そのコードブロックの変換したコードがキャッシュにあるかどうかをチェック。キャッシュにあった場合には、そちらを実行する。つまり、キャッシュに変換済みのコードがあった場合は、そのx86コードのブロックは手間取る変換をする必要がないわけで、Crusoeのネイティブのスピードに近い速度で実行されることになる。

 じつは、一般的なアプリケーションでは、同じコードが何度もリピートされて使われることが多い。そのため、Crusoeのコードモーフィングソフトウェアのキャッシュで、パフォーマンス面をカバーできることになる。

 とくに、キャッシュの効果があると見られるのはDVD再生やMP3再生などだ。これらのソフトでは、同じコードが再生処理中ループで使われると思われる。そのため、DVD再生やMP3再生では、いったんx86コードが変換されると、その変換済みのコードしか使われないので、再生処理はCrusoeのネイティブのスピードで実行されることになる。つまり、コードモーフィングのオーバーヘッドはなくなってしまうわけだ。それなら、モバイルPentium IIIと同等の性能になってもおかしくはない。

 また、コードモーフィングソフトウェアは、何度も使われるコードブロックは時間をかけて最適化してCrusoeのMPUコアが高速に実行できるようにし、1度しか使われないようなコードブロックは最適化しないで単純にCrusoeのネイティブコードに変換するといったフィルタリングも行ない、性能を最適化するという。


●アプリケーションで性能が大きく異なるCrusoe

 こうした仕組みを持つCrusoeのパフォーマンスは、単純に既存のx86互換MPUとクロックをもとに比較することができない。

 まず、予想できるのは、Crusoeはパフォーマンスにムラがある、つまりアプリケーションによって性能が大きく変わるMPUだろうということだ。例えば、DVD再生やMP3再生は、Crusoeのテクノロジでは、もっとも性能が出やすいアプリケーションだと思われる。しかし、コードがどんどん変わるようなアプリケーションでは、Crusoeの性能はかなり落ちるかもしれない。一般的なアプリケーションでは、コードのリピート率が高いとTransmetaは主張するが、ユーザーの使うソフトによって性能が大きく変わる可能性はある。

 また、Transmetaの実アプリケーション性能は、従来のベンチマークでは測れない。Transmetaでは、ベンチマークテストは多くの場合コードのリピート率が高くないため、コードモーフィングのオーバーヘッドが顕著に出てしまうと説明している。つまり、既存のベンチマークでは、実力以下の結果しか出ない場合があると言っているわけだ。Transmetaでは、そのために自前のベンチマークによる性能結果を発表している。


●コードモーフィングソフトの出来に影響される性能

 Transmetaのアーキテクチャでは、性能はコードモーフィングソフトウェアの出来に大きく依存していることも重要だ。コードモーフィングソフトウェアによる最適化やスケジューリング、キャッシングの機能の出来で性能は左右されるだろう。このあたりは、実際にチップが登場してこないとわからない。

 また、キャッシュに取れるメモリのサイズや帯域、レイテンシにもパフォーマンスは影響されるだろう。もっとも、Crusoeは伝統的なx86互換MPUよりもDRAMアクセスのレイテンシは短い。それは、DRAMインターフェイスを内蔵しているからだ。他のx86互換MPUのように、システムバス経由でチップセットにアクセスして、それからDRAMにアクセスするようなロスがない。システムバスの帯域がボトルネックになる心配もない。TM5400はDDR SDRAMとSDRAMの2つのメモリインターフェイス(64ビット幅)を持ち、フルにメモリを搭載すればメモリ帯域は約3.6GB/secと非常に大きい。ちなみに、DDR SDRAMとSDRAMのインターフェイスの両方を持つのは、両規格で電圧(SDRAMは3.3V、DDRは2.5V)やインターフェイス(SDRAMはLVTTL、DDRはSSTL)が異なるため、両方に対応したインターフェイスを作るのが困難という事情もあると思われる。

 こうしたことを考えると、Crusoeにはまだ高速化の余地がある。例えば、将来、プロセス技術の微細化が進めば、トランスレーションキャッシュを収めるための大容量SRAMあるいはDRAMをチップに統合(On-Die)してキャッシングの高速化を図ることができるかもしれない。

□関連記事
【1月20日】Transmeta、噂の新x86プロセッサCrusoeを発表
~モバイル向け超低消費電力、年内に700MHzも登場~
http://pc.watch.impress.co.jp/docs/article/20000120/trans.htm


バックナンバー

(2000年1月21日)

[Reported by 後藤 弘茂]


【PC Watchホームページ】


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