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

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

7.3. SPEC CINT95 の性能

SimpleScalar/PISAをレガシーISAに,ホストをCore 2 DuoにしてCINT95を使って 評価した速度性能の結果を図40に示す.この速度性能は変換レベル9で測定した結果であ る†34.グラフの縦軸は MIPS 値であり,バイナリ変換モード (DBT-*)として6.7に示し たフラットモード(*-flat),マップドモード(*-map),アドレス変換モード(*-dat)の各 モードの値を示す.比較用のインタプリタには itp-flat と itp-map を,また参考として

sim-fast(Ver.3.0)の実測結果も載せている.なお147.vortexはシステムコールの実装が

Cygwin に対応していないため sim-fast は“N.A.”として値を記載していない.また,表

20に,統計機能を活かして採取したバイナリ変換の特性を示す.6.3で示したPmiss,Pifn,

Lbr のほかに,レガシー命令あたりのホストの平均命令数(Lhost),全命令中のインタプ リタの実行割合(Pitp)も示している.

0 100 200 300 400 500 600 700 800

MIPS

DBT-flat 281 443 205 649 559 727 434 284 DBT-map 199 290 197 485 367 539 290 185 DBT-dat 133 190 97 424 240 421 168 99 itp-flat 49.0 52.7 47.8 51.7 47.7 53.7 47.8 46.7 itp-map 44.0 47.3 41.7 46.7 43.0 47.7 42.1 42.8 sim-fast 27.4 25.7 25.0 25.7 20.4 23.6 25.2

099 124 126 129 130 132 134 147

N.A.

図40 CINT95の速度性能

†34公刊論文2では図5で変換レベル8の値を使い表5ではレベル9の値を示している.それに対して,こ こでは最大性能を示す変換レベル9の値を図に使用している.

表20 CINT95のバイナリ変換特性

program Pmiss(%) Pitp(%) Pifn(%) Lbr Lhost 099 0.028 0.181 0.000 10.2 4.2 124 0.001 0.005 0.000 5.8 4.7 126 0.144 0.441 0.030 7.9 4.8 129 0.000 0.001 0.571 6.5 4.9 130 0.003 0.009 0.000 6.7 4.9 132 0.002 0.004 0.027 13.7 4.1 134 0.013 0.013 0.030 7.2 4.6 147 0.037 0.085 0.002 9.6 4.5

フラットモードではベンチマーク間のMIPS値の差が大きい.これは,1個のCCEで実 行された平均レガシー命令数,分岐が発生して CCDを検索した頻度,CCD がミスしたと きのコアループ処理時間とバイナリ変換の時間,インタプリタ関数を使った割合,更にホ ストのデータキャッシュミス時間が組合わされた結果である.それらの事象を表 20に示し た特性で表現すると,Pmiss,Pitp,Pifn が小さく Lbr が大きいほど高い性能となる.

132.ijpeg はPmissが小さくLbrが大きいため最も性能が高く,099.goはプログラム領域

が広くPmissが大きいため性能が低く,126.gccはPmissとLbrの両要因により性能が最

も悪いことが分かる.

マップドモードでは,命令アドレスのマッピングオーバヘッドは小さいが,データアド レスのマッピングのオーバヘッドはロード命令とストア命令の出現頻度が高くなると増え る.

アドレス変換モードでは,6.7に示したように命令TLBのミス時にはCCもミスするよう に制御しているため,TLBミス率が高いとPmissが増大する傾向がある.しかし,評価に 用いたような通常のTLB構成ではTLBミス率は小さく,TLBミスによる影響は小さい.

データのアドレス変換をするデータTLBもヒット率が高いため,フィルタ動作をしている ハッシュテーブル読出しがオーバヘッドの支配要因となっている.この動作はマップド モードの動作と似ているが,解析の結果,ミス検出時にはrun_loopへ戻るための分岐判定 の処理があることと,マップドモードより処理が若干複雑な分レジスタが不足することが オーバヘッドの主要因と分った.

図 40に示した MIPS 値からインタプリタを基準とした相対性能として計算すると,フ

ラットモードでは4.3~13.5(平均7.7)倍,マップドモードでは4.3~11.3(平均6.3)倍,

アドレス変換モードでは2.7~10.5(平均4.5)倍となった.sim-fast を基準とすると同等 機能のマップドモードで7.3~22.8(平均11.8)倍†35の速度性能向上が達成でき,その性能 向上効果が大きいことが分かる.

図41は,フラットモードのMIPS性能(縦棒,左軸)とインタプリタを基準とした相対

†35 sim-fastに対するフラットモードでは8.2~30.8倍(平均15.8倍)である.

