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

第 5 章 例外検査の高速化

5.4 実験結果

78 第5章  例外検査の高速化

79

さらに、実行速度は例外検査の命令の有無に大きく左右されるため、冗長な例外検査除去の ために適用する最適化を、以下の5通りに変化させた。

例外検査除去の最適化適用無し

前方データフロー解析[31]を用いた例外検査除去

前方データフロー解析と部分冗長除去[45]を用いた例外検査除去

前方データフロー解析とループバージョニング[43]を用いた例外検査除去

前方データフロー解析と部分冗長除去とループバージョニングを用いた例外検査除去 本方式を適用して、プロセッサ毎に最適化の適用を変化させた場合の性能向上を図 5.5に示す。

例外の種類を明示的にレジスタに代入してハードウェアに用意された高速な条件分岐命令

(trap 命令)を使用して例外検査を行った場合を1としている。a)が RS64IIにおける結果、b)

がPowerPC 604eにおける結果、c)がPOWER3における結果、である。

これらの結果から、例外検査除去の最適化を適用しない場合の効果が非常に大きいことが分 かる。RS64IIで18〜70%、PowerPC 604eで2〜23%、一番並列度の高いPOWER3でも6〜33%

の性能向上が得られている。これは、Java 言語では冗長な例外検査除去を行わない場合には非 常に例外検査が多いので、実行される総命令数が増加することが原因と思われる。

従来提案されている前方データフロー解析を用いた冗長な例外検査除去だけを適用した場合 でも、RS64II では-1%〜25%の性能向上が得られている。さらに、PowerPC 604e では 1%〜8%

の性能向上が、POWER3では2%〜11%の性能向上が得られる。これは、前方データフロー解析 を用いた冗長な例外検査除去では、十分に例外検査を除去出来なかったためと思われる。部分 冗長除去やループバージョニングを用いた例外検査除去は命令移動を伴うので、前方データフ ロー解析を用いた命令除去より、コンパイル時間がかかる最適化である。従って、adaptive

com-pilation を適用するときに要求される短いコンパイル時間でコンパイルを行う軽い JIT コンパイ

ラでは、前方データフロー解析を用いた例外検査除去しか適用できないことも考えられる。こ の場合、本方式はより有効であると考えられる。

また、プロセッサの並列度が低く整数命令を同時実行できない RS64II では、本方式によって レジスタへの代入命令を生成しないことによる性能向上がより大きい。全ての例外検査除去の 最適化を適用した場合でも、SPECjvm98の compress や mpegaudio においては、整数命令を同時 実行できる PowerPC 604eと POWER3 では3%〜6%の性能向上だが、整数命令を同時実行でき

ないRS64IIでは7%〜14%と他のプロセッサに比べて高い性能向上が得られている。実行したプ

ログラム全体では、PowerPC 604eとPOWER3では-1%〜6%の性能向上だが、RS64IIでは0%〜

14%の性能向上が得られている。

80 第5章  例外検査の高速化

0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7

BubSort BiSort Sieve Hanoi Dhrystone LU HeapSort compress mpegaudio

プログラム

性能向上

NONE FW FW + PRE FW + LV FW + PRE + LV

a) RS64IIにおける性能向上

0.9 1.0 1.1 1.2 1.3

BubSort BiSort Sieve Hanoi Dhrystone LU HeapSort compress mpegaudio

プログラム

性能向上

NONE FW FW + PRE FW + LV FW + PRE + LV

b) PowerPC 604eにおける性能向上

0.9 1.0 1.1 1.2 1.3 1.4

BubSort BiSort Sieve Hanoi Dhrystone LU HeapSort compress mpegaudio

プログラム

性能向上

NONE FW FW + PRE FW + LV FW + PRE + LV

c) POWER3における性能向上

NONE: 例外検査除去の最適化適用無し(a)のmpegaudioはデータ取得不能)。

FW: 前方データフロー解析を用いた例外検査除去。

FW + PRE: 前方データフロー解析と部分冗長除去を用いた例外検査除去。

FW + LV: 前方データフロー解析をループバージョニングを用いた例外検査除去。

FW + PRE + LV: 前方データフロー解析部分冗長除去とループバージョニングを用いた例外検査除去。

図 5.5: 例外検査の高速化による性能向上

表 5.2の RS64II の欄から、RS64II では単純整数命令を同時実行できないことが分かる。従っ て、trap 命令を実行すると例外と無関係の整数加減算等の多くの単純命令の実行が遅らされる。

一方、整数命令を同時実行できるPowerPC 604eやPOWER3では、trap命令と例外と無関係の 整数命令は並列実行可能である。従って、例外に関係の無い命令の実行が遅らされる可能性の

高いRS64IIにおいて、本方式による効果が高い。

81