一种脉动矩阵单元及脉动矩阵计算装置转让专利

申请号 : CN202210595479.2

文献号 : CN114675806B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 乔树山张默寒尚德龙周玉梅

申请人 : 中科南京智能技术研究院

摘要 :

本发明涉及一种脉动矩阵单元及脉动矩阵计算装置,属于人工智能领域。该单元中乘法器与权重寄存器和数据寄存器连接;乘法器使权重和输入数据相乘;累加器与乘法器和二选一选择器连接;累加器对相乘后的结果与上一时钟周期的累加后的结果进行累加,将累加器的输出值发送至二选一选择器;二选一选择器与部分和寄存器连接;二选一选择器当输入数据输入完成之前,根据第一控制信号进行累加器的输出值的输出;二选一选择器当输入数据输入完成之后,根据第二控制信号停止累加器的输出值的输出;部分和寄存器当输入数据输入完成之前,对累加器的输出值进行存储,当输入数据输入完成之后,将累加器的输出值进行输出。本发明能够同时节省时间和硬件开销。

权利要求 :

1.一种脉动矩阵单元,其特征在于,包括:权重寄存器、数据寄存器、乘法器、累加器、二选一选择器以及部分和寄存器;

所述权重寄存器用于存储权重;

所述数据寄存器用于存储输入数据;

所述乘法器分别与所述权重寄存器和所述数据寄存器连接;所述乘法器用于使权重和输入数据相乘;

所述累加器分别与所述乘法器和所述二选一选择器连接;所述累加器用于对相乘后的结果与上一时钟周期的累加后的结果进行累加,将累加器的输出值发送至所述二选一选择器;

所述二选一选择器与部分和寄存器连接;所述二选一选择器用于当输入数据输入完成之前,根据第一控制信号进行所述累加器的输出值的输出;所述二选一选择器还用于当输入数据输入完成之后,根据第二控制信号停止所述累加器的输出值的输出;

所述部分和寄存器用于当输入数据输入完成之前,对累加器的输出值进行存储,并当输入数据输入完成之后,将累加器的输出值进行输出;

延迟器设置在两个相邻的脉动矩阵单元之间,每向右或向下一个脉动矩阵单元,计算结果会延迟一个周期,二选一选择器相应的延迟一个周期,再将累加器的数值向上传输。

2.根据权利要求1所述的脉动矩阵单元,其特征在于,所述权重为3*3矩阵。

3.根据权利要求1所述的脉动矩阵单元,其特征在于,所述输入数据为3*3矩阵。

4.一种脉动矩阵计算装置,用于实现权利要求1‑3任意一项所述的一种脉动矩阵单元,其特征在于,包括:阵列控制器、权重存储单元、输出数据存储单元、输入数据存储单元、脉动阵列以及多个延迟器;所述脉动阵列包括多个脉动矩阵单元;

所述权重存储单元分别与阵列控制器和脉动阵列连接;

所述阵列控制器分别与所述输出数据存储单元、输入数据存储单元以及脉动阵列连接;

所述脉动阵列分别与所述输入数据存储单元和所述输出数据存储单元连接;

所述延迟器设置在两个相邻的脉动矩阵单元之间;

所述输入数据存储单元根据每个脉动矩阵单元的输入数据的完成情况生成发送信号;

所述阵列控制器用于根据发送信号生成第一控制信号和第二控制信号;所述阵列控制器还用于当发送信号为脉动矩阵单元的输入数据输入完成时,控制所述输出数据存储单元接收相应的脉动矩阵单元的累加器的输出值。

5.根据权利要求4所述的一种脉动矩阵计算装置,其特征在于,所述脉动阵列为3*3矩阵。

说明书 :

一种脉动矩阵单元及脉动矩阵计算装置

技术领域

[0001] 本发明涉及人工智能领域,特别是涉及一种脉动矩阵单元及脉动矩阵计算装置。

背景技术

[0002] 随着人工智能的兴起,深度学习在各个领域中的应用也越来越多。而深度学习中,与矩阵相乘相关的运算使用率极高。目前比较方便快捷的矩阵运算方式是用脉动阵列。脉动阵列的基本思路为:在A*B=Y的矩阵乘法运算中,固定矩阵B,使A在脉动矩阵单元中流动而连续输出Y;或者是使A和B在脉动矩阵单元中流动而将结果Y存储于脉动矩阵单元中。
[0003] 脉动阵列的一种计算方法为:在脉动阵列进行矩阵乘法的过程中,输入数据在脉动阵列单元中从左到右传输,权重数据在脉动阵列单元中从上到下传输,最终计算结果则存储于每个脉动阵列单元中。而计算结果而在计算结束后是要取出来进行后续计算的,在矩阵较大时,这些最终计算结果的取出若是用总线传输,虽然时间消耗较短,但总线的硬件开销较大;若是在计算结束后再让计算结果如权重数据和输入数据一样在阵列中逐个移动输出,则会消耗较多的时间。

