TW201931215A - 集成電路芯片裝置及相關產品 - Google Patents
集成電路芯片裝置及相關產品 Download PDFInfo
- Publication number
- TW201931215A TW201931215A TW107147412A TW107147412A TW201931215A TW 201931215 A TW201931215 A TW 201931215A TW 107147412 A TW107147412 A TW 107147412A TW 107147412 A TW107147412 A TW 107147412A TW 201931215 A TW201931215 A TW 201931215A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- matrix
- processing circuit
- circuit
- type
- Prior art date
Links
Classifications
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Processing Of Color Television Signals (AREA)
- Image Processing (AREA)
Abstract
一種集成電路芯片裝置及相關產品,所述集成電路芯片裝置包括:所述集成電路芯片裝置用於執行神經網絡正向運算,所述神經網絡包含n層;所述集成電路芯片裝置包括:主處理電路、k個分支處理電路以及k組基礎處理電路,所述主處理電路與所述k個分支處理電路分別連接,k個分支處理電路中每個分支處理電路對應k組基礎處理電路中的一組基礎處理電路,所述一組基礎處理電路包括至少一個基礎處理電路;所述分支處理電路包括:數據類型運算電路,用於執行浮點類型數據與定點類型數據之間的轉換。
Description
本披露涉及神經網絡領域,尤其涉及一種集成電路芯片裝置及相關產品。
人工神經網絡(Artificial Neural Network,ANN),是20世紀80 年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象, 建立某種簡單模型,按不同的連接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。現有的神經網絡的運算基於中央處理器(Central Processing Unit,CPU)或圖形處理器(Graphics Processing Unit,GPU)來實現神經網絡的運算,此種運算的計算量大,功耗高。
本披露實施例提供了一種集成電路芯片裝置及相關產品,可提升計算裝置的處理速度,提高效率。
第一方面,提供一種集成電路芯片裝置,所述集成電路芯片裝置用於執行神經網絡正向運算,所述神經網絡包含n層;所述集成電路芯片裝置包括:主處理電路、k個分支處理電路以及k組基礎處理電路,所述主處理電路與所述k個分支處理電路分別連接,k個分支處理電路中每個分支處理電路對應k組基礎處理電路中的一組基礎處理電路,所述一組基礎處理電路包括至少一個基礎處理電路;
所述分支處理電路包括:數據類型運算電路,用於執行浮點類型數據與定點類型數據之間的轉換;
所述主處理電路,用於接收第一計算指令,解析第一計算指令得到所述第一計算指令在所述正向運算的第i層包含的第一運算指令以及第一計算指令對應的輸入數據以及權值數據,所述i的取值範圍為大於等於1小於等於n的整數,如所述i大於等於2,所述輸入數據為第i-1層的輸出數據;
所述主處理電路,用於依據該輸入數據、權值數據以及第一運算指令確定第一運算指令的第一複雜度,依據所述第一複雜度確定所述第一運算指令對應的第一數據類型,依據所述第一複雜度確定是否向所述k個分支處理電路發送開啓指令開啓所述數據類型運算電路;所述第一數據類型為浮點數據類型或定點數據類型;
所述主處理電路,還用於依據所述第一運算指令的類型將第一數據類型的所述輸入數據以及第一數據類型的所述權值數據劃分成廣播數據塊以及分發數據塊,對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述K個分支處理電路中的至少一分支處理電路,將所述廣播數據塊廣播至所述K個分支處理電路;
所述k個分支處理電路,用於在接收到開啓指令時,通過所述數據類型運算電路將廣播數據塊以及接收到的基本數據塊轉換成第一數據類型的廣播數據塊和第一數據類型的接收到的基本數據塊;將第一數據類型的廣播數據塊和定點類型的接收到的基本數據塊轉發給基礎處理電路;
所述k組基礎處理電路,用於將第一數據類型的廣播數據塊和第一數據類型的接收到的基本數據塊以並行方式執行運算得到第一數據類型的運算結果,並將運算結果發送至所述k個分支處理電路;
所述k個分支處理電路,用於通過所述數據類型運算電路將第一數據類型的運算結果轉換成第二數據類型的運算結果,將第二數據類型的運算結果發送至所述主處理電路;
所述主處理電路,用於對所述第二數據類型的運算結果處理得到所述第一運算指令的指令結果完成第i層包含的第一運算指令運算。
第二方面,提供一種神經網絡運算裝置,所述神經網絡運算裝置包括一個或多個第一方面提供的集成電路芯片裝置。
第三方面,提供一種組合處理裝置,所述組合處理裝置包括:第二方面提供的神經網絡運算裝置、通用互聯介面和通用處理裝置;
所述神經網絡運算裝置通過所述通用互聯介面與所述通用處理裝置連接。
第四方面,提供一種芯片,所述芯片集成第一方面的裝置、第二方面的裝置或第三方面的裝置。
第五方面,提供一種電子設備,所述電子設備包括第四方面的芯片。
第六方面,提供一種神經網絡的運算方法,所述方法應用在集成電路芯片裝置內,所述集成電路芯片裝置包括:第一方面所述的集成電路芯片裝置,所述集成電路芯片裝置用於執行神經網絡的正向運算。
可以看出,通過本披露實施例,提供數據轉換運算電路將數據塊的類型進行轉換後運算,節省了傳輸資源以及計算資源,所以其具有功耗低,計算量小的優點。
為了使本技術領域的人員更好地理解本披露方案,下面將結合本披露實施例中的圖式,對本披露實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本披露一部分實施例,而不是全部的實施例。基於本披露中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本披露保護的範圍。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述第一複雜度與預設閾值比較,如所述第一複雜度高於所述預設閾值,確定所述第一數據類型為定點類型,如所述第一複雜度低於或等於所述預設閾值,確定所述第一數據類型為浮點類型。
在第一方面提供的裝置中,所述主處理電路,具體用於確定所述輸入數據以及權值數據屬於第二數據類型,如所述第二數據類型與所述第一數據類型不同,向所述k個分支處理電路發送開啓指令,所述開啓指令用於開啓所述分支處理電路包括的數據類型運算電路。
在第一方面提供的裝置中,所述主處理電路,具體用於如所述第一運算指令為卷積運算指令,所述輸入數據為卷積輸入數據,所述權值數據為卷積核,
第一複雜度=α*C*kW*kW*M*N*W*C*H;
其中,α為卷積系數,取值範圍為大於1;C、kW、kW、M為卷積核四個維度的值,N、W、C、H為卷積輸入數據四個維度的值;
如所述第一複雜度大於設定閾值,確定該卷積輸入數據以及卷積核是否為浮點數據,如該卷積輸入數據以及卷積核不為浮點數據,通知所述k個分支處理電路將該卷積輸入數據轉換成浮點數據,將卷積核轉換成浮點數據,然後將卷積輸入數據、卷積核以浮點數據類型執行卷積運算。
在第一方面提供的裝置中,所述主處理電路,具體用於如所述第一運算指令為:矩陣乘矩陣運算指令,所述輸入數據為所述矩陣乘矩陣運算的第一矩陣,所述權值為所述矩陣乘矩陣運算的第二矩陣;
第一複雜度=β*F*G*E*F;其中,β為矩陣系數,取值範圍為大於等於1,F、G為第一矩陣的行、列值,E、F為第二矩陣的行、列值;
如所述第一複雜度大於設定閾值,確定該第一矩陣以及第二矩陣是否為浮點數據,如該第一矩陣以及第二矩陣不為浮點數據,通知所述k個分支處理電路將該第一矩陣轉換成浮點數據,將第二矩陣轉換成浮點數據,然後將第一矩陣、第二矩陣以浮點數據類型執行矩陣乘矩陣運算。
在第一方面提供的裝置中,所述主處理電路,具體用於如所述第一運算指令為:矩陣乘向量運算指令,所述輸入數據為所述矩陣乘向量運算的第一矩陣,所述權值為所述矩陣乘向量運算的向量;
第一複雜度=β*F*G*F;其中,β為矩陣系數,取值範圍為大於等於1,F、G為第一矩陣的行、列值,F為向量的列值;
如所述第一複雜度大於設定閾值,確定該第一矩陣以及向量是否為浮點數據,如該第一矩陣以及向量不為浮點數據,將該第一矩陣轉換成浮點數據,通知所述k個分支處理電路將向量轉換成浮點數據,然後將第一矩陣、向量以浮點數據類型執行矩陣乘向量運算。
在第一方面提供的裝置中,所述主處理電路,具體用於如所述第一運算指令的類型為乘法指令,確定所述輸入數據為分發數據塊,所述權值數據為廣播數據塊;如所述第一運算指令的類型為卷積指令,確定所述輸入數據為廣播數據塊,所述權值數據為分發數據塊。
在第一方面提供的裝置中,所述第i層還包括:偏執運算、全連接運算、通用矩陣乘法(General Matrix Multiplication,GEMM)運算、通用矩陣向量乘法(General Matrix Vector Multiplication,GEMV)運算、激活運算中的一種或任意組合。
在第一方面提供的裝置中,所述主處理電路包括:主寄存器或主片上緩存電路;
所述基礎處理電路包括:基本寄存器或基本片上緩存電路。
在第一方面提供的裝置中,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路或數據重排電路中的一種或任意組合。
在第一方面提供的裝置中,所述輸入數據為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合;
所述權值數據為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
如圖3所示,為本披露提供的一種集成電路芯片裝置,所述集成電路芯片裝置用於執行神經網絡正向運算,所述神經網絡包含n層;所述集成電路芯片裝置包括:主處理電路、k個分支處理電路以及k組基礎處理電路,所述主處理電路與所述k個分支處理電路分別連接,k個分支處理電路中每個分支處理電路對應k組基礎處理電路中的一組基礎處理電路,所述一組基礎處理電路包括至少一個基礎處理電路;
所述分支處理電路包括:數據類型運算電路,用於執行浮點類型數據與定點類型數據之間的轉換;
所述主處理電路,用於接收第一計算指令,解析第一計算指令得到所述第一計算指令在所述正向運算的第i層包含的第一運算指令以及第一計算指令對應的輸入數據以及權值數據,所述i的取值範圍為大於等於1小於等於n的整數,如所述i大於等於2,所述輸入數據為第i-1層的輸出數據;
所述主處理電路,用於依據該輸入數據、權值數據以及第一運算指令確定第一運算指令的第一複雜度,依據所述第一複雜度確定所述第一運算指令對應的第一數據類型,依據所述第一複雜度確定是否向所述k個分支處理電路發送開啓指令開啓所述數據類型運算電路;所述第一數據類型為浮點數據類型或定點數據類型;
所述主處理電路,還用於依據所述第一運算指令的類型將第一數據類型的所述輸入數據以及第一數據類型的所述權值數據劃分成廣播數據塊以及分發數據塊,對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述K個分支處理電路中的至少一分支處理電路,將所述廣播數據塊廣播至所述K個分支處理電路;
所述k個分支處理電路,用於在接收到開啓指令時,通過所述數據類型運算電路將廣播數據塊以及接收到的基本數據塊轉換成第一數據類型的廣播數據塊和第一數據類型的接收到的基本數據塊;將第一數據類型的廣播數據塊和定點類型的接收到的基本數據塊轉發給基礎處理電路;
所述k組基礎處理電路,用於將第一數據類型的廣播數據塊和第一數據類型的接收到的基本數據塊以並行方式執行運算得到第一數據類型的運算結果,並將運算結果發送至所述k個分支處理電路;
所述k個分支處理電路,用於通過所述數據類型運算電路將第一數據類型的運算結果轉換成第二數據類型的運算結果,將第二數據類型的運算結果發送至所述主處理電路;
所述主處理電路,用於對所述第二數據類型的運算結果處理得到所述第一運算指令的指令結果完成第i層包含的第一運算指令運算。
如圖1a所示,為本披露實施例提供的一種神經網絡的正向運算,每一層使用自己的輸入數據和權值按照層的類型所指定的運算規則計算得到相應的輸出數據;
神經網絡的正向運算過程(也叫推理,inference)是逐層處理各層的輸入數據,經過一定的計算,得到輸出數據的過程,具有如下特徵:
某一層的輸入:
某一層的輸入可以是神經網絡的輸入數據;
某一層的輸入可以是其他層的輸出;
某一層的輸入可以是本層上一時刻的輸出(對應於循環神經網絡的情況);
某一層可以同時從多個上述輸入源獲取輸入;
某一層的輸出:
某一層的輸出可以作為神經網絡的輸出結果;
某一層的輸出可以是其它層的輸入;
某一層的輸出可以是下一時刻本層的輸入(循環神經網絡的情況);
某一層的輸出可以向上述多個輸出方向輸出結果;
具體地,所述神經網絡中的層的運算的類型包括但不限於以下幾種:
卷積層(即執行卷積運算);
全連接層(即執行全連接運算);
歸一化(規則化)層:包括局部響應歸一化(Local Response Normalization,LRN)層,批標準化(Batch Normalization,BN)層等類型;
池化層;
激活層:包括但不限於以下類型Sigmoid層,ReLU層,PReLu層,LeakyReLu層,Tanh層;
層的反向運算,每一層的反向運算需要執行兩部分運算:一部分是使用可能是稀疏表示的輸出數據梯度和可能是稀疏表示的輸入數據計算出權值的梯度(用於在「權值更新」步驟更新本層的權值),另一部分是使用可能是稀疏表示的輸出數據梯度和可能是稀疏表示的權值,計算出輸入數據梯度(用於作為反向運算中下一層的輸出數據梯度以供其進行反向運算);
反向運算按照與正向運算相反的順序,從最後一層開始反向傳遞梯度。
在一種可選方案中,某一層反向計算得到的輸出數據梯度可以來自:
神經網絡最後的損失函數(lost function或者cost function)回傳的梯度;
其它層的輸入數據梯度;
本層上一時刻的輸入數據梯度(對應於循環神經網絡的情況);
某一層可以同時從多個上述源獲取輸出數據梯度;
在執行完神經網絡的反向運算之後,就計算出了各層的權值的梯度,在這個步驟中,所述裝置的第一輸入緩存和第二輸入緩存分別用於存儲本層的權值和權值的梯度,然後在運算單元中使用權值梯度對權值進行更新;
上文中提到的運算都是神經網絡中的一層的運算,對於多層神經網絡,其實現過程是,在正向運算中,當上一層人工神經網絡執行完成之後,下一層的運算指令會將運算單元中計算出的輸出數據作為下一層的輸入數據進行運算(或者是對該輸出數據進行某些操作再作為下一層的輸入數據),同時,將權值也替換為下一層的權值;在反向運算中,當上一層人工神經網絡的反向運算執行完成後,下一層運算指令會將運算單元中計算出的輸入數據梯度作為下一層的輸出數據梯度進行運算(或者是對該輸入數據梯度進行某些操作再作為下一層的輸出數據梯度),同時將權值替換為下一層的權值;(用以下的圖表示,以下圖中虛線的箭頭表示反向運算,實線的箭頭表示正向運算,各圖下面的標注表示圖的含義)
定點化數據的表示方法
定點化的方法是指將網絡中的某個數據塊的數據表示轉換成特定的某種固定小數點位置的數據表示方式(映射到電路裝置上數據的0/1比特位擺放方式);
在一種可選方案中,將多個數據組成個數據塊作為一個整體使用同樣的定點表示方法進行定點化表示;
圖1b示出了根據本發明實施例的用於存儲數據的短位數定點數據結構的具體表示方法。其中,1Bit位用於表示符號,M位用於表示整數部分,N位用於表示小數部分;相比於32位浮點數據表示形式,本發明採用的短位定點數據表示形式除了佔用比特位數更少外,對於神經網絡中同一層、同一類型的數據,如第一個卷積層的所有權值數據,還另外設置了一個標誌位Point location記錄小數點的位置,這樣可以根據實際數據的分布調整數據表示的精度與可表示數據範圍。
對於浮點數的表示即32bit來表示,但是對於此技術方案,其採用定點數可以減少一個數值的比特位的位數,從而降低傳輸的數據量以及運算的數據量。
輸入數據用圖2a表示(N個樣本,每個樣本有C個通道,每個通道的特徵圖的高為H,寬為W),權值也即卷積核用圖2b表示(有M個卷積核,每個卷積核有C個通道,高和寬分別為KH和KW)。對於輸入數據的N個樣本,卷積運算的規則都是一樣的,下面解釋在一個樣本上進行卷積運算的過程,在一個樣本上,M個卷積核中的每一個都要進行同樣的運算,每個卷積核運算得到一張平面特徵圖,M個卷積核最終計算得到M個平面特徵圖,(對一個樣本,卷積的輸出是M個特徵圖),對於一個卷積核,要在一個樣本的每一個平面位置進行內積運算,然後沿著H和W方向進行滑動,例如,圖2c表示一個卷積核在輸入數據的一個樣本中右下角的位置進行內積運算的對應圖;圖2d表示卷積的位置向左滑動一格和圖2e表示卷積的位置向上滑動一格。
當第一運算為卷積運算,所述輸入數據為卷積輸入數據,所述權值數據為卷積核,
第一複雜度=α*C*kW*kW*M*N*W*C*H;
其中,α為卷積系數,取值範圍為大於1;C、kW、kW、M為卷積核四個維度的值,N、W、C、H為卷積輸入數據四個維度的值;
如所述第一複雜度大於設定閾值,確定該卷積輸入數據以及卷積核是否為浮點數據,如該卷積輸入數據以及卷積核不為浮點數據,將該卷積輸入數據轉換成浮點數據,將卷積核轉換成浮點數據,然後將卷積輸入數據、卷積核以浮點數據類型執行卷積運算。
具體的,該卷積處理的方式可以採用如圖3所示的芯片結構處理,主處理電路(也可以稱為主單元)的數據轉換運算電路可以在第一複雜度大於設定閾值時,將權值的部分或全部卷積核中的數據轉換成定點類型的數據,主處理電路的控制電路將權值的部分或全部卷積核中的數據發送到通過橫向數據輸入介面直接與主處理電路相連的那些基礎處理電路(也可以稱為基礎單元);
在一種可選方案中,主處理電路的控制電路將權值中某個卷積核的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數……,或者第1次發送第3行前兩個數,第二次發送第3行第3和第4個數,第三次發送第3行第5和第6個數……;)
在一種可選方案中另一種情況是,主處理電路的控制電路將權值中某幾個卷積核的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第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個數……;)
主處理電路的控制電路把輸入數據按照卷積的位置進行劃分,主處理電路的控制電路將輸入數據中的部分或全部卷積位置中的數據發送到通過竪向數據輸入介面直接與主處理電路相連的那些基礎處理電路;
在一種可選方案中,主處理電路的控制電路將輸入數據中某個卷積位置的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3列第1個數,第2次發送第3列數據中的第2個數,第3次發送第3列的第3個數……,或者第1次發送第3列前兩個數,第二次發送第3列第3和第4個數,第三次發送第3列第5和第6個數……;)
在一種可選方案中另一種情況是,主處理電路的控制電路將輸入數據中某幾個卷積位置的數據每次各發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第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個數……;)
基礎處理電路接收到權值的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路;基礎處理電路接收到輸入數據的數據後,將該數據通過其竪向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路;
每一個基礎處理電路對接收到的數據進行運算;
在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和/或片上緩存上;
在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和/或片上緩存上;
基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;
在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;
具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;
向著能夠直接向主處理電路輸出的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果);
主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
參閱圖4a,圖4a為一種矩陣乘以矩陣的運算,如所述第一運算為:矩陣乘矩陣運算,所述輸入數據為所述矩陣乘矩陣運算的第一矩陣,所述權值為所述矩陣乘矩陣運算的第二矩陣;
第一複雜度=β*F*G*E*F;其中,β為矩陣系數,取值範圍為大於等於1,F、G為第一矩陣的行、列值,E、F為第二矩陣的行、列值;
如所述第一複雜度大於設定閾值,確定該第一矩陣以及第二矩陣是否為浮點數據,如該第一矩陣以及第二矩陣不為浮點數據,將該第一矩陣轉換成浮點數據,將第二矩陣轉換成浮點數據,然後將第一矩陣、第二矩陣以浮點數據類型執行矩陣乘矩陣運算。
參閱圖4b,使用如圖3所示的裝置完成矩陣乘矩陣的運算;
下面描述計算尺寸是M行L列的矩陣S和尺寸是L行N列的矩陣P的乘法的運算,(矩陣S中的每一行與矩陣P的每一列長度相同,如圖2d所示)所述神經網絡計算裝置擁有K個基礎處理電路:
步驟S401b、 主處理電路在如第一複雜度大於設定閾值時,將矩陣S和矩陣P轉換成定點類型數據,主處理電路的控制電路將矩陣S中的每一行數據分發到K個基礎處理電路中的某一個上,基礎處理電路將接收到的數據保存在片上緩存和/或寄存器中;具體的,可以發送至K個基礎處理電路中與主處理電路連接的基礎處理電路。
在一種可選方案中,如果S的行數M<=K則,主處理電路的控制電路給M個基礎處理電路分別分發S矩陣的一行;
在一種可選方案中,如果S的行數M>K,主處理電路的控制電路給每個基礎處理電路分別分發S矩陣中一行或多行的數據。
S中有Mi行分發到第i個基礎處理電路,這Mi行的集合稱為Ai,如圖2e表示第i個基礎處理電路上將要執行的計算。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中:
接收的由主處理電路分發的矩陣Ai,將矩陣Ai保存在第i個基礎處理電路寄存器和/或片上緩存中;優點是減少了之後的數據傳輸量,提高了計算效率,降低了功耗。
步驟S402b、 主處理電路的控制電路將矩陣P中各部分以廣播的方式傳輸給各個基礎處理電路;
在一種可選方案中,可以將矩陣P中各部分只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的矩陣P的數據進行充分地復用,完成對應與矩陣Ai中每一行的內積運算;本實施例中的復用具體可以為基礎處理電路在計算中重複使用,例如矩陣P的數據的復用,可以是對矩陣P的數據在多次使用。
在一種可選方案中,主處理電路的控制電路可以將矩陣P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的矩陣P的數據不進行復用,分次完成對應於矩陣Ai中的每一行的內積運算;
在一種可選方案中,主處理電路的控制電路可以將矩陣P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的矩陣P的數據進行部分復用,完成對應於矩陣Ai中的每一行的內積運算;
在一種可選方案中,每個基礎處理電路,例如第i個基礎處理電路,計算矩陣Ai的數據和矩陣P的數據的內積;
步驟S403b、每個基礎處理電路的累加器電路將內積運算的結果進行累加並傳輸回主處理電路。
在一種可選方案中,基礎處理電路可以將每次執行內積運算得到的部分和傳輸回主處理電路進行累加;
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路。
參閱圖4c,為一種矩陣乘以向量的運算示意圖。如所述第一運算為:矩陣乘向量運算,所述輸入數據為所述矩陣乘向量運算的第一矩陣,所述權值為所述矩陣乘向量運算的向量;
第一複雜度=β*F*G*F;其中,β為矩陣系數,取值範圍為大於等於1,F、G為第一矩陣的行、列值,F為向量的列值;
如所述第一複雜度大於設定閾值,確定該第一矩陣以及向量是否為浮點數據,如該第一矩陣以及向量不為浮點數據,將該第一矩陣轉換成浮點數據,將向量轉換成浮點數據,然後將第一矩陣、向量以浮點數據類型執行矩陣乘向量運算。
參閱圖4d,圖4d提供了了一種矩陣乘向量的實現方法,具體可以包括:
步驟S401、主處理電路的數據轉換運算電路將矩陣S中的每一行數據轉換成定點類型的數據,主處理電路的控制電路分發到K個基礎處理電路中的某一個上,基礎處理電路將接收到的分發數據保存在基礎處理電路的片上緩存和/或寄存器中;
在一種可選方案中,如果矩陣S的行數M<=K則,主處理電路的控制電路給K個基礎處理電路分別分發S矩陣的一行;
在一種可選方案中,如果矩陣S的行數M>K,則主處理電路的控制電路給每個基礎處理電路分別分發S矩陣中一行或多行的數據。
分發到第i個基礎處理電路的S中的行的集合為Ai,共有Mi個行,如圖2c表示第i個基礎處理電路上將要執行的計算。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中,可以將接收到的分發數據例如矩陣Ai保存在第i個基礎處理電路的寄存器和/或片上緩存中;優點是減少了之後的分發數據的數據傳輸量,提高了計算效率,降低了功耗。
步驟S402、 主處理電路的數據類型運算電路將向量P轉換成定點類型的數據,主處理電路的控制電路將定點類型的向量P中各部分以廣播的方式傳輸給K個基礎處理電路;
在一種可選方案中,主處理電路的控制電路可以將向量P中各部分只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的向量P的數據進行充分地復用,完成對應與矩陣Ai中每一行的內積運算。優點是,減少從主處理電路到基礎處理電路的向量P的重複傳輸的數據傳輸量,提高執行效率,降低傳輸功耗。
在一種可選方案中,主處理電路的控制電路可以將向量P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的向量P的數據不進行復用,分次完成對應於矩陣Ai中的每一行的內積運算;優點是,減少基礎處理電路內部的單次傳輸的向量P的數據傳輸量,並可以降低基礎處理電路緩存和/或寄存器的容量,提高執行效率,降低傳輸功耗,降低成本。
在一種可選方案中,主處理電路的控制電路可以將向量P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的向量P的數據進行部分復用,完成對應於矩陣Ai中的每一行的內積運算;優點是,減少從主處理電路到基礎處理電路的數據傳輸量,也減少基礎處理電路內部的數據傳輸量,提高執行效率,降低傳輸功耗。
步驟S403、 K個基礎處理電路的內積運算器電路計算矩陣S和向量P的數據的內積,例如第i個基礎處理電路,計算矩陣Ai的數據和向量P的數據的內積;
步驟S404、 K個基礎處理電路的累加器電路將內積運算的結果進行累加得到累加結果,將累加結果以定點類型形式傳輸回主處理電路。
在一種可選方案中,可以將每次基礎處理電路執行內積運算得到的部分和(部分和即累加結果的一部分,例如累加結果為:F1*G1+ F2*G2+ F3*G3+ F4*G4+ F5*G5,那麼部分和可以為:F1*G1+ F2*G2+ F3*G3的值)傳輸回主處理電路進行累加;優點是,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了運算效率,降低了數據傳輸功耗。
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路;優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了運算效率,降低了數據傳輸功耗,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
本披露還提供一種集成電路芯片裝置,所述集成電路芯片裝置用於執行神經網絡的正向運算,所述神經網絡包含多層,所述裝置包括:處理電路以及外部介面;
所述外部介面,用於接收第一計算指令;
所述處理電路,用於解析第一計算指令得到所述第一計算指令在所述正向運算的第i層包含的第一運算、第一計算指令對應的輸入數據以及權值數據;上述i的取值可以為1,如為1時,其輸入數據可以為原始輸入數據,當i大於等於2時,該輸入數據可以為上一層的輸出數據,例如i-1層的輸出數據。
所述處理電路,還用於依據該輸入數據、權值數據以及第一運算確定第一運算的第一複雜度,依據所述第一複雜度確定該輸入數據以及權值數據在執行第一運算時的第一數據類型,所述第一數據類型包括:浮點類型或定點類型;
所述處理電路,還用於將輸入數據以及權值數據以第一數據類型執行所述正向運算的第i層包含的第一運算。
本披露還揭露了一個神經網絡運算裝置,其包括一個或多個在如圖3所示的芯片,用於從其他處理裝置中獲取待運算數據和控制信息,執行指定的神經網絡運算,執行結果通過I/O介面傳遞給外圍設備。外圍設備譬如攝像頭、顯示器、鼠標、鍵盤、網卡、wifi介面、伺服器。當包含一個以上如圖3所示的芯片時,如圖3所示的芯片間可以通過特定的結構進行鏈接並傳輸數據,譬如,通過PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算。此時,可以共享同一控制系統,也可以有各自獨立的控制系統;可以共享內存,也可以每個加速器有各自的內存。此外,其互聯方式可以是任意互聯拓撲。
該神經網絡運算裝置具有較高的兼容性,可通過PCIE介面與各種類型的伺服器相連接。
本披露還揭露了一個組合處理裝置,其包括上述的神經網絡運算裝置,通用互聯介面,和其他處理裝置(即通用處理裝置)。神經網絡運算裝置與其他處理裝置進行交互,共同完成用戶指定的操作。如圖5a為組合處理裝置的示意圖。
其他處理裝置,包括中央處理器CPU、圖形處理器GPU、神經網絡處理器等通用/專用處理器中的一種或以上的處理器類型。其他處理裝置所包括的處理器數量不做限制。其他處理裝置作為神經網絡運算裝置與外部數據和控制的介面,包括數據搬運,完成對本神經網絡運算裝置的開啓、停止等基本控制;其他處理裝置也可以和神經網絡運算裝置協作共同完成運算任務。
通用互聯介面,用於在所述神經網絡運算裝置與其他處理裝置間傳輸數據和控制指令。該神經網絡運算裝置從其他處理裝置中獲取所需的輸入數據,寫入神經網絡運算裝置片上的存儲裝置;可以從其他處理裝置中獲取控制指令,寫入神經網絡運算裝置片上的控制緩存;也可以讀取神經網絡運算裝置的存儲模塊中的數據並傳輸給其他處理裝置。
如圖5b所示,可選的,該結構還包括存儲裝置,用於保存在本運算單元/運算裝置或其他運算單元所需要的數據,尤其適用於所需要運算的數據在本神經網絡運算裝置或其他處理裝置的內部存儲中無法全部保存的數據。
該組合處理裝置可以作為手機、機器人、無人機、視頻監控設備等設備的SOC片上系統,有效降低控制部分的核心面積,提高處理速度,降低整體功耗。此情況時,該組合處理裝置的通用互聯介面與設備的某些部件相連接。某些部件譬如攝像頭、顯示器、鼠標、鍵盤、網卡、wifi介面。
請參照圖5c,圖5c為本披露實施例提供的一種神經網絡處理器板卡的結構示意圖。如圖5c所示,上述神經網絡處理器板卡10包括神經網絡芯片封裝結構11、第一電氣及非電氣連接裝置12和第一基板(substrate)13。
本披露對於神經網絡芯片封裝結構11的具體結構不作限定,可選的,如圖5d所示,上述神經網絡芯片封裝結構11包括:神經網絡芯片111、第二電氣及非電氣連接裝置112、第二基板113。
本披露所涉及的神經網絡芯片111的具體形式不作限定,上述的神經網絡芯片111包含但不限於將神經網絡處理器集成的神經網絡晶片,上述晶片可以由硅材料、鍺材料、量子材料或分子材料等製成。根據實際情況(例如:較嚴苛的環境)和不同的應用需求可將上述神經網絡晶片進行封裝,以使神經網絡晶片的大部分被包裹住,而將神經網絡晶片上的引腳通過金線等導體連到封裝結構的外邊,用於和更外層進行電路連接。
本披露對於神經網絡芯片111的具體結構不作限定,可選的,請參照圖3所示的裝置。
本披露對於第一基板13和第二基板113的類型不做限定,可以是印制電路板(printed circuit board,PCB)或(printed wiring board,PWB),還可能為其它電路板。對PCB的製作材料也不做限定。
本披露所涉及的第二基板113用於承載上述神經網絡芯片111,通過第二電氣及非電氣連接裝置112將上述的神經網絡芯片111和第二基板113進行連接得到的神經網絡芯片封裝結構11,用於保護神經網絡芯片111,便於將神經網絡芯片封裝結構11與第一基板13進行進一步封裝。
對於上述具體的第二電氣及非電氣連接裝置112的封裝方式和封裝方式對應的結構不作限定,可根據實際情況和不同的應用需求選擇合適的封裝方式並進行簡單地改進,例如:倒裝芯片球柵陣列封裝(Flip Chip Ball Grid Array Package,FCBGAP),薄型四方扁平式封裝(Low-profile Quad Flat Package,LQFP)、帶散熱器的四方扁平封裝(Quad Flat Package with Heat sink,HQFP)、無引腳四方扁平封裝(Quad Flat Non-lead Package,QFN)或小間距四方扁平式封裝(Fine-pitch Ball Grid Package,FBGA)等封裝方式。
倒裝芯片(Flip Chip),適用於對封裝後的面積要求高或對導線的電感、信號的傳輸時間敏感的情況下。除此之外可以用引線鍵合(Wire Bonding)的封裝方式,減少成本,提高封裝結構的靈活性。
球柵陣列(Ball Grid Array),能夠提供更多引腳,且引腳的平均導線長度短,具備高速傳遞信號的作用,其中,封裝可以用引腳網格陣列封裝(Pin Grid Array,PGA)、零插拔力(Zero Insertion Force,ZIF)、單邊接觸連接(Single Edge Contact Connection,SECC)、觸點陣列(Land Grid Array,LGA)等來代替。
可選的,採用倒裝芯片球柵陣列(Flip Chip Ball Grid Array)的封裝方式對神經網絡芯片111和第二基板113進行封裝,具體的神經網絡芯片封裝結構的示意圖可參照圖6。如圖6所示,上述神經網絡芯片封裝結構包括:神經網絡芯片21、焊盤22、焊球23、第二基板24、第二基板24上的連接點25、引腳26。
其中,焊盤22與神經網絡芯片21相連,通過在焊盤22和第二基板24上的連接點25之間焊接形成焊球23,將神經網絡芯片21和第二基板24連接,即實現了神經網絡芯片21的封裝。
引腳26用於與封裝結構的外部電路(例如,神經網絡處理器板卡10上的第一基板13)相連,可實現外部數據和內部數據的傳輸,便於神經網絡芯片21或神經網絡芯片21對應的神經網絡處理器對數據進行處理。對於引腳的類型和數量本披露也不作限定,根據不同的封裝技術可選用不同的引腳形式,並遵從一定規則進行排列。
可選的,上述神經網絡芯片封裝結構還包括絕緣填充物,置於焊盤22、焊球23和連接點25之間的空隙中,用於防止焊球與焊球之間產生干擾。
其中,絕緣填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干擾包含電磁干擾、電感干擾等。
可選的,上述神經網絡芯片封裝結構還包括散熱裝置,用於散發神經網絡芯片21運行時的熱量。其中,散熱裝置可以是一塊導熱性良好的金屬片、散熱片或散熱器,例如,風扇。
舉例來說,如圖6a所示,神經網絡芯片封裝結構11包括:神經網絡芯片21、焊盤22、焊球23、第二基板24、第二基板24上的連接點25、引腳26、絕緣填充物27、散熱膏28和金屬外殼散熱片29。其中,散熱膏28和金屬外殼散熱片29用於散發神經網絡芯片21運行時的熱量。
可選的,上述神經網絡芯片封裝結構11還包括補強結構,與焊盤22連接,且內埋於焊球23中,以增強焊球23與焊盤22之間的連接強度。
其中,補強結構可以是金屬線結構或柱狀結構,在此不做限定。
本披露對於第一電氣及非電氣裝置12的具體形式也不作限定,可參照第二電氣及非電氣裝置112的描述,即通過焊接的方式將神經網絡芯片封裝結構11進行封裝,也可以採用連接線連接或插拔方式連接第二基板113和第一基板13的方式,便於後續更換第一基板13或神經網絡芯片封裝結構11。
可選的,第一基板13包括用於擴展存儲容量的內存單元的介面等,例如:同步動態隨機存儲器(Synchronous Dynamic Random Access Memory,SDRAM)、雙倍速率同步動態隨機存儲器(Double Date Rate SDRAM,DDR)等,通過擴展內存提高了神經網絡處理器的處理能力。
第一基板13上還可包括快速外部設備互連總線(Peripheral Component Interconnect-Express,PCI-E或PCIe)介面、小封裝可熱插拔(Small Form-factor Pluggable,SFP)介面、以太網介面、控制器局域網總線(Controller Area Network,CAN)介面等等,用於封裝結構和外部電路之間的數據傳輸,可提高運算速度和操作的便利性。
將神經網絡處理器封裝為神經網絡芯片111,將神經網絡芯片111封裝為神經網絡芯片封裝結構11,將神經網絡芯片封裝結構11封裝為神經網絡處理器板卡10,通過板卡上的介面(插槽或插芯)與外部電路(例如:計算機主板)進行數據交互,即直接通過使用神經網絡處理器板卡10實現神經網絡處理器的功能,並保護神經網絡芯片111。且神經網絡處理器板卡10上還可添加其他模塊,提高了神經網絡處理器的應用範圍和運算效率。
在一個實施例裏,本公開公開了一個電子裝置,其包括了上述神經網絡處理器板卡10或神經網絡芯片封裝結構11。
電子裝置包括數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。
所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B型超音波掃描儀和/或心電圖儀。
以上所述的具體實施例,對本披露的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本披露的具體實施例而已,並不用於限制本披露,凡在本披露的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本披露的保護範圍之內。
A、B‧‧‧矩陣
P‧‧‧向量
S401b、S402b、S403b、S401、S402、S403、S404‧‧‧步驟
10‧‧‧神經網絡處理器板卡
11‧‧‧神經網絡芯片封裝結構
12‧‧‧第一電氣及非電氣連接裝置
13‧‧‧第一基板
111、21‧‧‧神經網絡芯片
112‧‧‧第二電氣及非電氣連接裝置
113、24‧‧‧第二基板
22‧‧‧焊盤
23‧‧‧焊球
25‧‧‧第二基板24上的連接點
26‧‧‧引腳
27‧‧‧絕緣填充物
28‧‧‧散熱膏
29‧‧‧金屬外殼散熱片
圖1a是一種神經網絡的正向運算示意圖。
圖1b為一種定點數據類型的示意結構圖。
圖2a為卷積輸入數據示意圖。
圖2b為卷積核示意圖。
圖2c為輸入數據的一個三維數據塊的運算窗口示意圖。
圖2d為輸入數據的一個三維數據塊的另一運算窗口示意圖。
圖2e為輸入數據的一個三維數據塊的又一運算窗口示意圖.
圖3是一種神經網絡芯片的結構示意圖。
圖4a為矩陣乘以矩陣示意圖。
圖4b為矩陣乘以矩陣的方法流程圖。
圖4c為矩陣乘以向量示意圖。
圖4d為矩陣乘以向量的方法流程圖。
圖5a為本披露還揭露了一個組合處理裝置結構示意圖。
圖5b為本披露還揭露了一個組合處理裝置另一種結構示意圖。
圖5c為本披露實施例提供的一種神經網絡處理器板卡的結構示意圖;
圖5d為本披露實施例流提供的一種神經網絡芯片封裝結構的結構示意圖;
圖6為本披露實施例流提供的一種神經網絡芯片封裝結構的示意圖;
圖6a為本披露實施例流提供的另一種神經網絡芯片封裝結構的示意圖。
Claims (16)
- 一種集成電路芯片裝置,其中,該集成電路芯片裝置用於執行一神經網絡正向運算,該神經網絡包含n層;該集成電路芯片裝置包括:一主處理電路、k個分支處理電路以及k組基礎處理電路,該主處理電路與該k個分支處理電路分別連接,該k個分支處理電路中每個分支處理電路對應該k組基礎處理電路中的一組基礎處理電路,該一組基礎處理電路包括至少一個基礎處理電路; 該分支處理電路包括:一數據類型運算電路,用於執行浮點類型數據與定點類型數據之間的轉換; 該主處理電路,用於接收一第一計算指令,解析該第一計算指令得到該第一計算指令在該正向運算的第i層包含的一第一運算指令以及該第一計算指令對應的一輸入數據以及一權值數據,該i的取值範圍為大於等於1小於等於n的整數,如該i大於等於2,該輸入數據為第i-1層的輸出數據; 該主處理電路,用於依據該輸入數據、該權值數據以及該第一運算指令確定該第一運算指令的第一複雜度,依據該第一複雜度確定該第一運算指令對應的第一數據類型,依據該第一複雜度確定是否向該k個分支處理電路發送開啓指令開啓該數據類型運算電路;該第一數據類型為浮點數據類型或定點數據類型; 該主處理電路,還用於依據該第一運算指令的類型將該第一數據類型的該輸入數據以及該第一數據類型的該權值數據劃分成一廣播數據塊以及一分發數據塊,對該分發數據塊進行拆分處理得到多個基本數據塊,將該多個基本數據塊分發至該k個分支處理電路中的至少一分支處理電路,將該廣播數據塊廣播至該k個分支處理電路; 該k個分支處理電路,用於在接收到開啓指令時,通過該數據類型運算電路將該廣播數據塊以及接收到的基本數據塊轉換成該第一數據類型的廣播數據塊和該第一數據類型的接收到的基本數據塊;將該第一數據類型的廣播數據塊和定點類型的接收到的基本數據塊轉發給該k組基礎處理電路; 該k組基礎處理電路,用於將該第一數據類型的廣播數據塊和該第一數據類型的接收到的基本數據塊以並行方式執行運算得到該第一數據類型的運算結果,並將運算結果發送至該k個分支處理電路; 該k個分支處理電路,用於通過該數據類型運算電路將該第一數據類型的運算結果轉換成一第二數據類型的運算結果,將該第二數據類型的運算結果發送至該主處理電路; 該主處理電路,用於對該第二數據類型的運算結果處理得到該第一運算指令的指令結果完成第i層包含的第一運算指令運算。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中, 該主處理電路,具體用於將該第一複雜度與一預設閾值比較,如該第一複雜度高於該預設閾值,確定該第一數據類型為定點類型,如該第一複雜度低於或等於該預設閾值,確定該第一數據類型為浮點類型。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中, 該主處理電路,具體用於確定該輸入數據以及該權值數據屬於第二數據類型,如該第二數據類型與該第一數據類型不同,向該k個分支處理電路發送一開啓指令,該開啓指令用於開啓該分支處理電路包括的數據類型運算電路。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中, 該主處理電路,具體用於如該第一運算指令為卷積運算指令,該輸入數據為一卷積輸入數據,該權值數據為一卷積核, 第一複雜度=α*C*kW*kW*M*N*W*C*H; 其中,α為卷積系數,取值範圍為大於1;C、kW、kW、M為該卷積核四個維度的值,N、W、C、H為該卷積輸入數據四個維度的值; 如該第一複雜度大於設定閾值,確定該卷積輸入數據以及該卷積核是否為浮點數據,如該卷積輸入數據以及該卷積核不為浮點數據,將該卷積輸入數據轉換成浮點數據,通知該k個分支處理電路將該卷積核轉換成浮點數據,然後將該卷積輸入數據、該卷積核以浮點數據類型執行卷積運算。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中, 該主處理電路,具體用於如該第一運算指令為:矩陣乘矩陣運算指令,該輸入數據為該矩陣乘矩陣運算的第一矩陣,該權值為該矩陣乘矩陣運算的第二矩陣; 第一複雜度=β*F*G*E*F;其中,β為矩陣系數,取值範圍為大於等於1,F、G為第一矩陣的行、列值,E、F為第二矩陣的行、列值; 如該第一複雜度大於設定閾值,確定該第一矩陣以及該第二矩陣是否為浮點數據,如該第一矩陣以及該第二矩陣不為浮點數據,通知該k個分支處理電路將該第一矩陣轉換成浮點數據,將該第二矩陣轉換成浮點數據,然後將該第一矩陣、該第二矩陣以浮點數據類型執行矩陣乘矩陣運算。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中, 該主處理電路,具體用於如該第一運算指令為:矩陣乘向量運算指令,該輸入數據為該矩陣乘向量運算的第一矩陣,該權值為該矩陣乘向量運算的向量; 第一複雜度=β*F*G*F;其中,β為矩陣系數,取值範圍為大於等於1,F、G為該第一矩陣的行、列值,F為該向量的列值; 如該第一複雜度大於設定閾值,確定該第一矩陣以及該向量是否為浮點數據,如該第一矩陣以及該向量不為浮點數據,通知該k個分支處理電路將該第一矩陣轉換成浮點數據,將該向量轉換成浮點數據,然後將該第一矩陣、該向量以浮點數據類型執行矩陣乘向量運算。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中, 該主處理電路,具體用於如該第一運算指令的類型為乘法指令,確定該輸入數據為分發數據塊,該權值數據為廣播數據塊;如該第一運算指令的類型為卷積指令,確定該輸入數據為廣播數據塊,該權值數據為分發數據塊。
- 根據申請專利範圍第1-7項任意一項的集成電路芯片裝置,其中, 該第i層還包括:偏執運算、全連接運算、GEMM運算、GEMV運算、激活運算中的一種或任意組合。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中, 該主處理電路包括:主寄存器或主片上緩存電路; 該基礎處理電路包括:基本寄存器或基本片上緩存電路。
- 根據申請專利範圍第9項的集成電路芯片裝置,其中, 該主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路或數據重排電路中的一種或任意組合。
- 根據申請專利範圍第9項的集成電路芯片裝置,其中, 該輸入數據為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合; 該權值數據為:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
- 一種神經網絡運算裝置,其中,該神經網絡運算裝置包括一個或多個如申請專利範圍第1-11項任意一項的集成電路芯片裝置。
- 一種組合處理裝置,其中,該組合處理裝置包括:如申請專利範圍第12項的神經網絡運算裝置、通用互聯介面和通用處理裝置; 該神經網絡運算裝置通過該通用互聯介面與該通用處理裝置連接。
- 一種芯片,其中,該芯片集成如申請專利範圍第1-13項任意一項的裝置。
- 一種智能設備,其中,該智能設備包括如申請專利範圍第14項的芯片。
- 一種神經網絡的運算方法,其中,該方法應用在集成電路芯片裝置內,該集成電路芯片裝置包括:如申請專利範圍第1-11項任意一項的集成電路芯片裝置,該集成電路芯片裝置用於執行該神經網絡的正向運算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711469857.8A CN109978131B (zh) | 2017-12-28 | 2017-12-28 | 集成电路芯片装置、方法及相关产品 |
CN201711469857.8 | 2017-12-28 | ||
??201711469857.8 | 2017-12-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201931215A true TW201931215A (zh) | 2019-08-01 |
TWI791725B TWI791725B (zh) | 2023-02-11 |
Family
ID=67075536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107147412A TWI791725B (zh) | 2017-12-28 | 2018-12-27 | 神經網絡運算方法、集成電路芯片裝置及相關產品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109978131B (zh) |
TW (1) | TWI791725B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI733334B (zh) * | 2020-02-15 | 2021-07-11 | 財團法人工業技術研究院 | 卷積神經網路運算裝置及其運算的方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993284B (zh) * | 2017-12-29 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN110458285B (zh) * | 2019-08-14 | 2021-05-14 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112491555B (zh) * | 2020-11-20 | 2022-04-05 | 山西智杰软件工程有限公司 | 医疗电子签名的处理方法及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3447653A4 (en) * | 2016-04-22 | 2019-11-13 | Cambricon Technologies Corporation Limited | SUBMATRIX OPERATING DEVICE AND METHOD |
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
KR102459854B1 (ko) * | 2016-05-26 | 2022-10-27 | 삼성전자주식회사 | 심층 신경망용 가속기 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
CN107229967B (zh) * | 2016-08-22 | 2021-06-15 | 赛灵思公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
-
2017
- 2017-12-28 CN CN201711469857.8A patent/CN109978131B/zh active Active
-
2018
- 2018-12-27 TW TW107147412A patent/TWI791725B/zh active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI733334B (zh) * | 2020-02-15 | 2021-07-11 | 財團法人工業技術研究院 | 卷積神經網路運算裝置及其運算的方法 |
CN113269298A (zh) * | 2020-02-15 | 2021-08-17 | 财团法人工业技术研究院 | 卷积神经网络运算装置及其运算的方法 |
US11423292B2 (en) | 2020-02-15 | 2022-08-23 | Industrial Technology Research Institute | Convolutional neural-network calculating apparatus and operation methods thereof |
Also Published As
Publication number | Publication date |
---|---|
CN109978131B (zh) | 2020-05-22 |
CN109978131A (zh) | 2019-07-05 |
TWI791725B (zh) | 2023-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI793225B (zh) | 神經網絡訓練方法及相關產品 | |
US11748605B2 (en) | Integrated circuit chip device | |
TWI791725B (zh) | 神經網絡運算方法、集成電路芯片裝置及相關產品 | |
CN109961136B (zh) | 集成电路芯片装置及相关产品 | |
US11507810B2 (en) | Integrated circuit chip apparatus | |
TWI768159B (zh) | 集成電路芯片裝置及相關產品 | |
TWI767098B (zh) | 神經網絡正向運算方法及相關產品 | |
TWI793224B (zh) | 集成電路芯片裝置及相關產品 | |
CN109977446B (zh) | 集成电路芯片装置及相关产品 | |
TWI767097B (zh) | 集成電路芯片裝置及相關產品 | |
CN109978157B (zh) | 集成电路芯片装置及相关产品 | |
CN109978156B (zh) | 集成电路芯片装置及相关产品 | |
CN109978148B (zh) | 集成电路芯片装置及相关产品 | |
TWI768160B (zh) | 集成電路芯片裝置及相關產品 | |
CN109978158B (zh) | 集成电路芯片装置及相关产品 | |
TWI795482B (zh) | 集成電路芯片裝置及相關產品 |