一文帶你快速了解:什么是存算一體?
它與近存計算、存內(nèi)計算等概念有何不同?
為何存算一體架構(gòu)是實現(xiàn)數(shù)字經(jīng)濟時代的先進生產(chǎn)力?
為什么我們需要存算一體?
在傳統(tǒng)的馮·諾依曼架構(gòu)中,處理與存儲單元是分離的。由于存算分離,AI計算的數(shù)據(jù)搬運量非常大,會導(dǎo)致功耗大大增加,也就是存儲墻。
此外,不管是傳輸還是計算工藝本身的限制,能效比已經(jīng)接近極限。無論是20W, 75W, 150W的模組還是PCIe板卡,目前能支持的最高算力已經(jīng)達到了天花板。以75W為例,不管是7nm工藝或?qū)頃械母吖に嚕?50TOPS到200TOPS已經(jīng)基本封頂,這是存儲墻帶來的能耗墻導(dǎo)致的。
存儲墻還導(dǎo)致了另一個問題——編譯墻(生態(tài)墻),也可以說是可編程性。由于存算分離,數(shù)據(jù)搬運容易發(fā)生擁塞,尤其是在動態(tài)環(huán)境下,對數(shù)據(jù)進行調(diào)度和管理其實非常復(fù)雜,所以編譯器無法在靜態(tài)可預(yù)測的情況下對算子、函數(shù)、程序或者網(wǎng)絡(luò)做整體的優(yōu)化,只能手動、一個個或者一層層對程序進行優(yōu)化,包括層與層之間的適配等,耗費了大量時間。
隨著人工智能相關(guān)的高度數(shù)據(jù)中心化應(yīng)用迎來爆發(fā)性增長,由傳統(tǒng)的馮·諾依曼架構(gòu)帶來的這“三堵墻”弊端愈發(fā)凸顯。這就要求人們尋找非馮·諾依曼的計算方法,于是就提出了存算一體架構(gòu)。
存算一體賦能AI加速效率的理論基礎(chǔ)
硬件加速性能是由Amdahl Law(阿姆達爾定律)確定,如同力學(xué)中的牛頓三定律:Speedup (F, α)=1/(F+((1-F))/α)。F ~訪存/(訪存+計算操作),α ~加速比取決于工作頻率和并行計算核數(shù)量等裸性能。
阿姆達爾定律取決于兩個因子:F和α。一個是裸算力,取決于先進工藝和計算單元核;一個是數(shù)據(jù)搬運效率或占用整體計算過程的時間和資源百分比,該因子決定了硬件性能提升的天花板。比如F=0.5,數(shù)據(jù)搬運占用了50%時間和資源,性能提升的天花板是2倍,高等級工藝無濟于事,只能改進架構(gòu)降低F因子。比如數(shù)據(jù)搬運不占用任何時間和資源或忽略不計,或F接近于0,硬件性能的提升和裸算力是線性關(guān)系。
阿姆達爾定律揭示了摩爾定律的誤導(dǎo),大算力芯片的真實性能不完全取決于先進工藝,尤其是需要大量數(shù)據(jù)搬運的AI芯片或類似芯片。這也是馮?諾依曼存算分離的瓶頸,也是存算一體的核心優(yōu)勢。
什么是存算一體?
存算一體目前在學(xué)術(shù)界和產(chǎn)業(yè)界有不少相似的概念,例如Computing-in-Memory, In-Memory-Computing, Logic-in-Memory等,不同研究領(lǐng)域的稱呼不統(tǒng)一,相應(yīng)的中文翻譯也不盡相同,如:內(nèi)存處理(In-Memory-Processing)、存內(nèi)處理(Processing-in-Memory)、存內(nèi)計算(Computing-in-Memory)、存算一體(In-Memory-Computing)等。
為清晰區(qū)分多種存算一體技術(shù),可按照計算單元與存儲單元在系統(tǒng)中的距離來進行分類。如圖所示,越往金字塔頂端,計算與存儲距離越近。同時,這一距離也改變了軟硬件抽象分層。金字塔左側(cè)的計算源語(源語:在百度詞條中定義為具有原子操作性的若干指令組成的程序片段),指的是卸載到硬件單元進行原子操作的粒度,硬件通過在該粒度的高并發(fā)操作來獲得性能提升。金字塔右側(cè)代表存儲與計算在哪個設(shè)計抽象層次進行融合。
存算一體分類
最底層為存算分離的馮·諾依曼架構(gòu)。
往上一層,計算由位于存儲芯片內(nèi)部的計算單元完成。計算單元與存儲單元在系統(tǒng)層集成,但兩者依然相互獨立操作。計算與存儲的數(shù)據(jù)交換發(fā)生在存儲系統(tǒng)內(nèi)部,不會經(jīng)過系統(tǒng)總線,因此帶來帶寬上極大提升。這一層的存算一體架構(gòu)往往被稱為Process-in-Memory,或Near Memory Computing。存儲單元往往以大容量的DRAM為主,計算單元可以是處理器(如RISC-V),可編程加速器或硬加速器等。計算源語往往是一些較為復(fù)雜的運算,如(張量/向量/標(biāo)量)乘法/除法,匹配查找等。硬件的峰值性能由計算單元數(shù)量,計算與存儲的片內(nèi)傳輸帶寬決定。
再往上一層,計算單元與存儲陣列(如SRAM陣列,ReRAM陣列)在邏輯層集成,融為一體,共同完成一個完整的計算源語的操作。并發(fā)執(zhí)行的計算源語為更細的邏輯算數(shù)運算(如與非,加法等),數(shù)據(jù)并行的潛能進一步提升。存儲陣列的字線與位線直接與存儲陣列周邊電路中的邏輯運算單元直連,存儲與計算之間的數(shù)據(jù)傳輸距離進一步縮短。根據(jù)不同的存儲Macro架構(gòu)設(shè)計,計算的并發(fā)度也會不同。如常見的比特順序流(bit-serial)模式,比特并行方式(bit-parallel)等。
最頂層是計算與存儲完全的融合。部分計算發(fā)生在存儲陣列的字線、位線甚至存儲器件的I/O上。以數(shù)字計算方式實現(xiàn)時,存儲陣列內(nèi)的計算源語通常為Bit位邏輯運算(如抑或、與操作等),需要配合周邊電路上的其他邏輯操作才能組成更為復(fù)雜的運算。以模擬計算實現(xiàn)時,存儲陣列可以基于電阻定律在每個存儲單元內(nèi)實現(xiàn)乘法操作,然后基于電流定律實現(xiàn)位線上的加法操作。模擬計算具有極大的性能和能效優(yōu)勢,缺點是需要ADC等功耗較大的模數(shù)轉(zhuǎn)換器,計算精度還可能受到一些器件工藝偏差等影響。
總之,計算與存儲距離越近,數(shù)據(jù)移動代價(延遲,帶寬)呈數(shù)量級下降,因此,計算源語的并發(fā)執(zhí)行/并行計算的潛力越大;但計算與存儲融合的越緊密,可編程性越差,越需要軟件提供大并行度,大顆粒的并發(fā)算子才能發(fā)揮存算一體的優(yōu)勢。這也是當(dāng)前主要將存算一體芯片用于加速深度學(xué)習(xí)的張量運算的主要原因。
根據(jù)存儲器介質(zhì)的不同,目前存算一體芯片的主流研發(fā)集中在傳統(tǒng)易失性存儲器,如SRAM, DRAM, 以及新型非易失性存儲器,如RRAM(ReRAM), PCM, MRAM與閃存等。
實現(xiàn)存算一體的存儲介質(zhì)有哪些?
應(yīng)用于存算一體,對于不同應(yīng)用場景,F(xiàn)lash, SRAM和以ReRAM為代表的新型存儲介質(zhì)各有特長。
Flash是最早被采用的介質(zhì),技術(shù)和工藝等各方面最成熟,比較適合中小算力存算一體設(shè)計。但相比其它介質(zhì),性能有數(shù)量級的差距,而且工藝上難以突破40nm,用于大算力芯片會面臨許多挑戰(zhàn)。
SRAM的性能優(yōu)異,而且容易實現(xiàn)DIY自主設(shè)計,常被學(xué)者采用。但密度較低、功耗較高,特別是工程實現(xiàn)難,尤其可靠性存在挑戰(zhàn),較適合中小算力存算一體芯片設(shè)計。
ReRAM新型存儲介質(zhì)在密度、性能、功耗和工程實現(xiàn)等方面,綜合來說比較平衡,沒有短板,比較適合大、中、小各類存算一體芯片,尤其是大算力芯片。
相比MRAM和PCRAM等其它新型存儲介質(zhì),ReRAM在密度和可靠性等方面更有優(yōu)勢。比如密度高到一定程度之后,MRAM和PCRAM都會存在相鄰單元被“磁”或“熱”干擾的微縮性天花板問題。ReRAM不存在這類問題,可以完全兼容先進CMOS工藝。
為什么ReRAM是最適合實現(xiàn)
存算一體AI大算力的存儲介質(zhì)?
從非易失性、存儲密度、讀寫次數(shù)、讀寫速度、讀寫功耗、未來發(fā)展?jié)摿σ约肮に嚦墒於鹊冉嵌染C合來看,ReRAM是業(yè)內(nèi)普遍認(rèn)為最適合做存算一體大算力的存儲介質(zhì),它在算力潛能、算力精度和算力效率等主要指標(biāo)上都擁有數(shù)量級的優(yōu)勢。
審核編輯:湯梓紅
評論