一種神經(jīng)網(wǎng)絡(luò)加速器及其運算方法
【專利摘要】本發(fā)明適用于神經(jīng)網(wǎng)絡(luò)算法領(lǐng)域,提供了一種神經(jīng)網(wǎng)絡(luò)加速器及其運算方法,該神經(jīng)網(wǎng)絡(luò)加速器包括片內(nèi)存儲介質(zhì)、片內(nèi)地址索引模塊、核心計算模塊以及多ALU裝置,片內(nèi)存儲介質(zhì),用于存儲外部傳來的數(shù)據(jù)或用于存儲計算過程中產(chǎn)生的數(shù)據(jù);片內(nèi)數(shù)據(jù)索引模塊,用于執(zhí)行運算時根據(jù)輸入的索引映射至正確的存儲地址;核心計算模塊用于執(zhí)行神經(jīng)網(wǎng)絡(luò)運算;多ALU裝置用于從核心計算模塊或片內(nèi)存儲介質(zhì)獲取輸入數(shù)據(jù)執(zhí)行核心計算模塊無法完成的非線性運算。本發(fā)明在神經(jīng)網(wǎng)絡(luò)加速器中引入多ALU設(shè)計,從而提升非線性運算的運算速度,使得神經(jīng)網(wǎng)絡(luò)加速器更加高效。
【專利說明】
一種神經(jīng)網(wǎng)絡(luò)加速器及其運算方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及神經(jīng)網(wǎng)絡(luò)算法領(lǐng)域,屬于一種神經(jīng)網(wǎng)絡(luò)加速器及其運算方法。
【背景技術(shù)】
[0002]在大數(shù)據(jù)時代,越來越多的設(shè)備需要對于真實世界的實時輸入進(jìn)行越來越復(fù)雜的處理,如工業(yè)機器人、自動駕駛無人汽車以及移動設(shè)備等等。這些任務(wù)大多數(shù)偏向于機器學(xué)習(xí)領(lǐng)域,其中大部分運算為向量運算或者矩陣運算,具有極高的并行度。相較于傳統(tǒng)通用的GPU/CPU加速方案,硬件ASIC加速器是目前最受歡迎的加速方案,一方面可以提供極高的并行度可以實現(xiàn)極高的性能,另外一方面具有極高的能效性。
[0003]常見的神經(jīng)網(wǎng)絡(luò)算法中,包括最為流行的多層感知神經(jīng)網(wǎng)絡(luò)(Mu111-LayerPerceptron,MLP)、卷積神經(jīng)網(wǎng)絡(luò)(Convolut1nal Neural Network,CNN)和深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN),多為非線性神經(jīng)網(wǎng)絡(luò)。而其中的非線性來自激活函數(shù),如sigmoid函數(shù)、tanh函數(shù),或者非線性層如ReLU等。通常這些非線性的運算都獨立于其他操作,也即輸入輸出為一一映射;且位于輸出神經(jīng)元最后階段,也即非線性運算完成后才能進(jìn)行下一層神經(jīng)網(wǎng)絡(luò)的計算,其運算速度深切的影響了神經(jīng)網(wǎng)絡(luò)加速器的性能。神經(jīng)網(wǎng)絡(luò)加速器中,這些非線性的運算都采用單個ALU(Arithmetic Logic Unit,算術(shù)邏輯運算單元)或者簡化的ALU進(jìn)行運算。然而這種方式降低了神經(jīng)網(wǎng)絡(luò)加速器的性能。
[0004]綜上可知,現(xiàn)有技術(shù)在實際使用上顯然存在不便與缺陷,所以有必要加以改進(jìn)。
【發(fā)明內(nèi)容】
[0005]針對上述的缺陷,本發(fā)明的目的在于提供一種神經(jīng)網(wǎng)絡(luò)加速器及其運算方法,其在神經(jīng)網(wǎng)絡(luò)加速器中引入多ALU設(shè)計,從而提升非線性運算的運算速度,使得神經(jīng)網(wǎng)絡(luò)加速器更加高效。
[0006]為了實現(xiàn)上述目的,本發(fā)明提供一種神經(jīng)網(wǎng)絡(luò)加速器,包括片內(nèi)存儲介質(zhì)、片內(nèi)地址索引模塊、核心計算模塊以及多ALU裝置,所述片內(nèi)存儲介質(zhì),用于存儲由神經(jīng)網(wǎng)絡(luò)加速器外部傳來的數(shù)據(jù)或用于存儲計算過程中產(chǎn)生的數(shù)據(jù);所述片內(nèi)數(shù)據(jù)索引模塊,用于執(zhí)行運算時根據(jù)輸入的索引映射至正確的存儲地址;所述核心計算模塊用于執(zhí)行神經(jīng)網(wǎng)絡(luò)運算中的線性運算;所述多ALU裝置用于從所述核心計算模塊或所述片內(nèi)存儲介質(zhì)獲取輸入數(shù)據(jù)執(zhí)行所述核心計算模塊無法完成的非線性運算。
[0007]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器,所述計算過程中產(chǎn)生的數(shù)據(jù)包括計算結(jié)果或中間結(jié)算結(jié)果。
[0008]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器,所述多ALU裝置包括輸入映射單元、多個算數(shù)邏輯運算單元以及輸出映射單元,
[0009]所述輸入映射單元用于將從所述片內(nèi)存儲介質(zhì)或所述核心計算模塊獲得的輸入數(shù)據(jù)映射到多個算數(shù)邏輯運算單元;
[0010]所述算數(shù)邏輯運算單元,用于根據(jù)所述輸入數(shù)據(jù)執(zhí)行邏輯運算,所述邏輯運算包括非線性運算;
[0011]輸出映射單元,用于將所述多個算數(shù)邏輯運算單元得到的計算結(jié)果整合映射成為正確的格式,為后續(xù)存儲或者其他模塊使用。
[0012]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器,所述輸入映射單元將所述輸入數(shù)據(jù)分配至所述多個算數(shù)邏輯運算單元分別執(zhí)行不同的運算或者將多個輸入數(shù)據(jù)一一映射至所述多個算數(shù)邏輯運算單元執(zhí)行運算。
[0013]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器,所述多個算數(shù)邏輯運算單元為同構(gòu)設(shè)計或異構(gòu)設(shè)
i+o
[0014]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器,單個所述算數(shù)邏輯運算單元包括多個執(zhí)行不同函數(shù)功能的子運算單元。
[0015]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器,所述多ALU裝置還用于在計算時根據(jù)控制信號配置各算數(shù)邏輯運算單元所執(zhí)行的運算功能。
[0016]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器,所述片內(nèi)存儲介質(zhì)為靜態(tài)隨機存儲器、動態(tài)隨機存儲器、增強動態(tài)隨機存取存儲器、寄存器堆或非易失存儲器。
[0017]本發(fā)明相應(yīng)提供一種采用如上所述的神經(jīng)網(wǎng)絡(luò)加速器的運算方法,包括:
[0018]根據(jù)控制信號選擇進(jìn)入多ALU裝置運算或進(jìn)入核心計算模塊進(jìn)行計算;
[0019]若進(jìn)入所述核心計算模塊則從片內(nèi)存儲介質(zhì)獲取數(shù)據(jù)執(zhí)行線性運算;
[0020]若進(jìn)入所述多ALU裝置運算則從所述片內(nèi)存儲介質(zhì)或所述核心計算模塊獲取輸入數(shù)據(jù)執(zhí)行所述核心計算模塊無法完成的非線性運算。
[0021]根據(jù)本發(fā)明的神經(jīng)網(wǎng)絡(luò)加速器的運算方法,進(jìn)入所述多ALU裝置運算的步驟還包括:所述多ALU裝置根據(jù)控制信號配置各算數(shù)邏輯運算單元所執(zhí)行的運算功能
[0022]本發(fā)明通過在神經(jīng)網(wǎng)絡(luò)加速器中加入了多ALU裝置,用于從所述核心計算模塊或片內(nèi)存儲介質(zhì)獲取輸入數(shù)據(jù)執(zhí)行核心計算模塊無法完成的運算,這些運算主要包括非線性運算。相對于現(xiàn)有的神經(jīng)網(wǎng)絡(luò)加速器設(shè)計,提升非線性運算的運算速度,使得神經(jīng)網(wǎng)絡(luò)加速器更加高效。
【附圖說明】
[0023]圖1是本發(fā)明一種神經(jīng)網(wǎng)絡(luò)加速器的結(jié)構(gòu)框圖;
[0024]圖2是本發(fā)明一種實施例的多ALU裝置的結(jié)構(gòu)框圖;
[0025]圖3是本發(fā)明一種實施例中單個算數(shù)邏輯運算單元功能實現(xiàn)框圖;
[0026]圖4是本發(fā)明一種實施例中多個算數(shù)邏輯運算單元功能分布框圖;
[0027]圖5是如圖1所示的神經(jīng)網(wǎng)絡(luò)加速器進(jìn)行神經(jīng)網(wǎng)絡(luò)運算的流程圖;
[0028]圖6是本發(fā)明神經(jīng)網(wǎng)絡(luò)加速器一種實施例的核心計算模塊組織框圖;
[0029]圖7是本發(fā)明神經(jīng)網(wǎng)絡(luò)加速器另一實施例的核心計算模塊組織框圖。
【具體實施方式】
[0030]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0031]如圖1所示,本發(fā)明提供了一種神經(jīng)網(wǎng)絡(luò)加速器100,包括片內(nèi)存儲介質(zhì)10、片內(nèi)地址索引模塊20、核心計算模塊30以及多ALU裝置40。其中片內(nèi)地址索引模塊20與片內(nèi)存儲介質(zhì)1連接,片內(nèi)地址索引模塊20、核心計算模塊30以及多ALU裝置40兩兩連接。
[0032]片內(nèi)存儲介質(zhì)10,用于存儲神經(jīng)網(wǎng)絡(luò)加速器外部傳來的數(shù)據(jù)或用于存儲計算過程中產(chǎn)生的數(shù)據(jù)。該計算過程中產(chǎn)生的數(shù)據(jù)包括計算過程中產(chǎn)生的計算結(jié)果或中間結(jié)果。這些結(jié)果可能來自加速器的片內(nèi)核心運算模塊30,也可能來自其他運算部件,如本發(fā)明中多ALU裝置40。該片內(nèi)存儲介質(zhì)10可以是靜態(tài)隨機存儲器(Static Random Access Memory,SRAM),動態(tài)隨機存儲器(Dynamic Random Access Memory,DRAM),增強動態(tài)隨機存取存儲器(Enhanced Dynamic Random Access Memory,e_DRAM),寄存器堆(Register file,RF)等常見存儲介質(zhì),也可以是新型的存儲器件,如非易失存儲器(Non-Volatile Memory,NVM)或者3D存儲器件等等。
[0033]片內(nèi)地址索引模塊20,用于在執(zhí)行運算時根據(jù)輸入的索引映射至正確的存儲地址。從而使得數(shù)據(jù)和片上存儲模塊可以正確的交互。這里的地址映射過程包括直接映射,算術(shù)變換等。
[0034]核心計算模塊30,用于執(zhí)行神經(jīng)網(wǎng)絡(luò)運算中的線性運算。具體的,核心計算模塊30完成神經(jīng)網(wǎng)絡(luò)算法中的大部分運算,即向量乘加操作。
[0035]多ALU裝置40,用于從核心計算模塊或片內(nèi)存儲介質(zhì)獲取輸入數(shù)據(jù)執(zhí)行核心計算模塊無法完成的非線性運算。在本發(fā)明中,該多ALU裝置主要用于非線性運算。以提升非線性運算的運算速度,使得神經(jīng)網(wǎng)絡(luò)加速器更加高效。在本發(fā)明中,核心計算模塊30、多ALU裝置40與片內(nèi)存儲介質(zhì)1的數(shù)據(jù)通路包括但不局限于H-TREE,或者FAT-TREE等互聯(lián)技術(shù)。
[0036]如圖2所示,多ALU裝置40包括輸入映射單元41、多個算數(shù)邏輯運算單元42以及輸出映射單元43。
[0037]輸入映射單元41,用于將從片內(nèi)存儲介質(zhì)或核心計算模塊獲得的輸入數(shù)據(jù)映射到多個算數(shù)邏輯運算單元42。在不同的加速器設(shè)計中可能存在不同的數(shù)據(jù)分配原則,根據(jù)不同分配原則,輸入映射單元41將輸入數(shù)據(jù)分配至多個算數(shù)邏輯運算單元42分別執(zhí)行不同的運算或者將多個輸入數(shù)據(jù)一一映射至多個算數(shù)邏輯運算單元42執(zhí)行運算。這里的輸入數(shù)據(jù)來源包括直接從片內(nèi)存儲介質(zhì)10獲得和核心計算模塊30獲得。
[0038]多個算數(shù)邏輯運算單元42,用于分別根據(jù)輸入數(shù)據(jù)執(zhí)行邏輯運算,邏輯運算包括非線性運算。其中單個算數(shù)邏輯運算單元42包括多個執(zhí)行不同函數(shù)功能的子運算單元,如圖3所示,單個算數(shù)邏輯運算單元42的功能包括乘法,加法,比較,除法,移位操作等等,也包括復(fù)雜的函數(shù)功能,如指數(shù)操作等等,單個算數(shù)邏輯運算單元42包括執(zhí)行前述不同函數(shù)的一個或多個子運算單元。同時,算數(shù)邏輯運算單元42的功能應(yīng)有神經(jīng)網(wǎng)絡(luò)加速器功能決定,而不局限于特定的算法操作。
[0039]多個算數(shù)邏輯運算單元42之間為同構(gòu)設(shè)計或異構(gòu)設(shè)計,也即算數(shù)邏輯運算單元42可以實現(xiàn)相同的函數(shù)功能,也可實現(xiàn)不同的函數(shù)功能。在如圖4所示的實施例中,多個算數(shù)邏輯運算單元42的功能異構(gòu)化,上面2個ALU實現(xiàn)乘法和加法的操作,其他ALU分別實現(xiàn)其他復(fù)雜功能。異構(gòu)設(shè)計有利于有效的平衡ALU的功能性和開銷。
[0040]輸出映射單元43,用于將多個算數(shù)邏輯運算單元42得到的計算結(jié)果整合映射成為正確的格式,為后續(xù)存儲或者其他模塊使用。
[0041]圖5是如圖1所示的神經(jīng)網(wǎng)絡(luò)加速器進(jìn)行神經(jīng)網(wǎng)絡(luò)運算的流程圖;該流程包括:
[0042]步驟S501,根據(jù)控制信號判斷是否進(jìn)入多ALU裝置進(jìn)行計算,若是則進(jìn)入步驟S502,否則進(jìn)入步驟S503。本發(fā)明的控制信號由控制指令實現(xiàn)、直接信號實現(xiàn)等方式。
[0043]步驟S502,從片內(nèi)存儲介質(zhì)或核心計算模塊獲取輸入數(shù)據(jù)。本步驟完成后進(jìn)入步驟S504。一般的,在核心計算完成后的非線性運算則片內(nèi)從核心計算模塊獲取輸入數(shù)據(jù),如果計算的輸入為緩存在片內(nèi)存儲介質(zhì)的中間結(jié)果則從片內(nèi)存儲介質(zhì)獲取輸入數(shù)據(jù)。
[0044]步驟S503,進(jìn)入核心計算模塊進(jìn)行計算。具體的,該核心計算模塊30從片內(nèi)存儲介質(zhì)獲取數(shù)據(jù)執(zhí)行線性運算,核心計算模塊30完成神經(jīng)網(wǎng)絡(luò)算法中的大部分運算,即向量乘加操作。
[0045]步驟S504,判斷是否對ALU功能進(jìn)行配置。若是則進(jìn)入步驟S505,否則直接進(jìn)入步驟S506。具體的,多ALU裝置40也需要根據(jù)控制信號判斷裝置自身是否需要進(jìn)行相關(guān)配置以控制各個算數(shù)邏輯運算單元42的運算功能,例如算數(shù)邏輯運算單元42需要完成特定的功能。也即,多ALU裝置40還用于在計算時根據(jù)控制信號配置各算數(shù)邏輯運算單元所執(zhí)行的運算功能。
[0046]步驟S505,從片內(nèi)存儲介質(zhì)獲取參數(shù)進(jìn)行配置。配置完成后進(jìn)入步驟S506。
[0047]步驟S506,多ALU裝置進(jìn)行計算。多ALU裝置40用于執(zhí)行核心計算模塊30無法完成的非線性運算。
[0048]步驟S507,判斷所有計算是否完成,是則結(jié)束,否則回到步驟S501繼續(xù)進(jìn)行計算。
[0049]在本發(fā)明的一個是實施例中,核心計算模塊30的結(jié)構(gòu)可以多種,例如圖6中的一維PE(processing element,處理單元)實現(xiàn)方式,圖7中的二維PE實現(xiàn)方式。在圖6中,多個PE(處理單元)同時進(jìn)行計算,通常為同構(gòu)運算,常見的向量運算加速器即為此類實現(xiàn)方式。在圖7的二維PE實現(xiàn)方式中,多個PE通常為同構(gòu)計算,然而多個PE在兩個維度上都有可能存在數(shù)據(jù)傳遞,常見的矩陣類加速器即為此類實現(xiàn)方式,如二維Systol ic結(jié)構(gòu)。
[0050]綜上所述,本發(fā)明通過在神經(jīng)網(wǎng)絡(luò)加速器中加入了多ALU裝置,用于從所述核心計算模塊或片內(nèi)存儲介質(zhì)獲取輸入數(shù)據(jù)執(zhí)行核心計算模塊無法完成的非線性運算。本發(fā)明提升非線性運算的運算速度,使得神經(jīng)網(wǎng)絡(luò)加速器更加高效。
[0051]當(dāng)然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
【主權(quán)項】
1.一種神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,包括片內(nèi)存儲介質(zhì)、片內(nèi)地址索引模塊、核心計算模塊以及多ALU裝置, 所述片內(nèi)存儲介質(zhì),用于存儲由神經(jīng)網(wǎng)絡(luò)加速器外部傳來的數(shù)據(jù)或用于存儲計算過程中產(chǎn)生的數(shù)據(jù); 所述片內(nèi)數(shù)據(jù)索引模塊,用于執(zhí)行運算時根據(jù)輸入的索引映射至正確的存儲地址; 所述核心計算模塊用于執(zhí)行神經(jīng)網(wǎng)絡(luò)運算中的線性運算; 所述多ALU裝置用于從所述核心計算模塊或所述片內(nèi)存儲介質(zhì)獲取輸入數(shù)據(jù)執(zhí)行所述核心計算模塊無法完成的非線性運算。2.根據(jù)權(quán)利要求1所述的神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,所述計算過程中產(chǎn)生的數(shù)據(jù)包括計算結(jié)果或中間結(jié)算結(jié)果。3.根據(jù)權(quán)利要求1所述的神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,所述多ALU裝置包括輸入映射單元、多個算數(shù)邏輯運算單元以及輸出映射單元, 所述輸入映射單元用于將從所述片內(nèi)存儲介質(zhì)或所述核心計算模塊獲得的輸入數(shù)據(jù)映射到多個算數(shù)邏輯運算單元; 所述算數(shù)邏輯運算單元,用于根據(jù)所述輸入數(shù)據(jù)執(zhí)行邏輯運算,所述邏輯運算包括非線性運算; 輸出映射單元,用于將所述多個算數(shù)邏輯運算單元得到的計算結(jié)果整合映射成為正確的格式,為后續(xù)存儲或者其他模塊使用。4.根據(jù)權(quán)利要求3所述的神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,所述輸入映射單元將所述輸入數(shù)據(jù)分配至所述多個算數(shù)邏輯運算單元分別執(zhí)行不同的運算或者將多個輸入數(shù)據(jù)一一映射至所述多個算數(shù)邏輯運算單元執(zhí)行運算。5.根據(jù)權(quán)利要求3所述的神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,所述多個算數(shù)邏輯運算單元為同構(gòu)設(shè)計或異構(gòu)設(shè)計。6.根據(jù)權(quán)利要求3所述的神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,單個所述算數(shù)邏輯運算單元包括多個執(zhí)行不同函數(shù)功能的子運算單元。7.根據(jù)權(quán)利要求3所述的神經(jīng)萬絡(luò)加速器,其特征在于,所述多ALU裝置還用于在計算時根據(jù)控制信號配置各算數(shù)邏輯運算單元所執(zhí)行的運算功能。8.根據(jù)權(quán)利要求1所述的神經(jīng)網(wǎng)絡(luò)加速器,其特征在于,所述片內(nèi)存儲介質(zhì)為靜態(tài)隨機存儲器、動態(tài)隨機存儲器、增強動態(tài)隨機存取存儲器、寄存器堆或非易失存儲器。9.一種如權(quán)利要求1?8任一項所述的神經(jīng)網(wǎng)絡(luò)加速器的運算方法,其特征在于,包括: 根據(jù)控制信號選擇進(jìn)入多ALU裝置運算或進(jìn)入核心計算模塊進(jìn)行計算; 若進(jìn)入所述核心計算模塊則從片內(nèi)存儲介質(zhì)獲取數(shù)據(jù)執(zhí)行線性運算; 若進(jìn)入所述多ALU裝置運算則從所述片內(nèi)存儲介質(zhì)或所述核心計算模塊獲取輸入數(shù)據(jù)執(zhí)行所述核心計算模塊無法完成的非線性運算。10.根據(jù)權(quán)利要求9所述的神經(jīng)網(wǎng)絡(luò)加速器的運算方法,其特征在于,進(jìn)入所述多ALU裝置運算的步驟還包括: 所述多ALU裝置根據(jù)控制信號配置各算數(shù)邏輯運算單元所執(zhí)行的運算功能。
【文檔編號】G06F7/575GK105892989SQ201610183040
【公開日】2016年8月24日
【申請日】2016年3月28日
【發(fā)明人】杜子?xùn)|, 郭崎, 陳天石, 陳云霽
【申請人】中國科學(xué)院計算技術(shù)研究所