乘累加运算装置和乘累加运算方法与流程

文档序号:29070738发布日期:2022-03-01 21:16阅读:121来源:国知局
乘累加运算装置和乘累加运算方法与流程

1.本公开属于乘累加运算技术领域,具体涉及一种乘累加运算装置和乘累加运算方法。


背景技术:

2.乘累加是矩阵运算中常见的运算,乘累加的性能对矩阵运算的性能影响非常大,如何提高乘累加运算的性能,同时降低其功耗,是矩阵运算实现中的一个重要研究方向。
3.传统地,如图1所示,在矩阵的乘累加运算过程中,乘法器将输入数据进行乘法运算,输出结果送入加法器,加法器完成加法后送入时序器件寄存器,寄存器的输出有一路反馈到加法器的另外一个输入,从而实现对乘法结果的累加,每个时钟周期完成一个乘法和加法计算。
4.但是,乘法特别是浮点乘法是比较复杂的运算,所以导致输入数据通过乘法器和加法器到达寄存器输入端,需要通过很多级逻辑,电路延时比较大,影响电路的工作频率。另外,由于逻辑深度大,电路毛刺传递效应比较明显,毛刺传播增加了电路的动态功耗。


技术实现要素:

5.本公开旨在至少解决现有技术中存在的技术问题之一,提供一种乘累加运算装置和乘累加运算方法。
6.本公开的一个方面,提供一种乘累加运算装置,所述装置包括依次连接的乘法器、加法器以及第一寄存器组;
7.所述第一寄存器组包括多个第一寄存器;
8.所述装置还包括第二寄存器组,所述第二寄存器组包括至少一个第二寄存器,所述至少一个第二寄存器用于使乘累加运算结果在时序上至少延长一个时钟周期;
9.所述多个第一寄存器,用于根据所述延长的时钟周期的间隔依序接收乘累加运算结果,以使得所述多个第一寄存器的电路延时均衡。
10.在可选地一些实施方式中,所述第二寄存器组包括多个第二寄存器;其中,
11.所述多个第二寄存器中的至少一个所述第二寄存器设置在所述乘法器内;以及,
12.所述多个第二寄存器中的其余所述第二寄存器设置在所述加法器内。
13.在可选地一些实施方式中,所述至少一个第二寄存器设置在所述加法器内。
14.在可选地一些实施方式中,所述第一寄存器的数量比设置在所述加法器内的第二寄存器的数量多1。
15.在可选地一些实施方式中,所述加法器内设置一个所述第二寄存器;
16.所述多个第一寄存器的数量为两个,分别为奇数寄存器和偶数寄存器;所述奇数寄存器接收奇数时钟周期的乘累加运算结果;以及,所述偶数寄存器接收偶数时钟周期的乘累加运算结果。
17.在可选地一些实施方式中,所述装置还包括逻辑控制器,所述逻辑控制器的输入
端分别与所述多个第一寄存器的输出端相连,所述逻辑控制器的输出端与所述加法器相连;
18.所述逻辑控制器,用于依序将所述多个第一寄存器的乘累加运算结果送入所述加法器。
19.本公开的另一方面,提供一种乘累加运算方法,包括:
20.将乘累加运算结果在时序上至少延长一个时钟周期;
21.多个第一寄存器根据延长的时钟周期的间隔依序接收乘累加运算结果,以使得所述多个第一寄存器的电路延时均衡。
22.在可选地一些实施方式中,所述多个第一寄存器的数量为两个,分别为奇数寄存器和偶数寄存器,所述多个第一寄存器根据延长的时钟周期的间隔依序接收乘累加运算结果,包括:
23.所述奇数寄存器接收奇数时钟周期的乘累加运算结果;
24.所述偶数寄存器接收偶数时钟周期的乘累加运算结果。
25.本公开的另一个方面,提供一种计算核,包括至少一个上述乘累加装置。
26.本公开的另一个方面,提供一种芯片,包括至少一个上述计算核。
27.本公开的另一个方面,提供一种电子设备,包括:
28.一个或多个处理器;
29.一个存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据前文记载的所述的方法。
30.本公开的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的方法。
31.本公开的另一个方面,提供一种计算机程序,所述计算机程序在被处理器执行时能实现根据前文记载的所述的方法。
32.本公开的乘累加运算装置和乘累加运算方法,通过设置第二寄存器组,可以使得加法器结果输出到第一寄存器组中各第一寄存器的电路延时均衡。此外,插入第二寄存器组前后的组合逻辑深度比较均衡,从而有效的降低原有的组合逻辑的深度,使得相同电压下电路可以工作在更高频率,提高性能。同时,也可以通过降低电路工作低压,使其在性能不变的前提下有效的减少电路的动态功耗。
附图说明
33.图1为传统地乘累加运算装置的结构示意图;
34.图2为本公开一实施例的电子设备的组成示意框图;
35.图3为本公开另一实施例的乘累加运算装置的结构示意图;
36.图4为传统乘累加运算的时序图;
37.图5为本公开另一实施例的乘累加运算的时序图;
38.图6为本公开另一实施例的乘累加运算方法的流程图。
具体实施方式
39.为使本领域技术人员更好地理解本公开的技术方案,下面结合附图和具体实施方
式对本公开作进一步详细描述。
40.首先,参照图2来描述用于实现本公开实施例的乘累加运算装置和乘累加运算方法的示例电子设备。
41.如图2所示,电子设备200包括一个或多个处理器210、一个或多个存储装置220、一个或多个输入装置230、一个或多个输出装置240等,这些组件通过总线系统250和/或其他形式的连接机构互连。应当注意,图2所示的电子设备的组件和结构只是示例性的,而非限制性的,根据需要,电子设备也可以具有其他组件和结构。
42.处理器210可以是中央处理单元(cpu)、或者可以是由多个处理核构成、或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备200中的其他组件以执行期望的功能。
43.存储装置220可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现下文所述的本公开实施例中(由处理器实现)的客户端功能以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如,所述应用程序使用和/或产生的各种数据等。
44.输入装置230可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
45.输出装置240可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
46.下面,将参考图3描述根据本公开一实施例的一种乘累加运算装置。
47.如图3所示,一种乘累加运算装置100,所述装置100包括依次连接的乘法器110、加法器120以及第一寄存器组130,所述第一寄存器组130包括多个第一寄存器。所述装置100还包括第二寄存器组140,所述第二寄存器组140包括至少一个第二寄存器。所述至少一个第二寄存器用于使乘累加运算结果在时序上至少延长一个时钟周期。所述多个第一寄存器用于根据延长的时钟周期的间隔依序接收乘累加运算结果,以使得所述多个第一寄存器的电路延时均衡。
48.具体地说,如图3所示,乘法器110的输入端接收待执行乘累加运算的输入数据,乘法器110的输出端与加法器120的第一输入端相连,加法器120的输出端与第一寄存器组130的输入端相连。第一寄存器组130的第一输出端与所述加法器120的第二输入端相连,第一寄存器组130的第二输出端用于输出乘累加运算的最终结果。
49.继续参考图3,在利用本公开实施例的乘累加运算装置100执行乘累加运算时,由于存在第二寄存器组140,因此可以使得乘法器110和加法器120的行为发生改变。具体来说,由于第二寄存器组140存在至少一个第二寄存器,因此对于从加法器得到计算结果时序至少延长一个时钟周期,具体延长的时钟周期数量取决于第二寄存器组140中第二寄存器的数量。示例性的,若第二寄存器组140存在两个第二寄存器,则加法器120的输出结果延长两个时钟周期。
50.如图3所示,在加法器120中配置一个第二寄存器re_2,因为每个时钟周期都会计算,那么需要在第一寄存器组130中配置两个第一寄存器,以分别在相邻的时钟周期保存加法器的计算结果。具体保存过程如下:可以将奇数时钟周期的运算结果保存至其中一个第一寄存器,将偶数时钟周期的运算结果保存至另外一个第一寄存器,最后两个第一寄存器的结果相加得到最终的乘累加运算结果。
51.此外,若第二寄存器组140存在三个第二寄存器,假设在乘法器内设置一个第二寄存器,在加法器中设置两个第二寄存器,对于加法器而言,因为每个时钟周期都进行计算,那么需要在第一寄存器组130配置三个第一寄存器。由于存在三个第二寄存器,整个加法器的输出结果会延长三个时钟周期,则三个第一寄存器分别在相邻三个时钟周期保存数据,具体保存过程如下:其中一个第一寄存器接收第0、3、6

