什麼是暫存器配置

將程式的變數與中間值,分配到數量有限的CPU暫存器的編譯器處理。以干涉圖著色等方式決定,避免讓同時使用的值共用同一個暫存器。

日文名稱: レジスタ割り当て

「暫存器配置」出現在2領域的4道練習題中(編譯器, 作業系統與硬體等)。

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

練習暫存器配置的題目

在編譯器的暫存器配置中,使用對干涉圖著色(染色)的方法時,圖中的節點與邊所代表的事物,下列組合何者正確?

  1. A節點是指令,邊是指令的執行順序
  2. B節點是暫存器,邊是暫存器之間的連線
  3. C節點是值,邊是同時存活的關係
查看答案與解析

正確答案:C. 節點是值,邊是同時存活的關係

在干涉圖中,以變數或中間值為節點,並用邊連接在某個時間點兩者都還會被使用(存活)的兩個值。以邊相連的值需要同時存在,所以不能放入同一個暫存器。若暫存器有k個,且能以k種顏色著色,使相鄰的節點不會同色,就能把顏色直接對應到暫存器來配置。無法著色時,則把部分的值退避到記憶體(溢出,spill)。它不是表示指令順序或暫存器連線的圖。

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

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

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

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

解析中的「暫存器配置」

出現「暫存器配置」的題目(4題)

  1. 在編譯器的暫存器配置中,使用對干涉圖著色(染色)的方法時,圖中的節點與邊所代表的事物,下列組合何者正確?
  2. 在暫存器配置中發生「溢出(spill)」時,所產生的程式碼會變成怎樣?
  3. 作為暫存器配置的準備而進行的存活區間(liveness)分析,所求的是下列何者?
  4. 關於裝置驅動程式(device driver)的作用,下列何者正確?

相關名詞

暫存器溢出(Spill) 控制流程圖 裝置驅動程式 DMA(直接記憶體存取) 中斷 中間表示法(IR) 共同子運算式消除 向量化 行內展開 抽象語法樹(AST)

前往名詞解釋列表