第 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のシミュレーション も複雑となり処理時間を要することが分かる.