TWI715281B - 用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體 - Google Patents

用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體 Download PDF

Info

Publication number
TWI715281B
TWI715281B TW108140289A TW108140289A TWI715281B TW I715281 B TWI715281 B TW I715281B TW 108140289 A TW108140289 A TW 108140289A TW 108140289 A TW108140289 A TW 108140289A TW I715281 B TWI715281 B TW I715281B
Authority
TW
Taiwan
Prior art keywords
chip
stage data
data
memory
stage
Prior art date
Application number
TW108140289A
Other languages
English (en)
Other versions
TW202038143A (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 TW202038143A publication Critical patent/TW202038143A/zh
Application granted granted Critical
Publication of TWI715281B publication Critical patent/TWI715281B/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

本揭示提供一種用於實現神經網路應用的資料處理方法、多晶片系統、和非暫態電腦可讀取媒體。資料處理方法包括:分配相應的晶片來處理第一階段資料的相應部分和第二階段資料的相應部分;第一晶片將第一階段資料的第一部分通過通道傳送到第二晶片;第二晶片將第一階段資料的第二部分通過通道傳送到第一晶片;第一晶片計算第一階段資料與權重值的第一部分以獲得第一結果,並第二晶片計算第一階段資料與權重值的第二部分以獲得第二結果,其中第一結果和第二結果皆是第二階段資料的其中之一。

Description

用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體
本發明關於多晶片系統領域,特別是關於一種用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體。
人工神經網路(artificial neural network)是參照生物腦的計算模型。在神經網路中,被稱為神經元的節點可以互連並共同操作以處理輸入資料。不同類型的神經網路的範例包括但不限於卷積神經網路(convolutional neural network)、遞迴神經網路(recurrent neural network)、深度信念網路(deep belief network),受限玻爾茲曼機(restricted Boltzman machine)等。在前饋神經網路中,神經網路的神經元與其他神經元有鏈接,且鏈路僅在一個方向上延伸(即向前方向)通過神經網路。
可以利用神經網路從複雜的輸入資料中提取「特徵值」。神經網路可以包括多個層。每個層接收輸入資料並通過處理層的輸入資料生成輸出資 料。輸出資料可以是神經網路通過將輸入圖像或特徵值圖與卷積核(convolution kernel)卷積運算而產生的輸入資料的特徵值圖。在卷積神經網路加速晶片的實現中,由於不可能指定加速資源的具體數量,晶片級並行化處理的可能性是最重要的部分之一。每個晶片中加速元件的同步和資料共享始終是關鍵問題。
有鑑於此,有必要提供一種用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體,以解決習知技術的問題。
為了解決上述技術問題,本揭示的目的在於提供一種多晶片系統,一種多晶片系統、資料處理方法、和非暫態電腦可讀取媒體,以更有效地實現晶片級並行化處理。
為了達到上述目的,本揭示提供一種適用於多晶片系統的資料處理方法,用於實現神經網路應用,其中該多晶片系統包括:一通道、一第一晶片、和與該通道連接之一第二晶片,其中該神經網路應用包括一第一階段資料、一第二階段資料、一第三階段資料、和複數個權重值,其中該資料處理方法包括:分配該第一晶片來處理該第一階段資料的一第一部分、該第二階段資料的一第一部分、以及該第三階段資料的一第一部分,以及並分配該第二晶片來處理該第一階段資料的一第二部分、該第二階段資料的一第二部分、以及該第三階段資料的一第二部分;該第一晶片獲取對應該第二階段資料的該複數個權重值的一第一部分;該第二晶片獲取對應該第二階段資料的該複數個權重值的一第二部分;該第一晶片獲取該第一階段資料的該第一部分;該第一晶片將該第 一階段資料的該第一部分通過該通道傳送到該第二晶片;該第二晶片接收該第一階段資料的該第一部分;該第二晶片獲取該第一階段資料的該第二部分;該第二晶片將該第一階段資料的該第二部分通過該通道傳送到該第一晶片;該第一晶片接收該第一階段資料的該第二部分;該第一晶片計算該第一階段資料與該複數個權重值的該第一部分以獲得一第一結果,其中該第一結果是該第二階段資料的其中之一;以及該第二晶片計算該第一階段資料與該複數個權重值的該第二部分以獲得一第二結果,其中該第二結果是該第二階段資料的其中之一。
本揭示的其中之一實施例中,在獲得該第一結果和該第二結果之後,該資料處理方法還包括:該第一晶片獲取對應該第二階段資料的該複數個權重值的一第三部分;該第二晶片獲取對應該第二階段資料的該複數個權重值的一第四部分;該第一晶片獲取該第一階段資料的該第一部分;該第一晶片將該第一階段資料的該第一部分通過該通道傳送到該第二晶片;該第二晶片接收該第一階段資料的該第一部分;該第二晶片獲取該第一階段資料的該第二部分;該第二晶片將第一階段資料的該第二部分通過該通道傳送到該第一晶片;該第一晶片接收該第一階段資料的該第二部分;該第一晶片計算該第一階段資料與該複數個權重值的該第三部分以獲得一第三結果,其中該第三結果是該第二階段資料的其中之一;以及該第二晶片計算該第一階段資料與該複數個權重值的該第四部分以獲得一第四結果,其中該第四結果是該第二階段資料的其中之一。
本揭示的其中之一實施例中,在獲得該第一結果、該第二結果、該第三結果、和該第四結果之後,該資料處理方法還包括:依序地分配該第一 結果、該第三結果、該第二結果、和該第四結果作為該第二階段資料的輸入資料。
本揭示的其中之一實施例中,該多晶片系統還包括一第一記憶體和一第二記憶體,並且該第一記憶體與該第一晶片相連,以及該第二記憶體與該第二晶片相連;其中該第一記憶體包括一第一區和一第二區,以及該第二記憶體包括一第三區和一第四區;以及其中該第一階段資料的該第一部分儲存在該第一記憶體的該第一區中,以及該第二階段資料的該第一部分儲存在該第一記憶體的該第二區,並且該第一階段資料的該第二部分儲存在該第二記憶體的該第三區,以及該第二階段資料的該第二部分儲存在該第二記憶體的該第四區。
本揭示的其中之一實施例中,該資料處理方法還包括:從該第一記憶體中擦除該第一階段資料的該第一部分,並從該第二記憶體中擦除該第一階段資料的該第二部分;以及將該第一記憶體的該第二區和該第二記憶體的該第四區轉換成輸入資料儲存區域。
本揭示的其中之一實施例中,該多晶片系統還包括與該第一晶片和該第二晶片連接的一記憶體和配置成連接該第一晶片和該第二晶片的複數條傳輸線;其中該記憶體包括一第一區和一第二區;以及其中該第一階段資料儲存在該記憶體的該第一區,以及該第二階段資料儲存在該記憶體的該第二區。
本揭示還提供一種用於實現神經網路應用的多晶片系統,其中所述神經網路應用包括一第一階段資料、一第二階段資料、一第三階段資料、和複數個權重值,該多晶片系統包括:一資料通道;一第一晶片和一第二晶片,其中該第一晶片和該第二晶片連接該資料通道;一儲存器;以及一處理器,其中該多晶片系統的複數個電腦代碼儲存在該儲存器中並且被配置為由該處理器 執行以執行一資料處理方法,該資料處理方法包括:分配該第一晶片來處理該第一階段資料的一第一部分、該第二階段資料的一第一部分、以及該第三階段資料的一第一部分,以及並分配該第二晶片來處理該第一階段資料的一第二部分、該第二階段資料的一第二部分、以及該第三階段資料的一第二部分;該第一晶片獲取對應該第二階段資料的該複數個權重值的一第一部分;該第二晶片獲取對應該第二階段資料的該複數個權重值的一第二部分;該第一晶片獲取該第一階段資料的該第一部分;該第一晶片將該第一階段資料的該第一部分通過該資料通道傳送到該第二晶片;該第二晶片接收該第一階段資料的該第一部分;該第二晶片獲取該第一階段資料的該第二部分;該第二晶片將該第一階段資料的該第二部分通過該資料通道傳送到該第一晶片;該第一晶片接收該第一階段資料的該第二部分;該第一晶片計算該第一階段資料與該複數個權重值的該第一部分以獲得一第一結果,其中該第一結果是該第二階段資料的其中之一;以及該第二晶片計算該第一階段資料與該複數個權重值的該第二部分以獲得一第二結果,其中該第二結果是該第二階段資料的其中之一。
本揭示的其中之一實施例中,該資料處理方法還包括:該第一晶片獲取對應該第二階段資料的該複數個權重值的一第三部分;該第二晶片獲取對應該第二階段資料的該複數個權重值的一第四部分;該第一晶片獲取該第一階段資料的該第一部分;該第一晶片將該第一階段資料的該第一部分通過該資料通道傳送到該第二晶片;該第二晶片接收該第一階段資料的該第一部分;該第二晶片獲取該第一階段資料的該第二部分;該第二晶片將第一階段資料的該第二部分通過該資料通道傳送到該第一晶片;該第一晶片接收該第一階段資料的該第二部分;該第一晶片計算該第一階段資料與該複數個權重值的該第三部 分以獲得一第三結果,其中該第三結果是該第二階段資料的其中之一;以及該第二晶片計算該第一階段資料與該複數個權重值的該第四部分以獲得一第四結果,其中該第四結果是該第二階段資料的其中之一。
本揭示的其中之一實施例中,該資料處理方法還包括:依序地分配該第一結果、該第三結果、該第二結果、和該第四結果作為該第二階段資料的輸入資料。
本揭示的其中之一實施例中,該多晶片系統還包括一第一記憶體和一第二記憶體,並且該第一記憶體與該第一晶片相連,以及該第二記憶體與該第二晶片相連;其中該第一記憶體包括一第一區和一第二區,以及該第二記憶體包括一第三區和一第四區;以及其中該第一階段資料的該第一部分儲存在該第一記憶體的該第一區中,以及該第二階段資料的該第一部分儲存在該第一記憶體的該第二區,並且該第一階段資料的該第二部分儲存在該第二記憶體的該第三區,以及該第二階段資料的該第二部分儲存在該第二記憶體的該第四區。
本揭示的其中之一實施例中,該資料處理方法還包括:從該第一記憶體中擦除該第一階段資料的該第一部分,並從該第二記憶體中擦除該第一階段資料的該第二部分;以及將該第一記憶體的該第二區和該第二記憶體的該第四區轉換成輸入資料儲存區域。
本揭示的其中之一實施例中,該多晶片系統還包括與該第一晶片和該第二晶片連接的一記憶體和配置成連接該第一晶片和該第二晶片的複數條傳輸線;其中該記憶體包括一第一區和一第二區;其中該第一階段資料儲存在該記憶體的該第一區,以及該第二階段資料儲存在該記憶體的該第二區;以及 其中每一該第一晶片和該第二晶片經由該複數條傳輸線中的至少一條從該記憶體獲得該第一階段資料。
本揭示還一種用於在多晶片系統中實現神經網路應用的非暫態電腦可讀取媒體,該非暫態電腦可讀取媒體內記錄有複數個程式碼,該複數個程式碼由一處理器執行並且包括:A,設置該神經網路應用的複數個輸入神經元和複數個輸出神經元,其中每個該複數個輸出神經元通過複數個突觸連接到該複數個輸入神經元,用於根據複數個權重值來加權來自該複數個輸入神經元的複數個輸出;B,等待對應該複數個輸入神經元的第一階段資料通過一通道;C,計算相應的權重值與部分的該第一階段資料;D,同時計算對應於該複數個輸出神經元的第二階段資料;E,確定是否計算完所有的該複數個權重值,如果是,則進入F,如果不是,則返回B;F,將該第二階段資料保持在一記憶體上;G,為該複數個輸出神經元設置該第二階段資料;以及H,確定是否所有已分配的該複數個輸出神經元都已完成計算,如果是,則切換到下一層應用,如果不是,則調用一新的通道任務並返回到A。
本揭示的其中之一實施例中,在執行該新的通道任務中該處理器執行的該複數個程式碼還包含:I,從該記憶體加載該第一階段資料;J,通過該通道播送該第一階段資料;K,確定該第一階段資料是否完全播送,如果是,則進入L,如果不是,則返回J;以及L,確定是否計算完所有的該第一階段資料,如果是,則該新的通道任務結束,如果否,則回到I。
本揭示的其中之一實施例中,在執行該切換到下一層應用中該處理器執行的該複數個程式碼還包括:M,設置該記憶體的輸入點位作為輸出點位;以及N,設置該記憶體的該輸出點位作為該輸入點位。
相較於習知技術,本揭示提供了一種能夠並行運行的多晶片系統。為了提高機器學習加速晶片的性能,本揭示提供了一種用於多晶片系統的廣播通道,它是一種基於具有該功能的形式的市場需求的實現的結構設計理念。為了實現這一點,在本揭示中,每個晶片的輸入特徵值被部分地傳輸和共享,並且可以通過在其他晶片中同時使用它來計算群集,計算結果為最終輸出神經元數值,並再次作為下一層的輸入資料。這使我們能夠利用多晶片系統實現高性能、低成本、以及滿足市場需求。
110:廣播通道
C1:第一晶片
C2:第二晶片
C3:第三晶片
C4:第四晶片
CN:第N個晶片
I1~IM、IM+1~I2M、I(N-1)M+1~INM:輸入特徵值
O1~OK、OK+1~O2K、O(N-1)K+1~ONK:輸出特徵值
1:神經網路
2、3、5:神經元
4、6:突觸
L1:第一層
L2:第二層
L3:第三層
A0~AC:第一階段資料
N0~Nf:第二階段資料
B0~BC:第三階段資料
W00~W03:權重值
10:多晶片系統
130:控制器
131:儲存器
132:處理器
S1~SN、S:記憶體
Z1:第一區
Z2:第二區
Z3:第三區
Z4:第四區
1000、0100、0010、0001:索引
E:對應第4圖的部分
1201:計算陣列
1202:緩衝器
1203:儲存器控制器
1204:通訊通道
1205:物理介面
20:多晶片系統
210:廣播通道
230:控制器
260:傳輸線
261:共享終端
30:電腦系統
310:處理器
320:儲存媒體
330:外圍設備
第1圖顯示根據本揭示的資料處理過程的簡易方塊圖;第2圖顯示根據本揭示的第一較佳實施例的神經網路的簡易方塊圖;第3圖顯示用於實現第2圖的神經網路應用的多晶片系統之示意圖;第4圖顯示第3圖的E部分的特定結構的示意圖;第5圖顯示根據本揭示的第二較佳實施例的多晶片系統之示意圖;以及第6圖顯示本揭示的一較佳實施例的示例性電腦系統的方塊圖。
為了讓本揭示之上述及其他目的、特徵、優點能更明顯易懂,下文將特舉本揭示較佳實施例,並配合所附圖式,作詳細說明如下。
請參考第1圖,其顯示根據本揭示的資料處理過程的簡易方塊圖。該資料處理過程適用於實現神經網路應用的多晶片系統。多晶片系統至少包括:廣播通道110和與廣播通道110連接的多個晶片C1~CN,其中每個晶片 C1~CN具有內置計數器,以顯示其自身的廣播順序。如第1圖所示,每個晶片C1~CN分配多個輸入特徵值。例如,第一晶片C1分配輸入特徵值I1、I2、IM等。在資料處理過程中,每個晶片C1~CN通過廣播通道110發送要分配給其他晶片的輸入特徵值。接著,晶片C1~CN根據接收到的輸入特徵值進行處理且並行地計算輸出特徵值,例如輸出特徵值O1、O2、OM。下面將詳細描述用於實現本揭示的神經網路應用的多晶片系統和適用於多晶片系統的資料處理方法的具體實施方式。
請參照第2圖,其顯示根據本揭示的第一較佳實施例的神經網路1的簡易方塊圖。神經網路1包括複數個層(包括第一層L1、第二層L2、和第三層L3)、第一層L1中的複數個神經元2、第二層L2中的複數個神經元3、以及第三層L3中的複數個神經元5。輸入圖為第一層L1創建一組值。第一層L1可以通過將輸入圖的像素直接映射到第一層L1中的特定神經元來生成,使得神經元2與第一階段資料之一部分(例如A0、A1、A2、A3、A4、AC等)相關聯,這取決於像素是否表現出特定屬性。根據神經網路的變化和創建的問題來解決,神經網路1的每一層可能具有不同數量的神經元,並且這些可能與複數個輸入特徵值(如,第一階段資料A0~AC)有關,也可能與之無關。
如第2圖所示,如果第一層L1是神經網路1的輸入層而第二層L2是輸出層,則神經元2作為輸入神經元,神經元3作為輸出神經元。第一層L1中的輸入神經元2連接到第二層L2中的輸出神經元3。在神經網路1中,特定層中的每個神經元藉由複數個突觸4和複數個突觸6連接到下一層中的神經元,以根據突觸權重值從輸入神經元輸出權重值(例如W00、W01等)。接著,第二層L2中的輸出神經元3從第一層L1中的每個輸入神經元2接收第一階段資 料A0~AC。然後,將第一階段資料A0~AC求和,並將該和與偏差進行比較,並且該值後續可以作為下一層的神經元的輸入特徵值(即第二階段資料N0~Nf)。該計算繼續神經網路1的各個層執行,直到它到達最後一層。例如,如果第三層L3是最終層,則第二層L2是神經網路1的輸入層,第三層L3是輸出層。神經元3作為輸入神經元,神經元5作為輸出神經元。接著,第三層L3中的輸出神經元5從第二層L2中的每個輸入神經元3接收第二階段資料N0~Nf。然後將第二階段資料N0~Nf求和,並將該和與偏差進行比較,並且所獲得的值是第三階段資料B0~Bc
請參照第3圖,其顯示用於實現第2圖的神經網路應用的多晶片系統10之示意圖。神經網路1由多晶片系統10實施,且多晶片系統10包括廣播通道110、複數個晶片(例如,第一晶片C1、第二晶片C2、第N個晶片CN等)、控制器130、和複數個記憶體S1~SN。廣播通道110與複數個晶片C1~CN連接。廣播通道110用於從晶片傳送資料到其他晶片。在一個實施例中,晶片C1~CN包含加速晶片。每一晶片C1~CN與其中之一記憶體S1~SN連接。所有晶片的唯一索引(例如0001、0010、0100、1000)都是物理分配的。
在本揭示中,其中之一晶片C1~CN通過預定義協議分配為主晶片(即,以主模式操作),其佔據廣播通道110並執行資料總線操作。所有剩餘的晶片都以從屬模式運行並接收資料。具體來說,當第一階段資料A0~AC通過廣播通道110順序發送時,廣播通道110的操作協議使得其中之一晶片成為主晶片而另一個晶片作為從屬晶片操作。主模式是晶片的操作模式,用以維持對計算晶片的控制。在一實施例中,當在主模式下操作時,晶片可以進一步控制和管 理在從屬模式下操作的其他晶片。從屬模式是其中一個晶片的操作模式,用以允許在主模式下操作的其他晶片控制和管理它。
請參照第4圖,其顯示第3圖的E部分的特定結構的示意圖。第一晶片C1包括計算陣列1201、緩衝器1202、儲存器控制器1203、通訊通道1204、和物理介面1205。較佳地,廣播通道110採用多點低壓差分信號(multipoint low voltage differential signaling,LVDS)物理通道,並且通訊通道1204採用標準化物理通道,例如兩個通用序列匯流排(universal serial bus,USB)或行動產業處理器介面(mobile industry processor interface,MIPI)。如果第一晶片C1在主模式下操作,則其他晶片C2~CN在從屬模式下操作。此外,其他晶片的C2~CN中的每一個包括與第一晶片C1類似的元件。
如第2圖和第3圖所示,多晶片系統10的控制器130包括儲存器131和處理器132。多晶片系統10的複數個電腦代碼儲存在儲存器131中,該儲存器131被配置為由處理器132執行以執行資料處理方法。資料處理方法包括如下步驟:首先,將神經網路1的一個或多個不同的複數個輸入神經元2、複數個輸出神經元3、和複數個神經元5分配給複數個晶片C1~CN中的每一個。也就是說,複數個輸入神經元2、複數個輸出神經元3、和複數個神經元5被每一個晶片C1~CN佔據。此外,與神經網路1的複數個輸入神經元2相關聯的第一階段資料A0~AC儲存在多晶片系統10的相應記憶體S1~SN中。具體地,神經網路1的第一至第三個輸入神經元2被第一晶片C1佔據,並且第一至第三個輸入神經元2分別與第一階段資料A0~A2的第一部分相關聯。也就是說,第一晶片C1被分配用於處理第一階段資料的第一部分A0~A2、第二階段資料的第一部分(N0和N1)、以及第三階段資料的第一部分B0。類似地,第二晶片C2被分配用於處 理第一階段資料的第二部分A3~A5、第二階段資料N2的第二部分(N2和N3)、以及第三階段資料的第二部分B1
如第2圖和第3圖所示,第一階段資料的第一部分A0~A2儲存在第一記憶體S1中,第一階段資料的第二部分A3~A5儲存在第二記憶體S2中。在神經網路1的神經元2、神經元3、和神經元5被分配給複數個晶片中的每一個之後,複數個晶片中的每一個獲取對應第二階段資料N0~Nf的權重值的對應部分。舉例來說,第一晶片C1獲取對應第二階段資料N0~Nf的權重值的第一部分(例如,W00等),並且第二晶片C2獲取對應第二階段資料N0~Nf的權重值的二部分(例如,W02等)。
接著,每一個晶片C1~CN通過廣播通道110順序地獲取第一階段資料A0~Ac的相應部分並將其傳送到其他晶片。在主晶片順序地發送它的所有資料之後,下一個晶片成為主晶片並執行相同的操作,並且剩餘的晶片成為用於接收資料的從屬晶片。也就是說,一旦主晶片的第一階段資料的所有相應部分被共享到其他晶片,具有第一階段資料的另一對應部分的下一個晶片就成為主晶片直到其第一階段資料耗盡。舉例來說,如果第一晶片C1是主晶片,則第一晶片C1獲取第一階段資料的第一部分A0~A2,並通過廣播通道110將第一階段資料的第一部分A0~A2傳送到第二晶片C2,使得第二晶片C2接收第一階段資料的第一部分A0~A2。類似地,第一晶片C1順序地將第一階段資料的第一部分A0~A2傳送到其他晶片C3~CN,使得其他晶片C3~CN順序地接收第一階段資料的第一部分A0~A2。在第一晶片C1的第一階段資料的第一部分A0~A2與其他晶片C2~CN共享之後,下一個晶片(即具有第一階段資料的第二部分A3~A5的第二晶片C2)成為主晶片。接著,第二晶片C2獲取第一階段資料的第二部分A3~A5, 並通過廣播通道110將第一階段資料的第二部分A3~A5傳送到第一晶片C1,使得第一晶片C1接收第一階段資料的第二部分A3~A5。接著,第二晶片C2順序地將第一階段資料的第二部分A3~A5傳送到其他晶片C3~CN,使得其他晶片C3~CN順序地接收第一階段資料的第二部分A3~A5。因此,第一晶片C1先獲得所有的第一階段資料A0~Ac,然後是第二晶片C2,依此類推。
在其中之一晶片C1~CN接收到第一階段資料A0~Ac之後,相應的晶片計算第一階段資料A0~Ac與相應的突觸權重值而產生權重值輸出。也就是說,複數個晶片C1~CN根據其輸出函數並行地計算來自複數個輸入神經元的總權重值輸出的第一階段資料A0~Ac。舉例來說,第一晶片C1藉由計算陣列1201計算第一階段資料A0~Ac和權重值的第一部分(例如,W00等),以獲得第一結果N0,其中第一結果N0是第二階段資料N0~Nf的其中之一。接著,第二晶片C2計算第一階段資料A0~Ac和權重值的第二部分(例如,W02等),以獲得第二結果N2,其中第二結果N2是第二階段資料N0~Nf的其中之一。
晶片C1~CN重複執行以上獲取和順序地傳輸步驟,直到所有晶片C1~CN通過廣播通道110彼此傳送第一階段資料A0~Ac,並因此完成第二階段資料N0~Nf。具體地,在獲得第二階段資料N0~Nf的第一結果N0和第二結果N2之後,第一晶片C1獲取對應第二階段資料N0~Nf的權重值的第三部分(例如,W01),以及第二晶片C2獲取對應於第二階段資料N0~Nf的權重值的第四部分(例如,W03等)。接著,每一個晶片C1~CN再次通過廣播通道110順序地獲取第一階段資料A0~Ac的相應部分並將其傳送到其他晶片。在主晶片順序地發送它的所有資料之後,下一個晶片成為主晶片並執行相同的操作,並且剩餘的晶片成為用於接收資料的從屬晶片。也就是說,一旦主晶片的第一階段資料的所有對應部分 被共享到其他晶片,具有第一階段資料的另一對應部分的下一個晶片變為主晶片直到其第一階段資料耗盡。例如,如果第一晶片C1是主晶片,則第一晶片C1獲取第一階段資料的第一部分A0~A2,並通過廣播通道110傳送第一階段資料的第一部分A0~A2到第二晶片C2,使得第二晶片C2接收第一階段資料的第一部分A0~A2。類似地,第一晶片C1順序地將第一階段資料的第一部分A0~A2傳送到其他晶片C3~CN,使得其他晶片C3~CN順序地接收第一階段資料的第一部分A0~A2。在第一晶片C1的第一階段資料的第一部分A0~A2與其他晶片C2~CN共享之後,下一個晶片(即具有第一階段資料的第二部分A3~A5的第二晶片C2)成為主晶片。然後,第二晶片C2獲取第一階段資料的第二部分A3~A5,並通過廣播通道110將第一階段資料的第二部分A3~A5傳送到第一晶片C1,使得第一晶片C1接收第一階段資料的第二部分A3~A5。然後,第二晶片C2順序地將第一階段資料的第二部分A3~A5傳送到其他晶片C3~CN,使得其他晶片C3~CN順序地接收第一階段資料的第二部分A3~A5。因此,第一晶片C11首先獲得所有的第一階段資料A0~Ac,然後是第二晶片C2,依此類推。
在其中之一晶片C1~CN接收到其中之一第一階段資料A0~Ac之後,相應的晶片計算相應的突觸權重值與第一階段資料A0~Ac以產生權重值輸出。也就是說,複數個晶片C1~CN根據其輸出函數並行地計算來自複數個輸入神經元的總權重值輸出的第一階段資料A0~Ac。舉例來說,第一晶片C1藉由計算陣列1201計算第一階段資料A0~Ac和權重值的第三部分(例如,W01等),以獲得第三結果N1,其中第三結果N1是第二階段資料N0~Nf的其中之一。接著,第二晶片C2計算第一階段資料A0~Ac和權重值的第四部分(例如,W03等),以獲得第四結果N3,其中第四結果N3是第二階段資料N0~Nf的其中之一。這種順序地 處理的原因是由於所有晶片的C1~CN都具有部分本地化的輸入神經元。通過以下事實使得每個晶片都可以用不同的突觸4以及目標輸出神經元3來計算,即使每個晶片的計算結果隨後被儲存為輸出特徵值。此外,第一結果N0、第三結果N1、第二結果N2、和第四結果N3被順序地指定為第二階段資料N0~Nf的輸入資料。
在所有第一階段資料A0~Ac都耗盡後,所有晶片C1~CN將其第二階段資料N0~Nf儲存在其記憶體S1~SN中。例如,如第2圖所示,多晶片系統10的複數個記憶體S1~SN包括第一記憶體S1和第二記憶體S2。第一記憶體與第一晶片C1連接,第二記憶體S2與第二晶片C2連接。第一記憶體S1包括第一區Z1和第二區Z2,以及第二記憶體S2包括第三區Z3和第四區Z4。第一階段資料的第一部分A0~A2儲存在第一記憶體S1的第一區Z1中,第二階段資料的第一部分N0~N1儲存在第一記憶體S1的第二區Z2,第一階段資料的第二部分A3~A5儲存在第二記憶體S2的第三區Z3,以及第二階段資料的第二部分N2~N3儲存在第二記憶體S2的第四區Z4中。
在神經網路1的下一層應用中,儲存為輸出資料的第二階段資料N0~Nf現在用於下一層,並且第二階段資料N0~Nf作為輸入特徵值。這樣,儲存在其記憶體S1~SN中的第二階段資料N0~Nf被切換為神經網路1的後續的下一層的輸入特徵值。此時,第一階段資料A0~Ac從它們的記憶體S1~SN中擦除。例如,第一階段資料的第一部分A0~A2從第一記憶體S1的第一區Z1中擦除,第一階段資料的第二部分A3~A5從第二記憶體S2的第三區Z3擦除。並且,第一記憶體S1的第二區Z2和第二記憶體S2的第四區Z4被轉換為輸入資料儲存區域,用於儲存相應的第二階段資料N0~Nf,以及第一記憶體S1的第一區Z1和第二記憶體S2的第三區Z3被轉換成輸出資料儲存區域,用於儲存相應的第三階段資料B0~BC
如第2圖所示,如果第二層L2是神經網路1的輸入層而第三層L3是輸出層,則神經元3作為輸入神經元,以及神經元5作為輸出神經元。其中之一晶片C1~CN通過廣播通道110獲得與對應於另一晶片的神經元3相關聯的第二階段資料N0~Nf的一部分。接著,晶片C1~CN計算第二階段資料N0~Nf並生成第三階段資料B0~BC。第三階段資料B0~BC的獲取過程類似於第二階段資料N0~Nf的獲取過程,此處不再贅述。
在第一實施例中,多晶片系統10不共享實際的記憶體資源,換句話說,不可能直接訪問其他晶片的局部記憶體S1~SN,但它的結構是每個晶片通過公共廣播通道110共享必要的輸入特徵值(例如,第一階段資料A0~Ac或第二階段資料N0~Nf)並使用必要的元件進行計算。因此,通過本揭示的操作機制可以實現多晶片系統10,其優選地應用於需要更好性能的應用系統。
請參照第5圖,其顯示根據本揭示的第二較佳實施例的多晶片系統20之示意圖。多晶片系統20包括廣播通道210、複數個晶片(例如第一晶片C1、第二晶片C2、第三晶片C3、和第四晶片C4)、控制器230、和記憶體S。複數個晶片C1~C4與廣播通道210連接。較佳地,晶片C1~C4可以為用於神經網路的加速晶片。第一實施例與第二實施例的區別在於第二較佳實施例的多晶片系統20僅包括一個記憶體S。此外,多晶片系統20還包括複數條傳輸線260,用於將晶片C1~C4中的一個與另一個連接。
如第5圖所示,記憶體S包括第一區Z1和第二區Z2。當多晶片系統20用於實現神經網路應用的第一層時,第一階段資料儲存在第一區Z1以及第二階段資料儲存在第二區Z2中。
如第5圖所示,在第二實施例中,為了防止由於大量本地化的記憶體而導致的成本增加,記憶體S可以僅安裝在一個晶片220上,並且記憶體S可以採用可供許多晶片C1~C4共享的結構。在第二實施例中,需要單獨的記憶體共享終端261。此外,其中之晶片從記憶體S通過至少一個晶片提取與輸入神經元相關的第一階段資料的相應部分。然後,晶片通過廣播通道210將第一階段資料的相應部分順序地傳送到其他晶片。
在某些實施例中,本文描述的一個或多個處理步驟可以由執行記錄在非暫態電腦可讀取媒體上的程式碼的一個或多個處理器(例如,電腦處理器)來執行。例如,如第1圖所示,在多晶片系統中實施神經網路應用的過程。如第2圖和第3圖所示,可以具有由一個或多個處理器執行的程式碼執行的一個或多個步驟,該程式碼作為程式指令儲存在電腦可讀取儲存媒體中(例如,非暫態電腦可讀取媒體)。
請參照第6圖,其顯示本揭示的一較佳實施例的示例性電腦系統30的方塊圖。示例性電腦系統30可以用於實現這裡描述的一個或多個實施例。在一些實施例中,電腦系統30可由用戶操作以實現這裡描述的一個或多個實施例,例如第2圖和第3圖所示的在多晶片系統中實現神經網路應用的過程。在第6圖的實施例中,電腦系統30包括處理器310、儲存媒體320、和各種外圍設備330。處理器310耦合到儲存媒體320和外圍設備330。處理器310被配置為執行程式碼,包括用於實現神經網路應用的指令,其可以是軟體。舉例來說,如第2圖所示,如果第一層L1是神經網路1的輸入層而第二層L2是輸出層,則由處理器310執行的程式碼包括:程式碼A,設置神經網路1的複數個輸入神經元2和複數個輸出神經元3,其中每個輸出神經元3通過複數個突觸4連接到該複 數個輸入神經元2,用於根據複數個權重值(例如W00等)來加權來自該複數個輸入神經元2的複數個輸出;程式碼B,等待對應該複數個輸入神經元2的第一階段資料A0~AC通過一廣播通道110;程式碼C,計算相應的權重值與部分的該第一階段資料A0~AC;程式碼D,同時計算對應於該複數個輸出神經元3的第二階段資料N0~Nf;程式碼E,確定是否計算完所有的該複數個權重值,如果是,則進入程式碼F,如果不是,則返回程式碼B;程式碼F,將該第二階段資料N0~Nf保持在一記憶體上;程式碼G,為該複數個輸出神經元3設置該第二階段資料N0~Nf;以及程式碼H,確定是否所有已分配的該複數個輸出神經元3都已完成計算,如果是,則切換到下一層應用,如果不是,則調用一新的通道任務並返回到程式碼A。
此外,當電腦系統30執行新的通道任務時,處理器310執行的程式碼還包括:程式碼I,從該記憶體加載該第一階段資料A0~AC;程式碼J,通過該廣播通道110播送該第一階段資料A0~AC;程式碼K,確定該第一階段資料A0~AC是否完全播送,如果是,則進入程式碼L,如果不是,則返回程式碼J;以及程式碼L,確定是否計算完所有的該第一階段資料A0~AC,如果是,則該新的通道任務結束,如果否,則回到程式碼I。
此外,當電腦系統30切換以執行下一層應用時,由處理器310執行的程式碼包括:程式碼M,設置該記憶體的輸入點位作為輸出點位;以及N,設置該記憶體的該輸出點位作為該輸入點位。具體而言,如第2圖所示,在神經網路1的下一層應用中,儲存為輸出資料的第二階段資料N0~Nf現在用於下一層,並且第二階段資料N0~Nf隨後用作的輸入特徵值。這樣,儲存在其記憶體S1~SN中的第二階段資料N0~Nf被切換為神經網路1的後續的下一層的輸入特徵 值。此時,先前的複數個輸入特徵值A0~AC從其記憶體S1~SN中被擦除。例如,如第3圖所示,第一階段資料的第一部分A0~A2從第一記憶體S1的第一區Z1擦除,第一階段資料的第二部分A3~A5從第二記憶體S2的第三區Z3擦除,並且將第一記憶體S1的第二區Z2和第二記憶體S2的第四區Z4轉換成輸入資料儲存區域,用於儲存相應的第二階段資料N0~Nf,以及第一記憶體S1的第一區Z1和第二記憶體S2的第三區Z3被轉換成輸出資料儲存區域,用於儲存相應的第三階段資料B0~BC
在一些實施例中,電腦系統30可以包括一個以上的處理器。此外,處理器310可以包括一個或多個處理器或一個或多個處理器核心。處理器310可以以任何期望的方式耦合到儲存媒體320和外圍設備330,例如,在一些實施例中,處理器310可以經由各種互相連接的方式耦合到儲存媒體320和/或外圍設備330。可選地或另外地,可以使用一個或多個橋接晶片來耦合處理器310、儲存媒體320、和外圍設備330。儲存媒體320可以包括任何類型的記憶體系統。例如,儲存媒體320可以包括DRAM,更具體地是雙資料率(DDR)SDRAM、RDRAM等。儲存媒體320的介面可以包括記憶體控制器,和/或處理器310可以包括記憶體控制器。儲存媒體320可以儲存在處理器310使用期間由處理器310執行的程序碼、和由處理器在使用期間操作的資料等。外圍設備330可以是任何種類的硬體設備,其設置在電腦系統30中或耦合到其上。
儲存媒體320可以包括代表包括在積體電路設計中的多晶片系統10(圖3中描繪)的一個或多個程序碼以及代表在多晶片系統(如第2圖和第3圖所示)中實施神經網路應用的過程的一個或多個代碼序列。每個代碼序列可以包括一個或多個指令,當由電腦系統30中的處理器310執行時,實現針對相 應代碼序列描述的操作。一般而言,電腦可訪問的儲存媒體可以包括在使用期間電腦系統30可訪問的任何儲存媒體320,以向電腦系統30提供指令和/或資料。儲存媒體320可以物理地包括在電腦系統30內以向儲存媒體320提供指令/資料。可選地,儲存媒體320可以連接到電腦系統30。例如,儲存媒體320可以通過網路或無線鏈路(例如網路連接的儲存器)連接到電腦系統30。儲存媒體320可以通過諸如通用序列匯流排(USB)的外圍介面連接。通常,電腦可訪問的儲存媒體可以以非暫時性方式儲存資料,其中在該上下文中的非暫時性可以指的是不在訊號上發送指令/資料。例如,非暫時性儲存器可以是易失性的(並且可以響應於斷電而丟失所儲存的指令/資料)或非易失性的。
綜上所述,在本揭示中,多晶片系統能夠並行運行。為了提高機器學習加速晶片的性能,本揭示提供了一種用於多晶片系統的廣播通道,它是一種基於具有該功能的形式的市場需求的實現的結構設計理念。為了實現這一點,在本揭示中,每個晶片的輸入特徵值被部分地傳輸和共享,並且可以通過在其他晶片中同時使用它來計算群集,計算結果為最終輸出神經元數值,並再次作為下一層的輸入資料。這使我們能夠利用多晶片系統實現高性能、低成本、以及滿足市場需求。
以上僅是本揭示的較佳實施方式,應當指出,對於所屬領域技術人員,在不脫離本揭示原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本揭示的保護範圍。
110:廣播通道
C1:第一晶片
C2:第二晶片
CN:第N個晶片
I1~IM、IM+1~I2M、I(N-1)M+1~INM:輸入特徵值
O1~OK、OK+1~O2K、O(N-1)K+1~ONK:輸出特徵值

Claims (15)

  1. 一種適用於多晶片系統的資料處理方法,用於實現神經網路應用,其中該多晶片系統包括:一通道、一第一晶片、和與該通道連接之一第二晶片,其中該神經網路應用包括一第一階段資料、一第二階段資料、一第三階段資料、和複數個權重值,其中該資料處理方法包括: 分配該第一晶片來處理該第一階段資料的一第一部分、該第二階段資料的一第一部分、以及該第三階段資料的一第一部分,以及並分配該第二晶片來處理該第一階段資料的一第二部分、該第二階段資料的一第二部分、以及該第三階段資料的一第二部分; 該第一晶片獲取對應該第二階段資料的該複數個權重值的一第一部分; 該第二晶片獲取對應該第二階段資料的該複數個權重值的一第二部分; 該第一晶片獲取該第一階段資料的該第一部分; 該第一晶片將該第一階段資料的該第一部分通過該通道傳送到該第二晶片; 該第二晶片接收該第一階段資料的該第一部分; 該第二晶片獲取該第一階段資料的該第二部分; 該第二晶片將該第一階段資料的該第二部分通過該通道傳送到該第一晶片; 該第一晶片接收該第一階段資料的該第二部分; 該第一晶片計算該第一階段資料與該複數個權重值的該第一部分以獲得一第一結果,其中該第一結果是該第二階段資料的其中之一;以及 該第二晶片計算該第一階段資料與該複數個權重值的該第二部分以獲得一第二結果,其中該第二結果是該第二階段資料的其中之一。
  2. 如請求項1之該資料處理方法,其中在獲得該第一結果和該第二結果之後,該資料處理方法還包括: 該第一晶片獲取對應該第二階段資料的該複數個權重值的一第三部分; 該第二晶片獲取對應該第二階段資料的該複數個權重值的一第四部分; 該第一晶片獲取該第一階段資料的該第一部分; 該第一晶片將該第一階段資料的該第一部分通過該通道傳送到該第二晶片; 該第二晶片接收該第一階段資料的該第一部分; 該第二晶片獲取該第一階段資料的該第二部分; 該第二晶片將第一階段資料的該第二部分通過該通道傳送到該第一晶片; 該第一晶片接收該第一階段資料的該第二部分; 該第一晶片計算該第一階段資料與該複數個權重值的該第三部分以獲得一第三結果,其中該第三結果是該第二階段資料的其中之一;以及 該第二晶片計算該第一階段資料與該複數個權重值的該第四部分以獲得一第四結果,其中該第四結果是該第二階段資料的其中之一。
  3. 如請求項2之該資料處理方法,其中在獲得該第一結果、該第二結果、該第三結果、和該第四結果之後,該資料處理方法還包括:依序地分配該第一結果、該第三結果、該第二結果、和該第四結果作為該第二階段資料的輸入資料。
  4. 如請求項2之該資料處理方法,其中該多晶片系統還包括一第一記憶體和一第二記憶體,並且該第一記憶體與該第一晶片相連,以及該第二記憶體與該第二晶片相連; 其中該第一記憶體包括一第一區和一第二區,以及該第二記憶體包括一第三區和一第四區;以及 其中該第一階段資料的該第一部分儲存在該第一記憶體的該第一區中,以及該第二階段資料的該第一部分儲存在該第一記憶體的該第二區,並且該第一階段資料的該第二部分儲存在該第二記憶體的該第三區,以及該第二階段資料的該第二部分儲存在該第二記憶體的該第四區。
  5. 如請求項4之該資料處理方法,其中該資料處理方法還包括: 從該第一記憶體中擦除該第一階段資料的該第一部分,並從該第二記憶體中擦除該第一階段資料的該第二部分;以及 將該第一記憶體的該第二區和該第二記憶體的該第四區轉換成輸入資料儲存區域。
  6. 如請求項1之該資料處理方法,其中該多晶片系統還包括與該第一晶片和該第二晶片連接的一記憶體和配置成連接該第一晶片和該第二晶片的複數條傳輸線; 其中該記憶體包括一第一區和一第二區;以及 其中該第一階段資料儲存在該記憶體的該第一區,以及該第二階段資料儲存在該記憶體的該第二區。
  7. 一種用於實現神經網路應用的多晶片系統,其中所述神經網路應用包括一第一階段資料、一第二階段資料、一第三階段資料、和複數個權重值,該多晶片系統包括: 一資料通道; 一第一晶片和一第二晶片,其中該第一晶片和該第二晶片連接該資料通道; 一儲存器;以及 一處理器,其中該多晶片系統的複數個電腦代碼儲存在該儲存器中並且被配置為由該處理器執行以執行一資料處理方法,該資料處理方法包括: 分配該第一晶片來處理該第一階段資料的一第一部分、該第二階段資料的一第一部分、以及該第三階段資料的一第一部分,以及並分配該第二晶片來處理該第一階段資料的一第二部分、該第二階段資料的一第二部分、以及該第三階段資料的一第二部分; 該第一晶片獲取對應該第二階段資料的該複數個權重值的一第一部分; 該第二晶片獲取對應該第二階段資料的該複數個權重值的一第二部分; 該第一晶片獲取該第一階段資料的該第一部分; 該第一晶片將該第一階段資料的該第一部分通過該資料通道傳送到該第二晶片; 該第二晶片接收該第一階段資料的該第一部分; 該第二晶片獲取該第一階段資料的該第二部分; 該第二晶片將該第一階段資料的該第二部分通過該資料通道傳送到該第一晶片; 該第一晶片接收該第一階段資料的該第二部分; 該第一晶片計算該第一階段資料與該複數個權重值的該第一部分以獲得一第一結果,其中該第一結果是該第二階段資料的其中之一;以及 該第二晶片計算該第一階段資料與該複數個權重值的該第二部分以獲得一第二結果,其中該第二結果是該第二階段資料的其中之一。
  8. 如請求項7之該多晶片系統,其中該資料處理方法還包括: 該第一晶片獲取對應該第二階段資料的該複數個權重值的一第三部分; 該第二晶片獲取對應該第二階段資料的該複數個權重值的一第四部分; 該第一晶片獲取該第一階段資料的該第一部分; 該第一晶片將該第一階段資料的該第一部分通過該資料通道傳送到該第二晶片; 該第二晶片接收該第一階段資料的該第一部分; 該第二晶片獲取該第一階段資料的該第二部分; 該第二晶片將第一階段資料的該第二部分通過該資料通道傳送到該第一晶片; 該第一晶片接收該第一階段資料的該第二部分; 該第一晶片計算該第一階段資料與該複數個權重值的該第三部分以獲得一第三結果,其中該第三結果是該第二階段資料的其中之一;以及 該第二晶片計算該第一階段資料與該複數個權重值的該第四部分以獲得一第四結果,其中該第四結果是該第二階段資料的其中之一。
  9. 如請求項8之該多晶片系統,其中該資料處理方法還包括:依序地分配該第一結果、該第三結果、該第二結果、和該第四結果作為該第二階段資料的輸入資料。
  10. 如請求項7之該多晶片系統,其中該多晶片系統還包括一第一記憶體和一第二記憶體,並且該第一記憶體與該第一晶片相連,以及該第二記憶體與該第二晶片相連; 其中該第一記憶體包括一第一區和一第二區,以及該第二記憶體包括一第三區和一第四區;以及 其中該第一階段資料的該第一部分儲存在該第一記憶體的該第一區中,以及該第二階段資料的該第一部分儲存在該第一記憶體的該第二區,並且該第一階段資料的該第二部分儲存在該第二記憶體的該第三區,以及該第二階段資料的該第二部分儲存在該第二記憶體的該第四區。
  11. 如請求項10之該多晶片系統,其中該資料處理方法還包括: 從該第一記憶體中擦除該第一階段資料的該第一部分,並從該第二記憶體中擦除該第一階段資料的該第二部分;以及 將該第一記憶體的該第二區和該第二記憶體的該第四區轉換成輸入資料儲存區域。
  12. 如請求項7之該多晶片系統,其中該多晶片系統還包括與該第一晶片和該第二晶片連接的一記憶體和配置成連接該第一晶片和該第二晶片的複數條傳輸線; 其中該記憶體包括一第一區和一第二區; 其中該第一階段資料儲存在該記憶體的該第一區,以及該第二階段資料儲存在該記憶體的該第二區;以及 其中每一該第一晶片和該第二晶片經由該複數條傳輸線中的至少一條從該記憶體獲得該第一階段資料。
  13. 一種用於在多晶片系統中實現神經網路應用的非暫態電腦可讀取媒體,該非暫態電腦可讀取媒體內記錄有複數個程式碼,該複數個程式碼由一處理器執行並且包括: A,設置該神經網路應用的複數個輸入神經元和複數個輸出神經元,其中每個該複數個輸出神經元通過複數個突觸連接到該複數個輸入神經元,用於根據複數個權重值來加權來自該複數個輸入神經元的複數個輸出; B,等待對應該複數個輸入神經元的第一階段資料通過一通道; C,計算相應的權重值與部分的該第一階段資料; D,同時計算對應於該複數個輸出神經元的第二階段資料; E,確定是否計算完所有的該複數個權重值,如果是,則進入F,如果不是,則返回B; F,將該第二階段資料保持在一記憶體上; G,為該複數個輸出神經元設置該第二階段資料;以及 H,確定是否所有已分配的該複數個輸出神經元都已完成計算,如果是,則切換到下一層應用,如果不是,則調用一新的通道任務並返回到A。
  14. 如請求項13之用於在該多晶片系統中實現該神經網路應用的該非暫態電腦可讀取媒體,其中在執行該新的通道任務中該處理器執行的該複數個程式碼還包含: I,從該記憶體加載該第一階段資料; J,通過該通道播送該第一階段資料; K,確定該第一階段資料是否完全播送,如果是,則進入L,如果不是,則返回J;以及 L,確定是否計算完所有的該第一階段資料,如果是,則該新的通道任務結束,如果否,則回到I。
  15. 如請求項13之用於在該多晶片系統中實現該神經網路應用的該非暫態電腦可讀取媒體,其中在執行該切換到下一層應用中該處理器執行的該複數個程式碼還包括: M,設置該記憶體的輸入點位作為輸出點位;以及 N,設置該記憶體的該輸出點位作為該輸入點位。
TW108140289A 2018-11-06 2019-11-06 用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體 TWI715281B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862756095P 2018-11-06 2018-11-06
US62/756,095 2018-11-06
WOPCT/CN2019/082128 2019-04-10
PCT/CN2019/082128 WO2020093654A1 (en) 2018-11-06 2019-04-10 Multichip system and data processing method adapted to the same for implementing neural network application

Publications (2)

Publication Number Publication Date
TW202038143A TW202038143A (zh) 2020-10-16
TWI715281B true TWI715281B (zh) 2021-01-01

Family

ID=70610684

Family Applications (3)

Application Number Title Priority Date Filing Date
TW108140288A TWI766203B (zh) 2018-11-06 2019-11-06 用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路
TW108140287A TWI726476B (zh) 2018-11-06 2019-11-06 實施神經網路之啟動邏輯之裝置及其方法
TW108140289A TWI715281B (zh) 2018-11-06 2019-11-06 用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體

Family Applications Before (2)

Application Number Title Priority Date Filing Date
TW108140288A TWI766203B (zh) 2018-11-06 2019-11-06 用於實施神經網路應用之卷積塊陣列及其使用方法、和卷積塊電路
TW108140287A TWI726476B (zh) 2018-11-06 2019-11-06 實施神經網路之啟動邏輯之裝置及其方法

Country Status (4)

Country Link
US (3) US20220004856A1 (zh)
CN (3) CN112970037B (zh)
TW (3) TWI766203B (zh)
WO (3) WO2020093654A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210130470A (ko) * 2020-04-22 2021-11-01 에스케이하이닉스 주식회사 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템
CN113902111A (zh) * 2021-12-09 2022-01-07 绍兴埃瓦科技有限公司 多芯片互连系统及神经网络加速处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105844330A (zh) * 2016-03-22 2016-08-10 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
WO2017185248A1 (zh) * 2016-04-27 2017-11-02 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
TW201824098A (zh) * 2016-12-22 2018-07-01 三星電子股份有限公司 訓練深層學習分類網路之系統和方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
CN101256536B (zh) * 2007-03-01 2010-05-26 创惟科技股份有限公司 闪存地址转换层系统
US7685355B2 (en) * 2007-05-07 2010-03-23 Microsoft Corporation Hardware memory management unit simulation using concurrent lookups for address translation data
CN101661438B (zh) * 2008-08-29 2013-08-28 鸿富锦精密工业(深圳)有限公司 电子装置及中央处理器寻址空间扩展方法
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US8635430B2 (en) * 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US20160019161A1 (en) * 2013-03-12 2016-01-21 Hewlett-Packard Development Company, L.P. Programmable address mapping and memory access operations
CN103985083B (zh) * 2014-05-21 2017-02-01 西安交通大学 一种可重构的一维卷积处理器
CN104333435B (zh) * 2014-09-30 2017-11-07 扬智科技股份有限公司 迭代解映射译码装置
CN106056211B (zh) * 2016-05-25 2018-11-23 清华大学 神经元计算单元、神经元计算模块及人工神经网络计算核
GB2550859B (en) * 2016-05-26 2019-10-16 Advanced Risc Mach Ltd Address translation within a virtualised system
CN106201651A (zh) * 2016-06-27 2016-12-07 鄞州浙江清华长三角研究院创新中心 神经形态芯片的模拟器
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
CN107992942B (zh) * 2016-10-26 2021-10-01 上海磁宇信息科技有限公司 卷积神经网络芯片以及卷积神经网络芯片操作方法
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10394929B2 (en) * 2016-12-20 2019-08-27 Mediatek, Inc. Adaptive execution engine for convolution computing systems
CN106845635A (zh) * 2017-01-24 2017-06-13 东南大学 基于级联形式的cnn卷积核硬件设计方法
CN106779060B (zh) * 2017-02-09 2019-03-08 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
TWI630544B (zh) * 2017-02-10 2018-07-21 耐能股份有限公司 卷積神經網路的運算裝置及方法
CN107633297B (zh) * 2017-03-10 2021-04-06 南京风兴科技有限公司 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
US10049323B1 (en) * 2017-10-13 2018-08-14 StradVision, Inc. Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same
CN107844826B (zh) * 2017-10-30 2020-07-31 中国科学院计算技术研究所 神经网络处理单元及包含该处理单元的处理系统
CN107862374B (zh) * 2017-10-30 2020-07-31 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
GB2568102B (en) * 2017-11-06 2021-04-14 Imagination Tech Ltd Exploiting sparsity in a neural network
CN108171317B (zh) * 2017-11-27 2020-08-04 北京时代民芯科技有限公司 一种基于soc的数据复用卷积神经网络加速器
CN108334942B (zh) * 2017-12-22 2020-08-04 清华大学 神经网络的数据处理方法、装置、芯片和存储介质
CN108595349B (zh) * 2017-12-28 2020-01-31 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
CN108229671B (zh) * 2018-01-16 2022-03-04 华南理工大学 一种降低加速器外部数据存储带宽需求的系统和方法
CN108647045B (zh) * 2018-03-20 2021-10-01 科大讯飞股份有限公司 激活函数的实现方法及装置、存储介质、电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105844330A (zh) * 2016-03-22 2016-08-10 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
WO2017185248A1 (zh) * 2016-04-27 2017-11-02 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
TW201824098A (zh) * 2016-12-22 2018-07-01 三星電子股份有限公司 訓練深層學習分類網路之系統和方法

Also Published As

Publication number Publication date
TW202038143A (zh) 2020-10-16
US20220004850A1 (en) 2022-01-06
WO2020093669A1 (en) 2020-05-14
CN112955878A (zh) 2021-06-11
WO2020093676A1 (en) 2020-05-14
TW202038142A (zh) 2020-10-16
CN112970037A (zh) 2021-06-15
WO2020093654A1 (en) 2020-05-14
US20220027714A1 (en) 2022-01-27
TWI726476B (zh) 2021-05-01
TW202018597A (zh) 2020-05-16
US20220004856A1 (en) 2022-01-06
CN112970036A (zh) 2021-06-15
TWI766203B (zh) 2022-06-01
CN112970037B (zh) 2024-02-02
CN112955878B (zh) 2023-10-27
CN112970036B (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
US10698730B2 (en) Neural network processor
CN109102065B (zh) 一种基于PSoC的卷积神经网络加速器
KR102519467B1 (ko) 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체
TWI715281B (zh) 用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體
KR102382186B1 (ko) 딥 러닝을 위한 고성능 컴퓨팅 시스템
CN111199275B (zh) 用于神经网络的片上系统
JP2021157771A (ja) ネットワークオンチップによるデータ処理方法及び装置
CN110750351B (zh) 多核任务调度器、多核任务调度方法、装置及相关产品
US10922258B2 (en) Centralized-distributed mixed organization of shared memory for neural network processing
US11579921B2 (en) Method and system for performing parallel computations to generate multiple output feature maps
US11205109B2 (en) On-chip communication system for neural network processors
CN110865950A (zh) 数据预处理方法、装置、计算机设备和存储介质
Umeda et al. Processing assignment of deep learning according to sensor node capacity
US11720417B2 (en) Distributed inferencing using deep learning accelerators with integrated random access memory
TWI798972B (zh) 智慧處理器裝置與降低記憶體頻寬的方法
US11886981B2 (en) Inter-processor data transfer in a machine learning accelerator, using statically scheduled instructions
US20220198318A1 (en) Instruction streaming for a machine learning accelerator
US20220147280A1 (en) Efficient buffering technique for transferring data
US20220198249A1 (en) Execution of neural networks
WO2022088171A1 (en) Neural processing unit synchronization systems and methods
US20210326173A1 (en) Software managed memory hierarchy
CN116894462A (zh) 一种数据处理方法和装置
CN118036776A (zh) 一种模型训练方法及相关装置
CN114237861A (zh) 一种数据处理方法及其设备
CN112394986A (zh) 半精度浮点转浮点指令处理装置、方法及相关产品