TWI634490B - 卷積運算裝置及卷積運算方法 - Google Patents
卷積運算裝置及卷積運算方法 Download PDFInfo
- Publication number
- TWI634490B TWI634490B TW105137129A TW105137129A TWI634490B TW I634490 B TWI634490 B TW I634490B TW 105137129 A TW105137129 A TW 105137129A TW 105137129 A TW105137129 A TW 105137129A TW I634490 B TWI634490 B TW I634490B
- Authority
- TW
- Taiwan
- Prior art keywords
- convolution
- convolution operation
- data
- unit
- memory
- Prior art date
Links
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/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/08—Learning methods
-
- 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
-
- 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/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
Abstract
一種卷積運算裝置包括一卷積運算模組、一記憶體以及一緩衝裝置。卷積運算模組具有多個卷積單元,各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於卷積運算後保留部分的當前數據;緩衝裝置耦接記憶體以及卷積運算模組,從記憶體取得多個新數據,並將新數據輸入至卷積單元,新數據不與當前數據重複。
Description
本發明係關於一種卷積運算裝置,尤指一種適於數據串流的卷積運算裝置。
深度學習(deep learning)已是開展人工智慧(Artificial intelligence,AI)的重要應用技術之一。其中,卷積神經網絡(Convolutional Neural Network,CNN)則是近年來,引起廣泛重視的一種深度學習高效識別技術。與其他深度學習架構相比,特別是在模式分類領域的應用,例如圖像和語音識別方面,卷積神經網路避免了複雜的前期預處理,且可以直接輸入原始圖像或原始數據,因而得到了更為廣泛的應用並可取得較佳的識別結果。
然而,卷積運算是一種很耗費效能的運算,在卷積神經網路的應用中,特別是卷積運算及連續平行運算,將占據大部分處理器的效能。另一方面,網際網路的多媒體應用例如串流媒體也越來越廣泛,因此,有必要提出一種卷積運算裝置,當用於卷積運算及連續地平行運算的處理數據時,可具有優異的運算性能和低功耗表現,並且能夠處理數據串流,實為當前重要的課題之一。
有鑑於上述課題,本發明提出一種能夠處理數據串流的卷積運算裝置以及方法。
一種卷積運算裝置包括一卷積運算模組、一記憶體以及一緩衝裝置。卷積運算模組具有多個卷積單元,各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於卷積運算後保留部分的當前數據;緩
衝裝置耦接記憶體以及卷積運算模組,從記憶體取得多個新數據,並將新數據輸入至卷積單元,新數據不與當前數據重複。
在一實施例中,卷積單元基於濾波器、保留的當前數據以及新數據進行次輪卷積運算。
在一實施例中,濾波器移動的步幅小於濾波器的最短寬度。
在一實施例中,卷積運算裝置更包括一交錯加總單元,其耦接卷積運算模組,依據卷積運算的結果產生一特徵輸出結果。
在一實施例中,卷積運算裝置包括多個卷積運算模組,卷積單元以及交錯加總單元係能夠選擇性地操作在一低規模卷積模式以及一高規模卷積模式;其中,在低規模卷積模式中,交錯加總單元配置來對卷積運算模組中對應順序的各卷積運算的結果交錯加總以各別輸出一加總結果;其中,在高規模卷積模式中,交錯加總單元將各卷積單元的各卷積運算的結果交錯加總作為輸出。
在一實施例中,卷積運算裝置更包括一加總緩衝單元,其耦接交錯加總單元與緩衝裝置,暫存特徵輸出結果;其中,當指定範圍的卷積運算完成後,緩衝裝置從加總緩衝單元將暫存的全部數據寫入到記憶體。
在一實施例中,加總緩衝單元包括一部分加總區塊以及一池化區塊。部分加總區塊暫存交錯加總單元輸出的數據;池化區塊對暫存於部分加總區塊的數據進行池化運算。
在一實施例中,池化運算為最大值池化或平均池化。
在一實施例中,卷積運算裝置更包括一數據讀取控制器以及一指令解碼器,指令解碼器從數據讀取控制器得到一控制指令並將控制指令解碼,藉以得到目前從記憶體輸入數據的大小、輸入數據的行數、輸入數據的列數、輸入數據的特徵編號以及輸入數據在記憶體中的起始位址。
在一實施例中,各卷積單元包括多個低規模卷積輸出以及一高規模卷積輸出,低規模卷積輸出時各卷積單元進行低規模卷積運算以輸出低規模卷積結果,高規模卷積輸出時各卷積單元進行高規模卷積運算以輸出高規模卷積結果。
一種數據串流的卷積運算方法,包括:移動一卷積運算窗;
從數據串流取得前一輪卷積運算還未處理的數據;基於卷積運算窗的濾波器係數對從卷積運算模組內留存的數據以及數據串流取得的數據進行本輪卷積運算;以及留存本輪卷積運算的部分數據於卷積運算模組內以供次一輪卷積運算。
在一實施例中,卷積運算方法更包括對本輪卷積運算的結果進行卷積神經網路的一後續層的部分運算。
在一實施例中,卷積運算窗移動的步幅小於卷積運算窗的最短寬度。
在一實施例中,卷積運算方法更包括:決定在一低規模卷積模式以及一高規模卷積模式其中一個之中進行卷積運算;當在低規模卷積模式中,藉由一交錯加總單元將各輸入通道中對應順序的各卷積運算的結果交錯加總以各別輸出一加總結果。
在一實施例中,卷積運算方法更包括對卷積運算的結果進行池化運算。
在一實施例中,池化運算為最大值池化或平均池化。
承上所述,因卷積運算裝置的各卷積單元於卷積運算後保留部分的當前數據,緩衝裝置從記憶體取得多個新數據並將新數據輸入至卷積單元,新數據不與當前數據重複,因此卷積運算的處理效率得以提升,適合用於數據串流的卷積運算。因此,當用於卷積運算及連續地平行運算的處理數據時,可具有優異的運算性能和低功耗表現,並且能夠處理數據串流。
1‧‧‧記憶體
2‧‧‧緩衝裝置
21‧‧‧記憶體控制單元
3‧‧‧卷積運算模組
31‧‧‧位址解碼器
32‧‧‧加法器
4‧‧‧交錯加總單元
5‧‧‧加總緩衝單元
51‧‧‧部分加總區塊
52‧‧‧池化區塊
6‧‧‧係數擷取控制器
7‧‧‧控制單元
71‧‧‧指令解碼器
72‧‧‧數據讀取控制器
8‧‧‧資料緩衝控制器
9‧‧‧卷積單元
91‧‧‧位址解碼器
92‧‧‧加法器
DMA‧‧‧直接記憶體存取
PE‧‧‧卷積單元
PE0~PE8‧‧‧處理單位
圖1為依據本發明一實施例的一卷積運算裝置的區塊圖。
圖2為圖1的卷積運算裝置對一二維數據進行卷積運算的示意圖。
圖3為圖1的卷積運算模組的卷積單元的示意圖。
圖4為圖1所示之卷積運算裝置的部分示意圖。
圖5為依據本發明一實施例卷積單元的功能方塊圖。
以下將參照相關圖式,說明依本發明較佳實施例之一種卷積運算裝置,其中相同的元件將以相同的參照符號加以說明。
請先參考圖1所示,圖1為依據本發明一實施例的一卷積運算裝置的區塊圖。卷積運算裝置包括一記憶體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隨時會寫入最新的串流數據以供卷積運算。
緩衝裝置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可接收一控制訊號或模式指令,並且根據這個控制訊號或模式指令來決定其他模組以及單元要在哪一種模式運算。這個控制訊號或模式指令可從其他控制單元或處理單元而得。
請參考圖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為圖1的卷積運算模組的卷積單元的示意圖。請參照圖3所示,卷積單元具有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亦可分別平行處理不同組輸入數據的卷積運算。
請參照圖4所示,圖4為圖1所示之卷積運算裝置的部分示意圖。係數擷取控制器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除了進行池化層的運算,也可進行卷積神經網路的後續層的部分運算。前述的部分運算例如是將後續層的加總運算、平均運算、取最大值運算或其他運算等先在卷積神經網路的目前這一層做運算。
圖5為依據本發明一實施例卷積單元的功能方塊圖,如圖5所示,卷積單元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 (12)
- 一種卷積運算裝置,包括:多個卷積運算模組,各卷積運算模組具有多個卷積單元,其中各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於該卷積運算後保留部分的當前數據;一交錯加總單元,耦接該等卷積運算模組,依據該卷積運算的結果產生一特徵輸出結果;一記憶體;以及一緩衝裝置,耦接該記憶體以及該等卷積運算模組,從該記憶體取得多個新數據,並將該等新數據輸入至該等卷積單元,該等新數據不與該等當前數據重複;該等卷積單元基於該濾波器、該等保留的當前數據以及該等新數據進行次輪卷積運算;其中該等卷積單元以及該交錯加總單元係能夠選擇性地操作在一1×1卷積模式以及一3×3卷積模式;在該1×1卷積模式中,該交錯加總單元配置來對該等卷積運算模組中對應順序的各卷積運算的結果交錯加總以各別輸出一加總結果;在該3×3卷積模式中,該交錯加總單元將各卷積單元的各卷積運算的結果交錯加總作為輸出。
- 如申請專利範圍第1項所述之卷積運算裝置,其中該濾波器移動的步幅小於該濾波器的最短寬度。
- 如申請專利範圍第1項所述之卷積運算裝置,更包括:一加總緩衝單元,耦接該交錯加總單元與該緩衝裝置,暫存該特徵輸出結果;其中,當指定範圍的卷積運算完成後,該緩衝裝置從該加總緩衝單元將暫存的全部數據寫入到該記憶體。
- 如申請專利範圍第3項所述之卷積運算裝置,其中該加總緩衝單元包括:一部分加總區塊,暫存該交錯加總單元輸出的數據;以及一池化區塊,對暫存於該部分加總區塊的數據進行池化運算。
- 如申請專利範圍第4項所述之卷積運算裝置,其中該池化運算為最大值池化或平均池化。
- 如申請專利範圍第1項所述之卷積運算裝置,更包括:一數據讀取控制器;以及一指令解碼器,從該數據讀取控制器得到一控制指令並將該控制指令解碼,藉以得到目前從該記憶體輸入數據的大小、輸入數據的行數、輸入數據的列數、輸入數據的特徵編號以及輸入數據在該記憶體中的起始位址。
- 如申請專利範圍第1項所述的卷積運算裝置,其中各卷積單元包括:多個1×1卷積輸出,各卷積單元進行1×1卷積運算以輸出該等卷積運算的結果;以及一3×3卷積輸出,各卷積單元進行3×3卷積運算以輸出3×3卷積運算的結果。
- 一種數據串流的卷積運算方法,包括:決定在一1×1卷積模式以及一3×3卷積模式其中一個之中進行卷積運算;移動一卷積運算窗;從該數據串流取得前一輪卷積運算還未處理的數據;基於該卷積運算窗的濾波器係數對從一卷積運算模組內留存的數據以及該數據串流取得的數據進行本輪卷積運算;以及留存本輪卷積運算的部分數據於該卷積運算模組內以供次一輪卷積運算;其中在該1×1卷積模式中,藉由一交錯加總單元將各輸入通道中對應順序的各卷積運算的結果交錯加總以各別輸出一加總結果;在該3×3卷積模式中,藉由該交錯加總單元將該卷積運算模組的各卷積運算的結果交錯加總作為輸出。
- 如申請專利範圍第8項所述的卷積運算方法,更包括:對本輪卷積運算的結果進行卷積神經網路的一後續層的部分運算。
- 如申請專利範圍第8項所述的卷積運算方法,其中該卷積運算窗移動 的步幅小於該卷積運算窗的最短寬度。
- 如申請專利範圍第8項所述的卷積運算方法,更包括:對該等卷積運算的結果進行池化運算。
- 如申請專利範圍第11項所述的卷積運算方法,其中該池化運算為最大值池化或平均池化。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105137129A TWI634490B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及卷積運算方法 |
US15/801,623 US10936937B2 (en) | 2016-11-14 | 2017-11-02 | Convolution operation device and convolution operation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105137129A TWI634490B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及卷積運算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201818301A TW201818301A (zh) | 2018-05-16 |
TWI634490B true TWI634490B (zh) | 2018-09-01 |
Family
ID=62107914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105137129A TWI634490B (zh) | 2016-11-14 | 2016-11-14 | 卷積運算裝置及卷積運算方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10936937B2 (zh) |
TW (1) | TWI634490B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073549B (zh) * | 2016-11-14 | 2021-04-27 | 耐能股份有限公司 | 卷积运算装置及方法 |
US11487846B2 (en) * | 2018-05-04 | 2022-11-01 | Apple Inc. | Performing multiply and accumulate operations in neural network processor |
US11244027B2 (en) | 2018-05-30 | 2022-02-08 | Samsung Electronics Co., Ltd. | Processor, electronics apparatus and control method thereof |
CN109284474B (zh) * | 2018-08-13 | 2020-09-11 | 北京大学 | 一种加法器辅助实现图像卷积运算的闪存系统及方法 |
US11782839B2 (en) * | 2018-08-21 | 2023-10-10 | Neuchips Corporation | Feature map caching method of convolutional neural network and system thereof |
US11443185B2 (en) | 2018-10-11 | 2022-09-13 | Powerchip Semiconductor Manufacturing Corporation | Memory chip capable of performing artificial intelligence operation and method thereof |
TWI714003B (zh) * | 2018-10-11 | 2020-12-21 | 力晶積成電子製造股份有限公司 | 可執行人工智慧運算的記憶體晶片及其操作方法 |
IN201911000739A (zh) | 2019-01-07 | 2019-02-22 | ||
CN111767994A (zh) * | 2019-04-01 | 2020-10-13 | 中国科学院半导体研究所 | 一种神经元计算模块 |
CN111832713A (zh) * | 2019-04-19 | 2020-10-27 | 北京灵汐科技有限公司 | 一种基于行缓冲Linebuffer的并行计算方法及计算设备 |
CN110276444B (zh) * | 2019-06-04 | 2021-05-07 | 北京清微智能科技有限公司 | 基于卷积神经网络的图像处理方法及装置 |
TWI719512B (zh) * | 2019-06-24 | 2021-02-21 | 瑞昱半導體股份有限公司 | 使用像素通道置亂的卷積神經網路的演算方法與系統 |
US20200327396A1 (en) * | 2020-05-02 | 2020-10-15 | Intel Corporation | Reordering of sparse data to induce spatial locality for n-dimensional sparse convolutional neural network processing |
CN111652363B (zh) * | 2020-06-08 | 2023-09-19 | 中国科学院微电子研究所 | 存算一体电路 |
US11977969B2 (en) * | 2020-06-11 | 2024-05-07 | Hangzhou Zhicun Intelligent Technology Co., Ltd. | Data loading |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
TW201627923A (zh) * | 2015-01-22 | 2016-08-01 | 高通公司 | 模型壓縮和微調 |
CN105869117A (zh) * | 2016-03-28 | 2016-08-17 | 上海交通大学 | 一种针对深度学习超分辨率技术的gpu加速方法 |
CN106023605A (zh) * | 2016-07-15 | 2016-10-12 | 姹ゅ钩 | 一种基于深度卷积神经网络的交通信号灯控制方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335747B (zh) | 2014-08-04 | 2019-03-29 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
US10546211B2 (en) * | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
US10733505B2 (en) * | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
-
2016
- 2016-11-14 TW TW105137129A patent/TWI634490B/zh active
-
2017
- 2017-11-02 US US15/801,623 patent/US10936937B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201627923A (zh) * | 2015-01-22 | 2016-08-01 | 高通公司 | 模型壓縮和微調 |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN105869117A (zh) * | 2016-03-28 | 2016-08-17 | 上海交通大学 | 一种针对深度学习超分辨率技术的gpu加速方法 |
CN106023605A (zh) * | 2016-07-15 | 2016-10-12 | 姹ゅ钩 | 一种基于深度卷积神经网络的交通信号灯控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180137407A1 (en) | 2018-05-17 |
US10936937B2 (en) | 2021-03-02 |
TW201818301A (zh) | 2018-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI634490B (zh) | 卷積運算裝置及卷積運算方法 | |
CN107633297B (zh) | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 | |
TWI630544B (zh) | 卷積神經網路的運算裝置及方法 | |
TWI607389B (zh) | 卷積神經網路的池化運算裝置及方法 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
Du et al. | An accelerator for high efficient vision processing | |
US9411726B2 (en) | Low power computation architecture | |
US20180137414A1 (en) | Convolution operation device and convolution operation method | |
US20060002471A1 (en) | Motion estimation unit | |
WO2019076108A1 (zh) | 卷积神经网络运算电路 | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
CN111008040B (zh) | 缓存装置及缓存方法、计算装置及计算方法 | |
US8947446B2 (en) | Methods and apparatus for image processing at pixel rate | |
CN108073549B (zh) | 卷积运算装置及方法 | |
CN108073548B (zh) | 卷积运算装置及卷积运算方法 | |
TWI645335B (zh) | 卷積運算裝置及卷積運算方法 | |
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
JP2022137247A (ja) | 複数の入力データセットのための処理 | |
TWI634436B (zh) | 緩衝裝置及卷積運算裝置與方法 | |
TWI616813B (zh) | 卷積運算方法 | |
WO2022007265A1 (zh) | 一种膨胀卷积加速计算方法及装置 | |
US10162799B2 (en) | Buffer device and convolution operation device and method | |
WO2019136761A1 (zh) | 一种用于识别人为动作的三维卷积装置 | |
CN114066713A (zh) | 基于小波变换提升图像处理效率的系统及方法 | |
TWI616840B (zh) | 卷積運算裝置及方法 |