TWI768160B - 集成電路芯片裝置及相關產品 - Google Patents
集成電路芯片裝置及相關產品 Download PDFInfo
- Publication number
- TWI768160B TWI768160B TW107144036A TW107144036A TWI768160B TW I768160 B TWI768160 B TW I768160B TW 107144036 A TW107144036 A TW 107144036A TW 107144036 A TW107144036 A TW 107144036A TW I768160 B TWI768160 B TW I768160B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- basic processing
- basic
- processing circuit
- circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Image Processing (AREA)
- Container Filling Or Packaging Operations (AREA)
- Advance Control (AREA)
Abstract
本披露提供一種集成電路芯片裝置及相關產品,所述集成電路芯片裝置包括:主處理電路以及多個基礎處理電路;所述主處理電路或多個基礎處理電路中至少一個電路包括:數據類型運算電路;所述數據類型運算電路,用於執行浮點類型數據與定點類型數據之間的轉換;所述多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他基礎處理電路連接,所述主處理電路連接第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路。本披露提供的技術方案具有計算量小,功耗低的優點。
Description
本披露涉及神經網絡領域,尤其涉及一種集成電路芯片裝置及相關產品。
人工神經網絡(Artificial Neural Network,ANN),是20世紀80年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象,建立某種簡單模型,按不同的連接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。現有的神經網絡的運算基於CPU(Central Processing Unit,中央處理器)或GPU(Graphics Processing Unit,圖形處理器)來實現神經網絡的運算,此種運算的計算量大,功耗高。
本披露實施例提供了一種集成電路芯片裝置及相關產品,可提升計算裝置的處理速度,提高效率。
第一方面,提供一種集成電路芯片裝置,所述集成電路芯片裝置包括:主處理電路以及多個基礎處理電路;所述多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他相鄰的基礎處理電路連接,所述主處理電路連接所述多個基礎處理電路中的k個基礎處理電路,所述k個基礎處理電路為:第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路;所述k個基礎處理電路包括:數據類型轉換電路,用於執行浮點類型數據以及定點類型數據之間的轉換;所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及和所述k個基礎處理電路傳輸數據;所述k個基礎處理電路,用於依據傳輸數據和運算的類型確定是否啟動所述數據類型轉換電路執行傳輸數據的數據類型的轉換,在所述主處理電路以及多個基礎處理電路之間的數據轉發;所述多個基礎處理電路,用於依據傳輸數據以並行方式執行神經網絡中的運算,並將運算結果通過所述k個基礎處理電路傳輸給所述主處理電路。
第二方面,提供一種神經網絡運算裝置,所述神經網絡運算裝置包括一個或多個第一方面提供的集成電路芯片裝置。
第三方面,提供一種組合處理裝置,所述組合處理裝置包括:第二方面提供的神經網絡運算裝置、通用互聯介面和通用處理裝置;
所述神經網絡運算裝置通過所述通用互聯介面與所述通用處理裝置連接。
第四方面,提供一種芯片,所述芯片集成第一方面的裝置、第二方面的裝置或第三方面的裝置。
第五方面,提供一種電子設備,所述電子設備包括第四方面的芯片。
第六方面,提供一種神經網絡的運算方法,所述方法應用在集成電路芯片裝置內,所述集成電路芯片裝置包括:第一方面所述的集成電路芯片裝置,所述集成電路芯片裝置用於執行神經網絡的運算。
可以看出,通過本披露實施例,提供數據轉換運算電路將數據塊的類型進行轉換後運算,節省了傳輸資源以及計算資源,所以其具有功耗低,計算量小的優點。
A、B、S:矩陣
P:向量
10:神經網絡處理器板卡
11:神經網絡芯片封裝結構
12:第一電氣及非電氣連接裝置
13:第一基板
111:神經網絡芯片
112:第二電氣及非電氣連接裝置
113:第二基板
1111:存儲單元
1112:直接內存存取單元
1113:指令緩存單元
1114:權值緩存單元
1115:輸入神經元緩存單元
1116:輸出神經元緩存單元
1117:控制單元
1118:運算單元
21:神經網絡芯片
22:焊盤
23:焊球
24:第二基板
25:第二基板24上的連接點
26:引腳
27:絕緣填充物
28:散熱膏
29:金屬外殼散熱片
圖1a是一種集成電路芯片裝置結構示意圖。
圖1b是另一種集成電路芯片裝置結構示意圖。
圖1c是一種基礎處理電路的結構示意圖。
圖1d是一種主處理電路的結構示意圖。
圖1e為一種定點數據類型的示意結構圖。
圖2a是一種基礎處理電路的使用方法示意圖。
圖2b是一種主處理電路傳輸數據示意圖。
圖2c是矩陣乘以向量的示意圖。
圖2d是一種集成電路芯片裝置結構示意圖。
圖2e是又一種集成電路芯片裝置結構示意圖。
圖2f是矩陣乘以矩陣的示意圖。
圖3a為卷積輸入數據示意圖。
圖3b為卷積核示意圖。
圖3c為輸入數據的一個三維數據塊的運算窗口示意圖。
圖3d為輸入數據的一個三維數據塊的另一運算窗口示意圖。
圖3e為輸入數據的一個三維數據塊的又一運算窗口示意圖.
圖4a為神經網絡正向運算示意圖。
圖4b為神經網絡反向運算示意圖。
圖4c為本披露還揭露了一個組合處理裝置結構示意圖。
圖4d為本披露還揭露了一個組合處理裝置另一種結構示意圖。
圖5a為本披露實施例提供的一種神經網絡處理器板卡的結構示意圖;圖5b為本披露實施例流提供的一種神經網絡芯片封裝結構的結構示意圖;圖5c為本披露實施例流提供的一種神經網絡芯片的結構示意圖;圖6為本披露實施例流提供的一種神經網絡芯片封裝結構的示意圖;圖6a為本披露實施例流提供的另一種神經網絡芯片封裝結構的示意圖。
為了使本技術領域的人員更好地理解本披露方案,下面將結合本披露實施例中的圖式,對本披露實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本披露一部分實施例,而不是全部的實施例。基於本披露中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本披露保護的範圍。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據該運算指令對所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至所述k個基礎處理電路,將所述廣播數據塊廣播至所述k個基礎處理電路;所述k個基礎處理電路,用於依據接收到的基本數據塊、廣播數據塊以及運算指令將基本數據塊、廣播數據塊轉換成定點數據類型的基本數據塊、廣播數據塊,然後傳輸給與所述k個基礎處理電路連接的基礎處理電路;所述多個基礎處理電路,用於對所述基本數據塊與所述廣播數據塊以定點數據類型執行內積運算得到以定點數據類型運算結果;所述k個基礎處理電路,還用於將定點數據類型運算結果轉換成浮點數據類型運算結果發送至所述主處理電路;
所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述廣播數據塊通過一次廣播至所述k個基礎處理電路。
在第一方面提供的裝置中,所述主處理電路,用於在如所述運算結果為內積處理的結果時,對所述運算結果累加後得到累加結果,將該累加結果排列得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述k個基礎處理電路。
在第一方面提供的裝置中,所述k個基礎處理電路,用於將所述部分廣播數據塊與所述基本數據塊轉換成定點數據類型的數據傳輸給與所述k個基礎處理電路連接的基礎處理電路;所述多個基礎處理電路,具體用於將所述部分廣播數據塊與所述基本數據塊以定點數據類型執行一次內積處理後得到定點數據類型的內積處理結果,將所述定點數據類型的內積處理結果累加得到定點數據類型的部分運算結果;所述k個基礎處理電路,還用於將所述定點類型的部分運算結果轉換成浮點類型運算結果發送至所述主處理電路。
在第一方面提供的裝置中,所述多個基礎處理電路,具體用於復用β次該部分廣播數據塊以定點數據類型執行該部分廣播數據塊與
該β個基本數據塊內積運算得到定點數據類型β個部分處理結果,將定點數據類型β個部分處理結果分別累加後得到定點數據類型β個部分運算結果;所述k個基礎處理電路,用於啟動所述數據類型運算電路將所述定點數據類型β個部分運算結果轉換成浮點類型數據類型β個部分運算結果發送至主處理電路,所述β為大於等於2的整數。
在第一方面提供的裝置中,所述主處理電路包括:主寄存器或主片上緩存電路;所述多個基礎處理電路包括:基本寄存器或基本片上緩存電路。
在第一方面提供的裝置中,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路、數據類型運算電路或數據重排電路中的一種或任意組合。
在第一方面提供的裝置中,所述數據為:向量、矩陣、三維數據塊、四維數據塊以及α維數據塊中一種或任意組合。
在第一方面提供的裝置中,如所述運算指令為乘法指令,所述主處理電路確定乘數數據塊為廣播數據塊,被乘數數據塊為分發數據塊;如所述運算指令為卷積指令,所述主處理電路確定輸入數據塊為廣播數據塊,卷積核為分發數據塊。
在第六方面提供的方法中,所述神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏執運算、全連接運算、GEMM運算、GEMV運算、激活運算中的一種或任意組合。
參閱圖1a,圖1a為本披露提供的一種集成電路芯片裝置,該集成電路芯片裝置包括:主處理電路和多個基礎處理電路,所述多個基礎處理電路呈陣列排布(m*n陣列),其中,m、n的取值範圍為大於等於1的整數且m、n中至少有一個值大於等於2。對於m*n陣列分布的多個基礎處理電路,每個基礎處理電路與相鄰的基礎處理電路連接,所述主處理電路連接多個基礎處理電路的k個基礎處理電路,所述k個基礎處理電路可以為:第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路。如圖1a所示的集成電路芯片裝置,主處理電路和/或多個基礎處理電路可以包括數據類型轉換運算電路,具體的多個基礎處理電路中可以有部分基礎處理電路包括數據類型轉換電路,例如,在一個可選的技術方案中,可以將k個基礎處理電路配置數據類型轉換電路,這樣n個基礎處理電路可以分別負責對本列的m個基礎處理電路的數據進行數據類型轉換步驟。此設置能夠提高運算效率,降低功耗,因為對於第1行的n個基礎處理電路來說,由於其最先接收到主處理電路發送的數據,那麼將該接收到的數據轉換成定點類型的數據可以減少後續基礎處理電路的計算量以及與後續基礎處理電路的數據傳輸的量,同理,對於第一列的m個基礎處理電路配置數據類型轉換電路也具有計算量小和功耗低的優點。另外,依據該結構,主處理電路可以採用動態的數據發送策略,例如,主處理
電路向第1列的m個基礎處理電路廣播數據,主處理電路向第1行的n個基礎處理電路發送分發數據,此優點是,通過不同的數據輸入口傳遞不同的數據到基礎處理電路內,這樣基礎處理電路可以不區分該接收到的數據是何種數據,只需要確定該數據從哪個接收端口接收即可以獲知其屬於何種數據。
所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及和與其相連的所述基礎處理電路傳輸數據;上述連續的運算但不限於:累加運算、ALU運算、激活運算等等運算。
所述多個基礎處理電路,用於依據傳輸的數據以並行方式執行神經網絡中的運算,並將運算結果通過與所述主處理電路連接的基礎處理電路傳輸給所述主處理電路。上述並行方式執行神經網絡中的運算包括但不限於:內積運算、矩陣或向量乘法運算等等。
主處理電路可以包括:數據發送電路、數據接收電路或介面,該數據發送電路可以集成數據分發電路以及數據廣播電路,當然在實際應用中,數據分發電路以及數據廣播電路也可以分別設置。對於廣播數據,即需要發送給每個基礎處理電路的數據。對於分發數據,即需要有選擇的發送給部分基礎處理電路的數據,具體的,如卷積運算,卷積運算的卷積輸入數據需要發送給所有的基礎處理電路,所有其為廣播數據,卷積核需要有選擇的發送給部分基本數據塊,所以卷積核為分發數據。分發數據具體的選擇發送給那個基礎處理電路的方式可以由主處理電路依據負載以及其他分配方式進行具體的確定。對於廣播發送方式,即將廣播數據以廣播形式發送至每個基礎處理電
路。(在實際應用中,通過一次廣播的方式將廣播數據發送至每個基礎處理電路,也可以通過多次廣播的方式將廣播數據發送至每個基礎處理電路,本披露具體實施方式並不限制上述廣播的次數),對於分發發送方式,即將分發數據有選擇的發送給部分基礎處理電路。
主處理電路(如圖1d所示)可以包括寄存器和/或片上緩存電路,該主處理電路還可以包括:控制電路、向量運算器電路、ALU(arithmetic and logic unit,算數邏輯單元)電路、累加器電路、DMA(Direct Memory Access,直接內存存取)電路等電路,當然在實際應用中,上述主處理電路還可以添加,轉換電路(例如矩陣轉置電路)、數據重排電路或激活電路等等其他的電路。
每個基礎處理電路可以包括基礎寄存器和/或基礎片上緩存電路;每個基礎處理電路還可以包括:內積運算器電路、向量運算器電路、累加器電路等中一個或任意組合。上述內積運算器電路、向量運算器電路、累加器電路都可以是集成電路,上述內積運算器電路、向量運算器電路、累加器電路也可以為單獨設置的電路。
可選的,對於第m行n個基礎處理電路的累加器電路可以執行內積運算的累加運算,因為對於第m行基礎處理電路來說,其能夠接收到本列所有的基礎處理電路的乘積結果,而將內積運算的累加運算通過第m行的n個基礎處理電路執行內積運算的累加運算,這樣能夠對計算資源進行有效的分配,具有節省功耗的優點。此技術方案尤其對於m數量較大時更為適用。
對於數據類型轉換可以由主處理電路來分配執行的電路,具體的,可以通過顯示或隱式的方式來分配執行的電路,對於顯示方式,主處理電路可以配置一個特殊指示或指令,當基礎處理電路接收到該特殊指示或指令時,確定執行數據類型轉換,如基礎處理電路未接收到特殊指示或指令時,確定不執行數據類型轉換。又如,可以以暗示的方式來執行,例如,基礎處理電路接收到數據類型為浮點類型的數據且確定需要執行內積運算時,將該數據類型轉換成定點類型的數據。對於顯示配置的方式,特殊指令或指示可以配置一個遞減序列,該遞減序列的每經過一個基礎處理電路,數值減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介面的數據。
本實施例包含一個主處理電路,主處理電路與外部裝置相連接(即由輸入介面也有輸出介面),主處理電路的一部分數據輸出介面與一部分基礎處理電路的數據輸入介面相連接;主處理電路的一部分數據輸入介面與一部分基礎處理電路的數據輸出介面相連。
集成電路芯片裝置的使用方法
本披露提供的使用方法中所涉及到的數據可以是任意數據類型的數據,例如,可以是任意位寬的浮點數表示的數據也可以是任意位寬的定點數表示的數據。
該定點類型數據的一種結構示意圖如圖1e所示,如圖1e所示,為一種定點類型數據的表達方法,對於計算系統,1個浮點數據的存儲位數為32bit,而對於定點數據,尤其是採用如圖1e所示的浮點類型的數據進行數據的表示,其1個定點數據的存儲位數可以做到16Bit以
下,所以對於此轉換來說,可以極大的減少計算器之間的傳輸開銷,另外,對於計算器來說,較少比特位的數據存儲的空間也較小,即存儲開銷會較小,計算量也會減少,即計算開銷會減少,所以能夠減少計算開銷以及存儲的開銷,但是對於數據類型的轉換也是需要有部分的開銷的,下面簡稱轉換開銷,對於計算量大,數據存儲量大的數據,轉換開銷相對於後續的計算開銷、存儲開銷以及傳輸開銷來說幾乎可以忽略不計,所以對於計算量大,數據存儲量大的數據,本披露採用了將數據類型轉換成定點類型的數據的技術方案,反之,對於計算量小,數據存儲量小的數據,此時由於本身計算開銷、存儲開銷以及傳輸開銷就比較小,此時如果使用定點數據,由於定點數據的精度會略低於浮點數據,在計算量較小的前提下,需要保證計算的精度,所以這裡將定點類型的數據轉換成浮點數據,即通過增加較小的開銷來提高計算的精度的目的。
需要在基礎處理電路中完成的運算,可以使用下述方法進行:
主處理電路先對數據的類型進行轉換然後再傳輸給基礎處理電路運算(例如,主處理電路可以將浮點數轉換成位寬更低的定點數再傳輸給基礎處理電路,其優點是可以減少傳輸數據的位寬,減少傳輸的總比特數量,基礎處理電路執行地位寬定點運算的效率也更高,功耗更低)
基礎處理電路可以收到數據後先進行數據類型轉化然後再進行計算(例如,基礎處理電路收到主處理電路傳輸過來的浮點數,然後轉換為定點數進行運算,提高運算效率,降低功耗)。
基礎處理電路計算出結果之後可以先進行數據類型轉換然後再傳輸給主處理電路(例如,基礎處理電路計算出的浮點數運算結果可以先轉換為低位寬的定點數然後再傳輸給主處理電路,其好處是降低了傳輸過程的數據位寬,效率更高,而且節約了功耗)。
基礎處理電路的使用方法(如圖2a);主處理電路從裝置外部接收待計算的輸入數據;可選地,主處理電路利用本單元的各種運算電路,向量運算電路,內積運算器電路、累加器電路等對數據進行運算處理;主處理電路通過數據輸出介面向基礎處理電路陣列(把所有基礎處理電路的集合稱作基礎處理電路陣列)發送數據(如圖2b所示);此處的發送數據的方式可以是向一部分基礎處理電路直接發送數據,即多次廣播方式;此處發送數據的方式可以向不同的基礎處理電路分別發送不同的數據,即分發方式;基礎處理電路陣列對數據進行計算;基礎處理電路接收到輸入數據後進行運算;可選地,基礎處理電路接收到數據後將該數據從本單元的數據輸出介面傳輸出去;(傳輸給其他沒有直接從主處理電路接收到數據的基礎處理電路。)
可選地,基礎處理電路將運算結果從數據輸出介面傳輸出去;(中間計算結果或者最終計算結果)
主處理電路接收到從基礎處理電路陣列返回的輸出數據;
可選地,主處理電路對從基礎處理電路陣列接收到的數據繼續進行處理(例如累加或激活操作);主處理電路處理完畢,將處理結果從數據輸出介面傳輸給裝置外部。
使用所述電路裝置完成矩陣乘向量運算;(矩陣乘向量可以是矩陣中的每一行分別與向量進行內積運算,並將這些結果按對應行的順序擺放成一個向量。)
下面描述計算尺寸是M行L列的矩陣S和長度是L的向量P的乘法的運算,如下圖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個數......。)
主處理電路的控制電路將向量P中的數據逐次發送到第0個基礎處理電路;第0個基礎處理電路接收到向量P的數據之後,將該數據發送給與其相連接的下一個基礎處理電路,即基礎處理電路1;具體的,有些基礎處理電路不能直接從主處理電路處獲得計算所需的所有的數據,例如,圖2d中的基礎處理電路1,只有一個數據輸入介面與主處理電路相連,所以只能直接從主處理電路獲得矩陣S的數據,而向量P的數據就需要依靠基礎處理電路0輸出給基礎處理電路1,同理,基礎處理電路1也要收到數據後也要繼續把向量P的數據輸出給基礎處理電路2。
每一個基礎處理電路對接收到的數據進行運算,該運算包括但不限於:內積運算、乘法運算、加法運算等等;在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;
在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,將結果從數據輸出介面傳輸出去(即傳輸給與其連接的其他基礎處理電路);在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;主處理電路接收到各個基礎處理電路內積運算的結果,將該結果處理得到最終結果(該處理可以為累加運算或激活運算等等)。
採用上述計算裝置實現矩陣乘向量方法的實施例:在一種可選方案中,方法所用到的多個基礎處理電路按照如下圖2d或者圖2e所示的方式排列;如圖2c所示,主處理電路的數據轉換運算電路將矩陣S和矩陣P轉換成定點類型的數據;主處理單元的控制電路將矩陣S的M行數據分成k組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Ai)的運算;此處對M行數據進行分組的方法是任意不會重復分配的分組方式;在一種可選方案中,採用如下分配方式:將第j行分給第j%k(%為取余數運算)個基礎處理電路;
在一種可選方案中,對於不能平均分組的情況也可以先對一部分行平均分配,對於剩下的行以任意方式分配。
主處理電路的控制電路每次將矩陣S中部分或全部行中的數據依次發送給對應的基礎處理電路;在一種可選方案中,主處理電路的控制電路每次向第i個基礎處理電路發送其負責的第i組數據Mi中的一行數據中的一個或多個數據;在一種可選方案中,主處理電路的控制電路每次向第i個基礎處理電路發送其負責的第i組數據Mi中的部分或全部行中的每行的一個或多個數據;主處理電路的控制電路將向量P中的數據依次向第1個基礎處理電路發送;在一種可選方案中,主處理電路的的控制電路每次可以發送向量P中的一個或多個數據;第i個基礎處理電路接收到向量P的數據之後發送給與其相連的第i+1個基礎處理電路;每個基礎處理電路接收到來自矩陣S中某一行或者某幾行中的一個或多個數據以及來自向量P的一個或多個數據後,進行運算(包括但不限於乘法或加法);在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;
在一種可選方案中,基礎處理電路接收到的數據也可以是中間結果,保存在寄存器和或片上緩存上;基礎處理電路將本地的計算結果傳輸給與其相連接的下一個基礎處理電路或者主處理電路;在一種可選方案中,對應於圖2d的結構,只有每列的最後一個基礎處理電路的輸出介面與主處理電路相連接的,這種情況下,只有最後一個基礎處理電路可以直接將本地的計算結果傳輸給主處理電路,其他基礎處理電路的計算結果都要傳遞給自己的下一個基礎處理電路,下一個基礎處理電路傳遞給下下個基礎處理電路直至全部傳輸給最後一個基礎處理電路,最後一個基礎處理電路將本地的計算結果以及接收到的本列的其他基礎處理電路的結果執行累加計算得到中間結果,將中間結果發送至主處理電路;當然還可以為最後一個基礎處理電路可以將本列的其他基礎處理電路的結果以及本地的處理結果直接發送給主處理電路。
在一種可選方案中,對應於圖2e的結構,每一個基礎處理電路都有與主處理電路相連接的輸出介面,這種情況下,每一個基礎處理電路都直接將本地的計算結果傳輸給主處理電路;基礎處理電路接收到其他基礎處理電路傳遞過來的計算結果之後,傳輸給與其相連接的下一個基礎處理電路或者主處理電路。
主處理電路接收到M個內積運算的結果,作為矩陣乘向量的運算結果。
使用所述電路裝置完成矩陣乘矩陣運算;
下面描述計算尺寸是M行L列的矩陣S和尺寸是L行N列的矩陣P的乘法的運算,(矩陣S中的每一行與矩陣P的每一列長度相同,如圖2f所示)
本方法使用所述裝置如圖1b所示的實施例進行說明;主處理電路的數據轉換運算電路將矩陣S和矩陣P轉換成定點類型的數據;主處理電路的控制電路將矩陣S的部分或全部行中的數據發送到通過橫向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中最上方的灰色填充的竪向數據通路);在一種可選方案中,主處理電路的控制電路將矩陣S中某行的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3行第1個數,第2次發送第3行數據中的第2個數,第3次發送第3行的第3個數......,或者第1次發送第3行前兩個數,第二次發送第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個數......;)
主處理電路的控制電路將矩陣P中的部分或全部列中的數據發送到通過竪向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中基礎處理電路陣列左側的灰色填充的橫向數據通路);在一種可選方案中,主處理電路的控制電路將矩陣P中某列的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第1次發送第3列第1個數,第2次發送第3列數據中的第2個數,第3次發送第3列的第3個數......,或者第1次發送第3列前兩個數,第二次發送第3列第3和第4個數,第三次發送第3列第5和第6個數......;)在一種可選方案中,主處理電路的控制電路將矩陣P中某幾列的數據每次各發送一個數者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第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的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到矩陣P的數據後,將該數據通過其竪向的數據輸出介面傳輸給
與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的竪向的數據通路);每一個基礎處理電路對接收到的數據進行運算;在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;向著能夠直接向主處理電路輸出的方向輸出結果(例如,圖lb中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果);
主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
「矩陣乘矩陣」方法的實施例:
方法用到按照如圖1b所示方式排列的基礎處理電路陣列,假設有h行,w列;主處理電路的數據轉換運算電路將矩陣S和矩陣P轉換成定點類型的數據;主處理電路的控制電路將矩陣S的h行數據分成h組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Hi)的運算;此處對h行數據進行分組的方法是任意不會重復分配的分組方式;在一種可選方案中,採用如下分配方式:主處理電路的控制電路將第j行分給第j%h個基礎處理電路;在一種可選方案中,對於不能平均分組的情況也可以先對一部分行平均分配,對於剩下的行以任意方式分配。
主處理電路的控制電路將矩陣P的W列數據分成w組,分別由第i個基礎處理電路負責第i組(該組數據中行的集合記為Wi)的運算;此處對W列數據進行分組的方法是任意不會重復分配的分組方式;在一種可選方案中,採用如下分配方式:主處理電路的控制電路將第j行分給第j%w個基礎處理電路;
在一種可選方案中,對於不能平均分組的情況也可以先對一部分列平均分配,對於剩下的列以任意方式分配。
主處理電路的控制電路將矩陣S的部分或全部行中的數據發送到基礎處理電路陣列中每行的第一個基礎處理電路;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i行的第一個基礎處理電路發送其負責的第i組數據Hi中的一行數據中的一個或多個數據;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i行的第一個基礎處理電路發送其負責的第i組數據Hi中的部分或全部行中的每行的一個或多個數據;主處理電路的控制電路將矩陣P的部分或全部列中的數據發送到基礎處理電路陣列中每列的第一個基礎處理電路;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i列的第一個基礎處理電路發送其負責的第i組數據Wi中的一列數據中的一個或多個數據;在一種可選方案中,主處理電路的控制電路每次向基礎處理電路陣列中第i列的第一個基礎處理電路發送其負責的第i組數據Ni中的部分或全部列中的每列的一個或多個數據;基礎處理電路接收到矩陣S的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到矩陣P的數據後,將該數據通過其竪向的數據輸出介面傳輸給
與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的竪向的數據通路);每一個基礎處理電路對接收到的數據進行運算;在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;向著能夠直接向主處理電路輸出的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果);
主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
以上描述中使用的「橫向」,「竪向」等詞語只是為了表述圖1b所示的例子,實際使用只需要區分出每個單元的「橫向」「竪向」介面代表兩個不同的介面即可。
使用所述電路裝置完成全連接運算:如果全連接層的輸入數據是一個向量(即神經網絡的輸入是單個樣本的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為向量P,按照所述裝置的使用矩陣乘以向量方法執行運算;如果全連接層的輸入數據是一個矩陣(即神經網絡的輸入是多個樣本的情況),則以全連接層的權值矩陣作為矩陣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所示的實施例進行說明;主處理電路的數據轉換運算電路可以將權值的部分或全部卷積核中的數據轉換成定點類型的數據,主處理電路的控制電路將權值的部分或全部卷積核中的數據發送到通過橫向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中最上方的灰色填充的竪向數據通路);在一種可選方案中,主處理電路的控制電路將權值中某個卷積核的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第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個數......;)主處理電路的控制電路把輸入數據按照卷積的位置進行劃分,主處理電路的控制電路將輸入數據中的部分或全部卷積位置中的數據發送到通過竪向數據輸入介面直接與主處理電路相連的那些基礎處理電路(例如,圖1b中基礎處理電路陣列左側的灰色填充的橫向數據通路);在一種可選方案中,主處理電路的控制電路將輸入數據中某個卷積位置的數據每次發送一個數或者一部分數給某個基礎處理電路;(例如,對於某一個基礎處理電路,第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個數......;)基礎處理電路接收到權值的數據之後,將該數據通過其橫向的數據輸出介面傳輸給其相連接下一個基礎處理電路(例如,圖1b中基
礎處理電路陣列中間的白色填充的橫向的數據通路);基礎處理電路接收到輸入數據的數據後,將該數據通過其竪向的數據輸出介面傳輸給與其相連接的下一個基礎處理電路(例如,圖1b中基礎處理電路陣列中間的白色填充的竪向的數據通路);每一個基礎處理電路對接收到的數據進行運算;在一種可選方案中,基礎處理電路每次計算一組或多組兩個數據的乘法,然後將結果累加到寄存器和/或片上緩存上;在一種可選方案中,基礎處理電路每次計算一組或多組兩個向量的內積,然後將結果累加到寄存器和/或片上緩存上;基礎處理電路計算出結果後,可以將結果從數據輸出介面傳輸出去;在一種可選方案中,該計算結果可以是內積運算的最終結果或中間結果;具體地,如果該基礎處理電路有直接與主處理電路相連接的輸出介面則從該介面傳輸結果,如果沒有,則向著能夠直接向主處理電路輸出的基礎處理電路的方向輸出結果(例如,圖1b中,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果)。
基礎處理電路接收到來自其他基礎處理電路的計算結果之後,將該數據傳輸給與其相連接的其他基礎處理電路或者主處理電路;
向著能夠直接向主處理電路輸出的方向輸出結果(例如,最下面一行基礎處理電路將其輸出結果直接輸出給主處理電路,其他基礎處理電路從竪向的輸出介面向下傳輸運算結果);主處理電路接收到各個基礎處理電路內積運算的結果,即可得到輸出結果。
使用所述電路裝置完成加偏置操作的方法;利用主處理電路的向量運算器電路可以實現兩個向量或者兩個矩陣相加的功能;利用主處理電路的向量運算器電路可以實現把一個向量加到一個矩陣的每一行上,或者每一個列上的功能。
在一種可選方案中,所述矩陣可以來自所述裝置執行矩陣乘矩陣運算的結果;在一種可選方案中,所述向量可以來自所述裝置執行矩陣乘向量運算的結果;在一種可選方案中,所述矩陣可以來自所述裝置的主處理電路從外部接受的數據。
在一種可選方案中,所述向量可以來自所述裝置的主處理電路從外部接受的數據。
包括但不限於以上這些數據來源。
使用所述電路裝置完成激活函數運算的方法:利用主處理電路的激活電路,輸入一向量,計算出該向量的激活向量;
在一種可選方案中,主處理電路的激活電路將輸入向量中的每一個值通過一個激活函數(激活函數的輸入是一個數值,輸出也是一個數值),計算出一個數值輸出到輸出向量的對應位置;在一種可選方案中,激活函數可以是:y=max(m,x),其中x是輸入數值,y是輸出數值,m是一個常數;在一種可選方案中,激活函數可以是:y=tanh(x),其中x是輸入數值,y是輸出數值;在一種可選方案中,激活函數可以是:y=sigmoid(x),其中x是輸入數值,y是輸出數值;在一種可選方案中,激活函數可以是一個分段線性函數;在一種可選方案中,激活函數可以是任意輸入一個數,輸出一個數的函數。
在一種可選方案中,輸入向量的來源有(包括但不限於):所述裝置的外部數據來源;在一種可選方案中,輸入數據來自所述裝置進行矩陣乘向量的運算結果;在一種可選方案中,輸入數據來自所述裝置進行矩陣乘矩陣的運算結果;所述裝置的主處理電路計算結果;在一種可選方案中,輸入數據來自所述裝置主處理電路實現加偏置之後的計算結果。
使用所述裝置實現BLAS(Basic Linear Algebra Subprograms)的方法;GEMM計算是指:BLAS庫中的矩陣-矩陣乘法的運算。該運算的通常表示形式為:C=alpha*op(S)*op(P)+beta*C,其中,A和B為輸入的兩個矩陣,C為輸出矩陣,alpha和beta為標量,op代表對矩陣S或P的某種操作,此外,還會有一些輔助的整數作為參數來說明矩陣的A和B的寬高;使用所述裝置實現GEMM計算的步驟為:主處理電路在進行OP操作之前可以將輸入矩陣S和矩陣P進行數據類型的轉換;主處理電路的轉換電路對輸入矩陣S和矩陣P進行各自相應的op操作;在一種可選方案中,op可以為矩陣的轉置操作;利用主處理電路的向量運算功能或者數據重排列功能(前面提到了主處理電路具有數據重排列的電路),實現矩陣轉置操作,當然在實際應用中,上述OP也可以直接通過轉換電路來實現,例如矩陣轉置操作時,直接通過矩陣轉置電路來實現OP操作;在一種可選方案中,某個矩陣的op可以為空,OP操作不進行;利用矩陣乘矩陣的計算方法完成op(S)與op(P)之間的矩陣乘法計算;利用主處理電路的算術邏輯電路對op(S)*op(P)的結果中的每一個值進行乘以alpha的操作;
在一種可選方案中,alpha為1的情況下乘以alpha操作不進行;利用主處理電路的算術邏輯電路實現beta*C的運算;在一種可選方案中,beta為1的情況下,不進行乘以beta操作;利用主處理電路的算術邏輯電路,實現矩陣alpha*op(S)*op(P)和beta*C之間對應位置相加的步驟;在一種可選方案中,beta為0的情況下,不進行相加操作;GEMV計算是指:BLAS庫中的矩陣-向量乘法的運算。該運算的通常表示形式為:C=alpha*op(S)*P+beta*C,其中,S為輸入矩陣,P為輸入的向量,C為輸出向量,alpha和beta為標量,op代表對矩陣S的某種操作;使用所述裝置實現GEMV計算的步驟為:主處理電路在進行OP操作之前可以將輸入矩陣S和矩陣P進行數據類型的轉換;主處理電路的轉換電路對輸入矩陣S進行相應的op操作;在一種可選方案中,op可以為矩陣的轉置操作;利用主處理電路的矩陣轉置電路實現矩陣轉置操作;在一種可選方案中,某個矩陣的op可以為空,op操作不進行;用矩陣乘向量的計算方法完成矩陣op(S)與向量P之間的矩陣-向量乘法計算;利用主處理電路的算術邏輯電路對op(S)*P的結果中的每一個值進行乘以alpha的操作;在一種可選方案中,alpha為1的情況下乘以alpha操作不進行;
利用主處理電路的算術邏輯電路,實現beta*C的運算;在一種可選方案中,beta為1的情況下,不進行乘以beta操作;利用主處理電路的算術邏輯電路,實現矩陣alpha*op(S)*P和beta*C之間對應位置相加的步驟;在一種可選方案中,beta為0的情況下,不進行相加操作;
實現數據類型轉換
利用主處理電路的數據類型轉換運算電路實現將數據類型的轉換;在一種可選方案中,數據類型轉化的形式包括但不限於:浮點數轉定點數和定點數轉浮點數等;更新權值的方法:利用主處理電路的向量運算器電路實現神經網絡訓練過程中的權值更新功能,具體地,權值更新是指使用權值的梯度來更新權值的方法。
在一種可選方案中,使用主處理電路的向量運算器電路對權值和權值梯度這兩個向量進行加減運算得到運算結果,該運算結果即為更新權值。
在一種可選方案中,使用主處理電路的向量運算器電路在權值以及權值梯度乘以或除以一個數得到中間權值和中間權值梯度值,向量運算器電路對中間權值和中間權值梯度值進行加減運算得到運算結果,該運算結果即為更新權值。
在一種可選方案中,可以先使用權值的梯度計算出一組動量,然後再使用動量與權值進行加減計算得到更新後的權值。
實現全連接層的反向運算的方法
全連接層的反向運算可以分成兩部分,如下圖中,實線箭頭表示全連接層的正向計算過程,虛線部分表示全連接層的反向計算過程。
從上圖可以看出來,可以使用裝置的使用所述裝置完成矩陣相乘運算的方法完成全連接層的反向運算;實現卷積層的反向運算;卷積層的反向運算可以分成兩部分,如下圖4a中,實線箭頭表示卷積層的正向計算過程,如圖4b所示,表示卷積層的反向計算過程。
圖4a、圖4b所示的卷積層的反向運算,可以使用如圖1a所示裝置採用如圖1b所示的裝置完成卷積層的反向運算。在執行正向運算或反向運算實際為神經網絡的多個運算,該多個運算包括但不限於:矩陣乘以矩陣、矩陣乘以向量、卷積運算、激活運算等等運算中的一種或任意組合,上述運算的方式可以本披露中的描述,這裡不在贅述。
本披露還揭露了一個神經網絡運算裝置,其包括一個或多個在如圖1a或如圖1b所示的芯片,用於從其他處理裝置中獲取待運算數據和控制信息,執行指定的神經網絡運算,執行結果通過I/O介面傳遞給外圍設備。外圍設備譬如攝像頭,顯示器,鼠標,鍵盤,網卡,wifi介面,服務器。當包含一個以上神如圖1a或如圖1b所示的芯片時,如
圖1a或如圖1b所示的芯片間可以通過特定的結構進行鏈接並傳輸數據,譬如,通過PCIE總線進行互聯並傳輸數據,以支持更大規模的神經網絡的運算。此時,可以共享同一控制系統,也可以有各自獨立的控制系統;可以共享內存,也可以每個加速器有各自的內存。此外,其互聯方式可以是任意互聯拓撲。
該神經網絡運算裝置具有較高的兼容性,可通過PCIE介面與各種類型的服務器相連接。
本披露還揭露了一個組合處理裝置,其包括上述的神經網絡運算裝置,通用互聯介面,和其他處理裝置(即通用處理裝置)。神經網絡運算裝置與其他處理裝置進行交互,共同完成用戶指定的操作。如4c下圖為組合處理裝置的示意圖。
其他處理裝置,包括中央處理器CPU、圖形處理器GPU、神經網絡處理器等通用/專用處理器中的一種或以上的處理器類型。其他處理裝置所包括的處理器數量不做限制。其他處理裝置作為神經網絡運算裝置與外部數據和控制的介面,包括數據搬運,完成對本神經網絡運算裝置的開啟、停止等基本控制;其他處理裝置也可以和神經網絡運算裝置協作共同完成運算任務。
通用互聯介面,用於在所述神經網絡運算裝置與其他處理裝置間傳輸數據和控制指令。該神經網絡運算裝置從其他處理裝置中獲取所需的輸入數據,寫入神經網絡運算裝置片上的存儲裝置;可以從其他處理裝置中獲取控制指令,寫入神經網絡運算裝置片上的控制緩
存;也可以讀取神經網絡運算裝置的存儲模塊中的數據並傳輸給其他處理裝置。
如圖4d所示,可選的,該結構還包括存儲裝置,用於保存在本運算單元/運算裝置或其他運算單元所需要的數據,尤其適用於所需要運算的數據在本神經網絡運算裝置或其他處理裝置的內部存儲中無法全部保存的數據。
該組合處理裝置可以作為手機、機器人、無人機、視頻監控設備等設備的SOC片上系統,有效降低控制部分的核心面積,提高處理速度,降低整體功耗。此情況時,該組合處理裝置的通用互聯介面與設備的某些部件相連接。某些部件譬如攝像頭,顯示器,鼠標,鍵盤,網卡,wifi介面。
本披露實施例提供了一種神經網絡處理器板卡,可用於眾多通用或專用的計算系統環境或配置中。例如:個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、智能家居、家電、多處理器系統、基於微處理器的系統、機器人、可編程的消費電子設備、網絡個人計算機(personal computer,PC)、小型計算機、大型計算機、包括以上任何系統或設備的分布式計算環境等等。
請參照圖5a,圖5a為本披露實施例提供的一種神經網絡處理器板卡的結構示意圖。如圖5a所示,上述神經網絡處理器板卡10包括神經網絡芯片封裝結構11、第一電氣及非電氣連接裝置12和第一基板(substrate)13。
本披露對於神經網絡芯片封裝結構11的具體結構不作限定,可選的,如圖5b所示,上述神經網絡芯片封裝結構11包括:神經網絡芯片111、第二電氣及非電氣連接裝置112、第二基板113。
本披露所涉及的神經網絡芯片111的具體形式不作限定,上述的神經網絡芯片111包含但不限於將神經網絡處理器集成的神經網絡晶片,上述晶片可以由硅材料、鍺材料、量子材料或分子材料等製成。根據實際情況(例如:較嚴苛的環境)和不同的應用需求可將上述神經網絡晶片進行封裝,以使神經網絡晶片的大部分被包裹住,而將神經網絡晶片上的引腳通過金線等導體連到封裝結構的外邊,用於和更外層進行電路連接。
本披露對於神經網絡芯片111的具體結構不作限定,可選的,請參照圖1a或圖1b所示的裝置,當然如圖1a或如圖1b在神經網絡芯片中也可以具有多個。
本披露對於第一基板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超儀和/或心電圖儀。
以上所述的具體實施例,對本披露的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本披露的具體實施例而已,並不用於限制本披露,凡在本披露的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本披露的保護範圍之內。
Claims (17)
- 一種集成電路芯片裝置,其中,該集成電路芯片裝置包括:一主處理電路以及多個基礎處理電路;該多個基礎處理電路呈陣列分布;每個基礎處理電路與相鄰的其他個基礎處理電路連接,該主處理電路連接該多個基礎處理電路中的k個基礎處理電路,該k個基礎處理電路為:第1行的n個基礎處理電路、第m行的n個基礎處理電路以及第1列的m個基礎處理電路,n為大於等於2的整數,該主處理電路將待計算的數據塊以及運算指令傳遞至第一行的n個基礎處理電路和第一列的m個基礎電路,再由第一行的n個基礎處理電路和第一列的m個基礎電路傳遞給與其相連接的下一個基礎處理電路;該k個基礎處理電路包括一數據類型轉換電路,用於執行浮點類型數據以及定點類型數據之間的轉換;該主處理電路,用於執行神經網絡運算中的各個連續的運算以及和該k個基礎處理電路傳輸數據;該k個基礎處理電路,用於依據傳輸數據和運算的類型確定是否啟動該數據類型轉換電路執行傳輸數據的數據類型的轉換,在該主處理電路以及該多個基礎處理電路之間的數據轉發;該多個基礎處理電路,用於依據傳輸數據以並行方式執行神經網絡中的運算,並將運算結果通過該k個基礎處理電路傳輸給該主處理電路。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中,該主處理電路,用於獲取該待計算的數據塊以及該運算指令,依據該運算指令對該待計算的數據塊劃分成一分發數據塊以及一廣播數據塊;對該分發數 據塊進行拆分處理得到多個基本數據塊,將該多個基本數據塊分發至該k個基礎處理電路,將該廣播數據塊廣播至該k個基礎處理電路;該k個基礎處理電路,用於依據接收到的基本數據塊、該廣播數據塊以及該運算指令將該基本數據塊、該廣播數據塊轉換成定點數據類型的基本數據塊、廣播數據塊,然後傳輸給與該k個基礎處理電路連接的基礎處理電路;該多個基礎處理電路,用於對該基本數據塊與該廣播數據塊以定點數據類型執行內積運算得到一定點數據類型運算結果;該k個基礎處理電路,還用於將該定點數據類型運算結果轉換成一浮點數據類型運算結果發送至該主處理電路;該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令的指令結果。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,該主處理電路,具體用於將該廣播數據塊通過一次廣播至該k個基礎處理電路。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,該主處理電路,用於在如該運算結果為內積處理的結果時,對該運算結果累加後得到一累加結果,將該累加結果排列得到該待計算的數據塊以及該運算指令的指令結果。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,該主處理電路,具體用於將該廣播數據塊分成多個部分廣播數據塊,將該多個部分廣播數據塊通過多次廣播至該k個基礎處理電路。
- 根據申請專利範圍第5項的集成電路芯片裝置,其中, 該k個基礎處理電路,用於將該部分廣播數據塊與該基本數據塊轉換成定點數據類型的數據傳輸給與該k個基礎處理電路連接的基礎處理電路;該多個基礎處理電路,具體用於將該部分廣播數據塊與該基本數據塊以定點數據類型執行一次內積處理後得到一定點數據類型的內積處理結果,將該定點數據類型的內積處理結果累加得到一定點數據類型的部分運算結果;該k個基礎處理電路,還用於將該定點類型的部分運算結果轉換成一浮點類型運算結果發送至該主處理電路。
- 根據申請專利範圍第6項的集成電路芯片裝置,其中,該多個基礎處理電路,具體用於復用β次該部分廣播數據塊以定點數據類型執行該部分廣播數據塊與β個基本數據塊內積運算得到定點數據類型β個部分處理結果,將定點數據類型β個部分處理結果分別累加後得到定點數據類型β個部分運算結果;該k個基礎處理電路,用於啟動該數據類型運算電路將該定點數據類型β個部分運算結果轉換成浮點類型數據類型β個部分運算結果發送至該主處理電路,該β為大於等於2的整數。
- 根據申請專利範圍第1-7項任一項的集成電路芯片裝置,其中,該主處理電路包括:主寄存器或主片上緩存電路;該多個基礎處理電路包括:基本寄存器或基本片上緩存電路。
- 根據申請專利範圍第8項的集成電路芯片裝置,其中,該主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路、數據類型運算電路或數據重排電路中的一種或任意組合。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中,該數據為:向量、矩陣、三維數據塊、四維數據塊以及α維數據塊中一種或任意組合。
- 根據申請專利範圍第2項的集成電路芯片裝置,其中,如該運算指令為乘法指令,該主處理電路確定乘數數據塊為該廣播數據塊,被乘數數據塊為該分發數據塊;如該運算指令為卷積指令,該主處理電路確定輸入數據塊為該廣播數據塊,卷積核為該分發數據塊。
- 一種神經網絡運算裝置,其中,該神經網絡運算裝置包括一個或多個如申請專利範圍第1-11項任意一項該的集成電路芯片裝置。
- 一種組合處理裝置,其中,該組合處理裝置包括:如申請專利範圍第12項的一神經網絡運算裝置、一通用互聯介面和一通用處理裝置;該神經網絡運算裝置通過該通用互聯介面與該通用處理裝置連接。
- 一種芯片,其中,該芯片集成如申請專利範圍第1-13項任意一項的裝置。
- 一種智能設備,其中,該智能設備包括如申請專利範圍第14項的芯片。
- 一種神經網絡的運算方法,其中,該方法應用在一集成電路芯片裝置內,該集成電路芯片裝置包括:如申請專利範圍第1-11項任意一項該的集成電路芯片裝置,該集成電路芯片裝置用於執行神經網絡的運算。
- 根據申請專利範圍第16項的方法,其中,該神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏執運算、全連接運算、GEMM運算、GEMV運算、激活運算中的一種或任意組合。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| ??201711347310.0 | 2017-12-14 | ||
| CN201711347310.0 | 2017-12-14 | ||
| CN201711347310.0A CN109961133B (zh) | 2017-12-14 | 2017-12-14 | 集成电路芯片装置及相关产品 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201933191A TW201933191A (zh) | 2019-08-16 |
| TWI768160B true TWI768160B (zh) | 2022-06-21 |
Family
ID=67018627
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW107144036A TWI768160B (zh) | 2017-12-14 | 2018-12-07 | 集成電路芯片裝置及相關產品 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN109961133B (zh) |
| TW (1) | TWI768160B (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201447519A (zh) * | 2013-02-19 | 2014-12-16 | Empire Technology Dev Llc | 在一可編程邏輯電路中測試及修復一硬體加速器影像 |
| US20150269481A1 (en) * | 2014-03-24 | 2015-09-24 | Qualcomm Incorporated | Differential encoding in neural networks |
| TW201617977A (zh) * | 2014-07-22 | 2016-05-16 | 英特爾股份有限公司 | 用於卷積神經網路的權重位移機構 |
| CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
| CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102981854A (zh) * | 2012-11-16 | 2013-03-20 | 天津市天祥世联网络科技有限公司 | 基于浮点数运算内联函数库的神经网络优化方法 |
| US10373050B2 (en) * | 2015-05-08 | 2019-08-06 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
| GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
| CN106228240B (zh) * | 2016-07-30 | 2020-09-01 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
| CN106485317A (zh) * | 2016-09-26 | 2017-03-08 | 上海新储集成电路有限公司 | 一种神经网络加速器以及神经网络模型的实现方法 |
| CN106940815B (zh) * | 2017-02-13 | 2020-07-28 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
| US10650303B2 (en) * | 2017-02-14 | 2020-05-12 | Google Llc | Implementing neural networks in fixed point arithmetic computing systems |
| CN107066239A (zh) * | 2017-03-01 | 2017-08-18 | 智擎信息系统(上海)有限公司 | 一种实现卷积神经网络前向计算的硬件结构 |
-
2017
- 2017-12-14 CN CN201711347310.0A patent/CN109961133B/zh active Active
-
2018
- 2018-12-07 TW TW107144036A patent/TWI768160B/zh active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201447519A (zh) * | 2013-02-19 | 2014-12-16 | Empire Technology Dev Llc | 在一可編程邏輯電路中測試及修復一硬體加速器影像 |
| US20150269481A1 (en) * | 2014-03-24 | 2015-09-24 | Qualcomm Incorporated | Differential encoding in neural networks |
| TW201617977A (zh) * | 2014-07-22 | 2016-05-16 | 英特爾股份有限公司 | 用於卷積神經網路的權重位移機構 |
| CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
| CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN109961133B (zh) | 2020-04-24 |
| CN109961133A (zh) | 2019-07-02 |
| TW201933191A (zh) | 2019-08-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11748605B2 (en) | Integrated circuit chip device | |
| TWI793225B (zh) | 神經網絡訓練方法及相關產品 | |
| TWI768159B (zh) | 集成電路芯片裝置及相關產品 | |
| WO2019114842A1 (zh) | 一种集成电路芯片装置 | |
| TWI791725B (zh) | 神經網絡運算方法、集成電路芯片裝置及相關產品 | |
| TWI767097B (zh) | 集成電路芯片裝置及相關產品 | |
| CN109961136B (zh) | 集成电路芯片装置及相关产品 | |
| TWI767098B (zh) | 神經網絡正向運算方法及相關產品 | |
| TWI793224B (zh) | 集成電路芯片裝置及相關產品 | |
| CN110197264B (zh) | 神经网络处理器板卡及相关产品 | |
| CN109977446B (zh) | 集成电路芯片装置及相关产品 | |
| TWI768160B (zh) | 集成電路芯片裝置及相關產品 | |
| CN109978152B (zh) | 集成电路芯片装置及相关产品 | |
| CN110197267B (zh) | 神经网络处理器板卡及相关产品 | |
| CN109978156B (zh) | 集成电路芯片装置及相关产品 | |
| CN109978148B (zh) | 集成电路芯片装置及相关产品 | |
| TWI795482B (zh) | 集成電路芯片裝置及相關產品 | |
| WO2019165946A1 (zh) | 集成电路芯片装置、板卡及相关产品 | |
| CN109977071A (zh) | 神经网络处理器板卡及相关产品 | |
| CN109978153A (zh) | 集成电路芯片装置及相关产品 | |
| CN109978130A (zh) | 集成电路芯片装置及相关产品 |