本發(fā)明涉及一種面向卷積神經(jīng)網(wǎng)絡(luò)的低功耗電壓可調(diào)卷積運算模塊,利用卷積運算中存在數(shù)據(jù)大量重用的規(guī)律,實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行大數(shù)量循環(huán)卷積運算,對數(shù)據(jù)進(jìn)行重用。在卷積網(wǎng)絡(luò)的一層卷積運算中,根據(jù)數(shù)據(jù)重用頻度比例,在緩存中的不同存儲片區(qū)中選取不同電壓,降低功耗。屬于神經(jīng)網(wǎng)絡(luò)硬件加速器
技術(shù)領(lǐng)域:
。
背景技術(shù):
:卷積運算在圖像處理領(lǐng)域有著廣泛的用途,例如在圖像濾波、圖像增強(qiáng)、圖像分析等處理時都要用到卷積運算,圖像卷積運算實質(zhì)是一種矩陣運算,其特點是運算量大,并且數(shù)據(jù)復(fù)用率高,用軟件計算圖像卷積很難達(dá)到實時性的要求。卷積神經(jīng)網(wǎng)絡(luò)作為一種前饋多層神經(jīng)網(wǎng)絡(luò),能夠?qū)Υ罅坑袠?biāo)簽數(shù)據(jù)進(jìn)行自動學(xué)習(xí)并從中提取復(fù)雜特征,卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點在于只需要對輸入圖像進(jìn)行較少的預(yù)處理就能夠從像素圖像中識別出視覺模式,并且對有較多變化的識別對象也有較好的識別效果,同時卷積神經(jīng)網(wǎng)絡(luò)的識別能力不易受到圖像的畸變或簡單幾何變換的影響。作為多層人工神經(jīng)網(wǎng)絡(luò)研究的一個重要方向,卷積神經(jīng)網(wǎng)絡(luò)多年來一直是研究的熱點。傳統(tǒng)方式卷積運算的緩存是直接從外部存儲讀取,由于受到數(shù)據(jù)讀取帶寬的限制,以及沒有可配置陣列,完成多層卷積循環(huán)運算,效率較低。如果能把進(jìn)入緩存中的一塊數(shù)據(jù)完全利用,不用根據(jù)軌跡的變化,不斷從外存中讀取,將降低吞吐要求,并且解決了不同重用次數(shù)數(shù)據(jù)之間存在讀取時間等待的問題,即不同緩存區(qū)域數(shù)據(jù)可以對應(yīng)不同讀取主頻這里選用不同電壓的緩存,那些重用次數(shù)低,對讀取主頻要求的數(shù)據(jù)可以在低電壓緩存區(qū)域,根據(jù)低重用次數(shù)數(shù)據(jù)的占比,可以動態(tài)調(diào)節(jié)電壓,降低功耗。對于典型卷積神經(jīng)網(wǎng)絡(luò),其卷積計算量占據(jù)整體計算的主要部分,而卷積計算時,圖像數(shù)據(jù)矩陣中許多數(shù)據(jù)會被同一卷積核重用多次,而且存在多個卷積核,這樣就會存在更多數(shù)據(jù)重用。卷積網(wǎng)絡(luò)卷積運動是十分有規(guī)律的,如果具體到每個數(shù)據(jù)的重用次數(shù),根據(jù)讀取頻度做存儲分配,不同緩存對應(yīng)不同電壓,不同于原有電壓不考慮讀取次數(shù)多少的問題,功耗會大為降低。目前便攜式設(shè)備最主要的問題就是功耗,而本發(fā)明的出發(fā)點就是通過重用次數(shù)分析,數(shù)據(jù)在不同電壓緩存中分布,降低功耗。技術(shù)實現(xiàn)要素:發(fā)明目的:針對現(xiàn)有技術(shù)中存在的卷積計算中吞吐量低等問題,本發(fā)明提供一種面向卷積神經(jīng)網(wǎng)絡(luò)的低功耗電壓可調(diào)卷積運算模塊,可以加速完成大數(shù)量卷積計算的要求,對數(shù)據(jù)進(jìn)入緩存是規(guī)整讀取數(shù)據(jù)塊再轉(zhuǎn)換為一維數(shù)據(jù),降低對寬帶的壓力。根據(jù)輸入圖像數(shù)據(jù)重用結(jié)構(gòu),利用循環(huán)卷積運算中的高重用率特性,對應(yīng)不同重用次數(shù)在數(shù)據(jù)中的占比,可以調(diào)節(jié)電壓,平衡不同重用次數(shù)間的讀取速率,達(dá)到降低功耗的目的,并且卷積運算的卷積核及圖片規(guī)模變化都適用于此方法。技術(shù)方案:一種面向卷積神經(jīng)網(wǎng)絡(luò)的低功耗電壓可調(diào)卷積運算模塊,包括數(shù)據(jù)傳輸單元、電壓可調(diào)緩存單元、卷積計算單元三部分。所述數(shù)據(jù)傳輸單元,將計算數(shù)據(jù)根據(jù)此次卷積運算的卷積核及圖片的規(guī)模大小,獲得圖像數(shù)據(jù)重用分布,切割數(shù)據(jù)塊與卷積核大小一致,并轉(zhuǎn)換為一維數(shù)據(jù)進(jìn)入電壓可調(diào)緩存單元。在電壓可調(diào)緩存單元,根據(jù)進(jìn)入電壓可調(diào)緩存單元的一維數(shù)據(jù)的重用次數(shù)累加和,與達(dá)到此累加和的先后順序,仲裁在緩存單元中不同存儲片區(qū)的排布,按重用頻度從高到低的排布,選取高重用頻度數(shù)據(jù)(重用6次及以上)進(jìn)入高電壓緩存區(qū)域,低重用頻度數(shù)據(jù)(重用5次及以下)進(jìn)入低電壓緩存區(qū)域,根據(jù)重用頻度將數(shù)據(jù)存儲至相應(yīng)電壓的緩存區(qū)域。分好區(qū)域后,存儲片區(qū)數(shù)據(jù)讀取的快慢要求較大,即主頻差異較大,最高讀取次數(shù)和最低讀取次數(shù)相差數(shù)倍,如果依照重用頻度分塊,使不同區(qū)域電壓實現(xiàn)可調(diào),高重用次數(shù)處,電壓較高,低重用次數(shù)處電壓變低,這樣模塊的功耗大大降低。針對低主頻卷積計算,可通過降低電源電壓的方式來有效的降低功耗(正比于電壓平方次)。當(dāng)重用次數(shù)較高時,這時系統(tǒng)可以讓處理器工作在常規(guī)電源電壓,實現(xiàn)電壓可調(diào)可以使能效比大為提高。在卷積計算單元中,使多個卷積核同時對緩存中一個片區(qū)的圖像數(shù)據(jù)進(jìn)行卷積,這里并行實現(xiàn),且在電壓可調(diào)緩存單元中緩存的圖像數(shù)據(jù)需要根據(jù)卷積運算的原有軌跡,完成原有軌跡一次卷積運算的相加運算,這里采用crossbar結(jié)構(gòu),完成卷積運算的輸出。卷積計算中相乘運算完成后,每個值和多個權(quán)重值相乘,會得到多個結(jié)果,根據(jù)軌跡進(jìn)入臨時寄存器,待選取部分相乘完成,就會把一次卷積軌跡填滿,這里是并行化完成的,最終相加得到終值。卷積相乘結(jié)果存進(jìn)來只用一次,卷積計算單元內(nèi)部相加單元對應(yīng)臨時寄存器選取crossbar結(jié)構(gòu),臨時數(shù)據(jù)寄存器單元tdr與計算單元的互連,臨時數(shù)據(jù)寄存器之間的互連,臨時數(shù)據(jù)寄存器陣列中每一行的任意一個臨時數(shù)據(jù)寄存器,其輸入數(shù)據(jù)可以來自其上一行的任意一個臨時數(shù)據(jù)寄存器,并且最頂行臨時寄存器的輸入,連接到最底行臨時寄存器的數(shù)據(jù)輸出端,從而整個臨時數(shù)據(jù)寄存器陣列構(gòu)成了一個單向循環(huán)互連的拓?fù)浣Y(jié)構(gòu)。有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明提供的面向卷積神經(jīng)網(wǎng)絡(luò)的低功耗電壓可調(diào)卷積運算模塊,可以大幅提高卷積計算中的訪存速度,減少訪存開銷,提升卷積計算的速度和效率。附圖說明圖1為圖像數(shù)據(jù)為9×9,卷積核為3×3的數(shù)據(jù)分類示意圖;圖2為卷積計算中數(shù)據(jù)為偶矩陣時重用次數(shù)分布圖;圖3為卷積計算中數(shù)據(jù)為奇矩陣時重用次數(shù)分布圖;圖4為基于寬電壓sram的低功耗卷積神經(jīng)網(wǎng)絡(luò)卷積運算設(shè)計整體框圖;圖5為基于寬電壓sram的低功耗卷積神經(jīng)網(wǎng)絡(luò)卷積運算設(shè)計流程圖。具體實施方式下面結(jié)合具體實施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對本發(fā)明的各種等價形式的修改均落于本申請所附權(quán)利要求所限定的范圍。面向卷積神經(jīng)網(wǎng)絡(luò)的低功耗電壓可調(diào)卷積運算模塊,包括數(shù)據(jù)傳輸單元、電壓可調(diào)緩存單元、卷積計算單元三部分。數(shù)據(jù)傳輸單元,用于傳輸圖像數(shù)據(jù)進(jìn)入電壓可調(diào)緩存單元;電壓可調(diào)緩存單元用以根據(jù)數(shù)據(jù)重用頻度,將數(shù)據(jù)分布于不同電壓的存儲片區(qū);卷積計算單元卷將存儲片區(qū)的數(shù)據(jù)進(jìn)行卷積運算,輸出運算結(jié)果;數(shù)據(jù)傳輸單元,將計算數(shù)據(jù)根據(jù)此次卷積運算的卷積核及圖片的規(guī)模大小,獲得圖像數(shù)據(jù)重用分布,切割合適寬度數(shù)據(jù)塊轉(zhuǎn)換為一維數(shù)據(jù)進(jìn)入電壓可調(diào)緩存單元;在電壓可調(diào)緩存單元,根據(jù)進(jìn)入電壓可調(diào)緩存單元的一維數(shù)據(jù)的重用次數(shù)累加和,與達(dá)到此累加和的先后順序,仲裁在緩存單元中不同存儲片區(qū)的排布,按重用頻度從高到低的排布,選取高重用頻度數(shù)據(jù)進(jìn)入高電壓緩存區(qū)域,低重用頻度數(shù)據(jù)進(jìn)入低電壓緩存區(qū)域,根據(jù)頻度重用數(shù)據(jù)占比來調(diào)節(jié)存儲片區(qū)電壓;在卷積計算單元中,使多個卷積核同時對緩存中一個片區(qū)的數(shù)據(jù)進(jìn)行卷積,這里并行實現(xiàn),且在電壓可調(diào)緩存單元中緩存的圖像數(shù)據(jù)需要根據(jù)卷積運算的原有軌跡,完成原有軌跡一次卷積運算的相加運算,這里采用crossbar結(jié)構(gòu),完成卷積運算的輸出。數(shù)據(jù)傳輸單元包括數(shù)據(jù)仲裁模塊、數(shù)據(jù)讀取模塊;數(shù)據(jù)仲裁模塊根據(jù)此層數(shù)據(jù)卷積運算卷積核和圖像數(shù)據(jù)的規(guī)模大小,對應(yīng)數(shù)據(jù)的重用頻度分布,判定選取二維圖像數(shù)據(jù)的拼接區(qū)域大??;當(dāng)圖像數(shù)據(jù)和卷積核的規(guī)模確定時,整個圖像數(shù)據(jù)的重用頻度分布在卷積運算算法的基礎(chǔ)上已經(jīng)確定,在電壓可調(diào)緩存單元,不同數(shù)據(jù)讀取頻度存放在不同存儲片區(qū)上,以降低功耗開銷;數(shù)據(jù)讀取模塊,根據(jù)切割圖片大小,將此區(qū)域數(shù)據(jù)多行拼接為一行,進(jìn)入電壓可調(diào)緩存單元。電壓可調(diào)緩存單元,包括重用頻度判斷模塊、優(yōu)先級判斷模塊、電壓調(diào)節(jié)及數(shù)據(jù)讀取判斷模塊;重用頻度判斷模塊根據(jù)數(shù)據(jù)的重用頻度分布,將一維數(shù)據(jù)進(jìn)入緩存的重用次數(shù)累積求和,基于累積和確定在緩存中的排布順序;在緩存過程中,高累積和在緩存的偏上區(qū)域,低累積和在偏下區(qū)域,當(dāng)累積和相同時,根據(jù)到達(dá)此累積和的先后順序進(jìn)行排列,即優(yōu)先級判斷模塊根據(jù)卷積過程中原軌跡,判定到達(dá)此邏輯和的先后順序,在存儲片區(qū)中由高到低依次排列;電壓調(diào)節(jié)及數(shù)據(jù)讀取判斷模塊,根據(jù)低重用次數(shù)數(shù)據(jù)的比例,調(diào)節(jié)不同存儲片區(qū)的電壓,數(shù)據(jù)重用頻度低于5次(含),選擇較低電壓(典型值:0.6v);,重用頻度高于6次(含),采用較高電壓(典型值:1.1v);同時,在存儲片區(qū)內(nèi)數(shù)據(jù)重用頻度基本一致時,不同存儲片區(qū)選擇相同電壓;如果重用頻度處理緩存模塊中數(shù)據(jù)被卷積運算陣列讀取,需要從數(shù)據(jù)傳輸單元中更新數(shù)據(jù),并傳輸給卷積計算單元。卷積計算單元利用在電壓可調(diào)緩存單元排布的數(shù)據(jù)運算,包括乘運算模塊、卷積軌跡判斷模塊和加運算模塊;乘運算模塊中,進(jìn)入卷積運算陣列的數(shù)據(jù)會和一個卷積核中多個權(quán)重相乘,得到多個結(jié)果對應(yīng)多次卷積軌跡;卷積軌跡判斷模塊中要根據(jù)卷積運算原有卷積軌跡,將相乘結(jié)果存在crossbar結(jié)構(gòu)的臨時數(shù)據(jù)寄存器中,在加運算模塊中利用根據(jù)卷積軌跡判斷模塊已存放的結(jié)果,完成相加運算,得到卷積運算結(jié)果。卷積運算數(shù)據(jù)重用頻度分析,其是在卷積運算算法分析基礎(chǔ)上提取出的,根據(jù)卷積核及圖像矩陣規(guī)模大小,圖像數(shù)據(jù)矩陣中每個數(shù)據(jù)都具有自身的重用頻度,在進(jìn)行卷積運算前,數(shù)據(jù)重用頻度分布就已得到;整體規(guī)律趨勢是圖像數(shù)據(jù)矩陣邊角處數(shù)據(jù)重用頻度低,中心處數(shù)據(jù)重用頻度高;根據(jù)數(shù)據(jù)重用頻度分布,為數(shù)據(jù)傳輸單元提供拼接數(shù)據(jù)塊大小,及電壓可調(diào)緩存單元累積求和提供依據(jù)。數(shù)據(jù)傳輸單元、電壓可調(diào)緩存單元、卷積計算單元三部分相互配合,首先,將計算數(shù)據(jù)根據(jù)此次卷積運算的卷積核及圖片的規(guī)模大小,獲得圖像數(shù)據(jù)重用次數(shù)分布,切割數(shù)據(jù)塊與卷積核大小一致,拼接為一維數(shù)據(jù)進(jìn)入電壓調(diào)節(jié)緩存單元。如圖1所示,面向卷積神經(jīng)網(wǎng)絡(luò)的低功耗電壓可調(diào)卷積運算模塊,選取圖片數(shù)據(jù)為9×9矩陣,卷積核為3×3矩陣,一次卷積運算是對二維圖像數(shù)據(jù)進(jìn)行卷積,這里是多張圖片同時卷積,訪存要求較高,在訪存采用拼接的方法將二維數(shù)據(jù)轉(zhuǎn)換為一維數(shù)據(jù),數(shù)據(jù)區(qū)域只讀取一次,提高訪存效率,降低外存功耗。這里存在2×2、3×3、5×5等多種卷積核大小時組成一維模式,對于一片區(qū)域只需發(fā)起一次訪問,而不需多次。選取大小為m*m的圖像,大小為k*k的卷積核為例。卷積運算算法特征是一致的,當(dāng)m>=2k-1時,對應(yīng)卷積結(jié)構(gòu)如下表所示:被卷積的次數(shù)被卷積對應(yīng)次數(shù)的數(shù)據(jù)單元個數(shù)1428…………k4n…………2k4n…………(k-1)*k4nk*kn2m越大,即輸入矩陣的規(guī)模越大,卷積的次數(shù)最大值越大,卷積次數(shù)為k,2k,3k……(k-1)的子單元的數(shù)目為4n(其中參數(shù)n的數(shù)值計算方式:當(dāng)m=2k-1時n=1;m每增加1,n就增加1);當(dāng)卷積次數(shù)為其他值的時候,對應(yīng)的子單元的數(shù)目是一個固定值。推廣到更一般的情況,如圖2為卷積計算中卷積數(shù)據(jù)為偶陣列時重用次數(shù)分布圖,及圖3為卷積計算中卷積數(shù)據(jù)為奇陣列時重用次數(shù)分布圖,即在邊緣處的圖像數(shù)據(jù)被重用次數(shù)少,中間處圖像數(shù)據(jù)被重用次數(shù)多。因此,在圖像進(jìn)行卷積運算之前,已經(jīng)得到整個圖像數(shù)據(jù)的重用頻度分布,在動態(tài)電壓緩存單元分布在不同存儲片區(qū),滿足不同緩存間計算時間的一致性。由圖4所示,數(shù)據(jù)傳輸單元根據(jù)切割圖片大小,將此區(qū)域多行拼接為一行,進(jìn)入電壓可調(diào)緩存單元。電壓可調(diào)緩存單元,包括重用頻度累積和判斷模塊、優(yōu)先級判斷模塊、電壓調(diào)節(jié)及數(shù)據(jù)讀取判斷模塊,重用頻度累積和判斷模塊根據(jù)在數(shù)據(jù)傳輸單元中的重用頻度分布,得到一維數(shù)據(jù)進(jìn)入緩存的重用次數(shù)累積求和,基于累積和確定在緩存中的排布順序。對比累積和的大小,當(dāng)累積和不同時,按照其大小順序在緩存中按由高到低的順序排列;當(dāng)累積和相同時,優(yōu)先級判斷模塊會根據(jù)卷積軌跡,進(jìn)一步判斷到達(dá)此邏輯和的先后順序,在緩存中按由高到低的順序排列,再根據(jù)重用次數(shù)分析,將已變成一維的數(shù)據(jù)進(jìn)行調(diào)整,最上邊區(qū)域是重用次數(shù)最高的區(qū)域,而最下面是重用次數(shù)最低的區(qū)域,具體結(jié)構(gòu)如圖4中電壓可調(diào)緩存單元,分好區(qū)域后,這里數(shù)據(jù)讀取的主頻差異較大,最高讀取次數(shù)和最低讀取次數(shù)相差數(shù)倍,如果這里依照分塊,使不同區(qū)域電壓實現(xiàn)可調(diào),高重用次數(shù)處,電壓較高,低電壓處電壓變低,這樣模塊的功耗大大降低。如圖4所示,數(shù)據(jù)讀取判斷完成之后,即可在卷積計算單元進(jìn)行卷積運算。利用在電壓可調(diào)緩存單元排布的數(shù)據(jù)運算,卷積計算單元包括乘法模塊和卷積軌跡判斷模塊。由圖2中卷積計算單元所示,選取一個數(shù)據(jù)定為x1為起點,第一個正被卷積數(shù)據(jù)即是第一個卷積核通過此區(qū)域的數(shù)據(jù),x1會被重用9次。在卷積相乘后,結(jié)果進(jìn)入臨時寄存器,只利用一次,可以采用crossbar結(jié)構(gòu),數(shù)據(jù)被讀取一次后清除相加得結(jié)果。即乘法模塊中,進(jìn)入卷積運算陣列的數(shù)據(jù)會和一個卷積核中多個權(quán)重相乘,得到多個結(jié)果對應(yīng)多次卷積軌跡。卷積軌跡判斷模塊中要根據(jù)卷積運算原有卷積軌跡,將相乘結(jié)果存在crossbar結(jié)構(gòu)中的臨時寄存器中,繼而進(jìn)行累加運算,得到最終卷積運算結(jié)果。整體實現(xiàn)流程圖如5所示,主要包括如下步驟:1)根據(jù)計算需求,發(fā)起數(shù)據(jù)訪問請求,二維截取部分拼接為一維數(shù)據(jù),在最大部分截取大小選取合適大小數(shù)據(jù)塊;2)根據(jù)重用分析,在片上存儲中根據(jù)重用次數(shù)分區(qū)域存儲;3)根據(jù)數(shù)據(jù)重用次數(shù),判斷重用次數(shù)累積和以及到達(dá)此累積和的先后軌跡順序,實現(xiàn)動態(tài)電壓可調(diào),讀取次數(shù)少時,要求讀取速率慢,即低主頻,可使用低電壓,相反,重用較多模塊,使用高電壓;4)重用部分?jǐn)?shù)據(jù)進(jìn)入卷積陣列相乘部分計算,這里因為要被多個卷積核使用,可以實現(xiàn)一取多讀,數(shù)據(jù)進(jìn)入陣列和預(yù)存在計算陣列里的卷積核權(quán)重值相乘,得出多個結(jié)果,分配給加法計算里的臨時寄存器;5)卷積陣列相加部分,用相乘送入臨時寄存器的值,根據(jù)卷積軌跡,把一次卷積所有結(jié)果相加;6)把計算結(jié)果輸出,得到下一層卷積輸入矩陣。針對低主頻卷積計算,可通過降低電源電壓的方式來有效的降低功耗(正比于v2)。當(dāng)重用次數(shù)較高時時,這時系統(tǒng)可以讓處理器工作在常規(guī)電源電壓,實現(xiàn)電壓可調(diào)可以使能效大為提高,已選取0.6v和1.1v兩種電壓為例,功耗只有前者的29%,在低重用次數(shù)數(shù)據(jù)較多情況下,選取此電壓作為低存儲片區(qū)的電壓,0.8v時,功耗是1.1v的54%,此時可以選擇低重用次數(shù)適中的情況。通過這里的電壓選擇,顯著降低功耗。當(dāng)前第1頁12