天天看點

MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP

MorphCore: An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP

  1. 當今的工作負載需要一個能夠處理高性能單線程代碼和高吞吐量多線程代碼的微體系結構,而消耗的能量并不比需要的多。
  2. MorphCore:一個獨特的方法,用于滿足這些互相沖突的要求。從傳統的高性能out of order核開始,通過最小的改動,以便在必要時将其轉換為高度線程化的按序SMT核
  3. Compared to a 2-way SMT out-of-order core, MorphCore increases performance by 10% and reduces energy-delay-squared product by 22%
  4. 工業上,通常情況下的兩種類型的核
    • large out of order cores(OOO):通過利用ILP,為單線程提供高性能,但是對于多線程而言能效較低,因為他們不必要地浪費能源來開發ILP而不是利用現有的TLP
    • small cores:不會将能量浪費在OOO中,而是以線程性能差為代價提供高并行吞吐量
  5. ACMPs(Asymmetric Chip Multiprocessors):用于處理軟體的多樣性。主要思想:提供一個或者少數的large cores用于高性能的單線程執行,提供多個small cores,用于支援多線程程式的高吞吐量。問題在于:結構在設計時已經固定,無法動态更改
  6. CoreFusion-like architectures:解決ACMPs的限制。提供許多small cores用于提高多線程程式的吞吐量,同時當需要執行單線程程式時,這些small cores能夠動态的融合成一個large core。問題在于:融合的large core相較于傳統的OOO core而言,性能更低,功耗和能耗更大:
    • 在融合的large core的流水線階段之間會有額外的延遲,是以會增加core的延遲
    • 模式切換之間需要重新整理I-cache,并且small core之間緩存的資料需要進行遷移,會增加遷移成本
  7. MorphCore和CoreFusion之間的不同:後者将多個small core融合為一個large OOO core;前者則是以一個large OOO core作為基礎,增加按序SMT的能力,進而能夠利用程式的并行性。是以MorphCore有兩種模式:OOO和InO
    • OOO mode:提供傳統OOO core的單線程性能,性能下降最小
    • InO mode:當TLP可用時,利用變形,将OOO core轉變為高度線程化(并發執行多個線程)的 in-order SMT core。進而允許利用不同線程并發執行掩蓋長延遲,實作比OOO更高的吞吐量。
    • MorphCore因為在切換mode時,不需要進行指令或者資料的遷移,是以代價會很小
  8. MorphCore的兩個關鍵觀點:
    • 高度線程化的in-order core(6-8 way SMT)可以實作和OOO core相同或者更好的性能
    • 一個高度線程化的in-order SMT core可以由一個激進的OOO core的硬體子集建構出來
  9. MorphCore相對于OOO core更節能的原因:它通過利用TLP減少執行時間,并通過在In Order模式下關閉幾個耗電結構(例如,重命名邏輯、無序排程和LDQ)來減少能耗。
  10. energy-delay-squared:

PDP=Powerdelay:衡量每個操作的能量消耗,主要用于衡量系統的能耗

EDP=PDPdelay:由于低能耗解決方案可能隻是性能較低,是以我們需要一個包含能源和性能的名額。

