顯式并發指令運算
編輯顯示式并發指令運算 (EPIC) 是 HP-Intel 聯盟于 1997 年創造的一個術語,用于描述研究人員自 1980 年代初以來一直在研究的計算范式。 這種范式也稱為獨立架構。 它是 Intel 和 HP 開發 Intel Itanium 架構的基礎,HP 后來斷言 EPIC 只是 Itanium 架構的舊稱。 EPIC 允許微處理器通過使用編譯器并行執行軟件指令,而不是使用復雜的片上電路來控制并行指令執行。 這是為了允許簡單的性能擴展,而無需訴諸更高的時鐘頻率。
植根于 VLIW
編輯到 1989 年,HP 的研究人員認識到精簡指令集計算機 (RISC) 架構在每個周期一條指令時已達到極限。 他們開始研究一種新架構,后來命名為 EPIC。 研究的基礎是 VLIW,其中在每條指令中編碼多個操作,然后由多個執行單元處理。
EPIC 的一個目標是將指令調度的復雜性從 CPU 硬件轉移到軟件編譯器,軟件編譯器可以靜態地進行指令調度(借助跟蹤反饋信息)。 這消除了 CPU 中復雜調度電路的需要,從而釋放空間和功率用于其他功能,包括額外的執行資源。 一個同樣重要的目標是通過使用編譯器查找和利用并行執行的額外機會來進一步利用指令級并行性 (ILP)。
VLIW(至少是原始形式)有幾個缺點使其無法成為主流:
- VLIW 指令集在實現之間不向后兼容。 當構建更廣泛的實現(更多執行單元)時,更廣泛機器的指令集不會向后兼容舊的、更窄的實現。
- 來自包含 CPU 緩存和 DRAM 的內存層次結構的加載響應沒有確定性延遲。 這使得編譯器對加載指令的靜態調度變得非常困難。
EPIC 架構從 VLIW 架構演變而來,但保留了超標量架構的許多概念。
超越 VLIW
編輯EPIC 架構增加了幾個特性來解決 VLIW 的不足:
- 每組多個軟件指令稱為一個包。 每個包都有一個停止位,指示后續包是否依賴于這組操作。 有了這個功能,未來的實現可以構建為并行發布多個捆綁包。 依賴信息是由編譯器計算出來的,所以硬件不需要進行操作數依賴檢查。
- 軟件預取指令用作一種數據預取。 這種預取增加了加載緩存命中的機會,并且可以指示緩存的各個級別所需的時間局部性程度。
- 推測性加載指令用于在知道數據是否會被使用(繞過控制依賴性)或是否會在使用前被修改(繞過數據依賴性)之前推測性地加載數據。
- 檢查加載指令通過檢查推測加載是否依賴于以后的存儲來幫助推測加載,因此必須重新加載。
EPIC 架構還包括一系列用于提高 ILP 的架構概念:
- 預測執行用于減少分支的出現并增加指令的推測執行。 在此功能中,分支條件被轉換為謂詞寄存器,用于從未采用的分支一側終止執行指令的結果。
- 延遲異常,在通用寄存器中使用一個 not a thing 位,允許推測執行過去可能的異常。
- 非常大的架構寄存器文件避免了寄存器重命名的需要。
- 多路分支指令通過將許多備選分支組合成一個包來改進分支預測。
Itanium 架構還添加了旋轉寄存器文件,這是一種對軟件流水線很有用的工具,因為它避免了手動展開和重命名寄存器。
其他研發
編輯對 EPIC 架構的其他研究與 Itanium 架構的開發沒有直接關系:
- 由 Wen-mei Hwu 領導的伊利諾伊大學厄巴納-香檳分校的 IMPACT 項目是關于這一主題的許多有影響力研究的來源。
- HP 實驗室的 PlayDoh 架構是另一個主要研究項目。
- Gelato 是一個開源開發社區,學術和商業研究人員在其中致力于為運行在
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/196059/