CN104407836A - 利用定点乘法器进行级联乘累加运算的装置和方法 - Google Patents
利用定点乘法器进行级联乘累加运算的装置和方法 Download PDFInfo
- Publication number
- CN104407836A CN104407836A CN201410543121.0A CN201410543121A CN104407836A CN 104407836 A CN104407836 A CN 104407836A CN 201410543121 A CN201410543121 A CN 201410543121A CN 104407836 A CN104407836 A CN 104407836A
- Authority
- CN
- China
- Prior art keywords
- multiply
- port
- cascade
- operand
- point multiplication
- 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.)
- Granted
Links
Landscapes
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种利用定点乘法器进行级联乘累加运算的装置和方法,将所述32位有符号定点乘法器内部划分为4个17位有符号定点乘法器,通过译码单元产生的使能信号控制17位有符号定点乘法器输入操作数,32位有符号定点乘法器能够执行定乘法计算和级联乘累加中乘法运算部分;将所述32位有符号定点乘法器与匹配乘累加单元按照一定规则组织成阵列形式,能够很好地实现级联乘累加运算。本发明提高了灵活性,节约了硬件资源,而且能够很好地实现大量数据的并行和流水计算,获得更好的实时性能和资源利用率。
Description
技术领域
本发明属于数字电路技术领域,适用于与级联乘累加相关的数字滤波、图像匹配应用的快速计算。
背景技术
在数字滤波、图像匹配中,涉及到大量复杂的级联乘累加运算。由于信号处理中数据量大、处理过程复杂,即使采用高性能数字信号处理器来完成相关计算,电子系统也不能很好的满足数据处理的实时性要求。随着半导体技术的革新,越来越多的信号处理算法直接采用硬件形式实现,从而为提高数据处理的实时性能提供了一种全新的方式。通过硬件形式直接实现数字信号的处理不仅增强了系统可靠性,提高了系统工作效率,而且减少了系统处理数据的延迟。
现有的级联乘累加运算一般都采用若干相互独立的乘累加单元通过级联方式组合而成,独立计算单元组合方法具有电路复杂、体积及功耗大、灵活性差等缺点。在计算单元设计中,电路功能固定,不可配置,这使得硬件资源利用率较低,不能充分合理地运用硬件资源。
发明内容
为了克服现有技术的不足,本发明提供一种利用32位有符号定点乘法器进行级联乘累加的装置和方法。本发明对32位有符号定点乘法器进行了定制设计,通过分解定点乘法器、复用电路资源和增加较少的电路资源,实现定点乘法器支持级联乘累加运算。为了实现级联乘累加运算,本发明中还设计了一种与所述32位有符号定点乘法器相匹配的级联乘累加单元,通过将所述32位有符号定点乘法器和匹配乘累加单元按照一定规则组成阵列形式实现级联乘累加运算。
本发明解决其技术问题所采用的技术方案是:包含一个译码单元、n个所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)、3*n个与所述32位有符号定点乘法器相匹配的积累乘累加单元Mac(1)~Mac(3*n);
所述32位有符号定点乘法器输入数据端口包含32位操作数端口DA和DB,级联乘累加并发输入操作数端口MDA1、MDA2、MDA3,级联乘累加级联输入操作数端口MDB1、MDB2、MDB3,级联乘累加进位输入操作数端口MacI,级联乘累加使能有效端口MEn0、MEn1、MEn2、MEn3;输出数据端口包含乘法结果输出端口D0、级联乘加结果输出端口MacO、级联乘法结果端口MD01、MD02和MD03。所述32位有符号定点乘法器电路结构采有三级流水结构;
所述32位有符号定点乘法器中,第一级流水中完成数据预处理和部分乘法运算;本级流水所包含4组17×17位有符号定点乘法器M1~M4,其中所述17×17位有符号定点乘法器M1~M4数据端口包含输入操作数端口U1A~U4A、U1B~U4B和计算结果输出端口mpyerout1~mpyerout4;本级流水段中数据预处理阶段完成数据的分解与合并,预处理后的数据分别经过二选一数据选择器送至所述17×17位有符号定点乘法器M1~M4的输入数据端口U1A~U3A和U1B~U3B,其中所述二选一数据选择器均由与其相对应的级联乘累加使能信号控制数据选择;
所述32位有符号定点乘法器中,第二级流水段完成17位有符号定点乘法运算;所述17×17位有符号定点乘法器M1~M4计算结果依次为mpyerout1~mpyerout4;计算结果mpyerout1作为DoSig1的高32位,计算结果mpyerout1作为DoSig1的低32位拼接为一个64位数据DoSig1并寄存到流水寄存器,计算结果mpyerout3和mpyerout4直接寄存到流水寄存器,使能信号MEn0、MEn1、MEn2、MEn3完成流水寄存;mpyerout4、mpyerout2和mpyerout1经过第二级流水寄存器寄存后分别输出至输出端口MD01、MD02和MD03;
所述32位有符号定点乘法器中,第三级流水段完成对乘法计算结果的处理;将所述17×17位有符号定点乘法器M4经过流水寄存的计算结果mpyerout4(31)&mpyerout4(31downto 0)和级联乘累加进位输入操作数’0’&MacI经过使能信号MEn2控制数据输出的二选一选择器送至33位有符号加法器输入操作数DataA端口;将所述17×17位有符号定点乘法器M3经过流水寄存的计算结果mpyerout3(31)&mpyerout3(31 downto 0)送至33位有符号加法器输入操作数DataB端口,进行33位有符号加法计算得到计算结果为DoSig2,并将DoSig2的低32位作为定点乘法器单元中乘累加结果寄存输出至端口MacO;对DoSig2和DoSig1(63 downto 16)完成49位有符号加法运算,并将运算结果作为DoSig的高49位数据,Dosig1(15 downto0)作为DoSig的低16位数据合并为一个65位数据DoSig,将DoSig的低64位数据作为32位有符号定点数乘法器输出结果D0;
所述译码单元根据输入的操作运算类型CType完成电路译码,产生运算过程中需要的使能和控制信号;
所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)完成定点乘法和级联乘累加中所有乘法计算部分;当所述32位有符号定点乘法器进行有符号定点乘法计算时,译码单元经过译码产生使能控制信号,使级联乘累加使能有效MEn0、MEn1、MEn2、MEn3均为0,输入操作数DA和DB,经过3个时钟周期输出64位定点乘法计算结果,否则进行级联乘累加计算;进行级联乘累加计算时,所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3均输入级联乘累加并发操作数,操作数端口DB和操作数端口MDB1、MDB2、MDB3分别输入级联乘累加级联操作数;译码单元经过译码产生起始乘累加单元乘法器使能信号MEn,经过一拍时钟寄存后输入至与其相邻的下一个级联乘累加单元乘法器使能信号Men;若当前级联乘累加乘法使能信号MEn有效,则执行当前乘累加单元中乘法计算,并经过两拍时钟周期后将乘法器结果输出至当前乘累加单元的加法器操作端口,否则,当前乘累加单元不执行乘法计算;若当前乘累加单元为定点乘法器时,则在定点乘法器第三级流水中完成乘累加中加法部分,否则当前乘累加单元为匹配乘累加单元,乘法结果输入至与其匹配的乘累加单元中完成加法计算;若当前乘累加单元不为起始乘累加单元,则与其相邻上一个乘累加单元的操作数MacO输出至当前乘累加单元的操作数MacI端口,否则,当前乘累加单元为起始乘累加单元,当前乘累加单元的操作数MacI端口输入为0;
所述与32位有符号定点乘法器相匹配的积累乘累加单元Mac(1)~Mac(3*n)完成级联乘累加单元中加法部分;匹配乘累加单元结构包含一个加法器和一个流水寄存器;输入数据包含级联乘累加进位输入操作数MacI和级联乘累加乘法结果输入端口,输出数据包含级联乘累加进位输出操作数MacO;若当前乘累加单元不为起始乘累加单元,与其相邻上一个乘累加单元的操作数MacO输出至当前乘累加单元的操作数MacI端口,否则,当前乘累加单元为起始乘累加单元,当前乘累加单元的操作数MacI端口输入为0;级联乘累加单元相对应的乘法器结果MD输入至级联乘累加单元乘法结果数据输入端口,经过加法器计算,对计算的乘累加结果经过一拍流水寄存输出MacO端口;若最后一个乘累加单元完成乘累加计算,则经过一级流水寄存输出级联乘累加结果,否则输出中间计算结果。
本发明中所述利用32位定点乘法器实现级联乘累加运算的方法步骤如下:
1)译码单元根据运算操作类型完成译码,产生相关的译码控制信号;
2)当运算操作类型为32位有符号定点乘法时,在译码控制信号的控制下,级联乘累加乘法器使能均为0,输入操作数DA和DB,经过3个时钟节拍,完成有符号定点乘法计算并输出64位定点乘法器计算结果;
3)否则,执行级联乘累加运算;将第一个并发输入操作数以并发方式输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3,将4*n个级联输入操作数分别输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数DB和操作数MDB1、MDB2、MDB3,起始乘累加单元的进位输入操作数端口MacI输入为0;在译码信号的控制下,起始乘累加乘法使能MEn0有效,开始执行级联乘累加运算,每经过一个时钟节拍,将下一个并发输入操作数以并发方式输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3,将当前乘累加单元的乘法器使能输送至下一个乘累加单元的乘法器使能MEn端口;下一个乘累加单元乘法器使能有效,开始乘法计算,并将计算结果经过流水寄存后输入至本乘累加单元中的加法器操作数端口,完成加法计算,经过一级流水寄存后输出至下一级的乘累加单元进位输入操作数端口MacI;按照上述执行方式经过若干时钟节拍,当最后一个乘累加单元完成乘累加计算时,经过一级流水寄存输出级联乘累加的计算结果。
本发明的有益效果是:利用32位有符号定点乘法器实现了级联乘累加运算,通过对32位有符号定点乘法器进行专门定制设计,将所述32位有符号定点乘法器内部划分为4个17位有符号定点乘法器,通过译码单元产生的使能信号控制17位有符号定点乘法器输入操作数,32位有符号定点乘法器能够执行定乘法计算和级联乘累加中乘法运算部分。将所述32位有符号定点乘法器与匹配乘累加单元按照一定规则组织成阵列形式,能够很好地实现级联乘累加运算。本发明设计了一种全新的定点乘法器,通过与匹配乘累加单元组织成阵列形式实现级联乘累加,比现有的级联乘累加单元相比较进一步提高了灵活性,节约了硬件资源,而且能够很好地实现大量数据的并行和流水计算,获得更好的实时性能和资源利用率。
附图说明
图1为32位有符号定点乘法器具体流水结构示意图。
图2为32位有符号定点乘法器执行定点乘法计算电路结构示意图。
图3为32位有符号定点乘法器执行级联乘累加计算时电路结构示意图。
图4为级联乘累加中匹配乘累加单元电路结构示意图。
图5为利用32位有符号定点乘法器进行级联乘累加计算的阵列结构示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。
本发明中采用了如下的电路设计方案。
首先,本发明中定制设计了一种32位有符号定点乘法器。所述32位有符号定点乘法器输入数据端口包含32位操作数端口DA和DB,级联乘累加并发输入操作数端口MDA1、MDA2、MDA3,级联乘累加级联输入操作数端口MDB1、MDB2、MDB3,级联乘累加进位输入操作数端口MacI,级联乘累加使能有效端口MEn0、MEn1、MEn2、MEn3。输出数据端口包含乘法结果输出端口D0、级联乘加结果输出端口MacO、级联乘法结果端口MD01、MD02和MD03。所述32位有符号定点乘法器电路结构采有三级流水结构。
所述32位有符号定点乘法器中,第一级流水中完成数据预处理和部分乘法运算。本级流水所包含4组17×17位有符号定点乘法器M1~M4,其中所述17×17位有符号定点乘法器M1~M4数据端口包含输入操作数端口U1A~U4A、U1B~U4B和计算结果输出端口mpyerout1~mpyerout4。本级流水段中数据预处理阶段完成数据的分解与合并,预处理后的数据分别经过二选一数据选择器送至所述17×17位有符号定点乘法器M1~M4的输入数据端口U1A~U3A和U1B~U3B,其中所述二选一数据选择器均由与其相对应的级联乘累加使能信号控制数据选择。具体数据预处理和赋值过程如下:将预处理数据DA(31)&DA(31 downto 16)和‘0’&MDA3经过由使能信号MEn0控制数据输出的二选一选择器送至所述17×17位有符号定点乘法器M1的U1A端口,若使能信号MEn0有效,则选择‘0’&MDA3,否则选择DA(31)&DA(31 downto16);将预处理数据DB(31)&DB(31 downto 16)和‘0’&MDB3经过由使能信号MEn0控制数据输出的二选一选择器送至所述17×17位有符号定点乘法器M1的U1B端口,若使能信号MEn0有效,则选择‘0’&MDB3,否则选择DB(31)&DB(31 downto 16);将预处理数据‘0’&DA(15 downto 0)和‘0’&MDA2经过由使能信号MEn1控制数据输出的二选一选择器送至所述17×17位有符号定点乘法器M1的U2A端口,若使能信号MEn1有效,则选择‘0’&MDA2,否则选择‘0’&DA(15 downto 0);将预处理数据‘0’&DB(15downto 0)和‘0’&MDB2经过由使能信号MEn1控制数据输出的二选一选择器送至所述17×17位有符号定点乘法器M2的U2B端口,若使能信号MEn1有效,则选择‘0’&MDB2,否则选择‘0’&DB(15 downto 0);将预处理数据‘0’&DA(15 downto 0)送至所述17×17位有符号定点乘法器M3的U3A端口;将预处理数据DB(31)&DB(31downto 16)和‘0’&DB(15 downto 0)经过由使能信号MEn2控制数据输出的二选一选择器送至所述17×17位有符号定点乘法器M3的U3B端口,若使能信号MEn2有效,则选择‘0’&DB(15 downto 0),否则选择DB(31)&DB(31 downto 16);将预处理数据DA(31)&DA(31 downto 16)和‘0’&MDA1经过由使能信号MEn3控制数据输出的二选一选择器送至所述17×17位有符号定点乘法器M4的U4A端口,若使能信号MEn3有效,则选择‘0’&MDA1,否则选择DA(31)&DA(31 downto 16);将预处理数据‘0’&DB(15 downto 0)和‘0’&MDB1经过由使能信号MEn3控制数据输出的二选一选择器送至所述17×17位有符号定点乘法器M4的U4B端口,若使能信号MEn3有效,则选择‘0’&MDB1,否则选择‘0’&DB(15 downto 0)。本发明中乘法器的关键路径为17位有符号定点乘法器,为了减少关键路径的延迟,这里17位有符号定点乘法器可以采用两级流水结构。第一级流水结构中,所述17位有符号定点乘法器M1~M4完成部分乘法计算。
所述32位有符号定点乘法器中,第二级流水段完成17位有符号定点乘法运算。所述17×17位有符号定点乘法器M1~M4计算结果依次为mpyerout1~mpyerout4。计算结果mpyerout1作为DoSig1的高32位,计算结果mpyerout1作为DoSig1的低32位拼接为一个64位数据DoSig1并寄存到流水寄存器。计算结果mpyerout3和mpyerout4直接寄存到流水寄存器,使能信号MEn0、MEn1、MEn2、MEn3完成流水寄存。mpyerout4、mpyerout2和mpyerout1经过第二级流水寄存器寄存后分别输出至输出端口MD01、MD02和MD03。
所述32位有符号定点乘法器中,第三级流水段完成对乘法计算结果的处理。将所述17×17位有符号定点乘法器M4经过流水寄存的计算结果mpyerout4(31)&mpyerout4(31downto 0)和级联乘累加进位输入操作数’0’&MacI经过使能信号MEn2控制数据输出的二选一选择器送至33位有符号加法器输入操作数DataA端口,若使能信号MEn2有效,则选择’0’&MacI,否则选择mpyerout4(31)&mpyerout4(31downto 0);将所述17×17位有符号定点乘法器M3经过流水寄存的计算结果mpyerout3(31)&mpyerout3(31 downto 0)送至33位有符号加法器输入操作数DataB端口,进行33位有符号加法计算得到计算结果为DoSig2,并将DoSig2的低32位作为定点乘法器单元中乘累加结果寄存输出至端口MacO。对DoSig2和DoSig1(63 downto 16)完成49位有符号加法运算,并将运算结果作为DoSig的高49位数据,Dosig1(15 downto0)作为DoSig的低16位数据合并为一个65位数据DoSig,将DoSig的低64位数据作为32位有符号定点数乘法器输出结果D0。32位有符号定点乘法器具体流水结构见附图1所示。
本发明中利用32位有符号定点乘法器单元进行级联乘累加运算的方法电路结构包含一个译码单元、n个所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)、3*n个与所述32位有符号定点乘法器相匹配的积累乘累加单元Mac(1)~Mac(3*n)和一组连接上述电路的连线。
所述译码单元根据输入的操作运算类型CType完成电路译码,产生运算过程中需要的使能和控制信号。
所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)完成定点乘法和级联乘累加中所有乘法计算部分。所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)均含有4个17位有符号定点乘法器和若干定点加法器,均能够进行3个级联乘累加运算中乘法运算和1个级联乘累加运算中乘累加运算。当所述32位有符号定点乘法器进行有符号定点乘法计算时,译码单元经过译码产生使能控制信号,使级联乘累加使能有效MEn0、MEn1、MEn2、MEn3均为0,输入操作数DA和DB,经过3个时钟周期输出64位定点乘法计算结果。32位有符号定点乘法计算电路结构如附图2所示。否则进行级联乘累加计算,32位有符号定点乘法器进行级联乘累加计算时电路结构见附图3所示。进行级联乘累加计算时,所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3均输入级联乘累加并发操作数,操作数端口DB和操作数端口MDB1、MDB2、MDB3分别输入级联乘累加级联操作数。译码单元经过译码产生起始乘累加单元乘法器使能信号MEn,经过一拍时钟寄存后输入至与其相邻的下一个级联乘累加单元乘法器使能信号MEn。若当前级联乘累加乘法使能信号MEn有效,则执行当前乘累加单元中乘法计算,并经过两拍时钟周期后将乘法器结果输出至当前乘累加单元的加法器操作端口,否则,当前乘累加单元不执行乘法计算。若当前乘累加单元为定点乘法器时,则在定点乘法器第三级流水中完成乘累加中加法部分,否则当前乘累加单元为匹配乘累加单元,乘法结果输入至与其匹配的乘累加单元中完成加法计算。若当前乘累加单元不为起始乘累加单元,则与其相邻上一个乘累加单元的操作数MacO输出至当前乘累加单元的操作数MacI端口,否则,当前乘累加单元为起始乘累加单元,当前乘累加单元的操作数MacI端口输入为0。
所述与32位有符号定点乘法器相匹配的积累乘累加单元Mac(1)~Mac(3*n)完成级联乘累加单元中加法部分。匹配乘累加单元结构包含一个加法器、一个流水寄存器和一组连接上述电路连线。级联乘累加单元中匹配乘累加单元电路结构见附图4所示。输入数据包含级联乘累加进位输入操作数MacI和级联乘累加乘法结果输入端口,输出数据包含级联乘累加进位输出操作数MacO。若当前乘累加单元不为起始乘累加单元,与其相邻上一个乘累加单元的操作数MacO输出至当前乘累加单元的操作数MacI端口,否则,当前乘累加单元为起始乘累加单元,当前乘累加单元的操作数MacI端口输入为0。级联乘累加单元相对应的乘法器结果MD输入至级联乘累加单元乘法结果数据输入端口,经过加法器计算,对计算的乘累加结果经过一拍流水寄存输出MacO端口。若最后一个乘累加单元完成乘累加计算,则经过一级流水寄存输出级联乘累加结果,否则输出中间计算结果。
本发明中所述利用32位定点乘法器实现级联乘累加运算的方法步骤如下:
1)译码单元根据运算操作类型完成译码,产生相关的译码控制信号。
2)当运算操作类型为32位有符号定点乘法时,在译码控制信号的控制下,级联乘累加乘法器使能均为0,输入操作数DA和DB,经过3个时钟节拍,完成有符号定点乘法计算并输出64位定点乘法器计算结果。
3)否则,执行级联乘累加运算。将第一个并发输入操作数以并发方式输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3,将4*n个级联输入操作数分别输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数DB和操作数MDB1、MDB2、MDB3,起始乘累加单元的进位输入操作数端口MacI输入为0。在译码信号的控制下,起始乘累加乘法使能MEn0有效,开始执行级联乘累加运算,每经过一个时钟节拍,将下一个并发输入操作数以并发方式输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3,将当前乘累加单元的乘法器使能输送至下一个乘累加单元的乘法器使能MEn端口。下一个乘累加单元乘法器使能有效,开始乘法计算,并将计算结果经过流水寄存后输入至本乘累加单元中的加法器操作数端口,完成加法计算,经过一级流水寄存后输出至下一级的乘累加单元进位输入操作数端口MacI。按照上述执行方式经过若干时钟节拍,当最后一个乘累加单元完成乘累加计算时,经过一级流水寄存输出级联乘累加的计算结果。
本发明中利用32位有符号定点乘法器单元和与其匹配的乘累加单元按照一定排列方式形成级联乘累加阵列,通过合理配置参数和输入操作数,可以实现大规模数据的并行流水计算。在构造级联乘累加阵列时,可分别控制级联乘累加运算阵列的横向和纵向乘累加单元的个数,从而根据需要方便地构造出不同规模的级联乘累加运算阵列。
为了更好地说明本发明利用32位有符号定点乘法器进行级联乘累加运算方法,本具体实施例中提供了一种利用32位有符号定点乘法器和匹配乘累加单元构造的4×4级联乘累加运算阵列,见附图5所示。为了让图示更简洁,附图5中仅画出了关键数据通路,其中乘累加单元P10~P13为32位有符号定点乘法器中等效乘累加单元,乘累加单元P20~P23、P30~P33、P40~P43为与所述32位有符号定点乘法器相匹配的乘累加单元。在运算阵列扩展时,所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(4)的操作数端口DA和操作数端口MDA1、MDA2、MDA3均接收来自级联乘累加的并发操作数,操作数端口DB和操作数端口MDB1、MDB2、MDB3分别连接到相对应地址的数据寄存器端口。译码单元经过译码产生起始乘累加单元乘法器使能信号MEn,经过一拍时钟寄存后输入至与其相邻的下一个级联乘累加单元乘法器使能信号MEn。若当前乘累加单元为定点乘法器本身,则在定点乘法器第三级流水中完成乘累加中加法部分,否则当前乘累加单元为匹配乘累加单元,乘法结果输入至与其匹配的乘累加单元中完成加法计算。若当前乘累加单元不为起始乘累加单元时,与其相邻上一个乘累加单元的操作数MacO输出至当前乘累加单元的操作数MacI端口,否则,当前乘累加单元为起始乘累加单元,当前乘累加单元的操作数MacI端口输入为0。本发明中32位有符号定点乘法器在执行级联乘累加运算时,本地数据寄存器中的数据均进入32位有符号定点乘法器中,所有乘法运算均在32位有符号定点乘法器中完成。除去32位有符号定点乘法器中等效乘累加单元,其他乘法计算结果均按照组成阵列结构依次输入到乘累加单元P20~P23、P30~P33、P40~P43中。执行级联乘累加运算时,所有32位有符号定点乘法器中等效乘累加单元配置成级联乘累加运算模式。通过合理配置参数和输入操作数,本具体实施例中级联乘累加阵列能够支持大规模数据的流水计算。
本具体实施例中所述利用32位定点乘法器实现级联乘累加运算的方法步骤如下:
1)译码单元根据运算操作类型完成译码,产生相关的译码控制信号。
2)当运算操作类型为32位有符号定点乘法时,在译码信号的控制下,级联乘累加乘法器使能均为0,输入操作数DA和DB,经过3个时钟节拍,完成有符号定点乘法计算并输出64位定点乘法器计算结果。
3)否则,执行级联乘累加运算。首先,将寄存数据(g0,g1,…,g15)依次写入到与级联乘累加运算对应的寄存器文件;其次,将起始乘累加单元的进位输入操作数MacI端口输入为0。在译码信号的控制下,起始乘累加乘法使能MEn0有效,读出寄存数据(g0,g1,…,g15)并分别输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(4)的操作数端口DB和操作数端口MDB1、MDB2、MDB3。当时钟信号有效时,将并发输入数据(h0,h1,…,h15)在时钟节拍的控制下以并发方式依次输入到所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(4)的操作数端口DA和操作数端口MDA1、MDA2、MDA3。当时钟下一节拍时,当前乘累加单元乘法使能信号经过流水寄存输入至下一个与其相邻的乘累加单元乘法使能信号端口,下一个并发输入数据以并发方式输入到所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(4)的操作数端口DA和操作数端口MDA1、MDA2、MDA3,按照上述执行方式经过若干时钟节拍,当最后一个乘累加单元完成乘累加计算时,经过一级流水寄存输出级联乘累加的计算结果。级联乘累加运算过程中的乘法寄存器和乘累加单元输出结果变化情况见表1所列。
表1 级联乘累加模式M和输出结果的变化情况
Claims (2)
1.一种利用定点乘法器进行级联乘累加运算的装置,包括一个译码单元、n个所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)、3*n个与所述32位有符号定点乘法器相匹配的积累乘累加单元Mac(1)~Mac(3*n),其特征在于:
所述32位有符号定点乘法器输入数据端口包含32位操作数端口DA和DB,级联乘累加并发输入操作数端口MDA1、MDA2、MDA3,级联乘累加级联输入操作数端口MDB1、MDB2、MDB3,级联乘累加进位输入操作数端口MacI,级联乘累加使能有效端口MEn0、MEn1、MEn2、MEn3;输出数据端口包含乘法结果输出端口D0、级联乘加结果输出端口MacO、级联乘法结果端口MD01、MD02和MD03。所述32位有符号定点乘法器电路结构采有三级流水结构;
所述32位有符号定点乘法器中,第一级流水中完成数据预处理和部分乘法运算;本级流水所包含4组17×17位有符号定点乘法器M1~M4,其中所述17×17位有符号定点乘法器M1~M4数据端口包含输入操作数端口U1A~U4A、U1B~U4B和计算结果输出端口mpyerout1~mpyerout4;本级流水段中数据预处理阶段完成数据的分解与合并,预处理后的数据分别经过二选一数据选择器送至所述17×17位有符号定点乘法器M1~M4的输入数据端口U1A~U3A和U1B~U3B,其中所述二选一数据选择器均由与其相对应的级联乘累加使能信号控制数据选择;
所述32位有符号定点乘法器中,第二级流水段完成17位有符号定点乘法运算;所述17×17位有符号定点乘法器M1~M4计算结果依次为mpyerout1~mpyerout4;计算结果mpyerout1作为DoSig1的高32位,计算结果mpyerout1作为DoSig1的低32位拼接为一个64位数据DoSig1并寄存到流水寄存器,计算结果mpyerout3和mpyerout4直接寄存到流水寄存器,使能信号MEn0、MEn1、MEn2、MEn3完成流水寄存;mpyerout4、mpyerout2和mpyerout1经过第二级流水寄存器寄存后分别输出至输出端口MD01、MD02和MD03;
所述32位有符号定点乘法器中,第三级流水段完成对乘法计算结果的处理;将所述17×17位有符号定点乘法器M4经过流水寄存的计算结果mpyerout4(31)&mpyerout4(31downto 0)和级联乘累加进位输入操作数’0’&MacI经过使能信号MEn2控制数据输出的二选一选择器送至33位有符号加法器输入操作数DataA端口;将所述17×17位有符号定点乘法器M3经过流水寄存的计算结果mpyerout3(31)&mpyerout3(31downto 0)送至33位有符号加法器输入操作数DataB端口,进行33位有符号加法计算得到计算结果为DoSig2,并将DoSig2的低32位作为定点乘法器单元中乘累加结果寄存输出至端口MacO;对DoSig2和DoSig1(63downto 16)完成49位有符号加法运算,并将运算结果作为DoSig的高49位数据,Dosig1(15downto 0)作为DoSig的低16位数据合并为一个65位数据DoSig,将DoSig的低64位数据作为32位有符号定点数乘法器输出结果D0;
所述译码单元根据输入的操作运算类型CType完成电路译码,产生运算过程中需要的使能和控制信号;
所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)完成定点乘法和级联乘累加中所有乘法计算部分;当所述32位有符号定点乘法器进行有符号定点乘法计算时,译码单元经过译码产生使能控制信号,使级联乘累加使能有效MEn0、MEn1、MEn2、MEn3均为0,输入操作数DA和DB,经过3个时钟周期输出64位定点乘法计算结果,否则进行级联乘累加计算;进行级联乘累加计算时,所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3均输入级联乘累加并发操作数,操作数端口DB和操作数端口MDB1、MDB2、MDB3分别输入级联乘累加级联操作数;译码单元经过译码产生起始乘累加单元乘法器使能信号MEn,经过一拍时钟寄存后输入至与其相邻的下一个级联乘累加单元乘法器使能信号Men;若当前级联乘累加乘法使能信号MEn有效,则执行当前乘累加单元中乘法计算,并经过两拍时钟周期后将乘法器结果输出至当前乘累加单元的加法器操作端口,否则,当前乘累加单元不执行乘法计算;若当前乘累加单元为定点乘法器时,则在定点乘法器第三级流水中完成乘累加中加法部分,否则当前乘累加单元为匹配乘累加单元,乘法结果输入至与其匹配的乘累加单元中完成加法计算;若当前乘累加单元不为起始乘累加单元,则与其相邻上一个乘累加单元的操作数MacO输出至当前乘累加单元的操作数MacI端口,否则,当前乘累加单元为起始乘累加单元,当前乘累加单元的操作数MacI端口输入为0;
所述与32位有符号定点乘法器相匹配的积累乘累加单元Mac(1)~Mac(3*n)完成级联乘累加单元中加法部分;匹配乘累加单元结构包含一个加法器和一个流水寄存器;输入数据包含级联乘累加进位输入操作数MacI和级联乘累加乘法结果输入端口,输出数据包含级联乘累加进位输出操作数MacO;若当前乘累加单元不为起始乘累加单元,与其相邻上一个乘累加单元的操作数MacO输出至当前乘累加单元的操作数MacI端口,否则,当前乘累加单元为起始乘累加单元,当前乘累加单元的操作数MacI端口输入为0;级联乘累加单元相对应的乘法器结果MD输入至级联乘累加单元乘法结果数据输入端口,经过加法器计算,对计算的乘累加结果经过一拍流水寄存输出MacO端口;若最后一个乘累加单元完成乘累加计算,则经过一级流水寄存输出级联乘累加结果,否则输出中间计算结果。
2.一种利用权利要求1所述装置利用定点乘法器进行级联乘累加运算的方法,其特征在于包括下述步骤:
1)译码单元根据运算操作类型完成译码,产生相关的译码控制信号;
2)当运算操作类型为32位有符号定点乘法时,在译码控制信号的控制下,级联乘累加乘法器使能均为0,输入操作数DA和DB,经过3个时钟节拍,完成有符号定点乘法计算并输出64位定点乘法器计算结果;
3)否则,执行级联乘累加运算;将第一个并发输入操作数以并发方式输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3,将4*n个级联输入操作数分别输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数DB和操作数MDB1、MDB2、MDB3,起始乘累加单元的进位输入操作数端口MacI输入为0;在译码信号的控制下,起始乘累加乘法使能MEn0有效,开始执行级联乘累加运算,每经过一个时钟节拍,将下一个并发输入操作数以并发方式输入至所述32位有符号定点乘法器单元Mpyer(1)~Mpyer(n)的操作数端口DA和操作数端口MDA1、MDA2、MDA3,将当前乘累加单元的乘法器使能输送至下一个乘累加单元的乘法器使能MEn端口;下一个乘累加单元乘法器使能有效,开始乘法计算,并将计算结果经过流水寄存后输入至本乘累加单元中的加法器操作数端口,完成加法计算,经过一级流水寄存后输出至下一级的乘累加单元进位输入操作数端口MacI;按照上述执行方式经过若干时钟节拍,当最后一个乘累加单元完成乘累加计算时,经过一级流水寄存输出级联乘累加的计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410543121.0A CN104407836B (zh) | 2014-10-14 | 2014-10-14 | 利用定点乘法器进行级联乘累加运算的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410543121.0A CN104407836B (zh) | 2014-10-14 | 2014-10-14 | 利用定点乘法器进行级联乘累加运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104407836A true CN104407836A (zh) | 2015-03-11 |
CN104407836B CN104407836B (zh) | 2017-05-31 |
Family
ID=52645469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410543121.0A Active CN104407836B (zh) | 2014-10-14 | 2014-10-14 | 利用定点乘法器进行级联乘累加运算的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104407836B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019023910A1 (zh) * | 2017-07-31 | 2019-02-07 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
CN111666066A (zh) * | 2017-04-28 | 2020-09-15 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
CN112711395A (zh) * | 2019-10-25 | 2021-04-27 | 阿里巴巴集团控股有限公司 | 加解密方法和装置、电子设备以及计算机可读存储介质 |
US11361496B2 (en) | 2019-03-15 | 2022-06-14 | Intel Corporation | Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format |
CN117234458A (zh) * | 2023-11-09 | 2023-12-15 | 深圳大普微电子股份有限公司 | 乘法阵列、数据处理方法、处理终端及存储介质 |
CN117806590A (zh) * | 2023-12-18 | 2024-04-02 | 上海无问芯穹智能科技有限公司 | 一种矩阵乘硬件架构 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2507064Y (zh) * | 2001-10-18 | 2002-08-21 | 深圳市中兴集成电路设计有限责任公司 | 一种蒙哥马利模乘器 |
EP1338954A2 (en) * | 2002-02-26 | 2003-08-27 | Broadcom Corporation | Addition circuit for accumulating redundant binary numbers |
CN1570843A (zh) * | 2003-07-15 | 2005-01-26 | 中国科学院微电子中心 | 并发、软件低功耗计算单元电路实现结构 |
CN1963745A (zh) * | 2006-12-01 | 2007-05-16 | 浙江大学 | 高速分裂式乘累加器mac装置 |
CN102386912A (zh) * | 2006-02-09 | 2012-03-21 | 阿尔特拉公司 | 用于可编程逻辑器件的专门处理块 |
CN103176767A (zh) * | 2013-03-01 | 2013-06-26 | 浙江大学 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
CN103294446A (zh) * | 2013-05-14 | 2013-09-11 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN103677739A (zh) * | 2013-11-28 | 2014-03-26 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
US20140188966A1 (en) * | 2012-07-24 | 2014-07-03 | Sameh Galal | Floating-point multiply-add unit using cascade design |
-
2014
- 2014-10-14 CN CN201410543121.0A patent/CN104407836B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2507064Y (zh) * | 2001-10-18 | 2002-08-21 | 深圳市中兴集成电路设计有限责任公司 | 一种蒙哥马利模乘器 |
EP1338954A2 (en) * | 2002-02-26 | 2003-08-27 | Broadcom Corporation | Addition circuit for accumulating redundant binary numbers |
CN1570843A (zh) * | 2003-07-15 | 2005-01-26 | 中国科学院微电子中心 | 并发、软件低功耗计算单元电路实现结构 |
CN102386912A (zh) * | 2006-02-09 | 2012-03-21 | 阿尔特拉公司 | 用于可编程逻辑器件的专门处理块 |
CN1963745A (zh) * | 2006-12-01 | 2007-05-16 | 浙江大学 | 高速分裂式乘累加器mac装置 |
US20140188966A1 (en) * | 2012-07-24 | 2014-07-03 | Sameh Galal | Floating-point multiply-add unit using cascade design |
CN103176767A (zh) * | 2013-03-01 | 2013-06-26 | 浙江大学 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
CN103294446A (zh) * | 2013-05-14 | 2013-09-11 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN103677739A (zh) * | 2013-11-28 | 2014-03-26 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666066A (zh) * | 2017-04-28 | 2020-09-15 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
US12039331B2 (en) | 2017-04-28 | 2024-07-16 | Intel Corporation | Instructions and logic to perform floating point and integer operations for machine learning |
US11080046B2 (en) | 2017-04-28 | 2021-08-03 | Intel Corporation | Instructions and logic to perform floating point and integer operations for machine learning |
US11169799B2 (en) | 2017-04-28 | 2021-11-09 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
CN111666066B (zh) * | 2017-04-28 | 2021-11-09 | 英特尔公司 | 加速机器学习操作的方法、图形处理单元和数据处理系统 |
US11360767B2 (en) | 2017-04-28 | 2022-06-14 | Intel Corporation | Instructions and logic to perform floating point and integer operations for machine learning |
US11720355B2 (en) | 2017-04-28 | 2023-08-08 | Intel Corporation | Instructions and logic to perform floating point and integer operations for machine learning |
WO2019023910A1 (zh) * | 2017-07-31 | 2019-02-07 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
US11709793B2 (en) | 2019-03-15 | 2023-07-25 | Intel Corporation | Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format |
US11361496B2 (en) | 2019-03-15 | 2022-06-14 | Intel Corporation | Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format |
US11954063B2 (en) | 2019-03-15 | 2024-04-09 | Intel Corporation | Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format |
CN112711395B (zh) * | 2019-10-25 | 2024-06-04 | 阿里巴巴集团控股有限公司 | 加解密方法和装置、电子设备以及计算机可读存储介质 |
CN112711395A (zh) * | 2019-10-25 | 2021-04-27 | 阿里巴巴集团控股有限公司 | 加解密方法和装置、电子设备以及计算机可读存储介质 |
CN117234458A (zh) * | 2023-11-09 | 2023-12-15 | 深圳大普微电子股份有限公司 | 乘法阵列、数据处理方法、处理终端及存储介质 |
CN117234458B (zh) * | 2023-11-09 | 2024-02-23 | 深圳大普微电子股份有限公司 | 乘法阵列、数据处理方法、处理终端及存储介质 |
CN117806590A (zh) * | 2023-12-18 | 2024-04-02 | 上海无问芯穹智能科技有限公司 | 一种矩阵乘硬件架构 |
Also Published As
Publication number | Publication date |
---|---|
CN104407836B (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104407836A (zh) | 利用定点乘法器进行级联乘累加运算的装置和方法 | |
CN102495719B (zh) | 一种向量浮点运算装置及方法 | |
CN104111816A (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN104375802B (zh) | 一种乘除法器及运算方法 | |
CN101692202B (zh) | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 | |
CN100470464C (zh) | 基于改进的蒙哥马利算法的模乘器 | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
CN101916177B (zh) | 一种可配置多精度定点乘加装置 | |
CN105335127A (zh) | Gpdsp中支持浮点除法的标量运算单元结构 | |
CN102629189A (zh) | 基于fpga的流水浮点乘累加方法 | |
CN102360281B (zh) | 用于微处理器的多功能定点乘加单元mac运算装置 | |
CN109522674A (zh) | 基2-2算法的快速傅里叶变换硬件设计方法 | |
CN100465877C (zh) | 高速分裂式乘累加器mac装置 | |
CN102339217A (zh) | 一种浮点数乘加器融合处理装置及方法 | |
CN109144469A (zh) | 流水线结构神经网络矩阵运算架构及方法 | |
CN109388373A (zh) | 用于低功耗内核的乘除法器 | |
CN102184086B (zh) | 一种Booth编码器及乘法器 | |
CN106873942B (zh) | 结构量计算机的msd乘法计算的方法 | |
CN103645883A (zh) | 基于fpga的高基模乘器 | |
CN109284085B (zh) | 一种基于fpga的高速模乘和模幂运算方法及装置 | |
CN107092462A (zh) | 一种基于fpga的64位异步乘法器 | |
Kaivani et al. | High-frequency sequential decimal multipliers | |
CN102693118B (zh) | 一种标量浮点运算加速器 | |
CN202281998U (zh) | 一种标量浮点运算加速器 | |
CN104317774B (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 |