32
2001/5/23 AMO 発発発発 1 Modular Interprocedural Pointer Analysis Using Access Paths: Design, Implementation, and Evaluation Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発発発gotoh

Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

Embed Size (px)

DESCRIPTION

Modular Interprocedural Pointer Analysis Using Access Paths: Design, Implementation, and Evaluation. Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh. Pointer analysis とは?. プログラム中の各ポインタ変数がどのメモリ領域へのポインタを保持する可能性があるか. Pointer analysis の応用. 各種メモリまわりの最適化 - PowerPoint PPT Presentation

Citation preview

Page 1: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 1

Modular Interprocedural Pointer Analysis Using Access Paths: Design, Implementation, and

EvaluationBen-Chung Cheng and Wen-mei W.

Hwuin proceedings of PLDI2000

発表者: gotoh

Page 2: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 2

Pointer analysis とは?• プログラム中の各ポインタ変数がどの

メモリ領域へのポインタを保持する可能性があるか

Page 3: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 3

Pointer analysis の応用• 各種メモリまわりの最適化

– redundant load/store elimination– loop-invariant location promotion– load/store schedulingetc.

上記に限らず何らかの最適化を行なう際に同様の手法を用いることになる(ことが多い ) ので、勉強することは非

常に重要

Page 4: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 4

紹介論文の売り• Cの全ての feature を扱いつつ、大き

なプログラム (200,000 行 ) に対しても適用可能なアルゴリズム※ flow-insensitive だが context-

sensitive

Page 5: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 5

今後の流れ• 解析方針• 解析方法

– Intraprocedural analysis– Interprocedural analysis

• 実験結果

Page 6: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 6

解析の方針• Flow sensitive or flow insensitive• Context sensitive or context

insensitive• Whole-program or modular analysis• Storage- or path-based representation• Partial or complete language features

Page 7: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 7

Flow sensitivity

• ポインタ代入の文の順番を考慮するか– flow sensitive … する

• より細かい解析が可能だが、重い– flow insensitive … しない

• おおざっぱな解析だが、軽い※ flow sensitive でもあまり効果ないとい

う指摘 [M.Hind and A.Pioli 1998]

flow insensitive を採用

Page 8: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 8

Context sensitivity

• 呼び出し先が一緒でも呼び出し元が異なる場合を区別するか– context sensitive … する– context insensitive … しない※ 区別したところでいくつかのベンチマー

クでは効果は出ていない [E.Ruf 1995]

context sensitive だが、コストが低いように実装

Page 9: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 9

Whole-program / modular analysis

• プログラム全体が与えられたとして全部を一度に解析するか、関数単位など部分毎に解析するか– whole-program

• リソースおよび時間のコストが大きい– modular

• コストは低いが無駄な解析をさけるための処理必要

Page 10: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 10

Storage- / path-based representation

• メモリロケーションの表現方法– storage-based … 物理メモリアドレス

に対応した変数名で表現※ 曖昧さをさけるために同じ場所に複数の名前

をつけないようにする必要があることも…(大変)

– path-based … 最初にどの変数に指されていたかで表現

※ 同じ場所に対する2つ以上の表現あり

Page 11: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 11

解析の流れPhase I'

Analyze local statements(flow-insensitive)

Phase OBuild accurate

call graph(context-insensitive)

Phase I''Propagete summary

transfer functions(context-insensitive)

Phase II'Propagete concrete

function names

Phase II''Propagate concrete values

Phase IIIDetermine parameter aliases

intraprocedural

interprocedural

Page 12: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 12

Intraprocedural Analysis ( 図 )

typedef struct S { int *key; struct S *next;} S;

fn3(S *r, S *s){ r->next = s;}

r*.4_7

r

s

r*

s*

access path

summary transfer function(point-to relation グラフ )

ソースプログラム

Page 13: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 13

Intraprocedural Analysis ( 文 )

• 入力:関数のソース– グローバル変数、引数、関数呼び出しの返

値は全て未初期化と仮定– flow-insensitive → 命令の順番は関係な

い• 出力:どの変数(ポインタ)がどの変

数(領域)を指す(可能性がある)かを表すグラフ、ほか

Page 14: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 14

Access Path

• v( fd | d )*( f |ε)– v: 変数名– f: フィールド名

.< 開始オフセット >_< 終了オフセット > の形– d: dereference ( Cの `*` オペレータ)

(ex)

r ->nextr ->next->key

r*.4_7r*.4_7*.0_3

※ 計算方法は別紙の図1

プログラム中の表現 access path

フィールド名のかわりに開始・終了オフセットを

用いることで、 union にも対応

配列は要素の区別なし

Page 15: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 15

Interprocedural Analysis

1. 関数のコールグラフの作成 … 以下の2ステップの反復

• main() からトップダウンに作成• summary transfer function をボトム

アップに伝播、コールグラフの更新グローバル変数、戻り値、実・仮引数の対応

2. (potential) aliasing の解析※ 本論文では詳細説明はない

Page 16: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 16

Strongly Connected

Components-Directed Acyclic

Graph強連結成分有向非

環状グラフ?

コールグラフの作成• main() から深さ優先でコールグラフ作

成•生成したグラフを SCC-DAG に変換• SCC-DAG において summary transfer

function を topological 順序で伝播• 関数名を今度は top-down で伝播以上の手順をグラフが収束するまで反復

– 関数の間接呼び出しがない場合は1回で収束

Page 17: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 17

