果寄存器相加,如 果flag具有第一個值,則需要相加;否則,即flag具有第二個值時,不需相加,其中,該"第二 個值"可根據(jù)輸入的控制指令解析出來,是指令編碼中的表示不需要累加中間值的某些值 (可由程序員自行設(shè)定)。另外,輸入數(shù)據(jù)選通信號13過濾不需要累加的輸入數(shù)據(jù)數(shù)據(jù),從而 支持選擇N個輸入葉節(jié)點數(shù)據(jù)中的部分?jǐn)?shù)據(jù)通過累加樹疊加功能。例如不要累加第0個和第 N-I個輸入數(shù)據(jù),通過運種方式可實現(xiàn)靈活的數(shù)據(jù)累加方式。具體方案是:使用者可事先配 置電路生成多組N位寬的選通信號,每組選通信號中的1位對應(yīng)圖2的加法樹結(jié)構(gòu)的一個葉 節(jié)點數(shù)據(jù)是否需要被累加,例如:假設(shè)累加樹具有8個葉節(jié)點,其對應(yīng)的選通信號為8bit,每 個葉節(jié)點的輸入分別是XO,Xl,X2,X3,X4,M,X6,X7,累加方式如表1所示。
[0066] (表1)
[0068] (注:表格中省略號省略了其它56種情況,具體為選通信號按照二進制碼從5到60 的部分)
[0069] 從上表1可知:對于N各葉節(jié)點的加法樹,其共有/種累加方式。
[0070] 此外,圖1中的中間值存儲寄存器組4,包含有多個寄存器,用于存儲每次累加計算 所得的中間部分和結(jié)果。數(shù)據(jù)處理裝置可通過控制信號選擇W寄存器與累加樹結(jié)果相加, 同時,還可通過控制信號選擇一個寄存器存儲累加中間部分和,其中控制信號是指, result_select信號11、sou;rce_select信號12和 f lag 標(biāo)志信號14。
[0071] 多路路由3,其被配置為響應(yīng)result_select信號11選中M個中間部分和結(jié)果寄存 器中的某個寄存器,將更新后的部分和值或者結(jié)果寄存于被選中的寄存器中,即寄存于中 間值存儲寄存器組4中被選中的寄存器。
[0072] 多路路由5,其被配置為響應(yīng)source_select信號12選中M個中間部分和結(jié)果寄存 器值17中的某個,被選中的寄存器值18可能與累加樹結(jié)果相加得出更新后的部分和值或者 結(jié)果。
[0073] 兩路選擇器7,其被配置為響應(yīng)flag標(biāo)志控制兩路選擇器選擇累加樹結(jié)果15或者 累加樹結(jié)果15與多路選擇器選中的寄存器值18相加結(jié)果作為更新后的部分和值或者結(jié)果 10。
[0074] 此外,上述已經(jīng)提及,對于定點數(shù)累加,精度拓展為:根據(jù)數(shù)據(jù)為有符號/無符號數(shù) 和數(shù)據(jù)位寬進行拓展,所述二叉樹累加樹結(jié)構(gòu)中,每個父親節(jié)點的精度比其兩個兒子節(jié)點 中較高精度多一比特位。另外,所述累加裝置被用于處理多個定點數(shù)據(jù)累加時,可將累加樹 的二叉樹結(jié)構(gòu)改為華萊±樹結(jié)構(gòu)。
[0075] 本發(fā)明所述累加裝置,可W互不干擾的實現(xiàn)多組累加結(jié)果的計算,通過改變控制 電路的控制信號選擇N個數(shù)據(jù)中不同的部分?jǐn)?shù)據(jù)累加,然后將累加部分和存儲于不同中間 部分和結(jié)果寄存器中可實現(xiàn)利用同樣的輸入數(shù)據(jù)計算不同輸出結(jié)果。
[0076] 下面利用卷積神經(jīng)網(wǎng)絡(luò)算法(CNN)中的局部響應(yīng)歸一化層(LRN)的計算作為實例:
[0077] C順神經(jīng)網(wǎng)路算法中,LRN層輸入輸出的映射公式為:
[0079] 其中為LRN層輸入數(shù)據(jù)中位于第k個特征映射面(feaUire map)上坐標(biāo)為(X, y)的神經(jīng)元值,Oz^'yl為LRN層輸出數(shù)據(jù)中位于第Z個feature map上坐標(biāo)為(x,y)的神經(jīng)元 值,f( ?)表示為一種非線性變換。
[0080] 此公式的具體含義為,LRN層輸出數(shù)據(jù)位于第Z個feature map上坐標(biāo)位置為(x,y) 的神經(jīng)元值為輸入數(shù)據(jù)中屬于[z-l/2,z+l/2]范圍的1個feature map上相同坐標(biāo)的神經(jīng)元 值的平方和的函數(shù)值再乘W輸入數(shù)據(jù)位于第Z個feature map上坐標(biāo)位置為(x,y)的神經(jīng)元 值。因此,為了計算LRN層的每個輸出數(shù)據(jù),必須進行1個數(shù)據(jù)的累加。
[0081] 在此,我們采用MIMD方式計算,假設(shè)有n組累加裝置,累加裝置的累加樹為n輸入。 每個累加裝置計算Z坐標(biāo)值間隔為n的輸出。不失一般性,可假設(shè)輸入Z坐標(biāo)值屬于[1,N],且 有l(wèi)<n<N。將(x,y)位置的N的輸入按n個為一組的方式分組,最后一組可能少于n個輸入。
[0082] 圖3示為LRN層計算時n組累加裝置中的一個累加計算的輸入輸出映射示意圖,圖 中,左邊為按照feature map排列的輸入數(shù)據(jù)的平方,并按照上述方式分組(圖中表示有3 組);右邊箭頭所指向的位置為此裝置需計算的第2、3個累加輸出結(jié)果。當(dāng)輸入為第2組時, 其不同部分可分別用于計算第2、3個累加結(jié)果。為了數(shù)據(jù)重復(fù)利用,減小存儲開銷,當(dāng)輸入 為第2組時,可通過控制信號,選擇用于計算第2個累加結(jié)果的部分通過累加樹累加然后和 存儲了其存儲于中間結(jié)果寄存器中第2個累加結(jié)果的部分和相加計算出第2個累加結(jié)果。之 后,再通過控制信號選擇用于計算第3個累加結(jié)果的部分通過累加樹算出部分和,然后將部 分和寄存在一個中間結(jié)果寄存器中。
[0083] 另外,本發(fā)明還提供一種數(shù)據(jù)累加方法,如圖4所示,包括W下步驟:
[0084] 步驟1,控制電路的選通信號生成電路生成數(shù)據(jù)選通信號并發(fā)送到累加樹模塊;
[0085] 步驟2,所述累加樹模炔基于所述數(shù)據(jù)選通信號判斷哪些輸入數(shù)據(jù)需進行累加,并 對需累加的輸入數(shù)據(jù)W樹結(jié)構(gòu)的形式累加為部分和數(shù)據(jù);
[0086] 步驟3,所述控制電路的數(shù)據(jù)寄存信號生成電路生成數(shù)據(jù)寄存選擇信號并發(fā)送到 寄存模塊,所述寄存模炔基于數(shù)據(jù)寄存選擇信號將所述部分和數(shù)據(jù)寄存于數(shù)據(jù)寄存選擇信 號所選中的寄存器;
[0087] 步驟4,所述控制電路的數(shù)據(jù)讀取信號生成電路生成數(shù)據(jù)讀取選擇信號并發(fā)送到 所述寄存模塊W選中所述寄存器模塊的某一個寄存器中寄存的一個或多個所述部分和數(shù) 據(jù);
[0088] 步驟5,所述控制電路的flag信號生成電路生成flag標(biāo)志信號W進行累加選擇控 審IJ,所述累加選擇控制為,將所述數(shù)據(jù)讀取選擇信號所選中的所述部分和數(shù)據(jù)與所述累加 樹模塊在當(dāng)前時鐘周期輸出的所述部分和數(shù)據(jù)相加后的結(jié)果作為更新的部分和數(shù)據(jù)進行 輸出,或者直接將所述累加樹模塊在當(dāng)前時鐘周期輸出的所述部分和數(shù)據(jù)進行輸出,其中 輸出的數(shù)據(jù)還基于所述flag標(biāo)志信號和所述數(shù)據(jù)寄存選擇信號的控制而選擇寄存于所述 寄存器或輸出到外部存儲器。
[0089] 步驟6,輸出的數(shù)據(jù)基于所述flag標(biāo)志信號和所述數(shù)據(jù)寄存選擇信號的控制而選 擇寄存于所述寄存器或輸出到外部存儲器。
[0090] 本發(fā)明的數(shù)據(jù)累加方法,其中,
[0091 ] 在所述步驟5中,所述累加選擇控制進一步為:
[0092] 如果flag標(biāo)志具有第一個值,則將所述數(shù)據(jù)讀取選擇信號所選中的所述部分和數(shù) 據(jù)與所述累加樹模塊在當(dāng)前時鐘周期輸出的所述部分和數(shù)據(jù)相加后的結(jié)果作為更新的部 分和數(shù)據(jù)進行輸出;
[0093] 如果flag標(biāo)志具有第二個值,則直接將所述累加樹模塊在當(dāng)前時鐘周期輸出的所 述部分和數(shù)據(jù)進行輸出。
[0094] 另外,如圖5所示,本發(fā)明還提供一種包含本發(fā)明的數(shù)據(jù)累加裝置100的數(shù)字信號 處理裝置200。該數(shù)字信號處理