TWI616840B - 卷積運算裝置及方法 - Google Patents
卷積運算裝置及方法 Download PDFInfo
- Publication number
- TWI616840B TWI616840B TW105137127A TW105137127A TWI616840B TW I616840 B TWI616840 B TW I616840B TW 105137127 A TW105137127 A TW 105137127A TW 105137127 A TW105137127 A TW 105137127A TW I616840 B TWI616840 B TW I616840B
- Authority
- TW
- Taiwan
- Prior art keywords
- convolution
- convolution operation
- unit
- output
- results
- Prior art date
Links
Abstract
一種卷積運算的處理方法,包括:對各輸入通道的數據進行卷積運算以輸出多個卷積結果;以及將上述輸入通道中對應順序的各卷積結果交錯加總以各別輸出一加總結果。
Description
本發明是關於一種卷積運算裝置及方法,特別是關於一種搭配交錯(interleaving)加總架構進行運算的卷積運算裝置及方法。
卷積神經網路(Convolutional Neural Network,CNN)常應用於影像處理裝置中,以便對影像數據進行影像處理。一般常用的移動窗(sliding window)可採用1×1、3×3、5×5或7×7等規模,其中又以3×3的規模較為常用,因此,一般卷積運算裝置中的卷積單元會以3×3規模來設計。以輸入最大頻寬為8個畫素數據為例,當使用8個3×3卷積單元對8個畫素數據進行1×1卷積運算時,各3×3卷積單元中僅1個乘法器實質上進行卷積運算,因此其他的乘法器沒有運用到,這造成硬體資源浪費。
因此,如何提供一種卷積運算裝置及方法,可提升卷積單元內元件的使用率,增進卷積運算的效能,實為當前重要的課題之一。
本發明之一目的為提供一種卷積運算裝置及方法,可提升卷積單元內元件的使用率,增進卷積運算的效能。
為達上述目的,本發明提供一種卷積運算裝置,包括多個卷積運算模組以及一交錯加總單元。多個卷積運算模組各具有多個卷積單元,各卷積單元配置來輸出多個卷積結果。交錯加總單元耦接上述卷積運算模組的上述卷積單元,配置來對上述卷積運算模組中對應順序的各卷積結果交錯加總,以各別輸出一加總結果。
在一實施例中,上述卷積單元以及交錯加總單元係能夠選擇性地操作在一低規模卷積模式以及一高規模卷積模式;其中,在低規模卷積模式中,各卷積單元配置來輸出上述卷積結果,交錯加總單元配置來
對上述卷積運算模組中對應順序的各卷積結果交錯加總以各別輸出加總結果;其中,在高規模卷積模式中,各卷積單元配置來輸出多個高規模卷積結果,交錯加總單元將上述高規模卷積結果作為輸出。
在一實施例中,各卷積單元包括多個低規模卷積輸出以及一高規模卷積輸出。多個低規模卷積輸出係進行低規模卷積運算以輸出上述卷積結果。高規模卷積輸出係進行高規模卷積運算以輸出高規模卷積結果。
在一實施例中,交錯加總單元選擇性地將上述加總結果以及上述高規模卷積結果其中一個輸出。
在一實施例中,各卷積運算模組耦接一輸入通道,上述輸入通道的總寬度與上述加總結果的總寬度相等。
在一實施例中,上述卷積運算模組的數量小於或等於各卷積運算模組中上述卷積單元的數量。
在一實施例中,各卷積單元的上述卷積結果係相同規模的卷積運算的結果。
在一實施例中,上述卷積運算模組的數量等於各卷積單元的上述卷積結果的數量。
為達上述目的,本發明提供一種卷積運算的處理方法,包括:對於各輸入通道的數據進行卷積運算以輸出多個卷積結果;以及將上述輸入通道中對應順序的各卷積結果交錯加總以各別輸出一加總結果。
在一實施例中,卷積運算的處理方法更包括:決定在一低規模卷積模式以及一高規模卷積模式其中一個之中進行卷積運算;當在高規模卷積模式中,進行高規模卷積運算以輸出多個高規模卷積結果;將上述高規模卷積結果作為輸出;當在低規模卷積模式中,對於各輸入通道的數據進行低規模卷積運算以輸出上述卷積結果;將上述輸入通道中對應順序的各卷積結果交錯加總以各別輸出加總結果。
在一實施例中,卷積運算的處理方法更包括:選擇性地將上述加總結果以及上述高規模卷積結果其中一個輸出。
在一實施例中,上述輸入通道的總寬度與上述加總結果的
總寬度相等。
在一實施例中,上述卷積結果係相同規模的卷積運算的結果。
在一實施例中,交錯加總的步驟是進行卷積神經網路的一後續層的部分運算。
在一實施例中,部分運算是跨越該等輸入通道的運算。
承上所述,本發明的卷積運算裝置及方法中,同時對輸入於各卷積運算模組的數據進行卷積運算,並藉由交錯加總單元將各卷積運算模組的輸入通道中對應順序的各卷積結果交錯加總以各別輸出一加總結果,使各輸入通道的新數據總寬度與各加總結果的總寬度相等,故可提升卷積單元的使用率,並達成輸入頻寬與輸出頻寬相等的功效。
1‧‧‧記憶體
2‧‧‧緩衝裝置
3a‧‧‧第一卷積運算模組
3b‧‧‧第二卷積運算模組
3N‧‧‧第N卷積運算模組
4‧‧‧控制單元
5‧‧‧交錯加總單元
6‧‧‧緩衝單元
30a、30b、31a、31b、37a、37b‧‧‧卷積單元
100‧‧‧卷積運算裝置
30‧‧‧卷積單元
301‧‧‧位址解碼器
302‧‧‧加法器
CoefAddr‧‧‧濾波係數位址
CH_1‧‧‧第一輸入通道
CH_2‧‧‧第二輸入通道
CH_N‧‧‧第N輸入通道
CU‧‧‧卷積單元
data[47:0]‧‧‧線路
fc_bus[47:0]‧‧‧線路
EN‧‧‧控制線路
FC‧‧‧濾波器線路
PE0~PE8‧‧‧處理單位
pm‧‧‧部分乘法結果
psum‧‧‧部分加總結果
圖1為依據本發明一實施例的卷積運算裝置的功能方塊圖。
圖2為圖1的卷積運算裝置對一二維數據進行卷積運算的示意圖。
圖3為依據本發明一實施例的卷積運算模組執行卷積運算的架構圖。
圖4A為圖3的卷積運算模組於3×3卷積運算模式下運作的示意圖。
圖4B為圖3的卷積運算模組於3×3卷積運算模式下運作的另一實施例的示意圖。
圖4C為圖3的卷積運算模組於1×1卷積運算模式下運作的示意圖。
圖5為依據本發明一實施例的卷積單元的功能方塊圖。
圖6為依據本發明另一實施例的卷積運算模組於1×1卷積運算模式下運作的示意圖。
以下將參照相關圖式,說明依據本發明具體實施例的卷積運算裝置及方法,其中相同的元件將以相同的元件符號加以說明,所附圖式僅為說明用途,並非用於侷限本發明。
圖1為依據本發明一實施例的卷積運算裝置的功能方塊圖。以下將以兩個卷積運算模組為例進行說明,請參閱圖1所示,一卷積
運算裝置100包括一記憶體1、一緩衝裝置2、一第一卷積運算模組3a、一第二卷積運算模組3b、一控制單元4、一緩衝單元6以及一交錯加總單元5。第一卷積運算模組3a具有卷積單元(30a~37a),第二卷積運算模組3b則具有卷積單元(30b~37b)。交錯加總單元5耦接於第一卷積運算模組3a及第二卷積運算模組3b中的各卷積單元。
卷積運算裝置100可應用於卷積神經網路中的卷積運算。記憶體1可儲存待進行卷積運算的數據,例如是影像數據、視頻數據、統計數據或卷積神經網路其中一層的數據等等。以影像數據來說,其例如是畫素數據;以視頻數據來說,其例如是視頻的視框的畫素數據或是移動向量、或是視頻中的音訊;以卷積神經網路其中一層的數據來說,其通常是一個二維陣列數據,或是一個影像數據。全部或大部分的數據可先儲存在其他地方,例如在另一記憶體中,當進行卷積運算時再全部或部分地載入至記憶體1中,然後透過緩衝裝置2將新數據輸入至第一卷積運算模組3a及第二卷積運算模組3b來進行卷積運算。若輸入的數據是從數據串流而來,記憶體1則從數據串流隨時寫入最新的數據以供卷積運算之用。
控制單元4可包括一指令解碼器以及一控制器,指令解碼器係從控制器得到指令並將指令解碼,藉以得到目前輸入數據大小、輸入數據的行數、輸入數據的列數、移動窗(sliding window)或稱為卷積大小(convolution size)的編號、以及輸入數據在記憶體1中的起始位址。另外,指令解碼器也從控制器得到移動窗種類資訊以及輸出特徵編號,並輸出適當的控制訊號到緩衝裝置2,緩衝裝置2根據上述訊號來運作。控制單元4可控制第一卷積運算模組3a、第二卷積運算模組3b、交錯加總單元5以及緩衝單元6的運作。例如數據從記憶體1輸入到緩衝裝置2的時序、記憶體1輸入到第一卷積運算模組3a及第二卷積運算模組3b的時序、第一卷積運算模組3a及第二卷積運算模組3b的卷積運算的規模、數據從記憶體1到緩衝裝置2的讀取位址、數據從緩衝單元6到記憶體1的寫入位址、第一卷積運算模組3a及第二卷積運算模組3b所運作的卷積模式。
舉例來說,各卷積運算模組具有多個卷積單元,各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於卷積運算後保留
部分的當前數據。緩衝裝置2從記憶體1取得多個新數據,並將新數據輸入至卷積單元,新數據不與當前數據重複,新數據例如是前一輪卷積運算還未用到但是本輪卷積運算要用到的數據。卷積運算模組的卷積單元基於濾波器、保留的當前數據以及新數據進行次輪卷積運算。
多個卷積運算模組可平行處理以增進效能,從記憶體讀取的分屬不同通道的多個數據可以分別由不同的模組來處理。舉例來說,各通道例如有但不限於8個數據,一個數據例如但不限於代表一個畫素的值,不同通道的數據係分別供各模組來進行卷積運算。例如第一個通道的數據是輸入到第一卷積運算模組3a,第二個通道的數據是輸入到第二卷積運算模組3b。另外,若還有更多通道的數據,例如全部有i個輸入通道的數據,可以再增設第三卷積運算模組到第i個卷積運算模組來分別對第三至第i個通道的數據進行卷積運算。
於一實施態樣下,卷積運算裝置100例如是一個處理器,記憶體1例如是處理器內的快取記憶體(cache memory),緩衝裝置2中包括多個功能單元,以增加平行處理卷積運算的效能。各卷積單元(30a~37a、30b~37b)、控制單元4、交錯加總單元5、緩衝單元6以及緩衝裝置2的功能單元可採用數位邏輯電路構成,各單元的內部可包括多個邏輯元件來實現其功能。記憶體1、緩衝裝置2、第一卷積運算模組3a、第二卷積運算模組3b、控制單元4、交錯加總單元5以及緩衝單元6可以整合於同一個積體電路。
在其他實施態樣下,記憶體1可以是一般的隨機存取記憶體(DRAM),第一卷積運算模組3a、第二卷積運算模組3b、控制單元4、交錯加總單元5以及緩衝單元6可以整合於同一個積體電路。另外,若有更多個卷積運算模組,這些卷積運算模組也可以和前述單元或模組整合於同一個積體電路。
此外,第一卷積運算模組3a及第二卷積運算模組3b以及交錯加總單元5可受控制單元4所控制而選擇性地操作在一低規模卷積模式以及一高規模卷積模式,其中高規模卷積模式可以是3×3卷積運算模式,而低規模卷積模式可以是1×1卷積運算模式。於低規模卷積模式下,交錯
加總單元5可對第一卷積運算模組3a及第二卷積運算模組3b中對應順序的各卷積結果交錯加總,以各別對應各通道而輸出一加總結果,而於高規模卷積模式下,交錯加總單元5則輸出高規模卷積結果。
舉例來說,控制單元4可接收一控制訊號或模式指令,並且根據這個控制訊號或模式指令來決定其他模組以及單元要在哪一種模式運算。這個控制訊號或模式指令可從其他控制單元或處理單元而得。
請參考圖2,圖2為圖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)。
圖3為依據本發明一實施例的卷積運算模組執行卷積運算的架構圖。如圖3所示,第一卷積運算模組3a包括卷積單元30a~37a,第二卷積運算模組3b包括卷積單元30b~37b,各卷積單元30a~37a、30b~37b)可包括數據輸入、濾波器係數輸入、係數位址輸入、致能輸入、多個低規模卷積輸出以及一高規模卷積輸出。
在各卷積運算模組中,以第一卷積運算模組3a為例,卷積運算的濾波器係數透過濾波器線路FC輸入到各卷積單元30a~37a,濾波器線路FC可以是匯流排(bus),從濾波器線路FC的係數讀取位址是從位址線路Coef Addr輸入到各卷積單元30a~37a,各卷積單元30a~37a根據係
數讀取位址從濾波器線路FC讀取濾波器係數。依據當下的卷積運算模式,第一輸入通道CH_1的新數據輸入到對應的卷積單元30a~37a。致能控制訊號透過控制線路EN輸入到各卷積單元30a~37a,致能控制訊號可個別控制各卷積單元30a~37a是否啟用,也可以進一步控制各卷積單元30a~37a內元件的啟用。依據當下的卷積運算模式,各卷積單元30a~37a將從第一輸入通道CH_1輸入的數據以及濾波器係數進行卷積運算並輸出。在低規模卷積模式中,各卷積單元30a~37a可分別輸出二個低規模卷積結果pm0_0~pm7_0、pm0_1~pm7_1;在高規模卷積模式中,各卷積單元30a~37a可分別輸出一個高規模卷積結果psum1~psum7。舉例來說,低規模卷積模式是1×1的捲積運算,卷積單元30a進行1×1卷積運算並輸出兩個低規模卷積結果pm0_0、pm0_1;高規模卷積模式是3×3的捲積運算,卷積單元30a進行3×3卷積運算並輸出一個高規模卷積結果psum0,其他卷積單元31a~37a也是一樣。
由於3×3卷積運算在步幅為1時,每移動一次濾波器的窗有6個數據是和前次卷積運算處理的數據一樣,因而實際需要新輸入的數據是3個。另外,各卷積單元30a~37a的三個數據輸入是間隔一個,也就是相鄰的二個卷積單元會有二個相同的數據輸入。全部卷積單元30a~37a實際上需要10個數據輸入。但是,因為這10個數據之中已有二個在前一輪的卷積運算中已經讀入,一緩衝器可將二個數據緩衝,因此,實際上每輪從通道輸入的新數據仍是8個。
另外,各通道的濾波器可以相同也可以不同。卷積運算模組3b或還有更多的卷積運算模組,其運作以及架構與前述一樣。
交錯加總單元5亦受控制單元4所控制而被選擇運作在其中一個卷積運算模式中,並配置來在卷積運算模式中對應地將交錯加總結果輸出、或對應地將高規模卷積結果輸出。
交錯加總單元5耦接第一及第二卷積運算模組3a、3b,由於第一及第二卷積運算模組3a、3b可針對輸入數據的不同特徵對其進行運算,並輸出特徵運算結果。而對於多個特徵的數據寫入來說,第一及第二卷積運算模組3a、3b則可對應輸出多筆的運算結果。交錯加總單元5的功
能則在於可將第一及第二卷積運算模組3a、3b多筆的運算結果,結合後再得出一輸出特徵結果。當交錯加總單元5取得輸出特徵結果後,再將輸出特徵結果傳送至緩衝單元6,以利進行下一階段的處理。
舉例來說,卷積神經網路具有多個運算層,例如卷積層、池化層等,卷積層以及池化層的層數可以是多層,各層的輸出可以當作另一層或後續層的輸入,例如第N層卷積層的輸出是第N層池化層的輸入或是其他後續層的輸入,第N層池化層的輸出是第N+1層卷積層的輸入或是其他後續層的輸入,第N層運算層的輸出可以是第N+1層運算層的輸入。
為了提升運算效能,進行第N層運算層的運算時,可以視運算資源(硬體)的使用情況來進行第N+i(i>0,N、i為自然數)層運算層的部分運算,有效運用運算資源並且能降低實際在第N+i層運算層時的運算量。
在本實施例中,在一種運算情況下,例如3x3卷積運算,第一及第二卷積運算模組3a、3b進行卷積神經網路的某一層卷積層的運算,交錯加總單元5沒有進行卷積神經網路的後續層的部分運算,緩衝單元6進行卷積神經網路的同一階池化層的運算。在另一種運算情況下,例如1x1卷積運算,第一及第二卷積運算模組3a、3b進行卷積神經網路的某一層卷積層的運算,交錯加總單元5進行卷積神經網路的後續層的部分運算,部分運算例如是相加加總,緩衝單元6進行卷積神經網路的同一階池化層的運算。在其他實施例中,緩衝單元6除了進行池化層的運算,也可進行卷積神經網路的後續層的部分運算。前述的部分運算例如是將後續層的加總運算、平均運算、取最大值運算或其他運算等先在卷積神經網路的目前這一層做運算。
以下將以圖4A及圖4C分別說明高規模卷積模式及低規模卷積模式的卷積運算方法,其中高規模卷積模式及低規模卷積模式分別採用3×3及1×1卷積運算模式。
圖4A為依據本發明實施例的卷積運算模組於3×3卷積運算模式下運作的示意圖。
請參閱圖4A所示,8個新數據輸入至第一輸入通道CH_1,
8個新數據輸入至第二輸入通道CH_2,3×3濾波器係數透過濾波器線路FC輸入到卷積單元30a~37a、30b~37b,卷積單元30a~37a將濾波器係數與輸入的數據進行3×3卷積運算並分別輸出卷積結果psum0~psum7,卷積單元30b~37b將濾波器係數與輸入的數據進行3×3卷積運算並分別輸出卷積結果psum0~psum7。即第一卷積運算模組3a及第二卷積運算模組3b共輸出了16個數據。因此,第一卷積運算模組3a及第二卷積運算模組3b的總輸入頻寬等同於其總輸出頻寬。交錯加總單元5不用進行交錯加總,可以直接將卷積結果psum0~psum7作為輸出。
此外,圖4A中第一卷積運算模組3a及第二卷積運算模組3b的輸出結果亦可經由交錯加總單元5進行運算。圖4B為圖3的卷積運算模組於3×3卷積運算模式下運作的另一實施例的示意圖。由於第一卷積運算模組3a及第二卷積運算模組3b分別輸出不同通道的結果,交錯加總單元5亦可對其直接進行交錯加總,例如將第一卷積運算模組3a輸出的卷積結果psum0~psum7依序與第二卷積運算模組3b的卷積結果psum0~psum7相加,最後輸出8個交错相加的結果。在這種運算情況下,第一及第二卷積運算模組3a、3b進行卷積神經網路的某一層卷積層的運算,交錯加總單元5進行卷積神經網路的後續層的部分運算。
圖4C為依據本發明實施例的卷積運算模組於1×1卷積運算模式下運作的示意圖。請參閱圖4C所示,8個新數據輸入至第一輸入通道CH_1,8個新數據輸入至第二輸入通道CH_2,二個1×1濾波器係數透過濾波器線路FC輸入到卷積單元30a~37a、30b~37b,因一個1×1濾波器只有一個係數,故即使是二個1×1濾波器係數仍可用原本給3×3濾波器係數用的線路來輸入。在各卷積運算模組中,以第一卷積運算模組3a為例,卷積單元30a~37a對輸入的數據以及二個1×1濾波器係數進行卷積運算以輸出16個1×1卷積結果pm0_0~pm7_0、pm0_1~pm7_1。因此,第一卷積運算模組3a及第二卷積運算模組3b總共輸出32個卷積結果。接者,交錯加總單元5將第一卷積運算模組3a輸出的各卷積結果pm0_0~pm7_0與第二卷積運算模組3b對應輸出順序的各卷積結果pm0_0~pm7_0分別相加而輸出8個部分加法運算的數據,交錯加總單元5將第一卷積運算模組3a輸出的各
卷積結果pm0_1~pm7_1與第二卷積運算模組3b對應輸出順序的各卷積結果pm0_1~pm7_1分別相加而輸出8個部分加法運算的數據。在這種運算情況下,第一及第二卷積運算模組3a、3b進行卷積神經網路的某一層卷積層的運算,交錯加總單元5進行卷積神經網路的後續層的部分運算。
也就是說,交錯加總單元5將第一及第二卷積運算模組3a、3b中對應的1×1卷積結果相加後作為輸出,例如:第一及第二卷積運算模組3a、3b的卷積結果pm0_0相加後作為交錯加總單元5的一個輸出,其餘輸出以此類推。因此,交錯加總單元5可對第一卷積運算模組3a及第二卷積運算模組3b中對應順序的各卷積結果交錯加總以各別輸出一加總結果,使第一卷積運算模組3a及第二卷積運算模組3b加總結果的總寬度與第一輸入通道CH_1及第二輸入通道CH_2的新輸入數據的總寬度相等。雖然1×1卷積結果的產生數量是3×3卷積結果的產生數量的二倍,但仍不需要額外增加輸出線路或頻寬。
圖5為依據本發明一實施例卷積單元的功能方塊圖,如圖5所示,卷積單元30包括9個處理單位PE0~PE8(process engine)、一位址解碼器301及一加法器302。卷積單元30可以作為前述圖3、圖4A以及圖4C中各卷積單元30a~37a、30b~37b。
在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透過位址解碼器301將選定位址的濾波器係數與輸入至處理單位PE0~PE8的輸入數據做乘法運算。當卷積單元30進行3×3卷積運算時,加法器302會將各乘法運算的結果相加以得到卷積運算的結果作為輸出psum[35:0]。
當卷積單元30進行1×1卷積運算時,待卷積運算的輸入數
據係經由線路data[47:0]輸入至處理單位PE0~PE2,三個1×1濾波器係數透過線路fc_bus[47:0]輸入至處理單位PE0~PE2。在步幅為1時,3個新數據會輸入至處理單位。執行卷積運算時,處理單位PE0~PE2透過位址解碼器301將選定位址的濾波器係數與輸入至處理單位PE0~PE2的輸入數據做乘法運算。當卷積單元30進行1×1卷積運算時,加法器302會直接將處理單位PE0~PE2的卷積運算的結果作為輸出pm_0[31:0]、pm_1[31:0]、pm_2[31:0]。另外,由於處理單位PE3~PE8沒有實際參與卷積運算,這些處理單位PE3~PE8可以先關閉以節省電力。另外,雖然卷積單元30有三個1×1卷積運算的輸出,但可以只有其中二個輸出連接到交錯加總單元;或是三個1×1卷積運算的輸出都連接到交錯加總單元,藉由控制處理單位PE0~PE2的關閉與否來決定輸出到交錯加總單元的1×1卷積運算結果的數量。
承上所述,本發明的卷積運算裝置及方法亦可採用兩個以上的卷積運算模組同時進行1×1卷積運算,以提升卷積運算的效能。圖6為依據本發明另一實施例於1×1卷積運算模式下的運作示意圖。請參閱圖6所示,於1×1卷積運算模式下,分別對第一輸入通道CH_1至第N輸入通道CH_N輸入8個數據,各卷積單元30a~37a...30N~37N可藉由選擇不同的濾波器係數分別進行1×1卷積運算,交錯加總單元5再依據各輸入通道CH_1~CH_N與濾波器係數的對應關係將各卷積單元30a~37a...30N~37N輸出的卷積結果重新相加,而得到N*8個加總結果。此外,卷積運算模組的數量則受限於記憶體頻寬與單一卷積單元中處理單位PE的數量。例如,若卷積運算模組採用3×3卷積單元進行卷積運算,則最多可採用9個卷積運算模組同時進行1×1卷積運算。
交錯加總單元5的輸出也可分為N個通道,各通道輸出的數據數量和輸入通道的輸入數據數量相同。
在第1個輸出通道中,第1個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pm0_0的相加之和,第2個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pm1_0的相加之和,以此類推,第N個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pmN_0的相加之和。
在第2個輸出通道中,第1個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pm0_1的相加之和,第2個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pm1_1的相加之和,以此類推,第N個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pmN_1的相加之和。
以此類推,在第N個輸出通道中,第1個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pm0_N的相加之和,第2個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的以1卷積結果pm1_N的相加之和,以此類推,第N個輸出數據是各卷積運算模組3a~3N的卷積單元30a~30N的1×1卷積結果pmN_N的相加之和。
另外,卷積運算的處理方法可應用或實施在前述實施例的卷積運算裝置,相關的變化及實施方式故此不再贅述。卷積運算的處理方法亦可應用或實施在其他計算裝置。舉例來說,數據串流的卷積運算的處理方法可用在能夠執行指令的處理器,配置以執行卷積運算的處理方法的指令是儲存在記憶體,處理器耦接記憶體並執行這些指令以進行卷積運算的處理方法。例如,處理器包括快取記憶體、數學運算單元以及內部暫存器,快取記憶體儲存數據串流,數學運算單元能夠進行卷積運算,內部暫存器可留存本輪卷積運算的部分數據於卷積運算模組內以供次一輪卷積運算。
綜上所述,本發明的卷積運算裝置及方法中,同時對輸入於各卷積運算模組的數據進行卷積運算,並藉由交錯加總單元將各卷積運算模組的輸入通道中對應順序的各卷積結果交錯加總以各別輸出一加總結果,使各輸入通道的新數據總寬度與各加總結果的總寬度相等,故可提升卷積單元的使用率,並達成輸入頻寬與輸出頻寬相等的功效。
上述實施例並非用以限定本發明,任何熟悉此技藝者,在未脫離本發明之精神與範疇內,而對其進行之等效修改或變更,均應包含於後附之申請專利範圍中。
Claims (13)
- 一種卷積運算裝置,包括:多個卷積運算模組,各具有多個卷積單元,各卷積單元配置來輸出多個卷積結果;以及一交錯加總單元,耦接該等卷積運算模組的該等卷積單元,配置來對該等卷積運算模組中對應順序的各卷積結果交錯加總以各別輸出一加總結果;其中,該等卷積單元以及該交錯加總單元係能夠選擇性地操作在一低規模卷積模式以及一高規模卷積模式;在該低規模卷積模式中,各卷積單元配置來輸出該等卷積結果,該交錯加總單元配置來對該等卷積運算模組中對應順序的各卷積結果交錯加總以各別輸出該加總結果;在該高規模卷積模式中,各卷積單元配置來輸出多個高規模卷積結果,該交錯加總單元將該等高規模卷積結果作為輸出。
- 如申請專利範圍第1項所述的卷積運算裝置,其中各卷積單元包括:多個低規模卷積輸出,進行低規模卷積運算以輸出該等卷積結果;以及一高規模卷積輸出,進行高規模卷積運算以輸出高規模卷積結果。
- 如申請專利範圍第2項所述的卷積運算裝置,其中該交錯加總單元選擇性地將該等加總結果以及該等高規模卷積結果其中一個輸出。
- 如申請專利範圍第1項所述的卷積運算裝置,其中各卷積運算模組耦接一輸入通道,該等輸入通道的總寬度與該等加總結果的總寬度相等。
- 如申請專利範圍第1項所述的卷積運算裝置,其中該等卷積運算模組的數量小於或等於各該卷積運算模組中該等卷積單元的數量。
- 如申請專利範圍第1項所述的卷積運算裝置,其中各卷積單元的該等卷積結果係相同規模的卷積運算的結果。
- 如申請專利範圍第6項所述的卷積運算裝置,其中該等卷積運算模組的數量等於各該卷積單元的該等卷積結果的數量。
- 一種卷積運算的處理方法,包括:藉由一控制單元決定在一低規模卷積模式以及一高規模卷積模式其中 一個之中進行卷積運算;藉由多個卷積運算模組對於各輸入通道的數據進行卷積運算以輸出多個卷積結果;當在該高規模卷積模式中,進行高規模卷積運算並將多個高規模卷積結果作為輸出;當在該低規模卷積模式中,進行低規模卷積運算以輸出該等卷積結果;以及藉由一交錯加總單元將該等輸入通道中對應順序的各卷積結果交錯加總以各別輸出一加總結果。
- 如申請專利範圍第8項所述的處理方法,更包括:藉由該交錯加總單元選擇性地將該等加總結果以及該等高規模卷積結果其中一個輸出。
- 如申請專利範圍第8項所述的處理方法,其中該等輸入通道的總寬度與該等加總結果的總寬度相等。
- 如申請專利範圍第8項所述的處理方法,其中該等卷積結果係相同規模的卷積運算的結果。
- 如申請專利範圍第8項所述的處理方法,其中交錯加總的步驟是進行卷積神經網路的一後續層的部分運算。
- 如申請專利範圍第12項所述的處理方法,其中該部分運算是跨越該等輸入通道的運算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105137127A TWI616840B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105137127A TWI616840B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI616840B true TWI616840B (zh) | 2018-03-01 |
TW201818345A TW201818345A (zh) | 2018-05-16 |
Family
ID=62188973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105137127A TWI616840B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI616840B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110029471A1 (en) * | 2009-07-30 | 2011-02-03 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
US20160140425A1 (en) * | 2014-11-14 | 2016-05-19 | Thomson Licensing | Method and apparatus for image classification with joint feature adaptation and classifier learning |
CN105981051A (zh) * | 2014-10-10 | 2016-09-28 | 北京旷视科技有限公司 | 用于图像解析的分层互连多尺度卷积网络 |
-
2016
- 2016-11-14 TW TW105137127A patent/TWI616840B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110029471A1 (en) * | 2009-07-30 | 2011-02-03 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
CN105981051A (zh) * | 2014-10-10 | 2016-09-28 | 北京旷视科技有限公司 | 用于图像解析的分层互连多尺度卷积网络 |
US20160140425A1 (en) * | 2014-11-14 | 2016-05-19 | Thomson Licensing | Method and apparatus for image classification with joint feature adaptation and classifier learning |
Non-Patent Citations (3)
Title |
---|
C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao, and J. Cong, "Optimizingfpga-based accelerator design for deep convolution neural networks," in FPGA, 2015. * |
J. Sim, J.-S. Park, M. Kim, D. Bae, Y. Choi, and L.-S. Kim, "A 1.42TOPS/W deep convolution neural network recognition processor for intelligent IoE systems," in Proc. IEEE Int. Solid-State Circuits Conf. (ISSCC), Jan./Feb. 2016, pp. 264–265. * |
Y. H. Chen, T. Krishna, J. Emer and V. Sze, "Eyeriss: An energy-efficient reconfigurable accelerator for deep convolution neural networks," 2016 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, CA, 2016, pp. 262-263. * |
Also Published As
Publication number | Publication date |
---|---|
TW201818345A (zh) | 2018-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI634490B (zh) | 卷積運算裝置及卷積運算方法 | |
KR102614616B1 (ko) | 동형 암호화에 의한 보안 계산 가속화를 위한 동형 처리 유닛(hpu) | |
CN108073549B (zh) | 卷积运算装置及方法 | |
CN108133270B (zh) | 卷积神经网络加速方法及装置 | |
CN107229967B (zh) | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 | |
CN107341547B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
US20060002471A1 (en) | Motion estimation unit | |
US9411726B2 (en) | Low power computation architecture | |
CN107633297B (zh) | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 | |
TWI630544B (zh) | 卷積神經網路的運算裝置及方法 | |
JP3228927B2 (ja) | プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法 | |
JP5837153B2 (ja) | 画素速度での画像処理のための方法および装置 | |
JPH10187438A (ja) | 乗算器の入力に対する遷移を減少させる方法 | |
WO2019216376A1 (ja) | 演算処理装置 | |
JP2011141823A (ja) | データ処理装置および並列演算装置 | |
TWI634436B (zh) | 緩衝裝置及卷積運算裝置與方法 | |
CN108073548B (zh) | 卷积运算装置及卷积运算方法 | |
TWI645335B (zh) | 卷積運算裝置及卷積運算方法 | |
Jain et al. | Image compression using 2D-discrete wavelet transform on a light weight reconfigurable hardware | |
TWI616840B (zh) | 卷積運算裝置及方法 | |
Yi et al. | Fpga based accelerator for neural networks computation with flexible pipelining | |
TWI616813B (zh) | 卷積運算方法 | |
CN114758209A (zh) | 卷积结果获取方法、装置、计算机设备及存储介质 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
Bevara et al. | VLSI implementation of high throughput parallel pipeline median finder for IoT applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |