• 検索結果がありません。

バイナリ変換の変換レベルとその効果

第 7 章 ESPRIT/SIM のバイナリ変換方式の速度性能評価

7.5. バイナリ変換の変換レベルとその効果

表22 バイナリ変換の変換レベル

レベルとニーモニック 説明

0.interp 高速インタプリタを使用

1.ifnc InsFncを呼び出すコードをCCに生成 2.ifnc-pc PC更新の最適化を1に追加

3.ifnc-cbr 条件分岐命令の後続命令生成を2に追加

4.tr-base 各レガシー命令をホスト命令に変換

5.tr-pc PC更新の最適化を4に追加

6.tr-cbr 条件分岐命令の後続命令生成を5に追加

7.tr-code OPフィールドの特殊条件の最適化(6に追加)

8.tr-reg ホストレジスタに残った結果を再利用

9.tr-ccbr CCE内から別のCCを検査して分岐

レベル0はインタプリタ動作そのものである.レベル1から8までは6.4で紹介した内容 と同じである.レベル8のtr-reg の実装をさらにここで説明する.ISAレジスタの実体で あるメモリに書き込むとともに別のホストレジスタにも結果を残して後続命令ではそのホ ストレジスタから読み出せるようにワンパスで簡易実装している.このねらいは,CCE の コード量削減でもホスト命令実行数の削減でもなく,ホストの後続命令によるメモリアク セスパイプラインの遅延削減にある.PowerPCでは3本のレジスタを,x86では2本のレ ジスタをこの目的に割り付けている.この方式では,CCE 内で最初にそれらのレジスタの セーブ行い,CCEから抜けるときにリストアする必要があり,メモリアクセスパイプライ ン の 遅 延 削 減 の 代 償 と し て こ の オ ー バ ヘ ッ ド が 発 生 す る . そ の た め ,132.ijpeg や

129.compress のようにLbrが大きい場合はこのオーバヘッドが薄まり効果が大きい.処理

の遅いメモリアクセス命令が少なくレジスタ演算命令が相対的に多いプログラムはその効 果が大きく見える.逆にメモリアクセスが多いプログラムではこれによる性能向上効果が 薄まる.そのような理由により,他のプログラムでは差異が小さく,わずかに性能が低下 しているものもある.

レベル1~3のInsFncを使用しただけの実装(ifnc-*)でもインタプリタの約1.5倍の速

度性能を確保できている.市販のプロセッサでは命令デコードがPISAより複雑なため,ifnc の効果は更に増大する.それを数値で示す.変換レベルifnc-cbrで099.goの実行ではPISA はインタプリタの 1.3 倍しか向上していない.しかし,グラフや表には示していないが PowerPCは1.6倍,M32Rが2.4倍に速度性能が向上した.129.compressではPISA が 1.9倍に対し,PowerPC は2.1倍,M32Rは2.4倍に向上した.

レベル4から8に至る改良では,コード量の増加はレガシーISAごとに高々50~100行 であるが,安定動作に至るデバッグ期間は行数の増加以上に延びる.このようにバイナリ 変換を部分適用しただけでもインタプリタの3~8倍向上し,変換関数TrFncを用意せずに インタプリタ用のInsFncを流用しても1.2倍から2倍程度の速度性能の向上を実現できる.

0 2 4 6 8 10 12 14

interp ifnc

ifnc-pc ifnc-cbr

tr-base tr-pc

tr-cbr tr-code

tr-reg tr-ccbr

speed up

132 129 130 099 126

図43 バイナリ変換の変換レベルと性能向上

次に,変換対象のPISAのレガシー命令の種類を限定したときのCore 2 Duoの速度性能 の評価結果を図44に示す.ここではCINT95のプログラム8個の命令実行頻度統計をまず 計った.その平均のトップ18について3個ずつ変換対象として増やした変換ルールをtr-3,

tr-6,tr-9,..,tr-18と定義した.変換レベルは7を使用して,順次TrFncを増やして性能

向上を評価した.折れ線の縦軸は,実装した68種の命令のバイナリ変換を生かしたときの 速度性能を100%としている.棒グラフはプログラム8個の各命令の出現頻度を平均値で示 している.各プログラムの 90%の頻度をカバーする命令種はそれぞれに異なるが,8~19 種の範囲であった.全部の命令種数の 15%にあたるトップ18 の命令種のみで48~95%の 速度性能を実現できている.CINT95の平均では 79%の性能である.なお,TrFncとして 実装した68命令種のうちCINT95で実行されたものは55命令種で残りの13命令は実行 されていない.

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

interp ifnc

tr-3 tr-6 tr-9 tr-12

tr-15 tr-18

more

relative performance

coverage 099 124

126 129 130

132 134 147

図44 バイナリ変換対象の命令種の拡大と性能