1. 程式人生 > >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

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=Power*delay:衡量每個操作的能量消耗,主要用於衡量系統的能耗 EDP=PDP*delay:由於低能耗解決方案可能只是效能較低,因此我們需要一個包含能源和效能的指標。 EDS=sqrt(dalay)*Power

  11. A high-level layout of a 2-way SMT OOO core pipeline.(RAT:per-thread Register Alias Table) 這裡寫圖片描述

  12. Simultaneous Multi-Threading (SMT) :改善硬體資源的利用率

    • 一個核併發執行多個執行緒的指令
    • 每個週期,core會從多個ready的執行緒中選擇一個執行緒,然後從這個執行緒中取指令。但是所有執行緒的指令會共用一個RS,因此core找到可以執行的指令就會變多,從而提高吞吐量
  13. 一個觀察:一個高度多執行緒in order core可以實現類似於OOO core的指令發射吞吐量。(Out-of-order execution may not be cost effective on processors featuring simultaneous multithreading )

  14. 儘管亂序執行功耗很高,但是因為它能夠提供比按序執行更顯著的效能改進,因此仍是必須的。如果需要提高單執行緒效能,亂序執行需要保留;如果需要利用軟體並行性,按序SMT應該被使用。

  15. MorphCore Microarchitecture

    • 相對於之前OOO的微體系結構的整體上的變化。 這裡寫圖片描述

    • Fetch and Decode Stages

      MorphCore增加了六個SMT contexts。每個context由PC,BHR,RAS組成。OOO模式下有兩個SMT contexts,InO模式下有8個SMT contexts。 這裡寫圖片描述

    • Rename stage

      InO模式下,PRF用於儲存多個按序SMT執行緒的體系結構暫存器。PRF被從邏輯上分成劃分為多個固定大小的分割槽,每個分割槽儲存一個執行緒的體系結構暫存器的狀態。問題:SMT執行緒的暫存器個數受限,但是目前PRF很多,因此不成問題 這裡寫圖片描述 這裡寫圖片描述

    • 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在多個執行緒間被劃分為固定大小的分割槽,每個分割槽作為環形佇列使用 這裡寫圖片描述 這裡寫圖片描述
    • 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分割槽中的最老的兩條指令。(沒有廣播操作) 這裡寫圖片描述

    • 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 這裡寫圖片描述
    • Recovering from Branch Mispredictions

      在Out of Order模式下,分支錯誤預測觸發恢復機制,該機制將F-RAT恢復到重新命名錯誤的分支指令之前的狀態。 在In Order模式下,分支錯誤預測會壓縮RS分割槽中的指令,ROB分割槽和來自執行緒的前端流水線,然後將PC重定向到正確的目標。

  16. Area and Power Overhead of MorphCore

    • SMT ways增加到了8個,因此取指階段和其它部分都會增加硬體,使用McPAT評測,面積增加小於0.5%
    • 增加了InOrder wakeup和select的邏輯,面積認為增加了0.5%,亂序的一半
    • 增加了額外的Bypass和Buffer,面積認為也增加了0.5%
  17. Timing/Frequency Impact of MorphCore

    • InOrder renaming/scheduling/execution logic. :在三個階段需要增加多路選擇器,Rename階段選擇重新命名的指令,指令排程階段選擇就緒的指令,PRF-read階段(增加的bypass)。整體估計MorphCore比基本的OOO core慢2.5%
    • 更多的SMT上下文。延長前端的Thread selection邏輯,從二選一變為了八選一。但是之前的延遲可以掩蓋掉前端的執行緒選擇延遲
    • 雖然In-order模式下,增加了選擇和喚醒邏輯,但是由於相對於亂序的邏輯更加簡單,因此認為不會改變關鍵路徑的延遲
  18. MorphCore Turning Off Structures in In-Order Mode :在按序模式下,OOO的重新命名邏輯,排程邏輯和LDQ將不會使用,因此不會有動態功耗,但是仍會有靜態功耗。雖然可以進一步降低靜態動態,但是相對於得到的好處,不值得

  19. MorphCore interaction with OS:作業系統不需要有變化,模式切換由硬體完成

  20. When does MorphCore Switch Modes:根據觀察現有處於啟用狀態的執行緒的數目決定

    • 執行緒處於啟用狀態:不需要等待任何的同步事件
    • 當啟用執行緒個數小於閾值,切換到OOO;超過閾值則切換到In-Order
  21. MorphCore Changing Mode from OOO to In-Order :通過執行微程式碼例程處理

    • 排幹流水線
    • 將所有執行緒的體系結構暫存器儲存到一個保留的記憶體區域。為避免這些寫入時出現快取記憶體未命中,我們使用完全快取記憶體行寫入指令,這些指令在寫入之前不會讀取快取記憶體行
    • 關閉Rename unit,OOO wakeup和select邏輯塊,LDQ
    • 將暫存器值填充回每個執行緒的PRF分割槽。 這是使用特殊的載入微操作來完成的,這些微操作可以直接定址PRF條目而無需重新命名。
  22. 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
  23. MorphCore Overheads of Changing the Mode

    • 主要是排幹流水線的開銷
    • 換入換出執行緒的體系結構暫存器的延遲可以被排空流水線的延遲所掩蓋
  24. 將多個small core合併為一個large core的缺點

    • 融合的Cores的效能是受限的,因為組成的small cores的操作是同步的。此外,融合會增加流水線階段之間的延遲,核與核之間的通訊也會產生延遲
    • 模式切換時,由於I-cache重新整理和D-cache之間的資料遷移會產生很高的代價
    • 由於使用中等大小的OOO core作為基礎核,因此在非融合模式或者融合模式下,能效都很低
  25. 異構多核處理器的限制

    • large core和small core的個數在設計階段已經固定
    • 兩種型別的核之間的執行遷移會有代價
  26. SMT的缺點:

    • 當TLP可用時,SMT並不能降低功耗
    • 傳統的SMT會增加核的面積,設計複雜度和功耗