性能(折れ線,右軸)を,ホストCore 2 DuoとMPC7450†36の両方を示している.MPC7450 の変換レベルは8である.このグラフは,Core 2 Duo の変換レベルについては8と9の両 方を示している.MPC7450の絶対性能が周波数の差を考慮してもCore 2 Duoに比べて低 い主な原因は,バイナリ変換されたコードが関数リタン用のリンクレジスタ(LR)を含む 4個のレジスタのセーブリストア†37を行っていることと,間接分岐が遅いことである.同じ レベル 8 同士では2つのホストともインタプリタに対する性能向上率は似た傾向を示して いる.なお,比較に用いた ESPRIT/simのインタプリタは,アドレス上限チェックなども 含んでいるが,その機能を省略しているsim-fastより速い.Core 2 Duoの平均ではマップ ドモードのインタプリタが sim-fastの1.8倍,フラットモードのインタプリタがsim-fast の2.0倍高速である.

図42に,レガシーISAの違いによる性能評価の結果を示す.レガシーISAには,PISA,

PowerPC(PPC)とM32Rを,ホストにはCore 2 Duo を,ベンチマークプログラムには

099.goと129.compressを使用している.変換レベルには9を用いた.縦棒と左軸がMIPS

性能を,折れ線と右軸がインタプリタを基準とした相対性能を示している.3つのレガシー ISAともに,CCのヒット率が高い129.compressでは10~15倍,低い099.goでも4~8 倍の速度性能向上効果が出ている.PISAに比べると実在のレガシーISAでは例外検出が多 くなることから,また命令が複雑なために InsFnc の実行率(Pitp)が高くなることから,

絶対性能が若干低くなる.PowerPCでは,lmwとstmwの命令実行でレジスタ本数を多く ロード/ストアする場合もあり,099.go はその典型である.インタプリタもPISA に比べ て複雑となるため,結果としてバイナリ変換の速度性能向上効果はPISAと同等かそれ以上 となっている.

†36 MPC7450では,C/C++言語の実装にPIC(Position Independent Code)が用いられコアループや InsFncでのグローバル変数のアクセスが遅いという課題があった.これに対しローカル変数のコピー を用いるなどの改善をし,インタプリタで2~3割の速度性能.を改善した後の結果をここに示している.

†37 RISCホストではバイナリコードが参照するレジスタ構造体やメモリポインタなどが必要である.

266

167

402

558

69 58 78 114

41 76 54 66

278 233 221 326

559

284 281 443

727 434 205

649

0 100 200 300 400 500 600 700 800

MIPS

0 2 4 6 8 10 12 14 16

speed up

MPC7450(MIPS-8) Core 2 Duo(MIPS-8) Core 2 Duo(MIPS-9) MPC7450(times-8) Core 2 Duo(times-8) Core 2 Duo(times-9)

MPC7450(MIPS-8) 54.3 66.4 41.3 76.1 77.9 114.4 68.9 57.6 Core 2 Duo(MIPS-8) 221 266 167 402 326 558 278 233 Core 2 Duo(MIPS-9) 281 443 205 649 559 727 434 284 MPC7450(times-8) 4.8 5.8 4.0 7.0 7.5 9.9 6.8 6.1 Core 2 Duo(times-8) 4.5 5.0 3.5 7.8 6.8 10.4 5.8 5.0 Core 2 Duo(times-9) 5.7 8.4 4.3 12.6 11.7 13.5 9.1 6.1

099 124 126 129 130 132 134 147

図41 ホストの違いによるバイナリ変換性能とインタプリタとの性能差

49 33 33 52 41 37

649

441

268

544

278

188

429

343

182

485

124 199

0 100 200 300 400 500 600 700

099-PISA

099-PPC

099-M32R

129-PISA

129-PPC

129-M32R

MIPS

02 46 810 1214 1618 2022 2426 28

speed up

Itp-flat DBT-flat DBT-map DBT-flat/Itp-flat DBT-map/Itp-map

図42 他レガシーのバイナリ変換性能

次にスローダウンを評価する.PISAにはネイティブ動作がないため,PISAのバイナリ

をCore 2 Duoでシミュレーションした時間をCore 2 Duoのネイティブ実行時間で割った

値をスローダウンとして示す.132.ijpeg(penguin)のスローダウンは3.4,099.go(50, 21)

は5.1,スローダウンが大きな 126.gcc(-O amptjp.i)でも8.5であり,目標の10と比べ

ると十分小さな値である.実際の組込みシステムの性能はCore 2 Duoの1/10以下のもの も多いため,これらの値で十分な性能を実現できているといえる.MPC7450によるPISA のシミュレーションでは099.go(50, 21)が15,129.compressが7.1となる.それに比べ

て,PowerPCのネイティブ動作に対するシミュレーションのスローダウンは21と11に拡

大する.これからも,PISAに比べて複雑な命令仕様を持つPowerPCのシミュレーション も複雑となり処理時間を要することが分かる.