計算機體系結構中全域性指令排程實現


全域性指令排程的實現是一種稱為跟蹤排程的技術。跟蹤排程最初應用於為耶魯大學實驗性VLIW機器ELI-512開發的Bulldog編譯器(Fisher等人,1984),隨後應用於商用TRACE系列VLIW機器的跟蹤排程編譯器(Colwell等人,1987)。

最近發表的一種新的全域性排程技術是FRGS(有限資源全域性排程),由IBM為VLIW和超標量處理器開發並進行了實驗性實現(Moon和Ebcioglu,1992,Moon等人,1993)。

跟蹤排程

這種技術起源於大多數指令排程技術,即水平微程式碼機器的排程(Fisher,1981)。隨後,跟蹤排程被重新實現為VLIW機器的指令排程(Fisher等人,1984)。

跟蹤排程基於跟蹤的概念。跟蹤是迴圈中的執行路徑,因此跟蹤可以包含條件分支和連線點。如圖(a)所示,它顯示了在流圖中識別的跟蹤。

跟蹤排程器首先識別程式中的跟蹤,然後選擇最可能的跟蹤並將其作為一個實體進行排程。然後它選擇下一個最可能的跟蹤並重復此過程,直到整個程式都被排程,如圖(b) - (d)所示。

在選擇最可能的跟蹤時,編譯器使用動態分支預測以及程式設計師提供的提示。如圖(a)所示,假設跟蹤編號3的機率最高,因此它將首先被排程,如圖(b)所示。

每個跟蹤都被排程,就好像它是一個單獨的基本塊一樣,如圖(c)所示。在這種情況下,排程是全域性的,在排程期間,獨立指令可以跨條件分支或連線點移動。簿記程式碼也將被生成並放置到條件分支和連線點的相應路徑中,如圖(d)所示。

完成跟蹤編號3的排程後,選擇下一個最可能的跟蹤,例如跟蹤編號4,然後排程此跟蹤,依此類推。

FRGS(有限資源全域性排程)

這種全域性排程方法旨在避免現有VLIW編譯器因編譯時間長和程式碼膨脹而導致的嚴重效率問題(Moon和Ebcioglu,1992)。它可以應用於VLIW和超標量處理器,這樣,此方法首先提供超標量程式碼,並在需要時,在第二步中可以透過區域性轉換獲得VLIW程式碼。

有16個通用ALU,其中8個能夠執行記憶體載入/儲存操作。同一單元的ALU和載入/儲存操作是互斥的。有128個通用暫存器和16個條件碼暫存器。

FRGS是一種相當複雜的方法。首先,在每個週期,FRGS選擇所有可用於排程的操作(所謂的貪婪選擇)。軟體視窗用於限制所需的計算量。然後使用簡單的啟發式方法從可用列表中選擇一個操作進行下一個排程,以儘可能地利用硬體資源。

更新於:2021年7月20日

537 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告