天天看點

A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)

A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)

  1. 可重配置的AMP分類:
    • 動态融合或者劃分cores,能夠改變核數
    • 在核間共享或者交換(trade)硬體資源
    • 轉換核的架構
  2. 核數可變的AMP
    • Ipek提出了Core Fusion,允許将相鄰的OOO核融合成一個發射寬度更寬的OOO核。
      • 論文将四個OOO核和相應的L1 cache(D/I)在運作時合并成一個L1 cache,BTB,BP大小變為四倍,取指,發射,送出寬度提升4倍的核。
      • 一種可重新配置、分布式的前端和指令緩存組織,它可以利用單個核心前端結構來提供具有侵略性的融合後端,同時最小化對單個前端的過度供應。
      • Core Fusion提供了兩種融合方式,即三種執行模式:支援細粒度并行的小核,更少但是性能更強的四發射supercore支援粗粒度并行,支援串行執行的八發射supercore
    • Mukundan針對于Core Fusion在融合之後的性能比标準的OOO處理器明顯更小的問題,提出了解決方案
      • 原有的設計中,每次送出一個fetch group,由8條指令組成。如果無法取到8條指令,則用NOPs填充ROB,此時ROB的有效大小将會降低。論文提出一種方式,使得NOPs在ROB中的表示更加緊湊
      • 論文提出了一種基于遺傳算法的指令控制機制,以減少跨核操作所帶來的通信開銷
        A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
    • Zhong提出了一個可重配置的AMP,使用多個簡單同構的核,可以用解耦模式或耦合模式進行組織。
      • 解耦模式:核在不同細粒度的通信線程上獨立工作。通過使用編譯器,将程式細分為多個通信子圖,子圖使用線程的方式執行,進而充分利用TLP和循環級并行性
      • 耦合模式:所有核共同作為一個寬發射的VLIW處理器,以同步方式處理多個指令流
    • Tarjan提出一種體系結構,支援将兩個标量按序處理器組合形成一個發射寬度為2的亂序處理器。
      • 在兩個按序核之間,增加低開銷的查找表實作亂序核中的發射隊列(CAMs)和發射邏輯。查找表紀錄這生産者和消費者的對應關系,進而能夠用于亂序發射
      • 對于單線程應用程式,這種結構可以實作按序處理器兩倍的性能
        A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
    • Watanabe提出了一種架構能夠使用多個按序執行單元EU,根據需求近似得到亂序發射的功能,可以提高能效
      • 将線程上下文管理(指令引擎IE)從衆多簡單的執行單元中分離出來,進而支援在單個晶片上能夠支援多個不同組合的小型/更大的核
      • 通過全局的資源配置設定,改變 使用的IEs的數量(其餘的關閉,節省能量)和配置設定給每個IE的EU的數量
      • 有依賴關系的指令在可以臨近EU組成的叢集中執行,獨立指令可以在一個空閑的EU上同時執行
        A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
    • Chiu提出了一種架構允許将多個标量的核動态的合并成一個大的超标量處理器,進而同時支援高/低的TLP
      • 為了解決融合之後的寄存器管理問題,提出了一個虛拟共享寄存器堆VSRFs。線程可以執行通路VSRFs,然後在于硬體将VSRFs和實體的寄存器連接配接在一起。
      • 程式員不需要指導寄存器的有效值的位置,這些資訊通過基于表的機制隐式管理
        A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
    • Pricopi提出了一種可重配置的多核架構,能夠同時利用TLP和ILP
      • 該架構能夠動态的将兩個或者多個簡單的核合并起來,為串行代碼提供ILP
      • 為了提高伸縮性,論文使用了一個分布式的執行架構,進而消除了集中取指,譯碼,排程和相關解析。該執行模式類似于并行計算中的線程池模式,通過建立許多線程來執行更多的任務。在該架構中,core對應于線程,基本塊對應于任務。
      • 通過利用編譯器,實作識别基本塊和寄存器依賴關系,進而保證core能夠一次擷取和執行一個基本塊。
        A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
  3. 支援核間資源交換和共享的可重配置AMP
    • Pericas提出了一種處理器架構支援在運作時動态調整指令視窗大小
      • 該架構中的指令視窗包含着分布在處理單元上的數千條指令,在很大程度上克服了記憶體長延遲操作的負面影響
      • 指令視窗非常大,但是發射視窗很小,因為每個處理單元上執行的指令很少。指令視窗的大小通過增加或者删除 memory engines來實作
      • 在架構中包含一類cache core用于執行局部性非常好的代碼;另一類memory engine,用于執行局部性差,訪存密集的代碼。每個線程在功耗限制的情況下,激活需要的memory engine,改善性能
    • Gupta提出了一種可重配置的架構,模糊了單個核的邊界,能夠從打破的流水線階段級别的資源網絡中重新組裝得到可變寬度的邏輯處理器
      • 通過組合成多個單發射流水線提高并行性能,而多發射流水線則用于提高串行性能
      • 需要編譯器參與進行指令的控制
      • 可配置為吞吐量計算、單線程性能、容錯、定制處理等的大量building塊
        A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
    • Rodrigues提出了一種可重配置的AMP,其中每一個核在各個方面都有适度的自己的資源,同時在特定的領域(例如浮點或者整數)具有額外的優勢資源。即每個核都适合于特定的工作負載。
      • 當一個線程有多個方面的需求時,可以重新排列資源,使得一個core可以将自己的較弱的硬體資源和另一個core的同一個方面較強的資源交換,進而提高該線程的性能
      • 示例:一個AMP中包含兩個核,一個核善于整數計算但是浮點表現差,另一個善于浮點計算而不擅長于整數計算。一個既需要整數計算也需要浮點計算的線程希望提高性能,此時可以将第一個核的FP的單元和第二個核的FP進行交換,進而在第一個核上可以提高能效
        A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
    • Rodrigues指出了大核的性能優化并沒有被充分利用。同時為了優化能耗,小核的執行單元又很少。此時當線程運作在小核上需要更多的資源時,可以共享大核的一些未被利用的資源。這種方式對大核的性能影響很小,同時節省了面積和功耗,提高了小核的性能
      A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)
  4. 可變核心架構的AMP
    • Khubaib提出了一種架構,以OOO的大核為基礎提高單線程性能,同時允許重新配置為按序的SMT核,進而支援加速并行程式
      • 根據線程數目決定是否從OOO轉變為INO SMT
      • 某些資源被劃分用來支援SMT的INO,一些資源則會停止工作在INO模式下
    • Lukefahr提出了一種核心架構,組合了一個高性能核(big uEngine)和一個高能效核(small uEngine)
      • 每個時間點,隻會有一個引擎在工作。根據程式不同階段的特點動态切換
      • 通過線上性能估計機制,預測未使用的微引擎上的可能的性能。當未執行的引擎能夠提供更高的吞吐量或者能效時,切換引擎
    • Fallin指出對于串行代碼,經常會間隔數十或者數百條指令出現不一樣的特性,這些特性能夠将連續區域的指令劃分成組,成為單獨的執行塊。論文提出了一種組合的後端流水線架構,後端包括三種結構:OOO、INO、VLIW。通過将程式劃分為代碼塊,然後根據代碼塊的特征選擇最适合的後端模式執行,進而得到更好能效(相對于單一的任意一種模式)
    • Srinivasan提出了一種體系結構,允許在運作過程中,将亂序核轉換為按序核,隻要發現按序核能夠提供更有效的功率效率(性能/瓦特)
    • Srinivasan指出在核内的不同的微架構會對應用産生不同的功率效率,例如ROB,LSQ,IQ的大小,取指和發射寬度,電壓和頻率。通過設計空間的探測,找到這些因素對結果的影響,進而允許動态的切換不同的微架構特征
  5. 使用非傳統的ISA,設計可配置的AMP
    • Sankaralingam提出了一種多形态的Trips體系結構,可以配置為利用不同粒度和類型的并行性的結構。該結構包括4個亂序,16發射的核,為單線程程式提供高性能。同時這些核可以被繼續劃分,進而支援更細粒度的排程。
      • 為了利用ILP,将核的指令緩沖區是為分散的指令發射視窗,利用trips isa實作OOO執行
      • 為了利用TLP,為線程之間提供共享的ALU
      • 為了開發DLP,多個架構中的架構被融合在一起(例如相同索引的RS被融合在一個索引下),然後将流媒體程式中的内層循環展開,進而填充融合之後的RS
    • Kim提出了一種可重配置的AMP,能夠将簡單的核心動态的融合成更大的核心,進而優化性能,能耗和面積
      • 使用顯示資料圖執行(EDGE ISA),将塊内指令的依賴關系靜态的顯示編碼出來
      • 利用EDGE作為ISA,能夠通過更好的伸縮性和靈活性
  6. 使用3D堆疊技術設計AMP
    • 在二維平面中設計流水線布局,在第三維中配置設定額外的資源,例如LSQ,ROB,Cache等,進而能夠不影響二維的流水線布局。
    • 通過3D堆疊技術能夠實作更小的通信延遲,同時能夠提供更加靈活的資源池
  7. 可重配置的AMP中的排程政策
    • Panneerselvam提出了通過擴充linux OS來支援可重配置的AMPs。
      • 通過處理器代理,讓另一個處理器支援通信和全局操作,進而能夠讓處理器快速重新配置
      • 将實體核和硬體線程抽象為邏輯對象,進而使得排程程式不需要知道實體硬體細節
      • 根據并行應用程式和串行應用程式的需求,排程器決定處理器何時并且如何重新配置,進而更好的平衡線程之間的性能平衡
    • Sun提出了一種用于改善可重配置的AMP和性能和公平性的技術
      • OS排程器運作在獨立的core上,而不是可重配置的core
      • 提供了一種基于EDP的動态優先級算法,以保證排程的公平性。該算法既能夠為同一類任務提供和優先級成正比的性能提升,也能夠為相同優先級的不同任務提供一緻的減速
  8. 使用靜态AMP提供類似于可重配置的AMP的效果
    • Ansari提出了一種結合編譯的技術。将在小核上運作的線程進行簡化和抽取,運作在大核上,進而為小核的執行提供提示,以加速小核的執行性能。這種技術提供了比所有小核更高的單線程性能,同時提供了比所有大核更高的吞吐量

繼續閱讀