淺談圖計算加速

淺談圖計算加速

引言

圖計算加速是近年來的熱門話題。與傳統計算密集型應用不同,圖計算具有計算訪存比低、隨進訪存多、程序行爲受輸入數據影響大等特點,這也使得傳統的軟硬件加速技術在圖計算應用上無法取得理想的效果。本文將從硬件行爲的角度,分析和梳理圖計算加速的不同思路。

從底層硬件的角度來看,圖計算程序與其他類型的應用一樣,由指令和數據兩部分組成。指令部分的訪存特徵依然遵循局部性原則,而數據部分的訪問特徵則由數據本身的邏輯關係決定,因此呈現高度隨機性。由於圖計算應用中的輸入數據在體量上往往遠大於指令部分,因此對數據部分的訪問性能決定了整個圖計算應用的性能。在現有商用處理器中,一次訪存的平均用時可用如下公式表示:
Timeaverage=HitTime+MissRateTLB×MissPenaltyTLBTime_{average}=HitTime+MissRate_{TLB} \times MissPenalty_{TLB}
+i=1n(CacheMissRatei×CacheMissPenaltyi)+ \sum_{i=1}^{n}(CacheMissRate_i \times CacheMissPenalty_i)
+(1MissRateMainMemory)×HitTimeMainMemory+ (1-MissRate_{MainMemory}) \times HitTime_{MainMemory}
+MissRateMainMemory×MissPenaltyMainMemory+ MissRate_{MainMemory} \times MissPenalty_{MainMemory}
其中各變量的含義如表1所示。

表1 變量描述

變量名 變量含義
$HitTime$ 從L1 cache中取數據所需時間
(包含TLB地址轉換的時間)
$MissRate_{TLB}$ TLB缺失率
$MissPenalty_{TLB}$ TLB失效後更新TLB所需時間
$CacheMissRate_i$ 第i級cache缺失率
$CacheMissPenalty_i$ 第i級cache缺失後更新cache所需時間
(包含從下級cache取數據和傳輸時間)
$MissRate_{MainMemory}$ 主存缺失率
$HitTime_{MainMemory}$ 從主存中讀取數據所需時間
(包含內存控制器調度、總線傳輸時間)
$MissPenalty_{MainMemory}$ 主存缺失後從下級存儲器讀取數據所需時間
(包含總線傳輸時間)
從上述公式中可以看出,訪存的平均耗時由多個環節決定。本文接下來將介紹針對每個環節的圖計算加速技術和思路。

1. 針對HitTimeHitTime的優化

根據表1中的定義,HitTimeHitTime指從L1 cache中取數據的時間。由於這個變量主要由L1 cache自身的電路特性決定,因此對於這個變量的優化主要在硬件層面完成,包括以下3個方面:

  • 控制L1 cache的容量,縮短L1 cache查詢數據的時間;
  • 優化L1 cache流水線,將Tag Array的訪問和Data Array的訪問同時完成,再通過匹配操作確定訪問是否命中1
  • 採用讀取時間更短的新型存儲材料實現L1 cache(如skyrmions Racetrack Memory2等.)。

2. 針對MissRateTLBMissRate_{TLB}的優化

現代處理器中普遍使用虛擬內存技術。虛擬內存技術允許每個應用程序使用完整、連續、獨立的虛擬地址空間,並將不同程序的虛擬地址空間映射到統一的物理地址空間。TLB(Translation Look-aside Buffer)是處理器訪存關鍵路徑上的主要組成部分,其中保存了流水線最近使用過的虛擬地址與實地址的對應關係。當流水線發出一個訪存請求(通常是發往L1 cache的)時,會首先查詢TLB中的記錄並將訪存請求中的虛地址轉爲實地址。若訪問的虛擬地址不包含在TLB中,則會發生TLB失效(TLB miss)。當TLB miss發生時,由相應的硬件或操作系統完成TLB記錄的更新。在TLB更新完成時,該訪存請求會被暫緩執行。在圖計算中,由於訪存特徵由圖數據連接關係決定,故而發生TLB失效的概率遠高於傳統計算密集型應用。因此,降低TLB失效的概率(MissRateTLBMissRate_{TLB})對於優化圖計算的性能具有重要的意義。

降低MissRateTLBMissRate_{TLB}主要可以通過以下幾個途徑實現:

  • 採用Large Page TLB。TLB中的每條記錄通常對應於一個4KB的內存空間(與一個內存頁相同),現有操作系統中也支持2MB和1GB的large page模式, 通過增大每條TLB記錄對應的內存空間,有助於降低MissRateTLBMissRate_{TLB}3
  • 優化TLB替換算法。
  • 使用page coloring技術4優化數據在cache中的layout。
  • 將圖計算應用由vertex-centric模型改寫爲edge-centric模型5
  • 將圖計算應用遷移至基於線性代數的算法模型(如GraphBLAS6)。

3. 針對MissPenaltyTLBMissPenalty_{TLB}的優化

