JF 9-4
Hierarchical Program Paths
Chunbai Yang,
Shangru Wi and
W. K. Chan
概要: 実行された命令の完全な
トレースを効率よく保存する。
ICSE勉強会   2017年8月24日
紹介者: 新山 祐介 (東工大, 権藤研)
JF 9-4

やったこと

JF 9-4

基本的なアイデア

ほとんどのプログラムでは同じ部分が何度も実行される。

1 2 3 4 1 2 1 2 3 1 2 1 2
JF 9-4

基本的なアイデア

共通する部分を DAG としてまとめる → 高圧縮。

1 2 3 4 1 2 1 2 3 1 2

階層構造を反映 = "Hierarchical Program Paths"

JF 9-4

処理の流れ

  1. プログラムを、呼び出しを含まない直列な部分
    (BL path) に分割し、実行時にそのIDを記録する。
  2. 呼び出しを子ノードとして記録する (HPPTree)。
  3. 木構造をまとめて DAG にする (HPPDAG)。
Program Test Case HPPTree HPPDAG Phase 1 Phase 2
Source: 本文 Fig. 1 (pp. 27:3)
JF 9-4

BL Path の例

"1,2,3,4,1,2,3,5,
  2,6,8,5,2,6,7,9,8,…"
BL path
id1"1,2,3,4,5"
id2"2,6,7,8"
id3"1,2,3,5"
id4"2,6,8"
id5"9"
......
A EXIT B EXIT 1 2 3 4 5 6 7 8 9 return call return call
Source: 本文 Fig. 2 (pp. 27:6)
JF 9-4

HPPTree の例

call A "1,2,3,4,5" call A "2,6,7,8" call B "1,2,3,5" "2,6,8" "9"
Source: 本文 Fig. 3 (pp. 27:7) を改変
JF 9-4

エッジケースの処理

JF 9-4

評価

名前コード量実行時間 (秒)トレース量 (GB)
ネイティブBLPTHPPTree BLPTHPPTreeHPPDAG
- SPLASH2 -
ocean-ncp733 12.6110.687.7 5.54.00.02
raytrace1,133 12.8311.6305.7 16.113.70.10
- SPECint 2006 -
400.perlbench17,058 5.762.255.2 4.73.90.04
403.gcc164,315 3.251.244.7 3.72.90.30
445.gobmk27,726 8.392.682.5 6.95.91.45
464.h264ref9,109 34.1435.3407.3 32.428.72.29
Source: 本文 Table I, III および IV (pp. 27:24-) を統合
JF 9-4

まとめ

個人的な感想