首先,我們來(lái)了解一下什么是近存處理器。下圖展示了幾種主要的近存和存內(nèi)處理芯片設(shè)計(jì)方案的基本概念。
- Traditional:傳統(tǒng)的處理器系統(tǒng),運(yùn)算和存儲(chǔ)是2個(gè)不同的die,通過(guò)片外走線連接。
- 2D CIM:存儲(chǔ)和運(yùn)算在同一個(gè)die中,混合分布。
- 2D PNM:存儲(chǔ)和運(yùn)算在同一個(gè)die中,分成兩個(gè)獨(dú)立的部分。
- 2.5D PNM:存儲(chǔ)和運(yùn)算在2個(gè)不同的die上,通過(guò)interposer連接。
- 3D HB-PNM:存儲(chǔ)和運(yùn)算2個(gè)die臉對(duì)臉通過(guò)銅-銅互連(本論文的方案)。
- 3D TSV-PNM:存儲(chǔ)和運(yùn)算stack的方式通過(guò)TSV連接。
Figure1 近存存內(nèi)處理器結(jié)構(gòu)介紹[1]
推薦系統(tǒng)工作流程
?
Figure2 推薦系統(tǒng)任務(wù)流程[1]
推薦系統(tǒng)的工作流程主要包含特征生成和召回排序兩個(gè)階段。其中,特征生成主要在GPU上運(yùn)行,具體的任務(wù)包括分類,目標(biāo)檢測(cè),特征提取,通常是運(yùn)算密集型任務(wù)。而召回排序包括粗粒度召回和細(xì)粒度排序兩個(gè)階段,占據(jù)了整個(gè)推薦任務(wù)89.7%的延遲和82.97%的能量消耗,因此,該階段需要大容量,高帶寬,低能耗的存儲(chǔ)系統(tǒng)。
?
Figure3 召回和精排任務(wù)流程[1]?在該芯片設(shè)計(jì)面對(duì)的推薦任務(wù)中,粗粒度召回包含L2 distance和Top-k兩個(gè)階段,輸入為1個(gè)1bitx512維度的特征,首先進(jìn)入ME(matching engine)單元進(jìn)行L2距離計(jì)算,然后從40k的項(xiàng)目中選出排名靠前的1000個(gè)子項(xiàng),得到一個(gè)8bits x 1024的特征,這些特征和之前的特征連接合并,進(jìn)入細(xì)力度排序階段。細(xì)力度排序包括相似度預(yù)測(cè)和top-k兩個(gè)階段,相似度預(yù)測(cè)由一個(gè)三層的MLP進(jìn)行操作(2048-256-64-1),主要利用NE(neural engine)進(jìn)行,最后MLP的輸出會(huì)再次返回ME進(jìn)行top-k操作, 從之前的1000個(gè)子項(xiàng)中選擇100個(gè)子項(xiàng),然后返回查詢結(jié)果。
近存處理器架構(gòu)
整體架構(gòu)
?
Figure4 3D stack芯片整體結(jié)構(gòu)[1]?整體邏輯die wafer和DRAM die wafer通過(guò)臉對(duì)臉對(duì)貼,銅-銅互連,邏輯和DRAM die 有同樣的大小,都是25.24 x 23.86 mm2,DRAM 由6x6個(gè)同等大小的block組成,每個(gè)block是4x4 mm2,有1Gb的容量大小。這1Gbit的DRAM 有8個(gè)bank,支持ECC, 每個(gè)bank有128 bits的IO。每個(gè)邏輯block都可以訪問(wèn)自己對(duì)應(yīng)的DRAM block,此外,也可以通過(guò)片上總線訪問(wèn)其它的DRAM block。每4個(gè)DRAM block的大小是64mm2,DRAM die工作在150Mhz,1.1V, 功耗為300mW/1Gb,36個(gè)DRAM總的帶寬為1.38TB/s。
?
Figure5 近存處理器的整體架構(gòu)[1] ? ??
每4個(gè)DRAM block對(duì)應(yīng)一套處理引擎,即ME(
match?
engine)和NE(neural engine)。其中match engine中主要有top-k和matching 2個(gè)DSA處理模塊,而neuralengine中由activation函數(shù)處理,GEMM運(yùn)算和transpose操作等引擎構(gòu)成。NE的大小為5.9mm,ME的大小為7.02mm,邏輯die工作在300Mhz 1.2V,功耗為977mW。ME和NE分別連接了2個(gè)dual-mode interface,每個(gè)dual-mode interface和8個(gè)memory controller連接。這8個(gè)MC可以同時(shí)給ME提供數(shù)據(jù)或者只有其中一個(gè)MC給ME提供數(shù)據(jù)。
Matching engine
?
Figure6 matching engine微架構(gòu)[1]
如前面介紹所說(shuō),matching 引擎負(fù)責(zé)召回階段的top-k和L2 距離計(jì)算以及精排階段的top-k,因此,該模塊最主要的功能模塊就是distance calculator和max-heap top-k engine。
地址生成器
?
Figure7 地址生成邏輯[1]
地址生成器的主要功能是生成DRAM的訪存請(qǐng)求,其地址生成可以通過(guò)寄存器配置,包括不同的brust length和stride,數(shù)據(jù)cluster、基地址等。
距離計(jì)算邏輯
?
Figure8 距離計(jì)算[1]?Bit-wise的漢明距離計(jì)算比較簡(jiǎn)單,為查詢值和DRAM中的數(shù)據(jù)值進(jìn)行按bit異或操作,異或后得到的值里面1的個(gè)數(shù)即漢明距離。
Top-K引擎
?
Figure9 max-heap硬件模塊[1]
Top-k引擎又稱排序引擎,基本邏輯結(jié)構(gòu)為一個(gè)2叉樹的max-heap硬件模塊,其中由1000個(gè)節(jié)點(diǎn)組成,對(duì)應(yīng)召回階段最短的1000距離值。堆棧模塊每2個(gè)周期從頂部即root節(jié)點(diǎn)輸入一個(gè)漢明距離數(shù)據(jù)。當(dāng)奇數(shù)cycle時(shí),對(duì)奇數(shù)層的節(jié)點(diǎn)進(jìn)行操作,偶數(shù)cycle時(shí),對(duì)偶數(shù)層的節(jié)點(diǎn)進(jìn)行操作。每個(gè)node由node 索引和距離值構(gòu)成,通過(guò)不斷的比較和交換當(dāng)前節(jié)點(diǎn)和子節(jié)點(diǎn)的值,得到最終的top-1000的結(jié)果。同時(shí),由于Top-K引擎只有處理速度的一半,在輸入端有一個(gè)比較邏輯用于初步過(guò)濾數(shù)據(jù),因?yàn)闂m斂偸钱?dāng)前大頂堆中最大的數(shù)據(jù),當(dāng)最新的計(jì)算距離小于當(dāng)前堆頂?shù)闹挡拍芴鎿Q當(dāng)前root節(jié)點(diǎn)進(jìn)入堆區(qū)域。Max-heap堆排序top-k算法規(guī)則如下:
- 當(dāng)reset時(shí),所有node的distance都設(shè)置成max值。
-
當(dāng)父節(jié)點(diǎn)大于所有子節(jié)點(diǎn)的值時(shí),不操作,否則進(jìn)行下面的操作:
- 當(dāng)前節(jié)點(diǎn)小于左子節(jié)點(diǎn),則交換當(dāng)前節(jié)點(diǎn)和左子節(jié)點(diǎn)的值。
- 當(dāng)前節(jié)點(diǎn)大于左子節(jié)點(diǎn),則交換當(dāng)前節(jié)點(diǎn)和右子節(jié)點(diǎn)的值。
Figure10 max-heap算法舉例說(shuō)明[1]
不難看出,該算法排序按經(jīng)過(guò)若干次迭代操作后,最終拿到了我們想要的從樹底層左邊最小開始的top-1000樹形排列結(jié)果。
Neural engine
?
Figure11 Neural引擎[1]
Neural engine更像是一個(gè)傳統(tǒng)NN processor的方案,包含了VPU(vector process unit)和GEMM(general engine for matrix and multiply)。其中vector引擎包含了一個(gè)基于LUT的激活函數(shù)處理模塊,支持硬件GeLU和Exponential函數(shù)運(yùn)算,另外vector還有一個(gè)轉(zhuǎn)置模塊,使用2D register file實(shí)現(xiàn),使用乒乓的方式進(jìn)行16x16的矩陣轉(zhuǎn)置,支持行寫入列寫出。
?
Figure12 vector process unit[1]
GEMM模塊在傳統(tǒng)NN處理器中用于計(jì)算矩陣乘法,這里主要用于MLP的運(yùn)算流程。運(yùn)算部分包含了32x32 int8的systolic array和int32的部分積累加器,分別有兩個(gè)輸入和一個(gè)輸出FIFO用于數(shù)據(jù)流水,使用weight station的策略,通過(guò)頂層的GEMM controller控制。運(yùn)行在300Mhz時(shí),總的算力為600Gops。
?
Figure13 GEMM[1]
實(shí)驗(yàn)對(duì)比
?
Figure14 性能功耗表現(xiàn)(vs CPU-DRAM)[1]?文章首先和CPU+DRAM組成的系統(tǒng)相比,該近存處理系統(tǒng)有9.7 倍的吞吐率QPS優(yōu)勢(shì),317倍的能效優(yōu)勢(shì)QPS/W,660倍的面積優(yōu)勢(shì)QPS/mm2。
Figure15 性能功耗表現(xiàn) vs CIM/PNM[1]?同時(shí),文章還和最好的CIM/PNM處理器進(jìn)行了對(duì)比,該設(shè)計(jì)在單位容量帶寬上,單位帶寬能耗上也保持很大的優(yōu)勢(shì)。
?
總結(jié)
PNM和CIM架構(gòu)可以很大程度上提高內(nèi)存受限的應(yīng)用的性能和功耗表現(xiàn),本設(shè)計(jì)中的3D邏輯-DRAM Hybird bonding chip有以下幾個(gè)特點(diǎn):
- 使用3D Hybrid bonding技術(shù),為整個(gè)系統(tǒng)提供了具有高帶寬和能效的存儲(chǔ)系統(tǒng)。
- 使用了高吞吐率的流處理加速設(shè)計(jì)來(lái)進(jìn)行粗召回和精排系統(tǒng)優(yōu)化操作。
- 該設(shè)計(jì)達(dá)到了2.4GB/s/mm帶寬密度,0.87pJ/bit的能耗指標(biāo)。
- 對(duì)于傳統(tǒng)的CPU+DRAM系統(tǒng),該設(shè)計(jì)有300倍的能效提升和10倍的性能提升。
參考文獻(xiàn)
[1] Austin Derrow-Pinion, Jennifer She, David Wong, et al. ETA Predictionwith Graph Neural Networks in Google Maps.?2021
[1] 184QPS/W 64Mb/mm2 3D Logic-to-DRAM Hybrid Bonding with Process-Near-Memory Engine for Recommendation System DiminNiu, Shuangchen Li, Yuhao Wang, Wei Han, Zhe Zhang,Yijin Guan, Tianchan Guan, FeiSun, Fei Xue, Lide Duan, Yuanwei Fang, Hongzhong Zheng, Xiping Jiang, SongWang, Fengguo Zuo, Yubing Wang, Bing Yu, Qiwei Ren, Yuan Xie
評(píng)論