脉动阵列以及包括脉动阵列的加速器

文档序号:32052256发布日期:2022-11-04 18:12阅读:来源:国知局

技术特征:
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矩阵中的对应一者的对应列向量的所述第二权重数据。

技术总结
公开了一种脉动阵列以及包括脉动阵列的加速器。所述脉动阵列可以包括以n


技术研发人员:吴成一 鲁元宇 朴世训
受保护的技术使用者:延世大学校产学协力团
技术研发日:2022.02.28
技术公布日:2022/11/3
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1