本發(fā)明涉及一種面向人工神經(jīng)網(wǎng)絡(luò)計(jì)算的動(dòng)態(tài)精度可配近似乘法器,屬于人工神經(jīng)網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù):
由于神經(jīng)網(wǎng)絡(luò)系統(tǒng)中存在大量對(duì)操作數(shù)進(jìn)行乘法和累加的計(jì)算,這會(huì)產(chǎn)生較大的功耗及誤差,目前已經(jīng)從算法、軟件、硬件、電路和晶體管級(jí)進(jìn)行了大量的研究。然而,數(shù)字信號(hào)處理、視覺(jué)計(jì)算機(jī)和機(jī)器學(xué)習(xí)等新興應(yīng)用有著更高的計(jì)算要求,因此低能耗面臨著新的挑戰(zhàn)。
神經(jīng)網(wǎng)絡(luò)對(duì)有限的或不重要的誤差存在一定的容錯(cuò)性。即使錯(cuò)誤產(chǎn)生偏差產(chǎn)生容錯(cuò)性的原因有很多,包括人類意義上的不完美感知、噪聲輸入信號(hào)、輸入數(shù)據(jù)的冗余和缺乏通用的最佳答案。
這種容錯(cuò)性可以通過(guò)近似計(jì)算來(lái)實(shí)現(xiàn),這將在很大程度上降低功耗和算術(shù)復(fù)雜度。目前已經(jīng)在軟件和硬件層面的近似計(jì)算領(lǐng)域進(jìn)行了大量的研究,其中在軟件層面,曾提出循環(huán)穿孔技術(shù),即在計(jì)算過(guò)程中,跳過(guò)多次循環(huán)迭代,執(zhí)行初始的計(jì)算子集,從而節(jié)省時(shí)間和降低功耗,但是產(chǎn)生的輸出誤差較大。在硬件層面的近似計(jì)算主要針對(duì)算術(shù)單元,應(yīng)用較多的是截?cái)嗉夹g(shù)和簡(jiǎn)化單位邏輯復(fù)雜性,但事實(shí)證明這兩種方法都存在一定的誤差且產(chǎn)生的結(jié)果不可靠。
由于乘法是計(jì)算過(guò)程中一個(gè)必要的算術(shù)運(yùn)算,并且隨著乘法器的重復(fù)使用,誤差會(huì)彼此抵消而不累加,因此我們致力于提出一個(gè)新的近似乘法器。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的功耗過(guò)大問(wèn)題,本發(fā)明提供一種面向人工神經(jīng)網(wǎng)絡(luò)的動(dòng)態(tài)精度可配近似乘法器,不僅可以降低計(jì)算過(guò)程的復(fù)雜度和時(shí)間,同時(shí)減少功耗且不影響計(jì)算精度。
技術(shù)方案:一種面向人工神經(jīng)網(wǎng)絡(luò)計(jì)算的動(dòng)態(tài)精度可配近似乘法器,該動(dòng)態(tài)精度可配近似乘法器在外部控制信號(hào)的控制下,根據(jù)數(shù)據(jù)的輸入特性實(shí)現(xiàn)乘法運(yùn)算的精度動(dòng)態(tài)配置,并給出精確結(jié)果的近似結(jié)果。所述乘法器包括乘法近似計(jì)算模塊和乘法器動(dòng)態(tài)配置模塊;
其中,所述乘法近似計(jì)算模塊,用于實(shí)現(xiàn)乘法的近似計(jì)算,操作數(shù)a和b的位寬均為n,經(jīng)過(guò)乘法近似計(jì)算模塊,得到近似計(jì)算結(jié)果r,其位寬為2n,乘法近似計(jì)算模塊包括算術(shù)邏輯和轉(zhuǎn)向控制邏輯。
算術(shù)邏輯是計(jì)算模塊中的核心,在調(diào)節(jié)信號(hào)的控制下,算術(shù)邏輯進(jìn)行可配的計(jì)算。其輸入是操作數(shù)a、b截取后的k位部分和控制信號(hào)[k,l,m],輸出是2k位近似計(jì)算結(jié)果。算術(shù)邏輯包括一個(gè)控制信號(hào)譯碼器和一個(gè)k位精確乘法器。
控制信號(hào)譯碼器是根據(jù)動(dòng)態(tài)配置模塊所提供的控制信號(hào)[k,l,m]進(jìn)行譯碼,并根據(jù)控制信號(hào)決定部分積累加陣列中那些加法器被選中正常工作,那些加法器未被選中而停止工作。
k位精確乘法器既可以對(duì)未配置的操作數(shù)進(jìn)行精確的乘法運(yùn)算,也可以對(duì)配置后的操作數(shù)進(jìn)行近似乘法計(jì)算且結(jié)果在可接受的錯(cuò)誤范圍內(nèi),其配置信息是控制信號(hào)譯碼器進(jìn)行譯碼后的信號(hào)。對(duì)于停止工作的加法器可以丟棄,從而實(shí)現(xiàn)快速的近似計(jì)算。
轉(zhuǎn)向控制邏輯主要對(duì)輸入操作數(shù)的預(yù)處理和中間結(jié)果的后處理。包括非零最高位探測(cè)器、編碼器、多路復(fù)用選擇器、移位控制信號(hào)生成器和桶形移位器。
其中,非零最高位探測(cè)器的用于探測(cè)操作數(shù)a和b的非零最高位即‘1’的位置并輸出該位索引;
編碼器通過(guò)非零最高位的索引和參數(shù)k進(jìn)行編碼,生成控制信號(hào),并發(fā)送到多路復(fù)用選擇器;
多路復(fù)用選擇器接收編碼器產(chǎn)生的控制信號(hào),將原始n位操作數(shù)a、b中選中的k位送到計(jì)算邏輯中;
移位控制信號(hào)生成器根據(jù)兩個(gè)原始n位操作數(shù)經(jīng)截取后丟棄部分的位數(shù)和生成移位控制信號(hào),之后由桶形移位器對(duì)計(jì)算邏輯產(chǎn)生的中間結(jié)果后處理。
桶形移位器的后處理主要是對(duì)計(jì)算邏輯的中間結(jié)果進(jìn)行移位操作,移位的位數(shù)由移位控制信號(hào)生成器所產(chǎn)生的控制信號(hào)決定。如果非零最高位索引的值小于參數(shù)k,則數(shù)據(jù)將不經(jīng)過(guò)編碼器和多路復(fù)用選擇器,而是直接送入算術(shù)邏輯。
所述乘法器動(dòng)態(tài)配置模塊,用于實(shí)現(xiàn)動(dòng)態(tài)調(diào)節(jié)近似乘法計(jì)算的速度和精度,輸入是操作數(shù)a、b及外部控制信號(hào),操作數(shù)a、b需進(jìn)行預(yù)處理,輸出控制信號(hào)[k,l,m],其中k表示需對(duì)操作數(shù)a、b截取的位寬,l表示截取后的乘數(shù)b的起始位索引,m表示截取后的乘數(shù)b的第l位起到l+m位被選中。
為了進(jìn)一步實(shí)現(xiàn)發(fā)明目的,本發(fā)明還提供了一種面向人工神經(jīng)網(wǎng)絡(luò)的動(dòng)態(tài)精度可配近似乘法器的實(shí)現(xiàn)方法,包括以下步驟:
(1)接收兩個(gè)n位的乘法器操作數(shù)、外部的控制信號(hào)以及參數(shù)k;
(2)非零最高位檢測(cè)器分別對(duì)步驟(1)中接收到的兩個(gè)操作數(shù)的非零最高位所在的位置進(jìn)項(xiàng)探測(cè),并輸出非零最高位的索引位置;
(3)分別判斷兩個(gè)操作數(shù)的非零最高位的索引是否大于參數(shù)k。如果大于參數(shù)k,轉(zhuǎn)到步驟(4),如果小于參數(shù)k,轉(zhuǎn)到步驟(5);
(4)編碼器根據(jù)非零最高位的索引以及參數(shù)k進(jìn)行編碼產(chǎn)生相應(yīng)的控制信息,用于控制多苦復(fù)用選擇器選擇所需要的數(shù)據(jù),并把該控制信號(hào)傳遞給多路復(fù)用選擇器;
(5)多路復(fù)用選擇器直接根據(jù)步驟(3)的非零最高位的索引或者步驟(4)中編碼器產(chǎn)生的控制信號(hào),從步驟(1)中接收的的兩個(gè)原始的操作數(shù)中選擇所需的數(shù)據(jù),并傳入到計(jì)算邏輯;
(6)在進(jìn)行步驟(3)的同時(shí),根據(jù)步驟(2)非零最高位的索引以及外部控制信號(hào)和參數(shù)k等,生成相應(yīng)的配置信息[k,l,m],這些配置信息用于控制計(jì)算邏輯中的累加陣列的累加器是否需要工作;
(7)計(jì)算邏輯根據(jù)配信息[k,l,m],對(duì)計(jì)算邏輯的累加陣列進(jìn)行動(dòng)態(tài)配置,決定哪些加法器需要處于工作狀態(tài),哪些加法器處于靜止?fàn)顟B(tài),以實(shí)現(xiàn)快速高效的近似計(jì)算;
(8)在進(jìn)行步驟(5)的同時(shí),移位控制信號(hào)生成器,根據(jù)步驟(4)的編碼器提供的控制信息生成移位控制信號(hào),該信號(hào)用于指導(dǎo)桶形移位器進(jìn)行移位操作;
(9)桶形移位器在移位控制信號(hào)的控制下,對(duì)中間結(jié)果進(jìn)行移位操作,得到最終的結(jié)果。
有益效果:本發(fā)明與現(xiàn)有技術(shù)相比,設(shè)計(jì)簡(jiǎn)單,可行性好,減小計(jì)算復(fù)雜度的同時(shí)縮短計(jì)算時(shí)間,從而降低功耗,且所得結(jié)果精度高誤差小。
附圖說(shuō)明
圖1為本發(fā)明的動(dòng)態(tài)可配近似乘法器工作流程示意圖;
圖2為本發(fā)明的動(dòng)態(tài)可配近似乘法器的整體示意圖;
圖3為本發(fā)明的乘法近似計(jì)算模塊結(jié)構(gòu)示意圖;
圖4為本發(fā)明的乘法器動(dòng)態(tài)配置模塊結(jié)構(gòu)示意圖;
圖5為本發(fā)明的數(shù)據(jù)預(yù)處理原理示意圖;
圖6為本發(fā)明的動(dòng)態(tài)可配近似乘法器工作流程圖。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說(shuō)明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明的各種等價(jià)形式的修改均落于本申請(qǐng)所附權(quán)利要求所限定的范圍。
如圖1-2所示,動(dòng)態(tài)精度可配近似乘法器在外部控制信號(hào)的控制下,根據(jù)數(shù)據(jù)的輸入特性實(shí)現(xiàn)乘法運(yùn)算的精度動(dòng)態(tài)配置,并給出精確結(jié)果的近似結(jié)果。近似可配的乘法器主要包括動(dòng)態(tài)配置模塊、乘法近似計(jì)算模塊。所述乘法近似計(jì)算模塊,用于實(shí)現(xiàn)乘法的近似計(jì)算,操作數(shù)a和b的位寬均為n,經(jīng)過(guò)乘法近似計(jì)算模塊,得到近似計(jì)算結(jié)果r,其位寬為2n,乘法近似計(jì)算模塊包括算術(shù)邏輯和轉(zhuǎn)向控制邏輯。
算術(shù)邏輯是計(jì)算模塊中的核心,在調(diào)節(jié)信號(hào)的控制下,算術(shù)邏輯進(jìn)行可配的計(jì)算。其輸入是操作數(shù)a、b截取后的k位部分和控制信號(hào)[k,l,m],輸出是2k位近似計(jì)算結(jié)果。算數(shù)邏輯主要包含一個(gè)k位精確乘法器和一個(gè)控制信號(hào)譯碼器??刂菩盘?hào)譯碼器是根據(jù)動(dòng)態(tài)配置模塊所提供的控制信號(hào)[k,l,m]進(jìn)行譯碼,并根據(jù)控制信號(hào)決定部分積累加陣列中那些加法器被選中正常工作,那些加法器未被選中而停止工作。
k位精確乘法器既可以對(duì)未配置的操作數(shù)進(jìn)行精確的乘法運(yùn)算,也可以對(duì)配置后的操作數(shù)進(jìn)行近似乘法計(jì)算且結(jié)果在可接受的錯(cuò)誤范圍內(nèi),其配置信息是控制信號(hào)譯碼器進(jìn)行譯碼后的信號(hào)。對(duì)于停止工作的加法器可以丟棄,從而實(shí)現(xiàn)快速的近似計(jì)算。
轉(zhuǎn)向控制邏輯主要對(duì)輸入操作數(shù)的預(yù)處理和中間結(jié)果的后處理。如圖3所示,轉(zhuǎn)向邏輯包括非零最高位探測(cè)器、編碼器、多路復(fù)用選擇器、移位控制信號(hào)生成器、桶形移位器。
其中,非零最高位探測(cè)器的用于探測(cè)操作數(shù)a和b的非零最高位即‘1’的位置并輸出該位索引;
編碼器通過(guò)非零最高位的索引和參數(shù)k進(jìn)行編碼,生成控制信號(hào),并發(fā)送到多路復(fù)用選擇器;
多路復(fù)用選擇器接收編碼器產(chǎn)生的控制信號(hào),將原始n位操作數(shù)a、b中選中的k位送到計(jì)算邏輯中;
移位控制信號(hào)生成器根據(jù)兩個(gè)原始n位操作數(shù)經(jīng)截取后丟棄部分的位數(shù)和生成移位控制信號(hào),之后由桶形移位器對(duì)計(jì)算邏輯產(chǎn)生的中間結(jié)果后處理。
桶形移位器的后處理主要是對(duì)計(jì)算邏輯的中間結(jié)果進(jìn)行移位操作,移位的位數(shù)由移位控制信號(hào)生成器所產(chǎn)生的控制信號(hào)決定。如果非零最高位索引的值小于參數(shù)k,則數(shù)據(jù)將不經(jīng)過(guò)編碼器和多路復(fù)用選擇器,而是直接送入算術(shù)邏輯。
所述乘法器動(dòng)態(tài)配置模塊,用于實(shí)現(xiàn)動(dòng)態(tài)調(diào)節(jié)近似乘法計(jì)算的速度和精度,輸入是操作數(shù)a、b及外部控制信號(hào),操作數(shù)a、b需進(jìn)行預(yù)處理,輸出控制信號(hào)[k,l,m],其中k表示需對(duì)操作數(shù)a、b截取的位寬,l表示截取后的乘數(shù)b的起始位索引,m表示截取后的乘數(shù)b的第l位起到l+m位被選中。所有部件之間相互配合,共同完成乘法近似計(jì)算,包括如下步驟:
(1)輸入操作數(shù)a、b的位寬均為n,由非零最高位探測(cè)器測(cè)得到兩個(gè)操作數(shù)的非零最高位有效數(shù)字‘1’,將其所在位置記為t,0≤t≤n-1,定義k值,其指定在核心精確乘法器中使用的帶寬;
(2)分別選中操作數(shù)a、b索引(t-k+1)處的數(shù)字,不管其原始數(shù)位高位還是低位,都將其設(shè)置為高位‘1’,并將索引(t-k)至索引0之間的數(shù)據(jù)全部設(shè)置為低位‘0’,即得到原始操作數(shù)a、b的近似值;
(3)將得到的近似參數(shù)a、b在索引(t-k+1)后的數(shù)據(jù)‘0’截?cái)鄟G棄,從而得到預(yù)處理后的數(shù)據(jù),并將所得數(shù)據(jù)送入計(jì)算邏輯中;
(4)將得到的k位近似數(shù)a、b進(jìn)行乘法運(yùn)算,其中,計(jì)算結(jié)果由以下公式得到:
即進(jìn)行積累加,其中bi為b的第i位數(shù)值;
(5)由(2)可得操作數(shù)a、b所截?cái)鄟G棄的位數(shù)和,即(t1-k+1+t2-k+1)位,將(4)中得到的結(jié)果向左移動(dòng)(t1-k+t2-k+2)位,即補(bǔ)低位‘0’,即可得到最終近似結(jié)果。
如圖5所示,輸入數(shù)據(jù)進(jìn)行預(yù)處理;在外部的控制信號(hào)的控制下,根據(jù)數(shù)據(jù)的輸入特性實(shí)現(xiàn)乘法運(yùn)算的動(dòng)態(tài)配置并給出精確結(jié)果的近似結(jié)果,包括以下步驟:
(1)探測(cè)乘法器輸入數(shù)據(jù)的非零最高位的索引,動(dòng)態(tài)地定位兩個(gè)操作數(shù)中的每一個(gè)中的最高有效'1'的位置;
(2)對(duì)于每個(gè)操作數(shù),然后使用最高有效位'1'來(lái)基于所需的精度選擇以下k-2個(gè)連續(xù)數(shù)量的位;k是設(shè)計(jì)者定義的值,其指定在核心精確乘法器中使用的帶寬;
(3)如果在索引t處探測(cè)到前導(dǎo),其中0≤t≤n-1,則后面的t-k+2個(gè)較低比特的值保持不變,位于t-k+1處的值無(wú)論之前是否為1,都用1近似代替后面的數(shù)字,對(duì)于索引t-k到索引0之間的數(shù)據(jù)全部置0;
(4)把兩個(gè)操作數(shù)最后的t-k位進(jìn)行截?cái)鄟G棄,得到預(yù)處理后所得數(shù)據(jù),之后把該數(shù)據(jù)送入計(jì)算邏輯。
根據(jù)預(yù)處理的過(guò)程:
(1)根據(jù)非零最高位探測(cè)器提供的非零最高位的索引判斷兩個(gè)數(shù)據(jù)的位寬和相對(duì)大??;
(2)根據(jù)兩個(gè)數(shù)據(jù)的位寬和數(shù)據(jù)相對(duì)大小決定丟棄哪些部分積。此外,該近似乘法器還可以根據(jù)乘法器外部控制信號(hào)進(jìn)行近似度調(diào)節(jié);
(3)根據(jù)譯碼器對(duì)編碼后的控制信號(hào)進(jìn)行解碼,選擇需要保留的部分積并進(jìn)行累加運(yùn)算;
(4)把兩個(gè)乘數(shù)舍棄掉的位數(shù)相加之和作為桶形移位器所要移動(dòng)的位數(shù),然后進(jìn)行移位得到近似的計(jì)算結(jié)果;
(5)改近似乘法器是運(yùn)行時(shí)調(diào)節(jié),每次進(jìn)行乘法運(yùn)算是都根據(jù)所需要的信號(hào)靈活控制乘法器運(yùn)行速度和精度。
舉例說(shuō)明
操作數(shù)a=001010001,操作數(shù)b=000110010,n=9,取k=5,則探測(cè)到操作數(shù)a的非零最高位索引t1=6,操作數(shù)b的非零最高位索引t2=5,將t-k+1處的數(shù)字轉(zhuǎn)換為高位‘1’,得到a=001010101,b=000110010;t-k+1后的數(shù)字為‘0’,a=001010100,b=000110010;取k位,a’=10101,b’=11001,a’*b’=1000001101,將乘積所得值向左移動(dòng)3位,可得近似結(jié)果1000001101000,由a*b=0111111010010,誤差很小,可近似忽略。