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