System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實現(xiàn)步驟摘要】
本專利技術(shù)涉及電荷域存算一體神經(jīng)網(wǎng)絡(luò)加速器體系,尤其涉及一種斐波那契編碼的存算一體單元和斐波那契編碼的稀疏計算存算一體架構(gòu)。
技術(shù)介紹
1、目前,最普遍的存算一體(cim)神經(jīng)網(wǎng)絡(luò)加速器采用電荷域的靜態(tài)隨機訪問存儲器(sram)陣列來進行計算,如圖1中所示,該結(jié)構(gòu)主要包括數(shù)字-模擬轉(zhuǎn)換器(dac)、模擬-數(shù)字轉(zhuǎn)換器(adc)和用于計算的sram陣列。其中,sram陣列以電壓幅度表示數(shù)據(jù),并執(zhí)行一比特內(nèi)積。sram陣列中的每一行都連接到一個dac進行數(shù)模轉(zhuǎn)換,而幾列共享一個adc進行計算結(jié)果的讀出。sram陣列中的每個單元都集成了數(shù)字and/xnor門或傳輸門以進行一比特乘法。在sram陣列中,一列電容器通過位線(bl)連接在一起,重新分配電荷以完成內(nèi)積的累加操作。此外,神經(jīng)網(wǎng)絡(luò)的權(quán)重通常存儲在sram中,以便重用權(quán)重數(shù)據(jù)。由于存儲模擬值會由于非理想化的模擬電路而造成神經(jīng)網(wǎng)絡(luò)精度損失,因此cim加速器將權(quán)重存儲在數(shù)字域中,并在模擬域中執(zhí)行計算。該sram陣列的計算流程是:多個二進制輸入由dac轉(zhuǎn)換為多個模擬電壓,并分別施加到sram陣列每一行的字線(wl)上。然后,sram陣列的每個單元將輸入的模擬電壓乘以相應(yīng)的1比特權(quán)重,這可以通過sram單元中的邏輯門來實現(xiàn)。之后,sram的每一列的電容器進行電荷重分配以獲得輸出電壓。最后,輸出電壓通過adc轉(zhuǎn)換為數(shù)字輸出。
2、為支持多比特的激活值和權(quán)重,現(xiàn)有cim神經(jīng)網(wǎng)絡(luò)加速器采用位串行-位并行(bsbp)方案。bsbp方案是指把一個長為n的激活值向量與一個長為n的權(quán)重向量的內(nèi)
3、cim神經(jīng)網(wǎng)絡(luò)加速器集成了若干上述sram陣列進行計算。最新的cim神經(jīng)網(wǎng)絡(luò)加速器將這些sram陣列組織成四個層次:芯片、計算塊、本地乘累加單元和sram陣列。其中,芯片包含多個計算塊,這些計算塊通過二維的片上網(wǎng)絡(luò)連接,每個計算塊都直接連接到某個片上路由器,每個路由器又可以把接收的數(shù)據(jù)發(fā)送到相鄰的其它路由器,從而一個計算塊可以把數(shù)據(jù)經(jīng)由一到多個路由器發(fā)送給任意其它計算塊,也可以進行單播、多播通信;計算塊通常包含多個本地乘累加單元、本地緩存、池化單元、量化單元和逐元素計算單元,這些單元數(shù)量不多,可以通過共享總線連接,其中本地緩存用于緩存一定數(shù)量的激活值來進行數(shù)據(jù)復(fù)用并減少外部存儲的訪問,池化單元可以執(zhí)行最大池化或者平均池化操作,量化單元執(zhí)行輸出激活值的低比特化操作,逐元素的計算單元進行多個本地乘累加單元計算結(jié)果的加和;本地乘累加單元包含多個可執(zhí)行計算的sram陣列,并使這些sram陣列按照固定的數(shù)據(jù)通路組織,以完成一個固定形狀的向量乘矩陣操作;sram陣列即上述介紹的電荷域sram存算一體單元。
4、現(xiàn)有電荷域cim神經(jīng)網(wǎng)絡(luò)加速器面臨著adc能耗大的問題。首先,神經(jīng)網(wǎng)絡(luò)的推理精度對adc分辨率很敏感。實驗證明,神經(jīng)網(wǎng)絡(luò)的推理精度會隨著adc分辨率的降低而急劇下降。在形狀為row×column的sram集成的cim神經(jīng)網(wǎng)絡(luò)加速器中,adc分辨率必須保持為log2(row),才能避免輸出的溢出(即較大的值被截斷為某個上界值)。盡管有符號的cim可以通過飽和計算將輸出電壓限制在較窄的范圍內(nèi)以減緩低分辨率adc帶來的溢出問題,但它們僅在不實用的小型神經(jīng)網(wǎng)絡(luò)或不常見的二值神經(jīng)網(wǎng)絡(luò)(bnn)上表現(xiàn)出優(yōu)勢。相比之下,當測試形狀為288×256的sram陣列上的多個具有代表性的dnn(例如resnet50)時,我們發(fā)現(xiàn)具有飽和計算的設(shè)計只能將adc分辨率從8位降低到6位,否則,除非進行昂貴的神經(jīng)網(wǎng)絡(luò)重新訓(xùn)練,那么神經(jīng)網(wǎng)絡(luò)推理精度會顯著降(例如,5位adc使dnn精度平均降低4.0%)。但是,高分辨率adc限制了能效。即使有符合的cim和飽和計算能夠?qū)dc分辨率降低到6位,在基于電荷域sram的cim架構(gòu)中,adc仍然比其他組件占據(jù)最大的能耗(64%)。以前的設(shè)計以面積開銷和性能損失為代價減輕了adc的能量。例如,利用了時序偏移校準,降低了34.3%的adc能量,但增加了25×面積開銷,因此,要在cim架構(gòu)中使用這種交錯式sar?adc來實現(xiàn)256tops峰值吞吐量,芯片面積將爆炸至約1000mm2,這是不可接受的;利用流水線和數(shù)據(jù)并行來解決adc的能效問題,然而,這會導(dǎo)致adc延遲增加,從而損失性能。總之,為了在不降低精度的情況下提高高性能電荷域sram-cim神經(jīng)網(wǎng)絡(luò)加速器的能效,一種沒有面積開銷和性能損失的低分辨率adc是迫切需要的。
技術(shù)實現(xiàn)思路
1、本專利技術(shù)的目的是解決上述現(xiàn)有技術(shù)的adc能耗瓶頸問題,提出了一種斐波那契編碼的存算一體單元、斐波那契編碼的稀疏計算存算一體體系結(jié)構(gòu)。該斐波那契編碼的存算一體單元能夠?qū)p少計算結(jié)果的范圍以降低adc分辨率,并與稀疏計算結(jié)合,集成在高吞吐存算一體神經(jīng)網(wǎng)絡(luò)加速器中,以降低累加能耗,提升能效。
2、針對現(xiàn)有技術(shù)的不足,如圖10所示,本專利技術(shù)提出一種基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其中包括:
3、初始步驟,構(gòu)建包含斐波那契編碼器的存算一體神經(jīng)網(wǎng)絡(luò)加速器,獲取待執(zhí)行的神經(jīng)網(wǎng)絡(luò)運算任務(wù);
4、運算步驟,該存算一體神經(jīng)網(wǎng)絡(luò)加速器的斐波那契編碼器將參與神經(jīng)網(wǎng)絡(luò)運算任務(wù)的激活值和權(quán)重值從二進制編碼為斐波那契編碼,得到斐波那契激活和斐波那契權(quán)重,該存算一體神經(jīng)網(wǎng)絡(luò)加速器中存算一體單元的dac將斐波那契激活轉(zhuǎn)化為多個模擬電壓,并分別施加到該存算一體單元中sram陣列每一行的字線上;該sram陣列的每個單元將輸入的模擬電壓乘以相應(yīng)的該斐波那契權(quán)重,得到中間運算結(jié)果,該sram陣列每一列的加法器對該中間運算結(jié)果進行重新分配電荷以完成內(nèi)積的累加操作,并將累加操作結(jié)果通過該存算一體單元的adc轉(zhuǎn)換為斐波那契編碼的數(shù)字格式,作為該神經(jīng)網(wǎng)絡(luò)運算任務(wù)的運算結(jié)果。
5、所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其中該存算一體單元包含sram絕對值單元、sram符號單元、以及dac、adc、該斐波那契編碼器和斐波那契編碼的加法器;
6、該sram符號單元和該sram絕對值單元存儲斐波那契編碼格式的權(quán)重值;該斐波那契編碼器使用硬件查找表將二進制格式的數(shù)字轉(zhuǎn)換為斐波那契編碼格式,該加法器將多個sram列的中間計算結(jié)果相加為一個多比特內(nèi)積結(jié)果。
7、所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其中
8、多個該sram絕對值單元和該sram符號單元形成斐波那契編碼的權(quán)重陣列;多列絕對值單元的位線輸出本文檔來自技高網(wǎng)...
【技術(shù)保護點】
1.一種基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,包括:
2.如權(quán)利要求1所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,該存算一體單元包含SRAM絕對值單元、SRAM符號單元、以及DAC、ADC、該斐波那契編碼器和斐波那契編碼的加法器;
3.如權(quán)利要求2所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,
4.如權(quán)利要求1或2所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,該存算一體神經(jīng)網(wǎng)絡(luò)加速器包括:芯片、計算塊和由累加器和SRAM陣列構(gòu)成的存算一體單元;
5.一種基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,包括:
6.如權(quán)利要求5所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,該存算一體單元包含SRAM絕對值單元、SRAM符號單元、以及DAC、ADC、該斐波那契編碼器和斐波那契編碼的加法器;
7.如權(quán)利要求6所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,
8.一種電子設(shè)備,其特征在于,包括權(quán)利要求5-7所
9.一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求1-4中任一所述存算一體神經(jīng)網(wǎng)絡(luò)加速方法的步驟。
10.一種計算機程序產(chǎn)品,包括計算機程序,其特征在于,該計算機程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求1-4中任一所述存算一體神經(jīng)網(wǎng)絡(luò)加速方法的步驟。
...【技術(shù)特征摘要】
1.一種基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,包括:
2.如權(quán)利要求1所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,該存算一體單元包含sram絕對值單元、sram符號單元、以及dac、adc、該斐波那契編碼器和斐波那契編碼的加法器;
3.如權(quán)利要求2所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,
4.如權(quán)利要求1或2所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速方法,其特征在于,該存算一體神經(jīng)網(wǎng)絡(luò)加速器包括:芯片、計算塊和由累加器和sram陣列構(gòu)成的存算一體單元;
5.一種基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,包括:
6.如權(quán)利要求5所述的基于斐波那契編碼的存算一體神經(jīng)網(wǎng)絡(luò)加速器,其特征在于...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:杜子?xùn)|,郭泓銳,鄒沫,郝一帆,劉洋,趙永威,張蕊,胡杏,徐志偉,郭崎,陳天石,
申請(專利權(quán))人:中國科學(xué)院計算技術(shù)研究所,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。