脉动阵列以及包括脉动阵列的加速器制造技术

技术编号:35467964 阅读:25 留言:0更新日期:2022-11-05 16:12
公开了一种脉动阵列以及包括脉动阵列的加速器。所述脉动阵列可以包括以n

【技术实现步骤摘要】
脉动阵列以及包括脉动阵列的加速器
[0001]相关申请的交叉引用
[0002]本申请基于并要求于2021年5月3日在韩国知识产权局提交的韩国专利申请No.10

2021

0057124的优先权,所述韩国专利申请的公开内容通过引用全部包含于此。


[0003]本公开涉及脉动阵列(systolic array)以及包括脉动阵列的加速器。

技术介绍

[0004]包括脉动阵列的加速器用于执行基于卷积神经网络(CNN)的运算,诸如,卷积运算。脉动阵列可以包括以矩阵设置的多个处理元件。例如,脉动阵列可以包括多个硬件结构,多个硬件结构包括以矩阵布置的数据处理单元(DPU)。通常,脉动阵列的矩阵的大小可以固定以执行卷积运算。

技术实现思路

[0005]本公开示例性实施例提供了一种能够通过可变地重新配置脉动阵列的矩阵的大小来执行卷积运算的脉动阵列以及包括脉动阵列的加速器。
[0006]本公开不限于上述目的,本领域技术人员将基于以下对本公开的描述清楚地理解其他未提及的目的。
[0007]根据本公开的一方面,提供一种脉动阵列,包括多个处理元件,所述多个处理元件以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。
[0008]根据本公开的另一方面,提供一种加速器,包括脉动阵列、累加器、输入数据生成器、以及权重数据生成器;所述脉动阵列包括以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个列向量的所述第二权重数据。
附图说明
[0009]图1是根据本公开示例实施例的加速器的框图。
[0010]图2是示出根据本公开示例实施例的处理元件的结构的框图。
[0011]图3是示出根据本公开示例实施例的第一输入矩阵、第一权重矩阵、处理元件的第一部分累加结果和脉动阵列的第一输出数据的图。
[0012]图4是示出根据本公开示例实施例的第一输入数据和第一权重数据的输入序列以及脉动阵列的第一输出数据的输出序列的图。
[0013]图5A至图5D是示出根据本公开示例实施例的脉动阵列的第一卷积运算的图。
[0014]图6A至图6D是示出根据本公开示例实施例的第二输入矩阵、第二权重矩阵、处理元件的第四部分累加结果以及部分脉动阵列的第二输出数据的图。
[0015]图7是示出根据本公开示例实施例的第二输入数据和第二权重数据的输入序列以及部分脉动阵列的第二输出数据的输出序列的图。
[0016]图8A至图8D是示出根据本公开示例实施例的部分脉动阵列的第二卷积运算的图。
具体实施方式
[0017]在下文中,将参照附图描述根据本公开实施例的脉动阵列和包括该脉动阵列的加速器。
[0018]图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)。例如,处理元件可以是硬件电子部件和/或电子电路。
[0019]将描述图1中所示的每个块的功能。
[0020]响应于脉动阵列控制信号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本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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个列向量的第一权重数据进行第...

【专利技术属性】
技术研发人员:吴成一鲁元宇朴世训
申请(专利权)人:延世大学校产学协力团
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1