《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 所有內(nèi)存計(jì)算都是騙人的<(`^´)>

所有內(nèi)存計(jì)算都是騙人的<(`^´)>

2019-09-16
關(guān)鍵詞: 內(nèi)存計(jì)算 PIM

  (?ω?)hiahiahia 標(biāo)題黨誰不會

  早上刷手機(jī)剛好看到winnie姐姐轉(zhuǎn)發(fā)upmem的內(nèi)容,對這個東西還算蠻熟,中秋月圓,借機(jī)剛一波。

  in memory computing,簡稱PIM。

v2-0e1a752e3a1a5de5979cf135455c98f5_hd.jpg

  首先需要明確一下near memory computing和in memory computing的定義,這事我和業(yè)界灌水王onur mutlu吃飯還剛過一波,結(jié)論是:真理掌握在英語表達(dá)能力范圍內(nèi)。

  很多時候這是一個參照系問題,如果嚴(yán)格要以in為前綴,只有把memory cell本體對信號的模擬特性的變化用于計(jì)算才是真正的in,在cell旁邊加MAC都不能算,這就很苛刻了,業(yè)界除了AI有一些其他都只能算near。

  實(shí)際上這某些時候是視角問題,站在CPU的角度,內(nèi)存條上的運(yùn)算都是in memory,哪管那么多。如果按照DIE的緯度來看,HBM包含了多層DRAM和一層logic,PIM通常會把計(jì)算邏輯放在logic層,設(shè)計(jì)上也是near但從CPU角度看也是in memory。UPMEM其實(shí)只是更進(jìn)一步,把邏輯直接放到了DRAM工藝上,最靠近CELL ARRAY的位置。算IN還是算NEAR呢?

  而我的定義是:只有將原本MEM器件的bandwidth具有展寬機(jī)制的才算in-memoy。舉例說,在HBM2帶寬256GB,在logic DIE做計(jì)算如果還是按照HBM原本接口結(jié)構(gòu)用到256GB帶寬,那么還是near,如果打破了DRAM DIE原本結(jié)構(gòu)和接口,引入更多TSV擴(kuò)大了帶寬,那么這就是in-memory了。UPMEM把計(jì)算單元放到了DRAM 每個CHIP內(nèi),比DIMM條原本DDR接口獲得了更大帶寬,我的認(rèn)定是屬于in-memoy computing!

  定義完成了,講騙人<(`^?)>

  事件任何技術(shù)都是有損益的,業(yè)界的PIM看上去除了技術(shù)難度沒啥損失,那這么好的東西為啥沒大量商用呢?

  PIM最大的障礙是memory interleave,所有PIM的議題,如果在內(nèi)存交織上避而不談的,都?xì)w入騙子,簡單直接。

  一個大SOC系統(tǒng),內(nèi)存都不是單一的,以DDR4-3200為例,一根DIMM條的帶寬是25GB,那么全芯片的總帶寬200GB是8個channel交織達(dá)成的。這是為了保證最大帶寬效率,以及系統(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,是不能只對部分?jǐn)?shù)據(jù)進(jìn)行computing的。

  所以,市面上的PIM都有一個潛臺詞是去掉interleave,但是為了表現(xiàn)PIM的先進(jìn)性,在性能比較時,PIM都是忽略interleave,直接和一個巨大的無需交織的單個memory比較,而這樣的memory并不存在。

  如果系統(tǒng)去掉interleave,DDR CHANNEL就需要按照核分組或者業(yè)務(wù)分組來分配channel,按照操作系統(tǒng)理論,實(shí)際上需要引入額外的NUMA分層,這個損失在某些業(yè)務(wù)下是很悲慘的。所以,任何PIM的方案吹噓,如果不敢直面interleave的問題,堂堂正正講出來其性能收益大于去掉interleave的損傷,都是騙人的。

  綜述:在大型SOC系統(tǒng)中,CPU是分布式的,memory也是分布式的,總線互聯(lián)把兩者聯(lián)和在一起,通常無法找到一個公共點(diǎ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倍帶寬的收益才是賺的,算一算,很難噢。當(dāng)然這樣比較也不是特別合適,如果有8個同構(gòu),size恰當(dāng),時間上并行度也很好業(yè)務(wù),并不會帶寬受損。

  額外一說,UPMEM的方案是DIMM結(jié)構(gòu),其DIMM上包含了8顆獨(dú)立的DRAM芯片,每一顆都只有1/8的容量、帶寬和計(jì)算能力,業(yè)務(wù)數(shù)據(jù)依舊可能分割放在了多課DRAM芯片內(nèi)。UPMEM亦需要額外的DRAM芯片間的通信才能完成一個完整的運(yùn)算。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。