加法器裝置、數(shù)據(jù)累加方法及數(shù)據(jù)處理裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)數(shù)據(jù)處理系統(tǒng)的領(lǐng)域,涉及加法器裝置的數(shù)據(jù)處理,特別涉及一種加法器裝置、數(shù)據(jù)累加方法及包括該加法器裝置的數(shù)據(jù)處理裝置。
【背景技術(shù)】
[0002]近年來,基于M-P神經(jīng)元模型的神經(jīng)網(wǎng)絡(luò)算法廣泛用于產(chǎn)品推薦、圖像識(shí)別等領(lǐng)域。M-P神經(jīng)元模型是一種加型神經(jīng)元模型,神經(jīng)元輸出值等于神經(jīng)元輸入的加權(quán)和值再累加偏置值后經(jīng)過非線性變換的結(jié)果。即,神經(jīng)網(wǎng)絡(luò)算法中需要大量的累加運(yùn)算以及加法運(yùn)算。同時(shí),在神經(jīng)網(wǎng)絡(luò)算大的訓(xùn)練過程中,不僅包含大量累加運(yùn)算,還包含減法運(yùn)算。
[0003]采用傳統(tǒng)通用處理處理器運(yùn)算神經(jīng)網(wǎng)絡(luò)算法或者是對(duì)一個(gè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí),每次只能對(duì)兩個(gè)數(shù)據(jù)相加,這種方法效率較低。而且若是采用定點(diǎn)數(shù)據(jù)進(jìn)行運(yùn)算時(shí)還需處理加法溢出的情況。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于,解決上述傳統(tǒng)處理器在運(yùn)行神經(jīng)網(wǎng)絡(luò)算法或訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)存在的缺陷,提供一種加法器裝置、數(shù)據(jù)累加方法及包括該加法器裝置的數(shù)據(jù)處理裝置,能夠進(jìn)行快速累加以及對(duì)批量數(shù)據(jù)向量進(jìn)行加/減操作。從而使程序員可快速實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法中的累加運(yùn)算以及加/減法運(yùn)算,同時(shí)能夠同一時(shí)鐘周期內(nèi)實(shí)現(xiàn)加法溢出判斷以及溢出處理從而既不影響神經(jīng)網(wǎng)絡(luò)算法執(zhí)行速度又提高神經(jīng)網(wǎng)絡(luò)算法的預(yù)測(cè)結(jié)果的正確率。
[0005]本發(fā)明提供的加法器裝置,用于對(duì)輸入數(shù)據(jù)流進(jìn)行快速累加,包括:
[0006]第一加法器模塊,包括至少一個(gè)由多級(jí)加法器陣列構(gòu)成的加法樹單元和第一控制單元,所述多級(jí)加法器陣列的每一級(jí)加法器陣列包含多個(gè)加法器構(gòu)成的加法器組,每一所述加法器組對(duì)輸入數(shù)據(jù)進(jìn)行累加而構(gòu)成一組部分和數(shù)據(jù)并作為下一級(jí)加法器陣列的輸入數(shù)據(jù),所述加法樹單元基于來自所述第一控制單元的控制信號(hào)采用逐級(jí)累加的方式將每一級(jí)的輸入數(shù)據(jù)累加為一個(gè)累加和數(shù)據(jù)作為所述第一加法器模塊的輸出數(shù)據(jù);
[0007]第二加法器模塊,包括兩輸入加減操作單元和第二控制單元,所述兩輸入加減操作單元基于第二控制單元的控制信號(hào)選擇性地對(duì)輸入數(shù)據(jù)進(jìn)行加法或減法運(yùn)算,并將加減運(yùn)算結(jié)果作為所述第二加法器模塊的輸出數(shù)據(jù);
[0008]連接于所述第一加法器模塊的移位操作模塊,用于對(duì)所述第一加法器模塊的輸出數(shù)據(jù)進(jìn)行左移位操作,從而使所述第一加法器模塊的輸出數(shù)據(jù)具有與所述第二加法器模塊的輸出數(shù)據(jù)相同的位寬度并將移位后的結(jié)果作為所述移位操作模塊的輸出數(shù)據(jù);
[0009]與操作模塊,連接于所述移位操作模塊和所述第二加法器模塊,用于對(duì)所述移位操作模塊的輸出數(shù)據(jù)和所述第二加法器模塊的輸出數(shù)據(jù)進(jìn)行與操作,并將所述與操作結(jié)果作為所述加法器裝置的輸出數(shù)據(jù);
[0010]控制器模塊,用于控制所述第一加法器模塊及所述第二加法器模塊的數(shù)據(jù)輸入,控制所述移位操作模塊的移位操作,以及控制所述第一控制單元及所述第二控制單元的控制信號(hào)的發(fā)射。
[0011]本發(fā)明的加法器裝置,其中,在所述加法樹單元中,在所述多級(jí)加法器陣列中的位于中間級(jí)位置的加法器陣列的輸出端設(shè)置一寄存器,用于對(duì)來自所述位于中間級(jí)位置的加法器陣列的輸出端的輸出數(shù)據(jù)進(jìn)行緩存。
[0012]本發(fā)明的加法器裝置,其中,所述第一加法器模塊還具有多個(gè)用于寄存所述加法器組算出的部分和數(shù)據(jù)的寄存器,根據(jù)所述第一控制單元的控制信號(hào)確定所述部分和數(shù)據(jù)寄存在哪一個(gè)寄存器中,并確定從所述多個(gè)寄存器中選擇一個(gè)部分和數(shù)據(jù)與所述加法樹單元的所述累加和數(shù)據(jù)相加并作為所述第一加法器模塊的輸出數(shù)據(jù)。
[0013]本發(fā)明的加法器裝置,其中,還包括溢出檢測(cè)及溢出處理的電路,用于檢測(cè)定點(diǎn)數(shù)的累加結(jié)果是否發(fā)生向上溢出或向下溢出,若發(fā)生向上溢出,則將運(yùn)算結(jié)果置為該定點(diǎn)數(shù)格式能表達(dá)的最大正數(shù),若發(fā)生向下溢出,則將運(yùn)算結(jié)果置為該定點(diǎn)數(shù)格式能表達(dá)的最小負(fù)數(shù);
[0014]其中,所述向上溢出是指,對(duì)多個(gè)定點(diǎn)正數(shù)進(jìn)行加法運(yùn)算時(shí),運(yùn)算結(jié)果超出了該定點(diǎn)數(shù)格式的正數(shù)表達(dá)范圍;所述向下溢出是指,對(duì)多個(gè)定點(diǎn)復(fù)數(shù)進(jìn)行加法運(yùn)算時(shí),運(yùn)算結(jié)果超出了該定點(diǎn)數(shù)格式的復(fù)數(shù)表達(dá)范圍。
[0015]本發(fā)明的加法器裝置,其中,所述控制器模塊進(jìn)一步包括:
[0016]操作碼控制單元,用于控制所述第一加法器模塊及所述第二加法器模塊的數(shù)據(jù)輸入;
[0017]設(shè)備號(hào)控制單元,用于確定所述移位操作模塊的移位值;
[0018]累加源操作數(shù)序號(hào)控制單元,用于確定從多個(gè)部分和寄存器選擇一個(gè)與加法樹輸出結(jié)果相加;
[0019]使能信號(hào)控制單元,用于使所述加法器裝置在當(dāng)前有效;
[0020]標(biāo)志信號(hào)控制單元,用于將所述第一加法器模塊的輸出數(shù)據(jù)作為所述加法器裝置的輸出數(shù)據(jù)。
[0021]另外,本發(fā)明還提供一種使用上述加法器裝置對(duì)輸出數(shù)據(jù)流進(jìn)行快速累加的方法,包括以下步驟:
[0022]步驟I,控制器模塊向第一加法器模塊及第二加法器模塊發(fā)送控制信號(hào),確定所述第一加法器模塊及所述第二加法器模塊的輸入數(shù)據(jù)的取值、控制移位操作模塊的移位操作,以及控制第一控制單元及第二控制單元的控制信號(hào)的發(fā)射;
[0023]步驟2,所述第一加法器模塊及所述第二加法器模塊分別接收到來自所述控制器模塊的控制信號(hào)后,基于該控制信號(hào),所述第一加法器模塊的加法樹單元采用逐級(jí)累加的方式將每一級(jí)的輸入數(shù)據(jù)累加為一個(gè)累加和數(shù)據(jù)作為該第一加法器模塊的輸出數(shù)據(jù),其中所述第一加法器模塊由多級(jí)加法器陣列構(gòu)成;所述第二加法器模塊選擇性地對(duì)輸入數(shù)據(jù)進(jìn)行加法或減法運(yùn)算,并將加減運(yùn)算結(jié)果作為該第二加法器模塊的輸出數(shù)據(jù);
[0024]步驟3,移位操作模塊基于所述控制信號(hào)對(duì)所述第一加法器模塊的輸出數(shù)據(jù)進(jìn)行左移位操作,從而使所述第一加法器模塊的輸出數(shù)據(jù)具有與所述第二加法器模塊的輸出數(shù)據(jù)相同的位寬度并將移位后的結(jié)果作為所述移位操作模塊的輸出數(shù)據(jù);
[0025]步驟4,與操作模塊對(duì)所述移位操作模塊的輸出數(shù)據(jù)和所述第二加法器模塊的輸出數(shù)據(jù)進(jìn)行與操作,并將所述與操作結(jié)果作為所述加法器裝置的輸出數(shù)據(jù)。
[0026]本發(fā)明的累加方法,其中,所述步驟2還包括,在所述加法樹單元中,使用設(shè)置于所述多級(jí)加法器陣列中的位于中間級(jí)位置的加法器陣列的輸出端的寄存器來對(duì)來自所述位于中間級(jí)位置的加法器陣列的輸出端的輸出數(shù)據(jù)進(jìn)行緩存的步驟。
[0027]本發(fā)明的累加方法,其中,所述步驟2還包括如下步驟,所述第一加法器模塊的用于寄存部分和數(shù)據(jù)的寄存器,根據(jù)所述第一控制單元的控制信號(hào)確定所述部分和數(shù)據(jù)寄存在哪一個(gè)寄存器中,并確定從所述多個(gè)寄存器中選擇一個(gè)部分和數(shù)據(jù)與所述加法樹單元的所述累加和數(shù)據(jù)相加并作為所述第一加法器模塊的輸出數(shù)據(jù)。
[0028]本發(fā)明的累加方法,其中,還包括如下步驟,使用溢出檢測(cè)及溢出處理的電路檢測(cè)定點(diǎn)數(shù)的累加結(jié)果是否發(fā)生向上溢出或向下溢出,若發(fā)生向上溢出,則將運(yùn)算結(jié)果置為該定點(diǎn)數(shù)格式能表達(dá)的最大正數(shù),若發(fā)生向下溢出,則將運(yùn)算結(jié)果置為該定點(diǎn)數(shù)格式能表達(dá)的最小負(fù)數(shù);其中,所述向上溢出是指,對(duì)多個(gè)定點(diǎn)正數(shù)進(jìn)行加法運(yùn)算時(shí),運(yùn)算結(jié)果超出了該定點(diǎn)數(shù)格式的正數(shù)表達(dá)范圍;所述向下溢出是指,對(duì)多個(gè)定點(diǎn)復(fù)數(shù)進(jìn)行加法運(yùn)算時(shí),運(yùn)算結(jié)果超出了該定點(diǎn)數(shù)格式的復(fù)數(shù)表達(dá)范圍。
[0029]另外,本發(fā)明還提供一種包括上述加法器裝置的數(shù)據(jù)處理裝置。
[0030]本發(fā)明至少包括以下效果或收益:
[0031]本裝置及方法可快速實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法中的累加運(yùn)算以及加/減法運(yùn)算;支持不同精度的定點(diǎn)數(shù)據(jù)的加/減法運(yùn)算,提高運(yùn)算結(jié)果的精度;同時(shí)能夠同一時(shí)鐘周期內(nèi)實(shí)現(xiàn)加法溢出判斷以及溢出處理從而既不影響神經(jīng)網(wǎng)絡(luò)算法執(zhí)行速度又提高神經(jīng)網(wǎng)絡(luò)算法的預(yù)測(cè)結(jié)果的正確率。
【附圖說明】
[0032]圖1示出了本發(fā)明的加法器裝置的概要構(gòu)成圖。
[0033]圖2示出了本發(fā)明的一實(shí)施方式的加法器裝置的結(jié)構(gòu)圖。
[0034]圖3示出了本發(fā)明的一實(shí)施方式的第一加法器模塊的結(jié)構(gòu)圖。
[0035]圖4示出了本發(fā)明的一實(shí)施方式的第二加法器模塊的結(jié)構(gòu)圖。
[0036]圖5示出了本發(fā)明的一實(shí)施方式的加法樹單元的結(jié)構(gòu)圖。
[0037]圖6示出了本發(fā)明的累加方法的流程圖。
[0038]圖