存算一體或存內(nèi)計(jì)算是將存儲(chǔ)與計(jì)算完全融合,直接利用存儲(chǔ)器進(jìn)行數(shù)據(jù)處理或計(jì)算。在傳統(tǒng)的馮諾依曼架構(gòu)下,數(shù)據(jù)的存儲(chǔ)和計(jì)算是分開的,由于存儲(chǔ)和計(jì)算的性能存在加大的差距,處理器訪問存儲(chǔ)數(shù)據(jù)的速率遠(yuǎn)遠(yuǎn)小于處理器計(jì)算速率,數(shù)據(jù)在內(nèi)存與主存之間搬運(yùn)的過程其能耗也遠(yuǎn)遠(yuǎn)高于處理器的計(jì)算所消耗的能量。
從NPU和TPU的架構(gòu)設(shè)計(jì)可以看出,其本質(zhì)都是在解決數(shù)據(jù)高效訪存的問題,只是實(shí)現(xiàn)方式略有差異。總結(jié)看來主要包括了:
通過提高通信帶寬實(shí)現(xiàn)數(shù)據(jù)的高速傳輸和降低功耗。
將數(shù)據(jù)存儲(chǔ)盡量靠近計(jì)算單元,從而降低數(shù)據(jù)搬運(yùn)的延遲和功耗,比如多級(jí)緩存和片上存儲(chǔ)。
提高數(shù)據(jù)在時(shí)間和空間上的復(fù)用效率,減少數(shù)據(jù)與主存的通信次數(shù)。
存算一體通過將計(jì)算單元和存儲(chǔ)單元集成在同一個(gè)芯片,讓存儲(chǔ)單元具有計(jì)算能力,使得計(jì)算可以在存儲(chǔ)器單元內(nèi)完成,極大的降低了數(shù)據(jù)搬運(yùn)帶來的延遲和功耗,其特別適用于深度學(xué)習(xí)這種需要大規(guī)模的數(shù)據(jù)搬運(yùn)和大規(guī)模并行計(jì)算的場景。
存內(nèi)計(jì)算
存內(nèi)計(jì)算一般包括數(shù)字計(jì)算和模擬計(jì)算兩種實(shí)現(xiàn)方式,模擬計(jì)算能效高但計(jì)算精準(zhǔn)度低,數(shù)字計(jì)算計(jì)算精準(zhǔn)度高但功耗較大,當(dāng)前主流的存內(nèi)計(jì)算主要還是以模擬計(jì)算為主。
模擬存內(nèi)計(jì)算主要基于物理定律在存算陣列上實(shí)現(xiàn)乘加運(yùn)算,以憶阻器上的矩陣乘法MxN為例,運(yùn)算前,先將矩陣M按行列位置存入憶阻器,在輸入端矩陣M使用不同電壓值來表示,根據(jù)歐姆定律和基爾霍夫定律在輸出端可以得到對應(yīng)的乘加后電流矢量,多個(gè)存算陣列并行,便可完成多個(gè)矩陣乘法計(jì)算。
數(shù)字存內(nèi)計(jì)算是通過在存儲(chǔ)陣列中加入與或門、乘法器、加法器等邏輯計(jì)算電路,使存儲(chǔ)陣列不僅具備存儲(chǔ)功能還具備計(jì)算能力。由于需要為每個(gè)存儲(chǔ)單元增加了邏輯電路,所以其在芯片面積上并不占優(yōu)勢,限制了其計(jì)算能力的拓展,因此,當(dāng)前數(shù)字存內(nèi)計(jì)算實(shí)現(xiàn)更多的采用先進(jìn)工藝來實(shí)現(xiàn),由于工藝和成本的因素,其應(yīng)用范圍受到了比較大的限制。
類腦計(jì)算
基于人腦的脈沖(spiking)模擬計(jì)算框架下的脈沖神經(jīng)網(wǎng)絡(luò) (SNN)有望在實(shí)現(xiàn)人工智能的同時(shí)降低計(jì)算平臺(tái)的能耗。
在SNN模型中上游神經(jīng)脈沖Vi通過突觸權(quán)重Wi調(diào)節(jié),在給定時(shí)間內(nèi)產(chǎn)生的合成電流 ∑iVi?Wi等效于點(diǎn)積運(yùn)算。從圖例可以看出,脈沖計(jì)算通過電流的進(jìn)出模擬神經(jīng)元計(jì)算過程,整個(gè)系統(tǒng)基于事件驅(qū)動(dòng),深度學(xué)習(xí)網(wǎng)絡(luò)計(jì)算又是高度稀疏的,所以通過脈沖通信和計(jì)算可以實(shí)現(xiàn)極低能耗下大規(guī)模并行計(jì)算。
脈沖計(jì)算示例圖
從脈沖計(jì)算過程可以看到,脈沖計(jì)算的硬件結(jié)構(gòu)需要存算一體的體系設(shè)計(jì)將神經(jīng)元和突觸陣列緊密放置在一起。所以當(dāng)前的脈沖神經(jīng)網(wǎng)絡(luò)芯片基本都采用模擬存內(nèi)計(jì)算的存算一體的架構(gòu)設(shè)計(jì)。
技術(shù)挑戰(zhàn)
存內(nèi)計(jì)算雖然有很多的優(yōu)勢,但商業(yè)應(yīng)用上還面臨著諸多挑戰(zhàn),其在器件研發(fā)、電路設(shè)計(jì)、芯片架構(gòu)、生成制造、EDA工具鏈以及軟件算法等環(huán)節(jié)都還面臨不少的問題需要解決和突破,整體技術(shù)成熟度較弱。
存算一體化需要同時(shí)滿足存儲(chǔ)和計(jì)算兩者的設(shè)計(jì)需求,比如存儲(chǔ)單元的可靠性、擦寫次數(shù)、器件一致性等,計(jì)算單元的響應(yīng)速度、功耗等。從當(dāng)前半導(dǎo)體電路設(shè)計(jì)和制造工藝,要同時(shí)兼顧難度較大。
受限于工藝和芯片面積,當(dāng)前商用存內(nèi)計(jì)算的芯片算力較小,能支持的算力和算子有限,所以能力支持的神經(jīng)網(wǎng)絡(luò)算法也有限,通用性較差。
當(dāng)前主流的模擬存內(nèi)計(jì)算的計(jì)算精準(zhǔn)度較差,計(jì)算結(jié)果不準(zhǔn)確會(huì)導(dǎo)致實(shí)際計(jì)算結(jié)果與理想結(jié)果產(chǎn)生偏差。數(shù)字存內(nèi)計(jì)算的雖然計(jì)算精準(zhǔn)度高,但運(yùn)算開銷較大。
當(dāng)前邏輯單元電路實(shí)現(xiàn)還是以基于二進(jìn)制數(shù)字精準(zhǔn)運(yùn)算為主,模擬運(yùn)算在理論和電路實(shí)現(xiàn)上相對缺乏,導(dǎo)致模擬計(jì)算的芯片實(shí)現(xiàn)難度較高。
存內(nèi)計(jì)算芯片設(shè)計(jì)與常規(guī)芯片有較大差異,現(xiàn)有的EDA工具無法提供標(biāo)準(zhǔn)單元庫以供芯片設(shè)計(jì)者使用,缺乏大規(guī)模存算陣列的快速開發(fā)工具導(dǎo)致產(chǎn)品化效率低。
鄭重聲明:文中僅代表作者觀點(diǎn),不代表本公司觀點(diǎn),本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或者刪除,感謝您的關(guān)注!