发明内容

[0004] 本发明的目的是提供一种脉动矩阵单元及脉动矩阵计算装置,能够同时节省时间和硬件开销。
[0005] 为实现上述目的,本发明提供了如下方案:
[0006] 一种脉动矩阵单元,包括:权重寄存器、数据寄存器、乘法器、累加器、二选一选择器以及部分和寄存器;
[0007] 所述权重寄存器用于存储权重;
[0008] 所述数据寄存器用于存储输入数据;
[0009] 所述乘法器分别与所述权重寄存器和所述数据寄存器连接;所述乘法器用于使权重和输入数据相乘;
[0010] 所述累加器分别与所述乘法器和所述二选一选择器连接;所述累加器用于对相乘后的结果与上一时钟周期的累加后的结果进行累加,将累加器的输出值发送至所述二选一选择器;
[0011] 所述二选一选择器与部分和寄存器连接;所述二选一选择器用于当输入数据输入完成之前,根据第一控制信号进行所述累加器的输出值的输出;所述二选一选择器还用于当输入数据输入完成之后,根据第二控制信号停止所述累加器的输出值的输出;
[0012] 所述部分和寄存器用于当输入数据输入完成之前,对累加器的输出值进行存储,并当输入数据输入完成之后,将累加器的输出值进行输出。
[0013] 可选地,所述权重为3*3矩阵。
[0014] 可选地,所述输入数据为3*3矩阵。
[0015] 一种脉动矩阵计算装置,用于实现所述的一种脉动矩阵单元,包括:阵列控制器、权重存储单元、输出数据存储单元、输入数据存储单元、脉动阵列以及多个延迟器;所述脉动阵列包括多个脉动矩阵单元;
[0016] 所述权重存储单元分别与阵列控制器和脉动阵列连接;
[0017] 所述阵列控制器分别与所述输出数据存储单元、输入数据存储单元以及脉动阵列连接;
[0018] 所述脉动阵列分别与所述输入数据存储单元和所述输出数据存储单元连接;
[0019] 所述延迟器设置在两个相邻的脉动矩阵单元之间;
[0020] 所述输入数据存储单元根据每个脉动矩阵单元的输入数据的完成情况生成发送信号;
[0021] 所述阵列控制器用于根据发送信号生成第一控制信号和第二控制信号;所述阵列控制器还用于当发送信号为脉动矩阵单元的输入数据输入完成时,控制所述输出数据存储单元接收相应的脉动矩阵单元的累加器的输出值。
[0022] 可选地,所述脉动阵列为3*3矩阵。
[0023] 根据本发明提供的具体实施例,本发明公开了以下技术效果:
[0024] 本发明所提供的一种脉动矩阵单元及脉动矩阵计算装置,通过二选一选择器和部分和寄存器,在计算还未完全结束时就开始将先计算完成的脉动阵列单元中的数据取出,比之计算全部结束后逐个取出节省了时间,比之总线取出节省了硬件开销。

附图说明

[0025] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0026] 图1为本发明所提供的一种脉动矩阵单元结构示意图;
[0027] 图2为本发明所提供的一种脉动矩阵计算装置结构示意图;
[0028] 图3为同一列的脉动阵列单元间的输出结果传输情况示意图;
[0029] 图4‑图14为本发明所提供的一种脉动矩阵计算装置的运算流程示意图。

具体实施方式

