軟體流水線的實現方式有哪些?


軟體流水線是一種編譯時排程技術,它重疊連續的迴圈迭代以揭示操作級並行性。軟體流水線演算法開發的一個必要問題是如何處理包含條件分支的迴圈。

條件分支透過將一些可能的執行路徑引入排程範圍,增加了複雜性並降低了軟體流水線演算法的效能。軟體流水線是透過基於展開的技術或模數排程來實現的,如圖所示。

**基於展開的技術**的基本思想非常簡單——將迴圈展開多次,並以最並行的方式排列展開的程式碼。然後在排列的程式碼中尋找重複的模式,並重新滾動重複的模式,建立一個新的迴圈。這個新迴圈以及啟動(序言)和結束(結語)程式碼部分,表示軟體流水線的指令排程。

它可以透過其代表之一 URPR(展開、流水線和重新滾動)來展示展開方法,如圖所示。

如圖所示,這種展開技術的變體首先排程原始迴圈體,然後將其展開 k 次,將其排列以進行最並行執行,並搜尋重複模式。最後,此模式被重新滾動,從而產生新的主體。排程的結果是在序言程式碼之前的新迴圈體,並在結語程式碼部分之後。

軟體流水線的另一種主要方法是模數排程。該技術最初由 Rau 和 Glaeser 於 1981 年提出,並在一些 VLIW 機器的編譯器中實現,例如 FPS-164(Touzeau,1984)、CYDRA-5(Rau 等人,1989)和 iWARP(Lam,1988)。

模數排程基於一種列表排程型別。通常,此方法具有迭代特性,包括三個步驟:

  • 首先,對新迴圈體所需的最小長度進行猜測,在這些方法中通常稱為最小啟動間隔。

  • 接下來,嘗試為該中斷安排計劃,同時考慮資訊和資源依賴關係。

  • 如果嘗試的排程不可行,則增加新迴圈體的長度,併為擴充套件的間隔準備新的排程。

名稱“模數排程”強調了關於資料和資源依賴關係的排程的重複特性。關於已提出或已實現演算法的描述可以在 Rau 和 Glaser(1981)、Touzeau(1984)和 Lam(1988)中找到。

更新時間: 2021-07-20

216 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.