热门问题
时间线
聊天
视角
顯式並行指令運算
来自维基百科,自由的百科全书
Remove ads
顯式並列指令運算(英語:Explicitly Parallel Instruction Computing,縮寫:EPIC)是一種指令集架構,是1997年由惠普-英特爾安騰聯盟(Itanium)創造的一個術語[1] ,用來描述一個自1980年代早期以來研究人員一直在探索的計算範式。[2] 這個範式也被稱為「獨立」(Independence)架構。它是英特爾和惠普開發英特爾Itanium架構的基礎,[3] 而惠普後來聲稱「EPIC」只是Itanium架構的一個舊術語。[4] EPIC允許微處理器通過使用編譯器而不是複雜的晶片內電路來控制並列指令執行,從而並列執行軟體指令。這旨在實現簡單的效能擴充,而無需依賴更高的時脈頻率。
Remove ads
原理
其指令中有3位是用來指示上一條運算指令是不是與下一條指令有相關性,是不是要等上一條指令執行完畢後才能執行下一條,如果沒有相關性,則兩條指令可同時由不同的CPU節點來處理,這樣的方式大大提高了CPU並列運算的效率。
實現
EPIC成為IA-64架構的基礎(IA代表Intel Architecture,即英特爾架構,與IA-32對應),這是英特爾與惠普共同開發的純64位元微處理器。英特爾的安騰(Itanium)系統處理器採用了這種架構。
基於VLIW的根源
到1989年,惠普的研究人員認識到精簡指令集電腦(RISC)架構在每個周期只能執行一條指令,達到了極限。[需要解釋]他們開始研究一種新架構,後來被命名為EPIC。[3]研究的基礎是VLIW,其中每條指令中編碼了多個操作,然後由多個執行單元處理。
EPIC的一個目標是將指令排程的複雜性從CPU硬體轉移到軟體編譯器,這樣編譯器可以靜態地進行指令排程(藉助跟蹤回饋資訊)。這消除了CPU中複雜排程電路的需求,從而為其他功能釋放了空間和功率,包括額外的執行資源。另一個同樣重要的目標是通過使用編譯器尋找和利用額外的並列執行機會,進一步利用指令級並列性(ILP)。
VLIW(至少原始形式)有幾個缺點,使其未能成為主流:
- VLIW指令集在不同實現之間不向下相容。當構建更寬的實現(更多執行單元)時,寬機器的指令集與較舊的、較窄的實現不向下相容。
- 從包括CPU快取和DRAM的主記憶體層次載入回應沒有確定的延遲。這使得編譯器對載入指令的靜態排程變得非常困難。
EPIC架構源於VLIW架構,但保留了許多超純量架構的概念。
超越VLIW
EPIC架構增加了幾個特性以克服VLIW的不足:
- 每組多個軟體指令稱為一個捆綁包。每個捆綁包都有一個停止位,指示該操作集是否被後續捆綁包依賴。通過這種能力,未來的實現可以並列發出多個捆綁包。依賴資訊由編譯器計算,因此硬體不必執行運算元依賴檢查。
- 軟體預取指令作為一種資料預取使用。此預取增加了載入時快取命中率的機會,並可以指示在各級快取中所需的時間局部性程度。
- 投機載入指令用於在尚不確定資料是否會被使用(繞過控制依賴)或在使用之前是否會被修改(繞過資料依賴)時,投機性地載入資料。
- 檢查負載指令通過檢查一個投機負載是否依賴於後續儲存,從而幫助投機負載,因此必須重新載入。
EPIC架構還包括一系列建築概念,以增加ILP:
- 基於條件的執行用於減少分支的發生並增加指令的推測執行。在此功能中,分支條件被轉換為謂詞暫存器,這些暫存器用於消除未被採取的分支一側已執行指令的結果。
- 延遲異常,使用通用暫存器中的一個非事物位,允許在可能的異常之後進行推測性執行。
- 非常大的架構暫存器檔案避免了暫存器重新命名的需求。
- 多路分支指令通過將多個替代分支組合成一個捆綁來提高分支預測。
Itanium架構還增加了旋轉暫存器檔案,這是一種對軟體管線有用的工具,因為它避免了手動展開和重新命名暫存器的需要。
Remove ads
其他研發
還有其他對EPIC架構的研究,這些研究與Itanium架構的發展沒有直接關係:
- 伊利諾伊大學厄本那-香檳分校的IMPACT專案,由Wen-mei Hwu領導,是該主題上許多有影響力研究的來源。
- HP-labs的PlayDoh架構是另一個重要的研究專案。
- Gelato是一個開源開發社群,學術和商業研究人員在其中合作開發更有效的編譯器,以支援在Itanium伺服器上執行的Linux應用程式。
另見
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads