6 レジスタ割付け

レ ジスタ 割付け
6
• コ ン パイ ラ の各フ ェ ーズは, 一時的に 生成さ れる 値を 保持する た めに
無限個のレ ジス タ が存在し , move命令はコ ス ト がかから な いと 仮定し
て いる .
レ ジ ス タ 割付け : 多く のテ ン ポラ リ を 少数のマ シ ン レ ジス タ に 割り 当て ,
moveが除去で き る よ う に moveの転送元と 転送先を 同じ レ ジス タ に
割り 当て る .
6.1
干渉グラ フ
• 干渉グ ラ フ (interference graph) を 用いる と , 2 つの変数が同時に 生き
て いる かど う か簡単に 確認でき る .
• 干渉グラ フ は, 制御フ ロ ーグラ フ と データ フ ロ ーグラ フ を 検査する こ
と で得ら れる .
干渉グ ラ フ : 各節点は, 一時的に 生成さ れた 値を 表す. 各辺 (t1 , t2 ) は, 同
じ レ ジス タ に 割り 当て る こ と ができ な い( 同時に 生き て いる ) テ ン ポ
ラ リ の組みを 示し て いる .
彩色 : 干渉グラ フ を , でき る だけ 少な い色を 用いて 彩色す る (color) .
• こ こ で言う 「 色」 と は, レ ジス タ に 相当する .
• 目的マ シ ン が K 個のレ ジス タ を も ち , グラ フ を K 彩色( グラ フ
を K 色で塗り 分け る ) でき る な ら , そ の彩色は, そ の干渉グラ フ
に 対し て 妥当な レ ジス タ 割当て であ る .
• K 彩色が存在し な いな ら ば, 変数やテ ン ポラ リ のいく つかを レ ジ
ス タ の代わり に メ モリ に 保持し て おかな け ればな ら な い. こ れは,
ス ピ ル (spill) と 呼ばれる .
6.2
単純化によ る 彩色
• レ ジス タ 割付け は, NP 完全問題であ る . グラ フ 彩色も NP 完全であ
る . 幸いに よ い結果が得ら れる 線形時間の近似ア ルゴ リ ズム が存在す
る . そ の主な フ ェ ーズは, 作成 (Build), 単純化 (Simplify), ス ピ ル
( Spill), 選択 (Select) であ る .
61
6.2.1
単純化
1. グラ フ G が, K よ り 少な い数の節点と だ け 隣接し て いる 節点 m を 含
んでいる と する . こ こ で K は, マ シン のレ ジス タ の数であ る .
2. G′ を , m を 取り 除いて 得ら れる グラ フ G − {m} であ る と する . G′ が
彩色でき る な ら , G も 彩色でき る . な ぜな ら m が彩色済みのグラ フ G′
に 加え ら れる と , m に は, 高々 K − 1 色し か隣接し て いな いので, 常
に m に 対し て 自由な 色を 見付け る こ と ができ る から であ る .
• ス タ ッ ク に 基づいた( あ る いは再帰的な ) 彩色のア ルゴ リ ズム が自然
に 得ら れる . すな わち , K よ り 少な い隣接度数し かな い節点を 繰り 返
し 取り 除いて ( そ し て ス タ ッ ク に プッ シュ し て ) いけ ばよ い.
• こ のよ う な 単純化に よ り , 他の節点の隣接度数も 低減する ので, 更に
多く の単純化の機会が得ら れる .
6.2.2
スピル
• 単純化を 進めて いく 途中で、 グラ フ G が過剰度数 (significant degree)
の節点, すな わち 度数 ≥ K である 節点し か含ま な いと する . そ のと き
単純化 (simplify) の発見的手法は失敗し , ス ピ ルする た めに いずれか
の節点に 印を 付け る .
⇒ すな わち ,( プロ グラ ム 中のテン ポラ リ 変数を 表す) いずれかの節点
を グラ フ から 選択し , プロ グラ ム 実行中に そ れを レ ジス タ でな く
メ モリ 中に 表現する こ と を 決定する .
• ス ピ ルさ れた 節点はグラ フ に 残っ て いる 他のいずれの節点と も 干渉し
な い.
⇒ そ の節点を 取り 除き , ス タ ッ ク に 積むこ と ができ る . そ し て 単純化
の過程を 続け る こ と ができ る .
6.2.3
選択
グラ フ の節点に 色を 割り 当て る .
• 空のグラ フ で始めて , ス タ ッ ク の一番上から 取り 出し た 節点を 繰り 返
し 加え る こ と で, 元のグラ フ を 再構成する .
62
• 単純化フ ェ ーズで節点を 取り 除く た めの前提が, そ の節点を 常に , グ
ラ フ に 残っ て いる 節点が彩色に 成功する よ う な 色に 割り 当て ら れる と
いう こ と であ っ た ので, 節点を グラ フ に 加え る 際に は, そ のた めの色
が必ず存在する .
• ス タ ッ ク に プッ シュ さ れた 潜在的スピ ル (potential spill) 節 n がポッ プ
さ れる と き , 彩色可能であ る 保証はな い. グラ フ 中ので隣接し た 節点
は, K 個の異な っ た 色で既に 彩色さ れて いる かも し れな いのだ. こ の
場合実ス ピ ル (actual spill) 節であ る こ と が分かる . そ こ で色の割り 当
て はせずに , 他の実ス ピ ル節を 見付け る た めに 選択フ ェ ーズを 続け る .
⇒ 隣接し た 節点の中に は, 同じ 色のも のが存在する 場合があ る ので,
K よ り 少な い色し か存在し な いかも し れな い. そ のと き , n を 彩
色する こ と ができ る ので, 実ス ピ ル節に はな ら な い. こ の手法は,
楽観的彩色 (optimistic coloring) と し て 知ら れて いる .
6.2.4
やり 直し
• 選択フ ェ ーズがあ る 節点を 彩色でき な いな ら , そ れら を 使用する ま え
に メ モリ から 取り 出し , 各定義の後で再度格納する よ う に プロ グラ ム
を 書き 換え る .
⇒ ス ピ ルさ れたテン ポラ リ は, ごく 短い生存期間を も つ新し い複数の
テ ン ポラ リ に 変わる .
• 書き 換え ら れた プロ グラ ム 内の新し いテ ン ポラ リ は他のテ ン ポラ リ と
干渉する .
⇒ ア ルゴ リ ズム を , 書き 換え ら れた プロ グラ ム 上で繰り 返す.
• 単純化がス ピ ルを 生じ ずに 成功する ま で反復する . 実践的に は, 1, 2
回の反復で十分な 場合がほと んど .
6.2.5
例
グラ フ 35 に , 単純な プロ グラ ム の干渉を 示す。 節点は, そ の節点が表すテン
ポラ リ でラ ベル付け さ れて おり , 2 つの節点が同時に 生き て いる な ら ば, そ
れら の間に 辺が存在する . た と え ば, 節点 d, k, j は, ブロ ッ ク の終り で同
時に 生き て いる のですべて 接続さ れて いる . マ シン に 利用可能な レ ジス タ が
63
live-in: k j
g := mem[j+12]
h := k - 1
f := g * h
e := mem[j+8]
m := mem[j+16]
b := mem[f]
c := e + 8
d := c
k := m + 4
j := b
live-out: d k j
f
e
j
b
k
m
d
c
h
g
Figure 35: グラ フ : プロ グラ ム の干渉グラ フ. 点線は, 干渉辺ではな く 転送
命令を 示し て いる .
4 つ存在する と 仮定する と , g, h, c, f は, そ れぞれ 4 つ未満の隣接節し か
も た な いので, 単純化フ ェ ーズは, こ れら がワ ーキ ン グセ ッ ト に 入っ て る 状
態から 開始する . グラ フ の残り の部分が彩色でき る のであ れば, こ れら の節
点に 対し て 常に 色を 見付け る こ と ができ る . ア ルゴ リ ズム が h と g と そ れら
の辺を 取り 除く こ と に よ っ て 開始する のであ れば, 節点 k が除去の候補に な
り , ワ ーク リ ス ト に 加え る こ と ができ る . 節点 g, h, k を 取り 除いた後に は,
グラ フ 6.2.5 のよ う に な る 。 節点を 取り 除く こ と が可能な 順序ごと に , こ の
やり 方で継続し た 様子を 図 37a に 示すス タ ッ ク に よ っ て 表現する 。 こ こ でス
タ ッ ク は, 上方へ成長する .
節点はスタ ッ ク から ポッ プさ れて , 元のグラ フ が再構築さ れる と 同時に彩
色さ れる . m から 始める が, こ の時点のグラ フ は単独節だけ な ので任意の色
を 選択でき る . グラ フ に 置かれる 次の節点は c であ る . 唯一の制約は, m か
ら c への辺が存在する ので m と 異な る 色が与え ら れる と いう こ と だけ である .
再構築さ れる 元のプロ グラ ム に 対する 色の可能な 割当て を 図 37b に 示す。
64
f
e
j
b
k
m
d
c
h
g
Figure 36: グラ フ : h, g, k を 除去し た あ と .
f2
e4
j3
m
c
b
f
e
j
d
k
h
g
1
3
2
2
4
3
4
1
2
4
(a) ス タ ッ ク
(b) 割当て
b2
k1
d4
c3
h2
g4
Figure 37: 単純化ス タ ッ ク と 可能な 彩色.
65
m1