TWI634436B - 緩衝裝置及卷積運算裝置與方法 - Google Patents

緩衝裝置及卷積運算裝置與方法 Download PDF

Info

Publication number
TWI634436B
TWI634436B TW105137126A TW105137126A TWI634436B TW I634436 B TWI634436 B TW I634436B TW 105137126 A TW105137126 A TW 105137126A TW 105137126 A TW105137126 A TW 105137126A TW I634436 B TWI634436 B TW I634436B
Authority
TW
Taiwan
Prior art keywords
data
input
convolution
remapping
buffer
Prior art date
Application number
TW105137126A
Other languages
English (en)
Other versions
TW201818264A (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 耐能股份有限公司
Priority to TW105137126A priority Critical patent/TWI634436B/zh
Publication of TW201818264A publication Critical patent/TW201818264A/zh
Application granted granted Critical
Publication of TWI634436B publication Critical patent/TWI634436B/zh

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

一種緩衝裝置包括一輸入線路、一輸入緩衝單元以及一重新映射單元。輸入線路耦接記憶體,配置為在一當前時脈下讓數據從記憶體輸入;輸入緩衝單元耦接輸入線路,配置為在當前時脈下將部分輸入的緩衝以在後續時脈將其輸出;重新映射單元耦接輸入線路以及輸入緩衝單元,配置為在當前時脈下依據輸入線路上的數據以及輸入緩衝單元的輸出而產生多個重新映射數據,重新映射數據係供卷積運算的輸入。

Description

緩衝裝置及卷積運算裝置與方法
本發明是關於一種緩衝裝置及運算裝置,特別關於一種用於卷積運算的緩衝裝置以及卷積運算裝置。
卷積(convolution)是通過兩個函數生成第三個函數的一種數學運算子,卷積廣泛應用在科學、工程和數學上,例如圖像處理以及電子工程與訊號處理等等。
卷積神經網路(Convolutional Neural Network,CNN)也是一種卷積運算的應用,其包括一個或多個卷積層(convolutional layer)以及關聯權重和池化層(pooling layer)。卷積神經網路是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有不錯的表現。
卷積神經網路也應用在深度學習(deep learning),與其他深度學習架構相比,卷積神經網路在圖像和語音識別方面能夠產生較佳的結果。此外,使用卷積神經網路的模型也可以使用反向傳播演算法進行訓練。相比較其他深度學習架構以及前饋神經網路,卷積神經網路所需估計的參數較少,因此其成為目前深度學習架構的重要發展趨勢。
然而,卷積運算是很耗費效能的運算,在卷積神經網路的應用中,卷積運算將占據大部分處理器的效能。因此,如何提供一種緩衝裝置及卷積運算裝置,能提高卷積運算效能,實為當前重要的課題之一。另外,網際網路的多媒體應用例如串流媒體也越來越廣泛,因此,如何提供一種緩衝裝置及卷積運算裝置,也能處理數據串流,實為當前重要的課題之一。
有鑑於此,本發明之一目的為提供一種能處理數據串流的緩衝裝置及卷積運算裝置。
本發明之一目的為提供一種能提高卷積運算效能的緩衝裝置及卷積運算裝置。
一種緩衝裝置與一記憶體耦接,緩衝裝置包括一輸入線路、一輸入緩衝單元以及一重新映射單元。輸入線路耦接記憶體,配置為在一當前時脈下讓數據從記憶體輸入;輸入緩衝單元耦接輸入線路,配置為在當前時脈下將部分輸入的緩衝以在後續時脈將其輸出;重新映射單元耦接輸入線路以及輸入緩衝單元,配置為在當前時脈下依據輸入線路上的數據以及輸入緩衝單元的輸出而產生多個重新映射數據,重新映射數據係供卷積運算的輸入。
在一實施例中,輸入線路在當前時脈下從記憶體輸入W個數據,重新映射單元產生W組重新映射數據以分別供W個卷積運算的輸入。
在一實施例中,輸入線路在當前時脈下從記憶體輸入W個數據,輸入緩衝單元係從W個數據中將最後K個數據緩衝以在後續時脈將其輸出,輸入緩衝單元的輸出係排列在該輸入線路的前面,K小於W。
在一實施例中,各組重新映射數據包括M個重新映射數據,卷積計算係M×M卷積計算。
在一實施例中,重新映射單元係在輸入緩衝單元的輸出以及輸入線路之中從起始端朝末端每間隔J步幅取得M個資料作為一組重新映射數據。
在一實施例中,卷積運算間的步幅為1,各組重新映射數據包括3個重新映射數據,卷積運算係3×3卷積運算,輸入緩衝單元配置為在當前時脈下將最後2個輸入數據緩衝以在後續時脈將其輸出。
在一實施例中,緩衝裝置更包括一控制單元,控制單元耦接並控制重新映射單元。
在一實施例中,記憶體所儲存的數據為二維陣列數據,緩衝裝置係作為行(column)緩衝,輸入緩衝單元係作為部分列(row)緩衝。
在一實施例中,重新映射單元能夠運作在一第一卷積模式 以及一第二卷積模式。當運作在第一卷積模式時,重新映射單元在當前時脈下依據輸入線路上的數據以及輸入緩衝單元的輸出而產生重新映射數據,重新映射數據係供卷積運算的輸入;當運作在第二卷積模式時,重新映射單元在當前時脈下將輸入線路上的數據輸出以供卷積運算的輸入。
在一實施例中,第一卷積模式是3×3卷積運算模式,第二卷積模式是1×1卷積運算模式。
一種卷積運算裝置包括一記憶體、一卷積運算模組以及一緩衝裝置。緩衝裝置耦接記憶體以及卷積運算模組。緩衝裝置包括一輸入線路、一輸入緩衝單元以及一重新映射單元。輸入線路耦接記憶體,配置為在一當前時脈下讓數據從記憶體輸入;輸入緩衝單元耦接輸入線路,配置為在當前時脈下將部分輸入的數據緩衝以在後續時脈將其輸出;重新映射單元耦接輸入線路以及輸入緩衝單元,配置為在當前時脈下依據輸入線路上的數據以及輸入緩衝單元的輸出而產生多個重新映射數據,重新映射數據係輸入至卷積運算模組。
在一實施例中,輸入線路在當前時脈下從記憶體輸入W個數據,重新映射單元產生W組重新映射數據至卷積運算模組,卷積運算模組依據W組重新映射數據進行W個卷積運算。
在一實施例中,輸入緩衝單元係從W個數據中將最後K個數據緩衝以在後續時脈將其輸出,輸入緩衝單元的輸出係排列在輸入線路的前面,K小於W。
在一實施例中,各組重新映射數據包括M個重新映射數據,卷積計算係M×M卷積計算。
在一實施例中,重新映射單元係在輸入緩衝單元的輸出以及輸入線路之中從起始端朝末端每間隔J步幅取得M個資料作為一組重新映射數據。
在一實施例中,卷積運算間的步幅為1,各組重新映射數據包括3個重新映射數據,卷積運算係3×3卷積運算,輸入緩衝單元配置為在當前時脈下最後2個輸入數據緩衝以在後續時脈將其輸出。
在一實施例中,緩衝裝置更包括一控制單元,控制單元耦 接並控制重新映射單元。
在一實施例中,記憶體所儲存的數據為二維陣列數據,緩衝裝置係作為行(column)緩衝,輸入緩衝單元係作為部分列(row)緩衝。
在一實施例中,在同一時脈下輸入數據的數量與卷積運算模組所進行的卷積運算的數量相等。
在一實施例中,卷積運算模組以及緩衝裝置能夠運作在一第一卷積模式以及一第二卷積模式。當運作在第一卷積模式時,重新映射單元在當前時脈下依據輸入線路上的數據以及輸入緩衝單元的輸出而產生多個重新映射數據,重新映射數據係輸入至卷積運算模組;當運作在第二卷積模式時,重新映射單元在當前時脈下將輸入線路上的數據輸出至卷積運算模組。
在一實施例中,第一卷積模式是3×3卷積運算模式,第二卷積模式是1×1卷積運算模式。
一種數據串流的卷積運算方法,包括:從一緩衝區取得前一輪卷積運算已經輸入的數據;在一記憶體中從數據串流取得前一輪卷積運算還未輸入的數據;將從緩衝區以及數據串流取得的數據產生多組重新映射數據;基於一濾波器以及各組重新映射數據進行本輪卷積運算;以及保留本輪卷積運算的部分數據於緩衝區以供次一輪卷積運算。
在一實施例中,W個前一輪卷積運算還未輸入的數據是在記憶體中從數據串流取得,產生的重新映射數據為W組以分別供W個卷積運算的輸入。
在一實施例中,W個前一輪卷積運算還未輸入的數據中最後K個數據是保留於緩衝區以供次一輪卷積運算,K小於W。
在一實施例中,各組重新映射數據包括M個重新映射數據,卷積計算係M×M卷積計算。
在一實施例中,卷積運算間的步幅為1,各組重新映射數據包括3個重新映射數據,卷積運算係3×3卷積運算,前一輪卷積運算還未輸入的數據中最後2個數據是保留於緩衝區以供次一輪卷積運算。
在一實施例中,緩衝區為一處理器內部的一暫存器,記憶體為處理器內部的一快取記憶體。
承上所述,在緩衝裝置及卷積運算裝置中,緩衝裝置的輸入緩衝單元能夠將部分的輸入數據緩衝儲存當作下一時脈的輸入數據,即使卷積運算需要的輸入數據數量多於從記憶體能夠一次讀取的數量,重新映射單元仍能夠從輸入緩衝單元取得所缺的數據,因而能提供足夠的重新映射數據以供卷積運算,因而提高整體卷積運算效能。另外,由於從記憶體所輸入的數據數量和卷積運算所輸出的數量二者相等,使得這個架構也很適合處理數據串流。
1‧‧‧記憶體
2‧‧‧緩衝裝置
21‧‧‧輸入線路
22‧‧‧輸入緩衝單元
23‧‧‧重新映射單元
24‧‧‧控制單元
3‧‧‧卷積運算模組
30~37‧‧‧卷積單元
4‧‧‧緩衝單元
5‧‧‧控制單元
6‧‧‧卷積單元
61‧‧‧位址解碼器
62‧‧‧加法器
conv_size、Stride、num_row、num_col‧‧‧訊號
PE0~PE8‧‧‧處理單位
data[47:0]‧‧‧線路
fc_bus[47:0]‧‧‧線路
psum[35:0]‧‧‧輸出
pm_0[31:0]、pm_1[31:0]、pm_2[31:0]‧‧‧輸出
圖1為依據本發明一實施例的卷積運算裝置的區塊圖。
圖2為圖1的卷積運算裝置對一二維數據進行卷積運算的示意圖。
圖3為依據本發明一實施例的記憶體、緩衝裝置及卷積運算模組的區塊圖。
圖4為圖2的緩衝裝置的運作示意圖。
圖5為依據本發明一實施例的卷積單元的區塊圖。
以下將參照相關圖式,說明依據本發明具體實施例的緩衝裝置及卷積運算裝置,其中相同的元件將以相同的元件符號加以說明,所附圖式僅為說明用途,並非用於侷限本發明。
圖1為依據本發明一實施例的卷積運算裝置的區塊圖。請參閱圖1所示,一卷積運算裝置包括一記憶體1、一卷積運算模組3、一緩衝裝置2、一控制單元5以及一緩衝單元4。卷積運算裝置可用在卷積神經網路(Convolutional Neural Network,CNN)的應用。
記憶體1儲存待卷積運算的數據,數據例如是影像、視頻、音頻、統計、卷積神經網路其中一層的數據等等。以影像數據來說,其例如是畫素數據;以視頻數據來說,其例如是視頻的視框的畫素數據或是移動向量、或是視頻中的音訊;以卷積神經網路其中一層的數據來說,其通常是一個二維陣列數據,也常常是一個影像數據。
全部或大部分的數據可先儲存在其他地方,例如在另一記憶體中,要進行卷積運算時再全部或部分地載入至記憶體1中,然後通過緩衝裝置2將數據輸入至卷積運算模組3來進行卷積運算。若輸入的數據是從數據串流而來,記憶體1隨時會從數據串流寫入最新的數據以供卷積運算。
對於影像數據或視頻的視框數據來說,處理的順序是逐行(column)同時讀取多列(row),因此在一個時序(clock)中,緩衝裝置2係從記憶體1輸入同一行不同列上的數據,也就是緩衝裝置2作為行(column)緩衝。
緩衝裝置2耦接記憶體1以及卷積運算模組3,其與記憶體1之間具有有限的一記憶體存取寬度,卷積運算模組3實際上能進行得卷積運算也與記憶體存取寬度有關。如果記憶體輸入有頻頸,則卷積運算的效能將受到衝擊而下降。
實際上,卷積運算模組3所需的輸入除了數據之外還有係數,因平行處理的關係,卷積運算模組3不會只進行一個卷積運算,他會同時進行多個相鄰數據的卷積運算以提高效能。由於步幅(stride)的大小不會超過移動窗(sliding window)的大小或卷積大小(convolution size),相鄰的卷積運算往往會有重疊的數據。一般卷積神經網路的應用來說,常用的移動窗是1×1、3×3、5×5、7×7等等,其中又以3×3較為常用。
舉例來說,卷積運算模組3具有多個卷積單元,各卷積單元基於一濾波器以及多個當前數據進行一卷積運算,並於卷積運算後保留部分的當前數據。緩衝裝置2從記憶體1取得多個新數據,並將新數據輸入至卷積單元,新數據不與當前數據重複,新數據例如是前一輪卷積運算還未用到但是本輪卷積運算要用到的數據。卷積運算模組3的卷積單元基於濾波器、保留的當前數據以及新數據進行次輪卷積運算。
在一種實施態樣下,卷積運算裝置例如是一個處理器,記憶體1例如是處理器內的快取記憶體(cache memory),卷積運算模組3可包括一個或多個卷積單元陣列,卷積單元陣列具有多個卷積單元,各卷積單元可分別平行處理不同組輸入數據的卷積運算,各不同組輸入數據可能 與前一組或次一組輸入數據有部分重疊的數據。緩衝裝置中包括多個功能單元,以增加平行處理卷積運算的效能。控制單元5、緩衝單元4、卷積單元陣列以及緩衝裝置的單元是以數位邏輯電路構成,各單元的內部可包括多個邏輯元件來實現其功能。記憶體1、卷積運算模組3、緩衝裝置2、控制單元5以及緩衝單元4可以整合在同一個積體電路。
在其他實施態樣下,記憶體1可以是一般的隨機存取記憶體(dram),卷積運算模組3、緩衝裝置2、控制單元5以及緩衝單元4可以整合在同一個積體電路。
控制單元5可包括一指令解碼器以及一控制器,指令解碼器係從控制器得到指令並將指令解碼,藉以得到目前輸入數據大小、輸入數據的行數、輸入數據的列數、移動窗(sliding window)或稱為卷積大小(convolution size)的編號、以及輸入資料在記憶體1中的起始位址。另外,指令解碼器也從控制器得到移動窗種類資訊以及輸出特徵編號,並輸出適當的空置訊號到緩衝裝置2,緩衝裝置2根據這些訊號來運作,也控制卷積單元陣列3以及緩衝單元4的運作,例如數據從記憶體1輸入到緩衝裝置2以及卷積運算模組3的時序、卷積運算模組3的卷積運算的規模、數據從記憶體1到緩衝裝置2的讀取位址、數據從緩衝單元4到記憶體1的寫入位址、卷積運算模組3及緩衝裝置2所運作的卷積模式。
舉例來說,緩衝裝置2以及卷積運算模組3能夠運作在一第一卷積模式以及一第二卷積模式,運作在那一個卷積模式是由緩衝裝置2中的控制單元決定,也就是緩衝裝置2中的控制單元控制緩衝裝置2以及卷積運算模組3運作在第一卷積模式或第二卷積模式,不同的卷積模式係以不同大小的移動窗(sliding window)或稱為卷積大小(convolution size)來進行卷積運算。例如,第一卷積模式是3×3卷積運算模式,第二卷積模式是1×1卷積運算模式。
舉例來說,控制單元5可接收一控制訊號或模式指令,並且根據這個控制訊號或模式指令來決定其他模組以及單元要在哪一種模式運算。這個控制訊號或模式指令可從其他控制單元或處理單元而得。
當緩衝裝置2以及卷積運算模組3運作在第一卷積模式 時,緩衝裝置2會將前一時脈的部分輸入數據留存至當前時脈,並根據前一時脈的部分輸入數據以及當前時脈的輸入數據產生多個重新映射數據,重新映射數據係輸入至卷積運算模組3。這些重新映射數據包括多組移動窗所需的數據,例如3個重新映射數據供3×3卷積運算模式。由於卷積運算模組3具備平行運算以及移位功能,在步幅為1的情況下,每個時脈下提供3個重新映射數據即可供卷積運算模組3進行一個3×3卷積運算。
當運作在第二卷積模式時,緩衝裝置2將當前時脈下的輸入數據輸出至卷積運算模組3,此時不需要將前一時脈的部分輸入數據留存至當前時脈。
緩衝單元4是將卷積計算的結果暫存,必要時會先進行池化(pooling)運算。運算結果透過緩衝裝置2存至記憶體1,然後透過記憶體1輸出至其他地方。
請參考圖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所示,緩衝裝置2包括一輸入線路21、一輸入緩衝單元22以及一重新映射單元23。輸入線路21耦接記憶體1,其配置為在一當前時脈下讓數據從記憶體1輸入。輸入緩衝單元22耦接輸入線路21,其配置為在當前時脈下將部分的輸入數據緩衝以在後續時脈將其輸出。重新映射單元23耦接輸入線路21以及輸入緩衝單元22,其配置為在當前時脈下依據輸入線路21上的數據以及輸入緩衝單元22的輸出而產生多個重新映射數據,重新映射數據係輸入至卷積運算模組3以供卷積運算的輸入。
舉例來說,輸入線路21在當前時脈下從記憶體1輸入W個數據,重新映射單元產生W組重新映射數據至卷積運算模組3,卷積運算模組依據W組重新映射數據進行W個卷積運算,各組重新映射數據可輸入到卷積運算模組3的各卷積單元以分別進行卷積運算。輸入緩衝單元22係從W個數據中將最後K個數據緩衝以在後續時脈將其輸出,輸入緩衝單元22的輸出係排列在輸入線路21的前面,K小於W。各組重新映射數據包括M個重新映射數據,卷積計算係M×M卷積計算。重新映射單元23係在輸入緩衝單元22的輸出以及輸入線路21之中從起始端朝末端每間隔J步幅取得M個資料作為一組重新映射數據。在一些實施態樣中,在同一時脈下輸入數據的數量與卷積運算模組所進行的卷積運算的數量相等。
在本實施例中,W為8,K為2,M為3,J為1,這些數值僅為舉例說明而非限制,在其他實施例中,W、K、M、J可以是其他數值。
在本實施例中,輸入線路21在當前時脈下從記憶體1輸入8個數據,數據的單位為1個位元組,輸入緩衝單元22配置為在當前時脈下將最後2個輸入數據緩衝以在後續時脈將其輸出。例如在第1個時脈中,數據R0~R7會輸入到重新映射單元23,數據R6~R7還會輸入到輸入緩衝單元22;在第2個時脈中,數據R8~R15會輸入到重新映射單元23,數據R14~R15還會輸入到輸入緩衝單元22;在第i+1個時脈中,數據Ri*8~Ri*8+7會輸入到重新映射單元23,數據Ri*8+6~Ri*8+7還會輸入到輸入緩衝單元22。
在一個時脈中,將有10個數據輸入至重新映射單元23。例如例如在第1個時脈中,輸入線路21上的數據R0~R7會輸入到重新映射 單元23;在第2個時脈中,輸入緩衝單元22的輸出數據R6~R7輸入到重新映射單元23,輸入線路21上的數據R8~R15會輸入到重新映射單元23;在第i+1個時脈中,輸入緩衝單元22的輸出數據Ri*8-2~Ri*8-1輸入到重新映射單元23,輸入線路21上的數據Ri*8~Ri*8+7會輸入到重新映射單元23。
重新映射單元23產生8組重新映射數據至卷積運算模組3,各組重新映射數據包括3個重新映射數據,每個重新映射數據為1個位元組,各卷積單元30~37的卷積運算係3×3卷積運算,卷積運算間的步幅為1。重新映射數據的產生將參考圖4說明。
因卷積運算係3×3卷積運算且步幅為1,重新映射單元23至少需要10個數據才能產生8組重新映射數據供8個卷積運算。如果沒有輸入緩衝單元22,重新映射單元23僅能從輸入線路21得到8個數據,因而僅能產生6組重新映射數據供6個卷積運算,而且每次從記憶體1的載入動作必須載入前一次已經載入過的2個數據,而且,在同一時脈下從記憶體1輸入的數據數量與卷積運算模組3所進行的卷積運算的數量不相等,這將造成整體效能下降。
反觀本案藉由輸入緩衝單元22的設置,重新映射單元23可以在一個時脈中得到10個數據,因而能產生8組重新映射數據供8個卷積運算,使得從記憶體1輸入的數據數量與卷積運算模組3所進行的卷積運算的數量相等。
圖4為圖3的緩衝裝置的運作示意圖。請參閱圖3與圖4所示,舉例來說,記憶體1所儲存的數據為二維陣列數據,緩衝裝置2係作為行(column)緩衝,輸入緩衝單元22係作為部分列(row)緩衝。
移動窗(sliding window)是逐行(column)從記憶體1依序讀取固定8列(row)的數據。在每個時脈中,記憶體1的8列數據作為8個輸入數據。
在時脈Clk n中,數據R0~R7會從記憶體1透過輸入線路21輸入到重新映射單元23,數據R6~R7還會輸入到輸入緩衝單元22。重新映射單元23係在輸入線路21之中,也就是在數據R0~R7之中,從起始端(數據R0)朝末端(數據R7)每間隔1步幅取得3個數據作為一組重新映射數據,各組重新映射數據分別數據R0~R2為一組、R1~R3為一組、...R5~R7為一組。但由於輸入至重新映射單元23的數據不足,重新映射單元23只能得到8個數據因而只能產生6組重新映射數據供有效的卷積運算,並將產生2組無法供有效卷積運算的數據,但這現象僅會在初始時發生。
在時脈Clk n+1中,數據R6~R7會從輸入緩衝單元22輸入到重新映射單元23,數據R8~R15會從記憶體1透過輸入線路21輸入到重新映射單元23,數據R14~R15還會輸入到輸入緩衝單元22。重新映射單元23係在輸入緩衝單元22的輸出以及輸入線路21之中,也就是從數據R6~R15中,從起始端(R6)朝末端(R15)每間隔1步幅取得3個資料作為一組重新映射數據,各組重新映射數據分別數據R6~R8為一組、R7~R9為一組、...R13~R15為一組。輸入至重新映射單元23的數據已有10個,將產生8組有效卷積運算的數據。
以此類推,在時脈Clk n+i中,數據Ri*8-2~Ri*8-1會從輸入緩衝單元22輸入到重新映射單元23,數據Ri*8~Ri*8+7會從記憶體1透過輸入線路21輸入到重新映射單元23,數據Ri*8+6~Ri*8+7還會輸入到輸入緩衝單元22。重新映射單元23係在輸入緩衝單元22的輸出以及輸入線路21之中,也就是從數據Ri*8-2~Ri*8+7中,從起始端(Ri*8-2)朝末端(Ri*8+7)每間隔1步幅取得3個資料作為一組重新映射數據,各組重新映射數據分別數據Ri*8-2~Ri*8為一組、Ri*8-1~Ri*8+1為一組、...Ri*8+5~Ri*8+7為一組。輸入至重新映射單元23的數據已有10個,將產生8組有效卷積運算的數據,在同一個時脈中,從記憶體1讀取8個數據將對應地產生8個卷積運算結果。
另外,請再參閱圖3所示,緩衝裝置2更包括一控制單元24,控制單元24耦接並控制重新映射單元23,控制單元5控制卷積運算模組3、緩衝裝置2以及緩衝單元4的運作,例如數據從記憶體1輸入到緩衝裝置2以及卷積運算模組3的時序、卷積運算模組3的卷積運算的規模、數據從記憶體1到緩衝裝置2的讀取位址、數據從緩衝單元4到記憶體1 的寫入位址、卷積運算模組3及緩衝裝置2所運作的卷積模式。訊號conv_size、訊號Stride、訊號num_row、訊號num_col係輸入至控制單元24,訊號conv_size係表示當前該進行的卷積大小,訊號Stride表示卷積運算之間的步幅、訊號num_row表示當前數據的列數、訊號num_col係表示當前數據的行數。控制單元24根據訊號conv_size控制重新映射單元23以及卷積運算模組3的卷積運算的運作模式,並依據訊號Stride控制讀取位移。
舉例來說,重新映射單元23以及卷積運算模組3能夠運作在第一卷積模式以及第二卷積模式,運作在那一個卷積模式是由控制單元24決定,也就是控制單元24控制重新映射單元23以及卷積運算模組3運作在第一卷積模式或第二卷積模式,不同的卷積模式係以不同大小的移動窗(sliding window)或稱為卷積大小(convolution size)來進行卷積運算。例如,第一卷積模式是3×3卷積運算模式,第二卷積模式是1×1卷積運算模式。
當重新映射單元23以及卷積運算模組3運作在第一卷積模式時,重新映射單元23在當前時脈下依據輸入線路21上的數據以及輸入緩衝單元22的輸出而產生重新映射數據,重新映射數據係輸入至卷積運算模組3供卷積運算的輸入。輸入緩衝單元22會將前一時脈的部分輸入數據留存至當前時脈,重新映射單元23根據輸入緩衝單元22所輸出的前一時脈部分輸入數據以及當前時脈輸入線路21上的輸入數據產生多個重新映射數據,重新映射數據係輸入至卷積運算模組3。這些重新映射數據包括多組移動窗所需的數據,例如3個重新映射數據供3×3卷積運算模式。由於卷積運算模組3具備平行運算以及移位功能,在步幅為1的情況下,每個時脈下提供3個重新映射數據即可供卷積運算模組3進行一個3×3卷積運算。
當運作在第二卷積模式時,重新映射單元23將當前時脈下輸入線路21上的輸入數據輸出至卷積運算模組3,此時重新映射單元23不需要從輸入緩衝單元22取得留存的前一時脈的部分輸入數據。
圖5為依據本發明一實施例的卷積單元的區塊圖。以下將以33卷積單元為例進行說明,請參閱圖5所示,卷積單元6包括9個處理單位PE0~PE8(process engine)、一位址解碼器61及一加法器62。待卷積運算的輸入數據係經由線路data[47:0]輸入至處理單位PE0~PE2,處理單位PE0~PE2會將當前時脈的輸入數據在下一時脈輸入至處理單位PE3~PE5,處理單位PE3~PE5會將當前時脈的輸入數據在下一時脈輸入至處理單位PE6~PE8。濾波器係數透過線路fc_bus[47:0]輸入至處理單位PE0~PE8。執行卷積運算時,處理單位PE透過位址解碼器61將選定位址的濾波器係數與輸入至處理單位PE0~PE8的輸入數據做乘法運算。當卷積單元6進行3×3卷積運算時,加法器62會將各乘法運算的結果相加以得到卷積運算的結果作為輸出psum[35:0]。當卷積單元6進行1×1卷積運算時,加法器62會直接將處理單位PE0~PE2的卷積運算的結果作為輸出pm_0[31:0]、pm_1[31:0]、pm_2[31:0]。
另外,一種數據串流的卷積運算方法包括:從一緩衝區取得前一輪卷積運算已經輸入的數據;在一記憶體中從數據串流取得前一輪卷積運算還未輸入的數據;將從緩衝區以及數據串流取得的數據產生多組重新映射數據;基於一濾波器以及各組重新映射數據進行本輪卷積運算;以及保留本輪卷積運算的部分數據於緩衝區以供次一輪卷積運算。
在一實施例中,W個前一輪卷積運算還未輸入的數據是在記憶體中從數據串流取得,產生的重新映射數據為W組以分別供W個卷積運算的輸入。W個前一輪卷積運算還未輸入的數據中最後K個數據是保留於緩衝區以供次一輪卷積運算,K小於W。各組重新映射數據包括M個重新映射數據,卷積計算係M×M卷積計算。
在一實施例中,卷積運算間的步幅為1,各組重新映射數據包括3個重新映射數據,卷積運算係3×3卷積運算,前一輪卷積運算還未輸入的數據中最後2個數據是保留於緩衝區以供次一輪卷積運算。
在一實施例中,緩衝區為一處理器內部的一暫存器,記憶體為處理器內部的一快取記憶體。
卷積運算方法可應用或實施在前述實施例的卷積運算裝置,相關的變化及實施方式故此不再贅述。卷積運算方法亦可應用或實施在其他計算裝置。舉例來說,數據串流的卷積運算方法可用在能夠執行指令的處理器,配置以執行卷積運算方法的指令是儲存在記憶體,處理器耦 接記憶體並執行這些指令以進行卷積運算方法。例如,處理器包括快取記憶體、數學運算單元以及內部暫存器,快取記憶體儲存數據串流,數學運算單元能夠進行卷積運算,內部暫存器可留存本輪卷積運算的部分數據於卷積運算模組內以供次一輪卷積運算。
綜上所述,在緩衝裝置及卷積運算裝置中,緩衝裝置的輸入緩衝單元能夠將部分的輸入數據緩衝儲存當作下一時脈的輸入數據,即使卷積運算需要的輸入數據數量多於從記憶體能夠一次讀取的數量,重新映射單元仍能夠從輸入緩衝單元取得所缺的數據,因而能提供足夠的重新映射數據以供卷積運算,因而提高整體卷積運算效能。另外,由於從記憶體所輸入的數據數量和卷積運算所輸出的數量二者相等,使得這個架構也很適合處理數據串流。
上述實施例並非用以限定本發明,任何熟悉此技藝者,在未脫離本發明之精神與範疇內,而對其進行之等效修改或變更,均應包含於後附之申請專利範圍中。

Claims (15)

  1. 一種緩衝裝置,與一記憶體耦接,包括:一輸入線路,耦接該記憶體,配置為在一當前時脈下讓數據從該記憶體輸入;一輸入緩衝單元,耦接該輸入線路,配置為在該當前時脈下將部分輸入的數據緩衝以在後續時脈將其輸出;以及一重新映射單元,耦接該輸入線路以及該輸入緩衝單元,配置為在該當前時脈下依據該輸入線路上的數據以及該輸入緩衝單元的輸出而產生多個重新映射數據,該等重新映射數據係供卷積運算的輸入;其中該輸入線路在該當前時脈下從該記憶體輸入W個該等數據,該重新映射單元產生W組該等重新映射數據以分別供W個卷積運算的輸入;其中該輸入緩衝單元係從W個該等數據中將最後K個數據緩衝以在後續時脈將其輸出,該輸入緩衝單元的輸出係排列在該輸入線路的前面,K小於W。
  2. 如申請專利範圍第1項所述的緩衝裝置,其中各組該等重新映射數據包括M個該等重新映射數據,該卷積計算係M×M卷積計算。
  3. 如申請專利範圍第2項所述的緩衝裝置,其中該重新映射單元係在該輸入緩衝單元的輸出以及該輸入線路之中從起始端朝末端每間隔J步幅取得M個資料作為一組重新映射數據。
  4. 如申請專利範圍第1項所述的緩衝裝置,其中該等卷積運算間的步幅為1,各組重新映射數據包括3個該等重新映射數據,該卷積運算係3×3卷積運算,該輸入緩衝單元配置為在該當前時脈下最後2個輸入數據緩衝以在後續時脈將其輸出。
  5. 如申請專利範圍第1項所述的緩衝裝置,更包括:一控制單元,耦接並控制該重新映射單元。
  6. 如申請專利範圍第1項所述的緩衝裝置,其中該記憶體所儲存的數據為二維陣列數據,該緩衝裝置係作為行(column)緩衝,該輸入緩衝單元係作為部分列(row)緩衝。
  7. 如申請專利範圍第1項所述的緩衝裝置,其中該重新映射單元能夠運作在一第一卷積模式以及一第二卷積模式,當運作在該第一卷積模式時,該重新映射單元在該當前時脈下依據該輸入線路上的數據以及該輸入緩衝單元的輸出而產生該等重新映射數據,該等重新映射數據係供卷積運算的輸入;當運作在該第二卷積模式時,該重新映射單元在該當前時脈下將該輸入線路上的數據輸出以供卷積運算的輸入。
  8. 如申請專利範圍第7項所述的緩衝裝置,其中該第一卷積模式是3×3卷積運算模式,該第二卷積模式是1×1卷積運算模式。
  9. 一種卷積運算裝置,包括:一記憶體;一卷積運算模組;以及如申請專利範圍第1項至第8項其中一項所述的緩衝裝置,該等重新映射數據係輸入至該卷積運算模組。
  10. 一種數據串流的卷積運算方法,包括:從一緩衝區取得前一輪卷積運算已經輸入的數據;在一記憶體中從該數據串流取得前一輪卷積運算還未輸入的數據;將從該緩衝區以及該數據串流取得的數據產生多組重新映射數據;基於一濾波器以及各組重新映射數據進行本輪卷積運算;以及保留本輪卷積運算的部分數據於該緩衝區以供次一輪卷積運算。
  11. 如申請專利範圍第10項所述的卷積運算方法,其中W個前一輪卷積運算還未輸入的數據是在該記憶體中從該數據串流取得,產生的該等重新映射數據為W組以分別供W個卷積運算的輸入。
  12. 如申請專利範圍第11項所述的卷積運算方法,其中W個前一輪卷積運算還未輸入的數據中最後K個數據是保留於該緩衝區以供次一輪卷積運算,K小於W。
  13. 如申請專利範圍第10項所述的卷積運算方法,其中各組該等重新映射數據包括M個該等重新映射數據,該卷積計算係M×M卷積計算。
  14. 如申請專利範圍第10項所述的卷積運算方法,其中該等卷積運算間的 步幅為1,各組重新映射數據包括3個該等重新映射數據,該卷積運算係3×3卷積運算,前一輪卷積運算還未輸入的數據中最後2個數據是保留於該緩衝區以供次一輪卷積運算。
  15. 如申請專利範圍第10項所述的卷積運算方法,其中該緩衝區為一處理器內部的一暫存器,該記憶體為該處理器內部的一快取記憶體。
TW105137126A 2016-11-14 2016-11-14 緩衝裝置及卷積運算裝置與方法 TWI634436B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW105137126A TWI634436B (zh) 2016-11-14 2016-11-14 緩衝裝置及卷積運算裝置與方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW105137126A TWI634436B (zh) 2016-11-14 2016-11-14 緩衝裝置及卷積運算裝置與方法

Publications (2)

Publication Number Publication Date
TW201818264A TW201818264A (zh) 2018-05-16
TWI634436B true TWI634436B (zh) 2018-09-01

Family

ID=62949403

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137126A TWI634436B (zh) 2016-11-14 2016-11-14 緩衝裝置及卷積運算裝置與方法

Country Status (1)

Country Link
TW (1) TWI634436B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI766568B (zh) * 2020-04-17 2022-06-01 神盾股份有限公司 用於執行卷積神經網路運算的處理裝置與其操作方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI696127B (zh) * 2018-06-29 2020-06-11 奇景光電股份有限公司 無訊框緩衝器的卷積神經網路系統與方法
US11782839B2 (en) * 2018-08-21 2023-10-10 Neuchips Corporation Feature map caching method of convolutional neural network and system thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151953A (en) * 1990-12-10 1992-09-29 Harris Corporation Single chip 2-D convolver
TW504657B (en) * 1999-06-30 2002-10-01 Lg Electronics Inc Method and apparatus for high speed convolution
US20060215929A1 (en) * 2005-03-23 2006-09-28 David Fresneau Methods and apparatus for image convolution
TW201516953A (zh) * 2013-08-30 2015-05-01 Arm有限公司 圖形處理系統

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151953A (en) * 1990-12-10 1992-09-29 Harris Corporation Single chip 2-D convolver
TW504657B (en) * 1999-06-30 2002-10-01 Lg Electronics Inc Method and apparatus for high speed convolution
US20060215929A1 (en) * 2005-03-23 2006-09-28 David Fresneau Methods and apparatus for image convolution
TW201516953A (zh) * 2013-08-30 2015-05-01 Arm有限公司 圖形處理系統

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI766568B (zh) * 2020-04-17 2022-06-01 神盾股份有限公司 用於執行卷積神經網路運算的處理裝置與其操作方法

Also Published As

Publication number Publication date
TW201818264A (zh) 2018-05-16

Similar Documents

Publication Publication Date Title
US10936937B2 (en) Convolution operation device and convolution operation method
US20200234124A1 (en) Winograd transform convolution operations for neural networks
CN107832843B (zh) 一种信息处理方法及相关产品
US10943166B2 (en) Pooling operation device and method for convolutional neural network
CN111008040B (zh) 缓存装置及缓存方法、计算装置及计算方法
US11500811B2 (en) Apparatuses and methods for map reduce
JP7386543B2 (ja) 機械知覚および高密度アルゴリズム集積回路を実装するためのシステムおよび方法
US10169295B2 (en) Convolution operation device and method
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
CN110688616B (zh) 一种基于乒乓ram的条带阵列的卷积模块及其运算方法
US20140184630A1 (en) Optimizing image memory access
US10162799B2 (en) Buffer device and convolution operation device and method
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
TWI645335B (zh) 卷積運算裝置及卷積運算方法
US11775809B2 (en) Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium
US20210004667A1 (en) Operation processing apparatus and operation processing method
TWI616813B (zh) 卷積運算方法
JP5675278B2 (ja) データ処理装置および画像処理装置
US11663453B2 (en) Information processing apparatus and memory control method
CN112257859B (zh) 特征数据处理方法及装置、设备、存储介质
TW201818345A (zh) 卷積運算裝置及方法
CN112257859A (zh) 特征数据处理方法及装置、设备、存储介质
WO2024118071A1 (en) Reduced power consumption in machine learning models
JP2016134123A (ja) 画像処理装置、画像処理方法及びプログラム
KR20210100872A (ko) 필터 분해 기법을 이용한 에너지 효율적 재구성형 cnn 가속기 장치 및 방법

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees