寄存器分配图着色_寄存器分配
寄存器分配,
是通過將程序變量盡可能地分配到寄存器,從而提高程序
執行速度的一種方法。寄存器是編譯器優化中最為重要的問題之一
(好
的寄存器分配能夠提高程序執行速度超過
250%
);也是編譯器理論中
最熱點的研究領域之一(研究界已經提出來大量寄存器分配相關的算
法)。
1.
圖著色
(graph?coloring)
方法是解決寄存器分配問題最常用的
方法。
利用相交圖(
interference
graph
)來表示程序變量的生命期
是否相交,將寄存器分配給變量的問題,
可以近似地看成是給相交圖著
色:相交圖中,相交的節點不能著同一顏色;每一種顏色對應一個寄存
器。
Chaitin
等人最早提出了基于圖著色的寄存器分配方法其著色思
路采用了
Kempe
的著色方法,即,任意一個鄰居節點數目少于
k
的節
點,都能夠被
k
著色。判斷一個圖是否能夠被
k(k>=3)
種顏色著色,
即
k
著色問題,被
Karp
證明是一個
NP-complete
問題。
但是,寄存器分配不僅僅是圖著色的問題。當寄存器數目不足以
分配某些變量時,
就必須將這些變量溢出到內存中,
該過程成為
spill
。
最小化溢出代價的問題,
也是一個
NP-complete
問題。
如果簡化該問
題
——
假設所有溢出代價相等,那么最小化溢出代價的問題,等價于
k
著色問題,仍然是
NP-complete
問題。
此外,如果兩個變量的生命期僅僅因為出現在同一個拷貝指令中
而相鄰,那么,通過將這兩個變量分配到同一個寄存器,就可以消除該
總結
以上是生活随笔為你收集整理的寄存器分配图着色_寄存器分配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会玩app怎么玩
- 下一篇: 云桌面 瘦终端_云桌面选择云终端还是瘦客