TWI832006B - 實行卷積運算的系統及方法 - Google Patents
實行卷積運算的系統及方法 Download PDFInfo
- Publication number
- TWI832006B TWI832006B TW109132495A TW109132495A TWI832006B TW I832006 B TWI832006 B TW I832006B TW 109132495 A TW109132495 A TW 109132495A TW 109132495 A TW109132495 A TW 109132495A TW I832006 B TWI832006 B TW I832006B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- values
- matrix
- feature map
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 239000011159 matrix material Substances 0.000 claims description 130
- 238000012545 processing Methods 0.000 claims description 69
- 230000004913 activation Effects 0.000 claims description 35
- 238000001994 activation Methods 0.000 claims description 35
- 241001442055 Vipera berus Species 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 description 25
- 238000013527 convolutional neural network Methods 0.000 description 17
- 239000004744 fabric Substances 0.000 description 12
- 238000013507 mapping Methods 0.000 description 8
- 230000001537 neural effect Effects 0.000 description 8
- 239000013598 vector Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
一種實行卷積運算的方法包括:在第一儲存裝置中儲存
卷積核,所述卷積核具有x乘y的維度;在第二儲存裝置中儲存維度為n乘m的輸入特徵圖的元素值的第一子集;實行輸入特徵圖的元素值的第一子集的每一值與卷積核的x * y個元素中的第一元素值的第一同時乘法;對於卷積核的x * y個元素的每一剩餘值,實行剩餘值與輸入特徵圖的元素值的對應子集的同時乘法;對於每一同時乘法,將同時乘法的結果儲存在累加器中;以及輸出累加器的值作為輸出特徵圖的第一列。
Description
[相關申請案的交叉參考]
本申請案主張2019年12月12日提出申請且標題為「於點積架構上加速二維卷積層映射(ACCELERATING 2D CONVOLUTIONAL LAYER MAPPING ON A DOT PRODUCT ARCHITECTURE)」的序列號為62/947,423的美國臨時專利申請案的優先權及權利,所述美國臨時專利申請案的全部內容清楚地併入本案供參考。
根據本揭露實施例的一或多個態樣是有關於處理電路,且更具體而言是有關於一種於點積架構上加速二維(2D)卷積層映射的處理電路。
神經網路可在操作中實行涉及大量乘法及加法的張量運算(例如,張量乘法及卷積)。若由通用中央處理單元或甚至圖形處理單元(其可更佳地適合於此種任務)來實行,則該些運算的實行可能相對慢且每次運算造成相對高的能量成本。例如,在功率預算可能受到嚴格約束的小裝置(例如,行動手持裝置)中,
與通用中央處理單元或圖形處理單元的使用相關聯的功耗可能並不理想。
背景技術部分中的上述資訊僅用於增強對技術背景的理解,且因此其不應視為承認先前技術的存在或相關性。
提供本發明內容是為了介紹本揭露實施例的特徵及概念的選擇,該些特徵及概念將在下文的詳細說明中進一步闡述。本發明內容不旨在識別所主張標的的關鍵或必要特徵,亦不旨在用於限制所主張標的的範圍。所闡述特徵中的一或多者可與一或多個其他所闡述特徵相組合,以提供可工作的裝置。
本揭露示例性實施例的態樣是有關於處理電路,且更具體而言是有關於一種於點積架構上加速二維(two dimensional,2D)卷積層映射的處理電路。
在一些實施例中,一種實行卷積運算的方法包括:由處理器在所述處理器的第一儲存裝置中儲存卷積核,所述卷積核具有x乘y的維度,其中x是所述卷積核中的列數,且y是所述卷積核中的行數;由所述處理器在所述處理器的第二儲存裝置中儲存維度為n乘m的輸入特徵圖的元素值的第一子集,其中n是所述輸入特徵圖中的列數,且m是所述輸入特徵圖中的行數;由所述處理器實行所述輸入特徵圖的元素值的所述第一子集的每一值與所述卷積核的x * y個元素中的第一元素值的第一同時乘法;對於所述卷積核的所述x * y個元素的每一剩餘值,由所述處理器實
行所述剩餘值與所述輸入特徵圖的元素值的對應子集的同時乘法;對於每一同時乘法,由所述處理器將所述同時乘法的結果儲存在連接至所述處理器的累加器中;以及由所述處理器輸出所述累加器的值作為輸出特徵圖(output feature map,OFM)的第一列。
在一些實施例中,輸出所述累加器的所述值作為所述輸出特徵圖的所述第一列包括:由所述處理器將儲存在所述累加器中的多個同時乘法的結果相加,以產生所述輸出特徵圖的所述第一列。在一些實施例中,所述第一儲存裝置包括連接至所述處理器的快取記憶體,且其中所述第二儲存裝置包括位於所述處理器的乘法累加(multiply-accumulate,MAC)區塊的處理元件(processing element,PE)中的多個暫存器,其中所述多個暫存器是9位元暫存器。
在一些實施例中,所述方法更包括:由所述處理器將元素值的所述第一子集在所述多個暫存器中向左移位一個暫存器。在一些實施例中,所述方法更包括:由所述處理器將所述卷積核的所述x * y個元素中的所述第一元素值廣播至所述第二儲存裝置;以及由所述處理器將來自所述卷積核的所述x *y個元素中的第二元素值廣播至所述第二儲存裝置,其中所述輸入特徵圖的元素值的所述第一子集包括所述輸入特徵圖的第一列的第一行至第p行中的值,且所述輸入特徵圖的元素值的第二子集包括所述輸入特徵圖的第一列的第二行至第(p+1)行中的值。
在一些實施例中,所述維度為x乘y的所述卷積核是權
重矩陣,所述權重矩陣包括多個權重值,所述權重矩陣的所述多個權重值被儲存在連接至所述處理器的快取記憶體中,且其中所述維度為n乘m的所述輸入特徵圖包括多個激活值。在一些實施例中,所述處理器包括多個乘法累加(MAC)區塊,每一乘法累加區塊包括處理元件(PE)陣列,所述處理元件陣列包括多個處理元件列及多個處理元件行,所述多個處理元件行中的每一處理元件行包括多個處理元件、及加法器樹。
在一些實施例中,每一乘法累加區塊更包括快取記憶體,所述快取記憶體包括多個平行激活通路,每一激活通路對應於所述乘法累加區塊中的所述處理元件陣列的一列。在一些實施例中,所述多個處理元件中的每一處理元件包括:多個暫存器,被配置成儲存所述輸入特徵圖的所述多個激活值;乘法器,連接至所述多個暫存器,且被配置成將來自所述輸入特徵圖的激活乘以來自所述快取記憶體的所述權重值;以及處理元件累加器,連接至所述乘法器,且被配置成將來自所述乘法器的輸出與來自所述多個暫存器的值相加,並將結果儲存在所述多個暫存器中。在一些實施例中,所述乘法累加區塊中的所述處理元件陣列包括八個處理元件行,其中所述乘法累加區塊的所述八個處理元件行中的每一處理元件行包括十六個處理元件。
在一些實施例中,一種實行卷積運算的系統包括:記憶體及與所述記憶體通訊的處理器,其中所述處理器被配置成:在所述處理器的第一儲存裝置中儲存維度為x乘y的卷積核,其中x
是所述卷積核中的列數,且y是所述卷積核中的行數;在連接至所述處理器的第二儲存裝置中儲存維度為n乘m的輸入特徵圖的元素值的第一子集,其中n是所述輸入特徵圖中的列數,且m是所述輸入特徵圖中的行數;實行所述輸入特徵圖的元素值的所述第一子集的每一值與所述卷積核的x * y個元素中的第一元素值的第一同時乘法;對於所述卷積核的所述x * y個元素的每一剩餘值,實行所述剩餘值與所述輸入特徵圖的元素值的對應子集的同時乘法;對於每一同時乘法,將所述同時乘法的結果儲存在連接至所述處理器的累加器中;以及輸出所述累加器的值作為所述輸出特徵圖(OFM)的第一列。
在一些實施例中,所述處理器更被配置成藉由將儲存在所述累加器中的多個同時乘法的結果相加以產生所述輸出特徵圖的所述第一列,來輸出所述累加器的所述值作為所述輸出特徵圖的所述第一列。在一些實施例中,所述第一儲存裝置包括連接至所述處理器的快取記憶體,且其中所述第二儲存裝置包括位於所述處理器的乘法累加(MAC)區塊的處理元件(PE)中的多個暫存器,其中所述多個暫存器是9位元暫存器。在一些實施例中,所述處理器更被配置成:將元素值的所述第一子集在所述多個暫存器中向左移位一個暫存器。
在一些實施例中,所述處理器更被配置成:將所述卷積核的x * y個元素中的所述第一元素值廣播至所述第二儲存裝置;且將所述卷積核的所述x * y個元素中的第二元素值廣播至所述第
二儲存裝置。在一些實施例中,所述維度為x乘y的所述卷積核是權重矩陣,所述權重矩陣包括多個權重值,所述權重矩陣的所述多個權重值被儲存在連接至所述處理器的快取記憶體中,且其中所述維度為n乘m的所述輸入特徵圖包括多個激活值,其中所述處理器包括多個乘法累加(MAC)區塊,每一乘法累加區塊包括處理元件(PE)陣列,所述處理元件陣列包括多個處理元件列及多個處理元件行,所述多個處理元件行中的每一處理元件行包括多個處理元件、及加法器樹。
在一些實施例中,每一乘法累加區塊更包括快取記憶體,所述快取記憶體包括多個平行激活通路,每一激活通路對應於所述乘法累加區塊中的所述處理元件陣列的一列,其中所述乘法累加區塊中的所述處理元件陣列包括八個處理元件行,其中所述乘法累加區塊的所述八個處理元件行中的每一處理元件行包括十六個處理元件。在一些實施例中,所述多個處理元件中的每一處理元件包括:多個暫存器,被配置成儲存所述輸入特徵圖的所述多個激活值;乘法器,連接至所述多個暫存器,且被配置成將來自所述輸入特徵圖的激活乘以來自所述快取記憶體的所述權重值;以及處理元件累加器,連接至所述乘法器,且被配置成將來自所述乘法器的輸出與來自所述多個暫存器的值相加,並將結果儲存在所述多個暫存器中。
在一些實施例中,一種方法包括:由處理器實行第一矩陣的元素值的第一子集的每一值與第二矩陣的x * y個元素中的第
一元素值的第一同時乘法;對於所述第二矩陣的所述x * y個元素的每一剩餘值,由所述處理器實行所述剩餘值與所述第一矩陣的元素值的對應子集的同時乘法;對於每一同時乘法,由所述處理器將所述同時乘法的結果儲存在連接至所述處理器的累加器中;以及由所述處理器輸出所述累加器的值作為輸出特徵圖(OFM)的第一列。
在一些實施例中,所述方法更包括:由所述處理器將所述第二矩陣儲存在所述處理器的第一儲存裝置中,所述第二矩陣具有x乘y的維度,其中x是所述第二矩陣中的列數,且y是所述第二矩陣中的行數;由所述處理器在連接至所述處理器的第二儲存裝置中儲存維度為n乘m的所述第一矩陣的元素值的所述第一子集,其中n是所述第一矩陣中的列數,且m是所述第一矩陣中的行數;以及由所述處理器在所述第二儲存裝置中儲存所述第一矩陣的元素值的第二子集,其中所述第一矩陣的元素值的所述第一子集包括所述第一矩陣的第一列的第一行至第p行中的值,所述第一矩陣的元素值的所述第二子集包括所述第一矩陣的第一列的第二行至第(p+1)行中的值。
103:PE
116:權重緩衝器
118:乘法器
122、124:累加器暫存器
202、502:IFM
204:核
206:OFM向量
208:區塊
210:行
400:2D IFM
402、404:區段
504:核/權重矩陣
506:第一列
508:OFM
510、512、514、516、518、520、522、524、526、532、534、536、538、540、542、544、546、548:步驟
527:讀取通道
528:權重暫存器
529:快取
530:第二列
參考說明書、申請專利範圍及附圖,將領會及理解本揭露一些示例性實施例的該些及其他特徵,在附圖中:圖1至圖2示出根據本揭露一些實施例的處理元件(PE)的示例性架構。
圖3示出根據本揭露一些實施例,將平面卷積映射至乘法累加(MAC)區塊。
圖4示出根據本揭露一些實施例的示例性二維(2D)輸入特徵圖(input feature map,IFM)。
圖5A至圖5M詳細示出根據本揭露一些實施例的關於輸出特徵圖(OFM)的第一列的確定。
圖5N至圖5W詳細示出根據本揭露一些實施例的關於OFM的第二列的確定。
以下結合附圖闡述的詳細說明旨在作為對根據本揭露所提供的於點積架構上加速二維(2D)卷積層映射的系統及方法的一些示例性實施例的闡述,而不旨在代表本揭露可被構造或利用的唯一形式。本說明結合所示實施例闡述本揭露的特徵。然而應理解,可藉由亦旨在囊括於本揭露的範圍內的不同實施例來達成相同或等效的功能及結構。如本文其他地方所表明,相同的元件編號旨在指示相同的元件或特徵。
卷積神經網路(convolutional neural network,CNN)是可用於影像處理的神經網路的類型,例如,影像分類、影像聚類、物件識別等。在例如影像分類、跟蹤、偵測等應用方面,CNN相對於相關技術的機器學習方法可能是理想的。CNN可用於自輸入影像提取特徵,例如,藉由使用具有在神經網路訓練期間學習的權重的濾波器的卷積,可自輸入影像提取大範圍的特徵。所提取
的特徵可經組合以確定輸出。然而,CNN相較於相關技術的機器學習方法而言可參與增加數目的計算操作。
CNN可包括卷積層及全連接層(fully-connected layer)。卷積層及全連接層在實行計算及記憶體存取方面可不同。例如,在CNN中,全連接層相較於卷積層可實行更少的計算,然而,可集中存取記憶體,且因此可能是CNN效能降低的主要原因。CNN中的卷積層可保持大多數計算,且相較於全連接層可具有越來越多的參數。卷積層可為神經網路中神經元共享權重的層。卷積層的輸入可為輸入影像或前一層的輸出,且所述層的輸出可為特徵圖。
在CNN中,二維資料陣列可用作卷積層的輸入,且在此種情況下,卷積層的輸出亦可為二維資料陣列。藉由二維輸入陣列,卷積層可實行在輸入陣列上滑動的二維卷積的計算。在CNN計算中,核或濾波器可為二維權重陣列,所述二維權重陣列可重複用於在輸入二維陣列上實行卷積。例如,核可在二維輸入資料上滑動,以實行與其當前所在的輸入陣列區段的逐元素乘法,且然後將結果加至輸出畫素中(例如,每一輸出畫素是核與二維輸入資料的對應部分的點積)。可對核滑過的每一位置重複此過程,以將二維特徵陣列(例如,輸入特徵圖上的二維輸入資料陣列)轉換成另一二維特徵陣列(例如,輸出特徵圖上的二維輸出資料陣列)。
在CNN中,三維(three dimensions,3D)資料陣列可用
作卷積層的輸入。例如,維度為H×W×D的三維輸入陣列可與維度為H×W×D的F個核及長度為S的步幅卷積。步幅可被定義為沿輸入陣列滑動時核的步長。例如,步幅為1可指示核逐個元素地滑過輸入陣列。F個核中的維度為H×W×D的每一三維核可跨三維輸入陣列以步幅S滑動,且在每一移位期間,三維核的每一元素或權重與來自三維輸入陣列的重疊區域的每一成對輸入元素相乘及相加。因此,相較於全連接網路(例如,濾波器大小=h * w * D;輸入大小=H*W*D)而言,CNN可實行大量的迭代運算。
可實行乘法-累加(MAC)運算的CNN的卷積層可使用CNN的大部分執行時間。MAC運算可計算兩個數字的乘積,且可將所述乘積加至累加器。神經網路加速器(例如,殘差網路(Resnet)-152)可減少卷積層中的計算數目或CNN中的記憶體存取數目。為減少卷積層的執行時間,高速加速器可使用特定結構,所述結構藉由由處理元件並行執行大量的MAC運算來加速卷積層中實行的計算。
具有二維卷積的神經網路(例如行動網路)可用於減少卷積層中的計算操作的數目。例如,為實行高速MAC運算,卷積層的輸入陣列中的資訊或當前層的輸入特徵圖資訊及濾波器或核權重資訊可被上傳至記憶體。上傳的資訊可由基於MAC運算的處理元件(PE)來處理,以產生下一層的輸出特徵圖資訊,然後將所述輸出特徵圖資訊儲存在記憶體中。包括MAC區塊或MAC陣列的神經處理器可利用輸入特徵圖(IFM)中的稀疏性,藉由不按
次序推進某些乘法及加法運算來加速計算的完成,以利用當IFM的元素等於零時原本將實行乘以零的乘法的乘法器。
在一些情況下,CNN的二維卷積層可能在點積架構上映射不佳,此乃因二維卷積層可能僅利用16×16MAC陣列的一小部分(例如,僅16×16 MAC陣列的對角線元素)。例如,在一些情況下,點積架構的利用不足可能是由一次僅使用MAC陣列的16列中的一列造成的。
在一些實施例中,神經處理器可被配置成計算輸入特徵圖(IFM)(或「激活」的張量)與權重(例如,核)的多維陣列(或張量)的卷積或張量積,以形成輸出特徵圖(OFM)。
在一些實施例中,神經處理器包括多個靜態隨機存取記憶體(static random access memory,SRAM)庫組。在一些實施例中,所述多個SRAM庫組的每一者包括四個SRAM庫。在一些實施例中,所述多個SRAM庫組藉由互連組構(例如,輸入特徵圖(IFM)遞送組構)連接至MAC區塊。在一些實施例中,互連組構或IFM遞送組構可將儲存在SRAM庫組中的輸入激活圖引帶至MAC區塊,以用於後續計算。
在一些實施例中,MAC區塊亦經由另一互連組構(例如,將來自MAC區塊的所計算結果傳輸至SRAM庫組進行儲存的輸出特徵圖(OFM)遞送組構)連接至SRAM庫組。在一些實施例中,MAC區塊亦連接至約減樹或約減組構。在一些實施例中,IFM遞送組構可為分段匯流排,且因此,SRAM庫組中的每一者可與
MAC區塊中的對應一者相關聯。
在一些實施例中,每一MAC區塊可包含PE行的PE陣列。在一些實施例中,每一PE行包含多個PE、及加法器樹。在一些實施例中,每一PE陣列包含八個PE行,且每一PE行包含十六個PE、及加法器樹。
在一些實施例中,每一PE可包括:多個暫存器,例如,包含18個暫存器(例如,18個9位元暫存器)的暫存器檔案,其可被稱為「權重緩衝器」;以及乘法器。在一些實施例中,乘法器將輸入激活乘以權重。隨後,每一MAC行中的加法器樹將來自所述行中的所述多個PE(例如,十六個PE)的所得乘積相加(例如,折疊或累加),以形成點積。
在一些實施例中,每一MAC區塊亦包括快取。在一些實施例中,快取可藉由對自SRAM接收的IFM值進行快取來減少對輸入特徵圖的SRAM讀取。在一些實施例中,快取包含多個平行「激活通路」,每一激活通路對應於MAC行中的PE陣列的「列」。
在一些實施例中,可自快取提取輸入激活(例如,提取至IFM激活緩衝器中),同時在可能的情況下亦省略零值激活,以達成稀疏激活計算。接下來,數字類型的激活可被轉換成符號及8位元幅值格式(sign-and-8bit-magnitude format)。所得轉換後的多個激活值可並行廣播至PE陣列,使得每一激活通路將輸入激活值引帶至PE的對應列中的對應乘法器單元。在一些實施例中,PE的每一行,結果在返回單元中的累加器中累加。在一些實施例中,
在可能的多個週期中累加乘積值之後,結果將被返回至SRAM。一旦畫素的所有計算相加於一起,返回單元將大的累加值量化回小的精度。
圖1至圖2示出PE的示例性架構。在一些實施例中,如圖1至圖2所示,每一PE 103亦可包含累加器暫存器122。在一些實施例中,「累加器」(例如,累加器暫存器122)可為加法器與暫存器的組合,其被配置成將輸入值加至暫存器的內容,且用總和覆寫暫存器的內容。在一些實施例中,除了累加器暫存器122之外,PE 103亦可併入另一累加器暫存器124。在此種情況下,累加器暫存器122可為權重緩衝器116的一部分。累加器暫存器124可被配置成將來自乘法器118的輸出及來自權重緩衝器116的輸入值加至暫存器的內容,且累加器暫存器122可被配置成將總和儲存至權重緩衝器116,或者用來自累加器暫存器124的總和覆寫權重緩衝器116的內容。
在一些實施例中,權重緩衝器116可具有十八個1位元組(Byte,B)元素。在一些實施例中,在二維卷積模式中,權重緩衝器116的十八個1B元素中的十二個可用於儲存激活,且權重緩衝器116的其餘六個1B元素可被分解成兩個3B累加器(例如,累加器暫存器122及124)。
在一些實施例中,所述兩個累加器暫存器122及124可累加並儲存前一輪累加的結果。同時,在一些實施例中,累加器暫存器122及124中的一者可用於累加,且來自累加器暫存器122
及124中的另一者的所儲存結果可被逐漸發送至返回單元。如此,失速時間可被最小化。
圖3示出根據本揭露的一些實施例,將平面卷積映射至MAC區塊。
如圖3所示,具有特定長度(例如,長度為十六)的IFM 202可被稱為「IFM片(IFM slice)」。IFM片可具有與之相關聯的平面座標(x,y)及深度通道索引d(例如,IFM[x,y,d:d+15])。在一些實施例中,區塊208(例如,MAC區塊)可一次自包含3D IFM張量的晶片上SRAM(例如,SRAM庫組)接收一個IFM片,其中每一輸入IFM片在輸入層中的平面位置(x,y)處包含自索引(例如,d至d+15,包括索引d及索引d+15)的十六個深度通道(在圖3中,僅示出七個通道或深度通道)的值。
類似地,具有特定長度(例如,長度為八)的OFM向量206可被稱為「OFM片(OFM slice)」。OFM片可具有與之相關聯的平面座標(x,y)及深度通道索引d作為相關聯的OFM張量(例如,OFM[x,y,d:d+7])的索引。在一些實施例中,區塊208可產生OFM片作為輸出。在一些實施例中,在藉由利用OFM遞送組構傳輸最終OFM向量結果以儲存在SRAM庫中之前,來自區塊208的輸出OFM向量206(OFM片)可能需要由約減樹或約減組構進一步約減以完成OFM向量計算。
在圖3的示例性實施例中,核204可具有不同於IFM 202的長度及寬度,然而,核204可具有與IFM 202相同的深度。在
一些實施例中,核204可沿著IFM 202的高度及寬度滑動,且在每一滑動位置處,可實行逐元素乘法及加法,此會產生OFM片的單個元素。為確定具有深度通道索引d的OFM向量206(例如,OFM[x,y,d:d+7]),可將八個核204(例如,與OFM向量206的深度相同數目的核)應用於IFM 202,其中八個核中的每一核204可產生OFM通道。
在一些實施例中,區塊208可包括十六列或十六個通路及八行。在一些實施例中,在每一操作週期期間(例如,在時鐘的每一週期期間),行210中的十六個乘法器中的每一者可在其輸入處自兩個因子形成相應的乘積,加法器中的每一者可在其輸入處形成所述十六個乘積中的一些的和。
參考2019年6月19日提出申請的美國專利申請案第16/446,610號的圖1C至圖1H來論述使用併入區塊(例如,區塊208)的神經處理器計算OFM 206的進一步細節,所述美國專利申請案的全部內容併入本案供參考。
圖4示出示例性2D IFM 400。在一些實施例中,圖4示出如何將IFM分割成片段(piece),其中每一片段由MAC區塊處理(或者在不同輪次中使用相同的區塊,或者同時使用多個區塊)。在一些示例性實施例中,在2D(例如,深度方向)卷積運算期間,2D IFM 400可被分成具有八行寬(例如,在本實例中標記為位元0至位元7)的區段(例如,402、404)。八行寬區段402、404中的每一者可被依序處理。在一些實施例中,神經處理器的每
一區塊(例如,MAC區塊)可處理十六個輸出通道。在一些實施例中,神經處理器的區塊陣列可被配置成處理最大數目的輸出通道(例如,輸出特徵圖(OFM)的所有輸出通道)。例如,為處理64個輸出通道,神經處理器的區塊陣列可被配置成4×4區塊陣列,使得可一次處理64個(例如,4×16列)通道。
在一些實施例中,由於存在自SRAM饋送區塊(例如,MAC區塊)的四個通道,因此第一輸出畫素可能需要((2+Kx-1)* Ky)個週期來計算,此可為讀取第一畫素的資料所需要的週期數。在此種情況下,Kx及Ky是2D核的維度。在一些實施例中,每一額外的輸出畫素可能需要(Kx * Ky)個週期來計算,此乃因SRAM讀取可能與使用已經放置在權重暫存器中的IFM的計算重疊。在一些實施例中,為處理IFM(例如,IFM 400)的每一行,可能需要等於核減去1行的額外資料來處理IFM區段(例如,區段402)中的IFM 400行(例如,對於大小為3×3(例如,3列舉及3行)的2D核,可能需要3-1=2個額外資料行來處理IFM 400,如圖4所示)。此外,在一些實施例中,神經處理器的每一區塊(例如,MAC區塊)內的硬體可被重新排列及重新利用。
在一些實施例中,計算卷積的方法可考量在輸入特徵圖(IFM)上重複使用相同的卷積核(例如,相同的權重),且還可考量對於OFM的多個輸出值重複使用相同的IFM值。此種計算卷積的方法可為OFM的當前列的每一輸出畫素保持累加器。在此種情況下,對於卷積核的每一權重,IFM的元素(例如,激活)被
加載至權重暫存器中。將IFM的加載元素乘以卷積核的當前權重,並加至累加器。接下來,將加載元素移位以乘以核的下一權重,且將來自IFM的額外元素加載至權重暫存器以乘以卷積核的下一權重。結果,乘以卷積核的相同權重的IFM的多個值被並行乘以所述相同權重,由此增加每一時鐘週期完成的運算的數目,且先前加載的值被重新用於乘以下一權重,由此減少傳輸的資料量。
圖5A至圖5W示出自2D IFM及權重的2D核確定2D OFM的示例性方法。
在圖5A至圖5W的示例性實施例中,核504中的權重可被放置在快取529中,同時IFM被讀取至權重暫存器528(例如,圖1至圖2的權重緩衝器116)中。
圖5A至圖5M詳細示出關於OFM 508的第一列506的確定(例如,具有步幅一且沒有填充的3×3卷積的實例)。
圖5B示出圖5A的步驟510的細節。如圖5B所示,在510處,四個讀取通道527(例如,分段的IFM遞送組構)將來自SRAM(例如,包括四個SRAM塊的SRAM庫組)的IFM 502矩陣的第一列的位置[0,0]、[0,2]、[0,4]及[0,6]的資料加載至來自多個(例如,八個)權重暫存器528(例如,圖1至圖2的權重緩衝器116)中的四個權重暫存器中。
接下來,如圖5C所示,四個讀取通道527將來自SRAM的IFM 502矩陣的第一列的位置[0,1]、[0,3]、[0,5]及[0,7]的資料
加載至八個權重暫存器528中的其他四個權重暫存器中。快取529(例如,鋸齒形快取)在核504的位置[0,0]處廣播權重值W0。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[0,0]至[0,7]中的IFM值與W0相乘,並將結果加載至第一組累加器(例如,圖2的累加器暫存器122)中。
圖5D示出步驟512的細節。如圖5D所示,一個讀取通道將來自SRAM的IFM 502矩陣的第一列的位置[0,8]的資料加載至IFM 502矩陣的第八行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[0,0]至[0,7]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5D所示。快取529在權重矩陣504的位置[0,1]處廣播權重值W1。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[0,1]至[0,8]中的IFM值與W1相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。
圖5E示出步驟514的細節。如圖5E所示,一個讀取通道將來自SRAM的IFM 502矩陣的第一列的位置[0,9]的資料加載至IFM 502矩陣的第九行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[0,1]至[0,8]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5E所示。快取529可在位置[0,2]處廣播值W2。每一行(例如,MAC區塊的
PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[0,2]至[0,9]中的IFM值與W2相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。在此階段,處理器已完成卷積的第一組計算,以確定OFM 508。來自IFM 502矩陣的第一列的位置[0,0]至[0,9]的資料可能不用於下面的計算(例如,可能不需要用於下一計算),且因此可不保存在權重暫存器528中(例如,來自IFM 502的第一列的資料可能自權重暫存器528中被丟棄或在權重暫存器528中被覆寫)。
圖5F至圖5G示出步驟516的細節。如圖5F所示,四個讀取通道527(例如,分段的IFM遞送組構)將來自SRAM(例如,包括四個SRAM塊的SRAM庫組)的IFM 502矩陣的第二列的位置[1,0]、[1,2]、[1,4]及[1,6]的資料加載至來自多個(例如,八個)權重暫存器528(例如,圖1至圖2的權重緩衝器116)中的四個權重暫存器中。接下來,如圖5G所示,四個讀取通道527將來自SRAM的IFM 502矩陣的第二列的位置[1,1]、[1,3]、[1,5]及[1,7]的資料加載至八個權重暫存器528中的其他四個權重暫存器中。快取529(例如,鋸齒形快取)在權重矩陣(或核)504的位置[1,0]處廣播權重值W3。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[1,0]至[1,7]中的IFM值與W3相乘,並將結果加載至第一組累加器(例如,圖2的累加器暫存器122)中。
圖5H示出步驟518的細節。如圖5H所示,一個讀取通
道將來自SRAM的IFM 502矩陣的第二列的位置[1,8]的資料加載至IFM 502矩陣的第八行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[1,0]至[1,7]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5H所示。快取529在權重矩陣504的位置[1,1]處廣播權重值W4。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[1,1]至[1,8]中的IFM值與W4相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。
圖5I示出步驟520的細節。如圖5I所示,一個讀取通道將來自SRAM的IFM 502矩陣的第二列的位置[1,9]的資料加載至IFM 502矩陣的第九行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[1,1]至[1,8]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5I所示。快取529可在權重矩陣504的位置[1,2]處廣播值W5。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[1,2]至[1,9]中的IFM值與W5相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。在此階段,處理器已完成卷積的第二組計算,以確定OFM 508。來自IFM 502矩陣的第二列的位置[1,0]至[1,9]的資料可在下面的計算中使用,且因此可保存在權重暫存器528中。
圖5J至圖5K示出步驟522的細節。如圖5J所示,四個
讀取通道527(例如,分段的IFM遞送組構)將來自SRAM(例如,包括四個SRAM塊的SRAM庫組)的IFM 502矩陣的第三列的位置[2,0]、[2,2]、[2,4]及[2,6]的資料加載至來自多個(例如,八個)權重暫存器528(例如,圖1至圖2的權重緩衝器116)中的四個權重暫存器中。接下來,如圖5K所示,四個讀取通道527將來自SRAM的IFM 502矩陣的第三列的位置[2,1]、[2,3]、[2,5]及[2,7]的資料加載至八個權重暫存器528中的其他四個權重暫存器中。快取529(例如,鋸齒形快取)在權重矩陣504的位置[2,0]處廣播權重值W6。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[2,0]至[2,7]中的IFM值與W6相乘,並將結果加載至第一組累加器(例如,圖2的累加器暫存器122)中。
圖5L示出步驟524的細節。如圖5L所示,一個讀取通道將來自SRAM的IFM 502矩陣的第三列的位置[2,8]的資料加載至IFM 502矩陣的第八行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[2,0]至[2,7]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5L所示。快取529在權重矩陣504的位置[2,1]處廣播權重值W7。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[2,1]至[2,8]中的IFM值與W7相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。
圖5M示出步驟526的細節。如圖5M所示,一個讀取通道將來自SRAM的IFM 502矩陣的第三列的位置[2,9]的資料加載至IFM 502矩陣的第九行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[2,1]至[2,8]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5M所示。快取529可在權重矩陣504的位置[2,2]處廣播值W8。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[2,2]至[2,9]中的IFM值與W8相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。在此階段,處理器已完成卷積的下一組計算,以確定OFM 508。來自IFM 502矩陣的位置[2,0]至[2,9]的資料可在下面的計算中使用,且因此可保存在權重暫存器528中。
可將來自510至526的結果相加以確定OFM 508的第一列506。
圖5N至圖5W詳細示出關於OFM 508的第二列530的確定。
圖5O示出圖5N的步驟532的細節。如圖5O所示,在532處,四個讀取通道527(例如,分段的IFM遞送組構)將來自SRAM(例如,包括四個SRAM塊的SRAM庫組)的IFM 502矩陣的第四列的位置[3,0]、[3,2]、[3,4]及[3,6]的資料加載至來自多個(例如,八個)權重暫存器528(例如,圖1至圖2的權重緩衝器116)中的四個權重暫存器中。快取529可在位置[0,0]處廣播值
W0。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[1,0]至[1,7]中的IFM值與W0相乘,且可將乘法的結果累加至第二組累加器(例如,圖2的累加器暫存器122)中,同時可將第一組累加器寫回至SRAM庫(例如,SRAM庫組)。
圖5P示出步驟534的細節。如圖5P所示,讀取通道527將來自SRAM的IFM 502矩陣的第四列的位置[3,1]、[3,3]、[3,5]及[3,7]的資料加載至八個權重暫存器528中的其他四個權重暫存器中。快取529(例如,鋸齒形快取)在權重矩陣504的位置[1,1]處廣播權重值W1。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[1,1]至[1,8]中的IFM值與W1相乘,並將結果加載至第二組累加器(例如,圖2的累加器暫存器122)中。繼續將第一組累加器寫回至SRAM庫(例如,SRAM庫組)。來自IFM 502矩陣位置[1,0]至[1,7]的資料可能不需要,且因此將被IFM 502矩陣位置[3,0]至[3,7]中的資料替換。
圖5Q示出步驟536的細節。如圖5Q所示,一個讀取通道將來自SRAM的IFM 502矩陣的位置[3,8]的資料加載至IFM 502矩陣的第八行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[3,0]至[3,7]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5Q所示。快取529在權重矩陣504的位置[0,2]處廣播權重值W2。每一行(例如,MAC
區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[1,2]至[1,9]中的IFM值與W2相乘,且可將乘法的結果累加至第二組累加器(例如,圖2的累加器暫存器122)中。來自IFM 502矩陣的位置[1,1]至[1,8]的資料可不在下面的計算中使用,且因此可被IFM 502矩陣位置[3,1]至[3,8]中的資料替換。
圖5R示出步驟538的細節。如圖5R所示,一個讀取通道將來自SRAM的IFM 502矩陣的第四列的位置[3,9]的資料加載至IFM 502矩陣的第九行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[3,1]至[3,8]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5R所示。快取529可在位置[2,0]處廣播值W3。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[2,0]至[2,7]中的IFM值與W3相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。在此階段,處理器已完成卷積的第二組計算,以確定OFM 508。來自IFM 502矩陣的位置[2,0]至[2,9]的資料可在下面的計算中使用,且因此可保存在權重暫存器528中。來自IFM 502矩陣的第二列的位置[1,2]至[1,9]的資料可不在下面的計算中使用,且因此將被IFM 502矩陣位置[3,2]至[3,9]中的資料替換。
圖5S示出步驟540的細節。如圖5S所示,四個讀取通道527(例如,分段的IFM遞送組構)將來自SRAM(例如,包括四個SRAM塊的SRAM庫組)的IFM 502矩陣的第五列的位置
[4,0]、[4,2]、[4,4]及[4,6]的資料加載至來自多個(例如,八個)權重暫存器528(例如,圖1至圖2的權重緩衝器116)中的四個權重暫存器中。快取529(例如,鋸齒形快取)在權重矩陣504的位置[1,1]處廣播權重值W4。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[2,1]至[2,8]中的IFM值與W4相乘,並將結果加載至第二組累加器(例如,圖2的累加器暫存器122)中。
圖5T示出步驟542的細節。如圖5T所示,讀取通道527將來自SRAM的IFM 502矩陣的第五列的位置[4,1]、[4,3]、[4,5]及[4,7]的資料加載至八個權重暫存器528中的其他四個權重暫存器中。快取529(例如,鋸齒形快取)在權重矩陣504的位置[1,2]處廣播權重值W5。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[2,2]至[2,9]中的IFM值與W5相乘,並將結果加載至第二組累加器(例如,圖2的累加器暫存器122)中。來自IFM 502矩陣位置[2,0]至[2,7]的資料可能不需要,且因此將被IFM 502矩陣位置[4,0]至[4,7]中的資料替換。
圖5U示出步驟544的細節。如圖5U所示,一個讀取通道將來自SRAM的IFM 502矩陣的位置[4,8]的資料加載至IFM 502矩陣的第八行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[4,0]至[4,7]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5U所示。快取529在權
重矩陣504的位置[2,0]處廣播權重值W6。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[3,0]至[3,7]中的IFM值與W6相乘,且可將乘法的結果累加至第二組累加器(例如,圖2的累加器暫存器122)中。來自IFM 502矩陣的位置[2,1]至[2,8]的資料可不在下面的計算中使用,且因此將被IFM 502矩陣位置[3,1]至[3,8]中的資料替換。
圖5V示出步驟546的細節。如圖5V所示,一個讀取通道將來自SRAM的IFM 502矩陣的第五列的位置[4,9]的資料加載至IFM 502矩陣的第九行的權重暫存器528中,同時可將在前一週期中加載的IFM值(例如,IFM 502矩陣位置[4,1]至[4,8]中的IFM值)向左移位至權重暫存器528的相鄰行,如圖5V所示。快取529可在位置[2,1]處廣播值W7。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[3,1]至[3,8]中的IFM值與W7相乘,且可將乘法的結果累加至第一組累加器(例如,圖2的累加器暫存器122)中。在此階段,處理器已完成卷積的下一組計算,以確定OFM 508。來自IFM 502矩陣的位置[3,0]至[3,9]的資料將在下面的計算中使用,且可如圖5V所示進行保存。來自位置[2,2]至[2,9]的資料可不在下面的計算中使用,且因此將被IFM 502矩陣位置[4,2]至[4,9]中的資料替換。
圖5W示出圖5N的步驟548的細節。如圖5W所示,在548處,四個讀取通道527(例如,分段的IFM遞送組構)將來自SRAM(例如,包括四個SRAM塊的SRAM庫組)的IFM 502矩
陣的位置[5,0]、[5,2]、[5,4]及[5,6]的資料加載至來自多個(例如,八個)權重暫存器528(例如,圖1至圖2的權重緩衝器116)中的四個權重暫存器中。快取529可在位置[2,2]處廣播值W8。每一行(例如,MAC區塊的PE行)中的乘法器可將加載至權重暫存器528中的IFM 502矩陣位置[3,2]至[3,9]中的IFM值與W8相乘,且可將乘法的結果累加至第二組累加器(例如,圖2的累加器暫存器122)中,且可將第二組累加器在下一週期期間寫回至SRAM庫(例如,SRAM庫組)。在一些實施例中,第一組累加器可用於累加乘法結果以開始下一週期。
可將來自532至548的結果相加以確定OFM 508的第二列530。儘管上文參考圖5N至圖5W闡述了第二列530的計算,但熟習此項技術者將理解,可使用實質上相似的運算基於IFM 502的剩餘列中的資料來計算OFM 508的剩餘列。類似地,OFM 508的與IFM 502的剩餘八行寬區段(例如,第二八行寬區段404)對應的部分可使用類似運算來計算,開始於如上參考圖5A至5M所述計算OFM 508的第一列,且如上參考圖5N至圖5W所述計算OFM 508的剩餘列。
將理解,儘管可在本文中使用用語「第一」、「第二」、「第三」等來闡述各種元件、組件、區域、層、及/或區段,但該些元件、組件、區域、層、及/或區段不應受限於該些用語。該些用語僅用於區分各個元件、組件、區域、層或區段。因此,在不背離本揭露的範圍的條件下,本文所述第一元件、組件、區域、層或
區段可被稱為第二元件、組件、區域、層或區段。
為易於說明,本文中可能使用例如「位於...之下」、「位於...下方」、「下部的」、「位於...下面」「位於...上方」、「上部的」等空間相對性用語來闡述圖中所示一個元件或特徵與另一(其他)元件或特徵的關係。應理解,此種空間相對性用語旨在囊括除了圖式中所示的定向以外,裝置在使用中或操作中的不同定向。舉例而言,若圖中所示裝置被翻轉,則被闡述為在其他元件或特徵「下方」、「之下」或「下面」的元件此時將被定向為在其他元件或特徵「上方」。因此,示例性用語「在…下方」及「在…下面」可既包含上方亦包含下方的定向。所述裝置可另外定向(例如,旋轉90度或處於其他定向),且本文中所用的空間相對性描述語應相應地進行解釋。此外,亦應理解,當將一個層稱為「位於」兩個層「之間」時,所述層可為所述兩個層之間僅有的層,抑或亦可存在一或多個中間層。
本文所用術語僅用於闡述特定實施例,而不旨在限制本揭露。本文中所使用的用語「實質上」、「約」及相似用語是作為近似值用語來使用、而並非作為程度用語來使用,並且旨在慮及此項技術中具有通常知識者將認識到的量測值或計算值的固有偏差。
除非上下文中清楚地另外指明,否則本文中所使用的單數形式「一(a及an)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是
指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。本文中所使用的用語「及/或(and/or)」包括相關所列項中一或多個項的任意及所有組合。例如「……中的至少一者(at least one of)」等表達當出現在一系列元件之前時,是修飾整個系列的元件而並非修飾所述系列中的各別元件。此外,當闡述本揭露的實施例時使用「可(may)」是指「本揭露的一或多個實施例」。此外,用語「示範性的」旨在指實例或說明。本文所用的用語「使用(use)」、「正使用(using)」、及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
應理解,當稱一元件或層位於另一元件或層「上」、「連接至」、「耦合至」或「相鄰於」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至、直接耦合至或直接相鄰於所述另一元件或層,或者可存在一或多個中間元件或層。對比之下,當稱一元件或層「直接」位於另一元件或層「上」,「直接連接至」、「直接耦合至」或「緊鄰於」另一元件或層時,則不存在中間元件或層。
本文中所述的任意數值範圍旨在包括所述範圍內所包含的具有相同數值精度的所有子範圍。例如,範圍「1.0至10.0」旨在包括介於所述最小值1.0與所述最大值10.0之間(且包括1.0及10.0)的所有子範圍,即,具有等於或大於1.0的最小值及等於
或小於10.0的最大值(例如(例如,2.4至7.6))。本文中所述任意最大數值限制旨在包括其中所包含的所有較低的數值限制,且本說明書中所述的任意最小數值限制旨在包括其中所包含的所有較高的數值限制。
在一些實施例中,本揭露的方法及系統的不同實施例的一或多個輸出可被傳輸至耦合至或具有顯示裝置的電子裝置,所述顯示裝置用於顯示本揭露的方法及系統的不同實施例的所述一或多個輸出或關於所述一或多個輸出的資訊。
本文中所述的根據本揭露實施例的電子或電氣裝置及/或任何其他相關裝置或組件可藉由利用任何合適的硬體、韌體(例如,應用特殊積體電路)、軟體、或者軟體、韌體及硬體的組合來實施。舉例而言,該些裝置的各種組件可形成於一個積體電路(integrated circuit,IC)晶片上或形成於單獨的積體電路晶片上。此外,該些裝置的各種組件可實施於可撓性印刷電路膜、載帶封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上或者形成於一個基板上。此外,該些裝置的各種組件可為在一或多個計算裝置中在一或多個處理器上運行的、執行電腦程式指令且與其他系統組件進行交互作用來實行本文所述各種功能的過程或執行緒。電腦程式指令儲存於可使用標準記憶體裝置在計算裝置中實施的記憶體(例如(舉例而言),隨機存取記憶體(random access memory,RAM))中。電腦程式指令亦可儲存於其他非暫態電腦可讀取媒體(例如(舉例而言),光碟唯讀記憶體
(compact disk read only memory,CD-ROM)、快閃驅動器等)中。此外,熟習此項技術者應認識到,在不背離本揭露示例性實施例的精神及範圍的條件下,可對各種計算裝置的功能進行組合或將所述功能整合至單個計算裝置中,或者可將特定計算裝置的功能分佈於一或多個其他計算裝置中。
儘管已在本文中具體闡述及說明於點積架構上加速二維(2D)卷積層映射的系統及方法的示範性實施例,然而諸多修改及變型將對熟習此項技術者顯而易見。因此,應理解,根據本揭露原理的於點積架構上加速二維(2D)卷積層映射的系統及方法可被實施成不同於本文中所具體闡述者。亦在以下申請專利範圍及其等效範圍中界定本揭露。
202:IFM
204:核
206:OFM向量
208:區塊
210:行
Claims (20)
- 一種實行卷積運算的方法,所述方法包括:由處理器在所述處理器的第一儲存裝置中儲存卷積核,所述卷積核的維度為x乘y,其中x是所述卷積核中的列數,且y是所述卷積核中的行數;由所述處理器在所述處理器的第二儲存裝置中儲存維度為n乘m的輸入特徵圖的元素值的第一子集,其中n是所述輸入特徵圖中的列數,且m是所述輸入特徵圖中的行數;由所述處理器實行所述輸入特徵圖的元素值的所述第一子集的每一值與所述卷積核的x * y個元素中的第一元素值的第一同時乘法;對於所述卷積核的所述x * y個元素的每一剩餘值,由所述處理器實行所述剩餘值與所述輸入特徵圖的元素值的對應子集的第二同時乘法;對於每一所述第一同時乘法及每一所述第二同時乘法,由所述處理器將每一所述第一同時乘法及每一所述第二同時乘法的結果儲存在連接至所述處理器的累加器中;以及由所述處理器輸出所述累加器的(儲存)值作為輸出特徵圖(OFM)的第一列。
- 如請求項1所述的方法,其中輸出所述累加器的所述值作為所述輸出特徵圖的所述第一列包括:由所述處理器將儲存在所述累加器中的多個同時乘法的結果相加,以產生所述輸出 特徵圖的所述第一列。
- 如請求項1所述的方法,其中所述第一儲存裝置包括連接至所述處理器的快取記憶體,且其中所述第二儲存裝置包括位於所述處理器的乘法累加(MAC)區塊的處理元件(PE)中的多個暫存器,其中所述多個暫存器是9位元暫存器。
- 如請求項3所述的方法,更包括:由所述處理器將元素值的所述第一子集在所述多個暫存器中向左移位一個暫存器。
- 如請求項1所述的方法,更包括:由所述處理器將所述卷積核的所述x * y個元素中的所述第一元素值廣播至所述第二儲存裝置;及由所述處理器將所述卷積核的所述x * y個元素中的第二元素值廣播至所述第二儲存裝置,其中所述輸入特徵圖的元素值的所述第一子集包括所述輸入特徵圖的第一列的第一行至第p行中的值,且所述輸入特徵圖的元素值的第二子集包括所述輸入特徵圖的第一列的第二行至第(p+1)行中的值。
- 如請求項1所述的方法,其中所述維度為x乘y的所述卷積核是權重矩陣,所述權重矩陣包括多個權重值,所述權重矩陣的所述多個權重值被儲存在連接至所述處理器的快取記憶體中,且其中所述維度為n乘m的所述輸入特徵圖包括多個激活值。
- 如請求項6所述的方法,其中所述處理器包括多個乘法累加(MAC)區塊,每一乘法累加區塊包括處理元件(PE)陣列,所述處理元件陣列包括多個處理元件列及多個處理元件行,所述多個處理元件行中的每一處理元件行包括多個處理元件及加法器樹。
- 如請求項7所述的方法,其中每一乘法累加區塊更包括快取記憶體,所述快取記憶體包括多個平行的激活通路,每一激活通路對應於所述多個乘法累加區塊中的一者的所述處理元件陣列的一列。
- 如請求項7所述的方法,其中所述多個處理元件中的每一處理元件包括:多個暫存器,被配置成儲存所述輸入特徵圖的所述多個激活值;乘法器,連接至所述多個暫存器,且被配置成將來自所述輸入特徵圖的激活乘以來自所述快取記憶體的權重值;以及處理元件累加器,連接至所述乘法器,且被配置成將來自所述乘法器的輸出與來自所述多個暫存器的值相加,並將結果儲存在所述多個暫存器中。
- 如請求項7所述的方法,其中每一乘法累加區塊中的所述處理元件陣列包括八個處理元件行,其中所述每一乘法累加區塊的所述八個處理元件行中的每一處理元件行包括十六個處理元件。
- 一種實行卷積運算的系統,所述系統包括:記憶體及與所述記憶體通訊的處理器,其中所述處理器被配 置成:在所述處理器的第一儲存裝置中儲存維度為x乘y的卷積核,其中x是所述卷積核中的列數,且y是所述卷積核中的行數;在連接至所述處理器的第二儲存裝置中儲存維度為n乘m的輸入特徵圖的元素值的第一子集,其中n是所述輸入特徵圖中的列數,且m是所述輸入特徵圖中的行數;實行所述輸入特徵圖的元素值的所述第一子集的每一值與所述卷積核的x * y個元素中的第一元素值的第一同時乘法;對於所述卷積核的所述x * y個元素的每一剩餘值,實行所述剩餘值與所述輸入特徵圖的元素值的對應子集的第二同時乘法;對於每一所述第一同時乘法及每一所述第二同時乘法,將每一所述第一同時乘法及每一所述第二同時乘法的結果儲存在連接至所述處理器的累加器中;以及輸出所述累加器的(儲存的)值作為輸出特徵圖(OFM)的第一列。
- 如請求項11所述的系統,其中所述處理器更被配置成藉由將儲存在所述累加器中的多個同時乘法的結果相加以產生所述輸出特徵圖的所述第一列,來輸出所述累加器的所述值作為所述輸出特徵圖的所述第一列。
- 如請求項11所述的系統,其中所述第一儲存裝 置包括連接至所述處理器的快取記憶體,且其中所述第二儲存裝置包括位於所述處理器的乘法累加(MAC)區塊的處理元件(PE)中的多個暫存器,其中所述多個暫存器是9位元暫存器。
- 如請求項13所述的系統,其中所述處理器更被配置成:將元素值的所述第一子集在所述多個暫存器中向左移位一個暫存器。
- 如請求項11所述的系統,其中所述處理器更被配置成:將所述卷積核的x * y個元素中的所述第一元素值廣播至所述第二儲存裝置;且將所述卷積核的所述x * y個元素中的第二元素值廣播至所述第二儲存裝置。
- 如請求項11所述的系統,其中所述維度為x乘y的所述卷積核是權重矩陣,所述權重矩陣包括多個權重值,所述權重矩陣的所述多個權重值被儲存在連接至所述處理器的快取記憶體中,且其中所述維度為n乘m的所述輸入特徵圖包括多個激活值,其中所述處理器包括多個乘法累加(MAC)區塊,每一乘法累加區塊包括處理元件(PE)陣列,所述處理元件陣列包括多個處理元件列及多個處理元件行,所述多個處理元件行中的每一處理元件行包括多個處理元件及加法器樹。
- 如請求項16所述的系統,其中每一乘法累加區 塊更包括快取記憶體,所述快取記憶體包括多個平行的激活通路,每一激活通路對應於所述多個乘法累加區塊中的一者的所述處理元件陣列的一列,其中每一乘法累加區塊中的所述處理元件陣列包括八個處理元件行,其中所述每一乘法累加區塊的所述八個處理元件行中的每一處理元件行包括十六個處理元件。
- 如請求項16所述的系統,其中所述多個處理元件中的每一處理元件包括:多個暫存器,被配置成儲存所述輸入特徵圖的所述多個激活值;乘法器,連接至所述多個暫存器,且被配置成將來自所述輸入特徵圖的激活乘以來自所述快取記憶體的權重值;以及處理元件累加器,連接至所述乘法器,且被配置成將來自所述乘法器的輸出與來自所述多個暫存器的值相加,並將結果儲存在所述多個暫存器中。
- 一種實行卷積運算的方法,包括:由處理器實行將第一矩陣的元素值的第一子集的每一值與第二矩陣的x * y個元素中的第一元素值相乘的第一同時乘法;對於所述第二矩陣的所述x * y個元素的每一剩餘值,由所述處理器實行所述剩餘值與所述第一矩陣的元素值的對應子集的第二同時乘法;對於每一所述第一同時乘法及每一所述第二同時乘法,由所述處理器將每一所述第一同時乘法及每一所述第二同時乘法的結果儲存在連接至所述處理器的累加器中;及由所述處理器輸出所述累加器的值作為輸出特徵圖(OFM) 的第一列。
- 如請求項19所述的方法,更包括:由所述處理器將所述第二矩陣儲存在所述處理器的第一儲存裝置中,所述第二矩陣具有x乘y的維度,其中x是所述第二矩陣中的列數,且y是所述第二矩陣中的行數;由所述處理器在連接至所述處理器的第二儲存裝置中儲存維度為n乘m的所述第一矩陣的元素值的所述第一子集,其中n是所述第一矩陣中的列數,且m是所述第一矩陣中的行數;及由所述處理器在所述第二儲存裝置中儲存所述第一矩陣的元素值的第二子集,其中所述第一矩陣的元素值的所述第一子集包括所述第一矩陣的第一列的第一行至第p行中的值,所述第一矩陣的元素值的所述第二子集包括所述第一矩陣的第一列的第二行至第(p+1)行中的值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962947423P | 2019-12-12 | 2019-12-12 | |
US62/947,423 | 2019-12-12 | ||
US16/900,819 | 2020-06-12 | ||
US16/900,819 US20210182025A1 (en) | 2019-12-12 | 2020-06-12 | Accelerating 2d convolutional layer mapping on a dot product architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202123093A TW202123093A (zh) | 2021-06-16 |
TWI832006B true TWI832006B (zh) | 2024-02-11 |
Family
ID=72422119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109132495A TWI832006B (zh) | 2019-12-12 | 2020-09-21 | 實行卷積運算的系統及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210182025A1 (zh) |
EP (1) | EP3836028A1 (zh) |
KR (1) | KR20210074992A (zh) |
CN (1) | CN112989267A (zh) |
TW (1) | TWI832006B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102414583B1 (ko) * | 2017-03-23 | 2022-06-29 | 삼성전자주식회사 | 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법 |
US11726950B2 (en) * | 2019-09-28 | 2023-08-15 | Intel Corporation | Compute near memory convolution accelerator |
US11755683B2 (en) | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
US11462003B2 (en) * | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11797830B2 (en) | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11144615B1 (en) * | 2020-04-14 | 2021-10-12 | Apple Inc. | Circuit for performing pooling operation in neural processor |
US20210406654A1 (en) * | 2020-06-29 | 2021-12-30 | Alibaba Group Holding Limited | Artificial neural network with sparse weights |
TWI798972B (zh) * | 2021-12-01 | 2023-04-11 | 大陸商星宸科技股份有限公司 | 智慧處理器裝置與降低記憶體頻寬的方法 |
US20230244448A1 (en) * | 2022-02-01 | 2023-08-03 | Microsoft Technology Licensing, Llc | Multiply-accumulator array circuit with activation cache |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5285403A (en) * | 1989-12-29 | 1994-02-08 | U.S. Philips Corporation | Arithmetic processing module to be associated with a microprocessor central processing unit |
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作*** |
US20180181858A1 (en) * | 2016-12-22 | 2018-06-28 | Samsung Electronics Co., Ltd. | Convolutional neural network (cnn) processing method and apparatus |
CN108615036A (zh) * | 2018-05-09 | 2018-10-02 | 中国科学技术大学 | 一种基于卷积注意力网络的自然场景文本识别方法 |
US20190130250A1 (en) * | 2017-10-30 | 2019-05-02 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing convolution |
US20190138898A1 (en) * | 2017-11-07 | 2019-05-09 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing deconvolution |
CN110110707A (zh) * | 2019-05-24 | 2019-08-09 | 苏州闪驰数控***集成有限公司 | 人工智能cnn、lstm神经网络动态识别*** |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9805303B2 (en) * | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
CN106844294B (zh) * | 2016-12-29 | 2019-05-03 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
US11803377B2 (en) * | 2017-09-08 | 2023-10-31 | Oracle International Corporation | Efficient direct convolution using SIMD instructions |
JP7490572B2 (ja) * | 2018-05-08 | 2024-05-27 | 三星電子株式会社 | ニューラル・ネットワーク処理要素 |
US20200210517A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US20210011732A1 (en) * | 2019-07-09 | 2021-01-14 | MemryX Inc. | Matrix Data Reuse Techniques in Processing Systems |
-
2020
- 2020-06-12 US US16/900,819 patent/US20210182025A1/en active Pending
- 2020-09-01 KR KR1020200111173A patent/KR20210074992A/ko active Search and Examination
- 2020-09-07 EP EP20194787.6A patent/EP3836028A1/en active Pending
- 2020-09-21 TW TW109132495A patent/TWI832006B/zh active
- 2020-10-28 CN CN202011169398.3A patent/CN112989267A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5285403A (en) * | 1989-12-29 | 1994-02-08 | U.S. Philips Corporation | Arithmetic processing module to be associated with a microprocessor central processing unit |
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作*** |
US20180181858A1 (en) * | 2016-12-22 | 2018-06-28 | Samsung Electronics Co., Ltd. | Convolutional neural network (cnn) processing method and apparatus |
US20190130250A1 (en) * | 2017-10-30 | 2019-05-02 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing convolution |
US20190138898A1 (en) * | 2017-11-07 | 2019-05-09 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network performing deconvolution |
CN108615036A (zh) * | 2018-05-09 | 2018-10-02 | 中国科学技术大学 | 一种基于卷积注意力网络的自然场景文本识别方法 |
CN110110707A (zh) * | 2019-05-24 | 2019-08-09 | 苏州闪驰数控***集成有限公司 | 人工智能cnn、lstm神经网络动态识别*** |
Also Published As
Publication number | Publication date |
---|---|
US20210182025A1 (en) | 2021-06-17 |
CN112989267A (zh) | 2021-06-18 |
KR20210074992A (ko) | 2021-06-22 |
EP3836028A1 (en) | 2021-06-16 |
TW202123093A (zh) | 2021-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI832006B (zh) | 實行卷積運算的系統及方法 | |
CN109992743B (zh) | 矩阵乘法器 | |
US11809514B2 (en) | Expanded kernel generation | |
JP7394104B2 (ja) | ハードウェアにおけるカーネルストライドの実行 | |
CN110050267B (zh) | 用于数据管理的***和方法 | |
US10394929B2 (en) | Adaptive execution engine for convolution computing systems | |
US10489479B1 (en) | Matrix multiplication engine | |
US10824934B2 (en) | Methods and apparatus for matrix processing in a convolutional neural network | |
US20190095776A1 (en) | Efficient data distribution for parallel processing | |
CN111476360A (zh) | 用于神经网络的Winograd变换卷积操作的装置和方法 | |
WO2019010183A1 (en) | PROCESSOR OF DEEP VISION | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN105930902A (zh) | 一种神经网络的处理方法、*** | |
KR20170133364A (ko) | 신경망 프로세서에서의 배치 프로세싱 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
US11164032B2 (en) | Method of performing data processing operation | |
Kala et al. | UniWiG: Unified winograd-GEMM architecture for accelerating CNN on FPGAs | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
CN110716751B (zh) | 高并行度计算平台、***及计算实现方法 | |
US20220171605A1 (en) | Systolic array cells with multiple accumulators | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN110765413A (zh) | 矩阵求和结构及神经网络计算平台 | |
CN111178505B (zh) | 卷积神经网络的加速方法和计算机可读存储介质 | |
CN117252241A (zh) | 执行卷积运算的计算装置、方法及相关产品 | |
KR20220157510A (ko) | 출력 사후 프로세싱을 갖는 시스톨릭 어레이 셀들 |