(?ω?)hiahiahia 標題黨誰不會
早上刷手機剛好看到winnie姐姐轉(zhuǎn)發(fā)upmem的內(nèi)容,,對這個東西還算蠻熟,,中秋月圓,借機剛一波,。
in memory computing,簡稱PIM,。
首先需要明確一下near memory computing和in memory computing的定義,,這事我和業(yè)界灌水王onur mutlu吃飯還剛過一波,結(jié)論是:真理掌握在英語表達能力范圍內(nèi),。
很多時候這是一個參照系問題,,如果嚴格要以in為前綴,只有把memory cell本體對信號的模擬特性的變化用于計算才是真正的in,,在cell旁邊加MAC都不能算,,這就很苛刻了,業(yè)界除了AI有一些其他都只能算near,。
實際上這某些時候是視角問題,,站在CPU的角度,內(nèi)存條上的運算都是in memory,,哪管那么多,。如果按照DIE的緯度來看,HBM包含了多層DRAM和一層logic,,PIM通常會把計算邏輯放在logic層,,設(shè)計上也是near但從CPU角度看也是in memory。UPMEM其實只是更進一步,,把邏輯直接放到了DRAM工藝上,,最靠近CELL ARRAY的位置。算IN還是算NEAR呢,?
而我的定義是:只有將原本MEM器件的bandwidth具有展寬機制的才算in-memoy,。舉例說,在HBM2帶寬256GB,,在logic DIE做計算如果還是按照HBM原本接口結(jié)構(gòu)用到256GB帶寬,,那么還是near,如果打破了DRAM DIE原本結(jié)構(gòu)和接口,,引入更多TSV擴大了帶寬,,那么這就是in-memory了。UPMEM把計算單元放到了DRAM 每個CHIP內(nèi),,比DIMM條原本DDR接口獲得了更大帶寬,,我的認定是屬于in-memoy computing!
定義完成了,,講騙人<(`^?)>
事件任何技術(shù)都是有損益的,,業(yè)界的PIM看上去除了技術(shù)難度沒啥損失,那這么好的東西為啥沒大量商用呢,?
PIM最大的障礙是memory interleave,,所有PIM的議題,,如果在內(nèi)存交織上避而不談的,都歸入騙子,,簡單直接,。
一個大SOC系統(tǒng),內(nèi)存都不是單一的,,以DDR4-3200為例,,一根DIMM條的帶寬是25GB,那么全芯片的總帶寬200GB是8個channel交織達成的,。這是為了保證最大帶寬效率,,以及系統(tǒng)在多核下的共享。以INTEL為例,,多個channel的地址是按照256B為粒度交織的,,即4KB的數(shù)據(jù)會拆分成16份,每個DDR channel得2份,,其中為了保證系統(tǒng)地址更加均勻,,交織還會引入更高位地址打亂,即16份中的第0份并不會固定在channel-0,。
所以,,每個DIMM只能拿到連續(xù)數(shù)據(jù)的一部分,并且對于交織算法的不感知,,DIMM甚至無法知道自己拿到了數(shù)據(jù)的什么部分,。
絕大多數(shù)的應(yīng)用,都會涉及到數(shù)據(jù)的連續(xù)性,,例如SORT,,是不能只對部分數(shù)據(jù)進行computing的。
所以,,市面上的PIM都有一個潛臺詞是去掉interleave,,但是為了表現(xiàn)PIM的先進性,在性能比較時,,PIM都是忽略interleave,,直接和一個巨大的無需交織的單個memory比較,而這樣的memory并不存在,。
如果系統(tǒng)去掉interleave,,DDR CHANNEL就需要按照核分組或者業(yè)務(wù)分組來分配channel,按照操作系統(tǒng)理論,,實際上需要引入額外的NUMA分層,,這個損失在某些業(yè)務(wù)下是很悲慘的。所以,,任何PIM的方案吹噓,,如果不敢直面interleave的問題,,堂堂正正講出來其性能收益大于去掉interleave的損傷,都是騙人的,。
綜述:在大型SOC系統(tǒng)中,,CPU是分布式的,memory也是分布式的,,總線互聯(lián)把兩者聯(lián)和在一起,通常無法找到一個公共點能高效解決問題,。
以UPMEM為例,,為了使能其功能,就需要把某特定業(yè)務(wù)的數(shù)據(jù)放到一根DIMM,,假設(shè)系統(tǒng)是8通道交織200GB,,先不考慮CACHE一致性的損傷(PIM加速的數(shù)據(jù)需要FLUSH到內(nèi)存),那這個單一業(yè)務(wù)去交織后就只能得到1/8的25GB帶寬了,,等價于使能PIM后至少需要獲得大于8倍帶寬的收益才是賺的,,算一算,很難噢,。當然這樣比較也不是特別合適,,如果有8個同構(gòu),size恰當,,時間上并行度也很好業(yè)務(wù),,并不會帶寬受損。
額外一說,,UPMEM的方案是DIMM結(jié)構(gòu),,其DIMM上包含了8顆獨立的DRAM芯片,每一顆都只有1/8的容量,、帶寬和計算能力,,業(yè)務(wù)數(shù)據(jù)依舊可能分割放在了多課DRAM芯片內(nèi)。UPMEM亦需要額外的DRAM芯片間的通信才能完成一個完整的運算,。