TWI786255B - 集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法 - Google Patents

集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法 Download PDF

Info

Publication number
TWI786255B
TWI786255B TW108100778A TW108100778A TWI786255B TW I786255 B TWI786255 B TW I786255B TW 108100778 A TW108100778 A TW 108100778A TW 108100778 A TW108100778 A TW 108100778A TW I786255 B TWI786255 B TW I786255B
Authority
TW
Taiwan
Prior art keywords
data block
processing circuit
data
basic
circuit
Prior art date
Application number
TW108100778A
Other languages
English (en)
Other versions
TW201937411A (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 TW201937411A publication Critical patent/TW201937411A/zh
Application granted granted Critical
Publication of TWI786255B publication Critical patent/TWI786255B/zh

Links

Images

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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Image Processing (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Credit Cards Or The Like (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

一種集成電路晶片裝置及相關產品,所述集成電路晶片裝置包括:主處理電路以及多個基礎處理電路;所述主處理電路包括第一映射電路,所述多個基礎處理電路中至少一個電路包括第二映射電路,所述第一映射電路以及所述第二映射電路均用於執行神經網絡運算中的各個數據的壓縮處理。本披露提供的技術方案具有計算量小,功耗低的優點。

Description

集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法
本披露涉及神經網絡領域,尤其涉及一種集成電路晶片裝置及相關產品。
人工神經網絡(Artificial Neural Network,ANN),是20世紀80年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象,建立某種簡單模型,按不同的連接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。現有的神經網絡的運算基於中央處理器(Central Processing Unit,CPU)或圖形處理器(Graphics Processing Unit,GPU)來實現神經網絡的運算,此種運算的計算量大,功耗高。
本披露實施例提供了一種集成電路晶片裝置及相關產品,可提升計算裝置的處理速度,提高效率。
第一方面,提供一種集成電路晶片裝置,所述集成電路晶片裝置包括:主處理電路以及多個基礎處理電路;所述主處理電路包括第一映射電路,所述多個基礎處理電路中至少一個電路(即部分或全部基礎處理電路)包括第二映射電路,所述第一映射電路以及所述第二映射電路均用於執行神經網絡運算中的各個數據的壓縮處理;所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及與所述基礎處理電路傳輸數據;所述多個基礎處理電路,用於依據所述主處理電路傳輸的數據以並行方式執行神經網絡中的運算,並將運算結果傳輸給所述主處理電路。
第二方面,提供一種神經網絡運算裝置,所述神經網絡運算裝置包括一個或多個第一方面提供的集成電路晶片裝置。
第三方面,提供一種組合處理裝置,所述組合處理裝置包括:第二方面提供的神經網絡運算裝置、通用互聯介面和通用處理裝置;所述神經網絡運算裝置通過所述通用互聯介面與所述通用處理裝置連接。
第四方面,提供一種晶片,所述晶片集成第一方面的裝置、第二方面的裝置或第三方面的裝置。
第五方面,提供一種電子設備,所述電子設備包括第四方面的晶片。
第六方面,提供一種神經網絡的運算方法,所述方法應用在集成電路晶片裝置內,所述集成電路晶片裝置包括:第一方面所述的集成電路晶片裝置,所述集成電路晶片裝置用於執行神經網絡的運算。
可以看出,通過本披露實施例,提供映射電路將數據塊壓縮處理後再進行運算,節省了傳輸資源以及計算資源,所以其具有功耗低,計算量小的優點。
S201、S202、S203、S204、S201b、S202b、S203b、S301、S302、S303、S304:步驟
A、B、Ai、Bi、S、P:矩陣
C:向量
圖1a是一種集成電路晶片裝置結構示意圖。
圖1b是另一種集成電路晶片裝置結構示意圖。
圖1c是一種基礎處理電路的結構示意圖。
圖2為一種矩陣乘以向量流程示意圖。
圖2a是矩陣乘以向量的示意圖。
圖2b為一種矩陣乘以矩陣流程示意圖。
圖2c是矩陣Ai乘以向量C的示意圖。
圖2d是矩陣S乘以矩陣P的示意圖。
圖2e是矩陣Ai乘以矩陣Bi的示意圖。
圖3a為神經網絡訓練示意圖。
圖3b為卷積運算示意圖。
圖4a-圖4b為本申請實施例提供的兩種映射電路的結構示意圖。
為了使本技術領域的人員更好地理解本披露方案,下面將結合本披露實施例中的圖式,對本披露實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本披露一部分實施例,而不是全部的實施例。基於本披露中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本披露保護的範圍。
在第一方面提供的裝置中,所述集成電路晶片裝置還包括:分支處理電路,所述分支處理電路設置在主處理電路與至少一個基礎處理電路之間;所述分支處理電路,用於在主處理電路與至少一個基礎處理電路之間轉發數據。
在第一方面提供的裝置中,所述主處理電路用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為分發數據塊和廣播數據塊;將所述分發數據塊和預存的所述分發數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及所述多個基本數據塊各自關聯的標識數據塊;將所述多個基本數據塊以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路;將所述廣播數據塊以及該廣播數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路。其中,所述標識數據塊具體可用直接索引或者步長索引的方式來表示,可選的還可用列表的列表(List of Lists,LIL)、坐標列表(Coordinate list,COO)、壓縮稀疏行(Compressed Sparse Row,CSR)、壓縮稀疏列(Compressed Sparse Column,CSC)、(ELL Pack,ELL)以及混合(Hybird,HYB)等方式表示,本申請不做限定。
以所述標識數據塊用直接索引的方式表示為例,所述標識數據塊具體可為是由0和1構成的數據塊,其中,0表示數據塊中包含的數據(如權值或輸入神經元)的絕對值小於或等於第一閾值,1表示數據塊中包含的數據 (如權值或輸入神經元)的絕對值大於第一閾值,第一閾值為用戶側或裝置側自定義隨機設置的,例如0.05、0等等。
為節省數據傳輸量、提高數據傳輸效率,在所述主處理電路向所述基礎處理電路發送數據的過程中,具體可將所述多個基本數據塊中的目標數據以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路;可選,還可將所述處理後的廣播數據塊中的目標數據以及該廣播數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路。其中,所述目標數據是指數據塊中絕對值大於第一閾值的數據,或者是指數據塊(這裡具體可為處理後的分發數據塊或處理後的廣播數據塊)中的非0數據。
相應地,所述基礎處理電路用於啟動所述第二映射電路根據所述廣播數據塊關聯的標識數據塊和所述基本數據塊關聯的標識數據獲得連接標識數據塊;根據所述連接標識數據塊對所述廣播數據塊和所述基本數據塊進行處理得到處理後的廣播數據塊和基本數據塊;對所述處理後的廣播數據塊和基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路; 所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
例如,分發數據塊為M1行N1列的矩陣,基本數據塊為M2行N2列的矩陣,其中M1>M2,N1>N2。相應地,該分發數據塊關聯的標識數據塊同樣也為M1行N1列的矩陣,該基本數據塊關聯的標識數據塊同樣為M2行N2列的矩陣。以基本數據塊為2*2的矩陣為例,設為
Figure 108100778-A0305-02-0006-1
,第一閾值為0.05,則 該基本數據塊關聯的標識數據塊為
Figure 108100778-A0305-02-0007-2
。關於第一映射電路和第二映射電路對數據塊的處理將在後文進行具體闡述。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為分發數據塊和廣播數據塊;啟動所述第一映射電路對所述分發數據塊和所述廣播數據塊進行處理得到處理後的分發數據塊以及該分發數據塊關聯的標識數據塊,處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊;將所述處理後的分發數據塊以及該分發數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及所述基本數據塊各自關聯的標識數據塊,將所述多個基本數據塊以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路,將所述廣播數據塊以及該廣播數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路; 所述基礎處理電路,用於啟動所述第二映射電路根據所述廣播數據塊關聯的標識數據塊和所述基本數據塊關聯的標識數據獲得連接標識數據塊;根據所述連接標識數據塊對所述廣播數據塊和所述基本數據塊進行處理得到處理後的廣播數據塊和基本數據塊;對所述處理後的廣播數據塊和基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路; 所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在可選實施例中,所述主處理電路,還具體用於將所述廣播數據塊或處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊進行拆分處理 得到多個部分廣播數據塊以及所述多個部分廣播數據塊各自關聯的標識數據塊;將所述多個部分廣播數據塊以及所述多個部分廣播數據塊各自關聯的標識數據塊通過一次或多次廣播給所述基礎處理電路;其中,所述多個部分廣播數據塊組合形成所述廣播數據塊或處理後的廣播數據塊。
相應地,所述基礎處理電路,具體用於啟動所述第二映射電路根據所述部分廣播數據塊關聯的標識數據塊以及所述基本數據塊關聯的標識數據塊得到連接標識數據塊;根據所述連接標識數據對所述部分廣播數據塊以及所述基本數據塊進行處理得到處理後的部分廣播數據塊以及處理後的基本數據塊;對所述處理後的部分廣播數據塊以及所述處理後的基本數據塊執行內積運算。
其中,該連接標識數據塊是通過對所述基本數據塊關聯的標識數據塊和所述部分廣播數據塊關聯的標識數據塊進行逐元素與操作而獲得的數據塊。可選的,該連接標識數據塊用於表示兩個數據塊(具體為基本數據塊以及廣播數據塊)中數據均大於絕對值的數據。具體在後文進行詳述。
例如,分發數據塊關聯的標識數據塊為2*3的矩陣
Figure 108100778-A0305-02-0008-3
,部分廣播數據塊關聯的標識數據塊為2*2的矩陣
Figure 108100778-A0305-02-0008-4
,則對應獲得的連接標識數據塊為
Figure 108100778-A0305-02-0008-5
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為分發數據塊和廣播數據塊;啟動所述第一映射電路對所述分發數據塊進行處理得到 處理後的分發數據塊以及該分發數據塊關聯的標識數據塊,或者啟動所述第一映射電路根據預存的所述分發數據塊關聯的標識數據塊對所述分發數據塊進行處理得到處理後的分發數據塊;將所述處理後的分發數據塊以及該分發數據塊關聯的標識數據塊進行拆分處理得到多個基本數據塊以及所述基本數據塊各自關聯的標識數據塊,將所述多個基本數據塊以及所述多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路,將所述廣播數據塊廣播至與其連接的基礎處理電路;所述基礎處理電路,用於啟動所述第二映射電路根據所述基本數據塊關聯的標識數據塊對所述廣播數據塊進行處理,得到處理後的廣播數據塊;對所述處理後的廣播數據塊和所述處理後的基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在可選實施例中,所述主處理電路,還具體用於將所述廣播數據塊進行拆分處理得到多個部分廣播數據塊;將所述多個部分廣播數據塊通過一次或多次廣播給所述基礎處理電路;其中,所述多個部分廣播數據塊組合形成所述廣播數據塊或處理後的廣播數據塊。
相應地,所述基礎處理電路具體用於根據所述基本數據塊關聯的標識數據塊對所述部分廣播數據塊進行處理得到處理後的部分廣播數據塊;對所述基本數據塊以及所述處理後的部分廣播數據塊執行內積運算。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據所述運算指令將所述待計算的數據塊劃分為分發 數據塊和廣播數據塊;啟動所述第一映射電路對所述廣播數據塊進行處理,得到處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊,或者啟動所述第一映射電路根據預存的所述廣播數據塊關聯的標識數據塊對所述廣播數據塊進行處理得到處理後的廣播數據塊;對所述分發數據塊進行拆分處理得到多個基本數據塊;將所述多個基本數據塊分發至與其連接的基礎處理電路,將所述處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路;所述基礎處理電路,用於啟動所述第二映射電路根據所述廣播數據塊關聯的標識數據塊對所述基本數據塊進行處理得到處理後的基本數據塊;對所述處理後的廣播數據塊和所述處理後的基本數據塊執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在可選實施例中,所述主處理電路,還具體用於將所述處理後的廣播數據塊和該廣播數據塊關聯的標識數據塊進行拆分處理得到多個部分廣播數據塊以及所述多個部分廣播數據塊關聯的標識數據塊;將所述多個部分廣播數據塊以及所述多個部分廣播數據塊各自關聯的標識數據塊通過一次或多次廣播給所述基礎處理電路;其中,所述多個部分廣播數據塊組合形成所述廣播數據塊或處理後的廣播數據塊。
相應地,所述基礎處理電路具體用於根據所述部分廣播數據塊關聯的標識數據塊對所述基本數據塊進行處理得到處理後的基本數據塊;對所述處理後的基本數據塊以及所述部分廣播數據塊執行內積運算。
在第一方面提供的裝置中,所述主處理電路,具體用於將該廣播數據塊(具體可為所述廣播數據塊或者處理後的廣播數據塊)通過一次廣播發送至與其連接的所述基礎處理電路。
在第一方面提供的裝置中,所述基礎處理電路,具體用於將該基本數據塊(同理可為所述基本數據塊或處理後的基本數據塊)與該廣播數據塊執行內積處理得到內積處理結果,將所述內積處理結果累加得到運算結果,將所述運算結果發送至所述主處理電路。
在第一方面提供的裝置中,所述主處理電路,用於在如所述運算結果為內積處理的結果時,對所述運算結果累加後得到累加結果,將該累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述基礎處理電路;所述多個部分廣播數據塊組合形成所述廣播數據塊。
在第一方面提供的裝置中,所述基礎處理電路,具體用於將該部分廣播數據塊(具體可為部分廣播數據塊或者處理後的部分廣播數據塊)與該基本數據塊執行一次內積處理後得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果發送至所述主處理電路。
在第一方面提供的裝置中,所述基礎處理電路,具體用於復用n次該部分廣播數據塊執行該部分廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果發送至主處理電路,所述n為大於等於2的整數。
在第一方面提供的裝置中,所述主處理電路包括:主寄存器或主片上緩存電路;所述基礎處理電路包括:基本寄存器或基本片上緩存電路。
在第一方面提供的裝置中,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路、第一映射電路或數據重排電路中的一種或任意組合。
在第一方面提供的裝置中,所述分支處理電路包含多個分支處理電路,所述主處理電路與所述多個分支處理電路分別連接,每個分支處理電路與至少一個基礎處理電路連接。
在第一方面提供的裝置中,所述基礎處理電路,還具體用於將該廣播數據塊和基本數據塊轉發給其他基礎處理電路以先進行數據處理再執行內積運算得到運算結果,將所述運算結果發送至所述主處理電路;所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述數據塊可用張量表示,其具體可以是向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
在第一方面提供的裝置中,如所述運算指令為乘法指令,所述主處理電路確定乘數數據塊為廣播數據塊,被乘數數據塊為分發數據塊;如所述運算指令為卷積指令,所述主處理電路確定輸入數據塊為廣播數據塊,卷積核為分發數據塊。
在第六方面提供的方法中,所述神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏置運算、全連接運算、通用矩陣乘法 (General Matrix Multiplication,GEMM)運算、通用矩陣向量乘法(General Matrix Vector Multiplication,GEMV)運算、激活運算中的一種或任意組合。
參閱圖1a,圖1a為一種集成電路晶片裝置的結構示意圖,如圖1a所示,該晶片裝置包括:主處理電路、基本處理電路和分支處理電路(可選的)。其中,主處理電路可以包括寄存器和/或片上緩存電路,該主處理電路還可以包括:控制電路、向量運算器電路、算數邏輯單元(arithmetic and logic unit,ALU)電路、累加器電路、直接內存存取(Direct Memory Access,DMA)電路等電路,當然在實際應用中,上述主處理電路還可以添加,轉換電路(例如矩陣轉置電路)、數據重排電路或激活電路等等其他的電路;可選的,主處理電路可以包括:第一映射電路,第一映射電路可以用於對接收或發送的數據進行處理,以得到處理後的數據以及該數據關聯的標識mask數據,該標識mask數據用於指示該數據的絕對值是否大於預設閾值,可選的,該mask數據可為0或1,其中0表示數據的絕對值小於或等於預設閾值;反之,1表示數據的絕對值大於預設閾值。該預設閾值為用戶側或終端設備側自定義設置的,例如0.1或0.05等等。在實際應用中,通過第一映射電路可將數據為0或者不大於預設閾值(如0.1)的數據進行剔除,或將這些數據置為0。其優點是,減少主處理電路向基礎處理電路傳輸的數據量、減少基礎處理電路中數據運算的計算量,提升數據處理效率。本發明並不限制上述第一映射電路的具體形式。關於所述第一映射電路的具體實現將在下文進行闡述。
例如,主處理電路的輸入數據為矩陣數據塊
Figure 108100778-A0305-02-0014-6
,經過第一映射電路處理後可獲得處理後的矩陣數據塊為
Figure 108100778-A0305-02-0014-7
,該矩陣數據塊關聯的標識數據塊為
Figure 108100778-A0305-02-0014-9
。關於第一映射電路的具體處理將在後文進行詳述。
相應地,在主處理電路向基礎處理電路分發數據時,可僅發送1和0.5這兩個數據,並非發送處理後的矩陣數據塊,8個數據;同時還需將該矩陣數據塊關聯的標識數據塊一起發送給基礎處理電路,以便基礎處理電路根據接收的標識數據塊和接收的兩個數據(1和0.5),對應獲知這兩個數據位於原矩陣數據塊的位置。即是,所述基礎處理電路可根據接收的標識數據塊以及接收的數據,對應還原出主處理電路中處理後的矩陣數據塊。
主處理電路還包括數據發送電路、數據接收電路或介面,該數據發送電路可以集成數據分發電路以及數據廣播電路,當然在實際應用中,數據分發電路以及數據廣播電路也可以分別設置;在實際應用中上述數據發送電路以及數據接收電路也可以集成在一起形成數據收發電路。對於廣播數據,即需要發送給每個基礎處理電路的數據。對於分發數據,即需要有選擇的發送給部分基礎處理電路的數據,具體的選擇方式可以由主處理電路依據負載以及計算方式進行具體的確定。對於廣播發送方式,即將廣播數據以廣播形式發送至每個基礎處理電路。(在實際應用中,通過一次廣播的方式將廣播數據發送至每個基礎處理電路,也可以通過多次廣播的方式將廣播數據發送至每個基礎處理電路,本申請具體實施方式並不限制上述廣播的次數),對於分發發送方式,即將分發數據有選擇的發送給部分基礎處理電路。
在實現分發數據時,主處理電路的控制電路向部分或者全部基礎處理電路傳輸數據(該數據可以相同,也可以不同,具體的,如果採用分發的方式發送數據,各個接收數據的基礎處理電路收到的數據可以不同,當然也可以有部分基礎處理電路收到的數據相同;具體地,廣播數據時,主處理電路的控制電路向部分或者全部基礎處理電路傳輸數據,各個接收數據的基礎處理電路可以收到相同的數據。
可選的,上述主處理電路的向量運算器電路可以執行向量運算,包括但不限於:兩個向量加減乘除,向量與常數加、減、乘、除運算,或者對向量中的每個元素執行任意運算。其中,連續的運算具體可以為,向量與常數加、減、乘、除運算、激活運算、累加運算等等。
每個基礎處理電路可以包括基礎寄存器和/或基礎片上緩存電路;每個基礎處理電路還可以包括:內積運算器電路、向量運算器電路、累加器電路等中一個或任意組合。上述內積運算器電路、向量運算器電路、累加器電路都可以是集成電路,上述內積運算器電路、向量運算器電路、累加器電路也可以為單獨設置的電路。
該晶片裝置可選的還可以包括一個或多個分支處理電路,如具有分支處理電路時,其中主處理電路與分支處理電路連接,該分支處理電路與基本處理電路連接,該基本處理電路的內積運算器電路用於執行數據塊之間的內積運算,該主處理電路的控制電路控制數據接收電路或數據發送電路收發外部數據,以及通過控制電路控制數據發送電路將外部數據分發至分支處理電路,該分支處理電路用於收發主處理電路或基本處理電路的數據。如圖1a所示的結構適合複雜數據的計算,因為對於主處理電路來說,其連接的單元的數量 有限,所以需要在主處理電路與基本處理電路之間添加分支處理電路以實現更多的基本處理電路的接入,從而實現對複雜數據塊的計算。分支處理電路和基礎處理電路的連接結構可以是任意的,不局限在圖1a的H型結構。可選的,主處理電路到基礎處理電路是廣播或分發的結構,基礎處理電路到主處理電路是收集(gather)的結構。廣播,分發和收集的定義如下,對於分發或廣播結構,此時的基礎處理電路的數量大於主處理電路,即1個主處理電路對應多個基礎處理電路,即從主處理電路到多個基礎處理電路為廣播或分發的結構,反之,從多個基礎處理電路到主處理電路可以為收集結構。
基礎處理電路,接收主處理電路分發或者廣播的數據保存到基礎處理電路的片上緩存中,可以進行運算產生結果,可以向主處理電路發送數據。可選的,基礎處理電路還可先對接收的數據進行處理,將處理後的數據保存至片上緩存中,還可利用處理後的數據進行運算產生結果,可選的還可將處理後的數據發送給其他基礎處理電路或主處理電路等,本申請不做限定。
可選的,每個基礎處理電路均可以包括第二映射電路,也可以在部分基礎處理電路中配置第二映射電路;第二映射電路可以用於對接收或發送的數據進行處理(即壓縮處理)。本發明並不限制上述第二映射電路的具體形式。關於第二映射電路的具體實施將在下文進行詳述。
可選的,該基礎處理電路的向量運算器電路可以對兩個向量(兩個向量中的任一個或兩個均可為處理後的向量)執行的向量運算,當然在實際應用中,基礎處理電路的內積運算器電路可以對兩個向量執行內積運算,累加器電路也可以對內積運算的結果進行累加。
在一種可選方案中,兩個向量可以存放在片上緩存和/或寄存器中,基礎處理電路可以根據實際計算的需要提取兩個向量執行運算。該運算包括但不限於:內積運算、乘法運算、加法運算或其他的運算。
在一種可選方案中,內積運算的結果可以累加到片上緩存和/或寄存器上;其可選方案的優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了運算效率,降低了數據傳輸功耗。
在一種可選方案中,內積運算的結果不進行累加,直接作為結果傳輸;此技術方案的優點是,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
在一種可選方案中,每個基礎處理電路可以執行多組兩個向量的內積運算,也可以對多組內積運算的結果分別進行累加;在一種可選方案中,多組的兩個向量數據可以存放在片上緩存和/或寄存器中;在一種可選方案中,多組內積運算的結果可以分別累加到片上緩存和/或寄存器中;在一種可選方案中,各組內積運算的結果可以不進行累加,直接作為結果傳輸;在一種可選方案中,每個基礎處理電路可以執行同一個向量與多個向量分別進行內積運算的操作(「一對多」內積,即多組內積裏每組的兩個向量中有一個向量是共享的),並將每個向量對應的內積結果分別進行累加。此技術方案可以實現同一套權值對不同的輸入數據進行多次計算,增加了數據復用,減少基礎處理電路內部數據的數據傳輸量,提高計算效率,降低功耗。
具體地,計算內積使用的數據中,各組共享的向量和每組的另一個向量(即每組之間不同的那個向量)的數據來源可以不同:在一種可選方案中,在計算內積時,各組共享的向量來自主處理電路或者分支處理電路的廣播或者分發;在一種可選方案中,在計算內積時,各組共享的向量來自片上緩存;在一種可選方案中,在計算內積時,各組共享的向量來自寄存器;在一種可選方案中,在計算內積時,每組的另一個非共享向量來自主處理電路或者分支處理電路的廣播或者分發;在一種可選方案中,在計算內積時,每組的另一個非共享向量來自從片上緩存;在一種可選方案中,在計算內積時,每組的另一個非共享向量來自寄存器;在一種可選方案中,在進行多組的內積運算時,每組共享的向量在基礎處理電路的片上緩存和/寄存器中保留任意份數;在一種可選方案中,共享向量可以對應每組內積各保留一份;在一種可選方案中,共享向量可以只保留一份;具體地,多組內積運算的結果可以分別累加到片上緩存和/或寄存器中;具體地,各組內積運算的結果可以不進行累加,直接作為結果傳輸; 在一種可選方案中,基礎處理電路中涉及的向量或矩陣可為經過第二映射電路處理後的向量或矩陣,具體將在後文闡述。
參閱圖1a所示的結構,其包含一主處理電路(可以執行向量操作),多基礎處理電路(可以執行內積操作)。這樣組合的好處是:裝置不僅能使用基礎處理電路執行矩陣和向量乘法運算,也能使用主處理電路執行其他任意的向量運算,使裝置在有限的硬件電路的配置下,能夠更快的完成更多的運算,減少了與裝置外部進行數據傳輸的次數,提高了計算效率,降低了功耗。另外,本晶片在主處理電路中可設置第一映射電路,以執行神經網絡中數據的處理,如將小於或等於預設閾值的第一輸入數據剔除,同時還可得到該第一輸入數據對應關聯的標識mask數據,該mask數據用於表示第一輸入數據的絕對值是否大於預設閾值。具體可參見前述實施例所述,這裡不再贅述。這樣設計的優點,可減少向基礎處理電路傳輸的數據量,減少基礎處理電路數據的計算量,提高數據處理速率、降低功耗。
在基礎處理電路中可設置第二映射電路,以執行神經網絡中數據的處理,例如根據第一輸入數據關聯的mask數據對第二輸入數據進行處理或者根據第一輸入數據關聯的mask數據和第二輸入數據關聯的mask數據選取絕對值大於預設閾值的第一輸入數據和第二輸入數據執行相應的運算操作的等等。關於第一映射電路和第二映射電路對數據的具體處理可參見後文詳述。
可選的,所述第一映射電路和所述第二映射電路均用於對數據進行處理,其具體可設計到以下電路中的任一項或多項中:主處理電路、分支處理電路以及基礎處理電路等。這樣在進行神經網絡計算時能夠減少計算的數據量,並且本晶片可以依據各個電路(主要是主處理電路和基礎處理電路)的 運算量(即負載量)動態的分配由哪個電路來進行數據壓縮處理,這樣能夠減少數據計算的複雜程式,降低功耗,並且動態的分配數據處理能夠實現不影響晶片的計算效率。該分配的方式包括但不限於:負載均衡、負載最小值分配等等方式。
參閱圖1b所示的裝置,圖1b所示的裝置為無分支處理電路的計算裝置,如圖1b所示的裝置,其包括:主處理電路以及N個基礎處理電路,其中,主處理電路(具體的結構如圖1c所示)與N個基礎處理電路可以直接或間接連接,如為間接連接的方式時,一種可選的方案如圖1a所示可以包括N/4個分支處理電路,每個分支處理電路分別連接4個基礎處理電路,對於主處理電路以及N個基礎處理電路分別包含的電路可以參見上述如圖1a所示的描述,這裡不再贅述,這裡需要說明的是,上述基礎處理電路還可以設置在分支處理電路內,另外,每個分支處理電路連接基礎處理電路的數量也可以不局限於4個,廠家可以根據實際需要進行配置。該上述主處理電路和N個基礎處理電路中可分別設計有第一映射電路和第二映射電路,具體的,可以是主處理電路包括第一映射電路,所述N個基礎處理電路或其中的一部分包括第二映射電路;也可以是主處理電路包括第一映射電路和第二映射電路,還可以是指所述N個基礎處理電路或其中的一部分包括第一映射電路和第二映射電路。上述主處理電路可以根據神經網絡計算指令動態的分配數據壓縮處理步驟的操作實體,具體的,主處理電路可以根據自身的負載確定是否對接收到的數據執行壓縮處理步驟,具體的,可以將負載的值設置多個區間,每個區間對應分配數據壓縮處理步驟的執行主體,例如,以3個區間為例,區間1的負載值較低,可以由N個基礎處理電路執行數據壓縮處理步驟。主處理電路單獨執行數據壓縮處理步驟,區間2負載值位於區間1以及區間3之 間,可以由主處理電路單獨執行數據壓縮處理步驟,區間3負載值較高,可以由主處理電路或N個基礎處理電路共同執行數據壓縮處理步驟。對此,可以以明示的方式來執行,例如主處理電路可以配置一個特殊指示或指令,當基礎處理電路接收到該特殊指示或指令時,確定執行數據壓縮處理步驟,如基礎處理電路未接收到特殊指示或指令時,確定不執行數據壓縮處理步驟。又如,可以以暗示的方式來執行,例如,基礎處理電路接收到稀疏數據(即含0,或包括小於預設閾值的數據大於預設數量)且確定需要執行內積運算時,將該稀疏數據進行壓縮處理。
本申請涉及的數據壓縮處理具體在前文所述的第一映射電路和第二映射電路中執行。應理解的,由於神經網絡是一個高計算量和高訪存的算法,權值越多,計算量和訪存量都會增大。特別是,針對權值較小(如為0,或小於設定數值的權值)的情況下,為提高計算速率、減小開銷需對這些權值較小的數據進行壓縮處理。在實際應用中,數據壓縮處理在稀疏神經網絡中應用,效果最為明顯,如減小數據計算的工作量、減小數據額外開銷,提高數據計算速率等。
以輸入數據為例,闡述數據壓縮處理涉及的具體實施例。所述輸入數據包括但不限於至少一個輸入神經元和/或至少一個權值。
第一實施例中:
第一映射電路接收到第一輸入數據(具體可為主處理電路發送的待計算的數據塊,如分發數據塊或者廣播數據塊等)後,所述第一映射電路可對所述第一輸入數據進行處理,以獲得處理後的第一輸入數據以該第一輸入 數據關聯的標識mask數據,該mask數據用於指示該第一輸入數據的絕對值是否大於第一閾值,如0.5、0等等。
具體的,當所述第一輸入數據的絕對值大於第一閾值,則保留該輸入數據;否則刪除該第一輸入數據或將該第一輸入數據置為0。例如,輸入的矩陣數據塊為
Figure 108100778-A0305-02-0022-10
,第一閾值為0.05,則經過第一映射電路處理後可獲得處理後的矩陣數據塊
Figure 108100778-A0305-02-0022-11
,與該矩陣數據塊關聯的標識數據塊(也可稱為mask矩陣)為
Figure 108100778-A0305-02-0022-12
進一步地,為減少數據傳輸量,所述主處理電路再向與其連接的基礎處理電路中分發數據時,可發送所述處理後的矩陣數據塊中的目標數據(本例中即為1,0.06和0.5)以及該矩陣數據塊關聯的標識數據塊。具體實施時,所述主處理電路可按照設定規則將所述處理後的矩陣數據塊中的目標數據分發至基礎處理電路中,例如按照行順序依次發送或者按照列順序依次等等,本申請不做限定。相應地,基礎處理電路在接收到所述目標數據以及該目標數據對應關聯的標識數據塊後,按照設定規則(例如行順序)將其還原為處理後的矩陣數據塊。例如本例中,基礎處理電路可根據接收的數據(1,0.06和0.5)以及標識數據塊
Figure 108100778-A0305-02-0022-32
,可獲知該數據對應的矩陣數據塊(即主處理電路中第一映射電路處理後的矩陣數據塊)為
Figure 108100778-A0305-02-0022-33
在本發明實施例中,該第一輸入數據可為分發數據塊和/或廣播數據塊。
相應地,第二映射電路可利用第一輸入數據關聯的標識數據對第二輸入數據進行處理,從而獲得處理後的第二輸入數據;其中第一輸入數據與所述第二輸入數據不同。例如當所述第一輸入數據為至少一個權值時,則所述第二輸入數據可為至少一個輸入神經元;或者,當所述第一輸入數據為至少一個輸入神經元時,則所述第二輸入數據可為至少一個權值。
在本發明實施例中,該第二輸入數據與所述第一輸入數據不同,所述第二輸入數據可為以下中的任一個:分發數據塊、基本數據塊、廣播數據塊以及部分廣播數據塊。
例如,當所述第一輸入數據為分發數據塊時,則第二輸入數據為部分廣播數據塊。假設第二輸入數據為矩陣數據塊
Figure 108100778-A0305-02-0023-13
,相應地利用上例中mask矩陣
Figure 108100778-A0305-02-0023-14
處理後,獲得處理後的部分廣播數據塊為
Figure 108100778-A0305-02-0023-15
。由於在實際應用中,輸入數據涉及的矩陣數據塊維數較大,本申請這裡僅為示意,本不構成限定。
第二實施例中:
所述第一映射電路可用於對第一輸入數據和第二輸入數據進行處理,以得到處理後的第一輸入數據以及所述第一輸入數據關聯的第一標識mask數據、處理後的第二輸入數據以及所述第二輸入數據關聯的第二標識mask數據。其中,所述第一mask數據或者第二mask數據用於指示第一或第二輸入數據的絕對值是否大於第二閾值,該第二閾值為用戶側或裝置側自定義設置的,例如0.05、0等等。
所述處理後的第一輸入數據或第二輸入數據可為處理後的輸入數據,也可為未處理前的輸入數據。例如,第一輸入數據為分發數據塊,如上述例子中的矩陣數據塊
Figure 108100778-A0305-02-0024-16
。經過第一映射電路處理後可獲得處理後的分發數據塊,這裡處理後的分發數據塊可為原矩陣數據塊
Figure 108100778-A0305-02-0024-17
,也可為壓縮處理後的矩陣數據塊
Figure 108100778-A0305-02-0024-19
。應理解的,本申請為減少數據量的傳輸以及基礎處理電路中數據處理效率,優選地所述處理後的輸入數據(如處理後的基本數據塊或部分廣播數據塊等)應為壓縮處理後的數據。優選地,主處理電路向基礎處理電路中發送的數據,具體可為所述處理後的輸入數據中的目標數據,該目標數據具體可為絕對值大於預設閾值的數據,也可為非0數據等等。
相應地在基礎處理電路中,第二映射電路可根據所述第一輸入數據關聯的第一標識數據以及所述第二輸入數據關聯的第二標識數據得到連接標識數據;該連接標識數據用於指示所述第一輸入數據和所述第二輸入數據中絕對值均大於第三閾值的數據,其中第三閾值為用戶側或裝置側自定義設置的,如0.05、0等。進一步地,所述第二映射電路可根據所述連接標識數據分別對接收的第一輸入數據和第二輸入數據進行處理,從而獲得處理後的第一輸入數據和處理後的第二輸入數據。
例如,第一輸入數據為矩陣數據塊
Figure 108100778-A0305-02-0024-20
,第二輸入數據塊同樣也為矩陣數據塊
Figure 108100778-A0305-02-0024-21
。經過第一映射電路處理後可 獲得該第一輸入數據關聯的第一標識數據塊
Figure 108100778-A0305-02-0025-22
,以及處理後的第一輸入數據塊
Figure 108100778-A0305-02-0025-23
;相應地獲得該第二輸入數據關聯的第二標識數據塊
Figure 108100778-A0305-02-0025-24
,處理後的第二輸入數據塊為
Figure 108100778-A0305-02-0025-25
。相應地,為提高數據傳輸速率,主處理電路中僅可將處理後的第一輸入數據塊中的目標數據1,0.06和0.5、以及該第一輸入數據塊關聯的第一標識數據塊發送給基礎處理電路;同時,將處理後的第二輸入數據塊中的目標數據1,1.1,0.6,0.3和0.5,以及該第二輸入數據塊關聯的第二標識數據塊發送給基礎處理電路。
相應地,基礎處理電路在接收到上述數據後,可通過第二映射電路對上述第一標識數據塊和第二標識數據塊進行逐元素與操作,得到連接標識數據塊
Figure 108100778-A0305-02-0025-26
。相應地,第二映射電路利用該連接標識數據塊分別對所述處理後的第一輸入數據塊和處理後的第二輸入數據塊分別進行處理,從而獲得處理後的第一輸入數據塊為
Figure 108100778-A0305-02-0025-27
,處理後的第二輸入數據塊為
Figure 108100778-A0305-02-0025-28
。其中,在基礎處理電路中可根據第一標識數據塊以及接收的第一數據塊中的目標數據,確定出該目標數據對應所在的第一數據塊(即經過第一映射電路處理後的第一數據塊);相應地,根據第二標識數據塊以及接收的第二數據塊中的目標數據,確定出該目標數據對應所在的第二數據塊(即經過第一映射電路處理後的第二數據塊);然後,在第二映射電路獲知連接標識數據塊後,利用該連接標識數據塊分別與確定的第一數據塊和確定的第二數據塊 進行逐元素與操作,以獲得經由第二映射電路處理後的第一數據塊和處理後的第二數據塊。
第三實施例中:
所述主處理電路中並不會設置第一映射電路,但所述主處理電路可將第三輸入數據以及預存的所述第三輸入數據關聯的第三標識數據發送至與其連接的基礎處理電路中。該基礎處理電路中設置有第二映射電路。下面闡述第二映射電路涉及的數據壓縮處理的具體實施例。
應理解的,所述第三輸入數據包括但不限於基礎數據塊、部分廣播數據塊、廣播數據塊等。同樣地,在神經網絡處理器中,該第三輸入數據也可為至少一個權值,和/或至少一個輸入神經,本申請不做限定。
在第二映射電路中,所述第二映射電路可根據接收的第三輸入數據關聯的第三標識數據對所述第三輸入數據進行處理,從而獲得處理後的第三輸入數據,以便後續對處理後的第三輸入數據執行相關運算操作,如內積運算等。
例如,第二映射電路接收的第三輸入數據為矩陣數據塊
Figure 108100778-A0305-02-0026-29
,相應地預存的該第三輸入數據關聯的第三標識數據塊(也成mask矩陣數據塊)為
Figure 108100778-A0305-02-0026-30
。進一步地,第二映射電路根據第三標識數據塊對第三輸入數據塊進行處理得到處理後的第三輸入數據塊具體為
Figure 108100778-A0305-02-0026-31
此外,本發明實施例中提到的輸入神經元和輸出神經元並非是指整個神經網絡的輸入層中的神經元和輸出層中的神經元,而是對於神經網絡中任意相鄰的兩層神經元,處於網絡前饋運算下層中的神經元即為輸入神經元,處於網絡前饋運算上層中的神經元即為輸出神經元。以卷積神經網絡為例,假設一個卷積神經網絡有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所示的功能部件進行交叉組合或部件拆分,本申請不做限定。
下面提供一種採用如圖1a所示神經網絡的正向運算,神經網的裝置實現計算的方法,該計算的方法具體可以為神經網絡的計算方式,例如神經網絡的訓練,在實際應用中,正向運算依據不同的輸入數據可以執行矩陣乘矩陣、卷積運算、激活運算、變換運算等等運算,上述運算均可以採用如圖1a所示的裝置實現。
主處理電路的第一映射電路先對數據進行壓縮處理然後由控制電路傳輸給基礎處理電路運算,例如,主處理電路的第一映射電路可以對數據進 行壓縮處理後再傳輸給基礎處理電路,其優點是可以減少傳輸數據的數據量,減少傳輸的總比特數量,基礎處理電路執行數據運算的效率也更高,功耗更低。
主處理電路將待計算的數據傳輸到全部或者一部分基礎處理電路上;以矩陣乘以向量計算為例,主處理電路的控制電路可以將矩陣數據拆分每列作為一個基礎數據,例如m*n矩陣,可以拆分成n個m行的向量,主處理電路的控制電路將拆分後的n個m行的向量分發給多個基礎處理電路。對於向量,主處理電路的控制電路可以將向量整體廣播給每個基礎處理電路。如果m的值比較大,那麼控制電路可以先將m*n矩陣拆分成x*n個向量,以x=2為例,具體的可以拆分成,2n個向量,每個向量包含m/2行,即將n個m行的向量中每個向量均分成2個向量,以第一行為例,如n個m行的向量的第一個向量為1000行,那麼均分成2個向量可以為,將前500行組成第一向量,將後500行組成第二向量,控制電路通過2個廣播將2個向量廣播給多個基礎處理電路。
所述數據傳輸的方式可以是廣播或者分發,或者其他任何可能的傳輸方式;基礎處理電路接收到數據後,先通過第二映射電路對數據進行處理,再執行運算,得到運算結果;基礎處理電路將運算結果傳輸回主處理電路;所述運算結果可以是中間運算結果,也可以是最終運算結果。
使用如圖1a所示裝置可完成張量乘張量的運算,所述張量和前文所述的數據塊相同,其可為矩陣、向量、三維數據塊、四位數據塊以及高維數據塊中的任一項或多項的組合;下面如圖2和2b分別示出矩陣乘向量和矩陣乘矩陣運算的具體實現方法。
使用如圖1a所示裝置完成矩陣乘向量的運算;(矩陣乘向量可以是矩陣中的每一行分別與向量進行內積運算,並將這些結果按對應行的順序擺放成一個向量。)
下面描述計算尺寸是M行L列的矩陣S和長度是L的向量C的乘法的運算,如下圖2a所示,(矩陣S中的每一行與向量C長度相同,他們中的數據按位置一一對應)所述神經網絡計算裝置擁有K個基礎處理電路:參閱圖2,圖2提供了一種矩陣乘向量的實現方法,具體可以包括:步驟S201、主處理電路的第一映射電路將對輸入矩陣S中的每一行數據進行壓縮處理,對應得到壓縮處理後的矩陣S以及該輸入矩陣S關聯的第一標識矩陣(mask矩陣),主處理電路的控制電路將壓縮處理後矩陣S中的數據以及第一標識矩陣分發到K個基礎處理電路中的某一個上,基礎處理電路將接收到的分發數據保存在基礎處理電路的片上緩存和/或寄存器中;具體的,第一映射電路對輸入矩陣S進行壓縮處理得到壓縮處理後的矩陣S。例如,將輸入矩陣S和矩陣P中數據為指定數值(如0)和/或絕對值小於或等於預設閾值(如0.1)所對應的數據剔除,具體實現時可根據矩陣S和矩陣P各自對應的mask矩陣來剔除,例如剔除mask矩陣中數據為0時對應的相同位置上矩陣S/P中的數據,具體可參見前述關於數據壓縮處理實施例中的相關闡述,這裡不再贅述。應理解的,這裡的矩陣S和矩陣P也可對應理解為前述實施例中的輸入神經元(也可稱為輸入神經原矩陣)和權值(也可稱為權值矩陣)等。
所述主處理電路在向所述基礎處理電路發送數據時,具體將所述壓縮處理後的矩陣S中絕對值大於預設閾值的數據或者非0數據,發送給基礎處理電路,以降低數據傳輸量。
在一種可選方案中,如果矩陣S的行數M<=K,則主處理電路的控制電路給K個基礎處理電路分別分發S矩陣的一行以及第一mask矩陣中與之對應關聯的一行;例如矩陣S為2*2,控制電路向第一個基礎處理電路發矩陣S中第一行的數據,同時需將該矩陣S關聯的mask矩陣中的第一行的mask數據發送給第一個基礎處理電路。
在一種可選方案中,如果矩陣S的行數M>K,則主處理電路的控制電路給每個基礎處理電路分別分發S矩陣中一行或多行的數據以及第一mask矩陣中對應一行或幾行的標識數據。
分發到第i個基礎處理電路的S中的行的集合為Ai,共有Mi個行,如圖2c表示第i個基礎處理電路上將要執行的計算。相應地,分發到第i個基礎處理電路中與該集合Ai對應關聯的標識矩陣為Bi,大於或等於Mi行。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中,可以將接收到的分發數據以及該分發數據關聯的標識數據,例如矩陣Ai以及該Ai關聯的標識mask矩陣Bi保存在第i個基礎處理電路的寄存器和/或片上緩存中;優點是減少了之後的分發數據的數據傳輸量,提高了計算效率,降低了功耗。
步驟S202、主處理電路的第一映射電路將輸入向量C進行壓縮處理得到壓縮處理後的向量C以及該輸入向量C關聯的第二標識矩陣(mask向量),主處理電路的控制電路將壓縮處理後的向量C以及第二標識矩陣中的各部分以廣播的方式傳輸給K個基礎處理電路;關於輸入向量C的壓縮處理以及壓縮處理後的向量C的數據發送具體可參見S201步驟的相關闡述,這裡不再贅述。
在一種可選方案中,主處理電路的控制電路可以將向量C(具體為壓縮處理後的向量C)以及第二標識矩陣中各部分只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的向量C的數據進行充分地復用,完成對應與矩陣Ai中每一行的內積運算。優點是,減少從主處理電路到基礎處理電路的向量C的重複傳輸的數據傳輸量,提高執行效率,降低傳輸功耗。
在一種可選方案中,主處理電路的控制電路可以將向量C以及第二標識矩陣中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的向量C的數據不進行復用,分次完成對應於矩陣Ai中的每一行的內積運算;優點是,減少基礎處理電路內部的單次傳輸的向量C的數據傳輸量,並可以降低基礎處理電路緩存和/或寄存器的容量,提高執行效率,降低傳輸功耗,降低成本。
在一種可選方案中,主處理電路的控制電路可以將向量C以及第二標識矩陣中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的向量C的數據進行部分復用,完成對應於矩陣Ai中的每一行的內積運算;優點是,減少從主處理電路到基礎處理電路的數據傳輸量,也減少基礎處理電路內部的數據傳輸量,提高執行效率,降低傳輸功耗。
步驟S203、K個基礎處理電路的內積運算器電路計算矩陣S和向量C的數據的內積,例如第i個基礎處理電路,計算矩陣Ai的數據和向量C的數據的內積; 具體的,K個基礎處理電路中的第二映射電路依據各自接收的第一標識矩陣中的數據和第二標識矩陣中的數據,獲得關係標識矩陣;然後利用該關係標識矩陣計算向量C和矩陣S中的數據的內積運算。例如,第i個基礎處理電路,利用矩陣Ai的標識矩陣Bi和向量C的第二標識矩陣,獲得關係連接矩陣;然後利用關聯連接矩陣分別對矩陣Ai和向量C進行處理,以獲得處理後的矩陣Ai和處理後的向量C,如利用關聯標識矩陣從矩陣Ai和向量C中選擇出同一位置上非0的數據,後續再利用內積運算器電路計算非0數據間的內積。
步驟S204、K個基礎處理電路的累加器電路將內積運算的結果進行累加得到累加結果,將累加結果傳輸回主處理電路。
在一種可選方案中,可以將每次基礎處理電路執行內積運算得到的部分和(部分和即累加結果的一部分,例如累加結果為:F1*G1+F2*G2+F3*G3+F4*G4+F5*G5,那麼部分和可以為:F1*G1+F2*G2+F3*G3的值)傳輸回主處理電路進行累加;優點是,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了運算效率,降低了數據傳輸功耗。
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路;優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了 運算效率,降低了數據傳輸功耗,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
參閱圖2b,使用如圖1a所示的裝置完成矩陣乘矩陣的運算;下面描述計算尺寸是M行L列的矩陣S和尺寸是L行N列的矩陣P的乘法的運算,(矩陣S中的每一行與矩陣P的每一列長度相同,如圖2d所示)所述神經網絡計算裝置擁有K個基礎處理電路:步驟S201b、主處理電路的控制電路將矩陣S中的每一行數據以及第一標識矩陣中對應關聯的標識數據分發到K個基礎處理電路中的某一個上,基礎處理電路將接收到的數據保存在片上緩存和/或寄存器中;該第一標識矩陣為矩陣S的標識矩陣,其可預先存儲的,也可通過第一映射電路處理獲得,本申請不做限定。
在一種可選方案中,矩陣S為經過壓縮處理後得到的矩陣。具體的,主處理電路的第一映射電路將對輸入矩陣S進行壓縮處理,以對應獲得壓縮處理後的矩陣S和該輸入矩陣S關聯的第一標識矩陣。關於數據的壓縮處理可參見前述實施例中的相關闡述,這裡不再贅述。
在一種可選方案中,如果S的行數M<=K,則主處理電路的控制電路給M個基礎處理電路分別分發S矩陣的一行以及第一mask矩陣中與之對應關聯的一行;在一種可選方案中,如果S的行數M>K,則主處理電路的控制電路給每個基礎處理電路分別分發S矩陣中一行或多行的數據以及第一mask矩陣中對應一行或幾行的標識數據。
S中有Mi行分發到第i個基礎處理電路,這Mi行的集合稱為Ai,如圖2e表示第i個基礎處理電路上將要執行的計算。相應地,分發到第i個基礎處理電路中與該集合Ai對應關聯的標識矩陣為Bi,Bi的行數大於或等於Mi行。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中:接收的由主處理電路分發的矩陣Ai以及該矩陣Ai關聯的標識矩陣,將矩陣Ai以及關聯的標識矩陣保存在第i個基礎處理電路寄存器和/或片上緩存中;優點是減少了之後的數據傳輸量,提高了計算效率,降低了功耗。
步驟S202b、主處理電路的控制電路將矩陣P中各部分以及第二標識矩陣中對應關聯的標識數據以廣播的方式傳輸給各個基礎處理電路;該第二標識數據為矩陣P的標識矩陣,其可預先存儲的,也可通過第一映射電路處理獲得。
在一種可選方案中,矩陣P為經過壓縮處理後得到的矩陣。具體的,主處理電路的第一映射電路將對輸入矩陣P進行壓縮處理,以對應獲得壓縮處理後的矩陣P和該輸入矩陣P關聯的第二標識矩陣。關於數據的壓縮處理可參見前述實施例中的相關闡述,這裡不再贅述。
在一種可選方案中,可以將矩陣P中的各部分以及在第二標識矩陣中對應關聯的標識數據只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的矩陣P的數據進行充分地復用,完成對應與矩陣Ai中每一行的內積運算;本實施例中的復用具體可以為基礎處理電路在計算中重複使用,例如矩陣P的數據的復用,可以是對矩陣P的數據在多次使用。
在一種可選方案中,主處理電路的控制電路可以將矩陣P中的各部分以及在第二標識矩陣中對應關聯的標識數據多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的矩陣P的數據不進行復用,分次完成對應於矩陣Ai中的每一行的內積運算;在一種可選方案中,主處理電路的控制電路可以將矩陣P中各部分以及在第二標識矩陣中對應關聯的標識數據多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的矩陣P的數據進行部分復用,完成對應於矩陣Ai中的每一行的內積運算;在一種可選方案中,每個基礎處理電路的內積運算器計算矩陣S和矩陣P的數據的內積,例如第i個基礎處理電路,計算矩陣Ai的數據和矩陣P的數據的內積;具體的,每個基礎處理電路可根據接收的第一標識矩陣的數據和第二標識矩陣的數據獲得關係標識矩陣,然後利用該關係標識矩陣對矩陣S和矩陣P的數據進行處理,再對處理後的矩陣S和處理後的矩陣P的數據執行內積運算。例如,第i個基礎處理電路,利用矩陣Ai對應關聯的標識矩陣Bi和矩陣P關聯的第二標識矩陣,獲得關係連接矩陣;然後利用關聯連接矩陣分別對矩陣Ai和矩陣P進行處理,以獲得處理後的矩陣Ai和處理後的矩陣P,如利用關聯標識矩陣從矩陣Ai和矩陣P中選擇出同一位置上非0的數據,再利用內積運算器電路計算處理後的矩陣Ai和處理後的矩陣P的數據的內積。
步驟S203b、每個基礎處理電路的累加器電路將內積運算的結果進行累加並傳輸回主處理電路。
在一種可選方案中,基礎處理電路可以將每次執行內積運算得到的部分和傳輸回主處理電路進行累加;在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路。
參閱圖3a,使用如圖1a所示的裝置完成全連接運算:如果全連接層的輸入數據是一個向量(即神經網絡的輸入是單個樣本的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為向量C,按照所述裝置的使用方法一執行如圖2所示的矩陣乘向量的運算;如果全連接層的輸入數據是一個矩陣(即神經網絡的輸入是多個樣本作為batch的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為矩陣P,或者以全連接層的權值矩陣作為矩陣P,輸入向量作為矩陣S,按照所述裝置的使用如圖2c所示的矩陣乘矩陣的執行運算;參閱圖3b,使用如圖1a所示的裝置完成卷積運算:對於一個卷積層,記其卷積核的數量為M;步驟S301、主處理電路的控制電路將卷積層權值中的每一個卷積核的權值以及第一標識矩陣中對應關聯的標識數據分發到K個基礎處理電路中的某一個上,保存在基礎處理電路的片上緩存和/或寄存器中;該第一標識矩 陣為卷積層權值的標識矩陣,可為預先存儲的,也可為通過主處理電路中的第一映射電路處理獲得。
在一種可選方案中,所述卷積層權值中的每一個卷積核的權值是經過壓縮處理後得到的權值。具體的,主處理電路的第一映射電路對卷積層權值中的每一個卷積核的權值進行壓縮處理,以對應得到壓縮處理後的所述卷積層權值中的每一個卷積核的權值以及該卷積層權值所關聯的第一標識矩陣。關於數據的壓縮處理可參見前述實施例中的相關闡述,這裡不再贅述。
在一種可選方案中,如果卷積核的個數M<=K,則主處理電路的控制電路給M個基礎處理電路分別分發一個卷積核的權值以及該卷積核對應在第一標識矩陣中關聯的標識數據;在一種可選方案中,如果卷積核的個數M>K,則主處理電路的控制電路給每個基礎處理電路分別分發一個或多個卷積核的權值以及該卷積核對應在第一標識矩陣中關聯的一行或多行標識數據。
共有Mi個卷積核分發到第i個基礎處理電路,這些卷積核權值的集合稱為Ai。相應地,該Mi個卷積核各自對應在第一標識矩陣中關聯的標識數據也同樣分發到第i個基礎處理電路中,這些標識矩陣中的標識數據的集合可稱為Bi,即Ai對應關聯的標識矩陣Bi。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中:將收到的由主處理電路分發的卷積核權值Ai以及該Ai對應關聯的標識矩陣Bi保存在其寄存器和/或片上緩存中;步驟S302、主處理電路的控制電路將輸入數據P中各部分以及第二標識矩陣中對應關聯的標識數據以廣播的方式傳輸給各個基礎處理電路; 在一種可選方案中,所述輸入數據P是經過壓縮處理後得到的輸入神經元。具體的,主處理電路的第一映射電路對輸入數據P進行壓縮處理,以對應得到壓縮處理後的輸入數據P以及該輸入數據P對應關聯的標識數據,然後再利用控制電路將壓縮處理後的輸入數據P中的各部分以及對應關聯的標識數據以廣播的方式傳輸給各個基礎處理電路。關於數據的壓縮處理可參見前述實施例中的相關闡述,這裡不再贅述。
在一種可選方案中,主處理電路的控制電路可以將輸入數據P中各部分以及對應關聯的標識數據只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的輸入數據P的數據進行充分地復用,完成對應與Ai中每一個卷積核的內積運算;在一種可選方案中,主處理電路的控制電路可以將輸入數據P中各部分以及各部分各自對應關聯的標識數據多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的輸入數據P的數據不進行復用,分次完成對應於Ai中的每一個卷積核的內積運算;步驟S303、每個基礎處理電路計算卷積核和輸入數據P的數據內積,例如第i個基礎處理電路,計算Ai的每一個卷積核和輸入數據P的數據的內積;具體的,每個基礎處理電路中的第二映射電路依據接收的卷積核關聯的標識數據(即第一標識矩陣中的標識數據)和輸入數據P關聯的標識數據(即第二標識矩陣中的標識數據)獲得關係連接矩陣,然後利用該關係連接矩陣對接收的卷積核和輸入數據進行處理,再對處理後的卷積核和處理後的輸入數據執行內積運算。例如,第i個基礎處理電路,利用卷積核Ai關聯的標識矩陣Bi 和輸入數據P關聯的第二標識矩陣(即標識數據),獲得關係連接矩陣;然後利用關聯連接矩陣分別對矩陣Ai和輸入數據P進行處理,以獲得處理後的矩陣Ai和處理後的輸入數據P,如利用關聯標識矩陣從矩陣Ai和輸入數據P中選擇出同一位置上非0的數據,後續再利用內積運算器電路計算非0數據間的內積。
步驟S304、每個基礎處理電路的累加器電路將內積運算的結果進行累加並傳輸回主處理電路:在一種可選方案中,可基礎處理電路以將每次執行內積運算得到的部分和傳輸回主處理電路進行累加;在一種可選方案中,基礎處理電路也可以將每次執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;在一種可選方案中,基礎處理電路也可以將每次執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路;本發明還提供一種晶片,該晶片包含計算裝置,該計算裝置包括:包括一個主處理電路,主處理電路中所涉及到的數據可以是壓縮處理後的數據,在一種可選實施例中,所述壓縮處理後的數據包括至少一個輸入神經元或至少一個權值,所述至少一個神經元中的每個神經元大於第一閾值或者,所述至少一個權值中的每個權值大於第二閾值。所述第一閾值和所述第二閾值為用戶側自定義設置的,它們可以相同,也可不同。
在一種可選方案中,主處理電路包括第一映射電路;在一種可選方案中,主處理電路包括執行數據壓縮處理的運算單元,如向量運算單元等;具體地,包含接收輸入數據的數據輸入介面;在一種可選方案中,所述接收的數據來源可以是:所述神經網絡運算電路裝置的外部或所述神經網絡運算電路裝置的部分或全部基礎處理電路;在一種可選方案中,所述數據輸入介面可以有多個;具體地,可以包含輸出數據的數據輸出介面;在一種可選方案中,所述輸出的數據的去向可以是:所述神經網絡運算裝置的外部或所述神經網絡運算電路裝置的部分或全部基礎處理電路;在一種可選方案中,所述數據輸出介面可以有多個;在一種可選方案中,所述主處理電路包括片上緩存和/或寄存器;在一種可選方案中,所述主處理電路中包含運算單元,可以執行數據運算;在一種可選方案中,所述主處理電路中包含算術運算單元;在一種可選方案中,所述主處理電路中包含向量運算單元,可以同時對一組數據執行運算;具體地,所述算術運算和/或向量運算可以是任意類型的運算,包括但不限於:兩個數相加減乘除,一個數與常數加減乘除,對一個數執行指數運算,冪次運算,對數運算,以及各種非線性運算,對兩個數執行比較運算,邏輯運算等。兩個向量相加減乘除,一個向量中的每一個元素與常數加 減乘除,對向量中的每一個元素執行指數運算,冪次運算,對數運算,以及各種非線性運算等,對一個向量中的每兩個對應的元素執行比較運算,邏輯運算等。
在一種可選方案中,所述主處理電路包括數據重排列單元,用於按照一定的順序向基礎處理電路傳輸數據,或者按照一定的順序原地重新排列數據;在一種可選方案中,所述數據排列的順序包括:對一個多維數據塊進行維度順序的變換;所述數據排列的順序還可以包括:對一個數據塊進行分塊以發送到不同的基礎處理電路。
該計算裝置還包括多個基礎處理電路:每一個基礎處理電路用於計算兩個向量的內積,計算的方法是,基礎處理電路收到的兩組數,將這兩組數中的元素對應相乘,並且將相乘的結果累加起來;內積的結果傳輸出去,這裡傳輸出去根據基礎處理電路的位置,有可能傳輸給其他基礎處理電路,也可以直接傳輸給主處理電路。
基礎處理電路中所涉及到的數據可以是壓縮處理後的數據,在一種可選實施例中,所述壓縮處理後的數據包括至少一個輸入神經元或至少一個權值,所述至少一個神經元中的每個神經元大於第一閾值或者,所述至少一個權值中的每個權值大於第二閾值。所述第一閾值和所述第二閾值為用戶側自定義設置的,它們可以相同,也可不同。
在一種可選方案中,基礎處理電路包括第二映射電路;在一種可選方案中,基礎處理電路包括執行數據壓縮處理的向量運算單元;具體地,包括由片上緩存和/或寄存器構成的存儲單元; 具體地,包括一個或多個接收數據的數據輸入介面;在一種可選方案中,包括兩個數據輸入介面,每次從兩個數據輸入介面處可以分別獲得一個或多個數據;在一種可選方案中,基礎處理電路可以將從數據輸入介面接收到輸入數據後保存在寄存器和/或片上緩存中;上述數據輸入介面接收數據的來源可以是:其他基礎處理電路和/或主處理電路。
所述神經網絡運算電路裝置的主處理電路;所述神經網絡運算電路裝置的其他基礎處理電路(所述神經網絡運算電路裝置擁有多個基礎處理電路);具體地,包括一個或多個傳輸輸出數據的數據輸出介面;在一種可選方案中,可以將一個或多個數據從數據輸出介面傳輸出去;具體地,通過數據輸出介面傳輸出去的數據可以是:從數據輸入介面接收到的數據、保存在片上緩存和/或寄存器中的數據、乘法器運算結果、累加器運算結果或內積運算器運算結果中的一種或任意組合。
在一種可選方案中,包含三個數據輸出介面,其中的兩個分別對應於兩個數據輸入介面,每一層輸出上一層從數據輸入介面接收到的數據,第三個數據輸出介面負責輸出運算結果;具體地,所述數據輸出介面傳輸數據的去向可以是:上文數據來源和此處的數據去向決定了基礎處理電路在裝置中的連接關係。
所述神經網絡運算電路裝置的主處理電路; 所述神經網絡運算電路裝置的其他基礎處理電路,所述神經網絡運算電路裝置擁有多個基礎處理電路;具體地,包括算術運算電路:該算術運算電路具體可以為:一個或多個乘法器電路、一個或多個累加器電路、一個或多個執行兩組數內積運算的電路中的一個或任意組合。
在一種可選方案中,可以執行兩個數的乘法運算,其結果可以保存在片上緩存和/或寄存器上,也可以直接累加到寄存器和/或片上緩存中;在一種可選方案中,可以執行兩組數據的內積運算,其結果可以保存在片上緩存和/或寄存器中,也可以直接累加到寄存器和/或片上緩存中;在一種可選方案中,可以執行數據的累加運算,將數據累加到片上緩存和或寄存器中;具體地,累加器電路被累加的數據,可以是:從數據輸入介面接收到的數據、保存在片上緩存和/或寄存器中的數據、乘法器運算結果、累加器運算結果、內積運算器運算結果中的一個或任意組合。
需要說明的是,上述對基礎處理電路的描述中所用到的「數據輸入介面」和「數據輸出介面」是指每一個基礎處理電路的數據輸入與輸出介面,而不是整個裝置的數據輸入與輸出介面。
在一個實施例中,本發明公開了一種神經網絡運算裝置,其包括用於執行如上所述方法實施例中提供的所有或部分實施方式所對應的功能單元。
在一個實施例裏,本發明公開了一種晶片,用於執行如上所述方法實施例中提供的所有或部分實施方式。
在一個實施例裏,本發明公開了一種電子裝置,其包括用於執行如上所述方法實施例中的所有或部分實施方式的功能單元。
電子裝置包括數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。
所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B型超音波掃描儀和/或心電圖儀。
以上所述的具體實施例,對本披露的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本披露的具體實施例而已,並不用於限制本披露,凡在本披露的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本披露的保護範圍之內。

Claims (10)

  1. 一種集成電路晶片裝置,其中,該集成電路晶片裝置包括:一主處理電路以及多個基礎處理電路;該主處理電路包括一第一映射電路,該多個基礎處理電路中至少一個電路包括一第二映射電路,該第一映射電路以及該第二映射電路均用於執行神經網絡運算中的各個數據的壓縮處理;該主處理電路,用於執行神經網絡運算中的各個連續的運算以及與該基礎處理電路傳輸數據;該多個基礎處理電路,用於依據該主處理電路傳輸的數據以並行方式執行神經網絡中的運算,並將運算結果傳輸給該主處理電路;該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令將該待計算的數據塊劃分為一分發數據塊和一廣播數據塊;啟動該第一映射電路對該分發數據塊和該廣播數據塊進行處理得到處理後的分發數據塊以及該分發數據塊關聯的標識數據塊、處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊;將該處理後分發數據塊和該分發數據塊關聯的標識數據塊進行拆分得到多個基本數據塊以及該多個基本數據塊各自關聯的標識數據塊;將該多個基本數據塊以及該多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路,將該廣播數據塊以及該廣播數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路;該基礎處理電路,用於啟動該第二映射電路依據該基本數據塊關聯的標識數據塊以及該廣播數據塊關聯的標識數據塊得到一連接標識數據塊;根據該連接標識數據塊對該基本數據塊以及該廣播數據塊進行處理,對處理後的基本數 據塊以及處理後的廣播數據塊執行內積運算得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令所對應的指令結果;或者,該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令將該待計算的數據塊劃分為一分發數據塊和一廣播數據塊;啟動該第一映射電路對該分發數據塊進行處理得到處理後的分發數據塊以及該分發數據塊關聯的標識數據塊,或者啟動該第一映射電路根據預存該分發數據塊關聯的標識數據塊對該分發數據塊進行處理得到處理後的分發數據塊;將該處理後的分發數據塊以及該分發數據塊關聯的標識數據塊進行拆分得到多個基本數據塊以及該多個基本數據塊各自關聯的標識數據塊;將該多個基本數據塊以及該多個基本數據塊各自關聯的標識數據塊分發至與其連接的基礎處理電路;將該廣播數據塊廣播至與其連接的基礎處理電路;該基礎處理電路,用於啟動該第二映射電路依據該基本數據塊關聯的標識數據塊對該廣播數據塊進行處理,對處理後的廣播數據塊以及該基本數據塊執行內積運算得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令的指令結果;或者,該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令將該待計算的數據塊劃分為一分發數據塊和一廣播數據塊;啟動該第一映 射電路對該廣播數據塊進行處理得到處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊,或者啟動該第一映射電路依據預存的該廣播數據塊關聯的標識數據塊對該廣播數據塊進行處理得到處理後的廣播數據塊;將該分發數據塊進行拆分得到多個基本數據塊;將該多個基本數據分發至與其連接的基礎處理電路;將該處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊廣播至與其連接的基礎處理電路;該基礎處理電路,用於啟動該第二映射電路依據該廣播數據塊關聯的標識數據塊對該基本數據塊進行處理得到處理後的基本數據塊;對該處理後的基本數據塊以及該處理後的廣播數據塊執行內積運算得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令所對應的指令結果。
  2. 根據申請專利範圍第1項的集成電路晶片裝置,其中,該集成電路晶片裝置還包括:一分支處理電路,該分支處理電路設置在該主處理電路與至少一個基礎處理電路之間;該分支處理電路,用於在該主處理電路與至少一個基礎處理電路之間轉發數據;其中,該分支處理電路包含多個分支處理電路,該主處理電路與該多個分支處理電路分別連接,每個分支處理電路與至少一個基礎處理電路連接。
  3. 根據申請專利範圍第1項的集成電路晶片裝置,其中,該待計算的數據塊包括至少一個權值,和/或至少一個輸入神經元。
  4. 根據申請專利範圍第3項的集成電路晶片裝置,其中,當該標識數據塊用直接索引表示時,該標識數據塊是由0和1組成的矩陣數據塊,其中,0表示該權值或者該輸入神經元的絕對值小於或等於一第一閾值,1表示該權值或者該輸入神經元的絕對值大於該第一閾值。
  5. 根據申請專利範圍第1項的集成電路晶片裝置,其中,該基礎處理電路,具體用於對該基本數據塊與該廣播數據塊執行內積處理得到一內積處理結果,將該內積處理結果累加得到一運算結果,將該運算結果發送至該主處理電路;該主處理電路,用於在如該運算結果為內積處理的結果時,對該運算結果累加後得到一累加結果,將該累加結果排列得到該待計算的數據塊以及該運算指令所對應的指令結果。
  6. 根據申請專利範圍第1項的集成電路晶片裝置,其中,該主處理電路,具體用於將該處理後的廣播數據塊以及該廣播數據塊關聯的標識數據塊進行拆分得到多個部分廣播數據塊以及該多個部分廣播數據塊各自關聯的標識數據塊;將該多個部分廣播數據塊以及該多個部分廣播數據塊各自關聯的標識數據塊通過一次或多次廣播至該基礎處理電路;該多個部分廣播數據塊組合形成該處理後的廣播數據塊;該基礎處理電路,具體用於啟動該第二映射電路依據該部分廣播數據塊關聯的標識數據塊以及該基本數據塊關聯的標識數據塊得到一連接標識數據塊;根據該連接標識數據塊對該部分廣播數據塊以及該基本數據塊進行處理得到處理後的廣播數據塊以及處理後的基本數據塊;對該處理後的廣播數據塊以及處理後的基本數據塊執行內積運算; 或者,該基礎處理電路,具體用於啟動該第二映射電路依據該部分廣播數據塊關聯的標識數據塊對該基本數據塊進行處理得到處理後的基本數據塊,對該處理後的基本數據以及該部分廣播數據塊執行內積運算。
  7. 根據申請專利範圍第1項的集成電路晶片裝置,其中,該基礎處理電路,具體用於將一部分廣播數據塊與該基本數據塊執行一次內積處理後得到一內積處理結果,將該內積處理結果累加得到部分運算結果,將該部分運算結果發送至該主處理電路;或者,該基礎處理電路,具體用於復用n次該部分廣播數據塊執行該部分廣播數據塊與n個該基本數據塊的內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將該n個部分運算結果發送至該主處理電路,該n為大於等於2的整數。
  8. 一種晶片,其中,該晶片集成如申請專利範圍第1-7項任意一項的裝置。
  9. 一種智能設備,其中,該智能設備包括如申請專利範圍第8項的晶片。
  10. 一種神經網絡的運算方法,其中,該方法應用在集成電路晶片裝置內,該集成電路晶片裝置包括:如申請專利範圍第1-7項任意一項的集成電路晶片裝置,該集成電路晶片裝置用於執行神經網絡的運算;其中,該神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏置運算、全連接運算、通用矩陣乘法GEMM運算、通用矩陣向量乘法GEMV運算、激活運算中的一種或任意組合。
TW108100778A 2018-02-27 2019-01-09 集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法 TWI786255B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810164738.X 2018-02-27
CN201810164738.XA CN110197272B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品
??201810164738.X 2018-02-27

Publications (2)

Publication Number Publication Date
TW201937411A TW201937411A (zh) 2019-09-16
TWI786255B true TWI786255B (zh) 2022-12-11

Family

ID=67751003

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108100778A TWI786255B (zh) 2018-02-27 2019-01-09 集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法

Country Status (2)

Country Link
CN (2) CN110197272B (zh)
TW (1) TWI786255B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110197272B (zh) * 2018-02-27 2020-08-25 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201531966A (zh) * 2014-01-23 2015-08-16 Qualcomm Inc 配置稀疏神經網路
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
US20170132496A1 (en) * 2015-11-05 2017-05-11 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN107609641A (zh) * 2017-08-30 2018-01-19 清华大学 稀疏神经网络架构及其实现方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2646575A1 (fr) * 1989-04-26 1990-11-02 Labo Electronique Physique Procede et structure pour la compression de donnees
US7196922B2 (en) * 2005-07-25 2007-03-27 Stmicroelectronics, Inc. Programmable priority encoder
US20110107291A1 (en) * 2009-11-05 2011-05-05 International Business Machines Corporation Design system and method that, during timing analysis, compensates for regional timing variations
CN105512723B (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
US11490851B2 (en) * 2016-03-14 2022-11-08 Newton Howard Neuroanalytic, neurodiagnostic, and therapeutic tools
CN106126481B (zh) * 2016-06-29 2019-04-12 华为技术有限公司 一种计算***和电子设备
CN111310893B (zh) * 2016-08-05 2023-11-21 中科寒武纪科技股份有限公司 一种用于执行神经网络运算的装置及方法
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
CN106355248A (zh) * 2016-08-26 2017-01-25 深圳先进技术研究院 一种深度卷积神经网络训练方法及装置
CN106529670B (zh) * 2016-10-27 2019-01-25 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
CN107480691B (zh) * 2017-07-04 2020-04-03 中国人民解放军总医院 一种基于超声数据降维的甲状腺结构特征提取方法及***
CN109284130B (zh) * 2017-07-20 2021-03-23 上海寒武纪信息科技有限公司 神经网络运算装置及方法
CN109993291B (zh) * 2017-12-30 2020-07-07 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN110197272B (zh) * 2018-02-27 2020-08-25 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201531966A (zh) * 2014-01-23 2015-08-16 Qualcomm Inc 配置稀疏神經網路
US20170132496A1 (en) * 2015-11-05 2017-05-11 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
CN107316078A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN107609641A (zh) * 2017-08-30 2018-01-19 清华大学 稀疏神经网络架构及其实现方法

Also Published As

Publication number Publication date
CN110197272B (zh) 2020-08-25
CN111767996A (zh) 2020-10-13
TW201937411A (zh) 2019-09-16
CN110197272A (zh) 2019-09-03
CN111767996B (zh) 2024-03-05

Similar Documents

Publication Publication Date Title
CN109993301B (zh) 神经网络训练装置及相关产品
TWI768167B (zh) 集成電路芯片裝置及相關產品
CN110909870A (zh) 训练装置及方法
US11704544B2 (en) Integrated circuit chip device and related product
TWI786255B (zh) 集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法
CN111767998B (zh) 集成电路芯片装置及相关产品
US11651202B2 (en) Integrated circuit chip device and related product
US20200125937A1 (en) Integrated circuit chip device and related product
CN110197274B (zh) 集成电路芯片装置及相关产品
TWI787430B (zh) 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法
CN110197271B (zh) 集成电路芯片装置及相关产品
CN110197266B (zh) 集成电路芯片装置及相关产品
CN110197275B (zh) 集成电路芯片装置及相关产品
CN110197265B (zh) 集成电路芯片装置及相关产品
US11734548B2 (en) Integrated circuit chip device and related product
CN115221103A (zh) 计算装置、数据处理方法及相关产品
CN111767997B (zh) 集成电路芯片装置及相关产品
CN110197267B (zh) 神经网络处理器板卡及相关产品
CN110197273B (zh) 集成电路芯片装置及相关产品
WO2019165940A1 (zh) 集成电路芯片装置、板卡及相关产品
CN115237371A (zh) 计算装置、数据处理方法及相关产品
CN115237373A (zh) 计算装置、数据处理方法及相关产品