等时钟周期的运算结果,另外一个第一寄存器接收第1、4、7

等时钟周期的运算结果,最后一个第一寄存器接收第2、5、8

等时钟周期的运算结果,最后三个第一寄存器的结果相加得到最终的乘累加运算结果。
52.本公开实施例的乘累加运算装置,通过设置第二寄存器组,可以使得加法器结果输出到第一寄存器组中各第一寄存器的电路延时均衡。此外,插入第二寄存器组前后的组合逻辑深度比较均衡,从而有效的降低原有的组合逻辑的深度,使得相同电压下电路可以工作在更高频率,提高性能。同时,也可以通过降低电路工作低压,使其在性能不变的前提下有效的减少电路的动态功耗。
53.具体地,如图3所示,所述第二寄存器组140包括两个第二寄存器,分别为第二寄存器re_1和第二寄存器re_2,第一寄存器组130包括两个第一寄存器,分别为奇数寄存器131和偶数寄存器132。第二寄存器re_1设置在所述乘法器110内,将乘法器110分割为乘法器前部111和乘法器后部112。第二寄存器re_2设置在加法器120内,将加法器120分割为加法器前部121和加法器后部122,加法器后部122分别与奇数寄存器131和偶数寄存器132相连。这样,由于乘法器110插入了一个第二寄存器re_1,加法器120中插入了一个第二寄存器re_2,数据经过寄存器则会产生一个时钟周期的时延。因此,对于插入了第二寄存器的乘累加计算装置来说,从加法器120输出的计算结果在时序上延长了两个时钟周期。
54.由于加法器每个时钟周期都会进行计算,为了保证每个时钟周期加法器都会正常计算并实现累加,将奇数时钟周期从加法器输出的数据送入奇数寄存器131,将偶数时钟周期从加法器输出的数据送入偶数寄存器132,从而可以使得奇数寄存器131和偶数寄存器132的电路延时均衡。
55.需要说明的是,第二寄存器组140所包括的第二寄存器数量以及配置位置并不局限于如图3所示的配置结果,例如,第二寄存器组140中的第二寄存器可以仅配置在加法器内,或者,第二寄存器组140中的至少一个第二寄存器配置在乘法器内,其余第二寄存器配置在加法器内等等,具体可以根据实际需要确定,本公开实施例对此并不限制。
56.应当理解的是,第一寄存器组130所包括的第一寄存器数量并不局限于如图3所示的两个,随第二寄存器组所包括的第二寄存器数量的改变,第一寄存器组所包括的第一寄存器数量也发生变化。例如,当在加法器中设置一个第二寄存器时,乘累加装置正常工作需要将原始时钟周期划分为两个子时钟周期,因此需要在加法器后面配置两个第一寄存器;当在加法器中设置两个第二寄存器时,乘累加装置正常工作需要将原始时钟周期划分为三个子时钟周期,则需要在加法器后面配置三个第一寄存器,也就是说,第一寄存器的数量比
设置在加法器内的第二寄存器的数量多1。
57.示例性的,如图3所示,乘累加运算装置100还可以包括逻辑控制器150,所述逻辑控制器150的输入端分别与所述奇数寄存器131和偶数寄存器132的输出端相连,所述逻辑控制器150的输出端与所述加法器120的加法器前部121相连,该逻辑控制器150用于依序将所述奇数寄存器131和偶数寄存器132的乘累加运算结果送入所述加法器。
58.下文将以一个具体示例描述本公开实施例的乘累加运算装置的运算过程:
59.以16组输入数据为例:
60.原有的乘累加装置执行乘累加时的数据时序流程如图4所示:a,b分别是乘法器输入,m是乘法器输出,s是加法器输出。
61.s0=a0*b0
62.s1=a0*b0+a1*b1
63.s2=a0*b0+a1*b1+a2*b2
64.s3=a0*b0+a1*b1+a2*b2+a3*b3
65....
66.相同输入数据,本公开实施例的乘累加装置执行的数据时序流程如图5所示:由于乘法器插入了寄存器,所以乘法器是延长一个时钟周期才出结果。相同道理,加法器是在得到乘法结果延长两个时钟周期后得到结果。
67.sa0=a0*b0
68.sb1=a1*b1
69.sa2=a0*b0+a2*b2
70.sb3=a1*b1+a3*b3
71.sa4=a0*b0+a2*b2+a4*b4
72.sb5=a1*b1+a3*b3+a5*b5
73.…
74.最后sa14是所有偶数输入乘累加的结果,sb15是所有奇数输入乘累加,两个结果相加就是所有输入的乘累加结果。
75.本公开实施例的乘累加运算装置,通过在乘法器和加法器中插入第二寄存器,从而降低寄存器之间的逻辑深度,提高电路的工作频率。此外,由于逻辑深度的降低,从而可以使得电路可以在性能不变的前提下,降低工作电压,从而节省功耗。最后,因为第二寄存器的插入,有效的打断了毛刺的传播,进一步减少动态功耗。
76.下面,将参考图6描述根据本公开另一实施例的乘累加运算方法,该乘累加运算方法可以采用前文记载的乘累加运算装置100,乘累加运算装置100的具体结构可以参考前文相关记载,在此不作赘述。
77.如图6所示,一种乘累加运算方法s100,包括:
78.s110、将乘累加运算结果在时序上至少延长一个时钟周期;
79.s120、多个第一寄存器根据延长的时钟周期的间隔依序接收乘累加运算结果,以使得所述多个第一寄存器的电路延时均衡。
80.本公开实施例的乘累加运算方法,采用前文记载的乘累加运算装置,其通过设置第二寄存器组,可以使得加法器结果输出到第一寄存器组中各第一寄存器的电路延时均
衡。此外,插入第二寄存器组前后的组合逻辑深度比较均衡,从而有效的降低原有的组合逻辑的深度,使得相同电压下电路可以工作在更高频率,提高性能。同时,也可以通过降低电路工作低压,使其在性能不变的前提下有效的减少电路的动态功耗。
81.在可选地一些实施方式中,所述多个第一寄存器的数量为两个,分别为奇数寄存器和偶数寄存器,所述多个第一寄存器根据延长的时钟周期的间隔依序接收乘累加运算结果,包括:
82.所述奇数寄存器接收奇数时钟周期的乘累加运算结果;
83.所述偶数寄存器接收所述偶数时钟周期的乘累加运算结果。
84.本公开的另一个方面,提供一种计算核,包括至少一个上述乘累加装置。
85.本公开的另一个方面,提供一种芯片,包括至少一个上述计算核。
86.本公开的另一个方面,提供一种电子设备,包括:
87.一个或多个处理器;
88.一个存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据前文记载的方法。
89.本公开的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的方法。
90.其中,计算机可读介质可以是本公开的装置、设备、系统中所包含的,也可以是单独存在。
91.其中,计算机可读存储介质可是任何包含或存储程序的有形介质,其可以是电、磁、光、电磁、红外线、半导体的系统、装置、设备,更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、光纤、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件,或它们任意合适的组合。
92.其中,计算机可读存储介质也可包括在基带中或作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码,其具体的例子包括但不限于电磁信号、光信号,或它们任意合适的组合。
93.本公开的另一个方面,提供一种计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的方法。
94.可以理解的是,计算机程序可以存储于计算机存储介质中,如前文记载的随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)等等。
95.可以理解的是,以上实施方式仅仅是为了说明本公开的原理而采用的示例性实施方式,然而本公开并不局限于此。对于本领域内的普通技术人员而言,在不脱离本公开的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本公开的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1