CN115293319A - 脉动阵列以及包括脉动阵列的加速器 - Google Patents
脉动阵列以及包括脉动阵列的加速器 Download PDFInfo
- Publication number
- CN115293319A CN115293319A CN202210189101.2A CN202210189101A CN115293319A CN 115293319 A CN115293319 A CN 115293319A CN 202210189101 A CN202210189101 A CN 202210189101A CN 115293319 A CN115293319 A CN 115293319A
- Authority
- CN
- China
- Prior art keywords
- processing elements
- partial
- sub
- matrix
- column
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 claims abstract description 131
- 239000013598 vector Substances 0.000 claims abstract description 98
- 238000003491 array Methods 0.000 claims abstract description 67
- 238000009825 accumulation Methods 0.000 claims description 151
- 230000004044 response Effects 0.000 claims description 16
- 230000003111 delayed effect Effects 0.000 claims description 14
- 101100136063 Mycobacterium tuberculosis (strain ATCC 25618 / H37Rv) PE11 gene Proteins 0.000 description 31
- 101000612837 Mus musculus Tetraspanin-7 Proteins 0.000 description 23
- 101100136064 Mycobacterium tuberculosis (strain ATCC 25618 / H37Rv) PE13 gene Proteins 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- -1 PE14 Proteins 0.000 description 12
- 101150087801 PE23 gene Proteins 0.000 description 9
- FPIPGXGPPPQFEQ-OVSJKPMPSA-N all-trans-retinol Chemical compound OC\C=C(/C)\C=C\C=C(/C)\C=C\C1=C(C)CCCC1(C)C FPIPGXGPPPQFEQ-OVSJKPMPSA-N 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 239000011717 all-trans-retinol Substances 0.000 description 2
- 235000019169 all-trans-retinol Nutrition 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000000034 method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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/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/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
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
公开了一种脉动阵列以及包括脉动阵列的加速器。所述脉动阵列可以包括以n×n矩阵设置的n×n个处理元件(n是等于或大于至少4的整数),其中,所述n×n个处理元件对第一输入n×n矩阵的行向量的第一输入数据和第一权重n×n矩阵的列向量的第一权重数据进行第一卷积运算,以生成n个第一输出数据,或者通过划分n×n个处理元件而构成的至少k个部分脉动阵列(k是等于或大于至少4的整数)中的每一者包括以m×m矩阵(m为小于n并且等于或大于2的整数)设置的m×m个子处理元件。
Description
相关申请的交叉引用
本申请基于并要求于2021年5月3日在韩国知识产权局提交的韩国专利申请No.10-2021-0057124的优先权,所述韩国专利申请的公开内容通过引用全部包含于此。
技术领域
本公开涉及脉动阵列(systolic array)以及包括脉动阵列的加速器。
背景技术
包括脉动阵列的加速器用于执行基于卷积神经网络(CNN)的运算,诸如,卷积运算。脉动阵列可以包括以矩阵设置的多个处理元件。例如,脉动阵列可以包括多个硬件结构,多个硬件结构包括以矩阵布置的数据处理单元(DPU)。通常,脉动阵列的矩阵的大小可以固定以执行卷积运算。
发明内容
本公开示例性实施例提供了一种能够通过可变地重新配置脉动阵列的矩阵的大小来执行卷积运算的脉动阵列以及包括脉动阵列的加速器。
本公开不限于上述目的,本领域技术人员将基于以下对本公开的描述清楚地理解其他未提及的目的。
根据本公开的一方面,提供一种脉动阵列,包括多个处理元件,所述多个处理元件以n×n矩阵被设置,所述多个处理元件被配置为执行以下操作:对第一输入n×n矩阵的行向量的第一输入数据和第一权重n×n矩阵的列向量的第一权重数据进行第一卷积运算,以生成n个第一输出数据,或者将所述多个处理元件划分为k个部分脉动阵列,所述k个部分脉动阵列中的每一者包括以m×m矩阵设置的多个子处理元件,和对k个第二输入m×m矩阵的行向量的第二输入数据和k个第二权重m×m矩阵的列向量的第二权重数据执行第二卷积运算,以生成m个第二输出数据,每个所述第二输入m×m矩阵对应所述k个部分脉动阵列之一,每个所述第二权重m×m矩阵对应所述k个部分脉动阵列之一,其中,n是大于或等于4的整数,其中,k是大于或等于4的整数,并且其中,m为小于n的整数,并且m大于或等于2。
根据本公开的另一方面,提供一种加速器,包括脉动阵列、累加器、输入数据生成器、以及权重数据生成器;所述脉动阵列包括以n×n矩阵设置的多个处理元件,所述多个处理元件被配置为执行以下操作:响应于控制信号,对第一输入n×n矩阵的n个行向量的第一输入数据和第一权重n×n矩阵的n个列向量的第一权重数据进行第一卷积运算,以生成n个第一输出数据,或者将所述多个处理元件划分为k个部分脉动阵列,所述k个部分脉动阵列中的每一者包括以m×m矩阵设置的多个子处理元件,和对k个第二输入m×m矩阵的行向量的第二输入数据和k个第二权重m×m矩阵的列向量的第二权重数据执行第二卷积运算,以生成m个第二输出数据,每个所述第二输入m×m矩阵对应所述k个部分脉动阵列之一,每个所述第二权重m×m矩阵对应所述k个部分脉动阵列之一,其中,n为大于或等于4的整数,其中,k为大于或等于4的整数,其中,m为小于n的整数,并且m大于或等于2;所述累加器被配置为:响应于所述控制信号,累加所述n个第一输出数据以生成第一卷积结果数据,或者累加从所述k个部分脉动阵列中的每一者生成的所述m个第二输出数据,以生成k个第二卷积结果数据;所述输入数据生成器被配置为:响应于所述控制信号,生成所述第一输入n×n矩阵的所述n个行向量的所述第一输入数据,或生成所述k个第二输入m×m矩阵中的每一者的m个行向量的所述第二输入数据;所述权重数据生成器被配置为:响应于所述控制信号,生成所述第一权重n×n矩阵的所述n个列向量的所述第一权重数据,或者生成所述k个第二权重m×m矩阵中的每一者的m个列向量的所述第二权重数据。
附图说明
图1是根据本公开示例实施例的加速器的框图。
图2是示出根据本公开示例实施例的处理元件的结构的框图。
图3是示出根据本公开示例实施例的第一输入矩阵、第一权重矩阵、处理元件的第一部分累加结果和脉动阵列的第一输出数据的图。
图4是示出根据本公开示例实施例的第一输入数据和第一权重数据的输入序列以及脉动阵列的第一输出数据的输出序列的图。
图5A至图5D是示出根据本公开示例实施例的脉动阵列的第一卷积运算的图。
图6A至图6D是示出根据本公开示例实施例的第二输入矩阵、第二权重矩阵、处理元件的第四部分累加结果以及部分脉动阵列的第二输出数据的图。
图7是示出根据本公开示例实施例的第二输入数据和第二权重数据的输入序列以及部分脉动阵列的第二输出数据的输出序列的图。
图8A至图8D是示出根据本公开示例实施例的部分脉动阵列的第二卷积运算的图。
具体实施方式
在下文中,将参照附图描述根据本公开实施例的脉动阵列和包括该脉动阵列的加速器。
图1是根据本公开示例实施例的加速器的框图。加速器100可以包括脉动阵列10、控制器12、权重数据生成器14、输入数据生成器16和累加器18。脉动阵列10可以包括以矩阵(例如,4×4矩阵)布置的16个处理元件PE11至PE44。脉动阵列10可以分为四个部分脉动阵列10-2、10-4、10-6和10-8,并且四个部分脉动阵列10-2、10-4、10-6和10-8各自可以包括均以2×2矩阵布置的四个处理元件PE11、PE12、PE21和PE22,PE13、PE14、PE23和PE24,PE31、PE32、PE41和PE42,以及PE33、PE34、PE43和PE44。根据各种示例实施例,脉动阵列可以包括多个硬件结构,这些硬件结构包括以矩阵布置的数据处理单元(DPU)。例如,处理元件可以是硬件电子部件和/或电子电路。
将描述图1中所示的每个块的功能。
响应于脉动阵列控制信号scon,脉动阵列10可以对第一输入4×4矩阵A的行向量的第一输入数据A1至A4以及第一权重4×4矩阵B的列向量的第一权重数据B1至B4执行第一卷积运算,以生成四个第一输出数据O1至O4,或者四个部分脉动阵列10-2、10-4、10-6和10-8可以对四个第二输入2×2矩阵C、F、I和L的行向量的第二输入数据C1和C2、F1和F2、I1和I2、L1和L2以及第二权重2×2矩阵D、G、J和M的行向量的第二权重数据D1和D2、G1和G2、J1和J2、M1和M2执行第二卷积运算,以分别生成输出数据P11和P21、P31和P41、P12和P22、以及P32和P42。
脉动阵列10可以接收第一输入数据A1至A4和第一权重数据B1至B4,16个处理元件PE11至PE44可以执行第一卷积运算以生成四个第一输出数据O1至O4。
在第一卷积运算期间,在4×4处理元件PE11至PE44当中,设置在第一列中的处理元件PE11、PE21、PE31和PE41可以分别接收第一输入矩阵A的四个行向量的第一输入数据A1、A2、A3和A4,设置在第一行中的处理元件PE11、PE12、PE13和PE14可以分别接收第一权重矩阵B的列向量的第一权重数据B1、B2、B3和B4,除了设置在第一列中的处理元件PE11、PE21、PE31和PE41之外的处理元件可以分别接收通过设置在左侧的前端处理元件施加的第一输入数据A1、A2、A3和A4,除了设置在第一行中的处理元件PE11、PE12、PE13和PE14之外的处理元件可以分别接收通过设置在上侧(例如,上游侧)的前端处理元件施加的第一权重数据B1、B2、B3、B4。此外,4×4的处理元件PE11至PE44可以分别将第一输入数据A1、A2、A3、A4与第一权重数据B1、B2、B3、B4相乘以获得第一相乘结果,可以累加第一相乘结果以获得第一部分累加结果,可以将第一部分累加结果与从设置在上侧的前端处理元件发送的第二部分累加结果相加以获得第三部分累加结果,并且可以向设置在下侧(即,下游侧)的后端处理元件发送第三部分累加结果。
部分脉动阵列10-2可以接收第二输入数据C1和C2以及第二权重数据D1和D2,并且四个处理元件PE11、PE12、PE21和PE22可以执行第二卷积运算以生成两个第二输出数据P11和P21。部分脉动阵列10-4可以接收第二输入数据F1和F2以及第二权重数据G1和G2,并且四个处理元件PE13、PE14、PE23和PE24可以执行第二卷积运算以生成两个第二输出数据P31和P41。部分脉动阵列10-6可以接收第二输入数据I1和I2以及第二权重数据J1和J2,并且四个处理元件PE31、PE32、PE41和PE42可以执行第二卷积运算以生成两个第二输出数据P12和P22。部分脉动阵列10-8可以接收第二输入数据L1和L2以及第二权重数据M1和M2,并且四个处理元件PE33、PE34、PE43和PE44可以执行第二卷积运算以生成两个第二输出数据P32和P42。
作为示例,在第二卷积运算期间,在部分脉动阵列10-2、10-4、10-6和10-8当中,在部分脉动阵列10-4和10-8的2×2处理元件PE13、PE14、PE23和PE24以及PE33、PE34、PE43和PE44的第一列中设置的处理元件PE13和PE23以及PE33和PE43(不包括设置在4×4处理元件PE11至PE44的第一列中的四个处理元件PE11、PE21、PE31和PE41)可以不分别接收通过设置在左侧的前端处理元件发送的第二输入数据C1和C2以及I1和I2,而是可以分别接收第二输入2×2矩阵F和L的行向量的第二输入数据F1和F2以及L1和L2。在部分脉动阵列10-2、10-4、10-6和10-8当中,在部分脉动阵列10-6和10-8的2×2处理元件PE31、PE32、PE41和PE42以及PE33、PE34、PE43和PE44的第一行中设置的处理元件PE31和PE32以及PE33和PE43(不包括设置在4×4处理元件PE11至PE44的第一行中的四个处理元件PE11、PE12、PE13和PE14)可以不分别接收通过设置在上侧的前端处理元件发送的第二权重数据D1和D2以及G1和G2,而是可以分别接收第二权重2×2矩阵J和M的列向量的第二权重数据J1和J2以及M1和M2。在部分脉动阵列10-2、10-4、10-6和10-8的2×2处理元件PE11至PE22、PE13至PE24、PE31至PE42以及PE33至PE44当中,除了设置在第一列中的处理元件PE11和PE21、PE13和PE23、PE31和PE41、以及PE33和PE43之外的处理元件可以分别接收通过设置在左侧的前端处理元件施加的第二输入数据C1和C2、F1和F2、I1和I2、以及L1和L2。在部分脉动阵列10-2、10-4、10-6和10-8的2×2处理元件PE11至PE22、PE13至PE24、PE31至PE42、以及PE33至PE44当中,除了设置在第一行中的处理元件PE11和PE12、PE13和PE14、PE31和PE32、以及PE33和PE34之外的处理元件可以分别接收通过设置在上侧的前端处理元件施加的第二权重数据D1和D2、G1和G2、J1和J2、以及M1和M2。部分脉动阵列10-2、10-4、10-6和10-8的2×2处理元件可以分别将第二输入数据C1和C2、F1和F2、I1和I2、L1和L2与第二权重数据D1和D2、G1和G2、J1和J2、M1和M2相乘以获得第二相乘结果,可以累加第二相乘结果以获得第四部分累加结果,可以将第四部分累加结果和从设置在上侧的前端处理元件发送的第五部分累加结果进行累加以获得第六部分累加结果,并且可以向设置在下侧的后端处理元件发送第六部分累加结果,或者可以不发送第六部分累加结果。
作为另一示例,在第二卷积运算期间,第二权重矩阵D、G、J和M的第二权重数据D1和D2、G1和G2、J1和J2、以及M1和M2可以分别预先存储在部分脉动阵列10-2、10-4、10-6和10-8的2×2处理元件PE11至PE22、PE13至PE24、PE31至PE42以及PE33至PE44中。在这种情况下,与图1所示的不同,在部分脉动阵列10-2、10-4、10-6和10-8当中,在部分脉动阵列10-6和10-8的2×2处理元件PE31至PE42以及PE33至PE44的第一行中设置的处理元件PE31和PE32以及PE33和PE34(不包括设置在4×4处理元件PE11至PE44的第一行中的四个处理元件PE11、PE12、PE13和PE14)可以分别接收通过设置在上侧的前端处理元件发送的第二权重数据J1和J2以及M1和M2。也就是说,可以应用第二权重矩阵D和G的第二权重数据D1和D2以及G1和G2,然后可以应用第二权重矩阵J和M的第二权重数据J1和J2以及M1和M2。
响应于命令信号COM,控制器12可以生成脉动阵列控制信号scon、输入数据控制信号icon、权重数据控制信号wcon和累加器控制信号acon。例如,脉动阵列控制信号scon、输入数据控制信号icon和权重数据控制信号wcon可以是与权重矩阵的大小相关的控制信号。
权重数据生成器14可以存储从外部施加的权重数据WDATA,并且可以响应于权重数据控制信号wcon生成第一权重数据B1至B4、或者第二权重数据D1和D2、G1和G2、J1和J2以及M1和M2。权重数据生成器14可以在权重矩阵的大小为4×4的情况下生成第一权重数据B1至B4,并且可以在权重矩阵的大小为2×2的情况下生成第二权重数据D1和D2、G1和G2、J1和J2、以及M1和M2。作为实施例,权重数据生成器14可以是存储器。存储器可以是动态随机存取存储器(DRAM)。
输入数据生成器16可以存储从外部施加的输入数据IDATA,并且可以响应于输入数据控制信号icon生成第一输入数据A1至A4、或者第二输入数据C1和C2、I1和I2、F1和F2以及L1和L2。输入数据生成器16可以在输入矩阵的大小为4×4的情况下生成第一输入数据A1至A4,并且可以在输入矩阵的大小为2×2的情况下生成第二输入数据C1和C2、I1和I2、F1和F2、以及L1和L2。作为实施例,输入数据生成器16可以是存储器。权重数据生成器14和输入数据生成器16可以被配置为单个存储器。存储器可以是DRAM。
响应于累加器控制信号acon,累加器18可以累加第一输出数据O1至O4以生成第一卷积结果数据O,或者可以累加第二输出数据P11和P21、P12和P22、P31和P41、以及P32和P42以生成四个第二卷积结果数据P1、P2、P3和P4。尽管在图1所示的实施例中,脉动阵列10被示出为以4×4矩阵配置,但是脉动阵列10可以以n×m矩阵配置(n和m中的每一者是等于或大于5的整数,并且n和m彼此相同或不同)。此外,虽然示出了将脉动阵列10划分为被配置为执行第二卷积运算的四个部分脉动阵列10-2、10-4、10-6和10-8的结构,但是脉动阵列10可以划分为被配置为执行第二卷积运算的多于四个的部分脉动阵列。
图2是示出根据本公开示例实施例的处理元件的结构的框图。处理元件200可以包括:复用器(MUX)52和54,寄存器(R)56、58和64,乘法器(MUL)60,部分累加器(PACC)62,以及解复用器(DEMUX)66。复用器52和54以及解复用器66均可以是选择器。
将参照图1和图2描述图2中所示的每个块的功能。
响应于脉动阵列控制信号scon,复用器52可以在第一卷积运算期间选择和输出施加到第一端子S1的第一输入数据V,并且可以在第二卷积运算期间选择和输出施加到第二端子S2的第二输入数据W。根据示例实施例,在第一卷积运算中,输入数据V可以是从输入数据生成器16输出的第一输入数据A1、A2、A3和A4,或者通过设置在左侧的前端处理元件发送的输入数据。根据示例实施例,在第二卷积运算中,输入数据W可以是从输入数据生成器16输出的第二输入数据C1和C2、I1和I2、F1和F2以及L1和L2,或者通过设置在左侧的前端处理元件发送的输入数据。
作为示例,除了图1中所示的设置在第三列中的处理元件PE13、PE23、PE33和PE43的复用器52之外,其他处理元件的复用器52的第一端子S1和第二端子S2可以相互连接。作为另一示例,除了图1中所示的设置在第三列中的处理元件PE13、PE23、PE33和PE43之外的每个处理元件可以不包括复用器52。
响应于脉动阵列控制信号scon,复用器54可以在第一卷积运算期间选择和输出施加到第一端子的第一权重数据X,并且可以在第二卷积运算期间选择和输出施加到第二端子S2的第二权重数据Y。根据示例实施例,在第一卷积运算中,第一权重数据X可以是从权重数据生成器14输出的第一权重数据B1、B2、B3和B4,或者通过设置在上游方向中的前端处理元件发送的权重数据。根据示例实施例,权重数据Y可以是从权重数据生成器14输出的第二权重数据D1和D2、J1和J2、G1和G2以及M1和M2,或者通过设置在上游方向中的前端处理元件发送的第二权重数据。
作为示例,除了图1中所示的设置在第三行中的处理元件PE31、PE32、PE33和PE34的复用器54之外,其他处理元件的复用器54的第一端子S1和第二端子S2可以相互连接。作为另一示例,除了图1中所示的设置在第三行中的处理元件PE31、PE32、PE33和PE34之外的每个处理元件可以不包括复用器54。作为又一示例,在应用第二权重数据D1和D2以及G1和G2然后应用第二权重数据J1和J2以及M1和M2的情况下,如上所述,各处理元件PE11至PE44可以不包括复用器54。另外,在第二权重数据存储在所有处理元件PE11至PE44中的情况下,权重数据可以不施加到寄存器58。
寄存器56可以存储从复用器52输出的输入数据。存储的输入数据可以被发送到设置在下侧的后端处理元件。
寄存器58可以存储从复用器54输出的权重数据。存储的权重数据可以被发送到设置在下侧的后端处理元件。
乘法器60可以在第一卷积运算期间将从寄存器56输出的第一输入数据与从寄存器58输出的第一权重数据相乘以生成第一相乘结果,并且可以在第二卷积运算期间将从寄存器56输出的第二输入数据与从寄存器58输出的第二权重数据相乘以生成第二相乘结果。
部分累加器62可以在第一卷积运算期间累加从乘法器60输出的第一相乘结果以生成第一部分累加结果,并且可以将第一部分累加结果和从设置在上侧的前端处理元件发送的第二部分累加结果Z进行累加以获得第三部分累加结果,并且可以在第二卷积运算期间累加从乘法器60输出的第二相乘结果以生成第四部分累加结果,并且可以将第四部分累加结果和第五部分累加结果Z进行累加以获得第六部分累加结果。
寄存器64可以存储从部分累加器62输出的第三部分累加结果或第六部分累加结果。
响应于脉动阵列控制信号scon,解复用器66可以向设置在下侧的后端处理元件或累加器18发送从寄存器64输出的第三部分累加结果或第六部分累加结果。
图3是示出根据本公开示例实施例的第一输入矩阵、第一权重矩阵、处理元件的第一部分累加结果和脉动阵列的第一输出数据的图。
参照图3,作为4×4矩阵的第一输入矩阵A可以包括第一行向量的第一输入数据A1(a11、a12、a13和a14)、第二行向量的第一输入数据A2(a21、a22、a23和a24)、第三行向量的第一输入数据A3(a31、a32、a33和a34)以及第四行向量的第一输入数据A4(a41、a42、a43和a44)。
作为4×4矩阵的第一权重矩阵B可以包括第一列向量的第一权重数据B1(b11、b21、b31和b41)、第二列向量的第一权重数据B2(b12、b22、b32和b42)、第三列向量的第一权重数据B3(b13、b23、b33和b43)、以及第四列向量的第一权重数据B4(b14、b24、b34和b44)。
部分累加矩阵R指示处理元件PE11至PE44的第一部分累加结果R11至R44。也就是说,可以通过处理元件PE11获得第一部分累加结果R11(R11=a11×b11+a12×b21+a13×b31+a14×b41),并且第一部分累加结果R11可以生成为第三部分累加结果R11。可以通过处理元件PE21获得第一部分累加结果R21(R21=a21×b11+a22×b21+a23×b31+a24×b41),并且第一部分累加结果R11和从处理元件PE11生成的第三部分累加结果R11可以相加以生成第三部分累加结果R11+R21。可以通过处理元件PE31获得第一部分累加结果R31(R31=a31×b11+a32×b21+a33×b31+a34×b41),并且第一部分累加结果R31和从处理元件PE21生成的第三部分累加结果R11+R21可以相加以生成第三部分累加结果R11+R21+R31。可以通过处理元件PE41获得第一部分累加结果R41(R41=a41×b11+a42×b21+a43×b31+a44×b41),并且第一部分累加结果R41和从处理元件PE31生成的第三部分累加结果R11+R21+R31可以相加以生成第三部分累加结果R11+R21+R31+R41作为输出数据O1。可以使用相同的方法获得其他部分累加结果并且可以生成输出数据O2、O3和O4。
累加器18可以将输出数据O1、O2、O3和O4相加以生成第一卷积结果数据O。
图4是示出根据本公开示例实施例的第一输入数据和第一权重数据的输入序列以及脉动阵列的第一输出数据的输出序列的图。
参照图3和图4,第一行向量的第一输入数据A1(a11至a14)和第一列向量的第一权重数据B1(b11至b41)在第一周期T1开始被应用,第二行向量的第一输入数据A2(a21至a24)和第二列向量的第一权重数据B2(b12至b42)在第二周期T2开始被应用,第三行向量的第一输入数据A3(a31至a34)和第三列向量的第一权重数据B3(b13至b43)在第三周期T3开始被应用,并且第四行向量的第一输入数据A4(a41至a44)和第四列向量的第一权重数据B4(b14至b44)在第四周期T4开始被应用。从第一周期T1至第七周期T7,第一输入数据A1(a11至a14)、A2(a21至a24)、A3(a31至a34)和A4(a41至a44)可以在逐个延迟一个周期的状态下被顺序地应用,第一权重数据B1(b11至b41)、B2(b12至b42)、B3(b13至b43)和B4(b14至b44)在逐个延迟一个周期的状态下被顺序地应用。从第七周期T7至第十周期T10,第一输出数据O1、O2、O3和O4可以在逐个延迟一个周期的状态下被顺序地生成。
图5A至图5D是示出根据本公开示例实施例的脉动阵列的第一卷积运算的图。在第三周期T3、第四周期T4、第五周期T5、第六周期T6、第八周期T8和第九周期T9的操作被省略。
参照图5A,在第一周期T1,处理元件PE11可以将第一输入数据a11与第一权重数据b11相乘(a11×b11)以获得第一相乘结果r111。
参照图5B,在第二周期T2,处理元件PE11可以将第一输入数据a12与第一权重数据b21相乘(a12×b21)以获得第一相乘结果r112,并且可以将第一相乘结果r111与第一相乘结果r112相加。处理元件PE12可以将第一输入数据a11与第一权重数据b12相乘(a11×b12)以获得第一相乘结果r121。处理元件PE21可以将第一输入数据a21与第一权重数据b11相乘(a21×b11)以获得第一相乘结果r211。
参照图5C,在第七周期T7,处理元件PE41可以将第一输入数据a44与第一权重数据b41相乘(a44×b41)以获得第一相乘结果r414,可以将第一相乘结果r414与在第六周期T6获得的第一相乘结果相加以获得第一部分累加结果R41,并且可以将第一部分累加结果R41与从处理元件PE31发送的第二部分累加结果R11+R21+R31相加,以生成第三部分累加结果R11+R21+R31+R41作为输出数据O1。其他处理元件也可以通过其操作来获得图5C中所示的结果。
参照图5D,在第十周期T10,处理元件PE44可以将第一输入数据a44与第一权重数据b44相乘(a44×b44)以获得第一相乘结果r444,可以将第一相乘结果r444与在第九周期T9获得的第一相乘结果相加以获得第一部分累加结果R44,并且可以将第一部分累加结果R44与从处理元件PE34发送的第二部分累加结果R14+R24+R34相加,以生成第三部分累加结果R14+R24+R34+R44作为输出数据O4。
图6A至图6D是示出根据本公开示例实施例的第二输入矩阵、第二权重矩阵、处理元件的第四部分累加结果以及部分脉动阵列的第二输出数据的图。
参照图1和图6A,作为2×2矩阵的部分脉动阵列10-2的第二输入矩阵C可以包括第一行向量的第二输入数据C1(c11和c12)和第二行向量的第二输入数据C2(c21和c22)。作为2×2矩阵的部分脉动阵列10-2的第二权重矩阵D可以包括第一列向量的第二权重数据D1(d11和d21)和第二列向量的第二权重数据D2(d12和d22)。矩阵E指示由处理元件PE11、PE12、PE21和PE22获得的第四部分累加结果E11至E22。可以通过处理元件PE11获得第四部分累加结果E11(E11=c11×d11+c12×d21),并且第四部分累加结果E11可以生成为第六部分累加结果。可以通过处理元件PE21获得第四部分累加结果E21(E21=c21×d11+c22×d21),并且第四部分累加结果E21与第五部分累加结果E11可以相加以生成第六部分累加结果E11+E21作为第二输出数据P11。可以通过处理元件PE12获得第四部分累加结果E12(E12=c11×d12+c12×d22),并且第四部分累加结果E12可以生成为第六部分累加结果。可以通过处理元件PE22获得第四部分累加结果E22(E22=c21×d12+c22×d22),并且第四部分累加结果E22与从处理元件PE12输出的第五部分累加结果E12相加以生成第六部分累加结果E12+E22作为第二输出数据P21。
参照图1和图6B,作为2×2矩阵的部分脉动阵列10-4的第二输入矩阵F可以包括第一行向量的第二输入数据F1(f11和f12)和第二行向量的第二输入数据F2(f21和f22)。作为2×2矩阵的部分脉动阵列10-4的第二权重矩阵G可以包括第一列向量的第二权重数据G1(g11和g21)和第二列向量的第二权重数据G2(g12和g22)。矩阵H指示由处理元件PE13、PE14、PE23和PE24获得的第四部分累加结果H11至H22。可以通过处理元件PE13获得第四部分累加结果H11(H11=f11×g11+f12×g21),并且第四部分累加结果H11可以生成为第六部分累加结果。可以通过处理元件PE23获得第四部分累加结果H21(H21=f21×g11+f22×g21),并且第四部分累加结果H21与从处理元件PE13输出的第五部分累加结果H11可以相加以生成第六部分累加结果H11+H21作为第二输出数据P31。可以通过处理元件PE14获得第四部分累加结果H12(H12=f11×g12+f12×g22),并且第四部分累加结果H12可以生成为第六部分累加结果。可以通过处理元件PE24获得第四部分累加结果H22(H22=f21×g12+f22×g22),并且第四部分累加结果H22与从处理元件PE14输出的第五部分累加结果H12可以相加以生成第六部分累加结果H12+H22作为第二输出数据P41。
参照图1和图6C,作为2×2矩阵的部分脉动阵列10-6的第二输入矩阵I可以包括第一行向量的第二输入数据I1(i11和i12)和第二行向量的第二输入数据I2(i21和i22)。作为2×2矩阵的部分脉动阵列10-6的第二权重矩阵J可以包括第一列向量的第二权重数据J1(j11和j21)和第二列向量的第二权重数据J2(j12和j22)。矩阵K指示处理元件PE31、PE32、PE41和PE42获得的第四部分累加结果K11至K22。可以通过处理元件PE31获得第四部分累加结果K11(K11=i11×j11+i12×j21),并且第四部分累加结果K11可以生成为第六部分累加结果。可以通过处理元件PE41获得第四部分累加结果K21(K21=i21×j11+i22×j21),并且第四部分累加结果K21与从处理元件PE31输出的第五部分累加结果K11可以相加以生成第六部分累加结果K11+K21作为第二输出数据P12。可以通过处理元件PE32获得第四部分累加结果K12(K12=i11×j12+i12×j22),并且第四部分累加结果K12可以生成为第六部分累加结果。可以通过处理元件PE42获得第四部分累加结果K22(K22=i21×j12+i22×j22),并且第四部分累加结果K22与从处理元件PE32输出的第五部分累加结果K12可以相加以生成第六部分累加结果K12+K22作为输出数据P22。
参照图1和图6D,作为2×2矩阵的部分脉动阵列10-8的输入矩阵L可以包括第一行向量的第二输入数据L1(ll1和ll2)和第二行向量的第二输入数据L2(l21和l22)。作为2×2矩阵的部分脉动阵列10-8的第二权重矩阵M可以包括第一列向量的第二权重数据M1(m11和m21)和第二列向量的第二权重数据M2(m12和m22)。矩阵N指示处理元件PE33、PE34、PE43和PE44获得的第四部分累加结果N11至N22。可以通过处理元件PE33获得第四部分累加结果N11(N11=l11×m11+l12×m21),并且第四部分累加结果N11可以生成为第六部分累加结果。可以通过处理元件PE43获得第四部分累加结果N21(N21=l21×m11+l22×m21),并且第四部分累加结果N21与从处理元件PE33输出的第五部分累加结果N11可以相加以生成第六部分累加结果N11+N21作为第二输出数据P32。可以通过处理元件PE34获得第四部分累加结果N12(N12=l11×m12+l12×m22),并且第四部分累加结果N12可以生成为第六部分累加结果。可以通过处理元件PE44获得第四部分累加结果N22(N22=l21×m12+l22×m22),并且第四部分累加结果N22与从处理元件PE34输出的第五部分累加结果N12可以相加以生成第六部分累加结果N12+N22作为输出数据P42。
图7是示出根据本公开示例实施例的第二输入数据和第二权重数据的输入序列以及部分脉动阵列的第二输出数据的输出序列的图。
参照图6A至图7,第二输入矩阵C、F、I和L的第一行向量的第二输入数据C1、F1、I1和L1以及第二权重矩阵D、G、J和M的第一列向量的第二权重数据D1、J1、G1和M1在第一个周期T1开始被应用,第二输入矩阵C、F、I和L的第二行向量的第二输入数据C2、F2、I2和L2以及第二权重矩阵D、G、J和M的第二列向量的第二权重数据D2、G2、J2和M2在第二周期T2开始被应用。从第一周期T1至第三周期T3,第二输入数据C1(c11和c12)、F1(f11和f12)、I1(i11和i12)、L1(l11和l12)、C2(c21和c22)、F2(f21和f22)、I2(i21和i22)和L2(l21和l22)可以在逐个延迟一个周期的状态下被顺序地应用,并且第二权重数据D1(d11和d21)、J1(j11)和j21)、G1(g11和g21)、M1(m11和m21)、D2(d12和d22)、J2(j12和j22)和G2(g12和g22)可以在逐个延迟一个周期的状态下被顺序地应用。在第三周期T3,可以同时生成第二输出数据P12、P11、P32和P31。在第四周期T4,可以同时生成第二输出数据P22、P21、P42和P41,并且可以在逐个延迟一个周期的状态下顺序地生成第二输出数据P12、P11、P32和P31以及第二输出数据P22、P21、P42和P41。
图8A至图8D是示出根据本公开示例实施例的部分脉动阵列的第二卷积运算的图。
参照图8A,在第一周期T1,处理元件PE11可以将第二输入数据c11与第二权重数据d11相乘(c11×d11)以获得第二相乘结果r111'。处理元件PE13可以将第二输入数据g11与第二权重数据f11相乘(g11×f11)以获得第二相乘结果r131'。处理元件PE31可以将第二输入数据i11与第二权重数据j11相乘(i11×j11)以获得第二相乘结果r311'。处理元件PE33可以将第二输入数据l11与第二权重数据m11相乘(l11×m11)以获得第二相乘结果r331'。
参照图8B,在第二周期T2,处理元件PE11可以将第二输入数据c12与第二权重数据d21相乘(c12×d21)以获得第二相乘结果r112',并且可以将第二相乘结果r111'与第二相乘结果r112'相加以获得第四部分累加结果E11。处理元件PE12可以将第二输入数据c11与第二权重数据d12相乘(c11×d12)以获得第二相乘结果r121'。处理元件PE21可以将第二输入数据c21与第二权重数据d11相乘(c21×d11)以获得第二相乘结果r211'。部分脉动阵列10-4至10-8的处理元件也可以通过其操作获得图8B所示的结果。
参照图8C,在第三周期T3,处理元件PE12可以将第二输入数据c11与第二权重数据d22(c11×d22)相乘以获得第四相乘结果r122',并且可以将第四相乘结果r121'与第四相乘结果r122'相加以获得第四部分累加结果E12。处理元件PE21可以将第二输入数据c22与第二权重数据d21相乘(c22×d21)以获得第二相乘结果r212',可以将第二相乘结果r211'与第二相乘结果r212'相加以获得第四部分累加结果E21,并且可以将第四部分累加结果E11与第五部分累加结果E21相加以生成第六部分累加结果E11+E21作为输出数据P11。处理元件PE22可以将第二输入数据c21与第二权重数据d12相乘(c21×d12)以获得第四相乘结果r221'。部分脉动阵列10-4至10-8的处理元件也可以通过其操作获得图8C所示的结果。
参照图8D,在第四周期T4,处理元件PE22可以将第二输入数据c22与第二权重数据d22相乘(c22×d22)以获得第二相乘结果r222',可以将第二相乘结果r221'与第二相乘结果r222'相加以获得第四部分累加结果E22,并且可以将第四部分累加结果E22与第五部分累加结果E12相加以生成第六部分累加结果作为输出数据P21。部分脉动阵列10-4至10-8的处理元件也可以通过其操作获得图8D所示的结果。
根据示例实施例,图3所示的第一输入矩阵A可以被分为四个部分,其是图6A至图6D所示的第二输入矩阵C、F、I、L,第一权重矩阵B可以被分为四个部分,其是图6A至图6D的第二权重矩阵D、G、J和M,四个部分脉动阵列10-2、10-4、10-6和10-8执行第二卷积运算以分别生成第二输出数据P11和P21、P31和P41、P12和P22、以及P32和P42,并且八个第二输出数据P11、P21、P31、P41、P12、P22、P32和P42可以由累加器18相加以生成输出数据。在这种情况下,生成的输出数据可以与第一输入矩阵A和第一权重矩阵B的第一卷积结果数据O相同。也就是说,可以在减少卷积运算时间的同时生成相同的卷积结果数据。
在上述示例实施例中,第一输入数据和第二输入数据可以是图像数据,第一权重数据和第二权重数据可以是过滤数据。此外,在上述示例实施例中,加速器可以被包括在半导体存储装置中。
在本公开示例实施例中,在卷积运算期间,可以依据权重矩阵的大小可变地重新配置脉动阵列的矩阵的大小,从而可以同时执行卷积运算。也就是说,在权重矩阵的大小小于脉动阵列的矩阵的大小的情况下,部分脉动阵列可以并行执行卷积运算,从而可以减少运算时间。因此,可以提高包括脉动阵列的加速器的性能。
尽管已经参照附图描述了本发明构思的示例实施例,但是本领域技术人员将理解,可以进行各种修改而不脱离本发明构思的范围并且不改变其本质特征。因此,上述实施例应仅被认为是描述性的,而不是为了限制的目的。
Claims (20)
1.一种脉动阵列,包括:
多个处理元件,所述多个处理元件以n×n矩阵被设置,所述多个处理元件被配置为执行以下操作:
对第一输入n×n矩阵的行向量的第一输入数据和第一权重n×n矩阵的列向量的第一权重数据进行第一卷积运算,以生成n个第一输出数据,或者
将所述多个处理元件划分为k个部分脉动阵列,所述k个部分脉动阵列中的每一者包括以m×m矩阵设置的多个子处理元件,和
对k个第二输入m×m矩阵的行向量的第二输入数据和k个第二权重m×m矩阵的列向量的第二权重数据执行第二卷积运算,以生成m个第二输出数据,每个所述第二输入m×m矩阵对应所述k个部分脉动阵列之一,每个所述第二权重m×m矩阵对应所述k个部分脉动阵列之一,
其中,n是大于或等于4的整数,
其中,k是大于或等于4的整数,并且
其中,m为小于n的整数,并且m大于或等于2。
2.根据权利要求1所述的脉动阵列,其中,在所述第一卷积运算期间,
在所述多个处理元件当中,设置在所述n×n矩阵的第一列中的多个第一列处理元件中的每一者接收所述第一输入n×n矩阵的n个行向量的第一输入数据中的对应一个行向量的第一输入数据,
在所述多个处理元件当中,设置在所述n×n矩阵的第一行中的多个第一行处理元件中的每一者接收所述第一权重n×n矩阵的n个列向量的第一权重数据中的对应一个列向量的第一权重数据,
在所述多个处理元件当中,除了设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件之外的其余处理元件接收通过在第一方向上设置在相应处理元件之前的前端处理元件施加的第一输入数据,
在所述多个处理元件当中,除了设置在所述n×n矩阵的所述第一行中的所述多个第一行处理元件之外的其余处理元件接收通过在第二方向上设置在相应处理元件之前的前端处理元件施加的第一权重数据,以及
所述多个处理元件中的每一者将所接收的第一输入数据与所接收的第一权重数据相乘以获得第一相乘结果,累加所述第一相乘结果以获得第一部分累加结果,将所述第一部分累加结果与从在所述第二方向上位于相应处理元件之前的前端处理元件发送的第二部分累加结果相加以获得第三部分累加结果,并且向在第三方向上位于相应处理元件之后的后端处理元件发送所述第三部分累加结果。
3.根据权利要求2所述的脉动阵列,其中,
所述第一输入n×n矩阵的所述n个行向量包括n条第一输入数据,所述n个行向量的所述n条第一输入数据在逐个延迟一个周期的状态下被顺序地应用,并且
所述第一权重n×n矩阵的所述n个列向量包括n条第一权重数据,所述n个列向量的所述n条第一权重数据在逐个延迟一个周期的状态下被顺序地应用。
4.根据权利要求2所述的脉动阵列,其中,在所述第二卷积运算期间,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括在所述n×n矩阵的所述第一列中设置的所述多个第一列处理元件的、设置在所述m×m矩阵的第一列中的多个第一列子处理元件不接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件发送的第二输入数据,而接收所述k个第二输入m×m矩阵中的对应一者的行向量的第二输入数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括在所述n×n矩阵的所述第一行中设置的所述多个第一行处理元件的、设置在所述m×m矩阵的第一行中的多个第一行子处理元件不接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件发送的第二权重数据,而接收所述k个第二输入m×m矩阵中的对应一者的列向量的第二权重数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在第一列中的所述多个第一列子处理元件之外的多个其余子处理元件接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件施加的第二输入数据,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在第一行中的所述多个第一行子处理元件之外的多个其余子处理元件接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件施加的第二权重数据,并且
所述k个部分脉动阵列中的每一者的所述多个子处理元件中的每一者将所接收的第二输入数据与所接收的第二权重数据相乘以获得第二相乘结果,累加所述第二相乘结果以获得第四部分累加结果,将所述第四部分累加结果与从在所述第二方向上位于相应子处理元件之前的相应前端处理元件发送的第五部分累加结果相加以获得第六部分累加结果,并且向在所述第三方向上位于相应子处理元件之后的后端处理元件或者向外部发送所述第六部分累加结果。
5.根据权利要求2所述的脉动阵列,其中,在所述第二卷积运算期间,
所述k个第二权重矩阵当中的第二权重矩阵的第二权重数据被预先存储在所述k个部分脉动阵列中的每一者的所述多个子处理元件中,
在每个所述部分脉动阵列的所述多个子处理元件当中,包括设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m×m矩阵的第一列中的多个第一列子处理元件接收所述k个第二输入m×m矩阵中的对应一者的行向量的第二输入数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m×m矩阵的第一列中的多个第二列子处理元件不接收通过在所述第一方向上设置相应其余子处理元件之前的前端处理元件发送的第二输入数据,而接收所述k个第二输入m×m矩阵中的对应一者的行向量的第二输入数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在所述m×m矩阵的第一列中的所述多个第一列子处理元件之外的多个其余子处理元件接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件施加的第二输入数据,并且
所述k个部分脉动阵列中的每一者的所述多个子处理元件中的每一者将所接收的第二输入数据与所存储的第二权重数据相乘以获得第二相乘结果,累加所述第二相乘结果以获得第四部分累加结果,将所述第四累加结果与从在所述第二方向上位于相应子处理元件之前的相应前端处理元件发送的第五部分累加结果相加以获得第六部分累加结果,并且向在所述第三方向上位于相应子处理元件之后的后端处理元件或者向外部发送所述第六部分累加结果。
6.根据权利要求4所述的脉动阵列,其中,
每个所述第二输入m×m矩阵的m个行向量包括m条第二输入数据,每个所述第二输入m×m矩阵的所述m个行向量的所述m条第二输入数据在逐个延迟一个周期的状态下被顺序地应用,并且
每个所述第二权重m×m矩阵的所述m个列向量包括m个第二权重数据,每个所述第二权重m×m矩阵的所述m个列向量的所述m条第二权重数据在逐个延迟一个周期的状态下被顺序地应用。
7.根据权利要求1所述的脉动阵列,其中,所述多个处理元件中的每一者包括:
乘法器,所述乘法器被配置为:将所述第一输入数据与所述第一权重数据相乘以生成所述第一相乘结果,或者将所述第二输入数据与所述第二权重数据相乘以生成所述第二相乘结果;以及
部分累加器,所述部分累加器被配置为:
累加所述第一相乘结果以生成所述第一部分累加结果,并且将所述第一部分累加结果与第二部分累加结果进行累加,以生成第三部分累加结果,或者
累加所述第二相乘结果以生成第四部分累加结果,并且将所述第四部分累加结果与第五部分累加结果进行累加,以生成第六部分累加结果。
8.根据权利要求7所述的脉动阵列,其中,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m×m矩阵的所述第一列中的多个子处理元件中的每一者还包括第一选择器,所述第一选择器被配置为:在所述第一卷积运算期间接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件发送的所述第一输入数据,并且在所述第二卷积运算期间接收所述k个第二输入m×m矩阵中的对应一者的对应行向量的所述第二输入数据。
9.根据权利要求8所述的脉动阵列,其中,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,设置在所述m×m矩阵的第m行中的所述多个子处理元件中的每一者还包括第二选择器,所述第二选择器被配置为:在所述第一卷积运算期间,向在所述第三方向上设置在相应子处理元件之后的后端处理元件发送所述第三部分累加结果,并且在所述第二卷积运算期间,不向在所述第三方向上设置在相应子处理元件之后的所述后端处理元件发送所述第六部分累加结果,而向外部发送所述第六部分累加结果。
10.根据权利要求9所述的脉动阵列,其中,在所述多个处理元件当中,不包括设置在所述n×n矩阵的所述第一行中的所述多个第一行处理元件的、在所述k个部分脉动阵列中的每一者的所述m×m矩阵的所述第一行中设置的所述多个子处理元件中的每一者还包括第三选择器,所述第三选择器被配置为:在所述第一卷积运算期间,接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件发送的所述第一权重数据,并且在所述第二卷积运算期间,接收所述k个第二权重m×m矩阵中的对应一者的对应列向量的所述第二权重数据。
11.一种加速器,包括:
脉动阵列,所述脉动阵列包括以n×n矩阵设置的多个处理元件,所述多个处理元件被配置为执行以下操作:
响应于控制信号,对第一输入n×n矩阵的n个行向量的第一输入数据和第一权重n×n矩阵的n个列向量的第一权重数据进行第一卷积运算,以生成n个第一输出数据,或者
将所述多个处理元件划分为k个部分脉动阵列,所述k个部分脉动阵列中的每一者包括以m×m矩阵设置的多个子处理元件,和
对k个第二输入m×m矩阵的行向量的第二输入数据和k个第二权重m×m矩阵的列向量的第二权重数据执行第二卷积运算,以生成m个第二输出数据,每个所述第二输入m×m矩阵对应所述k个部分脉动阵列之一,每个所述第二权重m×m矩阵对应所述k个部分脉动阵列之一,其中,n为大于或等于4的整数,其中,k为大于或等于4的整数,并且其中,m为小于n的整数,并且m大于或等于2;
累加器,所述累加器被配置为:响应于所述控制信号,累加所述n个第一输出数据以生成第一卷积结果数据,或者累加从所述k个部分脉动阵列中的每一者生成的所述m个第二输出数据,以生成k个第二卷积结果数据;
输入数据生成器,所述输入数据生成器被配置为:响应于所述控制信号,生成所述第一输入n×n矩阵的所述n个行向量的所述第一输入数据,或者生成所述k个第二输入m×m矩阵中的每一者的m个行向量的所述第二输入数据;以及
权重数据生成器,所述权重数据生成器被配置为:响应于所述控制信号,生成所述第一权重n×n矩阵的所述n个列向量的所述第一权重数据,或者生成所述k个第二权重m×m矩阵中的每一者的m个列向量的所述第二权重数据。
12.根据权利要求11所述的加速器,其中,所述控制信号与数字m相关。
13.根据权利要求11所述的加速器,其中,所述输入数据生成器被配置为:响应于所述控制信号,在逐个延迟一个周期的状态下顺序地生成所述第一输入n×n矩阵的所述n个行向量的所述n条第一输入数据,或者在逐个延迟一个周期的状态下顺序地生成所述第二输入m×m矩阵中的每一者的所述m个行向量的m条第二输入数据。
14.根据权利要求13所述的加速器,其中,所述权重数据生成器被配置为:在逐个延迟一个周期的状态下顺序地生成所述第一权重n×n矩阵的所述n个列向量的n条第一权重数据,或者在逐个延迟一个周期的状态下顺序地生成所述第二权重m×m矩阵中的每一者的所述m个列向量的m条第二权重数据。
15.根据权利要求11所述的加速器,其中,在所述第一卷积运算期间,
在所述多个处理元件当中,设置在所述n×n矩阵的第一列中的多个第一列处理元件中的每一者接收所述第一输入n×n矩阵的n个行向量的第一输入数据中的对应一个行向量的第一输入数据,
在所述多个处理元件当中,设置在所述n×n矩阵的第一行中的多个第一行处理元件中的每一者接收所述第一权重n×n矩阵的n个列向量的第一权重数据中的对应一个列向量的第一权重数据,
在所述多个处理元件当中,除了设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件之外的其余处理元件接收通过在第一方向上设置在相应处理元件之前的前端处理元件施加的第一输入数据,
在所述多个处理元件当中,除了设置在所述n×n矩阵的所述第一行中的所述多个第一行处理元件之外的其余处理元件接收通过在第二方向上设置在相应处理元件之前的前端处理元件施加的第一权重数据,并且
所述多个处理元件中的每一者将所接收的第一输入数据与所接收的第一权重数据相乘以获得第一相乘结果,累加所述第一相乘结果以获得第一部分累加结果,将所述第一部分累加结果与从在所述第二方向上位于相应处理元件之前的前端处理元件发送的第二部分累加结果相加以获得第三部分累加结果,并且向在第三方向上位于相应处理元件之后的后端处理元件发送所述第三部分累加结果。
16.根据权利要求15所述的加速器,其中,在所述第二卷积运算期间,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m×m矩阵的第一列中的多个第一列子处理元件不接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件发送的第二输入数据,而接收所述k个第二输入m×m矩阵中的对应一者的行向量的第二输入数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n×n矩阵的所述第一行中的所述多个第一行处理元件的、设置在所述m×m矩阵的第一行中的多个第一行子处理元件不接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件发送的第二权重数据,而接收所述k个第二输入m×m矩阵中的对应一者的列向量的第二权重数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在所述第一列中的所述多个第一列子处理元件之外的多个其余子处理元件接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件施加的第二输入数据,在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在第一行中的所述多个第一行子处理元件之外的多个其余子处理元件接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件施加的第二权重数据,并且
所述k个部分脉动阵列中的每一者的所述多个子处理元件中的每一者将所接收的第二输入数据与所接收的第二权重数据相乘以获得第二相乘结果,累加所述第二相乘结果以获得第四部分累加结果,将所述第四部分累加结果与从在所述第二方向上位于相应子处理元件之前的相应前端处理元件发送的第五部分累加结果相加以获得第六部分累加结果,并且向在所述第三方向上位于相应子处理元件之后的后端处理元件或者向所述累加器发送所述第六部分累加结果。
17.根据权利要求15所述的加速器,其中,在所述第二卷积运算期间,
所述k个第二权重矩阵当中的第二权重矩阵的第二权重数据被预先存储在所述k个部分脉动阵列中的每一者的所述多个子处理元件中,
在每个所述部分脉动阵列的所述多个子处理元件当中,包括设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m×m矩阵的第一列中的多个第一列子处理元件接收所述k个第二输入m×m矩阵中的对应一者的行向量的第二输入数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m×m矩阵的第一列中的多个第二列子处理元件不接收通过在所述第一方向上设置相应其余子处理元件之前的前端处理元件发送的第二输入数据,而接收所述k个第二输入m×m矩阵中的对应一者的行向量的第二输入数据,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,除了设置在所述m×m矩阵的第一列中的所述多个第一列子处理元件之外的多个其余处理元件接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件施加的第二输入数据,并且
所述k个部分脉动阵列中的每一者的所述多个子处理元件中的每一者将所接收的第二输入数据与所存储的第二权重数据相乘以获得第二相乘结果,累加所述第二相乘结果以获得第四部分累加结果,将所述第四累加结果与从在所述第二方向上位于相应子处理元件之前的相应前端处理元件发送的第五部分累加结果相加以获得第六部分累加结果,并且向在所述第三方向上位于相应子处理元件之后的后端处理元件或者向所述累加器发送所述第六部分累加结果。
18.根据权利要求11所述的加速器,其中,所述多个处理元件中的每一者包括:
乘法器,所述乘法器被配置为:将所述第一输入数据与所述第一权重数据相乘以生成所述第一相乘结果,或者将所述第二输入数据与所述第二权重数据相乘以生成所述第二相乘结果;以及
部分累加器,所述部分累加器被配置为:
累加所述第一相乘结果以生成所述第一部分累加结果,并且将所述第一部分累加结果与第二部分累加结果进行累加,以生成第三部分累加结果,或者
累加所述第二相乘结果以生成第四部分累加结果,并且将所述第四部分累加结果与第五部分累加结果进行累加,以生成第六部分累加结果。
19.根据权利要求18所述的加速器,其中,
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,不包括设置在所述n×n矩阵的所述第一列中的所述多个第一列处理元件的、设置在所述m×m矩阵的所述第一列中的多个子处理元件中的每一者还包括第一选择器,所述第一选择器被配置为:在所述第一卷积运算期间接收通过在所述第一方向上设置在相应子处理元件之前的前端处理元件发送的所述第一输入数据,并且在所述第二卷积运算期间接收所述k个第二输入m×m矩阵中的对应一者的对应行向量的所述第二输入数据,以及
在所述k个部分脉动阵列中的每一者的所述多个子处理元件当中,设置在所述m×m矩阵的第m行中的所述多个子处理元件中的每一者还包括第二选择器,所述第二选择器被配置为:在所述第一卷积运算期间,向在所述第三方向上设置在相应子处理元件之后的后端处理元件发送所述第三部分累加结果,并且在所述第二卷积运算期间,不向在所述第三方向上设置在所述相应子处理元件之后的所述后端处理元件发送所述第六部分累加结果,而向所述累加器发送所述第六部分累加结果。
20.根据权利要求19所述的加速器,其中,在所述多个处理元件当中,不包括设置在所述n×n矩阵的所述第一行中的所述n个处理元件的、在所述k个部分脉动阵列中的每一者的所述m×m矩阵的所述第一行中设置的所述多个子处理元件中的每一者还包括第三选择器,所述第三选择器被配置为:在所述第一卷积运算期间,接收通过在所述第二方向上设置在相应子处理元件之前的前端处理元件发送的所述第一权重数据,并且在所述第二卷积运算期间,接收所述k个第二权重m×m矩阵中的对应一者的对应列向量的所述第二权重数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210057124A KR20220149992A (ko) | 2021-05-03 | 2021-05-03 | 시스톨릭 어레이, 및 이를 포함하는 가속기 |
KR10-2021-0057124 | 2021-05-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115293319A true CN115293319A (zh) | 2022-11-04 |
Family
ID=83807553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210189101.2A Pending CN115293319A (zh) | 2021-05-03 | 2022-02-28 | 脉动阵列以及包括脉动阵列的加速器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220350861A1 (zh) |
KR (1) | KR20220149992A (zh) |
CN (1) | CN115293319A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116980277A (zh) * | 2023-09-18 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230177000A1 (en) * | 2021-12-07 | 2023-06-08 | Centre For Intelligent Multidimensional Data Analysis Limited | Tensor processor and a method for processing tensors |
CN116108902B (zh) * | 2023-02-22 | 2024-01-05 | 成都登临科技有限公司 | 采样操作实现系统、方法、电子设备及存储介质 |
-
2021
- 2021-05-03 KR KR1020210057124A patent/KR20220149992A/ko active Search and Examination
- 2021-12-02 US US17/540,913 patent/US20220350861A1/en active Pending
-
2022
- 2022-02-28 CN CN202210189101.2A patent/CN115293319A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116980277A (zh) * | 2023-09-18 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN116980277B (zh) * | 2023-09-18 | 2024-01-12 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20220149992A (ko) | 2022-11-10 |
US20220350861A1 (en) | 2022-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115293319A (zh) | 脉动阵列以及包括脉动阵列的加速器 | |
AU2008202591B2 (en) | High speed and efficient matrix multiplication hardware module | |
US20220292049A1 (en) | Neural processing accelerator | |
US20170344876A1 (en) | Efficient sparse parallel winograd-based convolution scheme | |
US9436655B2 (en) | Architecture for vector memory array transposition using a block transposition accelerator | |
US11487845B2 (en) | Convolutional operation device with dimensional conversion | |
US20190050719A1 (en) | Accelerating Neural Networks in Hardware Using Interconnected Crossbars | |
US10936311B1 (en) | Sparse matrix processing circuitry | |
US20220107803A1 (en) | Memory device for performing in-memory processing | |
JP6003744B2 (ja) | 演算処理装置及び演算処理方法 | |
US20220129247A1 (en) | Semiconductor device and method of controlling the semiconductor device | |
CN116167419A (zh) | 一种兼容N:M稀疏的Transformer加速器的架构及加速方法 | |
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
CN112639836A (zh) | 数据处理装置、电子设备和数据处理方法 | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
CN111610963A (zh) | 芯片结构及其乘加计算引擎 | |
CN110673824B (zh) | 矩阵向量乘电路以及循环神经网络硬件加速器 | |
GB2306716A (en) | Performing bit-serial matrix transposition operations | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
CN111985628A (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
WO2020194465A1 (ja) | ニューラルネットワーク回路 | |
US20240134931A1 (en) | Matrix computing device and operation method thereof | |
US20230259332A1 (en) | Processing unit for performing multiply-accumulate operations | |
US11556337B2 (en) | Parallel matrix multiplication technique optimized for memory fetches | |
US20210117352A1 (en) | Semiconductor device and method of controlling the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |