如果單從初衷和預想的價值來看,還是很誘人的。在馮諾依曼體系中,cpu計算和memory儲存是分離的,而兩者之間的data movement會造成高延遲和高耗能。
關於PIM類似的思想在50年前曾有人提出過,比如1969年WILLIAM H. KAUTZ發表的論文Cellular Logic-in-Memory Arrays和1970年在史丹佛大學工作的HAROLD S. STONE發表的論文A Logic-in-Memory Computer ,不過因為當時memory scaling不大,耗能瓶頸還沒有出現,人們更多的是對CPU效能的關注,所以這些想法並沒有被實現。
而隨著近年AI等訪存密集和計算密集應用的發展,高延遲和高耗能的問題成為急需解決的問題。
Nvidia的Chief Scientist——Bill Dally在2015年的一個演講Nvidia's Path to Exascale給了一組資料:DRAM與CPU之間的date movement耗能是單純double precise浮點數加法耗能的1000倍。
2018年的一篇論文Google Workloads for Consumer Devices: Mitigating Data Movement Bottlenecks 統計了Google常見產品(Chome/Tensorflow Mobile/video playback/video capture)的耗能情況,發現62.7%浪費在cpu和memory之間的data movement上。
2015年Google和哈佛大學聯合發表了論文Profiling a warehouse-scale computer,研究人員在Google不同資料中心的20000多臺機器上做了為期三年的實驗,發現只有20%左右的cycles在做【userful work】,而50% - 60%的cycles是因為Back-end bound而被浪費,在Back-end bound中,80%是【serving data cache request】
嚴格來說,題主說的in memory computing可以分成兩類:
- process using memory : 偏向於電路革新,比如讓儲存器本身具有計算能力,但是這種方法目前計算精度較為有限。
- process near memory : 儲存器內部整合額外的計算單元,比如3D-stacked memory、logic in memory controllers.
2021年Samsung釋出了基於HBM-PIM的Function-in-Memory DRAM,主要針對AI場景,使用20nm DRAM工藝,並且實現了1.2TOPS的浮點數算力。可以將整體計算效能提升兩倍、耗能降低70%。
Samsung在HBM-PIM中整合了額外的Programmable Computint Unit —— PCU,也就是上面說的process near memory。從下圖可以看出,PCU包含了浮點數計算陣列FP16 Mult Array、流水線解碼單元Pipeline Decoder、暫存器Register Group。PCU直接從鄰近的DRAM中直接讀取相關資料,在FP16 Mult Array中完成計算,並且根據指令進一步把結果儲存到暫存器中,同時主控制器也可以根據需要把結果從暫存器讀出。
另外一個比較出名的是UPMEM在2019 Hot Chips上釋出的Processing-in-DRAM Engine。與Samsung的不同,這個屬於process using memory,在DRAM上開發了內建於DRAM晶片本身的DPU,每個DPU可以訪問64 MB的DRAM。UPMEM預計大多數應用需要幾百行程式碼,少數人組成的團隊只需2-4周就可以更新軟體。
Samsung於2022年1月12號(上上週)在Nature上釋出了業內首個基於 MRAM(磁性隨機儲存器)的存內計算晶片。這個我沒細研究過,但是用MRAM來做存內計算,也算是一個巨大的飛躍。
不過還是有很多因素阻礙的PIM,比如:
- memory interleave的問題,現代memory都是按照channel去interleave,用PIM後,比如3D-stacked memory後,如何去分佈資料
- 如何更方便的程式設計,什麼操作用PIM,什麼操作用CPU
- cache coherence
- 工藝的複雜程度
- ......
Onur Mutlu在ETH Zürich的Fall 2021Computer Architecture課程裡也講過之前關於PIM論文在ISCA 2016、MICRO 2016、HPCA 2017和ISCA 2017被Reject的歷史,Reviewer當時給出的comment意思基本是This Will Never Get Implemented、Not practical:
Onur Mutlu對Reviewers的建議 : )
我們一般都是根據過去的經驗去評價未來,沒價值也沒人去做了,這個價值不單單指錢 ,而且真的改變世界了呢 : )
(完)
朋友們可以關注下我的公眾號,獲得最及時的更新: