CN104252331B - 乘累加器 - Google Patents

乘累加器 Download PDF

Info

Publication number
CN104252331B
CN104252331B CN201310270210.8A CN201310270210A CN104252331B CN 104252331 B CN104252331 B CN 104252331B CN 201310270210 A CN201310270210 A CN 201310270210A CN 104252331 B CN104252331 B CN 104252331B
Authority
CN
China
Prior art keywords
row
adder
register
grade
input
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.)
Active
Application number
CN201310270210.8A
Other languages
English (en)
Other versions
CN104252331A (zh
Inventor
张庆学
赵长虹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310270210.8A priority Critical patent/CN104252331B/zh
Publication of CN104252331A publication Critical patent/CN104252331A/zh
Application granted granted Critical
Publication of CN104252331B publication Critical patent/CN104252331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供一种乘累加器。该乘累加器包括M级运算元素列,其中,第1级运算元素列中包括N个乘法器,第2至第M级运算元素列中的运算元素均为加法器,任一所述乘法器或所述加法器连接有寄存器,其中,与第一加法器连接的寄存器为乒乓寄存器,第一加法器为加法器中的至少一个加法器,乒乓寄存器用于存储所述第一加法器在至少两个运算时刻分别输出的相加结果,并将所述相加结果在对应的运算时刻分别输出给后一级运算元素列的加法器或作为所述乘累加器的运算结果输出。本发明提供的乘累加器解决现有技术乘累加器在多维数据随机出现时效率低的问题,从而提高运算效率。

Description

乘累加器
技术领域
本发明涉及数据处理技术,尤其涉及一种乘累加器。
背景技术
乘累加器(Multiply and Accumulate,简称MAC)用于完成向量相乘、矩阵相乘和向量矩阵互乘等乘累加运算,是协处理器(Cooperation Processor,简称CP)、数字信号处理器(Digital Signal Processing,简称DSP)、中央处理器(Central Processing Unit,简称CPU)和专用指令处理器(Application Specific Instruction Processor,简称ASIP)等处理器中极其重要的运算子系统。乘累加器架构作为矢量指令的架构载体,可以应用在多个领域中完成重要的功能,如通信领域中长期演进(Long Term Evolution,简称LTE)上下行多入多出通信技术(Multiple Input Multiple Output,简称MIMO)编码和译码的向量或矩阵处理、下行波束成形技术(Beam Forming,简称BF)中的天线数据加权处理,信号处理领域中的数据处理,图形图像领域中的数据处理。
现有的乘累加器包括M级运算元素列,M为大于等于2的自然数;其中,第1级运算元素列中每行的运算元素为乘法器,且第1级中运算元素的行数为N,N为自然数,等于所述乘累加器支持的最大输入数据维度,且2^(M-1)=N;第2级至第M级的运算元素列中包括加法器,每级加法器的行数为前级乘法器或前级加法器行数的二分之一;每个乘法器和每个加法器分别连接有寄存器,所述寄存器用于在每个运算时刻记录该运算元素的运算结果并输出。例如,图1为现有乘累加器的架构示意图,参考图1,该累加器架构由8个支持16比特复乘的乘法器和7个加法器组成,各乘法器分别记为M1-M8,各加法器分别记为A11-A14、A21、A22和A31,即M为4,N为8。每个乘法器和加法器分别连接一个寄存器,记为R。所述乘法器位于输入端的第一级,用于处理两个16比特复数向量相乘,由于乘法器数量为8所以最大支持8维向量或矩阵相乘。其结果通过连接的寄存器输出给下级加法器,加法器用于处理前一级的两个运算元素输出结果的相加运算,其结果通过连接的寄存器输出给下一级运算元素,直至从加法器A31输出最终的向量相乘结果。矩阵相乘原理相同,此处不再举例。向量的维数是指向量中的元素的个数,例如两个8维向量相乘,其中向量X中含x1、x2、x3、x4、x5、x6、x7和x8这8个元素,向量Y中含y1、y2、y3、y4、y5、y6、y7和y8这8个元素,乘累加器完成的向量X和Y相乘运算就是两个向量中的元素对应相乘并累加,即x1×y1+x2×y2+x3×y3+x4×y4+x5×y5+x6×y6+x7×y7+x8×y8。图1中的8个乘法器可记为M1、Mn、……M8,n从1到8,Mn用于处理xn×yn运算,每个乘法器对向量中对应元素相乘后在寄存器中缓存,再如箭头所示,输出相乘结果到加法器进行相加处理,相加后的结果在寄存器中缓存,而后输出到后级的加法器,以此类推,直至最后一级加法器相加后输出。如图1所示,节点A处的加法器A21处理8维向量中前4个元素对应相乘并累加的结果,即x1×y1+x2×y2+x3×y3+x4×y4,B节点的加法器A22处理8维向量中后4个元素对应相乘并的结果,即x5×y5+x6×y6+x7×y7+x8×y8,然后在节点C将节点A的结果和节点B的结果相加。
乘法器的效率=参与运算的乘法器的数量/乘法器的总量,则上述现有乘累加器中乘法器的效率为8/8=100%。上述MAC架构只能在完成该8维向量相乘运算后,才能处理下个向量的运算,如果下个输入是两个4维向量的元素,该MAC架构完成两个4维向量里的元素对应相乘时,只占用一半的资源即只通过A节点到C节点输出,这时会有4个乘法器空闲,乘法器的效率为(8+4)/(8+8)=75%。完成上述4维向量相乘运算后,如果下个输入是2维向量,必须要等到4维向量输出后才能处理,而且只有2个乘法器参与运算处理,其余6个乘法器处于空闲,这时乘法器效率为(8+4+2)/(8*3)=58%。
现有技术存在的一个问题是,当输入向量的维度是8、4和2随机出现时,现有MAC架构的效率会进一步降低。而在实际场景中,不同维度的向量、矩阵大多是不规律出现的,比如通信领域中的MIMO或BF处理,所配置的天线数可能不同,那么其算法配置中的层数、天线数、波束成形方式等都可能不同,由此使得一个载扇内大量的MIMO、BF处理具有不同的维度,而如何在不同维度随机共存的情况下,提升MAC运算的处理效率非常重要,直接影响到通信时延指标、通信设备的成本、功耗等各方面。
现有技术还有一个问题是当维度继续增加时,比如支持到16、32维,该MAC架构无法支持多维的共存,而只能把数据按每8个分为一组,分组来处理。
发明内容
本发明实施例提供一种乘累加器,以解决现有技术乘累加器在多维数据随机出现时效率低的问题,从而提高运算效率。
第一方面,本发明实施例提供一种乘累加器,包括:
M级运算元素列,其中,第1级运算元素列中包括N个运算元素,所述N个运算元素均为乘法器,第2至第M级运算元素列中的运算元素均为加法器,第i-1级运算元素列中的运算元素每两个划分为一组,第i级运算元素列中的每个加法器与第i-1级运算元素列中的一组运算元素相连,用于对所连接的运算元素的运算结果进行求和,任一所述乘法器或所述加法器连接有寄存器,所述寄存器用于在每个运算时刻记录所述乘法器或所述加法器的运算结果并输出,M为大于等于2的自然数,N=2M-1,i为自然数且1<i≤M;
与第一加法器连接的所述寄存器为乒乓寄存器,所述第一加法器为所述加法器中的至少一个加法器,所述乒乓寄存器用于存储所述第一加法器在至少两个运算时刻分别输出的相加结果,并将所述相加结果在对应的运算时刻分别输出给后一级运算元素列的加法器或作为所述乘累加器的运算结果输出,所述相加结果为所述第一加法器的前一级运算元素列中的至少两个运算元素分别输出的运算结果之和。
在第一方面的第一种可能的实现方式中,所述乘累加器还包括:
至少一个附加寄存器,设置于第3级至第M级运算元素列中,且每级运算元素列中的附加寄存器与加法器数量之和等于N/2,各附加寄存器与前级运算元素或前级附加寄存器相连,用于直接获取前级的输出结果并输出。
在第一方面的第二种可能的实现方式中,所述乒乓寄存器包括至少两个寄存器,所述乒乓寄存器中的各个寄存器用于在不同运算时刻记录运算结果并输出。
在第一方面的第三种可能的实现方式中,所述乒乓寄存器设置在第2级至第M-1级运算元素列中,且设置在第m级的乒乓寄存器与该级倒数第2^(m-2)行的加法器连接,其中,2≤m≤M-1。
根据第一方面、第一方面的第一种至第三种任意一种可能的实现方式,在第四种可能的实现方式中,至少一个加法器为多输入加法器,所述多输入加法器与前级的三个以上运算元素分别相连,用于将所述三个以上运算元素的运算结果相加。
根据第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述多输入加法器为三输入加法器,每个三输入加法器与前级的三行运算元素分别相连,所述三输入加法器设置在第3级至第M-1级运算元素列中,设置在第m级的三输入加法器位于倒数第L行,其中L=(2^(m-2))×n,L的取值范围满足(2^(m-2))×n≤N/2,其中,n≥1,3≤m≤M-1;
所述三输入加法器与上一级加法器中行数最接近的三个运算元素分别相连;
其它加法器为二输入加法器,每个二输入加法器与前级的两行运算元素分别相连。
根据第一方面、第一方面的第一种至第三种任意一种可能的实现方式,在第六种可能的实现方式中,第M级第1行的加法器为末级三输入加法器,所述末级三输入加法器的两个输入分别与前级的两个加法器相连,所述末级三输入加法器的输出连接至所述末级三输入加法器的第三个输入。
根据第一方面、第一方面的第一种至第三种任意一种可能的实现方式,在第七种可能的实现方式中:
N=8,M=4;
所述乒乓寄存器的数量为一个,设置在第3级第2行,用于分别存储两个时刻输出的两个相加结果,其中一个输出结果用于提供给第4级加法器,另一个输出结果用于通过附加寄存器直接输出;
所述附加寄存器的数量为一个,与上级所述乒乓寄存器相连,获取所述乒乓寄存器的输出结果并输出。
根据第一方面的第五种可能的实现方式,在第一方面的第八种可能的实现方式中:
N=8,M=4;
乒乓寄存器的数量为两个,分别为设置在第2级倒数第1行的第一乒乓寄存器和第3级倒数第2行的第二乒乓寄存器,所述第一乒乓寄存器的输出分别与第3级中的第1行、第3行和第4行运算元素相连,所述第二乒乓寄存器的输出分别与第4级中的第1行和第3行运算元素相连;
三输入加法器的数量为两个,分别为设置在第3级倒数第2行的第一三输入加法器和第3级倒数第4行的第二三输入加法器,所述第一三输入加法器的输入分别与第2级中的第1行、第2行和第4行运算元素相连,所述第二三输入加法器的输入分别与第2级中的第2行、第3行和第4行运算元素相连;
第2级的运算元素为二输入加法器,数量为四个,其输入分别与第1级乘法器相连;
第4级第1行运算元素为二输入加法器,其输入分别与第3级中第1行和第3行运算元素相连,其结果直接输出;
附加寄存器的数量为5,分别设置在第3级第2行、第3级第4行、第4级第2行、第4级第3行和第4级第4行。
根据第一方面的第六种可能的实现方式,在第一方面的第九种可能的实现方式中:
N=8,M=4;
乒乓寄存器的数量为两个,分别为设置在第2级倒数第1行的第一乒乓寄存器和第3级倒数第2行的第二乒乓寄存器,所述第一乒乓寄存器的输出分别与第3级中的第1行、第3行和第4行运算元素相连,所述第二乒乓寄存器的输出分别与第4级中的第1行和第4行运算元素相连;
三输入加法器的数量为两个,分别为设置在第3级倒数第2行的第一三输入加法器和第3级倒数第4行的第二三输入加法器,所述第一三输入加法器的输入分别与第2级中的第1行、第2行和第4行运算元素相连,所述第二三输入加法器的输入分别与第2级中的第2行、第3行和第4行运算元素相连;
第2级运算元素为二输入加法器,数量为四个,其输入分别与第1级乘法器相连;
所述第4级第1行运算元素为所述末级三输入加法器,其中两个输入分别与第3级中第1行和第3行运算元素相连,第三输入为前一时刻所述第三三输入加法器的输出送至所述第三三输入加法器的输入端;
附加寄存器的数量为5,分别设置在第3级第2行、第3级第4行、第4级第2行、第4级第3行和第4级第4行。
根据第一方面的第五种可能的实现方式,在第一方面的第十种可能的实现方式中:
N=16,M=5;
乒乓寄存器的数量为三个,分别为设置在第2级倒数第1行的第一乒乓寄存器、第3级倒数第2行的第二乒乓寄存器和第4级倒数第4行的第三乒乓寄存器,其中第一乒乓寄存器的输出分别与第3级中第1行、第3级第7行和第3级第8行设置的附加寄存器相连,第二乒乓寄存器的输出分别与第4级中第1行、第4级第5行和第4级第7行设置的附加寄存器相连,第三乒乓寄存器的输出分别与第5级中第1行加法器和第5级第5行设置的附加寄存器相连;
三输入加法器的数量为六个,其中4个分别设置在第3级中的第1、3、5和7行,其中2个分别设置在第4级中的第1和5行,所述三输入加法器的输入分别与所述三输入加法器的前一级运算元素中行数最接近的运算元素的寄存器相连;
第2级运算元素为二输入加法器;
第5级第1行运算元素为一个二输入加法器;
所述附加寄存器的数量为十七个,其中四个分别设置在第3级中的第2、4、6和8行,其中六个分别设置在第4级中的第2、3、4、6、7和8行,其余七个分别设在第5级中除第1行之外。
根据第一方面的第五种可能的实现方式,在第一方面的第十一种可能的实现方式中:
N=16,M=5;
乒乓寄存器的数量为三个,分别为设置在第2级倒数第1行的第一乒乓寄存器、第3级倒数第2行的第二乒乓寄存器和第4级倒数第4行的第三乒乓寄存器,其中第一乒乓寄存器的输出分别与第3级中第1行、第3级第7行和第3级第8行设置的附加寄存器相连,第二乒乓寄存器的输出分别与第4级中第1行、第4级第5行和第4级第7行设置的附加寄存器相连,第三乒乓寄存器的输出分别与第5级中第1行加法器和第5级第5行设置的附加寄存器相连;
三输入加法器的数量为六个,其中4个分别设置在第3级中的第1、3、5和7行,其中2个分别设置在第4级中的第1和5行,所述三输入加法器的输入分别与所述三输入加法器的前一级运算元素中行数最接近的运算元素的寄存器相连;
第2级运算元素为二输入加法器;
所述第5级第1行运算元素为所述末级三输入加法器,新增第三输入为前一时刻该所述第5级的三输入加法器的输出送至所述三输入加法器的输入端;
所述附加寄存器的数量为十七个,其中四个分别设置在第3级中的第2、4、6和8行,其中六个分别设置在第4级中的第2、3、4、6、7和8行,其余七个分别设在第5级中除第1行之外。
本发明实施例提供的乘累加器,通过所述乒乓寄存器,可以同时存储所连接加法器在至少两个运算时刻输出的各相加结果,并将各相加结果分别向后一级的加法器输出或直接作为乘累加器的结果输出,以实现不同维度的向量乘法或矩阵乘法并存时自适应乘累加,提高了效率,解决现有MAC架构对于当输入向量的维度是8、4和2随机出现时效率降低的问题,同时能支持更高维度的向量或矩阵乘累加运算。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有的乘累加器的架构示意图;
图2a为本发明乘累加器实施例一的结构示意图;
图2b为本发明乘累加器实施例二的时序图;
图3a为本发明乘累加器实施例二的结构示意图;
图3b为本发明乘累加器实施例二的时序图;
图4为本发明乘累加器实施例三的结构示意图;
图5为本发明乘累加器实施例四的结构示意图;
图6为本发明乘累加器实施例五的结构示意图;
图7a为本发明乘累加器实施例七的运算元素结构图;
图7b为本发明乘累加器实施例七的横向拓扑图;
图7c为本发明乘累加器实施例七的又一横向拓扑图;
图7d为本发明乘累加器实施例七的纵向拓扑图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种乘累加器,包括M级运算元素列,其中,第1级运算元素列中包括N个运算元素,所述N个运算元素均为乘法器,第2至第M级运算元素列中的运算元素均为加法器,第i-1级运算元素列中的运算元素每两个划分为一组,第i级运算元素列中的每个加法器与第i-1级运算元素列中的一组运算元素相连,用于对所连接的运算元素的运算结果进行求和,任一所述乘法器或所述加法器连接有寄存器,所述寄存器用于在每个运算时刻记录所述乘法器或所述加法器的运算结果并输出,M为大于等于2的自然数,N=2M-1,i为自然数且1<i≤M。
本实施例的乘累加器中,与第一加法器连接的所述寄存器为乒乓寄存器,所述第一加法器为所述加法器中的至少一个加法器,所述乒乓寄存器用于存储所述第一加法器在至少两个运算时刻分别输出的相加结果,并将所述相加结果在对应的运算时刻分别输出给后一级运算元素列的加法器或作为所述乘累加器的运算结果输出,所述相加结果为所述第一加法器的前一级运算元素列中的至少两个运算元素分别输出的运算结果之和。
该乘累加器可以作为加速器,也可以集成在处理器的数据运算元素中。本发明实施例通过设置乒乓寄存器,可以充分利用空闲的乘法器,适应多维度向量的乘法计算。
其中,上述方案中所述乒乓寄存器实现存储多个运算时刻的相加结果,可以通过设置一个有两个以上存储位置的寄存器来实现,或者也可以包括至少两个寄存器,乒乓寄存器中的各个寄存器用于在不同运算时刻记录运算结果并输出。多个寄存器即可在多个运算时刻分别记录运算结果并输出。
进一步地,所述乒乓寄存器是根据所述第1级运算元素列中,与所述乒乓寄存器对应的,乘法器所计算的元素对应的向量的维数,自动将所述相加结果缓存至下一运算时刻,从而在对应的运算时刻,输出给后一级运算元素列的加法器或作为所述乘累加器的运算结果输出,详细原理请参考图2a和图2b的内容。
本实施例中的乘累加器结构图可参考图2a,图2a为本发明乘累加器实施例一的结构示意图,图2a中乒乓寄存器设在与加法器A122相连的节点B处。
本实施例中,由于设置了乒乓寄存器,可以在乒乓寄存器中同时存储两个运算时刻输出的各相加结果,并将各相加结果在对应的运算时刻分别向后一级的运算元素输出,从而使乘累加器可以在本次运算还未完成但是只要有乘法器是空闲的就可以进行下次数据的乘法运算,提高了乘累加器的效率。
上述实施例基础上,乘累加器还可优选包括至少一个附加寄存器,所述附加寄存器设置于第3级至第M级运算元素列中,且每级运算元素列中的附加寄存器与加法器数量之和等于N/2,各附加寄存器与前级运算元素或前级附加寄存器相连,用于直接获取前级的输出结果并输出。
附加寄存器不进行相乘或相加的运算,只用于在该运算时刻将前级的输出结果直接输出,所以根据需要,可以在每列运算元素之外剩余的部分或全部位置均设置附加寄存器,这取决于前级有多少需直接输出的结果。
在本发明实施例的各方案中,乒乓寄存器的位置优选是,设置在第2级至第M-1级运算元素列中,且设置在第m级的乒乓寄存器与该级倒数第2^(m-2)行的加法器连接,其中,2≤m≤M-1。
按照上述规则确定乒乓寄存器的位置所在的级数和行数,能够在不同运算时刻同时存储不同维数的矢量相乘后相加的结果。下面通过典型实例进行详细介绍。
实施例一
图2a为本发明乘累加器实施例一的结构示意图,本实施例以上述技术方案为基础,且可以参照图1,在图1所示乘累加器的基础上进行了改进。如图2a所示,本实施例所述乘累加器支持的最大输入数据维度N=8,运算元素列的级数M=4。
所述乒乓寄存器的数量为一个,设置在第3级第2行,即B点处加法器所连接的寄存器为乒乓寄存器。所述乒乓寄存器所连接的加法器A122的输入分别与第2级中的第3行和第4行加法器相连,该乒乓寄存器用于分别存储加法器A122两个时刻输出的两个相加结果,其中一个输出结果用于提供给第4级加法器A131,另一个输出结果用于通过附加寄存器R132直接输出;
所述附加寄存器R132的数量为一个,与上级所述乒乓寄存器相连,获取所述乒乓寄存器的输出结果并输出。
如图2a所示,本实施例具体包括:第1级运算元素的行数为8,每行运算元素由1个乘法器及所述乘法器后连接的寄存器组成,如图2a中乘法器M11、M12、M13、M14、M15、M16、M17和M18;第2级运算元素的行数为4,每行运算元素由1个加法器及所述加法器后连接的寄存器组成,如图2a中的加法器A111、A112、A113和A114;第3级运算元素的行数为2,其中第1行运算元素为1个加法器及所述加法器后连接的寄存器组成,如图2a中加法器A121,第2行运算元素为1个加法器及所述加法器后连接的乒乓寄存器组成,如图2a中加法器A122;第4级运算元素行数为2,其中第1行运算元素为1个加法器及所述加法器后连接的寄存器组成,如图2a中加法器A131,第2行运算元素为1个附加寄存器R132。
每个乘法器和每个加法器分别连接有寄存器,所述寄存器用于在每个运算时刻记录运算结果并输出,所述乘法器及与所述乘法器连接的寄存器构成一个运算元素,所述加法器及与所述加法器连接的寄存器构成一个运算元素。
为方便说明,本实施例以8维向量和4维向量随机共存进行乘累加运算为例,其时序关系图如图2b所示。例如首先输入的是2个8维向量X和Y,向量X中的元素X中含x1、x2、x3、x4、x5、x6、x7和x8这8个元素,向量Y中含y1、y2、y3、y4、y5、y6、y7和y8这8个元素,乘累加器要完成的运算是x1×y1+x2×y2+x3×y3+x4×y4+x5×y5+x6×y6+x7×y7+x8×y8。
在t1运算时刻,参考图2a,第1级运算元素完成输入数据的乘法运算,即乘法器M11完成x1×y1,乘法器M12完成x2×y2,依次类推乘法器M18完成x8×y8。每个乘法器的结果通过与该乘法器相连接的寄存器输出至第2级加法器。
乘法器M11和M12的结果通过第2级加法器A111完成相加运算,乘法器M13和M14的结果通过第2级加法器A112完成相加运算,加法器A111的结果通过与A111相连接的寄存器输出至第3级加法器A121的输入端,加法器A112的结果通过与加法器A112相连接的寄存器输出至加法器A121的输入端,如图2a中节点A处完成了x1×y1+x2×y2+x3×y3+x4×y4的结果,为方便说明将所述结果记为8a。
同理图2a中B节点完成x5×y5+x6×y6+x7×y7+x8×y8,在当前运算时刻,加法器A122所连接的乒乓寄存器存储的是x5×y5+x6×y6+x7×y7+x8×y8的结果,为方便说明将所述结果记为8b。
如图2b所示,在t1时刻,A点和B点的寄存器存储的结果分别为8a和8b。
加法器A121的结果和加法器A122的结果输出至第4级第1行加法器A131的输入端中,加法器A131完成x1×y1+x2×y2+x3×y3+x4×y4+x5×y5+x6×y6+x7×y7+x8×y8的结果,并通过与加法器A131相连接的寄存器输出,即形成C点处的相加结果,如图2b所示。此时刻从C点的寄存器就可获得8维向量的乘累加结果,这样便完成了整个8维向量乘累加运算。
本次运算中,所有的乘法器使用率是100%。
如果第2个输入是两个4维向量,即t2运算时刻输入的是两个4维向量,则只需要通过乘法器M11、M12、M13和M14完成向量的乘累加运算,通过加法器A131输出结果,即在A点寄存器处的结果为“4”,如图2b所示。其余乘法器可在该运算时刻并行处理下个数据的其中4个元素相乘累加。
例如这时第3个输入是两个8维向量X1和Y1,那么X1中的前4个元素和Y1中的前4个元素可以在t2运算时刻,通过M15至M18完成运算,其结果存储在加法器A122相连的乒乓寄存器中,即B点处的乒乓寄存器记录t2运算时刻的结果8a,这时所述乒乓寄存器中只存储8a,此时并不输出8a,所述乒乓寄存器中在t1运算时刻输入时存储的8b已经输出。
X1中的后4个元素和Y1中的后4个元素在t3运算时刻通过乘法器M11至M14完成运算,其结果存储在加法器A121相连的A点寄存器中,该结果记为8b。在t3时刻,B点乒乓寄存器在t2运算时刻存储的8a和A点寄存器存储的8b一起送至加法器A131中相加并通过与A131相连的C点寄存器输出。
如果第4个输入是两个8维向量X2和Y2,和上述过程同理,向量X2和Y2前4个元素通过乘法器M15、M16、M17和M18完成运算,其结果记为8a,8a在与加法器A122相连接的B点乒乓寄存器中存储,但此时不能输出,需要等X2和Y2中后4个元素运算完,向量X2和Y2后4个元素通过乘法器M11、M12、M13和M14完成运算,其结果记为8b,8b存储在与加法器A121相连的A点寄存器中,这时乘法器M15、M16、M17和M18是空闲的,如果第5个输入是4维向量,那么该4维向量可以使用乘法器M15、M16、M17和M18进行运算,其结果记为4,存储在与加法器A122相连的B点乒乓寄存器中,这时所述乒乓寄存器中在上一时刻已经存储了8a,8a等待8b到来时一起输出至加法器A131,从而完成8维向量X2和Y2的乘累加运算。运算结果4等8b输出后通过附加寄存器R132直接输出,从而完成该4维向量的运算。
上述过程中,无论下次输入数据是8维还是4维,乘法器的使用没有空闲时刻,效率都是100%。
本实施例,通过在乘累加器中使用所述乒乓寄存器,同时存储两个时刻的运算结果并依此输出,从而实现了乘法器100%高效处理,解决现有技术中乘累加器效率低的问题。
以图2a和2b的乘累加器工作原理可知,乒乓寄存器用于在所对应的乘法器和加法器进行运算后,将至少两个运算时刻获得的运算结果逐一进行存储,以便该运算结果可利用至下一运算时刻。以两个运算时刻为例,乒乓寄存器在第一运算时刻存储第一运算结果;在第二运算时刻,自动将第一运算结果缓存,同时也可获取第第二运算时刻上一级提供的第二运算结果。由此,第一运算结果既可在第一运算时刻使用,也可以在第二运算时刻使用,具体是直接输出还是提供给下一级加法器,则根据具体的向量维度运算需求而定。可以通过在不同运算时刻向不同的乘法器输入向量的不同部分来控制乒乓寄存器存储哪个运算结果。由此,该乘累加器架构可以根据不同的维度组合自动配置加法数据流向。一组处理可跨越至少2个处理周期,乒乓寄存器自动存储上一处理周期的结果用于下一处理周期的处理,支持所有乘法器全利用并行输出多路结果。
实施例二
图3a为本发明乘累加器实施例二的结构示意图。本实施例是在上述实施例基础上,对乘累加器的结构做出改动以实现8维、4维和2维随机出现时乘累加器高效率运算,本实施例优选采用以下结构:
所述乒乓寄存器设置在第2级至第M-1级运算元素列中,且设置在第m级的乒乓寄存器与该级倒数第2^(m-2)行的加法器连接,其中,2≤m≤M-1。
并且,本实施例中,优选是至少一个加法器为多输入加法器,所述多输入加法器与前级的三个以上运算元素分别相连,用于将所述三个以上运算元素的运算结果相加。采用多输入加法器可以计算多个前级运算结果之和,能够将各次运算结果进行灵活组合,满足乘累加器对向量计算的需求。
该多输入加法器典型为三输入加法器,每个三输入加法器与前级的三行运算元素分别相连,所述三输入加法器设置在第3级至第M-1级运算元素列中,设置在第m级的三输入加法器位于倒数第L行,其中L=(2^(m-2))×n,L的取值范围满足(2^(m-2))×n≤N/2,其中,n≥1,3≤m≤M-1;
所述三输入加法器与上一级加法器中行数最接近的三个运算元素分别相连。
需要说明的,所述行数最接近是按最后1行和第1行相接计算,例如和第1行行数最接近的是第1行、第2行和第4行,而不是第1行、第2行和第3行,和第3行行数最接近的是第2行、第3行和第4行。
其它加法器为二输入加法器,每个二输入加法器与前级的两行运算元素分别相连。
具体地,参考图3a,本实施例中所述乘累加器支持的最大输入数据维度N=8,运算元素列的级数M=4。
乒乓寄存器的数量为两个,参考图3a,其中第一乒乓寄存器与第2级倒数第1行的加法器A214相连,第二乒乓寄存器与第3级倒数第2行的加法器A223相连,设置在加法器A214相连的第一乒乓寄存器的输出分别与三输入加法器A221、三输入加法器A223和附加寄存器R224相连,其中一个时刻的运算结果同时输出给了三输入加法器A221和附加寄存器R224。设置在加法器A223相连的第二乒乓寄存器的输出分别与加法器A231和附加寄存器R233相连。
三输入加法器的数量为两个,第一三输入加法器为设置在第3级倒数第2行的三输入加法器A223,第二三输入加法器为设置在第3级倒数第4行的三输入加法器A221,三输入加法器A223的输入分别为加法器A212、加法器A213和加法器A214相连的寄存器,三输入加法器A221的输入分别为加法器A211、加法器A212和加法器A214相连的寄存器。
第2级运算元素为二输入加法器,数量为四个,如图3a中加法器A211、加法器A212、加法器A213和加法器A214,加法器A211连接乘法器M21和乘法器M22相连的寄存器,以完成对乘法器M21的结果和乘法器M22的结果进行相加运算,加法器A212、加法器A213和加法器A214的作用类似。
第4级第1行运算元素为加法器A231,是一个二输入加法器,其输入分别与第3级中第1行和第3行运算元素相连,其结果直接输出;
所述附加寄存器的数量为5,如图3a中附加寄存器R222、附加寄存器R224、附加寄存器R232、附加寄存器R233和附加寄存器R234。
为方便说明,本实施例以输入数据8维、4维及2维随机出现进行说明,例如输入数据顺序依次是8维、4维、2维、8维和4维的向量。图3b为本发明乘累加器实施例二的时序图,结合图3a和图3b对处理输入数据的过程进行详细说明,具体如下:
在t4运算时刻,对于第1个输入的两个8维向量X3和Y3,乘法器M21至M28所有的乘法器都参与运算。在t5运算时刻所有乘法器的结果送至下一级的加法器A211至A214,参考图3b中节点H、I、J、K,其中节点H处的寄存器存储的数据h81为X3和Y3中第1个元素和第2个元素分别对应相乘后累加的结果,节点I处的寄存器存储的数据i81为X3和Y3中第3个元素和第4个元素分别对应相乘后累加的结果,依次类推j81和k81。在t6运算时刻数据h81和i81通过加法器A221相加并存储在节点A1处的寄存器,也就是加法器A221相连的寄存器,依次类推数据j81和k81相加的结果存储在节点B1处的乒乓寄存器。在t7运算时刻节点A1和节点B1处的数据通过加法器A231完成相加运算送至节点C1处的寄存器,即X3和Y3的乘累加结果在A231中完成最后一次相加运算并通过A231相连的寄存器输出。
然后,在t8运算时刻,当第2个输入数据是两个4维向量X4和Y4时,通过乘法器M21、M22、M23和M24完成乘累加运算,在t9运算时刻分别送至下级运算元素,即图3a中的加法器A211和加法器A212,图3b中节点H处存储的是加法器A211的结果h41,节点I处存储的是加法器A212的结果i41。在t10运算刻h41和i41通过加法器A221完成相加运算并存储在与加法器A221相连的寄存器中,即图3b中的节点A1。在t11运算时刻通过加法器A231相连的寄存器输出结果,即节点C1输出。需要说明的是加法器A231的另一个输入来源是前级加法器A223相连的乒乓寄存器,所述加法器A223相连的乒乓寄存器在这时刻没有存储任何数据,因此C1输出的是向量X4和Y4乘累加的结果。
在t8运算时刻由于乘法器M25、M26、M27和M28这时空闲,可以同时进行下一个输入数据的处理,即乘法器M25、M26完成2维向量X5和Y5的乘法运算,在t9运算时刻将其乘法结果通过加法器A213完成相加运算,结果记为j2,j2在t10运算时刻送至加法器A223并存储在加法器A223相连的乒乓寄存器中,在t11运算时刻通过附加器存器R233输出。
在t8运算时刻,还有乘法器M27和乘法器M28是空闲的,因此可以处理8维向量X6和Y6的前两个元素相乘,在t9运算时刻将其乘法结果通过加法器A214完成相加运算,结果记为h82,存储在与加法器A214相连的乒乓寄存器中,即图3b节点K处,h82并不在下一次运算时刻输出而是等待X6和Y6中其他元素也完成乘法运算的时候再输出至下一级运算元素。等待t12运算时刻乘法器M21和乘法器M22分别完成X6和Y6的第3个和第4个元素分别对应相乘,乘法器M23和乘法器M24分别完成X6和Y6的第5个和第6个元素分别对应相乘,乘法器M25和乘法器M26分别完成X6和Y6的第7个和第8个元素分别对应相乘,同时,在t12运算时刻乘法器M27和乘法器M28已空闲可以完成下个输入数据两个4维向量X7和Y7的前2个元素对应相乘,在t13运算时刻,将乘法器M21至M28的结果分别送至下级运算元素,通过加法器A211至A214完成相加运算,其结果为图3b节点H处的i82,节点I处的j82,节点J处的k82,节点K处的h42。节点K为与加法器A214相连的乒乓寄存器,t9运算时刻已存储了h82,t13运算时刻又送入了h42,即在t13运算时刻同时存储了h82和h42两个数据。其中,h82是X6和Y6的前2个元素相乘的结果,在t14运算时刻,h82和i82一起送入三输入加法器A221进行相加运算,其结果存储在A1处;j82和k82一起送入加法器A223进行相加运算,其结果存储在B1处。等t14运算时刻A1处的数据和B1处的数据通过加法器A231进行相加,然后在t15运算时刻通过与加法器A231相连的寄存器输出,至此完成8维X6和Y6的乘累加结果。在t16运算时刻乘法器M21和乘法器M22完成X7和Y7后两个元素相乘,将其相乘结果在t17运算时刻通过加法器A211进行相加运算,相加后的结果记为i42,等到t18运算时刻i42和节点K处的乒乓寄存器中存储的h42一起送至节点A1处完成相加运算,在t19运算时刻通过节点C1输出结果,至此完成4维X7和Y7的乘累加结果。
上述过程中,8个乘法器使用效率始终是100%,无需等本次数据完全处理完才处理下次数据的乘法,极大提高了乘累加器的效率。
本实施例,通过乘累加器中第2级运算元素和第3级运算元素中乒乓寄存器并增加附加寄存器输出通路,及第3级运算元素三输入加法器,实现输入数据当8维、4维及2维随机出现时乘法器100%效率的运行,极大提高乘累加器的效率。
实施例三
图4为本发明乘累加器实施例三的结构示意图。本实施例是在实施例二基础上,不增加资源的情况下,通过将第4级二输入加法器替换为三输入加法器,如果输入数据维度大于8维的时候,对输入数据先每8个一组,通过第4级的三输入加法器循环累加,从而支持16维的处理,具体结构参考图4,如下:
本实施例中所述乘累加器支持的最大输入数据维度N=8,运算元素列M=4;
乒乓寄存器的数量为两个,第一乒乓寄存器设置在第2级倒数第1行,第二乒乓寄存器设置在第3级倒数第2行,如图4中加法器A314相连的乒乓寄存器和加法器A323相连的乒乓寄存器,设置在加法器A314相连的乒乓寄存器的输出分别与三输入加法器A321、三输入加法器A323和附加寄存器R324相连,设置在加法器A323相连的乒乓寄存器的输出分别与加法器A331和附加寄存器R333相连。
三输入加法器的数量为两个,第一三输入加法器为设置在第3级倒数第2行的三输入加法器A323,第二三输入加法器为设置在第3级倒数第4行的三输入加法器A321,三输入加法器A323的输入分别为加法器A312、加法器A313和加法器A314相连的寄存器,三输入加法器A321的输入分别为加法器A311、加法器A312和加法器A314相连的寄存器。
第2级运算元素为二输入加法器,数量为四个,如图4中加法器A311、加法器A312、加法器A313和加法器A314,加法器A311连接乘法器M31和乘法器M32相连的寄存器,以完成对乘法器M31的结果和乘法器M32的结果进行相加运算,加法器A312、加法器A313和加法器A314的作用类似。
第4级第1行运算元素为末级三输入加法器A331,其中两个输入分别为加法器A321相连的寄存器和加法器A323相连的乒乓寄存器,第三输入为前一时刻该加法器A331的输出送至加法器A331的输入端。
所述附加寄存器的数量为5,如图4中附加寄存器R322、附加寄存器R324、附加寄存器R332、附加寄存器R333和附加寄存器R334。
本实施例增设了末级三输入加法器的运算元素,即第M级第1行的加法器为末级三输入加法器,所述末级三输入加法器的两个输入分别与前级的两个加法器相连,所述末级三输入加法器的输出连接至所述末级三输入加法器的第三个输入。采用此技术方案,该乘累加器可以支持的最大维度可成倍增长。末级三输入加法器首先计算一个N维向量的乘累加结果,并通过三输入加法器返回至输入,而后下一个时刻计算另外N维向量的乘累加结果,后面的乘累加结果与返回的乘累加结果再次相加,即最终得到了2N维向量的累加结果。
以16维为例进行说明。当输入数据大于8维时,例如是16维,由于本实施例所述乘累加器支持的最大输入数据维度N=8,在不增加运算元素的情况下,通过对输入数据先每8个分组,第1组中的8个数据乘累加的结果存在加法器A331相连的寄存器中先不直接输出,等待第2组中的8个数据要进行最后一次乘累加,即要送入加法器A331进行相加时,第1组数据的结果通过加法器A331的输出端送入加法器A331的输入端和第2组的数据一起相加,即通过第4级的三输入加法器循环累加,从而支持16维的处理。
本实施例,通过第4级的三输入加法器完成循环累加,从而在不增加运算元素资源的情况下,支持16维的乘累加处理。
实施例四
图5为本发明乘累加器实施例四的结构示意图。在上述实施例基础上,本实施例增加乘法器、加法器和附加寄存器的个数,可以一次就处理16维数据的乘累加运算。具体结构参考图5。
本实施例中所述乘累加器支持的最大输入数据维度N=16,运算元素列M=5。
乒乓寄存器的数量为三个,第一乒乓寄存器设置在第2级倒数第1行,第二乒乓寄存器设置在第3级倒数第2行,第三乒乓寄存器设置在第4级倒数第4行,参考如5中加法器A418、加法器A427和加法器A435相连的乒乓寄存器,其中与加法器A418相连的乒乓寄存器的输出分别与加法器A421、加法器A427和附加寄存器R428相连,与加法器A427相连的乒乓寄存器的输出分别与加法器A431、加法器A435和附加寄存器R437相连,与加法器A435相连的乒乓寄存器的输出分别与加法器A441和附加寄存器R445相连。
三输入加法器的数量为六个,如图5中加法器A421、加法器A423、加法器A425、加法器A427、加法器A431和加法器A435。所述三输入加法器的输入分别与所述三输入加法器的前一级运算元素中最接近的运算元素的寄存器相连,参考图5,其中加法器A421的输入分别是加法器A411、加法器A412和加法器A418相连的寄存器,加法器A423的输入分别是加法器A412、加法器A413和加法器A414相连的寄存器,加法器A425的输入分别是加法器A414、加法器A415和加法器A416相连的寄存器,加法器A427的输入分别是加法器A416、加法器A417和加法器A418相连的寄存器,加法器A431的输入分别是加法器A421、加法器A423和加法器A427相连的寄存器,加法器A435的输入分别是加法器A423、加法器A425和加法器A427相连的寄存器。
第2级运算元素为二输入加法器,如图5中的加法器A411、加法器A412、加法器A413、加法器A414、加法器A415、加法器A416、加法器A417和加法器A418。
第5级第1行运算元素为一个二输入加法器,如图5中的加法器A441。
所述附加寄存器的数量为十七个,参考图5中的第3级运算元素中的附加寄存器R422、附加寄存器R424、附加寄存器R426和附加寄存器R428,第4级运算元素中的附加寄存器R432、附加寄存器R433、附加寄存器R434、附加寄存器R436、附加寄存器R437和附加寄存器R438,第5级运算元素中的附加寄存器R442、附加寄存器R443、附加寄存器R444、附加寄存器R445、附加寄存器R446、附加寄存器R447和附加寄存器R448。
本实施例,通过增加乘法器、加法器和附加寄存器个数,可以一次完成16维数据的乘累加运算,同时通过乒乓寄存器可以高效率处理多维数据随机共存时乘累加效率,原理和上述实施例一样,此处不再赘述。
实施例五
图6为本发明乘累加器实施例五的结构示意图。本实施例是在上述实施例五基础上,不增加资源的情况下,通过将第5级第1行的二输入加法器替换为三输入加法器,如果输入数据维度大于16维的时候,对输入数据先每16个一组,通过第5级的三输入加法器循环累加,从而支持32维的处理,具体结构参考图6。
如图6所示,本实施例中所述乘累加器支持的最大输入数据维度N=16,运算元素列M=5。
乒乓寄存器的数量为三个,第一乒乓寄存器设置在第2级倒数第1行,第二乒乓寄存器设置在第3级倒数第2行,第三乒乓寄存器设置在第4级倒数第4行,参考如5中加法器A518、加法器A527和加法器A535相连的乒乓寄存器,其中与加法器A518相连的乒乓寄存器的输出分别与加法器A521、加法器A527和附加寄存器R528相连,与加法器A527相连的乒乓寄存器的输出分别与加法器A531、加法器A535和附加寄存器R537相连,与加法器A535相连的乒乓寄存器的输出分别与加法器A541和附加寄存器R545相连。
三输入加法器的数量为六个,如图5中加法器A521、加法器A523、加法器A525、加法器A527、加法器A531和加法器A535。所述三输入加法器的输入分别与所述三输入加法器的前一级运算元素中最接近的运算元素的寄存器相连,参考图5,其中加法器A521的输入分别是加法器A511、加法器A512和加法器A518相连的寄存器,加法器A523的输入分别是加法器A512、加法器A513和加法器A514相连的寄存器,加法器A525的输入分别是加法器A514、加法器A515和加法器A516相连的寄存器,加法器A527的输入分别是加法器A516、加法器A517和加法器A518相连的寄存器,加法器A531的输入分别是加法器A521、加法器A523和加法器A527相连的寄存器,加法器A535的输入分别是加法器A523、加法器A525和加法器A527相连的寄存器。
第2级运算元素为二输入加法器,如图5中的加法器A511、加法器A512、加法器A513、加法器A514、加法器A515、加法器A516、加法器A517和加法器A518。
第5级第1行运算元素为一个末级三输入加法器A541,如图6中其中两个输入分别为加法器A531相连的寄存器和加法器A535相连的乒乓寄存器,第三输入为前一时刻该加法器A541的输出送至加法器A541的输入端。
所述附加寄存器的数量为十七个,参考图5中的第3级运算元素中的附加寄存器R522、附加寄存器R524、附加寄存器R526和附加寄存器R528,第4级运算元素中的附加寄存器R532、附加寄存器R533、附加寄存器R534、附加寄存器R536、附加寄存器R537和附加寄存器R538,第5级运算元素中的附加寄存器R542、附加寄存器R543、附加寄存器R544、附加寄存器R545、附加寄存器R546、附加寄存器R547和附加寄存器R548。
当输入数据大于16维时,例如是32维,由于本实施例所述乘累加器支持的最大输入数据维度N=16,在不增加运算元素的情况下,通过对输入数据先每16个分组,第1组中的16个数据乘累加的结果存在加法器A541相连的寄存器中先不直接输出,等待第2组中的16个数据要进行最后一次乘累加,即要送入加法器A531进行相加时,第1组数据的结果通过加法器A541的输出端送入加法器A541的输入端和第2组的数据一起相加,即通过第5级的三输入加法器循环累加,从而支持32维的处理。
本实施例,通过第5级的三输入加法器完成循环累加,从而在不增加运算元素资源的情况下,支持更高维度的乘累加处理。
实施例七
本发明实施例提供的乘累加器还可以根据实际需要,基于基本的运算元素进行灵活扩展,从而实现扩展性高、通用性强的乘累加器。
参考图7a,图7a为本发明乘累加器实施例七的运算元素结构图。可以将各种运算元素以符号标记表示,从而便于形成符号标记形式的乘累加器拓扑图。
图7a中一个二输入乘法器和一个寄存器组成的运算元素,用于对2个数据进行相乘运算并存储运算结果,该运算元素表示为2*R;
一个二输入加法器和一个寄存器组成的运算元素,用于对2个数据进行相加运算并存储运算结果,该运算元素表示为2+R;
一个三输入加法器和一个寄存器组成的运算元素,三输入加法器虽然有3个输入通道但是只对同时输入的2个数据进行相加,该运算元素表示为3+R;
一个二输入加法器和一个乒乓寄存器组成的运算元素,用于对2个数据进行相加运算并能同时存储两个运算时刻的运算结果,该运算元素表示为2+RR;
一个三输入加法器和一个乒乓寄存器组成的运算元素,用于对2个数据进行相加运算并能同时存储两个运算时刻的运算结果,该运算元素表示为3+RR;
附加寄存器,用于获取前级运算元素的输出结果并输出,该运算元素表示为R。
通过上述运算元素2*R、2+R、3+R、2+RR、3+RR和R的不同组合,运用到本发明任意实施例的乘累加器中,可以实现高效率,通用性强的自适应的乘累加器。
具体地,通过上述运算元素组成乘累加器拓扑结构扩展时,可以有两种方式,一种是横向拓扑,另一种是纵向拓扑。所述横向拓扑是指不增加运算元素的扩展,利用在不同运算时刻向乘累加输入分组的向量,而使累加器可支持不同维度的向量相乘。所述纵向拓扑是指通过增加运算元素的扩展来实现不同向量的乘累加。
例如实施例二中的乘累加器可以采用符号标记表示为图7b所示的拓扑图,图7b为本发明乘累加器实施例七的横向拓扑图,可以支持8维、4维和2维向量或矩阵等输入数据随机出现进行高效率的乘累加。当该乘累加器需要支持更高维数据乘累加时,例如是16维时,如果不增加运算元素可采用横向拓扑,可参考图7c,图7c为本发明乘累加器实施例七的又一横向拓扑图,可以支持16维、8维、4维和2维向量或矩阵等输入数据随机出现进行高效率的乘累加,图7c的乘累加器和图7b的乘累加器相比,没有增加运算元素,只是将图7b最后一级运算元素的2+R替换为一个3+R,即末级累加器。该乘累加器首先运算8维向量的乘累加结果,并输入最后一级的三输入加法器进行记录,而后在另一运算时刻计算剩余8维向量的乘累加结果,也输入最后一级的三输入加法器,与此前的乘累加结果相加,得到16维向量的乘累加结果。
如果增加运算元素可采用纵向拓扑,参考图7d,图7d为本发明乘累加器实施例七的纵向拓扑图。同理,如果需要支持更高维度32维时,既可以采用纵向拓扑,又可采用横向拓扑,也可以同时采用横向拓扑和纵向拓扑,根据设计者的具体需求灵活使用。
本发明实施例还提供一种加速器,该加速器包括上述实施例任意所述的乘累加器,该加速器可高效率支持多维数据随机出现时的乘累加运算,其技术效果类似,此处不再赘述。
本发明实施例还提供一种处理器,该处理器的数据运算元素由上述实施例任意所述的乘累加器组成,同时对处理器的指令或存储单元进行相应修改,即可高效率支持多维数据随机出现时的乘累加运算,其技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (12)

1.一种乘累加器,其特征在于,包括:
M级运算元素列,其中,第1级运算元素列中包括N个运算元素,所述N个运算元素均为乘法器,第2至第M级运算元素列中的运算元素均为加法器,第i-1级运算元素列中的运算元素每两个划分为一组,第i级运算元素列中的每个加法器与第i-1级运算元素列中的一组运算元素相连,用于对所连接的运算元素的运算结果进行求和,任一所述乘法器或所述加法器连接有寄存器,所述寄存器用于在每个运算时刻记录所述乘法器或所述加法器的运算结果并输出,M为大于等于2的自然数,N=2M-1,i为自然数且1<i≤M;
与第一加法器连接的所述寄存器为乒乓寄存器,所述第一加法器为所述加法器中的至少一个加法器,所述乒乓寄存器用于存储所述第一加法器在至少两个运算时刻分别输出的相加结果,并将所述相加结果在对应的运算时刻分别输出给后一级运算元素列的加法器或作为所述乘累加器的运算结果输出,所述相加结果为所述第一加法器的前一级运算元素列中的至少两个运算元素分别输出的运算结果之和。
2.根据权利要求1所述的乘累加器,其特征在于,所述乘累加器还包括:
至少一个附加寄存器,设置于第3级至第M级运算元素列中,且每级运算元素列中的附加寄存器与加法器数量之和等于N/2,各附加寄存器与前级运算元素或前级附加寄存器相连,用于直接获取前级的输出结果并输出。
3.根据权利要求1所述的乘累加器,其特征在于,所述乒乓寄存器包括至少两个寄存器,所述乒乓寄存器中的各个寄存器用于在不同运算时刻记录运算结果并输出。
4.根据权利要求1所述的乘累加器,其特征于:
所述乒乓寄存器设置在第2级至第M-1级运算元素列中,且设置在第m级的乒乓寄存器与该级倒数第2^(m-2)行的加法器连接,其中,2≤m≤M-1。
5.根据权利要求1至4任一所述的乘累加器,其特征于:
至少一个加法器为多输入加法器,所述多输入加法器与前级的三个以上运算元素分别相连,用于将所述三个以上运算元素的运算结果相加。
6.根据权利要求5所述的乘累加器,其特征在于,
所述多输入加法器为三输入加法器,每个三输入加法器与前级的三行运算元素分别相连,所述三输入加法器设置在第3级至第M-1级运算元素列中,设置在第m级的三输入加法器位于倒数第L行,其中L=(2^(m-2))×n,L的取值范围满足(2^(m-2))×n≤N/2,其中,n≥1,3≤m≤M-1;
所述三输入加法器与上一级加法器中行数最接近的三个运算元素分别相连;
其它加法器为二输入加法器,每个二输入加法器与前级的两行运算元素分别相连。
7.根据权利要求1至4任一所述的乘累加器,其特征于:
第M级第1行的加法器为末级三输入加法器,所述末级三输入加法器的两个输入分别与前级的两个加法器相连,所述末级三输入加法器的输出连接至所述末级三输入加法器的第三个输入。
8.根据权利要求1至4任一所述的乘累加器,其特征在于:
N=8,M=4;
所述乒乓寄存器的数量为一个,设置在第3级第2行,用于分别存储两个时刻输出的两个相加结果,其中一个输出结果用于提供给第4级加法器,另一个输出结果用于通过附加寄存器直接输出;
所述附加寄存器的数量为一个,与上级所述乒乓寄存器相连,获取所述乒乓寄存器的输出结果并输出。
9.根据权利要求6所述的乘累加器,其特征在于:
N=8,M=4;
乒乓寄存器的数量为两个,分别为设置在第2级倒数第1行的第一乒乓寄存器和第3级倒数第2行的第二乒乓寄存器,所述第一乒乓寄存器的输出分别与第3级中的第1行、第3行和第4行运算元素相连,所述第二乒乓寄存器的输出分别与第4级中的第1行和第3行运算元素相连;
三输入加法器的数量为两个,分别为设置在第3级倒数第2行的第一三输入加法器和第3级倒数第4行的第二三输入加法器,所述第一三输入加法器的输入分别与第2级中的第1行、第2行和第4行运算元素相连,所述第二三输入加法器的输入分别与第2级中的第2行、第3行和第4行运算元素相连;
第2级的运算元素为二输入加法器,数量为四个,其输入分别与第1级乘法器相连;
第4级第1行运算元素为二输入加法器,其输入分别与第3级中第1行和第3行运算元素相连,其结果直接输出;
附加寄存器的数量为5,分别设置在第3级第2行、第3级第4行、第4级第2行、第4级第3行和第4级第4行。
10.根据权利要求7所述的乘累加器,其特征在于:
N=8,M=4;
乒乓寄存器的数量为两个,分别为设置在第2级倒数第1行的第一乒乓寄存器和第3级倒数第2行的第二乒乓寄存器,所述第一乒乓寄存器的输出分别与第3级中的第1行、第3行和第4行运算元素相连,所述第二乒乓寄存器的输出分别与第4级中的第1行和第4行运算元素相连;
三输入加法器的数量为两个,分别为设置在第3级倒数第2行的第一三输入加法器和第3级倒数第4行的第二三输入加法器,所述第一三输入加法器的输入分别与第2级中的第1行、第2行和第4行运算元素相连,所述第二三输入加法器的输入分别与第2级中的第2行、第3行和第4行运算元素相连;
第2级运算元素为二输入加法器,数量为四个,其输入分别与第1级乘法器相连;
所述第4级第1行运算元素为所述末级三输入加法器,其中两个输入分别与第3级中第1行和第3行运算元素相连,第三输入为前一时刻所述末级三输入加法器的输出送至所述末级三输入加法器的输入端;
附加寄存器的数量为5,分别设置在第3级第2行、第3级第4行、第4级第2行、第4级第3行和第4级第4行。
11.根据权利要求6所述的乘累加器,其特征在于:
N=16,M=5;
乒乓寄存器的数量为三个,分别为设置在第2级倒数第1行的第一乒乓寄存器、第3级倒数第2行的第二乒乓寄存器和第4级倒数第4行的第三乒乓寄存器,其中第一乒乓寄存器的输出分别与第3级中第1行、第3级第7行和第3级第8行设置的附加寄存器相连,第二乒乓寄存器的输出分别与第4级中第1行、第4级第5行和第4级第7行设置的附加寄存器相连,第三乒乓寄存器的输出分别与第5级中第1行加法器和第5级第5行设置的附加寄存器相连;
三输入加法器的数量为六个,其中4个分别设置在第3级中的第1、3、5和7行,其中2个分别设置在第4级中的第1和5行,所述三输入加法器的输入分别与所述三输入加法器的前一级运算元素中行数最接近的运算元素的寄存器相连;
第2级运算元素为二输入加法器;
第5级第1行运算元素为一个二输入加法器;
所述附加寄存器的数量为十七个,其中四个分别设置在第3级中的第2、4、6和8行,其中六个分别设置在第4级中的第2、3、4、6、7和8行,其余七个分别设在第5级中除第1行之外。
12.根据权利要求6所述的乘累加器,其特征在于:
N=16,M=5;
乒乓寄存器的数量为三个,分别为设置在第2级倒数第1行的第一乒乓寄存器、第3级倒数第2行的第二乒乓寄存器和第4级倒数第4行的第三乒乓寄存器,其中第一乒乓寄存器的输出分别与第3级中第1行、第3级第7行和第3级第8行设置的附加寄存器相连,第二乒乓寄存器的输出分别与第4级中第1行、第4级第5行和第4级第7行设置的附加寄存器相连,第三乒乓寄存器的输出分别与第5级中第1行加法器和第5级第5行设置的附加寄存器相连;
三输入加法器的数量为六个,其中4个分别设置在第3级中的第1、3、5和7行,其中2个分别设置在第4级中的第1和5行,所述三输入加法器的输入分别与所述三输入加法器的前一级运算元素中行数最接近的运算元素的寄存器相连;
第2级运算元素为二输入加法器;
所述第5级第1行运算元素为末级三输入加法器,新增第三输入为前一时刻该所述第5级的三输入加法器的输出送至所述三输入加法器的输入端;
所述附加寄存器的数量为十七个,其中四个分别设置在第3级中的第2、4、6和8行,其中六个分别设置在第4级中的第2、3、4、6、7和8行,其余七个分别设在第5级中除第1行之外。
CN201310270210.8A 2013-06-29 2013-06-29 乘累加器 Active CN104252331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310270210.8A CN104252331B (zh) 2013-06-29 2013-06-29 乘累加器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310270210.8A CN104252331B (zh) 2013-06-29 2013-06-29 乘累加器

Publications (2)

Publication Number Publication Date
CN104252331A CN104252331A (zh) 2014-12-31
CN104252331B true CN104252331B (zh) 2018-03-06

Family

ID=52187287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310270210.8A Active CN104252331B (zh) 2013-06-29 2013-06-29 乘累加器

Country Status (1)

Country Link
CN (1) CN104252331B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325812B (zh) * 2015-06-15 2019-03-08 华为技术有限公司 一种针对乘累加运算的处理方法及装置
CN109710559A (zh) * 2016-11-03 2019-05-03 北京中科寒武纪科技有限公司 Slam运算装置和方法
CN106844294B (zh) * 2016-12-29 2019-05-03 华为机器有限公司 卷积运算芯片和通信设备
CN108629405B (zh) * 2017-03-22 2020-09-18 杭州海康威视数字技术股份有限公司 提高卷积神经网络计算效率的方法和装置
CN108475188A (zh) * 2017-07-31 2018-08-31 深圳市大疆创新科技有限公司 数据处理方法和设备
US20190392287A1 (en) * 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
CN109634556B (zh) * 2018-11-06 2021-04-23 极芯通讯技术(南京)有限公司 一种乘累加器及累加输出方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134669A (ja) * 1987-11-20 1989-05-26 Matsushita Electric Ind Co Ltd 累算器付乗算器
WO1994020900A1 (en) * 1993-03-12 1994-09-15 Integrated Information Technology, Inc. Video compression/decompression processing and processors
TW200414025A (en) * 2003-01-30 2004-08-01 Faraday Tech Corp Multiply accumulator for two n bit multipliers and an m bit addend
CN1820246A (zh) * 2003-05-09 2006-08-16 杉桥技术公司 执行饱和或不执行饱和地累加多操作数的处理器还原单元
CN1963745A (zh) * 2006-12-01 2007-05-16 浙江大学 高速分裂式乘累加器mac装置
CN100349442C (zh) * 2004-05-28 2007-11-14 中兴通讯股份有限公司 一种乒乓缓冲装置
US8433744B1 (en) * 2008-09-22 2013-04-30 Altera Corporation Programmable multiply accumulate (MAC) circuit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134669A (ja) * 1987-11-20 1989-05-26 Matsushita Electric Ind Co Ltd 累算器付乗算器
WO1994020900A1 (en) * 1993-03-12 1994-09-15 Integrated Information Technology, Inc. Video compression/decompression processing and processors
TW200414025A (en) * 2003-01-30 2004-08-01 Faraday Tech Corp Multiply accumulator for two n bit multipliers and an m bit addend
CN1820246A (zh) * 2003-05-09 2006-08-16 杉桥技术公司 执行饱和或不执行饱和地累加多操作数的处理器还原单元
CN100349442C (zh) * 2004-05-28 2007-11-14 中兴通讯股份有限公司 一种乒乓缓冲装置
CN1963745A (zh) * 2006-12-01 2007-05-16 浙江大学 高速分裂式乘累加器mac装置
US8433744B1 (en) * 2008-09-22 2013-04-30 Altera Corporation Programmable multiply accumulate (MAC) circuit

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DSP处理器系统结构研究;荆元利;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑(季刊)》;20030315(第01期);I137-13 *
FIR数字滤波器的FPGA实现技术研究;李彬;《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》;20071015(第04期);I135~145 *
可变2~n点流水线FFT处理器的设计与实现;高振斌,等;《北京理工大学学报》;20050331;第25卷(第3期);268~271 *
基于FPGA的IIR数字滤波器的设计与实现;曾菊容;《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》;20081215(第12期);I135-89 *

Also Published As

Publication number Publication date
CN104252331A (zh) 2014-12-31

Similar Documents

Publication Publication Date Title
CN104252331B (zh) 乘累加器
CN109543832B (zh) 一种计算装置及板卡
CN106844294B (zh) 卷积运算芯片和通信设备
CN109062611A (zh) 神经网络处理装置及其执行向量缩放指令的方法
CN103955447B (zh) 基于dsp芯片的fft加速器
CN105512723A (zh) 一种用于稀疏连接的人工神经网络计算装置和方法
CN107797962A (zh) 基于神经网络的计算阵列
CN108960418A (zh) 神经网络处理装置及其执行矩阵向量乘指令的方法
CN107491811A (zh) 用于加速神经网络处理器的方法和系统及神经网络处理器
CN107957976A (zh) 一种计算方法及相关产品
CN108108190A (zh) 一种计算方法及相关产品
CN109754062A (zh) 卷积扩展指令的执行方法以及相关产品
CN114092336B (zh) 基于双线性插值算法的图像缩放方法、装置、设备及介质
CN108334944A (zh) 一种人工神经网络运算的装置及方法
CN107957977A (zh) 一种计算方法及相关产品
CN107516131A (zh) 卷积计算的加速方法和装置、电子设备和存储介质
CN104504205B (zh) 一种对称fir算法的并行化二维分割方法及其硬件结构
CN112051981B (zh) 一种数据流水线计算路径结构及单线程数据流水线系统
CN108108189A (zh) 一种计算方法及相关产品
CN108090028A (zh) 一种计算方法及相关产品
CN108074285A (zh) 体积云模拟方法和体积云模拟装置
CN111786410A (zh) 一种基于网损误差的配电网网损分摊方法及系统
CN110490308A (zh) 加速库的设计方法、终端设备及存储介质
CN111736802A (zh) 一种基于操作数裁剪的乘法器
CN110458277A (zh) 适用于深度学习硬件加速器的可配置精度的卷积硬件结构

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210427

Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040

Patentee after: Honor Device Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.