レ ジスタ 割付け 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
© Copyright 2024 Paperzz