加速深度神經網絡算法的加速芯片的運算裝置及方法
【技術領域】
[0001]本發明屬于神經網絡算法領域和計算機硬件領域。更具體地,本發明涉及一種加速深度神經網絡算法的加速芯片的運算裝置及方法。
【背景技術】
[0002]人工神經網絡算法,是20世紀80年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象,建立某種簡單模型,按不同的連接方式組成不同的網絡。其具有自主學習功能,可通過訓練慢慢學會識別和預測;聯想存儲功能,具有很高算法健壯性;并行度高,具有高速尋找優化解的能力,可針對大數據復雜問題快速找到優化解;可塑性強,可充分逼近任意復雜的非線性關系;具有很強的信息綜合能力,能同時處理定量和定性的信息,適用于多信息融合和多媒體技術。
[0003]近年來,人工神經網絡的研究工作不斷深入,已經取得了很大的進展,其在圖像處理、模式識別、智能機器人、自動控制、預測估計、生物、醫學、經濟等領域已成功地解決了許多傳統計算機方法難以解決的實際問題,表現出了良好的智能特性,推動著信息處理技術和人工智能不斷地發展。
[0004]神經網絡雖然已在諸多領域取得廣泛的成功,然而現階段,大部分神經網絡算法是在軟件算法層次進行優化,在通用CPU或GPU上搭建運行。鑒于通用處理器相對較低的性能功耗比,高效地實現神經網絡算法的方式已成為大家的迫切需求。
[0005]專利文件1(公開號為CN101527010A)公開了一種人工神經網絡算法的硬件實現方法及其系統,和現有的技術相比,克服以往軟件實現中的串行方式來完成并行計算的尷尬,取代了軟件實現的弊端;又由于進行了算法優化,節省了大量硬件資源,在FPGA平臺上實現,成本較低,利用優化的算法,避開了 SIGMOID函數用硬件難以實現的困境,又使用了累加方式,節省了硬件資源。但該專利僅僅通過FPGA平臺實現人工神經網絡算法。
[0006]在現代處理器設計中,異構多核處理器框架被認為是一種有前途的道路以實現該性能低能源計算的方法。已知的是,神經網絡算法運算過程中,將產生一系列的中間值,所述中間值隨后一次或多次被用于計算輸出層神經元值或者計算突出權重的變化值。采用通用處理器的存儲方式將所述中間值存儲于主存中,將面臨的一個重大問題是大量的中間值被生成并需要存儲,從而所需主存空間增加。同時,這樣的方法增加了將中間值存儲到主存儲器或者從主存儲器讀取中間值次數,芯片功耗增加,不符合前面所述的低功耗加速器芯片設計理念。
【發明內容】
[0007]本發明的目的在于,提供一種加速深度神經網絡算法的加速芯片的運算裝置及方法,能夠減少對主存儲器的中間值讀取和寫入次數,降低加速器芯片的能量消耗,避免數據處理過程中的數據缺失和替換問題。
[0008]本發明的加速深度神經網絡算法的加速芯片的運算裝置,包括:
[0009]向量加法處理器模塊,用于進行向量的加法或減法、和/或深度神經網絡算法中的pooling層算法的向量化的運算;
[0010]向量函數值運算器模塊,用于深度神經網絡算法中的非線性求值的向量化運算;
[0011]向量乘加器模塊,用于進行向量的乘加運算;
[0012]被配置為執行可編程指令的所述向量加法處理器模塊、向量函數值運算器模塊、和向量乘加器模塊之間互相交互以計算神經網絡的神經元值和網絡輸出結果、以及、代表輸入層神經元對輸出層神經元作用強度的突觸權重變化量;
[0013]所述向量加法處理器模塊、向量函數值運算器模塊、和向量乘加器模塊中均設置有中間值存儲區域,用于存儲依照所述指令所計算的向量化的中間值,并對主存儲器進行讀取與寫入操作。
[0014]本發明的加速深度神經網絡算法的加速芯片的運算裝置,其中,所述向量加法處理器模塊、向量函數值運算器模塊、和向量乘加器模塊生成輸出值之后,存儲于所述中間值存儲區域內所述中間值將被丟棄。
[0015]本發明的加速深度神經網絡算法的加速芯片的運算裝置,其中,所述向量加法處理器模塊、向量函數值運算器模塊、和向量乘加器模塊的所述中間值存儲區域被配置為隨機存儲器。
[0016]本發明的加速深度神經網絡算法的加速芯片的運算裝置,其中,所述隨機存儲器被配置為存儲自身產生的來自于每個神經元、突出權重變化量的中間值。
[0017]本發明的加速深度神經網絡算法的加速芯片的運算裝置,其中,所述向量加法處理器模塊、向量函數值運算器模塊、和向量乘加器模塊通過一 index訪問所述中間值存儲區域。
[0018]另外,本發明還提供一種加速深度神經網絡算法的加速芯片的運算方法,該方法使用上述加速深度神經網絡算法的加速芯片的運算裝置進行運算,包括以下步驟:
[0019]向量加法處理運算步驟,在向量加法處理器模塊依照指令進行向量的加法或減法、和/或深度神經網絡算法中的pool ing層算法的向量化的運算;
[0020]向量函數值運算步驟,在向量函數值運算器模塊依照指令進行深度神經網絡算法中的非線性求值的向量化運算;
[0021 ]向量乘加運算步驟,在向量乘加器模塊依照指令進行向量的乘加運算;
[0022]所述向量加法處理運算步驟、向量函數值運算步驟、和向量乘加運算步驟互相交互以計算神經網絡的神經元值和網絡輸出結果、以及、代表輸入層神經元對輸出層神經元作用強度的突觸權重變化量;
[0023]所述向量加法處理運算步驟、向量函數值運算步驟、和向量乘加運算步驟中所產生的向量化的中間值存儲于所述向量加法處理器模塊、向量函數值運算器模塊、和向量乘加器模塊中的中間值存儲區域,且所述中間值存儲區域可對主存儲器進行讀取與寫入操作。
[0024]本發明的加速深度神經網絡算法的加速芯片的運算方法,其中,
[0025]所述向量加法處理運算步驟、向量函數值運算步驟、和向量乘加運算步驟中,生成輸出值之后,存儲于所述中間值存儲區域內所述中間值將被丟棄。
[0026]本發明的加速深度神經網絡算法的加速芯片的運算方法,其中,
[0027]所述向量加法處理運算步驟、向量函數值運算步驟、和向量乘加運算步驟中,通過一 index訪問所述中間值存儲區域。
[0028]本發明的加速深度神經網絡算法的加速芯片的運算方法,其中,
[0029]所述向量加法處理運算步驟、向量函數值運算步驟、和向量乘加運算步驟中,對所述中間值存儲區內的、先前對所述index指定的存儲塊未寫入的位置執行讀取,則中間存儲拒絕此讀取請求,被拒絕的讀取請求返回的表示讀取成功的狀態為無效。
[0030]本發明的加速深度神經網絡算法的加速芯片的運算方法,其中,
[0031 ]所述向量加法處理運算步驟、向量函數值運算步驟、和向量乘加運算步驟中,對所述中間值存儲區內的、先前對所述index指定的存儲塊已寫入的位置執行寫入,則中間存儲拒絕此寫入請求,被拒絕的寫入請求返回的表示寫入成功的狀態為無效。
[0032]本發明的效果在于:
[0033](1)與將中間值存儲到所述功能部件外部的存儲器相比,將數據存儲到所述功能部件外部的存儲器需要等待的時間更長。
[0034](2)與將中間值存儲到所述功能部件外部的存儲器相比,將數據存儲到所述功能部件外部的存儲器消耗的能量更多。
[0035](3)與將中間值存儲到所述功能部件外部的存儲器相比,將數據存儲到所述功能部件外部的存儲器大大增加了對所述功能部件外部存儲器的訪問次數,容易造成所述功能部件外部存儲器的訪問沖突。
[0036](4)功能部件生成所述輸出值之后,存儲于功能部件內所述中間值將被丟棄,這有利于增加可利用中間值存儲器可使用單元,從而提高中間值存儲器利用率。
【附圖說明】
[0037]圖1為本發明的加速深度神經網絡算法的加速芯片的運算裝置各構成模塊與主存之間的關系圖。
[0038]圖2為CNN神經網絡算法Max Pooling流程圖。
[0039]圖3為CNN神經網絡反向更新bias流程圖。
[0040]圖4為本發明的加速深度神經網絡算法的加速芯片的運算方法的流程圖。
[0041]圖5為本發明的具有加速深度神經網絡算法的加速芯片的運算裝置的加速器芯片的簡要結構圖。
[0042]附圖標記說明
[0043]1向量加法處理器模塊
[0044]2向量函數值運算器模塊
[0045]3 向量乘加器模塊
[0046]4 數據總線