如前文所述,當TLB miss發生時,訪存請求會被暫停。因此,縮短TLB miss發生後更新TLB信息所需的時間(MissPenaltyTLBMissPenalty_{TLB})同樣可以提升圖計算應用的性能。對於縮短MissPenaltyTLBMissPenalty_{TLB},可以通過以下幾個途徑實現:

  • 採用多級TLB。由於TLB工作在訪存的關鍵路徑上,對於訪問延遲的要求較高,因此TLB通常容量有限。與Cache類似,通過增加TLB級數,可以減少TLB失效後訪問MMU或主存讀取TLB更新信息的頻率,使得L1 TLB失效後更新信息的時間縮短3
  • 採用低訪問延遲、高存儲密度的存儲材料(如memristor8、skyrmions racetrack memory2、STT-RAM7等)構建容量更大的次級TLB。

4. 針對CacheMissRateiCacheMissRate_i的優化

層次化的片上緩衝存儲器(cache)是現代處理器芯片的主要組成部分之一,通常也是佔片上面積比例最高的部件。cache的作用是緩存ALU最近訪問過的數據,減少指令訪問主存的次數。當訪存請求需要的數據不在cache中時,該訪存請求會被保存在該層cache的MSHR中,同時向下一級cache發送該訪存請求;當訪存請求要求的數據在cache中時,cache會將該數據取出,逐層反饋給上一級cache,直至將數據反饋給ALU,同時將MSHR中保存的對應請求信息刪除。當MSHR被填滿時,ALU通常會停止執行,直至MSHR中有空位爲止。cache對於訪存局部性較好的應有具有顯著的性能優化作用,而對於圖計算等訪存局部性不明顯的應用而言,CacheMissRate會顯著上升,由此導致計算性能下降。此外,當圖計算應用所需數據無法在cache中找到時,訪存請求會被髮送至主存儲器中。由於處理器I/O帶寬的限制,以及主存儲器自身運行頻率的限制(DDR-4 DRAM的內部運行頻率僅爲400MHz),頻繁訪問主存儲器會顯著降低圖計算應用的性能。因此,降低CacheMissRateiCacheMissRate_i對於提升圖計算應用的性能具有重要意義。

降低CacheMissRateiCacheMissRate_i通常通過以下幾個途徑實現:

  • 優化Cache替換策略。
  • 通過改變數據分佈或優化算法等方式,提升訪存局部性,或減少訪存數量9
  • 採用高密度存儲材料實現cache(如memristor8、skyrmions racetrack memory2、STT-RAM7等),從而提供更大的cache容量。
  • 將圖數據進行壓縮,使得片上緩存可以保存更多的數據。
  • 使用預取技術,將應用所需數據提前裝入cache12

5. 針對CacheMissPenaltyiCacheMissPenalty_i的優化

和TLB類似,縮短cache缺失發生後更新cache數據所需的時間,同樣可以實現應用性能的提升。縮短CacheMissPenaltyiCacheMissPenalty_i主要通過以下幾個途徑實現:

  • 採用高密度存儲材料實現cache(如memristor8、skyrmions racetrack memory2、STT-RAM7等),從而提供更大的cache容量。
  • 減少cache層級。在層次化cache結構中,當訪問請求在cache中無法獲得數據時,會向下一級cache發送訪問請求。當所有的cache層級中均無法找到所需數據時,纔會將訪問請求發送至主存儲器。對於圖計算等大數據應用而言,由於數據量通常遠大於片上緩存容量,因此需要頻繁訪問主存儲器。在這種情況下,減少cache層級可以縮短訪存請求發送至主存儲器前的查找時間。由於cache層級減少造成的ALU與主存儲器速度差距增大的問題,通常採用增大MSHR和ALU Load/Store Queue(LSQ)的方式進行延遲隱藏。這種優化方式適用於專用加速器芯片的設計。

6. 針對MissRateMainMemoryMissRate_{MainMemory}的優化

當數據在主存中依然無法找到時,將從更慢的外部存儲器中讀取數據,因此降低主存儲器的失效率(MissRateMainMemoryMissRate_{MainMemory})有助於提升圖計算應用的性能。

降低MissRateMainMemoryMissRate_{MainMemory}的途徑通常包含以下幾種:

  • 優化數據結構和數據layout。
  • 優化算法和內存管理策略,提升訪存局部性。
  • 採用PCM等新型存儲器材料提供存儲密度更大的主存儲器10

7. 針對HitTimeMainMemoryHitTime_{MainMemory}的優化

由於處理器訪存帶寬的限制,以及主存儲器自身並行性的要求,訪問主存儲器的請求需要由內存控制器進行調度。在滿足發送請求的條件之前,訪存請求會被緩存在內存控制器中。此外,主存儲器自身頻率的限制也使得訪問主存儲器成爲了一個高延遲操作。因此,儘量降低訪問主存的時間(HitTimeMainMemoryHitTime_{MainMemory}),對於優化圖計算應用的性能具有重要的意義,同時這也是目前圖計算優化研究的熱點。