EDS=sqrt(dalay)*Power

  1. A high-level layout of a 2-way SMT OOO core pipeline.(RAT:per-thread Register Alias Table)
    MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
  2. Simultaneous Multi-Threading (SMT) :改善硬體資源的使用率
    • 一個核并發執行多個線程的指令
    • 每個周期,core會從多個ready的線程中選擇一個線程,然後從這個線程中取指令。但是所有線程的指令會共用一個RS,是以core找到可以執行的指令就會變多,進而提高吞吐量
  3. 一個觀察:一個高度多線程in order core可以實作類似于OOO core的指令發射吞吐量。(Out-of-order execution may not be cost effective on processors featuring simultaneous multithreading )
  4. 盡管亂序執行功耗很高,但是因為它能夠提供比按序執行更顯著的性能改進,是以仍是必須的。如果需要提高單線程性能,亂序執行需要保留;如果需要利用軟體并行性,按序SMT應該被使用。
  5. MorphCore Microarchitecture
    • 相對于之前OOO的微體系結構的整體上的變化。
      MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
    • Fetch and Decode Stages

      MorphCore增加了六個SMT contexts。每個context由PC,BHR,RAS組成。OOO模式下有兩個SMT contexts,InO模式下有8個SMT contexts。

      MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
    • Rename stage

      InO模式下,PRF用于存儲多個按序SMT線程的體系結構寄存器。PRF被從邏輯上分成劃分為多個固定大小的分區,每個分區存儲一個線程的體系結構寄存器的狀态。問題:SMT線程的寄存器個數受限,但是目前PRF很多,是以不成問題

      MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
      MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
    • Allocating/Updating the Resources
      • OOO模式下,為重命名之後的指令配置設定ROB,LDQ,SDQ資源
      • InO模式下,ROB被用作存儲指令資訊,ROB被劃分為固定大小的塊,每個塊對應于一個活動線程。同時load指令必須按序完成,是以不需要LDQ。SDQ用于儲存已經送出的Store指令的但未寫回D-cache的資料,SDQ也根據線程個數被均分
    • Insert into the Reservation Station (RS)
      • OOO模式中,RS被多個線程共享,RS根據free list進行entry配置設定
      • InO模式中,RS在多個線程間被劃分為固定大小的分區,每個分區作為環形隊列使用
        MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
        MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
    • Select and Wakeup
      • Out of Order Wakeup (高能耗的廣播)

        OOO Wakeup logic works exactly the same as a traditional out-of-order core。當指令發射時,将其目的寄存器tag和所有RS中的源寄存器tag進行比較,如果比對,則将Match bit設定為1,Delay字段設定為發射指令的執行延遲。Delay字段也會鎖存在Shift字段。當Match bit為1時,Shift每周期向右移動一位,當shift字段為0時,R位會被設定為1。RS的表項等待兩個源操作數都就緒,然後設定Req-OOO Exec line。

      • Out of Order Select (高能耗的廣播)

        監視RS中所有的指令,并選擇設定了Req OOO Exec的最老的指令。輸出為Grant Bit向量,用于訓示下一次會被發射的RS的表項。當指令被發射之後,scheduled bit設定為1,用于訓示已經被排程

      • In Order Wakeup

        為RS表項增加兩個字段:Scheduled和Match(M),同時保留其它字段。當指令發射時,操作與之前OOO一樣。每周期,檢查每個線程的RS中的最老的兩條指令的源操作數的可用性,如果可用,則将M bit設定為1。(沒有廣播操作)

      • In Order Select

        使用一個複雜但是高效的分層工作。首先維護8個In Order的選擇塊和一個其它的塊。每個select block在自己對應的線程中選擇指令,最後一個select block從8個選擇塊的結果中選擇指令。每個in-order隻查找RS分區中的最老的兩條指令。(沒有廣播操作)

        MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
    • Execution and Commit

      大緻和OOO情況下一緻,讀取操作數,執行,bypass廣播結果。但是在In-Order模式中,需要增加額外的PRF-bypass和data buffer,用于存儲和bypass之後已經執行但未送出的指令的結果,是以之前可能會有指令延遲較長尚未執行完。

    • Load/Store Unit
      • 在OOO模式中,load指令在發射後,更新Load Queue的表項,同時搜尋Store Queue擷取最新的值。在store指令發射後,更新并且将資料存儲在Store Queue中,同時搜尋Load Queue以檢查Store-to-Load的順序的正确性
      • 在In-Order模式中,load/store不再推測執行,是以不需要Load Queue,但是load仍舊會搜尋Store Queue
        MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP
    • Recovering from Branch Mispredictions

      在Out of Order模式下,分支錯誤預測觸發恢複機制,該機制将F-RAT恢複到重命名錯誤的分支指令之前的狀态。 在In Order模式下,分支錯誤預測會壓縮RS分區中的指令,ROB分區和來自線程的前端流水線,然後将PC重定向到正确的目标。

  6. Area and Power Overhead of MorphCore
    • SMT ways增加到了8個,是以取指階段和其它部分都會增加硬體,使用McPAT評測,面積增加小于0.5%
    • 增加了InOrder wakeup和select的邏輯,面積認為增加了0.5%,亂序的一半
    • 增加了額外的Bypass和Buffer,面積認為也增加了0.5%
  7. Timing/Frequency Impact of MorphCore
    • InOrder renaming/scheduling/execution logic. :在三個階段需要增加多路選擇器,Rename階段選擇重命名的指令,指令排程階段選擇就緒的指令,PRF-read階段(增加的bypass)。整體估計MorphCore比基本的OOO core慢2.5%
    • 更多的SMT上下文。延長前端的Thread selection邏輯,從二選一變為了八選一。但是之前的延遲可以掩蓋掉前端的線程選擇延遲
    • 雖然In-order模式下,增加了選擇和喚醒邏輯,但是由于相對于亂序的邏輯更加簡單,是以認為不會改變關鍵路徑的延遲
  8. MorphCore Turning Off Structures in In-Order Mode :在按序模式下,OOO的重命名邏輯,排程邏輯和LDQ将不會使用,是以不會有動态功耗,但是仍會有靜态功耗。雖然可以進一步降低靜态動态,但是相對于得到的好處,不值得
  9. MorphCore interaction with OS:作業系統不需要有變化,模式切換由硬體完成
  10. When does MorphCore Switch Modes:根據觀察現有處于激活狀态的線程的數目決定
    • 線程處于激活狀态:不需要等待任何的同步事件
    • 當激活線程個數小于門檻值,切換到OOO;超過門檻值則切換到In-Order
  11. MorphCore Changing Mode from OOO to In-Order :通過執行微代碼例程處理
    • 排幹流水線
    • 将所有線程的體系結構寄存器儲存到一個保留的記憶體區域。為避免這些寫入時出現高速緩存未命中,我們使用完全高速緩存行寫入指令,這些指令在寫入之前不會讀取高速緩存行
    • 關閉Rename unit,OOO wakeup和select邏輯塊,LDQ
    • 将寄存器值填充回每個線程的PRF分區。 這是使用特殊的加載微操作來完成的,這些微操作可以直接尋址PRF條目而無需重命名。
  12. MorphCore Changing Mode from In-Order to OOO :因為In-Order模式下運作的線程比OOO模式更多,是以一些線程需要标記為 inactive/“not running”,除非某些線程已經處于inactive狀态。非活動線程被存儲在記憶體中,直到成為活動線程。為了加載活動線程狀态,MorphCore使用 Active Threads Table的結構存儲指向非活動線程的體系結構狀态的指針,使用線程ID進行索引,每個線程存儲一個8位元組的指針
    • 排空流水線
    • 儲存所有線程的體系結構寄存器,将inactive threads的指針存儲在Active Thread Table中
    • 打開Renaming unit,OOO wakeup和select邏輯塊,LDQ
    • 僅僅将active thread的體系結構寄存器根據之前确定的位置加載進入PRF,更新Speculative-RAT和Permanent-RAT
  13. MorphCore Overheads of Changing the Mode
    • 主要是排幹流水線的開銷
    • 換入換出線程的體系結構寄存器的延遲可以被排空流水線的延遲所掩蓋
  14. 将多個small core合并為一個large core的缺點
    • 融合的Cores的性能是受限的,因為組成的small cores的操作是同步的。此外,融合會增加流水線階段之間的延遲,核與核之間的通信也會産生延遲
    • 模式切換時,由于I-cache重新整理和D-cache之間的資料遷移會産生很高的代價
    • 由于使用中等大小的OOO core作為基礎核,是以在非融合模式或者融合模式下,能效都很低
  15. 異構多核處理器的限制
    • large core和small core的個數在設計階段已經固定
    • 兩種類型的核之間的執行遷移會有代價
  16. SMT的缺點:
    • 當TLP可用時,SMT并不能降低功耗
    • 傳統的SMT會增加核的面積,設計複雜度和功耗

繼續閱讀