AVX 指令演進、效能如何?

AVX代理商       NICHICON代理商     AVX

論記憶體子系統,Cray 在 2002 年發表 Cray X1 向量運算超級電腦所採用的 Multi-Streaming Processor(MSP)是很鮮明的案例:一個 X1 節點,由四組 MSP、16 組記憶體控制器與 32 片記憶體卡板所組成。

並不是把一堆處理器核心硬塞到單晶片內,看起來有很好的帳面理論運算效能,就可稱之為「單晶片超級電腦」,空有運算效能沒用,內部的匯流排與記憶體子系統更需密切配合以克竟全功。至於時下 GPU 記憶體子系統的效能水準,除了延遲很長,相信就沒有太多需要特別挑剔的地方了。

所有載入都是聚集、所有儲存都是分散的 GPU,GPU 程式設計師需保證所有聚集中和分散中的所有位址,都是指向相鄰的位置,GPU 硬體中扮演著跟向量電腦控制處理器相同角色的「執行緒區塊排程器」,需在執行期間辨認出這些位址的序列,確認他們是否相鄰,將聚集與分散,轉變為高效率的跨度式記憶體存取。

泛用 CPU 的 SIMD 多媒體指令集上的聚集分散式記憶體存取呢?很抱歉,原先幾乎沒有這些寶具,是近期才慢慢的補完。以 x86 指令集為例,演進如下,效能怎樣,在此不做評論:

  • 2011 年 1 月:Sandy Bridge 微架構:AVX 指令集剛問世時,沒有聚集和分散指令。
  • 2011 年 6 月:Xeon Phi x100 系列(Knights Corner):其 VPU 指令集(IMCI,Intel Many Core Instructions)提供聚集和分散指令,但 Xeon Phi x100 只能作為輔助處理器,不能執行 x86 指令。
  • 2013 年 6 月:Haswell 微架構:AVX2 指令集新增聚集指令。
  • 2013 年 6 月:Xeon Phi x200 系列(Knights Landing):要直接跟 GPGPU 打對台,就得硬著頭皮全上了。
    1. AVX-512F 指令集同時支援聚集與分散指令。
    2. AVX-512PF 指令集增加聚集與分散的預先擷取(Prefetch)版本。
    3. AVX-512CD 指令集增加偵測位址衝突(Address Conflict)的分散指令。

一路看下來,SIMD 三種型態擺在一起比比看,受制於現有 CPU 指令集的包袱,相較簡潔優美的向量電腦和仰仗先進硬體承先啟後的 GPU,帶有強烈「附贈」色彩的 SIMD 多媒體指令集看起來似乎有點廢廢的,但也並非毫無一無可取之處,因近代多工作業系統的迫切需求,虛擬記憶體管理就是 CPU 最強的地方,尤其是按需求分頁(Demand Paging)的功能,也是 GPU 雙雄努力補強中的弱點。

凱旋門企業股份有限公司

參考資料:https://technews.tw/2017/09/12/what-you-need-to-know-about-gpgpu/