縮短HitTimeMainMemoryHitTime_{MainMemory}的途徑主要包含如下幾類:

  • 優化算法,減少對主存儲器的訪問。
  • 採用PCM10、memristor8、skyrmions racetrack memory2、STT-RAM7等新型存儲材料實現訪問速度更快的主存儲器。
  • 採用HBM等技術提供更大的訪存帶寬11
  • 優化內存控制器調度算法,提升訪存並行度13
  • 使用PIM(Process-in-Memory)技術,將計算移至主存儲器內部,從而縮短數據傳輸所需時間14

8. 針對MissPenaltyMainMemoryMissPenalty_{MainMemory}的優化

針對MissPenaltyMainMemoryMissPenalty_{MainMemory}的優化主要指縮短主存儲器失效後從外存讀入數據的時間。這一類優化通常包含以下幾種途徑:

  • 採用NDP(Near Data Processing)技術,將計算遷移至外存儲器中。
  • 提升主存至外存儲器的傳輸帶寬。
  • 將外存儲器由傳統機械硬盤(Hard Disk)更新爲固態硬盤(SSD)。
  • 在主存和外存之間添加由PCM等材料構建的緩衝存儲器(如Intel 3D X-Point)。

總結

本文從訪存時間構成的角度,分析了從計算機系統不同層級進行圖計算加速的方法和思路。目前,對於軟件層面的圖計算優化,主要關注內存相關屬性(MissRateMainMemoryMissRate_{MainMemory}HitTimeMainMemoryHitTime_{MainMemory}MissPenaltyMainMemoryMissPenalty_{MainMemory})的優化。但是需要注意的是,從計算模型和數據在主存/cache中的排布等角度入手,圖計算的軟件優化仍有很大的空間。對於圖計算的硬件優化,特別是加速器設計,除了關注cache相關的優化外,還應重視編程模型對硬件設計的影響。

參考文獻

- [1] Agarwal, Amit, Kaushik Roy, and T. N. Vijaykumar. "Exploring high bandwidth pipelined cache architecture for scaled technology." In 2003 Design, Automation and Test in Europe Conference and Exhibition, pp. 778-783. IEEE, 2003.
- [2] Kang, Wang, Yangqi Huang, Chentian Zheng, Weifeng Lv, Na Lei, Youguang Zhang, Xichao Zhang, Yan Zhou, and Weisheng Zhao. "Voltage controlled magnetic skyrmion motion for racetrack memory." Scientific reports 6 (2016): 23164.
- [3] [Bhattacharjee, Abhishek. "Appendix L: Advanced Concepts on Address Translation." (2018).](https://sci-hub.tw/https://www.cs.rutgers.edu/~abhib/abhib-appendix-l.pdf)
- [4] Zhang, Xiao, Sandhya Dwarkadas, and Kai Shen. "Towards practical page coloring-based multicore cache management." In Proceedings of the 4th ACM European conference on Computer systems, pp. 89-102. 2009.
- [5] Roy, Amitabha, Ivo Mihailovic, and Willy Zwaenepoel. "X-stream: Edge-centric graph processing using streaming partitions." In Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles, pp. 472-488. 2013.
- [6] Kepner, Jeremy, Peter Aaltonen, David Bader, Aydin Buluç, Franz Franchetti, John Gilbert, Dylan Hutchison et al. "Mathematical foundations of the GraphBLAS." In 2016 IEEE High Performance Extreme Computing Conference (HPEC), pp. 1-9. IEEE, 2016.
- [7] Liu, Xiaoxiao, Mengjie Mao, Xiuyuan Bi, Hai Li, and Yiran Chen. "An efficient STT-RAM-based register file in GPU architectures." In The 20th Asia and South Pacific Design Automation Conference, pp. 490-495. IEEE, 2015.
- [8] Yavits, Leonid, Roman Kaplan, and Ran Ginosar. "Enabling Full Associativity with Memristive Address Decoder." IEEE Micro 38, no. 5 (2018): 32-40.
- [9] Kocay, William, and Donald L. Kreher. Graphs, algorithms, and optimization. CRC Press, 2016.
- [10] Handy, Jim. "Understanding the intel/micron 3d xpoint memory." Proc. SDC (2015).
- [11] Zhu, Maohua, Youwei Zhuo, Chao Wang, Wenguang Chen, and Yuan Xie. "Performance evaluation and optimization of hbm-enabled gpu for data-intensive applications." IEEE Transactions on Very Large Scale Integration (VLSI) Systems 26, no. 5 (2018): 831-840.
- [12] Ainsworth, Sam, and Timothy M. Jones. "Graph prefetching using data structure knowledge." In Proceedings of the 2016 International Conference on Supercomputing, pp. 1-11. 2016.
- [13] Lv, Huiwei, Guangming Tan, Mingyu Chen, and Ninghui Sun. "Understanding parallelism in graph traversal on multi-core clusters." Computer Science-Research and Development 28, no. 2-3 (2013): 193-201.
- [14] Nai, Lifeng, Ramyad Hadidi, Jaewoong Sim, Hyojong Kim, Pranith Kumar, and Hyesoon Kim. "Graphpim: Enabling instruction-level pim offloading in graph computing frameworks." In 2017 IEEE International symposium on high performance computer architecture (HPCA), pp. 457-468. IEEE, 2017.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章