TWI645335B - 卷積運算裝置及卷積運算方法 - Google Patents
卷積運算裝置及卷積運算方法 Download PDFInfo
- Publication number
- TWI645335B TWI645335B TW106138161A TW106138161A TWI645335B TW I645335 B TWI645335 B TW I645335B TW 106138161 A TW106138161 A TW 106138161A TW 106138161 A TW106138161 A TW 106138161A TW I645335 B TWI645335 B TW I645335B
- Authority
- TW
- Taiwan
- Prior art keywords
- convolution operation
- convolution
- block
- data
- scale
- Prior art date
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本發明揭露一種卷積運算方法,運算方法包括以下步驟:將一大規模卷積運算區塊分割成多個小規模卷積運算區塊;對小規模卷積運算區塊進行卷積運算以分別產生一部份結果;以及將部份結果相加作為大規模卷積運算區塊的一卷積運算結果。本發明還一併揭露一種可硬體支援前述卷積運算方法的卷積運算裝置。
Description
本發明係關於一種卷積運算裝置及卷積運算方法,尤指一種可將大規模卷積運算區塊分割成多個小規模卷積運算區塊進行卷積運算的卷積運算方法。
深度學習(deep learning)已是開展人工智慧(Artificial intelligence,AI)的重要應用技術之一。而卷積神經網絡(Convolutional Neural Network,CNN)則是近年來,引起廣泛重視的一種深度學習高效識別技術,其藉由複數個串接的特徵濾波器或濾鏡(filter)構成,且濾波器的卷積運算區塊規模可由如1×1、3×3的小區塊規模到較大的區塊規模,如5×5、7×7甚至是11×11的大規模卷積運算區塊。
但是,卷積運算是一種很耗費效能的運算,特別是對於大規模卷積運算區塊的卷積運算來說,更會占據大部分處理器的效能。此外,對於運算資料特徵之濾波器的卷積運算單元而言,通常只被設計於運算特定的卷積運算區塊規模,或是特定的輸入資料規模,並產生卷積運算單元只能運算小於該卷積運算區塊規模的運算限制或是硬體支援限制。而若是要進行更大的卷積運算區塊規模運算時,則須藉由軟體的輔助或是以額外的硬體資源,才可完成更大卷積運算區塊規模的運算。
因此,有必要提出一種卷積運算方法,可降低特定卷積運算區塊規模的限制,也不需以額外的硬體資源即可同樣達到大規模卷積運算區塊的運算,並同樣取得大規模卷積運算區塊的卷積運算結果,實為當前重要的課題之一。
有鑑於上述課題,本發明提出一種卷積運算裝置及卷積運算方法,可降低特定卷積運算區塊規模的限制,也不需以額外的硬體資源即可同樣達到大規模卷積運算區塊的運算,並同樣取得大規模卷積運算區塊的卷積運算結果。
為達上述目的,本發明提供一種卷積運算方法,包括以下步驟:將一大規模卷積運算區塊分割成多個小規模卷積運算區塊;對小規模卷積運算區塊進行卷積運算以分別產生一部份結果;以及將部份結果相加作為大規模卷積運算區塊的一卷積運算結果。
在一實施例中,小規模卷積運算區塊的大小相同。
在一實施例中,卷積運算方法更包括在小規模卷積運算區塊中超出大規模卷積運算區塊的部分填入0。
在一實施例中,進行卷積運算的步驟中,小規模卷積運算區塊是利用至少一卷積單元進行卷積運算以分別產生部分結果,小規模卷積運算區塊的區塊規模等於卷積單元硬體支援的最大卷積規模。
在一實施例中,進行卷積運算的步驟中,小規模卷積運算區塊是利用對應數量的卷積單元進行平行的卷積運算以分別產生部分結果。
在一實施例中,大規模卷積運算區塊包括多個濾波器係數,濾波器係數依據排列順序以及小規模卷積運算區塊的規模而分派到小規模卷積運算區塊中。
在一實施例中,大規模卷積運算區塊包括多個數據,數據依據排列順序以及小規模卷積運算區塊的規模而分派到小規模卷積運算區塊中。
在一實施例中,大規模卷積運算區塊的規模為5×5或7×7,小規模卷積運算區塊的規模為3×3。
在一實施例中,進行部份結果相加的步驟更包括:提供複數移動位址至各小規模卷積運算區塊,各部份結果係依據移動位址而於一座標中移動並彼此疊加。
在一實施例中,卷積運算方法更包括依據一當前卷積運算區塊的規模決定卷積運算模式,其中當卷積運算模式為分割模式時,當前卷 積運算區塊為大規模卷積運算區塊,進行將大規模卷積運算區塊分割成多個小規模卷積運算區塊、對小規模卷積運算區塊進行卷積運算以分別產生部份結果、以及將該等部份結果相加作為大規模卷積運算區塊的卷積運算結果。其中當卷積運算模式為非分割模式時,不將當前卷積運算區塊分割,對當前卷積運算區塊進行卷積運算。
在一實施例中,卷積運算方法更包括進行卷積神經網路的一後續層的部分運算。
為達上述目的,本發明還提供一種卷積運算裝置,可運行上述所提供的卷積運算方法。
承上所述,本發明所提供之卷積運算方法,藉由將一大規模卷積運算區塊分割成多個小規模卷積運算區塊;對小規模卷積運算區塊進行卷積運算以分別產生一部份結果;以及將部份結果相加作為大規模卷積運算區塊的一卷積運算結果,即可降低特定卷積運算區塊規模的限制,也不需以額外的硬體資源便可同樣達到大規模卷積運算區塊的運算,並同樣取得大規模卷積運算區塊的卷積運算結果。
1‧‧‧記憶體
2‧‧‧緩衝裝置
21‧‧‧記憶體控制單元
3‧‧‧卷積運算模組
30‧‧‧卷積單元陣列
4‧‧‧交錯加總單元
5‧‧‧加總緩衝單元
51‧‧‧部分加總區塊
52‧‧‧池化單元
6‧‧‧係數擷取控制器
7‧‧‧控制單元
71‧‧‧指令解碼器
72‧‧‧數據讀取控制器
8‧‧‧資料緩衝控制器
9‧‧‧卷積單元
91‧‧‧位址解碼器
92‧‧‧加法器
DMA‧‧‧直接記憶體存取
F1~F9‧‧‧小規模卷積運算區塊
PE‧‧‧卷積單元
PE0~PE8‧‧‧處理單位
(0,0)、(0,3)、(3,0)、(3,3)‧‧‧移動位址
圖1為對一二維數據進行卷積運算的示意圖。
圖2為卷積單元的示意圖。
圖3A為依據本發明一實施例將一個5×5大規模卷積運算區塊分割成四個3×3小規模卷積運算區塊的示意圖。
圖3B為本發明一實施例將多個濾波器係數依據排列順序及卷積運算區塊的規模而分派至卷積運算區塊的示意圖。
圖3C為本發明一實施例將多個數據依據排列順序及卷積運算區塊的規模而分派至卷積運算區塊的示意圖。
圖4為依據本發明再一實施例將一個7×7大規模卷積運算區塊分割成九個3×3小規模卷積運算區塊的示意圖。
圖5為依據本發明一實施例的一卷積運算裝置的區塊圖。
圖6為圖5所示之卷積運算裝置的部分示意圖。
圖7為依據本發明一實施例卷積單元的功能方塊圖。
以下將參照相關圖式,說明依本發明較佳實施例之一種卷積運算裝置及卷積運算方法,其中相同的元件將以相同的參照符號加以說明。
請參考圖1,圖1為對一二維數據進行卷積運算的示意圖。二維數據具有多行多列,其例如是影像,於此僅示意地顯示其中5×4的像素。一3×3矩陣大小的濾波器用於二維數據的卷積運算,濾波器具有係數FC0~FC8,濾波器移動的步幅小於濾波器的最短寬度。濾波器的規模與移動窗(sliding window)或卷積運算窗相當。移動窗可在5×4的影像上間隔移動,每移動一次便對窗內對應的數據P0~P8進行一次3×3卷積運算,卷積運算後的結果可稱為特徵值。移動窗S每次移動的間隔稱為步幅(stride),由於步幅(stride)的大小並不會超過移動窗S(sliding window)的大小或是卷積運算的尺寸(convolution size),因此以本實施例的移動窗步幅來說,將會小於3個像素的移動距離。而且,相鄰的卷積運算往往會有重疊的數據。以步幅等於1來說,數據P2、P5、P8是新數據,數據P0、P1、P3、P4、P6、P7是前一輪卷積運算已經輸入過的數據。對於一般卷積神經網路的應用來說,常用的移動窗尺寸為1×1、3×3、5×5、7×7不等,其中又以本實施例的移動窗尺寸較為常用(3×3)。
圖2為卷積單元的示意圖。請參照圖2所示,圖2的卷積單元可進行圖1的卷積運算,卷積單元具有3×3陣列的9個乘法器Mul_0~Mul_8,各乘法器具有一數據輸入、一濾波器係數輸入以及一乘法輸出OUT,數據輸入及濾波器係數輸入是各乘法器的二個乘法運算輸入。各乘法器的輸出OUT分別連接到加法器的輸入#0~#8,加法器將各乘法器的輸出相加後產生一卷積輸出OUT。進行完一輪的卷積運算後,乘法器Mul_0、Mul_3、Mul_6會將當下在其內的數據(本輪輸入的Q0、Q1、Q2)輸入到次一級的乘法器Mul_1、Mul_4、Mul_7,乘法器Mul_1、Mul_4、Mul_7會將當下在其內的數據(相當於前一輪輸入的Q0、Q1、Q2)輸入到次一級 的乘法器Mul_2、Mul_5、Mul_8,這樣就可以把部分已經輸入到卷積單元內的數據保留以供次一輪的卷積運算。乘法器Mul_0、Mul_3、Mul_6則在次一輪接收新數據Q0、Q1、Q2。前一輪、本輪、以及次一輪的卷積運算彼此間隔至少一個時脈。
舉例來說,在一般的情況下,濾波器係數不需要時常更新,係數FC0~FC8輸入到乘法器Mul_0~Mul_8後可以留存在乘法器Mul_0~Mul_8中以利乘法運算;或者是係數FC0~FC8要一直持續輸入到乘法器Mul_0~Mul_8。
在別的實施態樣中,卷積單元也可以是不同於3×3大小的陣列,例如5×5、7×7大小的陣列,本發明並不限制。而卷積單元PE亦可分別平行處理不同組輸入數據的卷積運算。
請一併參考圖3A至圖3C,圖3A為依據本發明一實施例將一個5×5大規模卷積運算區塊分割成四個3×3小規模卷積運算區塊的示意圖。圖3B為本發明一實施例將多個濾波器係數依據排列順序及卷積運算區塊的規模而分派至卷積運算區塊的示意圖。圖3C為本發明一實施例將多個數據依據排列順序及卷積運算區塊的規模而分派至卷積運算區塊的示意圖。
圖3A中,提供一個優先設定於運算一二維5×5像素數據的濾波器,其為一5×5卷積運算單元陣列或是一5×5大規模卷積運算區塊(下稱卷積運算區塊)。圖3B中,則揭示對應原先5×5大規模卷積運算區塊的5×5像素數據。一般而言,通常5×5的像素數據,以5×5的大規模卷積運算區塊進行處理會較為直接且有效率,不過若是卷積運算裝置的硬體功能並無法達到支援5×5卷積運算區塊的卷積運算,則需透過其他的方法進行卷積運算。
對此,請先參考圖3A,於圖3A中先將原先5×5的大規模卷積運算區塊進行分割,使其分割成多個小規模卷積運算區塊。於本實施例則是分割成4個3×3的小規模卷積運算區塊,且4個小規模卷積運算區塊的大小均為相同,在別的實施態樣下,也可將5×5的大規模卷積運算區塊甚至更大的7×7大規模卷積運算區塊分割成多個更小規模的卷積運算區 塊,例如是1×1的小規模卷積運算區塊,本發明並不限制。須說明者,由於分割前的5×5大規模卷積運算區塊其區塊的行、列數,並非小規模卷積運算區塊行、列數的整數倍,且4個小規模卷積運算區塊將會超出原先5×5的大規模卷積運算區塊。因此,本發明的卷積運算方法需額外在各小規模卷積運算區塊中超出該大規模卷積運算區塊的部分填入0。於本實施例中,則是將原先之5×5大規模卷積運算區塊對應新增一行與一列的係數0,使補上係數0後的大規模卷積運算區塊行列數(6×6)可為3×3小規模卷積運算區塊行列數的整數倍,並且各該3×3小規模卷積運算區塊彼此並不重疊(non-overlapping)。當分割或拆解完大規模卷積運算區塊後,將產生共4個的3×3的小規模卷積運算區塊,為了方便說明,於此將該些拆解後的小規模卷積運算區塊分別命為小規模卷積運算區塊F1~F4。
在得出小規模卷積運算區塊F1~F4後,即可利用各些小規模卷積運算區塊F1~F4開始對像素數據進行卷積運算,並因此分別產生一部份結果(影像結果)。請參考圖3B及圖3C,圖3B及圖3C分別揭示大規模卷積運算區塊包括多個濾波器係數以及多個數據,各濾波器係數及各數據可依據本身的排列順序,以及小規模卷積運算區塊F1~F4的規模而分派到小規模卷積運算區塊F1~F4中。
另外,在進行卷積運算的步驟中,小規模卷積運算區塊F1~F4是利用至少一卷積單元進行卷積運算以分別產生各部分結果,於此則是利用至少4個的卷積單元進行卷積運算(F4僅具有4個卷積單元),而且小規模卷積運算區塊F1~F4的區塊規模等於卷積單元硬體支援的最大卷積規模。換言之,小規模卷積運算區塊F1~F4即為本實施例的硬體支援上限,其至多僅支援到3×3規模的卷積運算區塊。而且,小規模卷積運算區塊F1~F4是利用對應數量的卷積單元進行平行的卷積運算以分別產生各部分結果。
當小規模卷積運算區塊F1~F4進行卷積運算並分別產生部份結果後,最後則將小規模卷積運算區塊F1~F4產生的各部份結果相加以作為該5×5大規模卷積運算區塊的卷積運算結果。各部份結果相加的方法可透過提供複數移動位址至各個小規模卷積運算區塊,且各部份結果可依 據所提供的移動位址而於一座標中移動並彼此疊加。例如,可分別提供不同的移動位址(0,0)、(0,3)、(3,0)及(3,3)對應分派至小規模卷積運算區塊F1、F2、F3及F4。其中由於小規模卷積運算區塊F1~F4彼此並不重疊並具有不同的移動位址,各小規模卷積運算區塊F1~F4即可依據所分派到的多個濾波器係數掃描圖3B中的數據(像素數據),並產生各部份結果I1~I4以及一最終部份結果I5(圖未顯示I1~I5)。並且,將最終的部份結果I5起始緩衝值設定為0後,開始將四個小規模卷積運算區塊F1~F4所輸出部份結果I1~I4相加。
由於小規模卷積運算區塊F1的移動位址為(0,0),因此部份結果I1將直接疊加於最終的部份結果I5中;而小規模卷積運算區塊F2的移動位址為(0,3),故輸出部份結果I2中位於座標(X,Y)的各像素數據將於座標(X,Y-3)疊加於最終的部份結果I5中;小規模卷積運算區塊F3的移動位址為(3,0),故輸出部份結果I3中位於座標(X,Y)的各像素數據將於座標(X-3,Y)疊加於最終的部份結果I5中;小規模卷積運算區塊F4的移動位址為(3,3),故輸出部份結果I4中位於座標(X,Y)的各像素數據將於座標(X-3,Y-3)疊加於最終的部份結果I5中。藉此,各小規模卷積運算區塊的輸出部份結果I1~I4已根據不同的移動位址而於座標中移動並彼此疊加,產生最終的部份結果I5。
因此,本實施例之拆解方法的第一步驟為:將一大規模卷積運算區塊分割成多個小規模卷積運算區塊(步驟:S10);接著,對該等小規模卷積運算區塊進行卷積運算以分別產生一部份結果;(步驟:S20);以及將該等部份結果相加作為該大規模卷積運算區塊的一卷積運算結果(步驟:S30)。
另外,步驟S10將一大規模卷積運算區塊分割成多個小規模卷積運算區塊的步驟中,當該等小規模卷積運算區塊中超出該大規模卷積運算區塊時,則更包含一步驟:在該等小規模卷積運算區塊中超出該大規模卷積運算區塊的部分填入0(步驟:S11)。而且,步驟S30將該等部份結果相加作為該大規模卷積運算區塊的一卷積運算結果的步驟中,更包括一步驟S31:提供複數移動位址至該等小規模卷積運算區塊,該等部份結果 係依據該些移動位址而於一座標中移動並彼此疊加(步驟:S31)。
請參考圖4,圖4為依據本發明再一實施例將一個7×7大規模卷積運算區塊分割成九個3×3小規模卷積運算區塊的示意圖。
本實施例的7×7大規模卷積運算區塊具有與前一實施例的5×5大規模卷積運算區塊相類似的分割拆解方式及卷積運算方法,由於7×7大規模卷積運算區塊其區塊的行、列數,同樣並非3×3小規模卷積運算區塊行、列數的整數倍,且9個小規模卷積運算區塊將會超出原先的7×7大規模卷積運算區塊。因此,本發明的卷積運算方法需額外在各小規模卷積運算區塊中超出該大規模卷積運算區塊的部分填入0。於本實施例中,則是將原先之7×7大規模卷積運算區塊對應新增各兩行與兩列的係數0,使補上係數0後的大規模卷積運算區塊行列數(9×9)可為3×3小規模卷積運算區塊行列數的整數倍。當分割或拆解完大規模卷積運算區塊後,將產生共9個的3×3的小規模卷積運算區塊,並將該些拆解後的小規模卷積運算區塊分別命為小規模卷積運算區塊F1~F9。並且各該3×3小規模卷積運算區塊彼此同樣並不重疊(non-overlapping)。最後,各小規模卷積運算區塊F1~F9同樣可輸出部份結果I1~I9並根據不同的移動位址而於座標中移動並彼此疊加,產生最終的部份結果I10。
此外,本實施例關於將7×7大規模卷積運算區塊分割成九個3×3小規模卷積運算區塊,並對數據進行卷積運算的其他技術特徵,可參照前一實施例的相關說明,於此不再贅述。
另外,在一實施例中,卷積運算方法更包括依據一當前卷積運算區塊的規模決定卷積運算模式。藉以針對不同規模的區塊以適當的卷積運算模式來處理。
當卷積運算模式為分割模式時,當前卷積運算區塊為大規模卷積運算區塊,大規模卷積運算區塊分割成多個小規模卷積運算區塊,然後分割後的小規模卷積運算區塊進行卷積運算以分別產生部份結果,然後再將這些部份結果相加作為大規模卷積運算區塊的卷積運算結果。
當卷積運算模式為非分割模式時,不將當前卷積運算區塊分割,直接對當前卷積運算區塊進行卷積運算。
另外,卷積運算方法可更包括進行卷積神經網路的一後續層的部分運算。部分運算例如是將後續層的加總運算、平均運算、取最大值運算或其他運算等先在卷積神經網路的目前這一層做運算。
以下將舉例說明可支援前述運算的硬體態樣。請參考圖5所示,圖5為依據本發明一實施例的一卷積運算裝置的區塊圖。卷積運算裝置包括一記憶體1、一緩衝裝置2、一卷積運算模組3、一交錯加總單元4、一加總緩衝單元5、一係數擷取控制器6以及一控制單元7。卷積運算裝置可用在卷積神經網路(Convolutional Neural Network,CNN)的應用。
記憶體1儲存待卷積運算的數據,可例如為影像、視頻、音頻、統計、卷積神經網路其中一層的數據等等。以影像數據來說,其例如是像素(pixel)數據;以視頻數據來說,其例如是視頻視框的像素數據或是移動向量、或是視頻中的音訊;以卷積神經網路其中一層的數據來說,其通常是一個二維陣列數據,以影像數據而言,則通常是一個二維陣列的像素數據。另外,在本實施例中,係以記憶體1為一靜態隨機存取記憶體(static random-access memory,SRAM)為例,其除了可儲存待卷積運算的數據之外,也可以儲存卷積運算完成的數據,並且可以具有多層的儲存結構並分別存放待運算與運算完畢的數據,換言之,記憶體1可做為如卷積運算裝置內部的快取記憶體(cache memory)。
實際應用時,全部或大部分的數據可先儲存在其他地方,例如在另一記憶體中,另一記憶體可選擇如動態隨機存取記憶體(dynamic random access memory,DRAM)或其他種類之記憶體。當卷積運算裝置要進行卷積運算時,再全部或部分地將數據由另一記憶體載入至記憶體1中,然後通過緩衝裝置2將數據輸入至卷積運算模組3來進行卷積運算。若輸入的數據從數據串流而來,記憶體1隨時會從數據串流寫入最新的數據以供卷積運算。
舉例來說,一控制單元或處理單元可以控制要進行哪一種模式的卷積運算,當這個控制單元或處理單元發現卷積運算區塊的規模大於硬體直接能夠運算的最大規模,則會以分割模式來運算。例如卷積運算模組3硬體最大只能直接進行3×3的卷積運算,控制單元或處理單元會先將 當前卷積運算區塊分割成多個3×3運算區塊,然後依序將3×3運算區塊寫入至記憶體1,並且命令卷積運算裝置對這些3×3運算區塊進行3×3的卷積運算,分割後的3×3運算區塊透過卷積運算模組3進行卷積運算以分別產生部份結果。這些部份結果相加作為原當前卷積運算區塊的卷積運算結果,例如:這些部份結果透過加總緩衝單元5相加,然後相加後的結果再透過緩衝裝置2寫入至記憶體1,控制單元或處理單元從記憶體1取得原當前卷積運算區塊的卷積運算結果。另外,這些部份結果也可以不透過加總緩衝單元5相加,而是全部直接先透過緩衝裝置2寫入至記憶體1,控制單元或處理單元從記憶體1取得這些部份結果然後再自己把這些部份結果當作原當前卷積運算區塊的卷積運算結果。
緩衝裝置2耦接有記憶體1、卷積運算模組3以及加總緩衝單元5。並且,緩衝裝置2也與卷積運算裝置的其他元件進行耦接,例如交錯加總單元4以及控制單元7。此外,對於影像數據或視頻的視框數據運算來說,處理的順序是逐行(column)同時讀取多列(row),因此在一個時序(clock)中,緩衝裝置2係從記憶體1輸入同一行不同列上的數據,對此,本實施例的緩衝裝置2係作為一種行緩衝(column buffer)的緩衝裝置。欲進行運算時,緩衝裝置2可先由記憶體1擷取卷積運算模組3所需要運算的數據,並於擷取後將該些數據調整為可順利寫入卷積運算模組3的數據型式。另一方面,由於緩衝裝置2也與加總緩衝單元5耦接,加總緩衝單元5運算完畢後之數據,也將透過緩衝裝置2暫存重新排序(reorder)後再傳送回記憶體1儲存。換言之,緩衝裝置2除了具有行緩衝的功能之外,其還具有類似中繼暫存數據的功能,或者說緩衝裝置2可做為一種具有排序功能的數據暫存器。
值得一提的是,緩衝裝置2還包括一記憶體控制單元21,當緩衝裝置2在進行與記憶體1之間的數據擷取或寫入時可經由記憶體控制單元21控制。另外,由於其與記憶體1之間具有有限的一記憶體存取寬度,或又稱為帶寬或頻寬(bandwidth),卷積運算模組3實際上能進行的卷積運算也與記憶體1的存取寬度有關。換言之,卷積運算模組3的運算效能會受到前述存取寬度而有所限制。因此,如果記憶體1的輸入有瓶頸, 則卷積運算的效能將受到衝擊而下降。
卷積運算模組3具有多個卷積單元,各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於卷積運算後保留部分的當前數據。緩衝裝置2從記憶體1取得多個新數據,並將新數據輸入至卷積單元,新數據不與當前數據重複,新數據例如是前一輪卷積運算還未用到但是本輪卷積運算要用到的數據。卷積運算模組3的卷積單元基於濾波器、保留的當前數據以及新數據進行次輪卷積運算。交錯加總單元4耦接卷積運算模組3,依據卷積運算的結果產生一特徵輸出結果。加總緩衝單元5耦接交錯加總單元4與緩衝裝置2,暫存特徵輸出結果;其中,當指定範圍的卷積運算完成後,緩衝裝置2從加總緩衝單元5將暫存的全部數據寫入到記憶體1。
係數擷取控制器6耦接卷積運算模組3,而控制單元7則耦接緩衝裝置2。實際應用時,對於卷積運算模組3而言,其所需要的輸入來源除了數據本身以外,還需輸入有濾波器(filter)的係數,始得進行運算。於本實施例中所指即為3×3的卷積單元陣列之係數輸入。係數擷取控制器6可藉由直接記憶體存取DMA(direct memory access)的方式由外部之記憶體,直接輸入濾波器係數。除了耦接卷積運算模組3之外,係數擷取控制器6還可與緩衝裝置2進行連接,以接受來自控制單元7的各種指令,使卷積運算模組3能夠藉由控制單元7控制係數擷取控制器6,進行濾波器係數的輸入。
控制單元7可包括一指令解碼器71以及一數據讀取控制器72。指令解碼器71係從數據讀取控制器72得到控制指令並將指令解碼,藉以得到自前輸入數據的大小、輸入數據的行數、輸入數據的列數、輸入數據的特徵編號以及輸入數據在記憶體1中的起始位址。另外,指令解碼器71也可從數據讀取控制器72得到有關濾波器的種類資訊以及輸出特徵的編號,並輸出適當的空置訊號到緩衝裝置2。緩衝裝置2則根據指令解碼後所提供的資訊來運行,也進而控制卷積運算模組3以及加總緩衝單元5的運作,例如數據從記憶體1輸入到緩衝裝置2以及卷積運算模組3的時序、卷積運算模組3的卷積運算的規模、數據從記憶體1到緩衝裝置2的 讀取位址、數據從加總緩衝單元5到記憶體1的寫入位址、卷積運算模組3及緩衝裝置2所運作的卷積模式。
另一方面,控制單元7則同樣可藉由直接記憶體存取DMA的方式由外部之記憶體提取所需的控制指令及卷積資訊,指令解碼器71將指令解碼之後,該些控制指令及卷積資訊由緩衝裝置2擷取,指令可包含移動窗的步幅大小、移動窗的位址以及欲提取特徵的影像數據行列數。
加總緩衝單元5耦接交錯加總單元4,加總緩衝單元5包括一部分加總區塊51以及一池化單元52。部分加總區塊51暫存交錯加總單元4輸出的數據。池化單元52對暫存於部分加總區塊51的數據進行池化運算。池化運算為最大值池化或平均池化。
舉例來說,加總緩衝單元5可將經由卷積運算模組3卷積計算結果及交錯加總單元4的輸出特徵結果予以暫存於部分加總區塊51。接著,再透過池化單元52對暫存於部分加總區塊51的數據進行池化(pooling)運算,池化運算可針對輸入數據某個區域上的特定特徵,取其平均值或者取其最大值作為概要特徵提取或統計特徵輸出,此統計特徵相較於先前之特徵而言不僅具有更低的維度,還可改善運算的處理結果。
須說明者,此處的暫存,仍係將輸入數據中的部分運算結果相加(partial sum)後才將其於部分加總區塊51之中暫存,因此稱其為部分加總區塊51與加總緩衝單元5,或者可將其簡稱為PSUM單元與PSUM BUFFER模組。另一方面,本實施例之池化單元52的池化運算,係採用最大池化(max pooling)的方式取得統計特徵輸出,在別的實施態樣中,也可選擇平均池化(avg pooling)的計算方式取得統計特徵輸出,端看使用需求決定何種池化方式。待所輸入的數據全部均被卷積運算模組3及交錯加總單元4處理計算完畢後,加總緩衝單元5輸出最終的數據處理結果,並同樣可透過緩衝裝置2將結果回存至記憶體1,或者再透過記憶體1輸出至其他元件。與此同時,卷積運算模組3與交錯加總單元4仍持續地進行數據特徵的取得與運算,以提高卷積運算裝置的處理效能。
卷積運算裝置可包括多個卷積運算模組3,卷積運算模組3的卷積單元以及交錯加總單元4係能夠選擇性地操作在一低規模卷積模式 以及一高規模卷積模式。在低規模卷積模式中,交錯加總單元4配置來對卷積運算模組3中對應順序的各卷積運算的結果交錯加總以各別輸出一加總結果。在高規模卷積模式中,交錯加總單元4將各卷積單元的各卷積運算的結果交錯加總作為輸出。
舉例來說,控制單元7可接收一控制訊號或模式指令,並且根據這個控制訊號或模式指令來決定其他模組以及單元要在哪一種模式運算。這個控制訊號或模式指令可從其他控制單元或處理單元而得。
請參照圖6所示,圖6為圖5所示之卷積運算裝置的部分示意圖。係數擷取控制器6係透過濾波器係數FC以及控制訊號Ctrl的線路耦接卷積運算模組3中的各個3×3卷積單元。當緩衝裝置2取得指令、卷積資訊以及數據後,其控制各卷積單元進行卷積運算。
交錯加總單元4耦接卷積運算模組3,由於卷積運算模組3可針對輸入數據的不同特徵對其進行運算,並輸出特徵運算結果。而對於多個特徵的數據寫入來說,卷積運算模組3則可對應輸出多筆的運算結果。交錯加總單元4的功能則在於可將卷積運算模組3多筆的運算結果,結合後再得出一輸出特徵結果。當交錯加總單元4取得輸出特徵結果後,再將該輸出特徵結果傳送至加總緩衝單元5,以利進行下一階段的處理。
舉例來說,卷積神經網路具有多個運算層,例如卷積層、池化層等,卷積層以及池化層的層數可以是多層,各層的輸出可以當作另一層或後續層的輸入,例如第N層卷積層的輸出是第N層池化層的輸入或是其他後續層的輸入,第N層池化層的輸出是第N+1層卷積層的輸入或是其他後續層的輸入,第N層運算層的輸出可以是第N+1層運算層的輸入。
為了提升運算效能,進行第N層運算層的運算時,可以視運算資源(硬體)的使用情況來進行第N+i(i>0,N、i為自然數)層運算層的部分運算,有效運用運算資源並且能降低實際在第N+i層運算層時的運算量。
在本實施例中,在一種運算情況下,例如3×3卷積運算,卷積運算模組3進行卷積神經網路的某一層卷積層的運算,交錯加總單元4沒有進行卷積神經網路的後續層的部分運算,加總緩衝單元5進行卷積神 經網路的同一階池化層的運算。在另一種運算情況下,例如1×1卷積運算,卷積運算模組3進行卷積神經網路的某一層卷積層的運算,交錯加總單元4進行卷積神經網路的後續層的部分運算,部分運算例如是相加加總,加總緩衝單元5進行卷積神經網路的同一階池化層的運算。在其他實施例中,加總緩衝單元5除了進行池化層的運算,也可進行卷積神經網路的後續層的部分運算。前述的部分運算例如是將後續層的加總運算、平均運算、取最大值運算或其他運算等先在卷積神經網路的目前這一層做運算。
圖7為依據本發明一實施例卷積單元的功能方塊圖,如圖7所示,卷積單元9包括9個處理單位PE0~PE8(process engine)、一位址解碼器91及一加法器92。卷積單元9可以作為前述卷積單元。
在3×3卷積運算模式下,待卷積運算的輸入數據係經由線路data[47:0]輸入至處理單位PE0~PE2,處理單位PE0~PE2會將當前時脈的輸入數據在之後的時脈輸入至處理單位PE3~PE5以供下一輪卷積運算,處理單位PE3~PE5會將當前時脈的輸入數據在之後的時脈輸入至處理單位PE6~PE8以供下一輪卷積運算。3×3濾波器係數透過線路fc_bus[47:0]輸入至處理單位PE0~PE8。在步幅為1時,3個新數據會輸入至處理單位,已經輸入的6個舊數據會移到其他處理單位。執行卷積運算時,處理單位PE0~PE8透過位址解碼器91將選定位址的濾波器係數與輸入至處理單位PE0~PE8的輸入數據做乘法運算。當卷積單元9進行3×3卷積運算時,加法器92會將各乘法運算的結果相加以得到卷積運算的結果作為輸出psum[35:0]。
當卷積單元9進行1×1卷積運算時,待卷積運算的輸入數據係經由線路data[47:0]輸入至處理單位PE0~PE2,三個1×1濾波器係數透過線路fc_bus[47:0]輸入至處理單位PE0~PE2。在步幅為1時,3個新數據會輸入至處理單位。執行卷積運算時,處理單位PE0~PE2透過位址解碼器91將選定位址的濾波器係數與輸入至處理單位PE0~PE2的輸入數據做乘法運算。當卷積單元9進行1×1卷積運算時,加法器92會直接將處理單位PE0~PE2的卷積運算的結果作為輸出pm_0[31:0]、pm_1[31:0]、pm_2[31:0]。另外,由於處理單位PE3~PE8沒有實際參與卷積運算,這些處理 單位PE3~PE8可以先關閉以節省電力。另外,雖然卷積單元9有三個1×1卷積運算的輸出,但可以只有其中二個輸出連接到交錯加總單元4;或是三個1×1卷積運算的輸出都連接到交錯加總單元4,藉由控制處理單位PE0~PE2的關閉與否來決定輸出到交錯加總單元4的1×1卷積運算結果的數量。
待影像的所有數據已分別由卷積運算模組3、交錯加總單元4及加總緩衝單元5運算完畢後,且最終的數據處理結果也已回存至記憶體1時,將由緩衝裝置2傳送一停止訊號至指令解碼器71與控制單元7,通知控制單元7目前已運算完畢且等候下一個處理指令。
藉此,因卷積運算裝置的各卷積單元可於卷積運算後保留部分的當前數據,緩衝裝置從記憶體取得多個新數據並將新數據輸入至卷積單元,新數據不與當前數據重複,因此卷積運算的處理效率得以提升,適合用於串流數據的卷積運算。因此,當用於卷積運算及連續地平行運算的處理資料時,可具有優異的運算性能和低功耗表現,並且能夠處理資料串流。
卷積運算方法可應用或實施在前述實施例的卷積運算裝置,相關的變化及實施方式故此不再贅述。卷積運算方法亦可應用或實施在其他計算裝置。舉例來說,卷積運算方法可用在能夠執行指令的處理器,配置以執行卷積運算方法的指令是儲存在記憶體,處理器耦接記憶體並執行這些指令以進行卷積運算方法。例如,處理器包括快取記憶體、數學運算單元以及內部暫存器,快取記憶體儲存數據串流,數學運算單元能夠進行卷積運算,內部暫存器可留存本輪卷積運算的部分數據於卷積運算模組內以供次一輪卷積運算。
綜上所述,本發明所提供之卷積運算方法,藉由將一大規模卷積運算區塊分割成多個小規模卷積運算區塊;對小規模卷積運算區塊進行卷積運算以分別產生一部份結果;以及將部份結果相加作為大規模卷積運算區塊的一卷積運算結果,即可降低特定卷積運算區塊規模的限制,也不需以額外的硬體資源便可同樣達到大規模卷積運算區塊的運算,並同樣取得大規模卷積運算區塊的卷積運算結果。
以上所述僅為舉例性,而非為限制性者。任何未脫離本發明之精神與範疇,而對其進行之等效修改或變更,均應包含於後附之申請專利範圍中。
Claims (13)
- 一種卷積運算方法,執行於一卷積運算模組,該卷積運算模組具有多個卷積單元,包括以下步驟:當一待運算的卷積運算區塊超過該等卷積單元硬體支援的最大卷積規模時,將該待運算的卷積運算區塊分割成多個等於該最大卷積規模的分割後卷積運算區塊;對該等分割後卷積運算區塊進行卷積運算以分別產生一部份結果;以及將該等部份結果相加作為該待運算的卷積運算區塊的一卷積運算結果。
- 如申請專利範圍第1項所述之卷積運算方法,其中該等分割後卷積運算區塊的大小相同。
- 如申請專利範圍第1項所述之卷積運算方法,更包括:在該等分割後卷積運算區塊中超出該待運算的卷積運算區塊的部分填入0。
- 如申請專利範圍第1項所述之卷積運算方法,其中進行卷積運算的步驟中,該等分割後卷積運算區塊是利用至少一卷積單元進行卷積運算以分別產生該部份結果。
- 如申請專利範圍第1項所述之卷積運算方法,其中進行卷積運算的步驟中,該等分割後卷積運算區塊是利用對應數量的卷積單元進行平行的卷積運算以分別產生該部份結果。
- 如申請專利範圍第1項所述之卷積運算方法,其中該待運算的卷積運算區塊包括多個濾波器係數,該等濾波器係數依據排列順序以及該等分割後卷積運算區塊的規模而分派到該等分割後卷積運算區塊中。
- 如申請專利範圍第1項所述之卷積運算方法,其中該待運算的卷積運算區塊包括多個數據,該等數據依據排列順序以及該等分割後卷積運算區塊的規模而分派到該等分割後卷積運算區塊中。
- 如申請專利範圍第1項所述之卷積運算方法,其中該待運算的卷積運算區塊的規模為5×5或7×7,該等分割後卷積運算區塊的規模為3×3。
- 如申請專利範圍第1項所述之卷積運算方法,其中進行該等部份結果相加的步驟中,更包括: 提供複數移動位址至該等分割後卷積運算區塊,該等部份結果係依據該些移動位址而於一座標中移動並彼此疊加。
- 如申請專利範圍第1項所述之卷積運算方法,更包括:進行卷積神經網路的一後續層的部分運算。
- 一種卷積運算裝置,包括:控制單元;卷積運算模組,與該控制單元耦接,並具有多個卷積單元;當一待運算的卷積運算區塊超過該等卷積單元硬體支援的最大卷積規模時,該控制單元將該待運算的卷積運算區塊分割成多個等於該最大卷積規模的分割後卷積運算區塊;該卷積運算模組對該等分割後卷積運算區塊進行卷積運算以分別產生一部份結果;以及加總緩衝單元,與該卷積運算模組耦接,將該等部份結果相加作為該待運算的卷積運算區塊的一卷積運算結果。
- 如申請專利範圍第11項所述之卷積運算裝置,更包括:記憶體,儲存待卷積運算的數據;緩衝裝置,耦接該記憶體、該卷積運算模組及該加總緩衝單元,該緩衝裝置將該待卷積運算的數據輸入至該卷積運算模組來進行卷積運算;以及交錯加總單元,耦接該緩衝裝置、該卷積運算模組及該加總緩衝單元,該交錯加總單元依據該卷積運算模組所卷積運算的結果產生一特徵輸出結果。
- 如申請專利範圍第12項所述之卷積運算裝置,其中該記憶體更儲存卷積運算完成的數據。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106138161A TWI645335B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及卷積運算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106138161A TWI645335B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及卷積運算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201818233A TW201818233A (zh) | 2018-05-16 |
TWI645335B true TWI645335B (zh) | 2018-12-21 |
Family
ID=62949653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106138161A TWI645335B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及卷積運算方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI645335B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI696127B (zh) * | 2018-06-29 | 2020-06-11 | 奇景光電股份有限公司 | 無訊框緩衝器的卷積神經網路系統與方法 |
US10860918B2 (en) | 2018-08-21 | 2020-12-08 | Silicon Storage Technology, Inc. | Analog neural memory system for deep learning neural network comprising multiple vector-by-matrix multiplication arrays and shared components |
TWI768326B (zh) * | 2020-04-20 | 2022-06-21 | 國立陽明交通大學 | 卷積運算模組及方法以及其適用之卷積神經網路系統 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002097655A2 (en) * | 2001-05-29 | 2002-12-05 | Applied Materials, Inc. | Fast signal convolution using separated -spline kernel |
TW200643742A (en) * | 2005-06-06 | 2006-12-16 | Via Tech Inc | Sparse convolution of multiple vectors in a digital signal processor |
TW200707285A (en) * | 2005-07-26 | 2007-02-16 | Advanced Risc Mach Ltd | Algebraic single instruction multiple data processing |
TW201430727A (zh) * | 2013-01-30 | 2014-08-01 | Kun-Ju Lin | 排程裝置及其方法 |
-
2016
- 2016-11-14 TW TW106138161A patent/TWI645335B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002097655A2 (en) * | 2001-05-29 | 2002-12-05 | Applied Materials, Inc. | Fast signal convolution using separated -spline kernel |
TW200643742A (en) * | 2005-06-06 | 2006-12-16 | Via Tech Inc | Sparse convolution of multiple vectors in a digital signal processor |
TW200707285A (en) * | 2005-07-26 | 2007-02-16 | Advanced Risc Mach Ltd | Algebraic single instruction multiple data processing |
TW201430727A (zh) * | 2013-01-30 | 2014-08-01 | Kun-Ju Lin | 排程裝置及其方法 |
TWI509539B (zh) * | 2013-01-30 | 2015-11-21 | Chang Gung Medical Foundation | 排程裝置及其方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201818233A (zh) | 2018-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI634490B (zh) | 卷積運算裝置及卷積運算方法 | |
US20180137414A1 (en) | Convolution operation device and convolution operation method | |
US11954583B2 (en) | Transposed convolution using systolic array | |
US11379555B2 (en) | Dilated convolution using systolic array | |
US20180300616A1 (en) | Dynamically partitioning workload in a deep neural network module to reduce power consumption | |
CN107633297B (zh) | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
TWI630544B (zh) | 卷積神經網路的運算裝置及方法 | |
US20200272892A1 (en) | Super-tiling in neural network processing to enabling analytics at lower memory speed | |
TWI645335B (zh) | 卷積運算裝置及卷積運算方法 | |
US8947446B2 (en) | Methods and apparatus for image processing at pixel rate | |
CN108073549B (zh) | 卷积运算装置及方法 | |
CA2929403C (en) | Multi-dimensional sliding window operation for a vector processor | |
EP3844610B1 (en) | Method and system for performing parallel computation | |
TWI616813B (zh) | 卷積運算方法 | |
WO2014105552A1 (en) | Optimizing image memory access | |
CN112967172A (zh) | 一种数据处理装置、方法、计算机设备及存储介质 | |
JP7492555B2 (ja) | 複数の入力データセットのための処理 | |
CN108073548B (zh) | 卷积运算装置及卷积运算方法 | |
TWI634436B (zh) | 緩衝裝置及卷積運算裝置與方法 | |
JP2020191012A (ja) | 画像処理装置、撮像装置、画像処理方法 | |
US10162799B2 (en) | Buffer device and convolution operation device and method | |
CN110766150A (zh) | 一种深度卷积神经网络硬件加速器中的区域并行数据载入装置及方法 | |
Ravi | FPGA Acceleration of CNNs Using OpenCL | |
US20220092409A1 (en) | Neural network processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |