TWI787430B - 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法 - Google Patents
積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法 Download PDFInfo
- Publication number
- TWI787430B TWI787430B TW108100779A TW108100779A TWI787430B TW I787430 B TWI787430 B TW I787430B TW 108100779 A TW108100779 A TW 108100779A TW 108100779 A TW108100779 A TW 108100779A TW I787430 B TWI787430 B TW I787430B
- Authority
- TW
- Taiwan
- Prior art keywords
- data block
- processing circuit
- data
- basic
- circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一種積體電路晶片裝置及相關產品,所述積體電路晶片裝置包括:主處理電路以及多個基礎處理電路;所述主處理電路包括第一映射電路,所述多個基礎處理電路中至少一個電路包括第二映射電路,所述第一映射電路以及所述第二映射電路均用於執行神經網絡運算中的各個數據的壓縮處理;所述多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他基礎處理電路連接,所述主處理電路連接第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路。本披露提供的技術方案具有計算量小,功耗低的優點。
Description
本披露涉及神經網絡領域,尤其涉及一種積體電路晶片裝置及相關產品。
人工神經網絡(Artificial Neural Network,ANN),是20世紀80年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象,建立某種簡單模型,按不同的連接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。現有的神經網絡的運算基於中央處理器(Central Processing Unit,CPU)或圖形處理器(Graphics Processing Unit,GPU)來實現神經網絡的運算,此種運算的計算量大,功耗高。
本披露實施例提供了一種積體電路晶片裝置及相關產品,可提升計算裝置的處理速度,提高效率。
第一方面,提供一種積體電路晶片裝置,所述積體電路晶片裝置包括:主處理電路以及多個基礎處理電路;所述主處理電路包括第一映射電路,所述多個基礎處理電路中至少一個電路(即部分或全部基礎處理電路)包括第二映射電路,所述第一映射電路以及所述第二映射電路均用於執行神經網絡運算中的各個數據的壓縮處理;所述多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他基礎處理電路連接,所述主處理電路連接第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路;所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及和與其相連的所述基礎處理電路傳輸數據;所述多個基礎處理電路,用於依據傳輸的數據以並行方式執行神經網絡中的運算,並將運算結果通過與所述主處理電路連接的基礎處理電路傳輸給所述主處理電路。
第二方面,提供一種神經網絡運算裝置,所述神經網絡運算裝置包括一個或多個第一方面提供的積體電路晶片裝置。
第三方面,提供一種組合處理裝置,所述組合處理裝置包括:第二方面提供的神經網絡運算裝置、通用互聯介面和通用處理裝置;所述神經網絡運算裝置通過所述通用互聯介面與所述通用處理裝置連接。
第四方面,提供一種晶片,所述晶片集成第一方面的裝置、第二方面的裝置或第三方面的裝置。
第五方面,提供一種電子設備,所述電子設備包括第四方面的晶片。
第六方面,提供一種神經網絡的運算方法,所述方法應用在積體電路晶片裝置內,所述集成電晶片裝置包括:第一方面所述的積體電路晶片裝置,所述積體電路晶片裝置用於執行神經網絡的運算。
可以看出,通過本披露實施例,提供映射電路將數據塊壓縮處理後再進行運算,節省了傳輸資源以及計算資源,所以其具有功耗低,計算量小的優點。
S、P:矩陣
C:向量
圖1a是一種積體電路晶片裝置結構示意圖。
圖1b是另一種積體電路晶片裝置結構示意圖。
圖1c是一種基礎處理電路的結構示意圖。
圖1d是一種主處理電路的結構示意圖。
圖2a是一種基礎處理電路的使用方法示意圖。
圖2b是一種主處理電路傳輸數據示意圖。
圖2c是矩陣乘以向量的示意圖。
圖2d是一種積體電路晶片裝置結構示意圖。
圖2e是又一種積體電路晶片裝置結構示意圖。
圖2f是矩陣乘以矩陣的示意圖。
圖3a為卷積輸入數據示意圖。
圖3b為卷積核示意圖。
圖3c為輸入數據的一個三維數據塊的運算窗口示意圖。
圖3d為輸入數據的一個三維數據塊的另一運算窗口示意圖。
圖3e為輸入數據的一個三維數據塊的又一運算窗口示意圖。
圖4a-圖4b為本申請實施例提供的兩種映射電路的結構示意圖。
為了使本技術領域的人員更好地理解本披露方案,下面將結合本披露實施例中的圖式,對本披露實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本披露一部分實施例,而不是全部的實施例。基於本披露中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本披露保護的範圍。
在第一方面提供的裝置中,所述主處理電路用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為橫向數據塊和豎向數據塊;將所述橫向數據塊和預存的所述橫向數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及所述基本數據塊關聯的標識數據塊;將所述多個基本數據塊以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路;將所述豎向數據塊以及該豎向數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路。其中,所述標識數據塊具體可用直接索引或者步長索引的方式來表示,可選的還可用列表的列表(List of Lists,LIL)、坐標列表(Coordinate list,COO)、壓縮稀疏行(Compressed Sparse Row,CSR)、
壓縮稀疏列(Compressed Sparse Column,CSC)、ELL(ELL Pack)以及混合(Hybird,HYB)等方式表示,本申請不做限定。
以所述標識數據塊用直接索引的方式表示為例,所述標識數據塊具體可為是由0和1構成的數據塊,其中,0表示數據塊中包含的數據(如權值或輸入神經元)的絕對值小於或等於第一閾值,1表示數據塊中包含的數據(如權值或輸入神經元)的絕對值大於第一閾值,第一閾值為用戶側或裝置側自定義隨機設置的,例如0.05、0等等。
為節省數據傳輸量、提高數據傳輸效率,在所述主處理電路向所述基礎處理電路發送數據的過程中,具體可將所述多個基本數據塊中的目標數據以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路;可選,還可將所述處理後的豎向數據塊中的目標數據以及該豎向數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路。其中,所述目標數據是指數據塊中絕對值大於第一閾值的數據,或者是指數據塊(這裡具體可為處理後的橫向數據塊或處理後的豎向數據塊)中的非0數據。
相應地,所述基礎處理電路用於啟動所述第二映射電路根據所述豎向數據塊關聯的標識數據塊和所述基本數據塊關聯的標識數據獲得連接標識數據塊;根據所述連接標識數據塊對所述豎向數據塊和所述基本數據塊進行處理得到處理後的豎向數據塊和基本數據塊;對所述處理後的豎向數據塊和基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
例如,橫向數據塊為M1行N1列的矩陣,基本數據塊為M2行N2列的矩陣,其中M1>M2,N1>N2。相應地,該橫向數據塊關聯的標識數據塊同樣也為M1行N1列的矩陣,該基本數據塊關聯的標識數據塊同樣為M2行N2列的
矩陣。以基本數據塊為2*2的矩陣為例,設為,第一閾值為0.05,則
該基本數據塊關聯的標識數據塊為。關於第一映射電路和第二映射電路
對數據塊的處理將在後文進行具體闡述。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為橫向數據塊和豎向數據塊;啟動所述第一映射電路對所述橫向數據塊和所述豎向數據塊進行處理得到處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊,處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊;將所述處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及所述基本數據塊各自關聯的標識數據塊,將所述多個基本數據塊以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路,將所述豎向數據塊以及該豎向數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路;所述基礎處理電路,用於啟動所述第二映射電路根據所述豎向數據塊關聯的標識數據塊和所述基本數據塊關聯的標識數據獲得連接標識數據塊;根據所述連接標識數據塊對所述豎向數據塊和所述基本數據塊進行處理得到處理後的豎向數據塊和基本數據塊;對所述處理後的豎向數據塊和基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;
所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在可選實施例中,所述主處理電路,還具體用於將所述豎向數據塊或處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊進行拆分處理得到多個部分豎向數據塊以及所述多個部分豎向數據塊各自關聯的標識數據塊;將所述多個部分豎向數據塊以及所述多個部分豎向數據塊各自關聯的標識數據塊通過一次或多次廣播給所述基礎處理電路;其中,所述多個部分豎向數據塊組合形成所述豎向數據塊或處理後的豎向數據塊。
相應地,所述基礎處理電路,具體用於啟動所述第二映射電路根據所述部分豎向數據塊關聯的標識數據塊以及所述基本數據塊關聯的標識數據塊得到連接標識數據塊;根據所述連接標識數據對所述部分豎向數據塊以及所述基本數據塊進行處理得到處理後的部分豎向數據塊以及處理後的基本數據塊;對所述處理後的部分豎向數據塊以及所述處理後的基本數據塊執行內積運算。
其中,該連接標識數據塊是通過對所述基本數據塊關聯的標識數據塊和所述部分豎向數據塊關聯的標識數據塊進行逐元素與操作而獲得的數據塊。可選的,該連接標識數據塊用於表示兩個數據塊(具體為基本數據塊以及豎向數據塊)中數據均大於絕對值的數據。具體在後文進行詳述。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為橫向數據塊和豎向數據塊;啟動所述第一映射電路對所述橫向數據塊進行處理得到處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊,或者啟動所述第一映射電路根據預存的所述橫向數據塊關聯的標識數據塊對所述橫向數據塊進行處理得到處理後的橫向數據塊;將所述處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及所述基本數據塊各自關聯的標識數據塊,將所述多個基本數據塊以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路,將所述豎向數據塊廣播至與其連接的基礎處理電路;所述基礎處理電路,用於啟動所述第二映射電路根據所述基本數據塊關聯的標識數據塊對所述豎向數據塊進行處理,得到處理後的豎向數據塊;對所述處理後的豎向數據塊和所述處理後的基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到指令結果。
在可選實施例中,所述主處理電路,還具體用於將所述豎向數據塊進行拆分處理得到多個部分豎向數據塊;將所述多個部分豎向數據塊通過
一次或多次廣播給所述基礎處理電路;其中,所述多個部分豎向數據塊組合形成所述豎向數據塊或處理後的豎向數據塊。
相應地,所述基礎處理電路具體用於根據所述基本數據塊關聯的標識數據塊對所述部分豎向數據塊進行處理得到處理後的部分豎向數據塊;對所述基本數據塊以及所述處理後的部分豎向數據塊執行內積運算。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為橫向數據塊和豎向數據塊;啟動所述第一映射電路對所述豎向數據塊進行處理,得到處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊,或者啟動所述第一映射電路根據預存的所述豎向數據塊關聯的標識數據塊對所述豎向數據塊進行處理得到處理後的豎向數據塊;對所述橫向數據塊進行拆分處理得到多個基本數據塊;將所述多個基本數據塊分發至與其連接的基礎處理電路,將所述處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路;所述基礎處理電路,用於啟動所述第二映射電路根據所述豎向數據塊關聯的標識數據塊對所述基本數據塊進行處理得到處理後的基本數據塊;對所述處理後的豎向數據塊和所述處理後的基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到指令結果。
在可選實施例中,所述主處理電路,還具體用於將所述處理後的豎向數據塊和該豎向數據塊關聯的標識數據塊進行拆分處理得到多個部分豎向數據塊以及所述多個部分豎向數據塊關聯的標識數據塊;將所述多個部分豎
向數據塊以及所述多個部分豎向數據塊各自關聯的標識數據塊通過一次或多次廣播給所述基礎處理電路;其中,所述多個部分豎向數據塊組合形成所述豎向數據塊或處理後的豎向數據塊。
相應地,所述基礎處理電路具體用於根據所述部分豎向數據塊關聯的標識數據塊對所述基本數據塊進行處理得到處理後的基本數據塊;對所述處理後的基本數據塊以及所述部分豎向數據塊執行內積運算。
在第一方面提供的裝置中,所述主處理電路,具體用於將該豎向數據塊(具體可為所述豎向數據塊或者處理後的豎向數據塊)通過一次廣播發送至與其連接的所述基礎處理電路。
在第一方面提供的裝置中,所述基礎處理電路,具體用於將該基本數據塊(同理可為所述基本數據塊或處理後的基本數據塊)與該豎向數據塊執行內積處理得到內積處理結果,將所述內積處理結果累加得到運算結果,將所述運算結果發送至所述主處理電路。
在第一方面提供的裝置中,所述主處理電路,用於在如所述運算結果為內積處理的結果時,對所述運算結果累加後得到累加結果,將該累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述豎向數據塊分成多個部分豎向數據塊,將所述多個部分豎向數據塊通過多次廣播至所述基礎處理電路;所述多個部分豎向數據塊組合形成所述豎向數據塊。
在第一方面提供的裝置中,所述基礎處理電路,具體用於將該部分豎向數據塊(具體可為部分豎向數據塊或者處理後的部分豎向數據塊)與
該基本數據塊執行一次內積處理後得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果發送至所述主處理電路。
在第一方面提供的裝置中,所述基礎處理電路,具體用於復用n次該部分豎向數據塊執行該部分豎向數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果發送至主處理電路,所述n為大於等於2的整數。
在第一方面提供的裝置中,所述主處理電路包括:主寄存器或主片上緩存電路;所述基礎處理電路包括:基本寄存器或基本片上緩存電路。
在第一方面提供的裝置中,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路、第一映射電路或數據重排電路中的一種或任意組合。
在第一方面提供的裝置中,所述基礎處理電路,還具體用於將該豎向數據塊和基本數據塊轉發給其他基礎處理電路以先進行數據處理再執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述數據塊可用張量表示,其具體可為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
在第一方面提供的裝置中,如所述運算指令為乘法指令,所述主處理電路確定乘數數據塊為豎向數據塊,被乘數數據塊為橫向數據塊;
或如所述運算指令為卷積指令,所述主處理電路確定卷積輸入數據塊為豎向數據塊,卷積核為橫向數據塊。
在第六方面提供的方法中,所述神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏置運算、全連接運算、通用矩陣乘法(General Matrix Multiplication,GEMM)運算、通用矩陣向量乘法(General Matrix Vector Multiplication,GEMV)運算、激活運算中的一種或任意組合。
參閱圖1a,圖1a為本披露提供的一種積體電路晶片裝置,該積體電路晶片裝置包括:主處理電路和多個基礎處理電路,所述多個基礎處理電路呈陣列排布(m*n陣列),其中,m、n的取值範圍為大於等於1的整數且m、n中至少有一個值大於等於2。對於m*n陣列分布的多個基礎處理電路,每個基礎處理電路與相鄰的基礎處理電路連接,所述主處理電路連接多個基礎處理電路的k個基礎處理電路,所述k個基礎處理電路可以為:第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路。如圖1a所示的積體電路晶片裝置,主處理電路包括第一映射電路,所述第一映射電路用於對數據進行壓縮處理,以獲得處理後的數據以及標識數據。該標識數據用於指示該數據的絕對值是否大於第一閾值。進一步地,所述主處理電路可僅將處理後的數據(具體可為絕對值大於第一閾值的數據)以及該數據關聯的標識數據發送給基礎處理電路。優點是:減少發送至基礎處理電路中進行數據處理的數據量,提升數據處理速率。該第一閾值為用戶側或裝置側自定義設置的,例如0.05、0.5等等,不做限定。
相應地,在主處理電路向基礎處理電路分發數據時,可僅發送1和0.5這兩個數據,並非發送處理後的矩陣數據塊,8個數據;同時還需將該矩陣數據塊關聯的標識數據塊一起發送給基礎處理電路,以便基礎處理電路根據接收的標識數據塊和接收的兩個數據(1和0.5),對應獲知這兩個數據位於原矩陣數據塊的位置。即是,所述基礎處理電路可根據接收的標識數據塊以及接收的數據,對應還原出主處理電路中處理後的矩陣數據塊。
多個基礎電路中的至少一個基礎處理電路(即部分或者全部基礎處理電路)均可包括第二映射電路。具體的,多個基礎處理電路中可以有部分基礎處理電路包括第二映射電路,例如在可選方案中,可將k個基礎處理電路配置第二映射電路,這樣n個基礎處理電路可以分別負責對本列的m個基礎處理電路的數據進行壓縮處理步驟。此設置能夠提高運算效率,降低功耗,因為對於第1行的n個基礎處理電路來說,由於其最先接收到主處理電路發送的數據,那麼將該接收到的數據進行壓縮處理可以減少後續基礎處理電路的計算量以及與後續基礎處理電路的數據傳輸的量,同理,對於第一列的m個基礎處理電路配置第二映射電路也具有計算量小和功耗低的優點。另外,依據該結構,主處理電路可以採用動態的數據發送策略,例如,主處理電路向第1列的m個基
礎處理電路廣播數據,主處理電路向第1行的n個基礎處理電路發送分發數據。關於第二映射電路的具體處理將在後文進行詳述。
所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及和與其相連的所述基礎處理電路傳輸數據;上述連續的運算但不限於:累加運算、ALU運算、激活運算等等運算。
所述多個基礎處理電路,用於依據傳輸的數據以並行方式執行神經網絡中的運算,並將運算結果通過與所述主處理電路連接的基礎處理電路傳輸給所述主處理電路。上述並行方式執行神經網絡中的運算包括但不限於:內積運算、矩陣或向量乘法運算等等。
主處理電路可以包括:數據發送電路、數據接收電路或介面,該數據發送電路可以集成橫向數據分發電路以及豎向數據分發電路,當然在實際應用中,橫向數據分發電路以及豎向數據分發電路也可以分別設置。對於橫向數據,即需要按照行方向(或者橫向)發送給每個基礎處理電路的數據,如圖1a中將橫向數據發送給m行中的任一行或多行中的基礎處理電路。對於豎向數據,即需要按照列方向(或豎向)有選擇的發送給部分基礎處理電路的數據,具體的,如卷積運算,卷積運算的卷積輸入數據需要發送給所有的基礎處理電路,所有其為豎向數據,卷積核需要有選擇的發送給部分基礎數據塊,所以卷積核為橫向數據。橫向數據具體的選擇發送給那個基礎處理電路的方式可以由主處理電路依據負載以及其他分配方式進行具體的確定。對於豎向數據或橫向數據的發送方式,可將數據以廣播形式發送至每個基礎處理電路。(在實際應用中,通過一次廣播的方式將橫向/豎向數據發送至每個基礎處理電路,也可以通過多次廣播的方式將橫向/豎向數據發送至每個基礎處理電路,本披露具
體實施方式並不限制上述廣播的次數)。可選的,針對上述橫向/豎向數據,主處理電路也可有選擇的發送給部分基礎處理電路。
主處理電路(如圖1d所示)可以包括寄存器和/或片上緩存電路,該主處理電路還可以包括:控制電路、向量運算器電路、算數邏輯單元(arithmetic and logic unit,ALU)電路、累加器電路、直接內存存取(Direct Memory Access,DMA)電路等電路,當然在實際應用中,上述主處理電路還可以添加,轉換電路(例如矩陣轉置電路)、數據重排電路或激活電路等等其他的電路。
每個基礎處理電路可以包括基礎寄存器和/或基礎片上緩存電路;每個基礎處理電路還可以包括:內積運算器電路、向量運算器電路、累加器電路等中一個或任意組合。上述內積運算器電路、向量運算器電路、累加器電路都可以是積體電路,上述內積運算器電路、向量運算器電路、累加器電路也可以為單獨設置的電路。
可選的,對於第m行n個基礎處理電路的累加器電路可以執行內積運算的累加運算,因為對於第m行基礎處理電路來說,其能夠接收到本列所有的基礎處理電路的乘積結果,而將內積運算的累加運算通過第m行的n個基礎處理電路執行內積運算的累加運算,這樣能夠對計算資源進行有效的分配,具有節省功耗的優點。此技術方案尤其對於m數量較大時更為適用。
對於數據的壓縮處理可以由主處理電路來分配執行的電路,具體的,可以通過顯示或隱式的方式來分配執行的電路,對於顯示方式,主處理電路可以配置一個特殊指示或指令,當基礎處理電路接收到該特殊指示或指令時,確定執行數據壓縮處理,如基礎處理電路未接收到特殊指示或指令時,確
定不執行數據的壓縮處理。又如,可以以暗示的方式來執行,例如,基礎處理電路接收到稀疏數據(即含0,或包括小於預設閾值的數據大於預設數量)且確定需要執行內積運算時,將對稀疏數據進行壓縮處理。對於顯示配置的方式,特殊指令或指示可以配置一個遞減序列,該遞減序列的每經過一個基礎處理電路,數值減1,基礎處理電路讀取該遞減序列的值,如該值大於零,則執行數據壓縮處理,如該值等於或小於零,則不執行數據壓縮處理。此設置是依據陣列分配的基礎處理電路所配置的,例如對於第i列的m個基礎處理電路來說,主處理電路需要前面5個基礎處理電路執行數據壓縮處理,則主處理電路下發一個特殊指令,該特殊指令包含有遞減序列,該遞減序列的初始值可以為5,則每經過一個基礎處理電路,遞減序列的值即減1,到第5個基礎處理電路時,該遞減序列的值為1,到第6個基礎處理電路時,該遞減序列為0,此時第6個基礎處理電路將不在執行該數據壓縮處理,此種方式可以使得主處理電路可以動態的配置數據壓縮處理的執行主體以及執行次數。
本披露一個實施例提供一種積體電路晶片裝置,包括一個主處理電路(也可以稱為主單元)和多個基礎處理電路(也可以稱為基礎單元);實施例的結構如圖1b所示;其中,虛線框中是所述神經網絡運算裝置的內部結構;灰色填充的箭頭表示主處理電路和基礎處理電路陣列之間的數據傳輸通路,空心箭頭表示基礎處理電路陣列中各個基礎處理電路(相鄰基礎處理電路)之間的數據傳輸通路。其中,基礎處理電路陣列的長寬長度可以不同,即m、n的取值可以不同,當然也可以相同,本披露並不限制上述取值的具體值。
基礎處理電路的電路結構如圖1c所示;圖中虛線框表示基礎處理電路的邊界,與虛線框交叉的粗箭頭表示數據輸入輸出通道(指向虛線框內
是輸入通道,指出虛線框是輸出通道);虛線框中的矩形框表示存儲單元電路(寄存器和/或片上緩存),包括輸入數據1,輸入數據2,乘法或內積結果,累加數據;菱形框表示運算器電路,包括乘法或內積運算器,加法器。
本實施例中,所述神經網絡運算裝置包括一個主處理電路和16個基礎處理電路(16個基礎處理電路僅僅為了舉例說明,在實際應用中,可以採用其他的數值);本實施例中,基礎處理電路有兩個數據輸入介面,兩個數據輸出介面;在本例的後續描述中,將橫向的輸入介面(圖1b中指向本單元的橫向箭頭)稱作輸入0,豎向的輸入介面(圖1b中指向本單元的豎向箭頭)稱作輸入1;將每一個橫向的數據輸出介面(圖1b中從本單元指出的橫向箭頭)稱作輸出0,豎向的數據輸出介面(圖1b中從本單元指出的豎向箭頭)稱作輸出1。
每一個基礎處理電路的數據輸入介面和數據輸出介面可以分別連接不同的單元,包括主處理電路與其他基礎處理電路;本例中,基礎處理電路0,4,8,12(編號見圖1b)這四個基礎處理電路的輸入0與主處理電路的數據輸出介面連接;本例中,基礎處理電路0,1,2,3這四個基礎處理電路的輸入1與主處理電路的數據輸出介面連接;本例中,基礎處理電路12,13,14,15這四個基礎處理電路的輸出1與主處理電路的數據輸入介面相連;本例中,基礎處理電路輸出介面與其他基礎處理電路輸入介面相連接的情況見圖1b所示,不再一一列舉;
具體地,S單元的輸出介面S1與P單元的輸入介面P1相連接,表示P單元將可以從其P1介面接收到S單元發送到其S1介面的數據。
本實施例包含一個主處理電路,主處理電路與外部裝置相連接(即由輸入介面也有輸出介面),主處理電路的一部分數據輸出介面與一部分基礎處理電路的數據輸入介面相連接;主處理電路的一部分數據輸入介面與一部分基礎處理電路的數據輸出介面相連。
積體電路晶片裝置的使用方法
本披露提供的使用方法中所涉及到的數據可以是經過壓縮處理後的數據。需要說明的是,本申請中的數據可以是神經網絡中的輸入神經元或權值,其具體可為矩陣數據或向量數據等,本申請不做限定。也即是本申請下文闡述的數據或數據塊可為神經網絡中的輸入神經元或權值,它們可以矩陣或向量等形式體現。
本申請涉及的數據壓縮處理具體在前文所述的第一映射電路和第二映射電路中執行。應理解的,由於神經網絡是一個高計算量和高訪存的算法,權值越多,計算量和訪存量都會增大。特別是,針對權值較小(如為0,或小於設定數值的權值)的情況下,為提高計算速率、減小開銷需對這些權值較小的數據進行壓縮處理。在實際應用中,數據壓縮處理在稀疏神經網絡中應用,效果最為明顯,如減小數據計算的工作量、減小數據額外開銷,提高數據計算速率等。
以輸入數據為例,闡述數據壓縮處理涉及的具體實施例。所述輸入數據包括但不限於至少一個輸入神經元和/或至少一個權值。
第一實施例中:
第一映射電路接收到第一輸入數據(具體可為主處理電路發送的待計算的數據塊,如橫向數據塊或者豎向數據塊等)後,所述第一映射電路可對所述第一輸入數據進行處理,以獲得處理後的第一輸入數據以該第一輸入數據關聯的標識mask數據,該mask數據用於指示該第一輸入數據的絕對值是否大於第一閾值,如0.5、0等等。
具體的,當所述第一輸入數據的絕對值大於第一閾值,則保留該輸入數據;否則刪除該第一輸入數據或將該第一輸入數據置為0。例如,輸
入的矩陣數據塊為,第一閾值為0.05,則經過第一映射電路
處理後可獲得處理後的矩陣數據塊,與該矩陣數據塊關聯的標識
數據塊(也可稱為mask矩陣)為。
進一步地,為減少數據傳輸量,所述主處理電路再向與其連接的基礎處理電路中分發數據時,可發送所述處理後的矩陣數據塊中的目標數據(本例中即為1,0.06和0.5)以及該矩陣數據塊關聯的標識數據塊。具體實施時,所述主處理電路可按照設定規則將所述處理後的矩陣數據塊中的目標數據分發至基礎處理電路中,例如按照行順序依次發送或者按照列順序依次等等,本申請不做限定。相應地,基礎處理電路在接收到所述目標數據以及該目標數據對應關聯的標識數據塊後,按照設定規則(例如行順序)將其還原為處理後的矩陣數據塊。例如本例中,基礎處理電路可根據接收的數據(1,0.06和0.5)
以及標識數據塊,可獲知該數據對應的矩陣數據塊(即主處理電路
中第一映射電路處理後的矩陣數據塊)為。
在本發明實施例中,該第一輸入數據可為橫向數據塊和/或豎向數據塊。
相應地,第二映射電路可利用第一輸入數據關聯的標識數據對第二輸入數據進行處理,從而獲得處理後的第二輸入數據;其中第一輸入數據與所述第二輸入數據不同。例如當所述第一輸入數據為至少一個權值時,則所述第二輸入數據可為至少一個輸入神經元;或者,當所述第一輸入數據為至少一個輸入神經元時,則所述第二輸入數據可為至少一個權值。
在本發明實施例中,該第二輸入數據與所述第一輸入數據不同,所述第二輸入數據可為以下中的任一個:橫向數據塊、基本數據塊、豎向數據塊以及部分豎向數據塊。
例如,當所述第一輸入數據為橫向數據塊時,則第二輸入數據
為部分豎向數據塊。假設第二輸入數據為矩陣數據塊,相應
地利用上例中mask矩陣處理後,獲得處理後的部分豎向數據塊為
。由於在實際應用中,輸入數據涉及的矩陣數據塊維數較大,本
申請這裡僅為示意,本不構成限定。
第二實施例中:
所述第一映射電路可用於對第一輸入數據和第二輸入數據進行處理,以得到處理後的第一輸入數據以及所述第一輸入數據關聯的第一標識mask數據、處理後的第二輸入數據以及所述第二輸入數據關聯的第二標識mask數據。其中,所述第一mask數據或者第二mask數據用於指示第一或第二輸入數據的絕對值是否大於第二閾值,該第二閾值為用戶側或裝置側自定義設置的,例如0.05、0等等。
所述處理後的第一輸入數據或第二輸入數據可為處理後的輸入數據,也可為未處理前的輸入數據。例如,第一輸入數據為橫向數據塊,如上
述例子中的矩陣數據塊。經過第一映射電路處理後可獲得處
理後的橫向數據塊,這裡處理後的橫向數據塊可為原矩陣數據塊
,也可為壓縮處理後的矩陣數據塊。應理解
的,本申請為減少數據量的傳輸以及基礎處理電路中數據處理效率,優選地所述處理後的輸入數據(如處理後的基本數據塊或部分豎向數據塊等)應為壓縮處理後的數據。優選地,主處理電路向基礎處理電路中發送的數據,具體可為所述處理後的輸入數據中的目標數據,該目標數據具體可為絕對值大於預設閾值的數據,也可為非0數據等等。
相應地在基礎處理電路中,第二映射電路可根據所述第一輸入數據關聯的第一標識數據以及所述第二輸入數據關聯的第二標識數據得到連接標識數據;該連接標識數據用於指示所述第一輸入數據和所述第二輸入數據中絕對值均大於第三閾值的數據,其中第三閾值為用戶側或裝置側自定義設置的,如0.05、0等。進一步地,所述第二映射電路可根據所述連接標識數據分別
對接收的第一輸入數據和第二輸入數據進行處理,從而獲得處理後的第一輸入數據和處理後的第二輸入數據。
例如,第一輸入數據為矩陣數據塊,第二輸
入數據塊同樣也為矩陣數據塊。經過第一映射電路處理後可
獲得該第一輸入數據關聯的第一標識數據塊,以及處理後的第一輸
入數據塊;相應地獲得該第二輸入數據關聯的第二標識數據塊
,處理後的第二輸入數據塊為。相應地,為提高數
據傳輸速率,主處理電路中僅可將處理後的第一輸入數據塊中的目標數據1,0.06和0.5、以及該第一輸入數據塊關聯的第一標識數據塊發送給基礎處理電路;同時,將處理後的第二輸入數據塊中的目標數據1,1.1,0.6,0.3和0.5,以及該第二輸入數據塊關聯的第二標識數據塊發送給基礎處理電路。
相應地,基礎處理電路在接收到上述數據後,可通過第二映射電路對上述第一標識數據塊和第二標識數據塊進行逐元素與操作,得到連接標
識數據塊。相應地,第二映射電路利用該連接標識數據塊分別對所
述處理後的第一輸入數據塊和處理後的第二輸入數據塊分別進行處理,從而獲
得處理後的第一輸入數據塊為,處理後的第二輸入數據塊為
。其中,在基礎處理電路中可根據第一標識數據塊以及接收的第
一數據塊中的目標數據,確定出該目標數據對應所在的第一數據塊(即經過第
一映射電路處理後的第一數據塊);相應地,根據第二標識數據塊以及接收的第二數據塊中的目標數據,確定出該目標數據對應所在的第二數據塊(即經過第一映射電路處理後的第二數據塊);然後,在第二映射電路獲知連接標識數據塊後,利用該連接標識數據塊分別與確定的第一數據塊和確定的第二數據塊進行逐元素與操作,以獲得經由第二映射電路處理後的第一數據塊和處理後的第二數據塊。
第三實施例中:
所述主處理電路中並不會設置第一映射電路,但所述主處理電路可將第三輸入數據以及預存的所述第三輸入數據關聯的第三標識數據發送至與其連接的基礎處理電路中。該基礎處理電路中設置有第二映射電路。下面闡述第二映射電路涉及的數據壓縮處理的具體實施例。
應理解的,所述第三輸入數據包括但不限於基礎數據塊、部分豎向數據塊、豎向數據塊等。同樣地,在神經網絡處理器中,該第三輸入數據也可為至少一個權值,和/或至少一個輸入神經,本申請不做限定。
在第二映射電路中,所述第二映射電路可根據接收的第三輸入數據關聯的第三標識數據對所述第三輸入數據進行處理,從而獲得處理後的第三輸入數據,以便後續對處理後的第三輸入數據執行相關運算操作,如內積運算等。
例如,第二映射電路接收的第三輸入數據為矩陣數據塊
,相應地預存的該第三輸入數據關聯的第三標識數據塊(也
成mask矩陣數據塊)為。進一步地,第二映射電路根據第三標識數
據塊對第三輸入數據塊進行處理得到處理後的第三輸入數據塊具體為
此外,本發明實施例中提到的輸入神經元和輸出神經元並非是指整個神經網絡的輸入層中的神經元和輸出層中的神經元,而是對於神經網絡中任意相鄰的兩層神經元,處於網絡前饋運算下層中的神經元即為輸入神經元,處於網絡前饋運算上層中的神經元即為輸出神經元。以卷積神經網絡為例,假設一個卷積神經網絡有L層,K=1,2,3…L-1,對於第K層和第K+1層來說,第K層被稱為輸入層,該層中的神經元為上述輸入神經元,第K+1層被稱為輸入層,該層中的神經元為上述輸出神經元,即除了頂層之外,每一層都可以作為輸入層,其下一層為對應的輸出層。
第四實施中:
所述主處理電路中並不設置映射電路,在所述基礎處理電路中設置有第一映射電路和第二映射電路。關於所述第一映射電路和第二映射電路的數據處理具體可參見前述第一實施例至第三實施例所述,這裡不再贅述。
可選的,還存在第五實施例。第五實施例中,所述基礎處理電路中並不設置映射電路,將所述第一映射電路和第二映射電路均設置在主處理電路中,關於所述第一映射電路和第二映射電路的數據處理具體可參見前述第一實施例至第三實施例所述,這裡不再贅述。即是,主處理電路中完成數據的壓縮處理,將處理後的輸入數據發送給基礎處理電路,以便基礎處理電路利用處理後的輸入數據(具體可為處理後的神經元和處理後權值)執行相應地的運算操作。
下面闡述本申請涉及映射電路的具體結構示意圖。如圖4a和4b示出兩種可能的映射電路。其中,如圖4a所示的映射電路包括比較器和選擇器。關於所述比較器和選擇器的數量本申請不做限定。如圖4a示出一個比較器和兩個選擇器,其中,所述比較器用於判定輸入數據是否滿足預設條件。該預設條件可為用戶側或設備側自定義設置的,例如本申請上述的所述輸入數據的絕對值大於或等於預設閾值。如果滿足預設條件,則比較器可確定允許輸出該輸入數據,該輸入數據對應關聯的標識數據為1;否則可確定不輸出該輸入數據,或者默認該輸入數據為0。相應地,此時該輸入數據對應關聯的標識數據為0。也即是,經過該比較器後,可獲知輸入數據關聯的標識數據。
進一步地,所述比較器對輸入數據進行預設條件的判定後,可將獲得的標識數據輸入至選擇器中,以便選擇器利用該標識數據來決定是否輸出相應地的輸入數據,即獲得處理後的輸入數據。
如圖4a,以所述輸入數據為矩陣數據塊為例,經過比較器可對該矩陣數據塊中的每個數據進行預設條件的判定,從而可獲得該矩陣數據塊關聯的標識數據塊(mask矩陣)。進一步地,在第一選擇器中可利用該標識數據塊對所述矩陣數據塊進行篩選,將所述矩陣數據塊中絕對值大於或等於預設閾值(即滿足預設條件)的數據進行保留,其餘數據進行刪除,以輸出處理後的矩陣數據塊。可選的,在第二選擇器中還可利用該標識數據塊對其他輸入數據(例如第二矩陣數據塊)進行處理,例如進行逐元素與操作,以將該第二矩陣數據塊中絕對值大於或等於預設閾值的數據進行保留,以輸出處理後的第二矩陣數據塊。
應理解的,對應於上述第一和第二實施例中,所述第一映射電路的具體結構可包括至少一個比較器和至少一個選擇器,例如上例中圖4a中的比較器和第一選擇器;所述第二映射電路的具體結果可包括一個或多個選擇器,例如上例中圖4a的第二選擇器。
如圖4b,示出另一種映射電路的結構示意圖。如圖4b,所述映射電路包括選擇器,所述選擇器的數量不做限定,可為一個,也可為多個。具體的,所述選擇器用於根據輸入的輸入數據所關聯的標識數據來對輸入的所述輸入數據進行選擇,以將所述輸入數據中絕對值大於或等於預設閾值的數據進行輸出,其餘數據進行刪除/不輸出,從而獲得處理後的輸入數據。
以所述輸入數據為矩陣數據塊為例,向所述映射電路輸入該矩陣數據塊以及該矩陣數據塊關聯的標識數據塊,選擇器可根據該標識數據塊對所述矩陣數據塊進行選擇,將其絕對值大於或等於0的數據進行輸出,其餘數據不予輸出,從而輸出處理後的矩陣數據塊。
應理解的,如圖4b所示的結構可應用於上述第三實施例中的第二映射電路,即是上述第三實施例中的第二映射電路的具體結果可包括至少一個選擇器。同理,對於主處理電路和基礎處理電路中設計的第一映射電路和第二映射電路可按照如圖4a和圖4b所示的功能部件進行交叉組合或部件拆分,本申請不做限定。
基於前述實施例,下面具體闡述主處理電路以及基礎處理電路中需完成的操作處理,可使用如下方法進行:主處理電路先啟用第一映射電路對第一輸入數據進行處理,以獲得處理後的第一輸入數據以及該第一輸入數據關聯的第一標識數據;然後再
將處理後的第一輸入數據以及該第一輸入數據關聯的第一標識數據傳輸給基礎處理電路運算。例如,主處理電路可以將待計算的數據(如橫向數據塊/豎向數據塊)進行處理後再傳輸給基礎處理電路,其優點是可以減少傳輸數據的位寬,減少傳輸的總比特數量,基礎處理電路執行位寬較小的數據運算的效率也更高,功耗更低。
基礎處理電路啟用第二映射電路利用該第一標識數據對接收的第二輸入數據進行處理,得到處理後的第二輸入數據然後再對處理後的第一輸入數據和第二輸入數據執行相關運算操作。例如,基礎處理電路收到主處理電路傳輸過來的第二輸入數據(如稀疏數據,豎向數據塊),先對其進行壓縮處理再進行運算,提高運算效率,降低功耗。
可選的,主處理電路可先將第一輸入數據(如基本數據塊)、第一輸入數據關聯的第一標識數據、第二輸入數據(如部分豎向數據塊等)以及第二輸入數據關聯的第二標識數據先傳輸給基礎處理電路運算。
相應地,基礎處理電路接收數據後,可先啟用第二映射電路根據第一標識數據和第二標識數據獲得連接標識數據塊,然後在利用該連接標識數據對第一輸入數據和第二輸入數據進行處理,進一步地在基礎處理電路中還能完成針對所述處理後的第一輸入數據和第二輸入數據的運算操作,其好處減少數據運算量,提高運算效率,降低功耗。
可選的,主處理電路發送的第一輸入數據關聯的第一標識數據以及第二輸入數據關聯的第二標識數據為預先存儲在該主處理電路中的,或者為所述主處理電路啟用第一映射電路通過所述第一/第二輸入數據獲得的,本申請不做限定。
基礎處理電路的使用方法(如圖2a);主處理電路從裝置外部接收待計算的輸入數據;可選地,主處理電路利用本單元的各種運算電路,向量運算電路,內積運算器電路、累加器電路等對數據進行運算處理;主處理電路通過數據輸出介面向基礎處理電路陣列(把所有基礎處理電路的集合稱作基礎處理電路陣列)發送數據(如圖2b所示);此處的發送數據的方式可以是向一部分基礎處理電路直接發送數據,即多次廣播方式;此處發送數據的方式可以向不同的基礎處理電路分別發送不同的數據,即分發方式;基礎處理電路陣列對數據進行計算;基礎處理電路接收到輸入數據後進行運算;可選地,基礎處理電路接收到數據後將該數據從本單元的數據輸出介面傳輸出去;(傳輸給其他沒有直接從主處理電路接收到數據的基礎處理電路。)
可選地,基礎處理電路將運算結果從數據輸出介面傳輸出去;(中間計算結果或者最終計算結果)
主處理電路接收到從基礎處理電路陣列返回的輸出數據;可選地,主處理電路對從基礎處理電路陣列接收到的數據繼續進行處理(例如累加或激活操作);主處理電路處理完畢,將處理結果從數據輸出介面傳輸給裝置外部。
使用所述電路裝置完成張量乘張量運算,所述張量和前文所述的數據塊相同,其可為矩陣、向量、三維數據塊、四位數據塊以及高維數據塊中的任一項或多項的組合;下面如圖2c和2f分別示出矩陣乘向量和矩陣乘矩陣運算的具體實現方法。
使用所述電路裝置完成矩陣乘向量運算;(矩陣乘向量可以是矩陣中的每一行分別與向量進行內積運算,並將這些結果按對應行的順序擺放成一個向量。)
下面描述計算尺寸是M行L列的矩陣S和長度是L的向量C的乘法的運算,如下圖2c所示。
此方法用到所述神經網絡計算裝置的全部或者一部分基礎處理電路,假設用到了K個基礎處理電路;主處理電路將矩陣S的部分或全部行中的數據發送到k個基礎處理電路中的每個基礎處理電路;在一種可選的方案中,主處理電路的控制電路將矩陣S中某行的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於每次發送一個數,可以為對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數……,或者對於每次發送一部分數,第1次發送第3行前兩個數(即第1、2個數),第二次發送第3行第3和第4個數,第三次發送第3行第5和第6個數……;)
在一種可選的方案中,主處理電路的控制電路將矩陣S中某幾行的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5行每行的第1個數,第2次發送第3,4,5行每
行的第2個數,第3次發送第3,4,5行每行的第3個數……,或者第1次發送第3,4,5行每行前兩個數,第二次發送第3,4,5行每行第3和第4個數,第三次發送第3,4,5行每行第5和第6個數……。)
主處理電路的控制電路將向量C中的數據逐次發送到第0個基礎處理電路;第0個基礎處理電路接收到向量C的數據之後,將該數據發送給與其相連接的下一個基礎處理電路,即基礎處理電路1;具體的,有些基礎處理電路不能直接從主處理電路處獲得計算所需的所有的數據,例如,圖2d中的基礎處理電路1,只有一個數據輸入介面與主處理電路相連,所以只能直接從主處理電路獲得矩陣S的數據,而向量C的數據就需要依靠基礎處理電路0輸出給基礎處理電路1,同理,基礎處理電路1也要收到數據後也要繼續把向量C的數據輸出給基礎處理電路2。
每一個基礎處理電路對接收到的數據進行運算,該運算包括但不限於:內積運算、乘法運算、加法運算等等;在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,將結果從數據輸出介面傳輸出去(即傳輸給與其連接的其他基礎處理電路);在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;主處理電路接收到各個基礎處理電路內積運算的結果,將該結果處理得到最終結果(該處理可以為累加運算或激活運算等等)。
採用上述計算裝置實現矩陣乘向量方法的實施例:在一種可選方案中,方法所用到的多個基礎處理電路按照如下圖2d或者圖2e所示的方式排列;如圖2c所示,主處理電路可分別獲取矩陣S和矩陣P各自對應的mask矩陣(即前文所述的標識數據/標識數據塊)。具體的,該矩陣S和矩陣P各自對應的mask矩陣可以是預先存儲在主處理電路中的高速存儲器中;也可是主處理電路啟用第一映射電路分別根據矩陣S和矩陣P獲得的各自對應的mask矩陣。主處理單元的控制電路將矩陣S的M行數據分成K組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Ai)的運算;相應地,主處理單元的控制電路同樣也會將矩陣S對應的第一mask矩陣的M行數據分成K組,並和矩陣S被劃分為K組後新形成的矩陣一起發送給相應地的基礎處理電路,以在該基礎處理電路中完成相關數據的運算操作。
此處對M行數據進行分組的方法是任意不會重複分配的分組方式;在一種可選方案中,採用如下分配方式:將第j行分給第j%K(%為取余數運算)個基礎處理電路;在一種可選方案中,對於不能平均分組的情況也可以先對一部分行平均分配,對於剩下的行以任意方式分配。
主處理電路的控制電路每次將矩陣S中部分或全部行中的數據依次發送給對應的基礎處理電路;相應地,控制電路還會將矩陣S中這幾行數據所對應在第一mask矩陣中的標識數據一起發送給對應的基礎處理電路。
例如,矩陣S為50*50的矩陣數據塊,主處理電路可將矩陣S分為10個小矩陣,每個小矩陣的尺寸大小為5*50,則主處理電路可將第1個小矩陣S0(5行50列)以及該小矩陣S0關聯的標識數據塊(5行50列)一起發送給第1個基礎處理電路,以在第1個基礎處理電路中完成相關數據的運算處理。
在一種可選方案中,主處理電路的控制電路每次向第i個基礎處理電路發送其負責的第i組數據Mi中的一行數據中的一個或多個數據,該第i組數據Mi可以是矩陣S中的數據,也可以是該矩陣S對應的第一mask矩陣中的數據;在一種可選方案中,主處理電路的控制電路每次向第i個基礎處理電路發送其負責的第i組數據Mi中的部分或全部行中的每行的一個或多個數據;主處理電路的控制電路將向量C中的數據依次向第1個基礎處理電路發送;相應地,主處理電路的控制電路可將向量C關聯的第二mask矩陣中的數據也一起依次發送給第1個基礎處理電路。
在一種可選方案中,主處理電路的的控制電路每次可以發送向量C或者向量C關聯的第二mask矩陣中的一個或多個數據;第i個基礎處理電路接收到向量C或者第二mask矩陣的數據之後還可發送給與其相連的第i+1個基礎處理電路;
每個基礎處理電路接收到來自矩陣S中某一行或者某幾行中的一個或多個數據以及來自向量C的一個或多個數據後,進行運算(包括但不限於乘法或加法);具體實現中,每個基礎處理電路接收到矩陣S中的數據以及該數據在第一mask矩陣中關聯的第一標識數據、向量C中的數據以及該數據在第二mask數據中關聯的第二標識數據後;可先根據第一標識數據和第二標識數據獲得連接標識數據;然後利用該連接標識數據決定是否對矩陣P中的數據和向量C中的數據執行相關運算操作。該連接標識數據是通過對第一標識數據和第二標識數據進行與操作所獲得的,其可為0或1,1表示矩陣S中某個位置的數據和向量C中同一位置的數據均為絕對值大於預設閾值的數據;反之,0表示矩陣S中同一位置的數據和/或向量C中同一位置的數據為絕對值小於或等於預設閾值的數據。
即是,每個基礎處理電路啟動第二映射電路根據矩陣S的第一mask矩陣和向量C的第二mask矩陣選取同一位置中標識數據為1對應在矩陣S和向量C中的數據執行相關運算操作,例如乘法、加法操作等等。也即是,利用第一mask矩陣和第二mask矩陣對應來選取矩陣S和矩陣P中相同位置上絕對值大於預設閾值的數據執行相關運算操作,如乘法操作。
例如,基礎處理電路接收到矩陣S中的某兩行的數據為矩陣S0
,對應的該矩陣S0關聯的第一mask矩陣;接收到
向量C中的某幾個數據為向量C0[1 0.01 1.1 0.6] T ,該向量C0關聯的第二mask
向量[1 0 1 1] T ;進一步的基礎處理電路可啟用第二映射電路先對
和[1 0 1 1] T 進行逐元素與操作,獲得連接mask矩陣,進一步利用
該連接mask矩陣對接收的矩陣S0和向量C0進行處理,從而獲得處理後的矩陣S0
和處理後的向量C0[1 0 0 0.6] T ,以便基礎處理電路針對處理後
的矩陣S0和處理後的向量C0執行相關的運算操作。
在一種可選方案中,每個基礎處理電路中若接收的數據(具體可為待計算的數據塊,如矩陣S或向量C中某幾行/列的數據以及對應在mask矩陣中的標識數據)的數據量超過預設閾值時,該基礎處理電路將不再接收新的輸入數據,如主處理電路將後續發送的矩陣S或向量C某幾行/列的數據以及該數據對應在mask矩陣中的標識數據等等,直至基礎處理電路中擁有足夠的緩存/存儲空間,再接收主處理電路新發送的數據。
在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路接收到的數據也可以是中間結果,保存在寄存器和或片上緩存上;基礎處理電路將本地的計算結果傳輸給與其相連接的下一個基礎處理電路或者主處理電路;在一種可選方案中,對應於圖2d的結構,只有每列的最後一個基礎處理電路的輸出介面與主處理電路相連接的,這種情況下,只有最後一個基礎處理電路可以直接將本地的計算結果傳輸給主處理電路,其他基礎處理電
路的計算結果都要傳遞給自己的下一個基礎處理電路,下一個基礎處理電路傳遞給下下個基礎處理電路直至全部傳輸給最後一個基礎處理電路,最後一個基礎處理電路將本地的計算結果以及接收到的本列的其他基礎處理電路的結果執行累加計算得到中間結果,將中間結果發送至主處理電路;當然還可以為最後一個基礎處理電路可以將本列的其他基礎電路的結果以及本地的處理結果直接發送給主處理電路。
在一種可選方案中,對應於圖2e的結構,每一個基礎處理電路都有與主處理電路相連接的輸出介面,這種情況下,每一個基礎處理電路都直接將本地的計算結果傳輸給主處理電路;基礎處理電路接收到其他基礎處理電路傳遞過來的計算結果之後,傳輸給與其相連接的下一個基礎處理電路或者主處理電路。
主處理電路接收到M個內積運算的結果,作為矩陣乘向量的運算結果。
使用所述電路裝置完成矩陣乘矩陣運算;下面描述計算尺寸是M行L列的矩陣S和尺寸是L行N列的矩陣P的乘法的運算,(矩陣S中的每一行與矩陣P的每一列長度相同,如圖2f所示)
本方法使用所述裝置如圖1b所示的實施例進行說明;主處理電路的第一映射電路獲取矩陣S和矩陣P各自對應的標識mask矩陣,例如啟動第一映射電路分別對矩陣S和矩陣P進行處理以獲得該矩陣S對應的第一mask矩陣以及該矩陣P對應的第二mask矩陣;主處理電路的控制電路將矩陣S的部分或全部行中的數據發送到通過橫向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖
1b中最上方的灰色填充的豎向數據通路);同時,控制電路還會將對應在第一mask矩陣中的部分或全部行中的標識數據發送到與其連接的基礎處理電路中。例如,控制電路將矩陣S中的前兩行數據以及該前兩行數據對應在第一mask矩陣中的前兩行標識數據一起發送到與主處理電路相連的基礎電路中。
在一種可選方案中,主處理電路的控制電路將矩陣S中某行的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數……,或者第1次發送第3行前兩個數,第二次發送第3行第3和第4個數,第三次發送第3行第5和第6個數……;)
相應地,控制電路同時還將與矩陣S中該行對應在第一mask矩陣中對應行的標識數據每次發送一個或一部分標識數據給某個基礎處理電路。
在一種可選方案中,主處理電路的控制電路將矩陣S中某幾行的數據以及對應在第一mask矩陣中對應幾行的標識數據每次各發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5行每行的第1個數,第2次發送第3,4,5行每行的第2個數,第3次發送第3,4,5行每行的第3個數……,或者第1次發送第3,4,5行每行前兩個數,第二次發送第3,4,5行每行第3和第4個數,第三次發送第3,4,5行每行第5和第6個數……;)
主處理電路的控制電路將矩陣P中的部分或全部列中的數據發送到通過豎向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中基礎處理電路陣列左側的灰色填充的橫向數據通路);同時,控制電路還會將對應在第二mask矩陣中的部分或全部行中的標識數據發送到與其連接的基礎處理電路中。例如,控制電路將矩陣P中的前兩行數據以及該前兩行數據
對應在第二mask矩陣中的前兩行標識數據一起發送到與主處理電路相連的基礎電路中。
在一種可選方案中,主處理電路的控制電路將矩陣P中某列的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3列第1個數,第2次發送第3列數據中的第2個數,第3次發送第3列的第3個數……,或者第1次發送第3列前兩個數,第二次發送第3列第3和第4個數,第三次發送第3列第5和第6個數……;)相應地,控制電路同時還將與矩陣P中該行對應在第二mask矩陣中對應行的標識數據每次發送一個或一部分標識數據給某個基礎處理電路。
在一種可選方案中,主處理電路的控制電路將矩陣P中某幾列的數據以及對應在第二mask矩陣中對應幾行的標識數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5列每列的第1個數,第2次發送第3,4,5列每列的第2個數,第3次發送第3,4,5列每列的第3個數……,或者第1次發送第3,4,5列每列前兩個數,第二次發送第3,4,5列每列第3和第4個數,第三次發送第3,4,5列每列第5和第6個數……;)
基礎處理電路接收到矩陣S的數據以及矩陣S關聯的第一mask矩陣的標識數據之後,將該數據(具體可為矩陣S的數據以及該數據對應在第一mask矩陣中的標識數據)通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到矩陣P的數據後,將該數據通過其豎向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的豎向的數據通路);
每一個基礎處理電路對接收到的數據進行運算;具體的,每個基礎處理電路接收到矩陣S中某一行或幾行的數據以及該數據對應在第一mask矩陣中關聯的第一標識數據、矩陣P中某一列或幾列的數據以及該數據對應在第二mask數據中關聯的第二標識數據後;可先根據第一標識數據和第二標識數據獲得連接標識數據;然後利用該連接標識數據決定是否對矩陣S中的數據和矩陣P中的數據執行相關運算操作。該連接標識數據是通過對第一標識數據和第二標識數據進行與操作所獲得的,其可為0或1,1表示矩陣S中某個位置的數據和矩陣P中同一位置的數據均為絕對值大於預設閾值的數據;反之,0表示矩陣S中某一位置的數據和/或矩陣P中同一位置的數據為絕對值小於或等於預設閾值的數據。具體可參見前述實施例所述,這裡不再贅述。
即是,每個基礎處理電路啟動第二映射電路根據矩陣S的第一mask矩陣和矩陣P的第二mask矩陣選取同一位置中標識數據為1的數據執行相關運算操作,例如乘法、加法操作等等。
在一種可選方案中,每個基礎處理電路中若接收的數據(具體可為待計算的數據塊,如矩陣S或矩陣P中某幾行/列的數據以及對應在mask矩陣中的標識數據)的數據量超過預設閾值時,該基礎處理電路將不再接收新的輸入數據,如主處理電路將後續發送的矩陣S或矩陣P某幾行/列的數據以及該數據對應在mask矩陣中的標識數據等等,直至基礎處理電路中擁有足夠的緩存/存儲空間,再接收主處理電路新發送的數據。
在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;
在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從豎向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;向著能夠直接向主處理電路輸出的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從豎向的輸出介面向下傳輸運算結果);主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
「矩陣乘矩陣」方法的實施例:方法用到按照如圖1b所示方式排列的基礎處理電路陣列;主處理電路的第一映射電路獲取矩陣S和矩陣P各自對應的標識mask矩陣,例如啟動第一映射電路分別對矩陣S和矩陣P進行處理以獲得該矩陣
S對應的第一mask矩陣以及該矩陣P對應的第二mask矩陣,可選的,還可得到處理後的矩陣S和矩陣P,假設處理後的矩陣S有h行,處理主處理電路的控制電路將矩陣S的h行數據分成h組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Hi)的運算;同時,控制電路還會將數據對應在第一mask矩陣中的部分或全部行中的標識數據發送到與其連接的基礎處理電路中。例如,控制電路將矩陣S中的前兩行數據以及該前兩行數據對應在第一mask矩陣中的前兩行標識數據一起發送到與主處理電路相連的基礎電路中。
此處對h行數據進行分組的方法是任意不會重複分配的分組方式;在一種可選方案中,採用如下分配方式:主處理電路的控制電路將第j行分給第j%h個基礎處理電路;在一種可選方案中,對於不能平均分組的情況也可以先對一部分行平均分配,對於剩下的行以任意方式分配。
主處理電路的控制電路將矩陣P的W列數據分成w組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Wi)的運算;相應地,控制電路同時還將與矩陣P中該列對應在第二mask矩陣中對應列的標識數據每次發送一個或一部分標識數據給某個基礎處理電路。
此處對W列數據進行分組的方法是任意不會重複分配的分組方式;在一種可選方案中,採用如下分配方式:主處理電路的控制電路將第j行分給第j%w個基礎處理電路;
在一種可選方案中,對於不能平均分組的情況也可以先對一部分列平均分配,對於剩下的列以任意方式分配。
主處理電路的控制電路將矩陣S的部分或全部行中的數據發送到基礎處理電路陣列中每行的第一個基礎處理電路;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i行的第一個基礎處理電路發送其負責的第i組數據Hi中的一行數據中的一個或多個數據;同時採用相同方法可將第i組數據Hi對應在mask矩陣中的標識數據也發送給第一基礎處理電路;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i行的第一個基礎處理電路發送其負責的第i組數據Hi中的部分或全部行中的每行的一個或多個數據;同時採用相同方法可將第i組數據Hi對應在mask矩陣中的標識數據也發送給第一基礎處理電路;主處理電路的控制電路將矩陣P的部分或全部列中的數據發送到基礎處理電路陣列中每列的第一個基礎處理電路;同時,控制電路還會將對應在第二mask矩陣中的部分或全部行中的標識數據發送到與其連接的基礎處理電路中。例如,控制電路將矩陣P中的前兩行數據以及該前兩行數據對應在第二mask矩陣中的前兩行標識數據一起發送到與主處理電路相連的基礎電路中。
在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i列的第一個基礎處理電路發送其負責的第i組數據Wi中的一列數據中的一個或多個數據;
在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i列的第一個基礎處理電路發送其負責的第i組數據Ni中的部分或全部列中的每列的一個或多個數據;基礎處理電路接收到矩陣S的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到矩陣P的數據後,將該數據通過其豎向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的豎向的數據通路);每一個基礎處理電路對接收到的數據進行運算;具體的,每個基礎處理電路接收到矩陣S中某一行或幾行的數據以及該數據對應在第一mask矩陣中關聯的第一標識數據、矩陣P中某一列或幾列的數據以及該數據對應在第二mask數據中關聯的第二標識數據後;可先根據第一標識數據和第二標識數據獲得連接標識數據;然後利用該連接標識數據決定是否對矩陣S中的數據和矩陣P中的數據執行相關運算操作。該連接標識數據是通過對第一標識數據和第二標識數據進行與操作所獲得的,其可為0或1,1表示矩陣S中某個位置的數據和矩陣P中同一位置的數據均為絕對值大於預設閾值的數據;反之,0表示矩陣S中某一位置的數據和/或矩陣P中同一位置的數據為絕對值小於或等於預設閾值的數據。具體可參見前述實施例所述,這裡不再贅述。
即是,每個基礎處理電路啟動第二映射電路根據矩陣S的第一mask矩陣和矩陣P的第二mask矩陣選取同一位置中標識數據為1的數據執行相關運算操作,例如乘法、加法操作等等。
在一種可選方案中,每個基礎處理電路中若接收的數據(具體可為待計算的數據塊,如矩陣S或矩陣P中某幾行/列的數據以及對應在mask矩陣中的標識數據)的數據量超過預設閾值時,該基礎處理電路將不再接收新的輸入數據,如主處理電路將後續發送的矩陣S或矩陣P某幾行/列的數據以及該數據對應在mask矩陣中的標識數據等等,直至基礎處理電路中擁有足夠的緩存/存儲空間,再接收主處理電路新發送的數據。
在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從豎向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;
向著能夠直接向主處理電路輸出的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從豎向的輸出介面向下傳輸運算結果);主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
以上描述中使用的「橫向」,「豎向」等詞語只是為了表述圖1b所示的例子,實際使用只需要區分出每個單元的「橫向」「豎向」介面代表兩個不同的介面即可。
使用所述電路裝置完成全連接運算:如果全連接層的輸入數據是一個向量(即神經網絡的輸入是單個樣本的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為向量C,按照所述裝置的使用矩陣乘以向量方法執行運算;如果全連接層的輸入數據是一個矩陣(即神經網絡的輸入是多個樣本的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為矩陣P,或者以全連接層的權值矩陣作為矩陣P,輸入向量作為矩陣S,按照所述裝置的矩陣乘以矩陣執行運算;使用所述電路裝置完成卷積運算:下面描述卷積運算,下面的圖中一個方塊表示一個數據,輸入數據用圖3a表示(N個樣本,每個樣本有C個通道,每個通道的特徵圖的高為H,寬為W),權值也即卷積核用圖3b表示(有M個卷積核,每個卷積核有C個通道,高和寬分別為KH和KW)。對於輸入數據的N個樣本,卷積運算的規則都是一樣的,下面解釋在一個樣本上進行卷積運算的過程,在一個樣本上,M
個卷積核中的每一個都要進行同樣的運算,每個卷積核運算得到一張平面特徵圖,M個卷積核最終計算得到M個平面特徵圖,(對一個樣本,卷積的輸出是M個特徵圖),對於一個卷積核,要在一個樣本的每一個平面位置進行內積運算,然後沿著H和W方向進行滑動,例如,圖3c表示一個卷積核在輸入數據的一個樣本中右下角的位置進行內積運算的對應圖;圖3d表示卷積的位置向左滑動一格和圖3e表示卷積的位置向上滑動一格。
本方法使用所述裝置如圖1b所示的實施例進行說明;主處理電路的第一映射電路可將權值的部分或全部卷積核中的數據進行處理,得到對應的mask數據以及處理後的權值數據(即是處理後權值的部分或全部卷積核中的數據)。
主處理電路的控制電路將權值的部分或全部卷積核中的數據(該數據可為原來的權值數據或者處理後的權值數據)發送到通過橫向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中最上方的灰色填充的豎向數據通路);同時,控制電路將與該數據對應關聯的mask數據也一起發送給與主處理電路連接的基礎處理電路中;在一種可選方案中,主處理電路的控制電路將權值中某個卷積核的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數……,或者第1次發送第3行前兩個數,第二次發送第3行第3和第4個數,第三次發送第3行第5和第6個數……;)同時,控制電路將該權值中某個卷積核對應的mask數據也採用上述每次發生一個數或一部分數據給那個基礎處理電路;
在一種可選方案中另一種情況是,主處理電路的控制電路將權值中某幾個卷積核的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5行每行的第1個數,第2次發送第3,4,5行每行的第2個數,第3次發送第3,4,5行每行的第3個數……,或者第1次發送第3,4,5行每行前兩個數,第二次發送第3,4,5行每行第3和第4個數,第三次發送第3,4,5行每行第5和第6個數……;)相應地,控制電路將與該權值中某幾個卷積核所對應關聯的mask數據也採用上述相同的方法每次發生一個數或一部分數據給那個基礎處理電路;主處理電路的控制電路把輸入數據按照卷積的位置進行劃分,主處理電路的控制電路將輸入數據中的部分或全部卷積位置中的數據發送到通過豎向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中基礎處理電路陣列左側的灰色填充的橫向數據通路);相應地,控制電路同樣也會按照卷積的位置對於所述輸入數據關聯的mask數據進行劃分,相應地控制電路同時也會將所述輸入數據中的部分或全部卷積位置中的數據所對應的mask數據也一起發送給與主處理電路電性連接的基礎處理電路中;在一種可選方案中,主處理電路的控制電路將輸入數據中某個卷積位置的數據以及與該數據對應關聯的mask數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3列第1個數,第2次發送第3列數據中的第2個數,第3次發送第3列的第3個數……,或者第1次發送第3列前兩個數,第二次發送第3列第3和第4個數,第三次發送第3列第5和第6個數……;)
在一種可選方案中另一種情況是,主處理電路的控制電路將輸入數據中某幾個卷積位置的數據以及與該數據對應關聯的mask數據每次各發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3,4,5列每列的第1個數,第2次發送第3,4,5列每列的第2個數,第3次發送第3,4,5列每列的第3個數……,或者第1次發送第3,4,5列每列前兩個數,第二次發送第3,4,5列每列第3和第4個數,第三次發送第3,4,5列每列第5和第6個數……;)
基礎處理電路接收到權值的數據(具體可為權值中卷積核的數據(簡稱權值數據)或者與該權值數據對應關聯的mask數據)之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到輸入數據的數據(該數據可為主處理電路發送的輸入數據以及該輸入數據關聯的標識mask數據)後,將該數據通過其豎向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的豎向的數據通路);具體的,主處理電路的控制電路可將輸入數據以及該輸入數據關聯的mask數據一起發送給基處理電路,基礎處理電路接收該輸入數據以及該輸入數據關聯的mask數據;每一個基礎處理電路對接收到的數據進行運算;具體的,基礎處理電路可啟用第二映射電路根據輸入數據關聯的mask數據以及權值數據關聯的mask數據(即權值中卷積核所關聯的mask數據)得到連接標識數據;再利用
連接標識數據選擇輸入數據以及權值數據中絕對值大於預設閾值的數據進行乘法運算;在一種可選方案中,每個基礎處理電路中若接收的數據(具體可為待計算的數據塊,如權值中卷積核中的數據以及該數據關聯的mask數據、輸入數據或者該輸入數據關聯的mask數據)的數據量超過預設閾值時,該基礎處理電路將不再接收新的輸入數據,如主處理電路將後續發送的權值中某幾個卷積核中的數據以及該數據對應關聯的mask數據等等,直至基礎處理電路中擁有足夠的緩存/存儲空間,再接收主處理電路新發送的數據。
在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和/或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和/或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從豎向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;向著能夠直接向主處理電路輸出的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從豎向的輸出介面向下傳輸運算結果);主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
在一個實施例中,本發明公開了一種神經網絡運算裝置,其包括用於執行如上所述方法實施例中提供的所有或部分實施方式所對應的功能單元。
在一個實施例裏,本發明公開了一種晶片(如圖4),用於執行如上所述方法實施例中提供的所有或部分實施方式。
在一個實施例裏,本發明公開了一種電子裝置,其包括用於執行如上所述方法實施例中的所有或部分實施方式的功能單元。
電子裝置包括數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。
所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B型超音波掃描儀和/或心電圖儀。
以上所述的具體實施例,對本披露的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本披露的具體實施例而已,並不用於限制本披露,凡在本披露的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本披露的保護範圍之內。
Claims (14)
- 一種積體電路晶片裝置,其中,該積體電路晶片裝置包括:一主處理電路以及多個基礎處理電路;該主處理電路包括一第一映射電路,該多個基礎處理電路中至少一個電路包括一第二映射電路,該第一映射電路以及該第二映射電路均用於執行神經網絡運算中的各個數據的壓縮處理;該多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他基礎處理電路連接,該主處理電路連接第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路;該主處理電路,用於執行神經網絡運算中的各個連續的運算以及和與其相連的該基礎處理電路傳輸數據;該多個基礎處理電路,用於依據傳輸的數據以並行方式執行神經網絡中的運算,並將運算結果通過與該主處理電路連接的基礎處理電路傳輸給該主處理電路。
- 根據申請專利範圍第1項的積體電路晶片裝置,其中,該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令將該待計算的數據塊劃分為一橫向數據塊和一豎向數據塊,該橫向數據塊為按照橫向方向分發至與該主處理電路連接的基礎處理電路的數據塊,該豎向數據塊為按照縱向方向分發至與該主處理電路連接的基礎處理電路的數據塊;啟動該第一映射電路對該橫向數據塊和該豎向數據塊進行處理得到處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊,處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊;將該處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及該基本數據塊各自關聯的標 識數據塊,將該多個基本數據塊以及該多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路,將該處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路;該基礎處理電路,用於啟動該第二映射電路根據該豎向數據塊關聯的標識數據塊和該基本數據塊關聯的標識數據獲得一連接標識數據塊,並根據該連接標識數據塊對該豎向數據塊和該基本數據塊進行處理得到處理後的豎向數據塊和基本數據塊;對該處理後的豎向數據塊和基本數據塊執行內積運算得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令的指令結果。
- 根據申請專利範圍第1項的積體電路晶片裝置,其中,該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令將該待計算的數據塊劃分為一橫向數據塊和一豎向數據塊;啟動該第一映射電路對該橫向數據塊進行處理得到處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊,或者啟動該第一映射電路根據預存的該橫向數據塊關聯的標識數據塊對該橫向數據塊進行處理得到處理後的橫向數據塊;將該處理後的橫向數據塊以及該橫向數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及該多個基本數據塊各自關聯的標識數據塊,將該多個基本數據塊以及該多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路,將該豎向數據塊廣播至與其連接的基礎處理電路;該基礎處理電路,用於啟動該第二映射電路根據該基本數據塊關聯的標識數據塊對該豎向數據塊進行處理,得到處理後的豎向數據塊;對該處理後的豎向數 據塊和該處理後的基本數據塊執行內積運算得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令的指令結果。
- 根據申請專利範圍第1項的積體電路晶片裝置,其中,該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令將該待計算的數據塊劃分為一橫向數據塊和一豎向數據塊;啟動該第一映射電路對該豎向數據塊進行處理,得到處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊,或者啟動該第一映射電路根據預存的該豎向數據塊關聯的標識數據塊對該豎向數據塊進行處理得到處理後的豎向數據塊;對該橫向數據塊進行拆分處理得到多個基本數據塊;將該多個基本數據塊分發至與其連接的基礎處理電路,將該處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路;該基礎處理電路,用於啟動該第二映射電路根據該豎向數據塊關聯的標識數據塊對該基本數據塊進行處理得到處理後的基本數據塊;對該處理後的豎向數據塊和該處理後的基本數據塊執行內積運算得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令的指令結果。
- 根據申請專利範圍第1-4項中任一項的積體電路晶片裝置,其中,該待計算的數據塊包括至少一個權值,和/或至少一個輸入神經元。
- 根據申請專利範圍第5項的積體電路晶片裝置,其中,該標識數據塊是由0和1組成的矩陣數據塊,其中,0表示該權值或者該輸入神經元的絕對值小於或等於一第一閾值,1表示該權值或者該輸入神經元的絕對值大於第一閾值。
- 根據申請專利範圍第6項的積體電路晶片裝置,其中,該連接標識數據塊為對該豎向數據塊關聯的標識數據和該基本數據塊關聯的標識數據塊進行逐元素與操作而得到的。
- 根據申請專利範圍第2-4項中任一項的積體電路晶片裝置,其中,該基礎處理電路,具體用於該基本數據塊與該豎向數據塊執行內積處理得到一內積處理結果,將該內積處理結果累加得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於在如該運算結果為內積處理的結果時,對該運算結果累加後得到一累加結果,將該累加結果排列得到該待計算的數據塊以及該運算指令的指令結果。
- 根據申請專利範圍第2-4項中任一項的積體電路晶片裝置,其中,該主處理電路,具體用於將該豎向數據塊分成多個部分豎向數據塊,將該多個部分豎向數據塊通過多次廣播至該基礎處理電路;該多個部分豎向數據塊組合形成該豎向數據塊;該基礎處理電路,具體用於啟動該第二映射電路根據該基本數據塊關聯的標識數據塊對該部分豎向數據塊進行處理得到處理後的部分豎向數據塊;對該基本數據塊以及該處理後的部分豎向數據塊執行內積運算。
- 根據申請專利範圍第2-4項中任一項的積體電路晶片裝置,其中,該主處理電路,具體用於將該處理後的豎向數據塊以及該豎向數據塊關聯的標識數據塊分成多個部分豎向數據塊以及該部分豎向數據塊關聯的標識數據塊,將該多個部分豎向數據塊以及該多個部分豎向數據塊各自關聯的標識數據塊通過多次廣播至該基礎處理電路;該多個部分豎向數據塊組合形成該豎向數據塊;該基礎處理電路,具體用於啟動該第二映射電路根據該基本數據塊關聯的標識數據塊以及該部分豎向數據塊關聯的標識數據塊獲得一連接標識數據塊;根據該連接標識數據塊對該基本數據塊以及該部分豎向數據塊進行處理得到處理後的基本數據塊以及處理後的部分廣播數據;對該處理後的基本數據塊以及處理後的部分豎向數據塊執行內積運算;或者,該基礎處理電路,具體用於啟動該第二映射電路根據該部分豎向數據塊關聯的標識數據塊對該基本數據塊進行處理得到處理後的基本數據塊;對該處理後的基本數據塊以及該部分豎向數據塊執行內積運算。
- 根據申請專利範圍第2-4項中任一項的積體電路晶片裝置,其中,該基礎處理電路,具體用於將該部分豎向數據塊與該基本數據塊執行一次內積處理後得到一內積處理結果,將該內積處理結果累加得到部分運算結果,將該部分運算結果發送至該主處理電路;或者,該基礎處理電路,具體用於復用n次該部分豎向數據塊執行該部分豎向數據塊與n個該基本數據塊的內積運算得到n個部分處理結果,將n個部分處理結 果分別累加後得到n個部分運算結果,將該n個部分運算結果發送至該主處理電路,該n為大於等於2的整數。
- 一種晶片,其中,該晶片集成如申請專利範圍第1-11項任意一項的裝置。
- 一種電子設備,其中,該電子設備包括如申請專利範圍第12項的晶片。
- 一種神經網絡的運算方法,其中,該方法應用在積體電路晶片裝置內,該積體電路晶片裝置包括:如申請專利範圍第1-11項任意一項的積體電路晶片裝置,該積體電路晶片裝置用於執行神經網絡的運算;其中,該神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏置運算、全連接運算、通用矩陣乘法GEMM運算、通用矩陣向量乘法GEMV運算、激活運算中的一種或任意組合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810161819.4 | 2018-02-27 | ||
??201810161819.4 | 2018-02-27 | ||
CN201810161819.4A CN110197263B (zh) | 2018-02-27 | 2018-02-27 | 集成电路芯片装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201937412A TW201937412A (zh) | 2019-09-16 |
TWI787430B true TWI787430B (zh) | 2022-12-21 |
Family
ID=67751217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108100779A TWI787430B (zh) | 2018-02-27 | 2019-01-09 | 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110197263B (zh) |
TW (1) | TWI787430B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI737228B (zh) * | 2020-03-20 | 2021-08-21 | 國立清華大學 | 基於記憶體內運算電路架構之量化方法及其系統 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003989A (zh) * | 2014-12-19 | 2017-08-01 | 英特尔公司 | 用于人工神经网络中的分布式与协作计算的方法和装置 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
TWI738807B (zh) * | 2016-06-29 | 2021-09-11 | 日商半導體能源研究所股份有限公司 | 電子裝置、電子裝置之操作方法、及移動車輛 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104463324A (zh) * | 2014-11-21 | 2015-03-25 | 长沙马沙电子科技有限公司 | 一种基于大规模高性能集群的卷积神经网络并行处理方法 |
CN107563497B (zh) * | 2016-01-20 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 用于稀疏人工神经网络的计算装置和运算方法 |
CN111860813B (zh) * | 2016-04-29 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
CN106447034B (zh) * | 2016-10-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN107609641B (zh) * | 2017-08-30 | 2020-07-03 | 清华大学 | 稀疏神经网络架构及其实现方法 |
-
2018
- 2018-02-27 CN CN201810161819.4A patent/CN110197263B/zh active Active
-
2019
- 2019-01-09 TW TW108100779A patent/TWI787430B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003989A (zh) * | 2014-12-19 | 2017-08-01 | 英特尔公司 | 用于人工神经网络中的分布式与协作计算的方法和装置 |
TWI738807B (zh) * | 2016-06-29 | 2021-09-11 | 日商半導體能源研究所股份有限公司 | 電子裝置、電子裝置之操作方法、及移動車輛 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN110197263A (zh) | 2019-09-03 |
TW201937412A (zh) | 2019-09-16 |
CN110197263B (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110197270B (zh) | 集成电路芯片装置及相关产品 | |
CN109993301B (zh) | 神经网络训练装置及相关产品 | |
CN110909872B (zh) | 集成电路芯片装置及相关产品 | |
TWI768167B (zh) | 集成電路芯片裝置及相關產品 | |
TWI787430B (zh) | 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法 | |
CN109993290B (zh) | 集成电路芯片装置及相关产品 | |
CN109993292B (zh) | 集成电路芯片装置及相关产品 | |
TWI786255B (zh) | 集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法 | |
WO2019129302A1 (zh) | 集成电路芯片装置及相关产品 | |
CN113032113A (zh) | 任务调度方法及相关产品 | |
CN110197274B (zh) | 集成电路芯片装置及相关产品 | |
TWI768168B (zh) | 集成電路芯片裝置及相關產品 | |
CN111767997B (zh) | 集成电路芯片装置及相关产品 | |
CN110197265B (zh) | 集成电路芯片装置及相关产品 | |
CN110197271B (zh) | 集成电路芯片装置及相关产品 | |
CN113807510B (zh) | 集成电路芯片装置及相关产品 | |
CN110197275B (zh) | 集成电路芯片装置及相关产品 | |
CN110197264B (zh) | 神经网络处理器板卡及相关产品 | |
CN111767998B (zh) | 集成电路芯片装置及相关产品 | |
CN110197266B (zh) | 集成电路芯片装置及相关产品 | |
CN110197273B (zh) | 集成电路芯片装置及相关产品 | |
CN110197268B (zh) | 集成电路芯片装置及相关产品 | |
CN110197267A (zh) | 神经网络处理器板卡及相关产品 |