热门问题
时间线
聊天
视角
顯式並行指令運算
来自维基百科,自由的百科全书
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