縱觀全球,,研究人員在內(nèi)存計(jì)算(in-memory computing)架構(gòu)上的研究非?;钴S。在最近的國(guó)際固態(tài)電路會(huì)議(ISSCC 2021)上,,針對(duì)新穎的存儲(chǔ)器陣列技術(shù)的多個(gè)技術(shù)會(huì)議專門用于支持機(jī)器學(xué)習(xí)算法的計(jì)算需求,。
眾所周知,現(xiàn)在將數(shù)據(jù)和權(quán)重值從內(nèi)存移動(dòng)到處理單元,,然后再將中間結(jié)果存儲(chǔ)回內(nèi)存的做法效率低下,。因?yàn)樾畔鬏斶^(guò)程中不僅增加了計(jì)算延遲,而且相關(guān)的功耗是一個(gè)主要問(wèn)題,。
如下所示,,“無(wú)增值”的數(shù)據(jù)移動(dòng)消耗了大部分的能耗,這個(gè)比例甚至可能大于“增值”計(jì)算的能量消耗,。請(qǐng)注意,,實(shí)際的計(jì)算能耗是與數(shù)據(jù)和權(quán)重傳遞到計(jì)算單元相關(guān)的一小部分。
而存內(nèi)計(jì)算的目標(biāo)是減少這些低效率,,這對(duì)于在邊緣實(shí)施機(jī)器學(xué)習(xí)推理系統(tǒng)尤其重要,。
機(jī)器學(xué)習(xí)應(yīng)用中的存內(nèi)計(jì)算的主要重點(diǎn)是優(yōu)化與每個(gè)神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)關(guān)聯(lián)的向量乘法累加(MAC)操作。下圖說(shuō)明了(訓(xùn)練的)網(wǎng)絡(luò)的計(jì)算——每個(gè)數(shù)據(jù)輸入乘以權(quán)重值的乘積,,然后提供給偏差和激活函數(shù),。
對(duì)于一般網(wǎng)絡(luò),數(shù)據(jù)和權(quán)重通常是多位數(shù),。權(quán)重向量(對(duì)于經(jīng)過(guò)訓(xùn)練的邊緣AI網(wǎng)絡(luò))可以使用有符號(hào),,無(wú)符號(hào)或二進(jìn)制補(bǔ)碼整數(shù)位表示形式。
對(duì)于存內(nèi)計(jì)算,,最終的MAC輸出是通過(guò)添加部分乘法乘積來(lái)實(shí)現(xiàn)的,。節(jié)點(diǎn)中每個(gè)(數(shù)據(jù)*權(quán)重)弧(arc)的位寬是定義明確的-例如,,2n位向量覆蓋2 n位無(wú)符號(hào)整數(shù)的乘積,。但是,將所有弧的(數(shù)據(jù)*權(quán)重)乘積累加到高度連接的網(wǎng)絡(luò)中可能需要更多的位才能準(zhǔn)確表示MAC結(jié)果,。
存內(nèi)計(jì)算研究的重點(diǎn)領(lǐng)域之一是使用電阻RAM(ReRAM)位單元實(shí)現(xiàn)位線電流檢測(cè)測(cè)量,。數(shù)據(jù)輸入(作為活動(dòng)存儲(chǔ)器行字線)和存儲(chǔ)在ReRAM單元中的權(quán)重值的乘積會(huì)產(chǎn)生可區(qū)分的位線電流,,該電流用于為參考電容充電。后續(xù)的模數(shù)轉(zhuǎn)換器(ADC)將該電容器電壓轉(zhuǎn)換為等效的二進(jìn)制值,,以進(jìn)行后續(xù)的MAC移位累加,。盡管(數(shù)據(jù)*權(quán)重)產(chǎn)品基于ReRAM的實(shí)現(xiàn)具有區(qū)域效率,但它也有其缺點(diǎn):
由于電壓范圍,,噪聲和PVT的變化,,模擬位線電流檢測(cè)和ADC的精度受到限制
ReRAM陣列的寫(xiě)入周期時(shí)間長(zhǎng)
ReRAM陣列的耐用性嚴(yán)重限制了其作為通用內(nèi)存存儲(chǔ)陣列的適用性
這些問(wèn)題都得出相同的結(jié)論。對(duì)于一個(gè)相對(duì)較小的推理神經(jīng)網(wǎng)絡(luò),,其中所有權(quán)重都可以加載到內(nèi)存陣列中,,并且數(shù)據(jù)矢量表示受到限制(例如8位或更少),基于ReRAM的實(shí)現(xiàn)將帶來(lái)部門優(yōu)勢(shì),。
但是,,對(duì)于需要網(wǎng)絡(luò)大于陣列中存儲(chǔ)的網(wǎng)絡(luò)和/或需要重新配置的工作量的機(jī)器學(xué)習(xí)應(yīng)用,更新權(quán)重值通常會(huì)阻止使用ReRAM當(dāng)前檢測(cè)方法,。在數(shù)據(jù)精度要求很高的情況下,,同樣的問(wèn)題也適用,因此需要更大的輸入向量,。
存內(nèi)計(jì)算體系結(jié)構(gòu)的替代方法是利用增強(qiáng)的SRAM陣列來(lái)支持(數(shù)據(jù)*權(quán)重)計(jì)算,,而不是采用新穎的存儲(chǔ)技術(shù)。這允許支持更豐富的機(jī)器學(xué)習(xí)網(wǎng)絡(luò)集,。
如果層數(shù)很大,,則可以將輸入值和權(quán)重值加載到SRAM陣列中以進(jìn)行節(jié)點(diǎn)計(jì)算,保存輸出值以及檢索后續(xù)的層值,。與通用計(jì)算解決方案相比,,減少了與數(shù)據(jù)和權(quán)重傳遞相關(guān)的能耗,并且消除了ReRAM耐久性的問(wèn)題,。
使用擴(kuò)展SRAM設(shè)計(jì)的存內(nèi)計(jì)算
在最近的ISSCC上,,臺(tái)積電的研究人員提出了一種基于數(shù)字改良的SRAM設(shè)計(jì)存內(nèi)計(jì)算方案,能支持更大的神經(jīng)網(wǎng)絡(luò),。
上圖顯示了臺(tái)積電用于其測(cè)試的擴(kuò)展SRAM陣列配置——陣列的一部分被圈出,。每個(gè)切片具有256個(gè)數(shù)據(jù)輸入,它們連接到“ X”邏輯(稍后將對(duì)此邏輯進(jìn)行更多介紹),。數(shù)據(jù)輸入向量的連續(xù)位在連續(xù)的時(shí)鐘周期中提供給“ X”門。每個(gè)切片存儲(chǔ)256個(gè)4位權(quán)重段,,每個(gè)數(shù)據(jù)輸入一個(gè)權(quán)重半字節(jié),。這些權(quán)重位使用常規(guī)的SRAM單元,因?yàn)樗鼈兛赡軙?huì)經(jīng)常更新,。存儲(chǔ)在每個(gè)權(quán)重位中的值連接到“ X”邏輯的另一個(gè)輸入,。
下圖說(shuō)明了如何將此邏輯集成到SRAM中,。
其中,“ X”是2輸入或非門,,具有數(shù)據(jù)輸入和權(quán)重位作為輸入,。(兩個(gè)“一位”值的乘積由“與”門實(shí)現(xiàn);通過(guò)使用反相信號(hào)值和DeMorgan定理,,2輸入“或非”門在面積和功率方面都具有效率,。)在每個(gè)限幅之間,有一個(gè)加法器樹(shù)和一個(gè)加法器樹(shù),。集成了部分和累加器邏輯,,如下所示。
請(qǐng)注意,,上圖中的加權(quán)位存儲(chǔ)使用常規(guī)的SRAM拓?fù)?對(duì)于6T的位單元,,加權(quán)位字線和位線照常連接。每個(gè)單元上的存儲(chǔ)值都扇出到或非門的一個(gè)輸入,。
每個(gè)切片的輸出表示每個(gè)權(quán)重向量的半字節(jié)的部分乘積和,。擴(kuò)展數(shù)組之外的其他邏輯提供了移位和相加計(jì)算,以實(shí)現(xiàn)更寬的權(quán)重值表示,。例如,,(有符號(hào)或無(wú)符號(hào)整數(shù))16位權(quán)重將合并來(lái)自四個(gè)條帶的累加器結(jié)果。
現(xiàn)場(chǎng)測(cè)試結(jié)果
下方顯示的是臺(tái)積電基于全數(shù)字SRAM的測(cè)試工具的顯微照片,,突出顯示了256輸入,,16切片(4位重量半字節(jié))的宏設(shè)計(jì)。
請(qǐng)注意,,基于SRAM的Compute-in-Memory宏的關(guān)鍵規(guī)范之一是可以在陣列中更新新權(quán)重的效率,。
相對(duì)于電源電壓的測(cè)量性能(TOPS)和功率效率(TOPS / W)如下所示。請(qǐng)注意,,基于數(shù)字邏輯的MAC的使用可在很寬的電源電壓范圍內(nèi)提供功能,。
(從理論上講,,通常用于描述神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)功率效率的TOPS / W品質(zhì)因數(shù)可能是一種誤導(dǎo)性度量–它在很大程度上取決于陣列中權(quán)重的“密度”和翻轉(zhuǎn)率下圖還有一張圖,,說(shuō)明了此度量如何取決于輸入切換率,假設(shè)權(quán)重向量中“ 1”值的比率為50%,。)
盡管此內(nèi)存計(jì)算測(cè)試站點(diǎn)是在較舊的22nm工藝中制造的,,但將這種設(shè)計(jì)擴(kuò)展到5nm節(jié)點(diǎn)時(shí),TSMC研究人員提供了初步的面積和功率效率估算,。
總結(jié)
研究人員目前正在進(jìn)行大量研究活動(dòng),,以支持用于機(jī)器學(xué)習(xí)的存內(nèi)計(jì)算,以減少馮·諾依曼架構(gòu)中數(shù)據(jù)傳輸?shù)男实拖?。研究的一個(gè)方面是尋求使用新的內(nèi)存存儲(chǔ)技術(shù),,例如ReRAM,。但ReRAM的有限耐用性將這種方法的范圍限制在權(quán)重值不會(huì)經(jīng)常更新的應(yīng)用中。位線電流檢測(cè)的有限精度也限制了數(shù)據(jù)輸入向量的寬度,。
臺(tái)積電(TSMC)展示了如何擴(kuò)展常規(guī)SRAM陣列以支持大型和/或可重新配置網(wǎng)絡(luò)的內(nèi)存計(jì)算,,并且需要頻繁寫(xiě)入權(quán)重值。在SRAM行和列之間插入2輸入或非門和加法器樹(shù)邏輯提供了一種節(jié)省面積和功耗的方法,。