什麼是暫存器溢出(Spill)

在暫存器配置中,當同時使用的值比暫存器數量多時,把部分值退避到記憶體(堆疊)。退避與讀回的指令增加,因此會變慢。

日文名稱: スピル

「暫存器溢出(Spill)」出現在2領域的3道練習題中(編譯器, GPU程式設計等)。

這個名詞所屬的領域: 編譯器

練習暫存器溢出(Spill)的題目

在暫存器配置中發生「溢出(spill)」時,所產生的程式碼會變成怎樣?

  1. A將值退避到堆疊與讀回的指令增加,容易變慢
  2. B暫存器的數量自動增加,所有值都能放入暫存器
  3. C沒被使用的值被刪除,指令數量變少
查看答案與解析

正確答案:A. 將值退避到堆疊與讀回的指令增加,容易變慢

溢出是指當同時存活的值比暫存器數量還多時,將部分的值放到記憶體(堆疊)中。每次使用該值都需要讀取指令,每次改寫都需要寫入指令,因此指令增加,並因記憶體存取而容易變慢。所以編譯器會把迴圈內等經常使用的值留在暫存器中,挑選不常使用的值來溢出。暫存器的數量由CPU決定而不會增加,這也與刪除不需要的值是不同的事。

解析中的「暫存器溢出(Spill)」

出現「暫存器溢出(Spill)」的題目(3題)

  1. 在暫存器配置中發生「溢出(spill)」時,所產生的程式碼會變成怎樣?
  2. 在編譯器的暫存器配置中,使用對干涉圖著色(染色)的方法時,圖中的節點與邊所代表的事物,下列組合何者正確?
  3. 在GPU核心函式中,若每個執行緒的暫存器使用量過多,下列何者是可能發生的情況?

相關名詞

暫存器配置 GPU 中間表示法(IR) 共同子運算式消除 向量化 行內展開 抽象語法樹(AST) 指令排程 迴圈展開 基本區塊

前往名詞解釋列表