1. 程式人生 > >The Vector-Thread Architecture(2004)

The Vector-Thread Architecture(2004)

The Vector-Thread Architecture(2004)

  1. 向量-執行緒(VT)體系結構支援向量和多執行緒的無縫整合,從而靈活而緊湊的編碼應用程式的並行性和區域性性,能夠提供高效能的同時,保證了低功耗和小面積

    • VT簡潔地編碼了大量的結構化並行,以一種簡單的微架構,通過避免複雜的控制和資料通路,同時減少了長導線上的活動,降低了功耗,並且獲得了高效能
  2. 嵌入式計算領域的問題:

    • 應用越來越複雜,對高效能,低功耗資訊處理的需求也在增長
    • 定製電路很適合,但是不斷增加的掩模和開發成本使其不適合在小規模的領域使用。同時固定的設計,不適合不斷變化的要求
    • 多種特定領域的可程式設計處理器的異構混合的問題在於難以程式設計,並且當負載不均衡時,效率低下
    • 通用處理器雖然靈活,但是過於複雜,並且效能不夠高或者是功耗太大。現代超標量處理器主要從非結構化應用的順序編碼中獲取並行性,但是嵌入式應用通常包含豐富的結構化並行性,其中的依賴關係也可以在靜態時確定。
  3. VT的抽象模型

    • VT的程式設計模型結合了向量和多執行緒計算
    • 將傳統的控制處理器和虛擬處理器(VPs)向量相結合
    • 虛擬處理器VP包含一組暫存器,可以執行一組封裝在原子指令塊(AIB)中的類RISC指令
    • VPs不包括PC或者其它隱式的取指機制,所有的指令塊都由CP/VP本身顯式的請求
    • VT尤其擅長於執行迴圈,每個VP執行迴圈中的一次,CP會剝離迴圈,進行控制
      • CP使用向量取指指令將AIBs廣播到所有的VPs,同時CP可以使用向量load/store指令來高效的完成資料在記憶體和VP暫存器之間的移動
      • 當迴圈之間有依賴關係時,VPs以單向環形拓撲結構連線,通過傳送和接收指令對資料進行傳輸
      • 當迴圈帶有條件指令,甚至內部迴圈時,每個VP使用執行緒的形式來獲取自身的AIB,並且指導自己的控制流,自主執行
    • VPs除了執行迴圈迭代,還可以執行自由執行的執行緒,獨立於CP進行操作,並且可以從共享的工作佇列中檢索任務
      在這裡插入圖片描述

      在這裡插入圖片描述
  4. VT的物理模型

    • 組成:一個傳統的控制處理器+一個VT單元(VTU),用於執行VP程式碼。一個VTU中包括一組可以並行處理器的lanes。每個lane包括物理暫存器(用於儲存對映到lane的VPs的狀態)+功能單元(被VPs分時複用)
    • VTU中每個lane相互獨立執行,擁有自己的小的AIB cache。每個lane還包括一個命令管理單元CMU,將來自CP的命令還在一個佇列中(cmd-Q),同時儲存著每個VP的執行緒掛起時,取指的地址。
    • CMU選擇vector-fetch/thread-fetch命令執行,同時在AIB的cache tags中查詢地址。如果命中了cache,CMU傳送一條包括索引的指令到AIB cache。對於vector-fetch指令,所有的VPs都需要執行AIB中指令;對於thread-fetch指令,只有一個VP需要指令AIB中指令。
    • CMU會將執行指令傳送到一個佇列中,從而將cache過程和執行過程解耦,實現重疊執行
    • 執行過程:從AIB cache中,一條一條的讀取指令,然後為正確的VP執行。當執行指令是在vector fetch指令之後的,則當前VP會執行AIB中的所有指令,在轉移到另一個VP之前
      在這裡插入圖片描述