[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 本发明的目的是提供一种脉动矩阵单元及脉动矩阵计算装置,能够同时节省时间和硬件开销。
[0032] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0033] 图1为本发明所提供的一种脉动矩阵单元结构示意图,如图1所示,本发明所提供的一种脉动矩阵单元,包括:权重寄存器、数据寄存器、乘法器、累加器、二选一选择器以及部分和寄存器;
[0034] 所述权重寄存器用于存储权重;
[0035] 所述数据寄存器用于存储输入数据;
[0036] 所述乘法器分别与所述权重寄存器和所述数据寄存器连接;所述乘法器用于使权重和输入数据相乘;
[0037] 所述累加器分别与所述乘法器和所述二选一选择器连接;所述累加器用于对相乘后的结果与上一时钟周期的累加后的结果进行累加,将累加器的输出值发送至所述二选一选择器;
[0038] 所述二选一选择器与部分和寄存器连接;所述二选一选择器用于当输入数据输入完成之前,根据第一控制信号进行所述累加器的输出值的输出;所述二选一选择器还用于当输入数据输入完成之后,根据第二控制信号停止所述累加器的输出值的输出;
[0039] 所述部分和寄存器用于当输入数据输入完成之前,对累加器的输出值进行存储,并当输入数据输入完成之后,将累加器的输出值进行输出。
[0040] 其中,第一控制信号和第二控制信号为高电平信号或低电平信号;
[0041] 如图1所示,权重数据从上至下传输,输入数据从左至右传输,权重与输入数据相乘后经累加器与上一时钟周期的部分和相加,这些特点与传统的脉动阵列单元相同,不同点在于右侧的结构。在第一行的输入数据全部输入之前,阵列控制单元通过第一控制信号使二选一选择器选择同单元内的累加器的输出值输出,并将结果存储于部分和寄存器。
[0042] 作为一个具体的实施例,所述权重为3*3矩阵。
[0043] 作为一个具体的实施例,所述输入数据为3*3矩阵。
[0044] 如图2所示,本发明所提供的一种脉动矩阵计算装置,用于实现上述所述的一种脉动矩阵单元,包括:阵列控制器、权重存储单元、输出数据存储单元、输入数据存储单元、脉动阵列以及多个延迟器;所述脉动阵列包括多个脉动矩阵单元;
[0045] 所述权重存储单元分别与阵列控制器和脉动阵列连接;
[0046] 所述阵列控制器分别与所述输出数据存储单元、输入数据存储单元以及脉动阵列连接;
[0047] 所述脉动阵列分别与所述输入数据存储单元和所述输出数据存储单元连接;
[0048] 所述延迟器设置在两个相邻的脉动矩阵单元之间;每向右或向下一个单元,计算结果会迟一个周期,因此二选一选择器也应该迟一个周期再将累加器的数值向上传输。
[0049] 所述输入数据存储单元根据每个脉动矩阵单元的输入数据的完成情况生成发送信号;
[0050] 所述阵列控制器用于根据发送信号生成第一控制信号和第二控制信号;所述阵列控制器还用于当发送信号为脉动矩阵单元的输入数据输入完成时,控制所述输出数据存储单元接收相应的脉动矩阵单元的累加器的输出值。
[0051] 作为一个具体的实施例,所述脉动阵列为3*3矩阵。
[0052] 如图2所示,第一行的脉动阵列单元的部分和寄存器接输出存储单元,但在第一行的输入数据全部输入之前,输出存储单元不接收第一行的部分和寄存器的数值。其他行的脉动阵列单元的部分和寄存器接上一行的二选一选择器。当第一行的输入数据全部输入之后,控制单元会接收到来自输入存储单元的信号,然后控制单元改变二选一选择器的控制信号,使其选择下一脉动阵列单元的部分和。同时,控制信号控制输出存储单元开始接收第一列的部分和寄存器数值,以此类推。
[0053] 如图3所示,以同一列的三个单元为例,A,B,C分别代表第一个,第二个,第三个脉动阵列单元的最终计算结果,B‑1则表示第二个脉动阵列单元还差一个计算周期的结果,C‑1表示第三个脉动阵列单元还差一个计算周期的结果,C‑2表示第三个脉动阵列单元还差两个计算周期的结果,并取t1时刻为第一个脉动阵列单元的最终计算结果A进入第一行部分和寄存器的时刻。
[0054] 如图3所示,t1时刻,A,B‑1,C‑2分别进入第一行,第二行,第三行的部分和寄存器。t2时刻,控制单元控制输出存储单元接收第一行的部分和寄存器中的A值,同时第二行,第三行中的部分和寄存器的值更改为B和C‑1。t3时刻,控制单元控制二选一选择器的选择信号翻转,使B进入第一行的部分和寄存器,而第三行的部分和寄存器的值更改为C。t4时刻,B进入输出寄存器,而选择信号经过一个延迟器后使第二行的二选一选择器选择信号改变,C进入第二行的部分和寄存器。t5时刻,C进入第一行的部分和寄存器。t6时刻,C进入输出寄存器。注意,由于该方法中A,B,C分别在t2,t4,t6时刻进入输出寄存器,故我们选择输出寄存器的时钟周期为脉动阵列时钟周期的两倍。
[0055] 图4‑图14为运算流程示意图,输入数据 和权重,图4‑图14中十一张图以两个3×3的矩阵乘法为例展示了该方法的运算流程,图4‑图14所示,两个3×3的矩阵相乘,只需11个计算周期即可将所有结果计算完毕并存入输出寄存器以进行后续计算,极大的节省了计算时间。
[0056] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0057] 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。