TW201805858A - 一種用於執行神經網絡運算的裝置及方法 - Google Patents

一種用於執行神經網絡運算的裝置及方法 Download PDF

Info

Publication number
TW201805858A
TW201805858A TW106126471A TW106126471A TW201805858A TW 201805858 A TW201805858 A TW 201805858A TW 106126471 A TW106126471 A TW 106126471A TW 106126471 A TW106126471 A TW 106126471A TW 201805858 A TW201805858 A TW 201805858A
Authority
TW
Taiwan
Prior art keywords
neural network
data
network processing
unit
module
Prior art date
Application number
TW106126471A
Other languages
English (en)
Other versions
TWI767925B (zh
Inventor
發明人放棄姓名表示權
Original Assignee
上海寒武紀信息科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 上海寒武紀信息科技有限公司 filed Critical 上海寒武紀信息科技有限公司
Publication of TW201805858A publication Critical patent/TW201805858A/zh
Application granted granted Critical
Publication of TWI767925B publication Critical patent/TWI767925B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Abstract

一種用於執行神經網絡運算的裝置及方法,裝置包括片上互聯模塊和與所述片上互聯模塊通信連接的多個神經網絡處理模塊,神經網絡處理模塊能夠通過片上互聯模塊從其它神經網絡處理模塊中讀寫數據。在多核多層人工神經網絡運算中,要將每一層神經網絡運算進行劃分,進而由多個神經網絡處理模塊進行運算,得到各自的運算結果數據,多個神經網絡處理單元還將各自的運算結果數據進行數據交換。

Description

一種用於執行神經網絡運算的裝置及方法
本發明屬於神經網絡運算領域,尤其涉及一種用於執行神經網絡運算的裝置及方法。
多層人工神經網絡被廣泛應用於模式識別,圖像處理,函數逼近和優化計算等領域,多層人工網絡在近年來由於其較高的識別準確度和較好的可並行性,受到學術界和工業界越來越廣泛的關注。人工神經網絡涉及到多種算法,其中使用多核多層神經網絡處理器來執行神經網絡運算,被廣泛的應用在各種人工神經網絡模型中以及各種使用神經網絡的場景中。
一種支持多核多層神經網絡運算的已知方法是使用通用處理器。該方法通過使用通用寄存器堆和通用功能部件執行通用指令來支持上述算法。該方法的缺點之一是單個通用處理器的運算性能較低,無法滿足通常的多核多層人工神經網絡運算的性能需求。而多個通用處理器並行執行時,通用處理器之間相互通信又成為了性能瓶頸。另外,通用處理器需要把人工神經網絡運算譯碼成一長列運算及訪存指令序列,處理器前端譯碼帶來了較大的功耗開銷
另一種支持多核多層人工神經網絡運算的已知方法是使用圖形處理器(graphics processing unit,GPU)。該方法通過使用通用寄存器堆和通用流處理單元執行通用單指令多數據流(single instruction multiple data,SIMD)指令來支持上述算法。由於GPU是專門用來執行圖形圖像運算以及科學計算的設備,沒有對人工神經網絡運算的專門支持,仍然需要大量的前端譯碼工作才能執行多層人工神經網絡運算,帶來了大量的額外開銷。另外GPU只有較小的片上緩存,多層人工神經網絡的模型數據(權值)需要反復從片外搬運,片外帶寬成為了主要性能瓶頸。
有鑒於此,本發明提供一種用於執行神經網絡運算的裝置及方法,能以低開銷的方式實現一層或多層多核多層人工神經網絡的運算,並且運算性能高效。
本發明提供一種用於執行神經網絡運算的裝置及方法,裝置包括片上互聯模塊和與該片上互聯模塊通信連接的多個神經網絡處理模塊,神經網絡處理模塊能夠通過片上互聯模塊從其它神經網絡處理模塊中讀寫數據。在多核多層人工神經網絡運算中,要將每一層神經網絡運算進行劃分,進而由多個神經網絡處理模塊進行運算,得到各自的運算結果數據,多個神經網絡處理單元還將各自的運算結果數據進行數據交換。例如每進行一層神經網絡計算之後,每個神經網絡處理模塊只計算得到了部分輸出數據,而在執行下一層神經網絡運算時,每個神經網絡處理模塊還會需求來自於其他神經網絡處理模塊的數據,因此每個神經網絡處理的需要將自己計算得到的運算結果數據發送給對應的神經網絡處理模塊,用以使之計算下一層的神經網絡。
用於執行神經網絡運算的裝置中,神經網絡處理模塊能夠通過片上互聯模塊從其它神經網絡處理模塊中讀寫數據,還可從本地讀寫數據。
進一步,神經網絡處理模塊包括神經網絡處理單元和高速存儲單元;神經網絡處理單元用於讀寫數據,高速存儲單元用於存儲本地數據。
進一步,用於執行神經網絡運算的裝置還包括外部存儲模塊,神經網絡處理模塊還能夠通過片上互聯模塊從外部存儲模塊中讀寫數據。
進一步,神經網絡處理單元包括指令隊列、高速緩存單元、IO讀取單元和神經網絡運算單元,其中:
進一步,指令隊列存儲有運算指令,IO讀取單元根據運算指令從該神經網絡處理單元的外部讀取數據,並將讀取的數據緩存至高速緩存單元中,神經網絡運算單元根據該運算指令從高速緩存單元中讀取所緩存的數據,並執行神經網絡運算,得到運算結果數據;
進一步,神經網絡處理單元還包括同步關係單元,指令隊列還存儲有數據送達指令,神經網絡運算單元向其它神經網絡運算單元發送數據後,所述神經網絡運算單元所對應的同步關係單元執行數據送達指令,以向其它神經網絡運算單元所對應的同步關係單元發送一數據送達信號。
進一步,指令隊列還存儲有數據依賴指令,所述神經網絡運算單元收到其其它神經網絡運算單元所發送的數據後,其對應的同步關係單元執行所述數據依賴指令以檢測是否是收到數據送達信號,若是,則繼續執行執行指令隊列中的指令,否則阻塞指令隊列。
進一步,指令隊列還存儲有數據同步指令,神經網絡處理單元中的同步關係單元通過執行所述數據同步指令,以向其它神經網絡處理單元中的同步關係單元發送一同步信號,以強制多個神經網絡處理單元做同步操作。
進一步,片上互聯模塊包括一級互聯模塊和與該一級互聯模塊通信連接的多個二級互聯模塊,一級互聯模塊還與所述外部存儲模塊通信連接,所述多個二級互聯模塊與多個神經網絡處理模塊一一對應,其中,每個二級互聯模塊分別與相應神經網絡處理模塊中的神經網絡處理單元和高速存儲單元通信連接。
本發明還提供一種用於執行單層神經網絡運算的方法,包括:
S1,多個神經網絡處理模塊中的每個神經網絡處理模塊直接從本地讀取數據,和/或通過片上互聯模塊從其它神經網絡處理模塊中讀取數據,其中,多個神經網絡處理模塊與該片上互聯模塊通信連接;
S2,每個神經網絡處理模塊根據讀取的數據進行單層神經網絡的部分運算,得到各自的運算結果數據;
S3,每個神經網絡處理模塊將各自的運算結果數據進行本地存儲和/或通過片上互聯模塊將各自的運算結果數據寫入至其他神經網絡處理模塊中。
進一步,步驟S3中,每個神經網絡處理模塊將各自的運算結果寫入至其它神經網絡處理模塊中後,向其它特定的神經網絡處理模塊發送一數據送達信號。
本發明還提供一種用於執行多層神經網絡運算的方法,對於每一層神經網絡運算,執行上述步驟S1-S3,並將該層各神經網絡處理模塊得到的運算結果數據用於下一層神經網絡運算。
本發明所提供的用於執行神經網絡運算的裝置及方法,具有以下優點:
1、由於採用多核神經網絡處理模塊,允許單層的神經網絡將任務劃分,在多個神經網絡處理模塊上執行,並且採用了專用指令,允許在執行多層神經網絡的時候,可以在多個神經網絡處理器之間相互傳輸計算得到的數據,故能實現多層多核的神經網絡運算。
2、由於採用多核神經網絡處理模塊,解決了在執行多核多層神經網絡處理運算的時候,單個處理器處理性能不足的問題,具有顯著加速多核多層神經網絡運算的效果。
3、由於採用了專用的數據指令,有效的解決了在執行多核多層神經網絡時,其多個處理器之間需要交互大量數據的問題,具有顯著加速多核多層神經網絡運算的效果。
本發明提供的用於執行人工神經網絡運算的裝置可以應用於以下(包括但不限於)場景中:數據處理、機器人、電腦、打印機、掃描儀、電話、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、雲端服務器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備等各類電子產品;飛機、輪船、車輛等各類交通工具;電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機等各類家用電器;以及包括核磁共振儀、B超、心電圖儀等各類醫療設備。
圖1是本發明提供的用於執行神經網絡運算的裝置的結構示意圖,如圖1所示,裝置包括多個神經網絡處理模塊10及一個片上互聯模塊20,多個神經網絡處理模塊10與該片上互聯模塊20通信連接,其中:
神經網絡處理模塊10能夠通過片上互聯模塊20從其它神經網絡處理模塊10中讀寫數據,還可從本地讀寫數據。當要執行神經網絡運算時,每個神經網絡處理模塊10作為一個核執行相應的運算,其運算所需的數據可直接從本地直接獲取,也可通過片上互聯模塊20與其他神經網絡處理模塊10通信,以從其他神經網絡處理模塊10處讀取運算所需的數據。各個神經網絡處理模塊10讀取運算所需的數據後,執行相應的運算,得到各自的運算結果數據,在單層神經網絡運算中,各個神經網絡處理模塊10可將各自的運算結果數據匯總至一個神經網絡處理模塊10中進行累加,以得到最終結果數據。在多層神經網絡運算中,當層各個神經網絡處理模塊10計算得到運算結果數據,可能在下一層作為運算所需的數據被其他神經網絡處理模塊10使用,這樣在當層神經網絡運算完畢後,各個神經網絡處理模塊10會進行數據交互,以準備進行下一層神經網絡運算。
圖2是本發明中神經網絡處理模塊的結構示意圖,如圖2所示,神經網絡處理模塊10包括神經網絡處理單元11和高速存儲單元12;神經網絡處理模塊10在進行神經網絡運算時,神經網絡處理單元11直接從與其對應的高速儲存單元12中讀取數據,和/或通過片上互聯模塊20從其它神經網絡處理模塊10中的神經網絡處理單元11中讀取數據,和/或通過片上互聯模塊20從其它神經網絡處理模塊10中的高速存儲單元12中讀取數據;每個神經網絡處理模塊10中的神經網絡處理單元11根據讀取的數據進行神經網絡運算,得到各自的運算結果數據;在完成運算後,神經網絡處理單元11將運算結果數據直接寫入至與其對應的高速儲存單元12中,和/或通過片上互聯模塊20將運算結果數據寫入至其它神經網絡處理模塊10中的神經網絡處理單元11中,和/或通過片上互聯模塊20將運算結果數據寫入至其它神經網絡處理模塊10中的高速存儲單元12中。總之,神經網絡處理單元11可直接從其對應的高速儲存單元獲取數據,也可以通過片上互聯模塊20獲取其它位置的數據,這樣避免了反復向內存讀取數據,降低了內存訪問帶寬。
如圖3所示,本發明提供的用於執行神經網絡運算的裝置還包括外部存儲模塊30,其與片上互聯模塊20通信連接,神經網絡處理模塊10還能夠通過片上互聯模塊從外部存儲模塊中讀寫數據,利用外部存儲模塊30,可以從外界向裝置中導入新的數據,裝置執行的最終執行結果數據也可以寫入至外部存儲模塊30,以供外部導出。其中,外部存儲模塊30可以通過硬件來實現(包括但不限於FPGA、CGRA、專用集成電路ASIC、模擬電路或憶阻器等)。
圖4是本發明中神經網絡處理單元11的結構示意圖,如圖4所示,神經網絡處理單元11包括指令隊列111、神經網絡運算單元112、IO讀取單元113、高速緩存單元114和同步關係單元115。指令隊列111存儲有多種類型的指令,神經網絡處理單元11根據不同的指令執行不同的操作。下表為各類指令的描述:
指令包括指令名稱以及多個操作碼:
數據送達指令,指令名稱為確認字符(acknowledgement,ACK),其中各個操作碼分別表示是否向該神經網絡處理單元11發送數據送達信號(ACK信號),神經網絡處理單元11向其他神經網絡處理單元11寫入數據後,執行數據送達指令以發送數據送達信號給對應的神經網絡處理單元11,以表明數據已經傳輸到位;
數據依賴指令,指令名稱為FENCE,其中各個操作碼表示是否檢查來自該神經網絡處理單元11的ACK信號;神經網絡處理單元11執行數據依賴指令以檢測其所有依賴的數據是否已經到達本神經網絡處理單元。
數據同步指令,指令名稱為SYNC,其中各個操作碼表示該神經網絡處理單元是否參與同步操作,神經網絡處理單元11執行數據同步指令用以強制多個神經網絡處理單元11做同步操作,即當多個神經網絡都執行到當前指令後,這些神經網絡處理單元才可以執行之後的指令;
運算指令,指令名稱為COMPUTE,其中第一個操作碼表示具體的計算任務,如MLP,CONV,POOL等,其餘操作碼用來表示輸入輸出數據的地址和大小,以及神經網絡計算指令的配置信息。
輸入輸出指令,指令名稱為IO,其中的操作碼分別表示搬運數據的起始地址,結束地址以及數據大小的信息,神經網絡處理單元11執行輸入輸出指令以與其餘模塊之間進行通信數據。
IO讀取單元根據113根據指令隊列111中的運算指令從該神經網絡處理單元11的外部(如高速存儲單元12、其他神經網絡處理單元11等)讀取數據,並將讀取的數據緩存至高速緩存單元114中,神經網絡運算單元112根據該運算指令從高速緩存單元114中讀取所緩存的數據,並執行神經網絡運算,得到相應的運算結果數據;
神經網絡運算單元112將運算結果數據寫入至高速緩存單元114中,當需要將運算結果數據發送中外部(其他神經網絡處理單元11等)時,IO讀取單元113從高速緩存單元114中讀取運算結果數據,並將運算結果數據寫入到該神經網絡處理單元11的外部。
圖5是本發明中片上互聯模塊的結構示意圖,如圖5所示,片上互聯模塊20包括一級互聯模塊21和與該一級互聯模塊通信連接的多個二級互聯模塊22,一級互聯模塊21還與外部存儲模塊30通信連接,多個二級互聯模塊22與多個神經網絡處理模塊10一一對應,其中,每個二級互聯模塊22分別與相應神經網絡處理模塊中的神經網絡處理單元11和高速存儲單元12通信連接。具體的,二級的互聯模塊22一個端口連接神經網絡處理單元11,一個端口連接該神經網絡處理單元對應的高速存儲單元12,另一個端口連接一級互聯模塊21,一級互聯模塊21將多個二級互聯模塊22和外部存儲模塊30連接,用以保證這些模塊之間的數據通路。這樣,可以在保證各個神經網絡處理單元11以及高速存儲單元12和外部存儲模塊30之間相互通信,並且佔用較小的面積開銷。
採用本發明以上所描述的裝置,可執行單層神經網絡運算,包括:
S1,每個神經網絡處理模塊10根據其自身指令隊列11中存儲的計算指令,根據指令中操作碼所指示的地址,直接從本地讀取數據,和/或通過片上互聯模塊20從其它神經網絡處理模塊10中讀取數據;
S2,每個神經網絡處理模塊10根據讀取的數據進行單層神經網絡的部分運算,得到各自的運算結果數據;
S3,每個神經網絡處理模塊10將各自的運算結果數據進行本地存儲和/或通過片上互聯模塊20將各自的運算結果數據寫入至其他神經網絡處理模塊10中。
對於多層神經網絡運算,其實現過程與單層神經網絡類似,當上一層人工神經網絡執行完畢後,在下一層運算時,每個神經網絡處理模塊10根據新的運算指令從新的地址讀取新的數據進行計算,並且依據新的指令在多核(即多個神經網絡處理模塊10)之間分配計算任務。對於每一層神經網絡運算,執行上述步驟S1-S3,並將該層各神經網絡處理模塊10得到的運算結果數據用於下一層神經網絡運算。
為使本發明的目的、技術方案和優點更加清楚明白,以下結合具體實施例,並參照圖式,對本發明進一步詳細說明。應當說明的是,雖然下面所述實施例僅討論了全連接層的運算流程圖,但是不局限在全連接層,也可以是所有的人工神經網絡算法的運算流程圖。
圖6是本發明執行一層全連接層運算實施例的流程圖,其執行過程如圖6所示:
步驟1:依據運算指令COMPUTE,每個神經網絡處理單元11從對應的高速存儲單元12中讀取數據,分別計算得到全連接層的部分運算結果數據。
在每個神經網絡處理單元11中,指令隊列111將運算指令COMPUTE發送至神經網絡運算單元112和IO讀取單元113,神經網絡運算單元112根據運算指令COMPUTE中的指令名稱,確定將要執行一層全連接層運算,具體的,IO讀取單元113根據運算指令COMPUTE中的地址從其對應的高速存儲單元12中讀取運算所需數據,並將讀取的數據存儲於高速緩存單元114中,神經網絡運算單元112從高速緩存單元114中讀取相應的數據,然後根據讀取的數據執行運算指令COMPUTE,以進行全連接層的部分運算,得到全連接層的部分運算結果數據作為輸出數據。
步驟2:依據輸入輸出指令IO,每個神經網絡處理單元11將自己計算的到的部分運算結果數據通過片上互聯模塊20發送給相應的神經網絡處理單元11。由於每個神經網絡處理單元11只計算出部分運算結果數據,因此其需要將該部分輸出數據發送給相應的神經網絡處理單元11進行加和運算。
具體的,步驟1中神經網絡運算單元112將計算得到的部分運算結果數據存儲於高速緩存單元114中,指令隊列111將輸入輸出指令IO發送給IO讀取單元113後,IO讀取單元113執行輸出指令IO,以將存儲於高速緩存單元114中的部分運算結果數據讀取,併發送至外部的相應的神經網絡處理單元11。這裡需要說明的是,每個神經網絡處理單元11可能會將部分運算結果數據發送至一個對應的神經網絡處理單元11中,也可能發送至多個對應的神經網絡處理單元11中,也就是說,每個神經網絡處理單元11也可能收到一個神經網絡處理單元11發送的部分運算結果數據,也可能收到多個神經網絡處理單元11發送的部分運算結果數據。
步驟3:每個神經網絡處理單元11將自己計算的到的部分運算結果數據發送給相應的神經網絡處理單元11後,需要執行數據送達指令ACK,以向對應的神經網絡處理單元11發送數據送達信號。每個神經網絡處理單元11需要向接受其發送數據的神經網絡處理單元11發送數據送達信號,用以表明其數據依賴關係。
步驟4:依據數據依賴指令FENCE,每個神經網絡處理單元11檢測其發送數據送達信號是否到達相應的神經網絡處理單元11,如果沒有到達,則等待對應的數據送達信號到達相應的神經網絡處理單元11。對於每個將要進行加和運算神經網絡處理單元11,只有其收到所有其他神經網絡處理單元11所發送的數據送達信號時,才表明其所需要的輸入數據全部到達,從而執行加和運算。
步驟5:依據運算指令COMPUTE,每個的神經網絡處理單元11匯集其他神經網絡處理單元11的部分運算結果數據後,聯合上自身運算所得的部分運算結果數據進行加和運算,得到最終的運算結果數據。
步驟6:依據輸入輸出指令IO,每個神經網絡處理單元11將計算得到的最終的運算結果數據作為輸出數據寫入外部存儲模塊30中。在每個神經網絡處理單元11中,將最終的運算結果數據寫入外部存儲模塊30中的執行過程與步驟2類似,在此就不再贅述。
綜上所述,本發明提供的裝置和指令集,解決了CPU和GPU運算性能不足、前端譯碼開銷大的問題,能有效支持多層人工神經網絡運算,同時,針對多核多層人工神經網絡運算採用專用片上存儲,充分挖掘了神經元和權值數據的重用性,避免了反復向內存讀取這些數據,降低了內存訪問帶寬,避免了內存帶寬成為多層人工神經網絡全連接層正向運算性能瓶頸的問題。
前面的圖式中所描繪的進程或方法可通過包括硬件(例如,電路、專用邏輯等)、固件、軟件(例如,被具體化在非瞬態計算機可讀介質上的軟件),或兩者的組合的處理邏輯來執行。雖然上文按照某些順序操作描述了進程或方法,但是,應該理解,所描述的某些操作能以不同順序來執行。此外,可並行地而非順序地執行一些操作。
以上所述的具體實施例,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施例而已,並不用於限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
1、2、3、4、5、6‧‧‧步驟
10‧‧‧神經網絡處理模塊
11‧‧‧神經網絡處理單元
12‧‧‧高速存儲單元
20‧‧‧片上互聯模塊
30‧‧‧外部存儲模塊
111‧‧‧指令隊列
112‧‧‧神經網絡運算單元
113‧‧‧IO讀取單元
114‧‧‧高速緩存單元
115‧‧‧同步關係單元
圖1是本發明提供的用於執行神經網絡運算的裝置的結構示意圖。
圖2是本發明中神經網絡處理模塊的結構示意圖。
圖3是本發明中外部存儲模塊的結構示意圖。
圖4是本發明中神經網絡處理單元的結構示意圖。
圖5是本發明中片上互聯模塊的結構示意圖。
圖6是本發明執行一層全連接層運算實施例的流程圖。
10‧‧‧神經網絡處理模塊
20‧‧‧片上互聯模塊

Claims (12)

  1. 一種用於執行神經網絡運算的裝置,其中,包括ㄧ片上互聯模塊和與所述片上互聯模塊通信連接的多個神經網絡處理模塊,其中: 所述神經網絡處理模塊能夠通過所述片上互聯模塊從其它神經網絡處理模塊中讀寫數據。
  2. 根據申請專利範圍第1項所述的用於執行多核多層神經網絡運算的裝置,其中,所述神經網絡處理模塊還從本地讀寫數據。
  3. 根據申請專利範圍第2項所述的用於執行神經網絡運算的裝置,其中,所述神經網絡處理模塊包括ㄧ神經網絡處理單元和ㄧ高速存儲單元;以及 所述神經網絡處理單元用於讀寫數據,所述高速存儲單元用於存儲本地數據。
  4. 根據申請專利範圍第1-3項任意一項所述的用於執行神經網絡運算的裝置,其中,還包括ㄧ外部存儲模塊,所述神經網絡處理模塊還能夠通過所述片上互聯模塊從所述外部存儲模塊中讀寫數據。
  5. 根據申請專利範圍第2項所述的用於執行神經網絡運算的裝置,其中,所述神經網絡處理單元包括ㄧ指令隊列、ㄧ高速緩存單元、ㄧIO讀取單元和ㄧ神經網絡運算單元,其中: 所述指令隊列存儲有ㄧ運算指令,所述IO讀取單元根據所述運算指令從所述神經網絡處理單元的外部讀取數據,並將讀取的數據緩存至所述高速緩存單元中,所述神經網絡運算單元根據所述運算指令從所述高速緩存單元中讀取所緩存的數據,並執行神經網絡運算,得到ㄧ運算結果數據; 所述神經網絡運算單元將所述運算結果數據寫入至所述高速緩存單元中,所述IO讀取單元從所述高速緩存單元中讀取所述運算結果數據,並將所述運算結果數據寫入到所述神經網絡處理單元的外部。
  6. 根據申請專利範圍第5項所述的用於執行神經網絡運算的裝置,其中,所述神經網絡處理單元還包括ㄧ同步關係單元,所述指令隊列還存儲有數據送達指令,所述神經網絡運算單元向其它神經網絡運算單元發送數據後,所述神經網絡運算單元所對應的同步關係單元執行數據送達指令,以向其它神經網絡運算單元所對應的同步關係單元發送一數據送達信號。
  7. 根據申請專利範圍第6項所述的用於執行神經網絡運算的裝置,其中,所述指令隊列還存儲有ㄧ數據依賴指令,所述神經網絡運算單元收到其它神經網絡運算單元所發送的數據後,其對應的同步關係單元執行所述數據依賴指令以檢測是否是收到數據送達信號,若是,則繼續執行所述指令隊列中的指令,否則阻塞所述指令隊列。
  8. 根據申請專利範圍第6項所述的用於執行神經網絡運算的裝置,其中,所述指令隊列還存儲有ㄧ數據同步指令,所述神經網絡處理單元中的同步關係單元通過執行所述數據同步指令,以向其它神經網絡處理單元中的同步關係單元發送一同步信號,以強制多個神經網絡處理單元做同步操作。
  9. 根據申請專利範圍第3項所述的用於執行神經網絡運算的裝置,其中,所述片上互聯模塊包括ㄧ一級互聯模塊和與所述一級互聯模塊通信連接的多個二級互聯模塊,所述一級互聯模塊還與所述外部存儲模塊通信連接,所述多個二級互聯模塊與所述多個神經網絡處理模塊一一對應,其中,每個二級互聯模塊分別與相應神經網絡處理模塊中的神經網絡處理單元和高速存儲單元通信連接。
  10. 一種用於執行單層神經網絡運算的方法,其中,包括: S1,多個神經網絡處理模塊中的每個神經網絡處理模塊直接從本地讀取數據,和/或通過ㄧ片上互聯模塊從其它神經網絡處理模塊中讀取數據,其中,多個神經網絡處理模塊與所述片上互聯模塊通信連接; S2,每個神經網絡處理模塊根據讀取的數據進行單層神經網絡的部分運算,得到各自的運算結果數據;以及 S3,每個神經網絡處理模塊將各自的運算結果數據進行本地存儲和/或通過所述片上互聯模塊將各自的運算結果數據寫入至其他神經網絡處理模塊中。
  11. 根據申請專利範圍第10項所述的用於執行單層神經網絡運算的方法,其中,所述步驟S3中,每個神經網絡處理模塊將各自的運算結果寫入至其它神經網絡處理模塊中後,向其它特定的神經網絡處理模塊發送一數據送達信號。
  12. 一種用於執行多層神經網絡運算的方法,其中,對於每一層神經網絡運算,執行如申請專利範圍第10項所述的方法,並將該層各神經網絡處理模塊得到的運算結果數據用於下一層神經網絡運算。
TW106126471A 2016-08-05 2017-08-04 一種用於執行神經網絡運算的裝置及方法 TWI767925B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610635286.XA CN107688853B (zh) 2016-08-05 2016-08-05 一种用于执行神经网络运算的装置及方法
CN201610635286.X 2016-08-05
??201610635286.X 2016-08-05

Publications (2)

Publication Number Publication Date
TW201805858A true TW201805858A (zh) 2018-02-16
TWI767925B TWI767925B (zh) 2022-06-21

Family

ID=61073469

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106126471A TWI767925B (zh) 2016-08-05 2017-08-04 一種用於執行神經網絡運算的裝置及方法

Country Status (5)

Country Link
US (1) US11120331B2 (zh)
EP (1) EP3496007B1 (zh)
CN (2) CN107688853B (zh)
TW (1) TWI767925B (zh)
WO (1) WO2018024232A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663461B2 (en) 2018-07-05 2023-05-30 International Business Machines Corporation Instruction distribution in an array of neural network cores

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108289177B (zh) * 2018-02-13 2020-10-16 北京旷视科技有限公司 信息交互方法、装置及系统
WO2019165940A1 (zh) * 2018-02-27 2019-09-06 上海寒武纪信息科技有限公司 集成电路芯片装置、板卡及相关产品
CN111767996B (zh) * 2018-02-27 2024-03-05 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
CN110197266B (zh) * 2018-02-27 2020-08-04 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
CN110297779A (zh) * 2018-03-23 2019-10-01 余晓鹏 一种内存难解性算法的解决方法
US20190325295A1 (en) * 2018-04-20 2019-10-24 International Business Machines Corporation Time, space, and energy efficient neural inference via parallelism and on-chip memory
CN110825440B (zh) * 2018-08-10 2023-04-14 昆仑芯(北京)科技有限公司 指令执行方法和装置
CN109542830B (zh) * 2018-11-21 2022-03-01 北京灵汐科技有限公司 一种数据处理系统及数据处理方法
CN111258635B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258637B (zh) * 2018-11-30 2022-08-05 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258636B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258647B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258770B (zh) * 2018-11-30 2023-10-10 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258645B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258652B (zh) * 2018-11-30 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
US11126912B2 (en) * 2018-12-11 2021-09-21 Mipsology SAS Realigning streams of neuron outputs in artificial neural network computations
CN111382857B (zh) * 2018-12-29 2023-07-18 上海寒武纪信息科技有限公司 任务处理装置、神经网络处理器芯片、组合装置以及电子设备
CN109919310B (zh) * 2019-01-15 2021-05-18 中国科学院信息工程研究所 一种面向深度学习训练任务的gpu内存优化方法及系统
CN111767078A (zh) * 2019-04-02 2020-10-13 上海寒武纪信息科技有限公司 数据运行方法、装置和相关产品
CN111488969B (zh) * 2020-04-03 2024-01-19 北京集朗半导体科技有限公司 基于神经网络加速器的执行优化方法及装置
US20240054012A1 (en) * 2020-12-31 2024-02-15 Shanghai Cambricon Information Technology Co., Ltd. Inter-chip communication circuit, method and system
CN113673701A (zh) * 2021-08-24 2021-11-19 安谋科技(中国)有限公司 神经网络模型的运行方法、可读介质和电子设备
CN115526302B (zh) * 2022-08-19 2023-07-25 北京应用物理与计算数学研究所 基于异构多核处理器的多层神经网络计算方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5204938A (en) * 1989-05-30 1993-04-20 Loral Aerospace Corp. Method of implementing a neural network on a digital computer
WO1991018349A1 (en) * 1990-05-22 1991-11-28 International Business Machines Corporation Scalable flow virtual learning neurocomputer
US7388862B2 (en) * 2003-06-19 2008-06-17 Cisco Technology, Inc. Technique for notifying EIGRP neighbors when destroying adjacencies in a computer network
EP2434420A3 (en) * 2003-08-01 2012-07-25 Dna Twopointo Inc. Systems and methods for biopolymer engineering
CN101527010B (zh) * 2008-03-06 2011-12-07 上海理工大学 人工神经网络算法的硬件实现方法及其系统
CN101534165B (zh) * 2009-03-31 2013-03-13 江南大学 一种混沌神经网络保密通信电路
JP5387147B2 (ja) * 2009-06-03 2014-01-15 日本電気株式会社 病理画像診断システム、病理画像処理方法、病理画像診断プログラム
US8346883B2 (en) * 2010-05-19 2013-01-01 International Business Machines Corporation Effecting hardware acceleration of broadcast operations in a parallel computer
CN101882238B (zh) * 2010-07-15 2012-02-22 长安大学 基于sopc的小波神经网络处理器
CN102193518B (zh) * 2011-05-13 2013-04-24 南京理工大学 基于基底神经节的fpga仿生智能控制芯片
US8935513B2 (en) * 2012-02-08 2015-01-13 International Business Machines Corporation Processor performance improvement for instruction sequences that include barrier instructions
US9087301B2 (en) * 2012-12-21 2015-07-21 International Business Machines Corporation Hardware architecture for simulating a neural network of neurons
US9542643B2 (en) * 2013-05-21 2017-01-10 Qualcomm Incorporated Efficient hardware implementation of spiking networks
GB201310859D0 (en) * 2013-06-18 2013-07-31 Cambridge Entpr Ltd Rational method for solubilising proteins
WO2015021016A1 (en) * 2013-08-05 2015-02-12 Board Of Trustees Of The University Of Alabama Systems, methods and devices for vector control of permanent magnet synchronous machines using artificial neural networks
CN111275178A (zh) * 2014-07-21 2020-06-12 徐志强 具有不同工作形态的神经元模拟方法及装置
CN105373829B (zh) * 2014-09-02 2018-05-04 北京大学 一种全连接神经网络结构
CN110992935B (zh) * 2014-09-12 2023-08-11 微软技术许可有限责任公司 用于训练神经网络的计算系统
US20160342887A1 (en) * 2015-05-21 2016-11-24 minds.ai inc. Scalable neural network system
CN104978601B (zh) * 2015-06-26 2017-08-25 深圳市腾讯计算机系统有限公司 神经网络模型训练系统和方法
US10878320B2 (en) * 2015-07-22 2020-12-29 Qualcomm Incorporated Transfer learning in neural networks
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN107609642B (zh) * 2016-01-20 2021-08-31 中科寒武纪科技股份有限公司 计算装置和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663461B2 (en) 2018-07-05 2023-05-30 International Business Machines Corporation Instruction distribution in an array of neural network cores

Also Published As

Publication number Publication date
CN111310893B (zh) 2023-11-21
WO2018024232A1 (zh) 2018-02-08
CN107688853A (zh) 2018-02-13
CN111310893A (zh) 2020-06-19
US20190171932A1 (en) 2019-06-06
EP3496007A4 (en) 2020-03-25
US11120331B2 (en) 2021-09-14
TWI767925B (zh) 2022-06-21
CN107688853B (zh) 2020-01-10
EP3496007A1 (en) 2019-06-12
EP3496007B1 (en) 2022-10-05

Similar Documents

Publication Publication Date Title
TWI767925B (zh) 一種用於執行神經網絡運算的裝置及方法
CN109086877B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
EP3654172A1 (en) Fused vector multiplier and method using the same
CN111860811A (zh) 一种用于执行人工神经网络全连接层正向运算的装置和方法
CN111126590B (zh) 一种人工神经网络运算的装置及方法
CN111047022A (zh) 一种计算装置及相关产品
WO2018058427A1 (zh) 神经网络运算装置及方法
CN111767995A (zh) 运算方法、装置及相关产品
CN111860772B (zh) 一种用于执行人工神经网络pooling运算的装置和方法
CN111209230B (zh) 数据处理装置、方法及相关产品
CN111260046B (zh) 运算方法、装置及相关产品
CN111047030A (zh) 运算方法、装置、计算机设备和存储介质
CN113032298B (zh) 用于保序的计算装置、集成电路装置、板卡及保序方法
CN112396186B (zh) 执行方法、装置及相关产品
CN113033791B (zh) 用于保序的计算装置、集成电路装置、板卡及保序方法
WO2020192587A1 (zh) 人工智能计算装置及相关产品
CN111275197B (zh) 运算方法、装置、计算机设备和存储介质
CN111813537A (zh) 运算方法、装置及相关产品
CN112394993A (zh) 半精度浮点转短整形指令处理装置、方法及相关产品
CN112394990A (zh) 浮点转半精度浮点指令处理装置、方法及相关产品
CN112394903A (zh) 短整形转半精度浮点指令处理装置、方法及相关产品
CN112394986A (zh) 半精度浮点转浮点指令处理装置、方法及相关产品
CN112394989A (zh) 无符号转半精度浮点指令处理装置、方法及相关产品
CN112394996A (zh) 八位整形转半精度浮点指令处理装置、方法及相关产品
CN112394987A (zh) 短整形转半精度浮点指令处理装置、方法及相关产品