summary transfer function 伝播

1. 各 SCC 内に複数の関数が含まれている場合、 SCC の中だけで収束するまで伝播

2. SCC 間で伝播

SCC

2. SCC 間での伝播1. SCC内での伝播

Page 18: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 18

動的に確保された領域の扱い

※ malloc() のみ扱う• 領域名…一時変数名のかわりに

malloc_1(), malloc_2() ... のような名前– 数字は関数内で  unique

•動的領域が caller に返されたら?– 他の動的領域と名前が重ならないの?

Page 19: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 19

Extended Access Path

• An EAP can be considered as a reverse-engineered access path obtrained from DFS and indicates a potential way for the object to be accessed from a parameter or a global variable.

Page 20: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 20

EAP の例(EAP を求めるアルゴリズムは別紙)

fn5(){ int *p1, *p2, *p3; my(&p1,&p2,&p3); *p1=1; *p2=2; *p3=3;}my(int**q1,int**q2,int**q3){ *q1=malloc(4); *q2=malloc(4); *q3=*q2;}

&p1 p1 p1*

&p2 p2 p2*

&p3 p3 p3*

q1 q1* malloc_1()*

q3 q3*

q2 q2* malloc_2()*

malloc_1()

malloc_2()

EAP=q1**

EAP=q2**

Page 21: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 21

transfer function 伝播例&p1 p1 p1*

&p2 p2 p2*

&p3 p3 p3*

q1 q1* q1**

q3 q3*

q2 q2* q2**

malloc_1()

malloc_2()

&p1 p1 p1*

&p2 p2 p2*

&p3 p3

caller

callee

q1 → &p1q2 → &p2

Page 22: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 22

実験• PentiumII-450MHz, 256MB メモリ ,

Linux(RedHat6.0)• 実験内容

– Analysis cost– Accuracy Measurement– Performance Improvements

Page 23: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 23

Analysis CostsBenchmark

008.espresso023.eqntott026.compress072.sc085.ccl099.go124.m88ksim126.gcc129.compress130.li132.ijpeg134.perl147.vortex

Intra. Time(sec)

5.660.750.122.42

33.612.822.36

76.680.092.337.34

14.4315.08

Time(sec)20.200.990.483.15

277.670.213.54

520.850.10

149.5999.16

468.33166.90

Inter.Mem(MB)

14.262.811.936.34

79.228.138.09

238.001.26

30.5829.9751.1474.80

Total Time(sec)25.861.540.605.57

311.283.035.90

597.530.19

151.92106.50482.76181.98

•プログラムサイズ•複雑な構造体•キャスト

Page 24: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 24

Accuracy (1/3)

• 2つの基準– 各ポインタの指すターゲットがいくつか?

• 1に近いほど良い– 各ターゲットはいくつのポインタから参照?

• 1に近いほど良い

※ 片方だけだと正しい判定とはいえない– 全てのポインタが一つのターゲットを参照

Page 25: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 25

Accuracy (2/3)Benchmark008.espresso023.eqntott026.compress072.sc085.ccl099.go124.m88ksim126.gcc129.compress130.li132.ijpeg134.perl147.vortex

13071310

34662

9231312622

1614737

1576389728736768

2436115

146

16590

493679

2243766691121

34001

13384

03

7050

50135340

41

≧424706

1890

15451

04

23435

5

avg.1.161.311.081.121.261.001.151.311.051.191.231.621.03

11341165

21291

2527159562

448136

588316612054848

2329

306

88617

2488

10929

239829477671

3253

312

36607

535

7950

58201206214

≧4282

372

40980

2116

18520

126144543347

avg.1.761.771.521.622.011.461.292.001.201.731.382.041.35

target/pointer pointer/target

Page 26: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 26

Accuracy (3/3)

flow-sensitive にすると解析精度が増す部分→ named_acyclic

たかだか 10%程度

Page 27: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 27

Performance (1/2)

• base ... 全てのメモリアクセス、関数の副作用は曖昧

• std ... 関数内解析のみ• adv ... 関数間解析も利用

Page 28: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 28

Performance (2/2)

Page 29: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 29

関連研究 (1/3)

• [Landi et al.]– flow/context sensitive– 対象言語は C のサブセット

• [Emami et al.]– flow sensitive– ヒープオブジェクトの扱いがクリアでない– C のサブセット、関数ポインタも含む

Page 30: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 30

関連研究 (2/3)

• [Choi et al.]– 実装・実験が明らかでない

• [Andersen]– 最悪で O(n3) なアルゴリズム– [Fahndrich et al.] によって、大きいプログラ

ムでも十分実用的になりうることが示された?• [Shapiro et al. ]

– [Andersen] と [Steensgaard] の混在した方法

Page 31: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 31

関連研究 (3/3)

• [Hasti et al.]– SSA-form により、解析精度を反復進化?– 実験結果なし

• [Zhang et al.] [Stocks et al.]– さまざまなアルゴリズムを切り替えて使用

紹介論文… C の全性質に対応し 200000行以上のコードを解析できる最初の研究

Page 32: Ben-Chung Cheng and Wen-mei W. Hwu in proceedings of PLDI2000 発表者: gotoh

2001/5/23 AMO 発表資料 32

まとめ• 効率的な C言語用の modular inter-

procedural pointer analysis algorithm を提案、実装した– context-sensitive なため、間接的な関数

呼び出しを多く含むプログラムに特に威力を発揮

– 実用的な効率