CN101916177B - 一种可配置多精度定点乘加装置 - Google Patents
一种可配置多精度定点乘加装置 Download PDFInfo
- Publication number
- CN101916177B CN101916177B CN2010102386893A CN201010238689A CN101916177B CN 101916177 B CN101916177 B CN 101916177B CN 2010102386893 A CN2010102386893 A CN 2010102386893A CN 201010238689 A CN201010238689 A CN 201010238689A CN 101916177 B CN101916177 B CN 101916177B
- Authority
- CN
- China
- Prior art keywords
- configurable
- places
- totalizer
- booth multiplier
- multiplying
- 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.)
- Expired - Fee Related
Links
- 230000006835 compression Effects 0.000 claims abstract description 43
- 238000007906 compression Methods 0.000 claims abstract description 43
- 229920006395 saturated elastomer Polymers 0.000 claims abstract description 29
- 230000010354 integration Effects 0.000 claims abstract description 25
- 230000008901 benefit Effects 0.000 claims description 12
- 238000004519 manufacturing process Methods 0.000 abstract 8
- 239000000047 product Substances 0.000 description 77
- 229910052739 hydrogen Inorganic materials 0.000 description 24
- 238000007792 addition Methods 0.000 description 19
- 101001051031 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) Mitochondrial pyruvate carrier 3 Proteins 0.000 description 16
- 101100238324 Arabidopsis thaliana MPC4 gene Proteins 0.000 description 15
- 101710165590 Mitochondrial pyruvate carrier 1 Proteins 0.000 description 14
- 102100024828 Mitochondrial pyruvate carrier 1 Human genes 0.000 description 14
- 101710165595 Mitochondrial pyruvate carrier 2 Proteins 0.000 description 14
- 102100025031 Mitochondrial pyruvate carrier 2 Human genes 0.000 description 14
- 101710101695 Probable mitochondrial pyruvate carrier 1 Proteins 0.000 description 14
- 101710101698 Probable mitochondrial pyruvate carrier 2 Proteins 0.000 description 14
- 230000014509 gene expression Effects 0.000 description 14
- 230000009471 action Effects 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 101100167280 Caenorhabditis elegans cin-4 gene Proteins 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提出一种可配置多精度定点乘加装置包括第一级流水线、第二级流水线、第三级流水线和第四级流水线。第一级流水线包括操作数分配器、第一至四booth乘法器;第二级流水线包括部分积分配器、可配置压缩阵列和第一可配置加法器;第三级流水线包括第二可配置加法器、第一多路选择器和第一饱和处理单元;第四级流水线包括第三可配置加法器、第二多路选择器、第三多路选择器、第四多路选择器和第二饱和处理单元。本发明既能实现乘加运算,也能够满足多精度的功能需求,可以实现多种乘法及乘加运算。
Description
技术领域
本发明涉及数字信号处理领域,特别涉及一种可配置多精度定点乘加装置。
背景技术
近年来,由于计算机的计算复杂度大大增加,微处理器尤其是数字信号处理器(DSP)对于定点乘法单元的功能和性能要求越来越高。处理器设计者投入更多精力在开发定点乘法单元上,使得定点乘法单元的电路结构有了很大的改进。
定点乘法单元通常分为两类,一类为可配置多精度的定点乘法单元,这类乘法单元可以实现定点的有符号、无符号数的乘法运算,并且支持多种精度的乘法运算;另一类为可配置的定点乘加单元,这类乘法单元可以实现定点的有符号、无符号数的乘法及乘加运算。
上述两类定点乘法单元分别存在如下缺陷:
第一类乘法单元具有比较高的灵活度,能够满足多种定点乘法运算的需要,但是不能实现乘加功能;第二类乘法单元能够实现乘法运算中出现频率很高的乘加运算,但是只能进行固定精度的运算。这两类乘法器在使用上都具有一定的局限性。
发明内容
本发明的目的旨在至少解决上述技术缺陷之一,特别针对既能实现乘加运算,也能够满足多精度的功能需求,可以实现多种乘法及乘加运算,提供了一种可配置多精度定点乘加装置。
为实现上述目的,本发明实施例提出了一种可配置多精度定点乘加装置,包括第一级流水线、第二级流水线、第三级流水线和第四级流水线。
其中,第一级流水线包括操作数分配器、第一booth乘法器、第二booth乘法器、第三booth乘法器和第四booth乘法器,所述第一级流水线,用于将输入的数据按照运算模式进行分配,并将分配后的数据进行Booth编码和部分积压缩;
第二级流水线包括部分积分配器、可配置压缩阵列和第一可配置加法器,所述可配置压缩阵列,用于将来自所述部分积分配器的部分积进行压缩;
第三级流水线包括第二可配置加法器、第一多路选择器和第一饱和处理单元,当所述第二可配置加法器的计算结果溢出时,所述第一饱和处理单元对所述溢出的计算结果进行饱和处理;
第四级流水线包括第三可配置加法器、第二多路选择器、第三多路选择器、第四多路选择器和第二饱和处理单元,所述第三多路选择器,用于将来自所述第一饱和处理单元和第一可配置加法器的数据选择输出,所述第四多路选择器,用于将来自所述第二饱和处理单元和第一可配置加法器的数据选择输出。
本发明的可配置多精度定点乘加装置包括4个booth乘法器,每个乘法器能够完成两个16位定点数的乘法,得到两个32位部分积。并且多功能的可配置压缩阵列能够实现不同精度的部分积压缩,既能实现乘加运算,也能够满足多精度的功能需求,可以实现多种乘法及乘加运算。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明实施例的可配置多精度的定点乘加装置的结构示意图;
图2为图1中配置多精度定点乘加装置的电路结构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本发明主要在于,通过多功能的可配置压缩阵列能够实现不同精度的部分积压缩,既能实现乘加运算,也能够满足多精度的功能需求,可以实现多种乘法及乘加运算。
为实现本发明的上述目的,本发明实施例提出了一种可配置多精度定点乘加装置。图1为该可配置多精度定点乘加装置的结构示意图。如图1所示,该装置采用四级流水线实现。
具体的说,第一级流水线将输入的数据按照运算模式进行分配,并将上述分配后的数据进行Booth编码和部分积压缩。上述第一级流水线包括操作数分配器以及第一至第四booth乘法器。结合图2所示,操作数分配器,将输入的数据根据第一操作码opcode指示的运算模式进行分配。
其中,操作数分配器的输入数据为8个16位数AH、AL、BH、BL、CH、CL、DH、DL。第一操作码opcode,符号标志位s。其中,AL与AH表示32位操作数A的低16位与高16位,BL与BH表示32位操作数B的低16位与高16位。
上述操作数分配器根据第一操作码opcode指示的不同运算模式,对输入的数据分配并发送给booth乘法器。
当第一操作码opcode表示32位数的乘法运算时,操作数分配器将AL、BL发送给M1A、M1B,将AL、BH发送给M2A、M2B,将AH、BL发送给M3A、M3B,将AH、BH发送给M4A、M4B。
当第一操作码opcode表示16位定点数乘32位定点数的运算时,操作数分配器将AL、BL发送给M1A、M1B,将AL、BH发送给M2A、M2B,将CL、DL发送给M3A、M3B,将CL、DH发送给M4A、M4B。
当第一操作码opcode表示其余的乘法及乘加运算时,操作数分配器将AL、BL发送给M1A、M1B,将AH、BH发送给M2A、M2B,将CL、DL发送给M3A、M3B,将CH、DH发送给M4A、M4B。
其中,输出数据M1A、M1B、M2A、M2B、M3A、M3B、M4A、M4B均为16位数。
在本实施例中,上述第一至四booth乘法器为16位booth乘法器。
将上述操作数分配器输出的M1A、M1B连接至第一16位booth乘法器,M2A、M2B连接至第二16位booth乘法器,M3A、M3B连接至第三16位booth乘法器,M4A、M4B连接至第四16位booth乘法器。
具体的说,结合图2所示,第一16位booth乘法器,其输入为2个16位数M1A、M1B以及符号位s,采用基4的booth编码结构。当符号位s为1时进行有符号乘法运算,当符号位s为0时进行无符号乘法运算,压缩得到2个32位部分积,输出为上述2个32位部分积M1P1、M1P2。
第二16位booth乘法器的输入为2个16位数M2A、M2B以及符号位s。其结构与第一16位booth乘法器相同,压缩得到2个32位部分积,输出为上述2个32位部分积M2P1、M2P2。
第三16位booth乘法器的输入为2个16位数M3A、M3B以及符号位s,其结构与第一16位booth乘法器相同,压缩得到2个32位部分积,输出为上述2个32位部分积M3P1、M3P2。
第四16位booth乘法器的输入为2个16位数M4A、M4B以及符号位s,其结构与第一16位booth乘法器相同,压缩得到2个32位部分积,输出为上述2个32位部分积M4P1、M4P2。
根据上述第一级流水线得到的部分积,第二级流水线对其进行压缩及求和。具体的说,第二级流水线包括部分积分配器、可配置压缩阵列和第一可配置加法器。
其中,部分积分配器的输入数据为:来自第一级流水线的8个32位数M1P1、M1P2、M2P1、M2P2、M3P1、M3P2、M4P1、M4P2以及第二操作码opcode,符号位s,16位数U和16位数V。
当第二操作码opcode表示32位数的乘法运算时,部分积分配器将来自第一16位booth乘法器的M1P1、M1P2,MPC3、MPC4,分别经第二16位booth乘法器输出的M2P1、M2P2左移16位输出得到MPC1、MPC2,经第三16位booth乘法器输出的M3P1、M3P2左移16位得到MPC5、MPC6,经第四16位booth乘法器输出的M4P1、M4P2左移32位得到MPC7、MPC8,A1A、A1B为0。
当第二操作码opcode表示16位数乘32位数的乘法操作时,部分积分配器将第一16位booth乘法器输出的部分积M1P1、M1P2的高16位作为其输出的MPC1、MPC2的低32位,第三16位booth乘法器输出的部分积M3P1、M3P2的高16位作为其输出的MPC1、MPC2的高32位。并且将第二16位booth乘法器输出的部分积M2P1、M2P2作为部分积分配器输出的MPC3、MPC4的低32位,将第四16位booth乘法器输出的部分积M4P1、M4P2作为MPC3、MPC4的高32位。
当第二操作码opcode表示16位数乘法运算时,部分积分配器将第一16位booth乘法器输出的部分积M1P1、M1P2作为其输出的MPC1、MPC2的低32位,将第二16位booth乘法器输出的部分积M2P1、M2P2作为其输出的MPC1、MPC2的高32位。其他输出MPC3至MPC8均为0,A1A、A1B为第一booth乘法器输出的部分积M1P1、M1P2。
当第二操作码opcode表示A*B±C*D+M的操作时,其中当A、B、C、D均为16位数时,M为32位数;当A、B、C、D均为8位数时,M为16位数。部分积分配器将第一16位booth乘法器输出的部分积M1P1、M1P2作为其输出的MPC1、MPC2的高32位,将第三16位booth乘法器输出的部分积M3P1、M3P2作为其输出的MPC1、MPC2的高32位。以输入信号U作为部分积分配器MPC5的低32位,以输入信号V作为MPC5的高32位。
1)对于A*B+C*D+M的操作,部分积分配器将第二16位booth乘法器输出的部分积M2P1、M2P2作为其输出的MPC3、MPC4的低32位,将第四16位booth乘法器输出的部分积M4P1、M4P2作为MPC3、MPC4的高32位,MPC6至MPC8以及A1A、A1B均为0。
2)对于A*B-C*D+M的操作,部分积分配器将第二16位booth乘法器输出的部分积M2P1、M2P2取反作为其输出的MPC3、MPC4的低32位,将第四16位booth乘法器输出的M4P1、M4P2取反作为MPC3、MPC4的高32位。此外,MPC6为十六进制数0000000200000002,MPC7、MPC8以及A1A、A1B均为0。
当第二操作码opcode表示8位数乘法时,部分积分配器将第一16位booth乘法器输出的部分积M1P1、M1P2作为其输出的MPC1、MPC2的低32位,将第二16位booth乘法器输出的部分积M2P1、M2P2作为MPC1、MPC2的高32位。将第三16位booth乘法器输出的部分积M3P1、M3P2作为部分积分配器输出的MPC3、MPC4的低32位,将第四16位booth乘法器输出的部分积M4P1、M4P2作为MPC3、MPC4的高32位。并且,MPC5至MPC8均为0,A1A、A1B为第一16位booth乘法器输出的部分积M1P1、M1P2。
当第二操作码opcode表示四组8位数相乘累加的运算时,部分积分配器将第一16位booth乘法器输出的部分积M1P1、M1P2作为其输出的MPC1、MPC2,将第二16位booth乘法器输出的部分积M2P1、M2P2作为其输出的MPC3、MPC4,将第三16位booth乘法器输出的部分积M3P1、M3P2作为其输出的MPC5、MPC6,将第四16位booth乘法器输出的部分积M4P1、M4P2作为MPC7、MPC8。并且,A1A、A1B为0。
综上,部分积分配器输出为8个64位数MPC1、MPC2、MPC3、MPC4、MPC5、MPC6、MPC7、MPC8及2个32位数A1A、A1B。
对于所有第二操作码opcode,如果输入信号的位数小于输出信号的位数,当符号位s为0时,在输入信号前补0,当符号位s为1时,将输入信号按符号扩展。
第二级流水线还包括可配置压缩阵列,该可配置压缩阵列是将来自上述部分积分配器的部分积进行压缩。
具体的说,上述部分积分配器输出的8个64位数MPC1、MPC2、MPC3、MPC4、MPC5、MPC6、MPC7、MPC8作为可配置压缩阵列的输入。kill为进位控制,当进位控制kill为0时,将输入的64位部分积压缩为两个64位部分积;当进位控制kill为1时,将输入的部分积的低32位压缩、高32位分别压缩为两个32位部分积,并拼接成两个64位部分积。可配置压缩阵列输出压缩后的两个64位部分积PP1、PP2。
将部分积分配器输出的2个32位数A1A、A1B以及第三操作码opcode作为第一可配置加法器的输入数据。在本实施例中,第一可配置加法器位32位加法器。
当第三操作码opcode表示16位数乘32位数时,第一可配置32位加法器将输入的部分积低16位和高16位分别相加得到两个16位和以及进位,并将上述两个和拼接为一个32位和;当操作码表示其他运算时,第一可配置32位加法器进行32位加法得到32位和,输出32位和A1S以及两个进位Cin1、Cin2。
该可配置多精度定点乘加装置还包括第三级流水线。上述第三级流水线包括第二可配置加法器、第一多路选择器和第一饱和处理单元。
具体的说,将第二级流水线中的可配置压缩阵列输出的压缩后的部分积PP1、PP2以及部分积分配器输出的部分积MPC1、MPC2以及第四操作码opcode作为第一多路选择器的输入数据。
当第四操作码opcode表示8位数乘法运算时,第一多路选择器将MPC1、MPC2的低32位作为输出的A2A、A2B。当第四操作码opcode为其他时,以PP1、PP2的低32位作为输出的A2A、A2B。
将第一多路选择器输出的A2A、A2B以及进位Cin1和第三操作码opcode作为第二可配置加法器的输入数据。在本实施例中,第二可配置加法器为32位加法器。
当第三操作码opcode表示8位数乘法运算或16位数乘32位数的运算时,将输入部分积低16位、高16位分别相加得到两个16位和,并将这两个和拼接为一个32位 和;当第三操作码opcode表示其他运算时,进行32位加法得到32位和A2S以及进位Cin3。
MPC3、MPC4符号位s,当计算结果溢出时进行饱和处理时,第一饱和处理单元输出为饱和处理后的和MUX3A。
第四级流水线包括第三可配置位加法器,第二至第四多路选择器以及第二饱和处理单元。
具体的说,将可配置压缩阵列输出的部分积PP1、PP2、部分积分配器输出的MPC3、MPC4以及第四操作码opcode输入到第二多路选择器。
当第四操作码opcode表示8位数乘法运算时,第二多路选择器将MPC3、MPC4的低32位作为输出A3A、A3B;当第四操作码opcode为其它时,将PP1、PP2的高32位作为输出A3A、A3B。
将第二多路选择器输出的2个32位数A3A、A3B、进位Cin2、Cin3以及第三操作码opcode输入到第三可配置加法器。在本实施例中,第三可配置加法器为32位加法器。
当第三操作码opcode表示8位数乘法运算或16位数乘32位数的运算时,将输入的部分积的低16位、高16位分别相加得到两个16位和,并将这两个和拼接为一个32位和;
当第三操作码opcode表示其他运算时,进行32位加法得到32位和以及进位,输出32位和A3S。
将上述第三可配置32位加法器输出的32位和A3S、进位Cin4以及符号位s输入到第二饱和处理单元。当计算结果溢出时进行饱和处理,输出饱和处理后的和MUX4A。
将第一饱和处理单元输出的MUX3A、第一可配置32位加法器输出的A1S和第四操作码opcode输入到第三多路选择器。
当第四操作码opcode表示16位数乘32位数的运算时,第三多路选择器将A1S的低16位作为其输出result1_P4的低16位,result1_P4的47至16位为MUX3A;当第四操作码opcode为其它时,result1_P4的低32位为MUX3A。
将第二饱和处理单元输出的MUX4A、第一可配置32位加法器输出的A1S以及第四操作码opcode输入到第二饱和处理单元。
当第四操作码表示16位数乘32位数的运算时,第四多路选择器将A1S的低16位作为其输出的result2_P4的低16位,将MUX4A作为result2_P4的47至16位;当第四操作码opcode为其它时,将MUX4A作为result2_P4的低32位。
本发明的可配置多精度定点乘加装置包括4个booth乘法器,每个乘法器能够完成两个16位定点数的乘法,得到两个32位部分积。并且多功能的可配置压缩阵列能够实现不同精度的部分积压缩,使得本发明提供的定点乘加装置能够支持多精度的乘加运算。
下面结合具体的实施例,分别说明本发明能够实现的多精度乘加运算在流水线中的执行流程。
【实施例一】16×16位的乘法和点乘
具体的说,以并行的2个AL×BL±AH×BH+U的点乘,其中,A、B、C、D为16位数,M为32位数为代表,上述操作可以用下面的2个表达式来表示:
AL×BL±AH×BH+U (1)
CL×DL±CH×DH+V (2)
在公式1和公式2中,AL、BL、AH、BH、CL、DL、CH、DH均为16位有符号或无符号数,U和V为32位有符号或无符号数。将上述数据作为本发明的可配置定点乘法单元的输入操作数。通过将其中一些输入操作数置位为0,实现其他所有的16×16位的乘法和点乘。例如,并行的2个16×16位的乘法可以通过将AH、BH、CH、DH、U和V置位为0来实现。
其中,公式1和公式2表示的操作由本发明的四级流水线实现。如图2所示。在第一级流水线中,4个16位的Booth乘法器分别完成AL×BL、AH×BH、CL×DL和CH×DH。每个16位的Booth乘法器实现Booth编码和部分积压缩,得到2个32位的部分积。在第二级流水线中,将得到的部分积输入可配置压缩阵列,可配置压缩阵列被配置为实现2组32位部分积的压缩。AL×BL的2个部分积、AH×BH的2个部分积和U被压缩为2个部分积,同时,CL×DL的2个部分积、CH×DH的2个部分积和V被压缩为2个部分积。如果指令为减法操作,AH×BH的2个部分积和CH×DH的2个部分积都要取反,每组部分积还要增加一个十六进制数2,作为可配置压缩阵列的输入。
在第三级流水线中,将第二级流水线中得到的公式1的2个部分积通过32位加法器相加,然后进行饱和处理,得到公式1的结果。在第四级流水线中,将第二级得到的公式2的2个部分积通过32位加法器相加,然后进行饱和处理,得到公式2的结果。
除了单个16×16位的乘法以外,其他16×16位的乘法和点乘操作均可以通过以上方式完成。对于单个16×16位的乘法AL×BL,只需要二级流水线完成。在第一级流水线中,仍然是通过16位的Booth乘法器得到2个部分积。而在第二级流水线中,2个部分积直接通过加法器相加,得到最终结果。
【实施例二】16×32位的乘法
具体的说,以并行的2个16×32位的乘法为代表,上述操作可以通过下面的2个表达式来表示:
AL[15:0]×B[31:0] (3)
CL[15:0]×D[31:0] (4)
在公式3和公式4中,AL和CL为16位有符号或无符号整数,B和D为32位有符号或无符号整数,它们作为可配置定点乘法单元的输入操作数。单个16×32位的乘法可以通过将输入操作数CL和D置位为0来实现。
对于公式3表示的乘法操作,如果操作数为有符号数,B可以表示为:
B=-b31231+b30230+…+b121+b0 (5)
而公式5又可以表示为:
B=(-b31215+b30214+…+b16)×216+(b15215+…+b0) (6)
如果用BH表示B的高16位的有符号数,用BL表示B的低16位的无符号数,即:
BH=-b31215+b30214+…+b16 (7)
BL=b15215+…+b0 (8)
则公式3可以表示为:
AL×B=AL×BH×216+AL×BL (9)
对于公式3表示的乘法操作,如果操作数为无符号数,B可以表示为:
B=b31231+b30230+…+b121+b0 (10)
而公式10又可以表示为:
B=(b31215+b30214+…+b16)×216+(b15215+…+b0) (11)
如果BL仍然表示B的低16位的无符号数,如公式8所示,而BH表示B的高16位的无符号数:
BH=b31215+b30214+…+b16 (12)
则公式3仍然可以用公式9表示,只是BH的意义不用。
综上,公式3表示的乘法操作可以表示为公式9。其中,对于有符号数乘法操作,BH为有符号数,而BL为无符号数;对于无符号数乘法操作,BH和BL均为无符号数。
同理,公式4表示的乘法操作可以表示为公式13:
CL×D=CL×DH×216+CL×DL (13)
其中,对于有符号数乘法操作,DH为有符号数,而DL为无符号数;对于无符号数乘法操作,DH和DL均为无符号数。
公式3和公式4,即公式9和公式13,表示的并行的2个16×32位的乘法操作由四级流水线实现。在第一级流水线中,4个16位的Booth乘法器分别完成AL×BL、AL×BH、CL×DL和CL×DH。这些输入操作数根据操作类型选择为有符号数或无符号数。每个16位的Booth乘法器得到2个48位的部分积。在第二级流水线中,可配置32位加法器被配置为实现2个16位的加法。AL×BL的2个48位部分积的低16位相加,得到公式3的结果的低16位,以及一个进位Cin1。同时,CL×DL的2个48位部分积的低16位相加,得到式4的结果的低16位,以及一个进位Cin2。可配置压缩阵列被配置为实现2组32位部分积的压缩。AL×BL的2个48位部分积的高32位和AL×BH的2个部分积的低32位被压缩为2个32位的部分积。同时,CL×DL的2个48位部分积的高32位和GL×DH的2个部分积的低32位被压缩为2个32位的部分积。在第三级流水线中,第二级得到的公式3的2个32位部分积和进位Cin1通过加法器相加,得到公式3-19的结果的高32位。在第四级流水线中,第二级得到的公式4的2个32位部 分积和进位Cin2通过加法器相加,得到公式4的结果的高32位。由此将高32位结果和第二级得到的低16位结果组合,即为16×32位乘法的48位的结果。
【实施例三】32×32位的乘法
上述操作通过下式来表示:
A[31:0]×B[31:0] (14)
在上述公式14中,A和B均为32位有符号或无符号整数。如果用AH和BH表示A和B的高16位数,用AL和BL表示A和B的低16位数,则公式14表示为:
A×B=AH×BH×232+(AH×BL+AL×BH)×216+AL×BL (15)
在公式15中,如果为有符号数乘法,则AH和BH为有符号数,而AL和BL为无符号数;如果为无符号数乘法,则AH、BH、AL和BL均为无符号数。
公式14,即公式15,表示的32×32位的乘法操作由四级流水线实现。在第一级流水线中,4个16位的Booth乘法器分别完成AL×BL、AL×BH、AH×BL和AH×BH。上述输入操作数根据操作类型选择为有符号数或无符号数。每个16位的Booth乘法器得到2个64位的部分积。在第二级流水线中,可配置压缩阵列被配置为实现1组64位部分积的压缩。AL×BL的2个部分积、AL×BH和AH×BL的4个部分积左移16位,以及AH×BH的2个部分积左移32位,这8个部分积被压缩为2个64位的部分积。在第三级流水线中,2个部分积的低32位相加,得到公式15的结果的低32位,以及一个进位Cin3。在第四级流水线中,2个部分积的高32位和进位Cin3相加,得到公式15的结果的高32位。由此,高32位结果和低32位结果组合,即为32×32位乘法的64位的结果。
【实施例四】两组8×8位的点乘
具体的说,以并行的2个AL×BL±AH×BH+U的点乘为例,其中A、B、C、D为8位数M为16位数。上述操作通过公式1、公式2来表示。
本实施例与实施例一的处理方法相同,对于无符号运算只需要在操作数前补0扩展为16位操作数,对于有符号运算只需要将操作数按符号位扩展为16位操作数,即可以按照实施例一的方法计算结果。
【实施例五】一组8×8+8×8+8×8+8×8
具体的说,上述操作可以用下式表示:
A×B+C×D+E×F+G×H (16)
在公式16中,A至H为8位有符号数或无符号数。在第一级流水线中,四个booth乘法器计算出4个8位乘法的部分积;在第二级流水线中,这8个16位部分积被送入可配置压缩阵列进行压缩,得到两个32位的部分积;在第三级流水线中,这两个32位部分积相加,得到8×8+8×8+8×8+8×8操作的结果,该结果在第四级流水线被多路选择器选中,作为乘加单元的输出结果。
【实施例六】多组8×8
在本实施例中,以4组8×8运算为例,可以下式表示:
AL×BL (17)
AH×BH (18)
CL×DL (19)
CH×DH (20)
在公式17中,AL、BL、AH、BH、CL、DL、CH、DH为8位有符号数或无符号数。如果只进行一组8×8运算,则把除AL、BL之外的数置为0即可。
在第一级流水线,4个booth乘法器分别计算出式17、18、19、20的两个部分积;在第二级流水线,这些部分积被寄存在段间寄存器;在第三级流水线,式17、18的部分积被送入32位加法器分别进行求和得到式17、18的结果;在第四级流水线,式19、20的部分积被送入32位加法器分别进行求和得到式19、20的结果,第三级得到的结果被保存在输出的低32位,第四级得到的结果被保存在输出的高32位,组合起来即为4组8×8运算的结果。
在上述操作运算中,除了单个16×16位的乘法为2周期完成以外,其他操作均为4周期完成。
综上,本发明提供的多精度定点乘加装置,能够实现以下功能:
(1)一组A*B,其中A、B为32位数;
(2)一组或两组A*B,其中A为16位数,B为32位数;
(3)一组或两组A*B,其中A、B为16位数;
(4)一组或两组带饱和处理的(A*B±C*D),其中A、B、C、D为16位数;
(5)一组或两组带饱和处理的(A*B±C*D+M),其中A、B、C、D、M为16位数;
(6)一到四组(A*B),其中A、B为8位数;
(7)一组或两组(A*B±C*D),其中A、B、C、D为8位数;
(8)一组(A*B+C*D+E*F+G*H),其中A、B、C、D、E、F、G、H均为8位数。
本发明提供的可配置多精度定点乘加装置,采用四级流水线实现。所有定点乘法操作共用硬件结构,对不同的操作要根据操作码进行不同的配置。并且多功能的可配置压缩阵列能够实现不同精度的部分积压缩,既能实现乘加运算,也能够满足多精度的功能需求,可以实现多种乘法及乘加运算。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
Claims (10)
1.一种可配置多精度定点乘加装置,其特征在于,包括第一级流水线、第二级流水线、第三级流水线和第四级流水线,
所述第一级流水线包括操作数分配器、第一booth乘法器、第二booth乘法器、第三booth乘法器和第四booth乘法器,所述第一级流水线,用于将输入的数据按照运算模式进行分配,并将分配后的数据进行Booth编码和部分积压缩;
所述第二级流水线包括部分积分配器、可配置压缩阵列和第一可配置加法器,所述可配置压缩阵列,用于将来自所述部分积分配器的部分积进行压缩;
所述第三级流水线包括第二可配置加法器、第一多路选择器和第一饱和处理单元,当所述第二可配置加法器的计算结果溢出时,所述第一饱和处理单元对所述溢出的计算结果进行饱和处理;
所述第四级流水线包括第三可配置加法器、第二多路选择器、第三多路选择器、第四多路选择器和第二饱和处理单元,所述第三多路选择器,用于将来自所述第一饱和处理单元和第一可配置加法器的数据选择输出,所述第四多路选择器,用于将来自所述第二饱和处理单元和第一可配置加法器的数据选择输出。
2.如权利要求1所述的定点乘加装置,其特征在于,所述操作数分配器,用于将输入的数据根据第一操作码指示的运算模式进行分配,
所述运算模式包括32位数的乘法运算、16位定点乘32位定点数运算和其他乘法及乘加运算。
3.如权利要求1所述的定点乘加装置,其特征在于,所述第一booth乘法器、第二booth乘法器、第三booth乘法器和第四booth乘法器均为16位booth乘法器,对输入的2个16位数进行Booth编码和部分积压缩,以得到2个32位部分积。
4.如权利要求3所述的定点乘加装置,其特征在于,所述输入的2个16位数为有符号数或无符号数。
5.如权利要求1所述的定点乘加装置,其特征在于,所述部分积分配器根据第二操作码指示的运算模式对来自所述第一booth乘法器、第二booth乘法器、第三booth乘法器和第四booth乘法器的部分积进行分配,
所述运算模式包括32位数的乘法运算、16位数乘32位数的乘法运算、16位数乘法运算、8位数乘法、4组8位数相乘累加的运算或(A*B±C*D+M)运算,
其中,A、B、C、D均为16位数,M为32位数;或者A、B、C、D均为8位数,M为16位数。
6.如权利要求1所述的定点乘加装置,其特征在于,所述可配置压缩阵列对部分积进行压缩进一步包括:对1组64位部分积的压缩或者对2组32位部分积的压缩。
7.如权利要求1所述的定点乘加装置,其特征在于,所述第一可配置加法器、第二可配置加法器和第三可配置加法器均为32位加法器,用于根据第三操作码指示的运算模式对输入的数据相加。
8.如权利要求7所述的定点乘加装置,其特征在于,所述第一可配置加法器、第二可配置加法器和第三可配置加法器对输入的数据相加进一步包括:1个32位数的相加或者2个16位数的相加。
9.如权利要求1所述的定点乘加装置,其特征在于,所述第一多路选择器、第二多路选择器、第三多路选择器和第四多路选择器,分别用于根据第四操作码指示的运算模式对输入的数据选择输出。
10.如权利要求1所述的定点乘加装置,其特征在于,1个(16×16)位的乘法的执行周期为2周期,其他操作的执行周期均为4周期。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102386893A CN101916177B (zh) | 2010-07-26 | 2010-07-26 | 一种可配置多精度定点乘加装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102386893A CN101916177B (zh) | 2010-07-26 | 2010-07-26 | 一种可配置多精度定点乘加装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916177A CN101916177A (zh) | 2010-12-15 |
CN101916177B true CN101916177B (zh) | 2012-06-27 |
Family
ID=43323697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102386893A Expired - Fee Related CN101916177B (zh) | 2010-07-26 | 2010-07-26 | 一种可配置多精度定点乘加装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916177B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294446B (zh) * | 2013-05-14 | 2017-02-15 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN103530085B (zh) * | 2013-09-16 | 2016-06-22 | 电子科技大学 | 一种Booth编码器及乘法器 |
CN103699355B (zh) * | 2013-12-30 | 2017-02-08 | 南京大学 | 一种变阶流水串行乘累加器 |
CN106447035B (zh) * | 2015-10-08 | 2019-02-26 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
WO2019023910A1 (zh) * | 2017-07-31 | 2019-02-07 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
CN108108150B (zh) * | 2017-12-19 | 2021-11-16 | 云知声智能科技股份有限公司 | 乘累加运算方法及装置 |
CN108364065B (zh) * | 2018-01-19 | 2020-09-11 | 上海兆芯集成电路有限公司 | 采布斯乘法的微处理器 |
CN109634558B (zh) * | 2018-12-12 | 2020-01-14 | 上海燧原科技有限公司 | 可编程的混合精度运算单元 |
CN111596888A (zh) * | 2020-03-02 | 2020-08-28 | 成都优博创通信技术股份有限公司 | 一种在低位宽mcu上实现32位无符号数整型乘法运算的方法 |
CN112631548B (zh) * | 2020-12-22 | 2022-10-04 | 无锡江南计算技术研究所 | 基于混合粒度乘法部件的多精度乘法器及运算方法 |
CN113010148B (zh) * | 2021-02-09 | 2022-11-11 | 南方科技大学 | 一种适用于混合精度神经网络的定点乘加运算单元及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221490B (zh) * | 2007-12-20 | 2010-11-10 | 清华大学 | 一种具有数据前送结构的浮点乘加单元 |
CN100570552C (zh) * | 2007-12-20 | 2009-12-16 | 清华大学 | 一种并行浮点乘加单元 |
-
2010
- 2010-07-26 CN CN2010102386893A patent/CN101916177B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101916177A (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101916177B (zh) | 一种可配置多精度定点乘加装置 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN104111816B (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
US6609143B1 (en) | Method and apparatus for arithmetic operation | |
WO2009035185A1 (en) | Reconfigurable array processor for floating-point operations | |
CN105607889A (zh) | Gpdsp共享乘法器结构的定点浮点运算部件 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN101082860A (zh) | 一种乘累加装置 | |
CN105335127A (zh) | Gpdsp中支持浮点除法的标量运算单元结构 | |
CN102360281B (zh) | 用于微处理器的多功能定点乘加单元mac运算装置 | |
CN101706712B (zh) | 浮点向量乘加运算装置和方法 | |
CN101840324B (zh) | 支持复数运算和子字并行的64位定浮点乘法器 | |
CN116450217A (zh) | 一种多功能定点乘法和乘累加运算装置及方法 | |
WO2010138432A1 (en) | Integer multiply and multiply-add operations with saturation | |
US6675286B1 (en) | Multimedia instruction set for wide data paths | |
CN111381808A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN100367191C (zh) | 一种快速流水线型除法器 | |
CN102253822B (zh) | 一种模(2^n-3)乘法器 | |
CN103699729B (zh) | 模乘法器 | |
RU185346U1 (ru) | Векторный мультиформатный умножитель | |
CN114756203A (zh) | 基4 Booth乘法器及其实现方法、运算电路及芯片 | |
CN100363885C (zh) | 乘累加装置 | |
US9804998B2 (en) | Unified computation systems and methods for iterative multiplication and division, efficient overflow detection systems and methods for integer division, and tree-based addition systems and methods for single-cycle multiplication | |
CN107315710A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120627 |
|
CF01 | Termination of patent right due to non-payment of annual fee |