TWI773245B - 神經網路電路、網路終端設備及神經網路運算方法 - Google Patents
神經網路電路、網路終端設備及神經網路運算方法 Download PDFInfo
- Publication number
- TWI773245B TWI773245B TW110113109A TW110113109A TWI773245B TW I773245 B TWI773245 B TW I773245B TW 110113109 A TW110113109 A TW 110113109A TW 110113109 A TW110113109 A TW 110113109A TW I773245 B TWI773245 B TW I773245B
- Authority
- TW
- Taiwan
- Prior art keywords
- circuit
- memory
- mentioned
- quantization
- layer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Electrotherapy Devices (AREA)
- Details Of Television Systems (AREA)
Abstract
課題:提供一種能夠嵌入至IoT機器等嵌入式機器且高性能之神經網路電路。
解決手段:神經網路電路具備:第一記憶體,其儲存輸入資料;卷積運算電路,其對儲存於上述第一記憶體中之上述輸入資料與權重進行卷積運算;第二記憶體,其儲存上述卷積運算電路之卷積運算輸出資料;及量子化運算電路,其對儲存於上述第二記憶體中之上述卷積運算輸出資料進行量子化運算;上述量子化運算電路之量子化運算輸出資料儲存於上述第一記憶體中,儲存於上述第一記憶體中之上述量子化運算輸出資料作為上述輸入資料而輸入至上述卷積運算電路。
Description
本發明係關於神經網路電路、網路終端設備及神經網路運算方法。本案基於2020年04月13日於日本國提出申請之特願2020-071932號主張優先權,並援用其內容。
近年來,卷積神經網路(Convolutional Neural Network:CNN)用作圖像識別等之模型。卷積神經網路係具有卷積層及池化(pooling)層之多層構造,且需要卷積運算等多數之運算。現已提出有多種將利用卷積神經網路之運算高速化之運算手法(專利文獻1等)。
[先前技術文獻]
[專利文獻]
[專利文獻1]日本特開2018-077829號公報
另一方面,業界期望於IoT機器等嵌入式機器中亦實現利用卷積神經網路之圖像識別等。於嵌入式機器中,難以嵌入專利文獻1等中記載之大規模的專用電路。又,於CPU或記憶體等硬體資源受限之嵌入式機器中,難以僅藉由軟體實現卷積神經網路之充分之運算性能。
鑒於上述情況,本發明之目的在於提供能夠嵌入至IoT機器等嵌入式機器且高性能之神經網路電路、網路終端設備及神經網路運算方法。
為了解決上述課題,本發明提出以下手段。
本發明之第一態樣之神經網路電路具備:第一記憶體,其儲存輸入資料;卷積運算電路,其對儲存於上述第一記憶體中之上述輸入資料與權重進行卷積運算;第二記憶體,其儲存上述卷積運算電路之卷積運算輸出資料;及量子化運算電路,其對儲存於上述第二記憶體中之上述卷積運算輸出資料進行量子化運算;上述量子化運算電路之量子化運算輸出資料儲存於上述第一記憶體中,儲存於上述第一記憶體中之上述量子化運算輸出資料作為上述輸入資料而輸入至上述卷積運算電路。
本發明之第一態樣之神經網路運算方法係使用第一記憶體區域與第二記憶體區域進行卷積運算與量子化運算者,且對儲存於上述第一記憶體區域中之輸入資料進行層2M-1(M為自然數)之上述卷積運算,將上述層2M-1之卷積運算輸出資料儲存於上述第二記憶體區域,對儲存於上述第二記憶體區域中之上述層2M-1之上述卷積運算輸出資料進行層2M之上述量子化運算,將上述層2M之量子化運算輸出資料儲存於上述第一記憶體區域,將儲存於上述第一記憶體區域中之上述層2M之上述量子化運算輸出資料作為上述輸入資料來進行層2M+1之上述卷積運算,將上述層2M+1之上述卷積運算輸出資料儲存於上述第二記憶體區域。
本發明之神經網路電路、網路終端設備及神經網路運算方法能夠嵌入至IoT機器等嵌入式機器且為高性能。
200:卷積神經網路
100:神經網路電路(NN電路)
1:第一記憶體
2:第二記憶體
3:DMA控制器(DMAC)
31:資料傳送電路
32:狀態控制器
33:指令佇列
34:控制電路
4:卷積運算電路
41:權重記憶體
42:乘法器
43:累積器電路
44:狀態控制器
45:指令佇列
46:控制電路
47:乘積累加運算單元
47a:反轉器
47b:選擇器
47c:加法器
48:累積器單元
48a:加法器
48b:遮罩部
5:量子化運算電路
51:量子化參數記憶體
52:向量運算電路
53:量子化電路
54:狀態控制器
55:指令佇列
56:控制電路
57:運算單元
57a:ALU
57b:第一選擇器
57c:第二選擇器
57d:暫存器
57e:移位器
58:量子化單元
58a:比較器
58b:編碼器
6:控制器
61:暫存器
a:輸入資料
a1:第一部分張量
a2:第二部分張量
ao:應用區域
A:輸入向量
Bc、Bd:尺寸
ci:索引
co:偏移
di:索引
do:偏移
EB:外部匯流排
f:輸出資料
F1:第一資料流
F2:第二資料流
F3:第三資料流
IB:內部匯流排
O:乘積累加運算結果
S:旗號
s1:閒置狀態
s2:解碼狀態
s3:執行狀態
S1R:第一讀出旗號
S1W:第一寫入旗號
S2R:第二讀出旗號
S2W:第二寫入旗號
w:權重
W:權重矩陣
[圖1]係表示卷積神經網路之圖。
[圖2]係說明卷積層進行之卷積運算之圖。
[圖3]係說明卷積運算之資料之展開之圖。
[圖4]係表示第一實施形態之神經網路電路之整體構成之圖。
[圖5]係表示該神經網路電路之動作例之時序圖。
[圖6]係表示該神經網路電路之另一動作例之時序圖。
[圖7]係該神經網路電路之DMAC之內部方塊圖。
[圖8]係該DMAC之控制電路之狀態變遷圖。
[圖9]係該神經網路電路之卷積運算電路之內部方塊圖。
[圖10]係該卷積運算電路之乘法器之內部方塊圖。
[圖11]係該乘法器之乘積累加運算單元之內部方塊圖。
[圖12]係該卷積運算電路之累積器電路之內部方塊圖。
[圖13]係該累積器電路之累積器單元之內部方塊圖。
[圖14]係該神經網路電路之量子化運算電路之內部方塊圖。
[圖15]係該量子化運算電路之向量運算電路與量子化電路之內部方塊圖。
[圖16]係運算單元之方塊圖。
[圖17]係該量子化電路之向量量子化單元之內部方塊圖。
[圖18]係說明利用旗號(semaphore)之該神經網路電路之控制之圖。
[圖19]係第一資料流之時序圖。
[圖20]係第二資料流之時序圖。
(第一實施形態)
參照圖1至圖20對本發明之第一實施形態進行說明。
圖1係表示卷積神經網路200(以下,稱為「CNN 200」)之圖。第一實施形態之神經網路電路100(以下,稱為「NN電路100」)進行之運算係於推論時使用之學習後之CNN 200之至少一部分。
[CNN 200]
CNN 200係包含進行卷積運算之卷積層210、進行量子化運算之量子化運算層220、及輸出層230之多層構造之網路。於CNN 200之至少一部分中,卷積層210與量子化運算層220交替地連結。CNN 200係圖像識別或動態圖像識別中廣泛使用之模型。CNN 200亦可進一步具有全結合層等具有其他功能之層(layer)。
圖2係說明卷積層210進行之卷積運算之圖。
卷積層210對輸入資料a進行使用權重w之卷積運算。卷積層210進行將輸入資料a與權重w設為輸入之乘積累加運算。
對卷積層210輸入之輸入資料a(亦稱為激勵資料、特徵圖(map))係圖像資料等多維資料。於本實施形態中,輸入資料a係由要素(x,y,c)構成之三維張量(tensor)。CNN 200之卷積層210對低位元之輸入資料a進行卷積運算。於本實施形態中,輸入資料a之要素係2位元之無符號整數(0,1,2,3)。輸入資料a之要素例如亦可為4位元或8位元無符號整數。
輸入至CNN 200之輸入資料例如為32位元之浮動小數點型等與對卷積層210輸入之輸入資料a形式不同之情形時,CNN 200亦可於卷積層210之前進一步具有進行型態轉換或量子化之輸入層。
卷積層210之權重w(亦稱為過濾器(filter)、核(kernel))係具有作為能夠學習之參數之要素之多維資料。於本實施形態中,權重w係由要素(i,j,c,d)構成之四維張量。權重w具有d個由要素(i,j,c)構成之三維張量(以下,稱為「權
重wo」)。學習後之CNN 200中之權重w係學習後之資料。CNN 200之卷積層210使用低位元之權重w進行卷積運算。於本實施形態中,權重w之要素係1位元之有符號整數(0,1),值「0」表示+1,值「1」表示-1。
卷積層210進行式1所示之卷積運算,將輸出資料f輸出。於式1中,s表示步幅(stride)。於圖2中由虛線所示之區域表示對輸入資料a應用權重wo之區域ao(以下,稱為「應用區域ao」)之一。應用區域ao之要素由(x+i,y+j,c)表示。
量子化運算層220對卷積層210輸出之卷積運算之輸出實施量子化等。量子化運算層220具有池化層221、批次正規化(Batch Normalization)層222、激勵函數層223、及量子化層224。
池化層221對卷積層210輸出之卷積運算之輸出資料f實施平均池化(式2)或最大池化(式3)等運算,並壓縮卷積層210之輸出資料f。於式2及式3中,u表示輸入張量,v表示輸出張量,T表示池化區域之大小。於式3中,max係輸出相對於T中所包含之i與j之組合之u之最大值的函數。
批次正規化層222對量子化運算層220或池化層221之輸出資料,例如藉由式4所示之運算而進行資料分佈之正規化。於式4中,u表示輸入張量,v表示輸出張量,α表示尺度(scale),β表示偏差(bias)。於學習後之CNN 200中,α及β係學習後之常數向量。
[數式4]
v(x,y,c)=α(c).(u(x,y,c)-β(c))‧‧‧(式4)
激勵函數層223對量子化運算層220、池化層221或批次正規化層222之輸出進行線性整流函數(Rectified Linear Unit:ReLU)(式5)等激勵函數之運算。於式5中,u係輸入張量,v係輸出張量。於式5中,max係輸出引數中最大之數值之函數。
[數式5]v(x,y,c)=max(0,u(x,y,c))‧‧‧(式5)
量子化層224基於量子化參數,對池化層221或激勵函數層223之輸出進行例如式6所示之量子化。式6所示之量子化係將輸入張量u位元削減為2位元。於式6中,q(c)係量子化參數之向量。於學習後之CNN 200中,q(c)係學習後之常數向量。式6中之不等號「≦」亦可為「<」。
[數式6]qtz(x,y,c)=0 if u(x,y,c)≦q(c).th0 else 1 if u(x,y,c)≦q(c).th1 else 2 if u(x,y,c)≦q(c).th2 else 3 ‧‧‧(式6)
輸出層230係藉由恆等函數或軟性最大(softmax)函數等而輸出CNN 200之結果之層。輸出層230之前段之層既可為卷積層210,亦可為量子化運算層220。
CNN 200將經量子化之量子化層224之輸出資料輸入至卷積層210,故而與不進行量子化之其他卷積神經網路相比,卷積層210之卷積運算之負載較小。
[卷積運算之分割]
NN電路100將卷積層210之卷積運算(式1)之輸入資料分割為部分張量而進行運算。對部分張量分割之分割方法或分割數量並不特別限定。部分張量例如藉由將輸入資料a(x+i,y+j,c)分割為a(x+i,y+j,co)而形成。再者,NN電路100亦可不將
卷積層210之卷積運算(式1)之輸入資料分割而進行運算。
於卷積運算之輸入資料分割中,式1中之變數c如式7所示,以尺寸Bc之區塊進行分割。又,式1中之變數d如式8所示,以尺寸Bd之區塊進行分割。於式7中,co係偏移(offset),ci係自0至(Bc-1)為止之索引。於式8中,do係偏移,di係自0至(Bd-1)為止之索引。再者,尺寸Bc與尺寸Bd亦可相同。
[數式7]c=co.Bc+ci‧‧‧(式7)
[數式8]d=do.Bd+di‧‧‧(式8)
式1中之輸入資料a(x+i,y+j,c)係於c軸方向上根據尺寸Bc而分割,且由經分割之輸入資料a(x+i,y+j,co)表示。於以下之說明中,亦將經分割之輸入資料a稱為「分割輸入資料a」。
式1中之權重w(i,j,c,d)係於c軸方向上根據尺寸Bc而分割及於d軸方向上根據尺寸Bd而分割,且由經分割之權重w(i,j,co,do)表示。於以下之說明中,亦將經分割之權重w稱為「分割權重w」。
根據尺寸Bd而分割之輸出資料f(x,y,do)係藉由式9而求出。藉由將經分割之輸出資料f(x,y,do)組合,可算出最終的輸出資料f(x,y,d)。
[卷積運算之資料之展開]
NN電路100將卷積層210之卷積運算中之輸入資料a及權重w展開而進行卷積運算。
圖3係說明卷積運算之資料之展開之圖。
分割輸入資料a(x+i,y+j,co)被展開為具有Bc個要素之向量資料。分割輸入資
料a之要素係以ci作索引(0≦ci<Bc)。於以下之說明中,亦將針對每個i,j展開為向量資料之分割輸入資料a稱為「輸入向量A」。輸入向量A將自分割輸入資料a(x+i,y+j,co×Bc)至分割輸入資料a(x+i,y+j,co×Bc+(Bc-1))設為要素。
分割權重w(i,j,co,do)被展開為具有Bc×Bd個要素之矩陣資料。被展開為矩陣資料之分割權重w之要素以ci與di作索引(0≦di<Bd)。於以下之說明中,亦將針對每個i,j展開為矩陣資料之分割權重w稱為「權重矩陣W」。權重矩陣W將自分割權重w(i,j,co×Bc,do×Bd)至分割權重w(i,j,co×Bc+(Bc-1),do×Bd+(Bd-1))設為要素。
藉由將輸入向量A與權重矩陣W相乘,算出向量資料。藉由將針對每個i,j,co算出之向量資料整形為三維張量,可獲得輸出資料f(x,y,do)。藉由進行此種資料之展開,可藉由向量資料與矩陣資料相乘而實施卷積層210之卷積運算。
[NN電路100]
圖4係表示本實施形態之NN電路100之整體構成之圖。
NN電路100具備第一記憶體1、第二記憶體2、DMA(直接記憶體存取:direct memory access)控制器3(以下,亦稱為「DMAC 3」)、卷積運算電路4、量子化運算電路5、及控制器6。NN電路100之特徵在於透過第一記憶體1及第二記憶體2而將卷積運算電路4與量子化運算電路5形成為迴路(loop)狀。
第一記憶體1例如係由SRAM(靜態隨機存取記憶體:static random access memory)等構成之揮發性記憶體等能夠覆寫之記憶體。對第一記憶體1透過DMAC 3或控制器6而進行資料之寫入及讀出。第一記憶體1與卷積運算電路4之輸入埠連接,卷積運算電路4可自第一記憶體1讀出資料。又,第一記憶體1與量子化運算電路5之輸出埠連接,量子化運算電路5可將資料寫入至第一記憶體1。外部主機CPU藉由對第一記憶體1之資料之寫入或讀出,可進行對NN電路100
之資料之輸入輸出。
第二記憶體2例如係由SRAM(靜態隨機存取記憶體:static random access memory)等構成之揮發性記憶體等能夠覆寫之記憶體。對第二記憶體2透過DMAC 3或控制器6而進行資料之寫入及讀出。第二記憶體2與量子化運算電路5之輸入埠連接,量子化運算電路5自第二記憶體2讀出資料。又,第二記憶體2與卷積運算電路4之輸出埠連接,卷積運算電路4可將資料寫入至第二記憶體2。外部主機CPU藉由對第二記憶體2之資料之寫入或讀出,可進行對NN電路100之資料之輸入輸出。
DMAC 3連接於外部匯流排EB,進行DRAM(動態隨機存取記憶體:dynamic random access memory)等外部記憶體與第一記憶體1之間之資料傳送。又,DMAC 3進行DRAM等外部記憶體與第二記憶體2之間之資料傳送。又,DMAC 3進行DRAM等外部記憶體與卷積運算電路4之間之資料傳送。又,DMAC 3進行DRAM等外部記憶體與量子化運算電路5之間之資料傳送。
卷積運算電路4係進行學習後之CNN 200之卷積層210中之卷積運算的電路。卷積運算電路4將儲存於第一記憶體1中之輸入資料a讀出,對輸入資料a實施卷積運算。卷積運算電路4將卷積運算之輸出資料f(以下,亦稱為「卷積運算輸出資料」)寫入至第二記憶體2。
量子化運算電路5係進行學習後之CNN 200之量子化運算層220中之量子化運算之至少一部分的電路。量子化運算電路5將儲存於第二記憶體2中之卷積運算之輸出資料f讀出,對卷積運算之輸出資料f進行量子化運算(池化、批次正規化、激勵函數、及量子化中至少包含量子化之運算)。量子化運算電路5將量子化運算之輸出資料(以下,亦稱為「量子化運算輸出資料」)寫入至第一記憶體1。
控制器6連接於外部匯流排EB,作為外部之主機CPU之從屬裝置
進行動作。控制器6具有包含參數暫存器或狀態暫存器之暫存器61。參數暫存器係控制NN電路100之動作之暫存器。狀態暫存器係表示包含旗號S之NN電路100之狀態之暫存器。外部主機CPU可經由控制器6存取暫存器61。
控制器6透過內部匯流排IB而與第一記憶體1、第二記憶體2、DMAC 3、卷積運算電路4、及量子化運算電路5連接。外部主機CPU可經由控制器6對各區塊進行存取。例如,外部主機CPU可經由控制器6對DMAC 3、卷積運算電路4或量子化運算電路5指示命令。又,DMAC 3、卷積運算電路4或量子化運算電路5可透過內部匯流排IB來更新控制器6所具有之狀態暫存器(包含旗號S)。狀態暫存器(包含旗號S)亦可構成為透過與DMAC 3、卷積運算電路4或量子化運算電路5連接之專用配線而更新。
NN電路100由於具有第一記憶體1或第二記憶體2等,故而於來自DRAM等外部記憶體之經由DMAC 3之資料傳送中,可降低重複之資料之資料傳送之次數。藉此,可大幅度降低由記憶體存取產生之消耗電力。
[NN電路100之動作例1]
圖5係表示NN電路100之動作例之時序圖。
DMAC 3將層1之輸入資料a儲存於第一記憶體1中。DMAC 3亦可配合卷積運算電路4進行之卷積運算之順序,將層1之輸入資料a分割後傳送至第一記憶體1。
卷積運算電路4將儲存於第一記憶體1中之層1之輸入資料a讀出。卷積運算電路4對層1之輸入資料a進行圖1所示之層1之卷積運算。層1之卷積運算之輸出資料f儲存於第二記憶體2中。
量子化運算電路5將儲存於第二記憶體2中之層1之輸出資料f讀出。量子化運算電路5對層1之輸出資料f進行層2之量子化運算。層2之量子化運算之輸出資料儲存於第一記憶體1中。
卷積運算電路4將儲存於第一記憶體1中之層2之量子化運算之輸出資料讀出。卷積運算電路4將層2之量子化運算之輸出資料作為輸入資料a來進行層3之卷積運算。層3之卷積運算之輸出資料f儲存於第二記憶體2中。
卷積運算電路4將儲存於第一記憶體1中之層2M-2(M為自然數)之量子化運算之輸出資料讀出。卷積運算電路4將層2M-2之量子化運算之輸出資料作為輸入資料a來進行層2M-1之卷積運算。層2M-1之卷積運算之輸出資料f儲存於第二記憶體2中。
量子化運算電路5將儲存於第二記憶體2中之層2M-1之輸出資料f讀出。量子化運算電路5對2M-1層之輸出資料f進行層2M之量子化運算。層2M之量子化運算之輸出資料儲存於第一記憶體1中。
卷積運算電路4將儲存於第一記憶體1中之層2M之量子化運算之輸出資料讀出。卷積運算電路4將層2M之量子化運算之輸出資料作為輸入資料a來進行層2M+1之卷積運算。層2M+1之卷積運算之輸出資料f儲存於第二記憶體2中。
卷積運算電路4與量子化運算電路5交替地進行運算,推進圖1所示之CNN 200之運算。NN電路100係藉由卷積運算電路4分時地實施層2M-1與層2M+1之卷積運算。又,NN電路100係藉由量子化運算電路5分時地實施層2M-2與層2M之卷積運算。因此,NN電路100與針對每層安裝各個卷積運算電路4與量子化運算電路5之情形時相比,電路規模明顯較小。
NN電路100藉由形成為迴路狀之電路對複數層之多層構造之CNN 200的運算進行運算。NN電路100藉由迴路狀之電路構成,可有效率地利用硬體資源。再者,NN電路100為了將電路形成為迴路狀,而適當更新於各層變化之卷積運算電路4或量子化運算電路5中之參數。
於CNN 200之運算包含無法藉由NN電路100實施之運算之情形
時,NN電路100對外部主機CPU等外部運算裝置傳送中間資料。於外部運算裝置對中間資料進行運算之後,將外部運算裝置之運算結果輸入至第一記憶體1或第二記憶體2。NN電路100繼續對外部運算裝置之運算結果進行運算。
[NN電路100之動作例2]
圖6係表示NN電路100之另一動作例之時序圖。
NN電路100亦可將輸入資料a分割為部分張量,分時地對部分張量進行運算。對部分張量分割之分割方法或分割數量並不特別限定。
圖6表示了將輸入資料a分解為兩個部分張量之情形時之動作例。將經分解之部分張量設為「第一部分張量a1」、「第二部分張量a2」。例如,層2M-1之卷積運算被分解為與第一部分張量a1對應之卷積運算(於圖6中,標記為「層2M-1(a1)」)及與第二部分張量a2對應之卷積運算(於圖6中,標記為「層2M-1(a2)」)。
與第一部分張量a1對應之卷積運算及量子化運算、以及與第二部分張量a2對應之卷積運算及量子化運算如圖6所示,可獨立地實施。
卷積運算電路4進行與第一部分張量a1對應之層2M-1之卷積運算(於圖6中,由層2M-1(a1)表示之運算)。然後,卷積運算電路4進行與第二部分張量a2對應之層2M-1之卷積運算(於圖6中,由層2M-1(a2)表示之運算)。又,量子化運算電路5進行與第一部分張量a1對應之層2M之量子化運算(於圖6中,由層2M(a1)表示之運算)。如此,NN電路100可並列地實施與第二部分張量a2對應之層2M-1之卷積運算、及與第一部分張量a1對應之層2M之量子化運算。
其次,卷積運算電路4進行與第一部分張量a1對應之層2M+1之卷積運算(於圖6中,由層2M+1(a1)表示之運算)。又,量子化運算電路5進行與第二部分張量a2對應之層2M之量子化運算(於圖6中,由層2M(a2)表示之運算)。如此,NN電路100可並列地實施與第一部分張量a1對應之層2M+1之卷積運算、及與第
二部分張量a2對應之層2M之量子化運算。
與第一部分張量a1對應之卷積運算及量子化運算、以及與第二部分張量a2對應之卷積運算及量子化運算可獨立地實施。因此,NN電路100例如亦可並列地實施與第一部分張量a1對應之層2M-1之卷積運算、及與第二部分張量a2對應之層2M+2之量子化運算。即,NN電路100並列地運算之卷積運算與量子化運算並不限定為連續之層之運算。
藉由將輸入資料a分割為部分張量,而NN電路100可使卷積運算電路4與量子化運算電路5並列地動作。其結果,削減卷積運算電路4與量子化運算電路5等待之時間,提高NN電路100之運算處理效率。於圖6所示之動作例中分割數量為2,但於分割數量大於2之情形時亦同樣地,NN電路100可使卷積運算電路4與量子化運算電路5並列地動作。
例如,於將輸入資料a分割為「第一部分張量a1」、「第二部分張量a2」及「第三部分張量」之情形時,NN電路100亦可並列地實施與第二部分張量a2對應之層2M-1之卷積運算、及與第三部分張量對應之層2M之量子化運算。運算之順序根據第一記憶體1及第二記憶體2中之輸入資料a之儲存情況而適當變更。
再者,作為對部分張量之運算方法,表示了於由卷積運算電路4或量子化運算電路5進行同一層中之部分張量之運算之後進行後續層中之部分張量之運算的例子(方法1)。例如,如圖6所示,於卷積運算電路4中,於進行與第一部分張量a1及第二部分張量a2對應之層2M-1之卷積運算(於圖6中,由層2M-1(a1)及層2M-1(a2)表示之運算)之後,實施與第一部分張量a1及第二部分張量a2對應之層2M+1之卷積運算(於圖6中,由層2M+1(a1)及層2M+1(a2)表示之運算)。
然而,對部分張量之運算方法並不限定於此。對部分張量之運算方法亦可為於進行複數層中之一部分之部分張量之運算後實施其餘部分之部分
張量之運算的方法(方法2)。例如,於卷積運算電路4中,亦可於進行與第一部分張量a1對應之層2M-1及與第一部分張量a1對應之層2M+1之卷積運算之後,實施與第二部分張量a2對應之層2M-1及與第二部分張量a2對應之層2M+1之卷積運算。
又,對部分張量之運算方法亦可為將方法1與方法2組合來運算部分張量之方法。但是,於使用方法2之情形時,必須根據與部分張量之運算順序相關之依存關係實施運算。
其次,對NN電路100之各構成詳細地進行說明。
[DMAC 3]
圖7係DMAC 3之內部方塊圖。
DMAC 3具有資料傳送電路31及狀態控制器32。DMAC 3具有對資料傳送電路31之專用之狀態控制器32,輸入指示命令後,不需要外部之控制器便可實施DMA資料傳送。
資料傳送電路31連接於外部匯流排EB,進行DRAM等外部記憶體與第一記憶體1之間之DMA資料傳送。又,資料傳送電路31進行DRAM等外部記憶體與第二記憶體2之間之DMA資料傳送。又,資料傳送電路31進行DRAM等外部記憶體與卷積運算電路4之間之資料傳送。又,資料傳送電路31進行DRAM等外部記憶體與量子化運算電路5之間之資料傳送。資料傳送電路31之DMA通道數量並不限定。例如,亦可對第一記憶體1與第二記憶體2而分別具有專用之DMA通道。
狀態控制器32控制資料傳送電路31之狀態。又,狀態控制器32透過內部匯流排IB而與控制器6連接。狀態控制器32具有指令佇列33及控制電路34。
指令佇列33係儲存DMAC 3用之指示命令C3,例如由FIFO(先進
先出:first in first out)記憶體構成。於指令佇列33,經由內部匯流排IB寫入1個以上之指示命令C3。
控制電路34係將指示命令C3解碼,基於指示命令C3依次控制資料傳送電路31之狀態機器。控制電路34既可藉由邏輯電路來實現,亦可藉由利用軟體控制之CPU來實現。
圖8係控制電路34之狀態變遷圖。
控制電路34於指示命令C3(非空)輸入至指令佇列33後,自閒置狀態s1變遷至解碼狀態s2。
控制電路34於解碼狀態s2中,將自指令佇列33輸出之指示命令C3解碼。又,控制電路34將儲存於控制器6之暫存器61中之旗號S讀出,判定是否能夠執行於指示命令C3中指示之資料傳送電路31之動作。於無法執行之情形時(未就緒),控制電路34等待至能夠執行為止(等待)。於能夠執行之情形時(就緒),控制電路34自解碼狀態s2變遷至執行狀態s3。
控制電路34於執行狀態s3中,控制資料傳送電路31,使資料傳送電路31實施於指示命令C3中指示之動作。若資料傳送電路31之動作結束,則控制電路34自指令佇列33將結束執行之指示命令C3去除,並且更新儲存於控制器6之暫存器61中之旗號S。控制電路34於指令佇列33中有命令之情形時(非空),自執行狀態s3變遷至解碼狀態s2。控制電路34於指令佇列33中無命令之情形時(空),自執行狀態s3變遷至閒置狀態s1。
[卷積運算電路4]
圖9係卷積運算電路4之內部方塊圖。
卷積運算電路4具有權重記憶體41、乘法器42、累積器電路43、及狀態控制器44。卷積運算電路4具有對乘法器42及累積器電路43之專用之狀態控制器44,輸入指示命令後,不需要外部之控制器便可實施卷積運算。
權重記憶體41係儲存用於卷積運算之權重w之記憶體,例如係由SRAM(靜態隨機存取記憶體:static random access memory)等構成之揮發性記憶體等能夠覆寫之記憶體。DMAC 3藉由DMA傳送而將卷積運算所需要之權重w寫入至權重記憶體41。
圖10係乘法器42之內部方塊圖。
乘法器42將輸入向量A與權重矩陣W相乘。輸入向量A如上所述,係具有分割輸入資料a(x+i,y+j,co)針對每個i、j展開之Bc個要素之向量資料。又,權重矩陣W係具有分割權重w(i,j,co,do)針對每個i、j展開之Bc×Bd個要素之矩陣資料。乘法器42具有Bc×Bd個乘積累加運算單元47,且可並列地實施將輸入向量A與權重矩陣W相乘。
乘法器42將相乘所需要之輸入向量A與權重矩陣W自第一記憶體1及權重記憶體41讀出後實施相乘。乘法器42將Bd個乘積累加運算結果O(di)輸出。
圖11係乘積累加運算單元47之內部方塊圖。
乘積累加運算單元47實施輸入向量A之要素A(ci)與權重矩陣W之要素W(ci,di)之相乘。又,乘積累加運算單元47將相乘結果與其他乘積累加運算單元47之相乘結果S(ci,di)相加。乘積累加運算單元47將相加結果S(ci+1,di)輸出。要素A(ci)係2位元之無符號整數(0,1,2,3)。要素W(ci,di)係1位元之有符號整數(0,1),值「0」表示+1,值「1」表示-1。
乘積累加運算單元47具有反轉器(inverter)47a、選擇器47b、及加法器47c。乘積累加運算單元47不使用乘法器,僅使用反轉器47a及選擇器47b進行相乘。選擇器47b於要素W(ci,di)為「0」之情形時,選擇要素A(ci)之輸入。選擇器47b於要素W(ci,di)為「1」之情形時,選擇藉由反轉器使要素A(ci)反轉所得之補數。要素W(ci,di)亦輸入至加法器47c之Carry-in(進位輸入)。加法器47c於要
素W(ci,di)為「0」時,輸出將S(ci,di)與要素A(ci)相加所得之值。加法器47c於W(ci,di)為「1」時,輸出自S(ci,di)減去要素A(ci)所得之值。
圖12係累積器電路43之內部方塊圖。
累積器電路43將乘法器42之乘積累加運算結果O(di)累積於第二記憶體2中。累積器電路43具有Bd個累積器單元48,且可將Bd個乘積累加運算結果O(di)並列地累積於第二記憶體2中。
圖13係累積器單元48之內部方塊圖。
累積器單元48具有加法器48a及遮罩部48b。加法器48a將乘積累加運算結果O之要素O(di)與儲存於第二記憶體2中之式1所示之卷積運算之中途經過亦即部分和相加。相加結果係每個要素為16位元。相加結果並不限定於每個要素為16位元,例如亦可為每個要素為15位元或17位元。
加法器48a將相加結果寫入至第二記憶體2之同一位址。遮罩部48b於初始化訊號clear生效(assert)之情形時,將來自第二記憶體2之輸出遮蔽,使對要素O(di)之相加對象為零。初始化訊號clear於第二記憶體2中未儲存有中途經過之部分和之情形時生效。
利用乘法器42及累積器電路43之卷積運算完成後,將輸出資料f(x,y,do)儲存於第二記憶體中。
狀態控制器44控制乘法器42及累積器電路43之狀態。又,狀態控制器44透過內部匯流排IB而與控制器6連接。狀態控制器44具有指令佇列45及控制電路46。
指令佇列45係儲存卷積運算電路4用之指示命令C4,例如由FIFO記憶體構成。於指令佇列45,經由內部匯流排IB寫入指示命令C4。
控制電路46係將指示命令C4解碼,基於指示命令C4控制乘法器42及累積器電路43之狀態機器。控制電路46係與DMAC 3之狀態控制器32之控制
電路34相同之構成。
[量子化運算電路5]
圖14係量子化運算電路5之內部方塊圖。
量子化運算電路5具有量子化參數記憶體51、向量運算電路52、量子化電路53、及狀態控制器54。量子化運算電路5具有對向量運算電路52及量子化電路53之專用之狀態控制器54,輸入指示命令後,不需要外部之控制器便可實施量子化運算。
量子化參數記憶體51係儲存用於量子化運算之量子化參數q之記憶體,例如係由SRAM(靜態隨機存取記憶體:static random access memory)等構成之揮發性記憶體等能夠覆寫之記憶體。DMAC 3藉由DMA傳送而將量子化運算所需要之量子化參數q寫入至量子化參數記憶體51。
圖15係向量運算電路52與量子化電路53之內部方塊圖。
向量運算電路52對儲存於第二記憶體2中之輸出資料f(x,y,do)進行運算。向量運算電路52具有Bd個運算單元57,且對輸出資料f(x,y,do)並列地進行SIMD(單指令流多資料流:single-instruction stream multiple-data stream)運算。
圖16係運算單元57之方塊圖。
運算單元57例如具有ALU 57a、第一選擇器57b、第二選擇器57c、暫存器57d、及移位器(shifter)57e。運算單元57亦可進一步具有公知之通用SIMD運算電路所具有之其他運算器等。
向量運算電路52藉由將運算單元57所具有之運算器等組合,而對輸出資料f(x,y,do)進行量子化運算層220中之池化層221、批次正規化層222、或激勵函數層223之運算中至少一個運算。
運算單元57可將儲存於暫存器57d之資料與自第二記憶體2讀出之輸出資料f(x,y,do)之要素f(di)藉由ALU 57a而相加。運算單元57可將利用ALU
57a之相加結果儲存於暫存器57d。運算單元57藉由代替由第一選擇器57b之選擇而儲存於暫存器57d之資料而將「0」輸入至ALU 57a可使相加結果初始化。例如,於池化區域為2×2之情形時,移位器57e可藉由將ALU 57a之輸出右移2位元而輸出相加結果之平均值。向量運算電路52藉由重複Bd個運算單元57進行之上述運算等,可實施式2所示之平均池化運算。
運算單元57可將儲存於暫存器57d之資料與自第二記憶體2讀出之輸出資料f(x,y,do)之要素f(di)藉由ALU 57a進行比較。運算單元57可根據利用ALU 57a之比較結果控制第二選擇器57c,選擇儲存於暫存器57d中之資料與要素f(di)之較大者。運算單元57可藉由將由第一選擇器57b之選擇而要素f(di)之可取之值之最小值輸入至ALU 57a來使比較對象初始化為最小值。於本實施形態中要素f(di)係16位元有符號整數,故而要素f(di)之可取之值之最小值為「0x8000」。向量運算電路52藉由重複Bd個運算單元57進行之上述運算等,可實施式3之MAX池化運算。再者,於MAX池化運算中,移位器57e不將第二選擇器57c之輸出位移。
運算單元57可將儲存於暫存器57d中之資料與自第二記憶體2讀出之輸出資料f(x,y,do)之要素f(di)藉由ALU 57a相減。移位器57e可將ALU 57a之輸出左位移(即相乘)或右位移(即相除)。向量運算電路52藉由重複Bd個運算單元57進行之上述運算等,可實施式4之批次正規化之運算。
運算單元57可將自第二記憶體2讀出之輸出資料f(x,y,do)之要素f(di)與藉由第一選擇器57b而選擇之「0」藉由ALU 57a進行比較。運算單元57可根據利用ALU 57a之比較結果來選擇要素f(di)與預先儲存於暫存器57d中之常數值「0」之任一者後輸出。向量運算電路52藉由重複Bd個運算單元57進行之上述運算等,可實施式5之ReLU運算。
向量運算電路52可實施平均池化、MAX池化、批次正規化、激勵
函數之運算及該等運算之組合。向量運算電路52由於可實施通用SIMD運算,故而亦可實施量子化運算層220中之運算所需要之其他運算。又,向量運算電路52亦可實施量子化運算層220中之運算以外之運算。
再者,量子化運算電路5亦可不具有向量運算電路52。於量子化運算電路5不具有向量運算電路52之情形時,將輸出資料f(x,y,do)輸入至量子化電路53。
量子化電路53對向量運算電路52之輸出資料進行量子化。量子化電路53如圖15所示,具有Bd個量子化單元58,對向量運算電路52之輸出資料並列地進行運算。
圖17係量子化單元58之內部方塊圖。
量子化單元58對向量運算電路52之輸出資料之要素in(di)進行量子化。量子化單元58具有比較器58a及編碼器58b。量子化單元58對向量運算電路52之輸出資料(16位元/要素),進行量子化運算層220中之量子化層224之運算(式6)。量子化單元58自量子化參數記憶體51讀出需要之量子化參數q(th0,th1,th2),藉由比較器58a而進行輸入in(di)與量子化參數q之比較。量子化單元58將利用比較器58a之比較結果藉由編碼器58b而量子化為2位元/要素。式4中之α(c)與β(c)由於係針對每個變數c而不同之參數,故而反映α(c)與β(c)之量子化參數q(th0,th1,th2)係針對每個in(di)而不同之參數。
量子化單元58藉由將輸入in(di)與3個閾值th0,th1,th2進行比較,而將輸入in(di)分類為4個區域(例如,in≦th0,th0<in≦th1,th1<in≦th2,th2<in),並將分類結果編碼為2位元後輸出。量子化單元58亦可藉由量子化參數q(th0,th1,th2)之設定,而結合量子化進行批次正規化或激勵函數之運算。
量子化單元58藉由將閾值th0設定為式4之β(c),將閾值之差(th1-th0)及(th2-th1)設定為式4之α(c)進行量子化,可將式4所示之批次正規化之運算
與量子化一併實施。藉由使(th1-th0)及(th2-th1)變大可使α(c)變小。藉由使(th1-th0)及(th2-th1)變小可使α(c)變大。
量子化單元58可與輸入in(di)之量子化一併實施激勵函數之ReLU運算。例如,量子化單元58於in(di)≦th0及th2<in(di)之區域中使輸出值飽和。量子化單元58以輸出為非線性之方式藉由設定量子化參數q可與量子化一併實施激勵函數之運算。
狀態控制器54控制向量運算電路52及量子化電路53之狀態。又,狀態控制器54透過內部匯流排IB而與控制器6連接。狀態控制器54具有指令佇列55及控制電路56。
指令佇列55係儲存量子化運算電路5用之指示命令C5,例如由FIFO記憶體構成。於指令佇列55,經由內部匯流排IB寫入指示命令C5。
控制電路56係將指示命令C5解碼,基於指示命令C5控制向量運算電路52及量子化電路53之狀態機器。控制電路56係與DMAC 3之狀態控制器32之控制電路34相同之構成。
量子化運算電路5將具有Bd個要素之量子化運算輸出資料寫入至第一記憶體1。再者,式10表示Bd與Bc之較佳之關係。於式10中n為整數。
[數式10]Bd=2 n .Bc‧‧‧(式10)
[控制器6]
控制器6將自外部主機CPU傳送之指示命令傳送至DMAC 3、卷積運算電路4及量子化運算電路5所具有之指令佇列。控制器6亦可具有儲存對於各電路之指示命令之命令記憶體。
控制器6連接於外部匯流排EB,且作為外部主機CPU之從屬裝置動作。控制器6具有包含參數暫存器或狀態暫存器之暫存器61。參數暫存器係控
制NN電路100之動作之暫存器。狀態暫存器係表示包含旗號S之NN電路100之狀態之暫存器。
[旗號S]
圖18係說明利用旗號S之NN電路100之控制之圖。
旗號S具有第一旗號S1、第二旗號S2、及第三旗號S3。旗號S藉由P操作而減量,藉由V操作而增量。利用DMAC 3、卷積運算電路4及量子化運算電路5之P操作及V操作經由內部匯流排IB,更新控制器6所具有之旗號S。
第一旗號S1用以控制第一資料流F1。第一資料流F1係DMAC 3(生產者)將輸入資料a寫入至第一記憶體1、卷積運算電路4(消費者)將輸入資料a讀出之資料流。第一旗號S1具有第一寫入旗號S1W及第一讀出旗號S1R。
第二旗號S2用於控制第二資料流F2。第二資料流F2係卷積運算電路4(生產者)將輸出資料f寫入至第二記憶體2、量子化運算電路5(消費者)將輸出資料f讀出之資料流。第二旗號S2具有第二寫入旗號S2W及第二讀出旗號S2R。
第三旗號S3係用於控制第三資料流F3。第三資料流F3係量子化運算電路5(生產者)將量子化運算輸出資料寫入至第一記憶體1、卷積運算電路4(消費者)將量子化運算電路5之量子化運算輸出資料讀出之資料流。第三旗號S3具有第三寫入旗號及第三讀出旗號。
[第一資料流F1]
圖19係第一資料流F1之時序圖。
第一寫入旗號S1W係限制利用第一資料流F1中之DMAC 3之對於第一記憶體1之寫入的旗號。第一寫入旗號S1W表示於第一記憶體1中,例如能夠儲存輸入向量A等既定之尺寸之資料之記憶體區域中資料已經讀出且能夠寫入其他資料之記憶體區域之數量。於第一寫入旗號S1W為「0」之情形時,DMAC 3不對第一記憶體1進行第一資料流F1中之寫入,等待至第一寫入旗號S1W成為「1」以上
為止。
第一讀出旗號S1R係限制利用第一資料流F1中之卷積運算電路4之自第一記憶體1之讀出的旗號。第一讀出旗號S1R表示於第一記憶體1中,例如能夠儲存輸入向量A等既定之尺寸之資料之記憶體區域中資料已經寫入且能夠讀出之記憶體區域之數量。於第一讀出旗號S1R為「0」之情形時,卷積運算電路4不進行自第一記憶體1之第一資料流F1中之讀出,等待至第一讀出旗號S1R成為「1」以上為止。
DMAC 3藉由對指令佇列33儲存指示命令C3,而開始DMA傳送。如圖19所示,由於第一寫入旗號S1W並非「0」,故而DMAC 3開始DMA傳送(DMA傳送1)。DMAC 3於開始DMA傳送時,對第一寫入旗號S1W進行P操作。DMAC 3於DMA傳送完成之後,對第一讀出旗號S1R進行V操作。
卷積運算電路4藉由將指示命令C4儲存於指令佇列45,而開始卷積運算。如圖19所示,由於第一讀出旗號S1R為「0」,故而卷積運算電路4等待至第一讀出旗號S1R成為「1」以上為止(解碼狀態s2中之等待)。若藉由DMAC 3進行之V操作而第一讀出旗號S1R成為「1」,則卷積運算電路4開始卷積運算(卷積運算1)。卷積運算電路4於開始卷積運算時,對第一讀出旗號S1R進行P操作。卷積運算電路4於卷積運算完成之後,對第一寫入旗號S1W進行V操作。
於DMAC 3開始於圖19中記載為「DMA傳送3」之DMA傳送時,由於第一寫入旗號S1W為「0」,故而DMAC 3等待至第一寫入旗號S1W成為「1」以上為止(解碼狀態s2中之等待)。若藉由卷積運算電路4進行之V操作而第一寫入旗號S1W成為「1」以上,則DMAC 3開始DMA傳送。
DMAC 3與卷積運算電路4藉由使用旗號S1,可防止於第一資料流F1中對於第一記憶體1之存取搶占。又,DMAC 3與卷積運算電路4藉由使用旗號S1,可取得第一資料流F1中之資料傳送之同步,且獨立地並列地動作。
[第二資料流F2]
圖20係第二資料流F2之時序圖。
第二寫入旗號S2W係限制利用第二資料流F2中之卷積運算電路4之對於第二記憶體2之寫入的旗號。第二寫入旗號S2W表示於第二記憶體2中,例如能夠儲存輸出資料f等既定之尺寸之資料之記憶體區域中已經讀出資料且能夠寫入其他資料之記憶體區域的數量。於第二寫入旗號S2W為「0」之情形時,卷積運算電路4不對第二記憶體2進行第二資料流F2中之寫入,等待至第二寫入旗號S2W成為「1」以上為止。
第二讀出旗號S2R係限制利用第二資料流F2中之量子化運算電路5之自第二記憶體2之讀出的旗號。第二讀出旗號S2R表示於第二記憶體2中,例如能夠儲存輸出資料f等既定之尺寸之資料之記憶體區域中已經寫入資料且能夠讀出之記憶體區域的數量。於第二讀出旗號S2R為「0」之情形時,量子化運算電路5不進行自第二記憶體2之第二資料流F2中之讀出,等待至第二讀出旗號S2R成為「1」以上為止。
卷積運算電路4如圖20所示,於開始卷積運算時,對第二寫入旗號S2W進行P操作。卷積運算電路4於卷積運算完成之後,對第二讀出旗號S2R進行V操作。
量子化運算電路5藉由將指示命令C5儲存於指令佇列55,而開始量子化運算。如圖20所示,由於第二讀出旗號S2R為「0」,故而量子化運算電路5等待至第二讀出旗號S2R成為「1」以上為止(解碼狀態s2中之等待)。若藉由卷積運算電路4進行之V操作而第二讀出旗號S2R成為「1」,則量子化運算電路5開始量子化運算(量子化運算1)。量子化運算電路5於開始量子化運算時,對第二讀出旗號S2R進行P操作。量子化運算電路5於量子化運算完成之後,對第二寫入旗號S2W進行V操作。
於量子化運算電路5開始於圖20中記載為「量子化運算2」之量子化運算時,由於第二讀出旗號S2R為「0」,故而量子化運算電路5等待至第二讀出旗號S2R成為「1」以上為止(解碼狀態s2中之等待)。若藉由卷積運算電路4進行之V操作而第二讀出旗號S2R成為「1」以上,則量子化運算電路5開始量子化運算。
卷積運算電路4與量子化運算電路5藉由使用旗號S2,可防止於第二資料流F2中對於第二記憶體2之存取搶占。又,卷積運算電路4與量子化運算電路5藉由使用旗號S2,可取得第二資料流F2中之資料傳送之同步,且獨立地並列地動作。
[第三資料流F3]
第三寫入旗號係限制利用第三資料流F3中之量子化運算電路5之對於第一記憶體1之寫入的旗號。第三寫入旗號表示於第一記憶體1中,例如能夠儲存量子化運算電路5之量子化運算輸出資料等既定之尺寸之資料之記憶體區域中,已經讀出資料且能夠寫入其他資料之記憶體區域的數量。於第三寫入旗號為「0」之情形時,量子化運算電路5不對第一記憶體1進行第三資料流F3中之寫入,等待至第三寫入旗號成為「1」以上為止。
第三讀出旗號係限制利用第三資料流F3中之卷積運算電路4之自第一記憶體1之讀出的旗號。第三讀出旗號表示於第一記憶體1中,例如能夠儲存量子化運算電路5之量子化運算輸出資料等既定之尺寸之資料之記憶體區域中,已經寫入資料且能夠讀出之記憶體區域的數量。於第三讀出旗號為「0」之情形時,卷積運算電路4不進行自第三資料流F3中之第一記憶體1之讀出,等待至第三讀出旗號成為「1」以上。
量子化運算電路5與卷積運算電路4藉由使用旗號S3,可防止於第三資料流F3中對於第一記憶體1之存取搶占。又,量子化運算電路5與卷積運算電
路4藉由使用旗號S3,可取得第三資料流F3中之資料傳送之同步,且獨立地並列地動作。
第一記憶體1於第一資料流F1及第三資料流F3中共有。NN電路100藉由另外設置第一旗號S1與第三旗號S3,可將第一資料流F1與第三資料流F3加以區別後取得資料傳送之同步。
[卷積運算電路4之動作(1)]
卷積運算電路4於進行卷積運算時,自第一記憶體1進行讀出,對第二記憶體2進行寫入。即,卷積運算電路4於第一資料流F1中係消費者,於第二資料流F2中係生產者。因此,卷積運算電路4於開始卷積運算時,對第一讀出旗號S1R進行P操作(參照圖19),對第二寫入旗號S2W進行P操作(參照圖20)。卷積運算電路4於卷積運算完成之後,對第一寫入旗號S1W進行V操作(參照圖19),對第二讀出旗號S2R進行V操作(參照圖20)。
卷積運算電路4於開始卷積運算時,等待至第一讀出旗號S1R成為「1」以上,且第二寫入旗號S2W成為「1」以上為止(解碼狀態s2中之等待)。
[量子化運算電路5之動作]
量子化運算電路5於進行量子化運算時,自第二記憶體2進行讀出,對第一記憶體1進行寫入。即,量子化運算電路5於第二資料流F2中係消費者,於第二資料流F3中係生產者。因此,量子化運算電路5於開始量子化運算時,對第二讀出旗號S2R進行P操作,對第三寫入旗號進行P操作。量子化運算電路5於量子化運算完成之後,對第二寫入旗號S2W進行V操作,對第三讀出旗號進行V操作。
量子化運算電路5於開始量子化運算時,等待至第二讀出旗號S2R成為「1」以上,且第三寫入旗號成為「1」以上為止(解碼狀態s2中之等待)。
[卷積運算電路4之動作(2)]
卷積運算電路4自第一記憶體1讀出之輸入資料亦有時係於第三資料流中量
子化運算電路5寫入之資料。於該情形時,卷積運算電路4於第三資料流F3中係消費者,於第二資料流F2中係生產者。因此,卷積運算電路4於開始卷積運算時,對第三讀出旗號進行P操作,對第二寫入旗號S2W進行P操作。卷積運算電路4於卷積運算完成之後,對第三寫入旗號進行V操作,對第二讀出旗號S2R進行V操作。
卷積運算電路4於開始卷積運算時,等待至第三讀出旗號成為「1」以上,且第二寫入旗號S2W成為「1」以上為止(解碼狀態s2中之等待)。
如以上所說明,根據本實施形態之NN電路100,將卷積運算電路4與量子化運算電路5形成為迴路狀,卷積運算電路4與量子化運算電路5交替地(圖5)或並列地(圖6),進行圖1所示之CNN 200之運算。因此,NN電路100之電路規模較小,能夠嵌入至IoT機器等嵌入式機器。
根據本實施形態之NN電路100,向卷積運算電路4輸入之輸入資料藉由量子化運算電路5而量子化。因此,可削減卷積運算電路4之運算量,可減小卷積運算電路4之電路規模。
根據本實施形態之NN電路100,DMAC 3、量子化運算電路5及卷積運算電路4藉由使用旗號S,可取得所使用之資料流中之資料傳送之同步,且獨立地並列地動作。又,根據本實施形態之NN電路100,藉由針對每個資料流設置旗號,可將資料流加以區別後取得資料傳送之同步。因此,NN電路100與各電路依次執行之情形時相比,運算速度快且高性能。
以上,參照圖式對本發明之第一實施形態詳細地進行了敍述,但具體的構成並不限定於該實施形態,亦包含不脫離本發明之主旨之範圍之簡單變更等。又,能夠將於上述實施形態及變形例中所示之構成要素適當組合而構成。
(變形例1)
於上述實施形態中,第一記憶體1與第二記憶體2係不同之記憶體,但第一記憶體1與第二記憶體2之態樣並不限定於此。第一記憶體1與第二記憶體2例如亦可為同一記憶體中之第一記憶體區域與第二記憶體區域。
(變形例2)
於上述實施形態中,旗號S係針對第一資料流F1、第二資料流F2及第二資料流F3而設置,但旗號S之態樣並不限定於此。旗號S例如亦可設置於DMAC 3將權重w寫入至權重記憶體41、乘法器42讀出權重w之資料流。旗號S例如亦可設置於DMAC 3將量子化參數q寫入至量子化參數記憶體51、量子化電路53讀出量子化參數q之資料流。
(變形例3)
例如,上述實施形態中記載之輸入至NN電路100之資料並不限定於單一之形式,能夠由靜止圖像、動態圖像、聲音、文字、數值及該等組合而構成。再者,輸入至NN電路100之資料並不限定於可搭載於設置有NN電路100之網路終端設備之光感測器、溫度計、全球定位系統(GPS)計測器、角速度計測器、風速計等物理量測定器中之測定結果。亦可將自周邊機器經由有線或無線通信接收之基站資訊、車輛、船舶等資訊、天氣資訊、與混雜情況相關之資訊等周邊資訊、金融資訊、個人資訊等不同資訊組合。
(變形例4)
設置有NN電路100之網路終端設備設想由電池等驅動之行動電話等通信機器、個人電腦等智慧型裝置、數位相機、遊戲機器、機器人製品等行動機器,但並不限定於此。即便利用乙太網路供電(PoE)等能夠供給之峰值電力限制、製品發熱之降低或長時間驅動之要求較高之製品亦可獲得其他先例沒有之效果。例如,藉由應用於搭載於車輛、船舶等之車載照相機、設置於公共設施、路上等之監視照相機等不僅可實現長時間之拍攝,而且亦有助於輕量化、高耐久化。又,
藉由亦應用於電視、顯示器等顯示裝置、醫療照相機、手術機器人等醫療機器、製造現場、建築現場所使用之作業機器人等可發揮相同之效果。
(變形例5)
NN電路100亦可使用一個以上之處理器來實現NN電路100之一部分或全部。例如,NN電路100亦可藉由利用處理器之軟體處理來實現輸入層或輸出層之一部分或全部。藉由軟體處理而實現之輸入層或輸出層之一部分例如係資料之正規化或轉換。藉此,可應對各種形式之輸入形式或輸出形式。再者,由處理器執行之軟體亦可使用通信手段或外部媒體能夠覆寫地構成。
(變形例6)
NN電路100亦可藉由將雲端上之圖形處理單元(GPU)等組合來實現CNN 200中之處理之一部分。NN電路100藉由除了利用設置有NN電路100之網路終端設備進行之處理以外,還於雲端上進而進行處理,或者除了於雲端上之處理以外於網路終端設備上進行處理,可利用較少之資源實現更複雜之處理。根據此種構成,NN電路100可藉由處理分散而降低網路終端設備與雲端之間之通信量。
(變形例7)
NN電路100進行之運算係學習後之CNN 200之至少一部分,但NN電路100進行之運算之對象並不限定於此。NN電路100進行之運算例如亦可如卷積運算與量子化運算般,係重複兩種運算之學習後之神經網路之至少一部分。
又,本說明書中記載之效果僅為說明性質或例示性質者,而並非限定性的。即,本發明之技術可發揮/代替上述效果,並發揮對於本發明所屬技術領域中具有通常知識者而言根據本說明書之記載而明瞭之其他效果。
[產業上之可利用性]
本發明可應用於神經網路之運算。
1:第一記憶體
2:第二記憶體
3:DMA控制器
4:卷積運算電路
5:量子化運算電路
6:控制器
100:神經網路電路
EB:外部匯流排
IB:內部匯流排
Claims (20)
- 一種神經網路電路,其具備:第一記憶體,其儲存輸入資料;卷積運算電路,其對儲存於上述第一記憶體中之上述輸入資料與權重進行卷積運算;第二記憶體,其儲存上述卷積運算電路之卷積運算輸出資料;及量子化運算電路,其對儲存於上述第二記憶體中之上述卷積運算輸出資料進行量子化運算;上述第一記憶體儲存上述量子化運算電路之量子化運算輸出資料,上述卷積運算電路對作為上述輸入資料之儲存於上述第一記憶體中之上述量子化運算輸出資料進行上述卷積運算,上述第一記憶體、上述卷積運算電路、上述第二記憶體、及上述量子化運算電路形成為迴路狀。
- 如請求項1之神經網路電路,其中上述卷積運算電路基於上述卷積運算電路用之指示命令,自上述第一記憶體讀出上述輸入資料,將上述卷積運算輸出資料寫入至上述第二記憶體,上述量子化運算電路基於上述量子化運算電路用之指示命令,自上述第二記憶體讀出上述卷積運算輸出資料,將上述量子化運算輸出資料寫入至上述第一記憶體。
- 如請求項1之神經網路電路,其中上述輸入資料被分解為第一部分張量與第二部分張量,並列地執行上述卷積運算電路中之對上述第一部分張量之上述卷積運算、與上述量子化運算電路中之對上述第二部分張量之上述量子化運算。
- 如請求項1之神經網路電路,其中 上述卷積運算電路對儲存於上述第一記憶體中之上述輸入資料進行層2M-1(M為自然數)之上述卷積運算,將上述層2M-1之上述卷積運算輸出資料儲存於上述第二記憶體中,上述量子化運算電路對儲存於上述第二記憶體中之上述層2M-1之上述卷積運算輸出資料進行層2M之上述量子化運算,將上述層2M之上述量子化運算輸出資料儲存於上述第一記憶體中,上述卷積運算電路將儲存於上述第一記憶體中之上述層2M之上述量子化運算輸出資料作為上述輸入資料來進行層2M+1之上述卷積運算,將上述層2M+1之上述卷積運算輸出資料儲存於上述第二記憶體中。
- 如請求項4之神經網路電路,其中上述輸入資料被分解為第一部分張量與第二部分張量,並列地實施與上述第一部分張量對應之上述層2M+1之上述卷積運算、及與上述第二部分張量對應之上述層2M之上述量子化運算。
- 如請求項1之神經網路電路,其中上述卷積運算電路具有:乘法器,其對上述輸入資料與上述權重進行乘積累加運算;及累積器電路,其將上述乘法器之乘積累加運算結果累積相加。
- 如請求項6之神經網路電路,其中上述乘法器將上述輸入資料與上述權重藉由反轉器及選擇器而相乘。
- 如請求項1之神經網路電路,其中上述輸入資料係向量資料,上述權重係矩陣資料。
- 如請求項1之神經網路電路,其中上述輸入資料之各要素係2位元, 上述權重之各要素係1位元。
- 如請求項1之神經網路電路,其中上述量子化運算電路進一步具有將上述卷積運算輸出資料正規化之電路。
- 如請求項1之神經網路電路,其中上述量子化運算電路進一步具有實施池化運算之電路。
- 如請求項1之神經網路電路,其中上述量子化運算電路進一步具有實施激勵函數之運算之電路。
- 如請求項1之神經網路電路,其進一步具有將上述輸入資料傳送至上述第一記憶體之DMA控制器。
- 如請求項1之神經網路電路,其中上述第二記憶體係能夠隨機存取且能夠覆寫之記憶體。
- 如請求項13之神經網路電路,其具有:第一寫入旗號,其限制利用上述DMA控制器之對上述第一記憶體之寫入;及第一讀出旗號,其限制利用上述卷積運算電路之自上述第一記憶體之讀出。
- 如請求項1之神經網路電路,其具有:第二寫入旗號,其限制利用上述卷積運算電路之對上述第二記憶體之寫入;及第二讀出旗號,其限制利用上述量子化運算電路之自上述第二記憶體之讀出。
- 如請求項1之神經網路電路,其具有:第三寫入旗號,其限制利用上述量子化運算電路之對上述第一記憶體之寫入;及第三讀出旗號,其限制利用上述卷積運算電路之自上述第一記憶體之讀出。
- 一種網路終端設備,其包含如請求項1之神經網路電路,且藉由電池而驅動。
- 一種神經網路運算方法,其係使用第一記憶體區域與第二記憶體區域進行卷積運算與量子化運算者,且對儲存於上述第一記憶體區域中之輸入資料進行層2M-1(M為自然數)之上述卷積運算,將上述層2M-1之卷積運算輸出資料儲存於上述第二記憶體區域,對儲存於上述第二記憶體區域中之上述層2M-1之上述卷積運算輸出資料進行層2M之上述量子化運算,將上述層2M之量子化運算輸出資料儲存於上述第一記憶體區域,將儲存於上述第一記憶體區域中之上述層2M之上述量子化運算輸出資料作為上述輸入資料來進行層2M+1之上述卷積運算,將上述層2M+1之上述卷積運算輸出資料儲存於上述第二記憶體區域。
- 如請求項19記載之神經網路運算方法,其中將上述輸入資料分解為第一部分張量與第二部分張量,並列地實施與上述第一部分張量對應之上述層2M+1之上述卷積運算、及與上述第二部分張量對應之上述層2M之上述量子化運算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP2020-071932 | 2020-04-13 | ||
JP2020071932A JP6896306B1 (ja) | 2020-04-13 | 2020-04-13 | ニューラルネットワーク回路、エッジデバイスおよびニューラルネットワーク演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202139077A TW202139077A (zh) | 2021-10-16 |
TWI773245B true TWI773245B (zh) | 2022-08-01 |
Family
ID=76540464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110113109A TWI773245B (zh) | 2020-04-13 | 2021-04-12 | 神經網路電路、網路終端設備及神經網路運算方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210319294A1 (zh) |
JP (1) | JP6896306B1 (zh) |
CN (1) | CN113537479A (zh) |
TW (1) | TWI773245B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023056644A (ja) * | 2021-10-08 | 2023-04-20 | LeapMind株式会社 | ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法 |
WO2023139990A1 (ja) * | 2022-01-24 | 2023-07-27 | LeapMind株式会社 | ニューラルネットワーク回路およびニューラルネットワーク演算方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04233063A (ja) * | 1990-12-28 | 1992-08-21 | Matsushita Electric Ind Co Ltd | ニューロプロセッサ |
JP2019139747A (ja) * | 2018-02-13 | 2019-08-22 | 北京曠視科技有限公司Beijing Kuangshi Technology Co., Ltd. | 演算装置、演算実行設備及び演算実行方法 |
WO2019220692A1 (ja) * | 2018-05-15 | 2019-11-21 | 三菱電機株式会社 | 演算装置 |
US20190369988A1 (en) * | 2017-04-28 | 2019-12-05 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
TW202005312A (zh) * | 2018-05-15 | 2020-01-16 | 美商萊特美特股份有限公司 | 用於訓練基於矩陣的可微分程式的系統及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6539459B2 (ja) * | 2015-02-24 | 2019-07-03 | 国立大学法人広島大学 | Lvqニューラルネットワーク |
CN110245741A (zh) * | 2018-03-09 | 2019-09-17 | 佳能株式会社 | 多层神经网络模型的优化和应用方法、装置及存储介质 |
-
2020
- 2020-04-13 JP JP2020071932A patent/JP6896306B1/ja active Active
-
2021
- 2021-04-12 TW TW110113109A patent/TWI773245B/zh active
- 2021-04-12 US US17/227,785 patent/US20210319294A1/en active Pending
- 2021-04-12 CN CN202110388524.2A patent/CN113537479A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04233063A (ja) * | 1990-12-28 | 1992-08-21 | Matsushita Electric Ind Co Ltd | ニューロプロセッサ |
US20190369988A1 (en) * | 2017-04-28 | 2019-12-05 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
JP2019139747A (ja) * | 2018-02-13 | 2019-08-22 | 北京曠視科技有限公司Beijing Kuangshi Technology Co., Ltd. | 演算装置、演算実行設備及び演算実行方法 |
WO2019220692A1 (ja) * | 2018-05-15 | 2019-11-21 | 三菱電機株式会社 | 演算装置 |
TW202005312A (zh) * | 2018-05-15 | 2020-01-16 | 美商萊特美特股份有限公司 | 用於訓練基於矩陣的可微分程式的系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2021168095A (ja) | 2021-10-21 |
KR20210127099A (ko) | 2021-10-21 |
JP6896306B1 (ja) | 2021-06-30 |
TW202139077A (zh) | 2021-10-16 |
CN113537479A (zh) | 2021-10-22 |
US20210319294A1 (en) | 2021-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147251B (zh) | 用于计算神经网络模型的系统、芯片及计算方法 | |
TWI773245B (zh) | 神經網路電路、網路終端設備及神經網路運算方法 | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
CN111459877A (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
US20230138667A1 (en) | Method for controlling neural network circuit | |
WO2022163861A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
CN112799599A (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
US20100257342A1 (en) | Row of floating point accumulators coupled to respective pes in uppermost row of pe array for performing addition operation | |
KR102667790B1 (ko) | 뉴럴 네트워크 회로, 에지 디바이스 및 뉴럴 네트워크 연산 방법 | |
WO2024038662A1 (ja) | ニューラルネットワーク学習装置およびニューラルネットワーク学習方法 | |
WO2024111644A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
WO2023058422A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法 | |
WO2023139990A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
JP2024075106A (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
JP2022183833A (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
CN116415100A (zh) | 业务处理方法、装置、处理器及计算设备 | |
US20240037412A1 (en) | Neural network generation device, neural network control method, and software generation program | |
US20230316071A1 (en) | Neural network generating device, neural network generating method, and neural network generating program | |
JP2022105437A (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
US20230289580A1 (en) | Neural network circuit and neural network circuit control method | |
WO2022230906A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
TWI798591B (zh) | 卷積神經網路運算方法及裝置 | |
JP2023154880A (ja) | ニューラルネットワーク生成方法およびニューラルネットワーク生成プログラム | |
JP2022114698A (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク制御方法およびソフトウェア生成プログラム |