CN115796197A - 一种基于对数的频率和精度可重构的近似浮点乘法器 - Google Patents
一种基于对数的频率和精度可重构的近似浮点乘法器 Download PDFInfo
- Publication number
- CN115796197A CN115796197A CN202211429165.1A CN202211429165A CN115796197A CN 115796197 A CN115796197 A CN 115796197A CN 202211429165 A CN202211429165 A CN 202211429165A CN 115796197 A CN115796197 A CN 115796197A
- Authority
- CN
- China
- Prior art keywords
- bit
- adder
- precision
- multiplier
- output
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于对数的频率和精度可重构的近似浮点乘法器,属于芯片设计与FPGA技术领域。包括:符号判断模块,用于判断两个操作数乘积结果的符号位;尾码计算模块,包括第一加法器,两个操作数的尾码输入所述第一加法器,相加后输出结果为两个操作数乘积结果的尾码近似值;阶码计算模块,包括一个八位带进位的加法器和一个九位减法器,用于计算两个操作数乘积结果的阶码。本发明乘法器能够大幅提升乘法器的运行速度,并显著减小电路面积,并且提供了不同精度和频率要求情况下的不同工作模式,在特定情况下,还可以通过选择两种错误纠正模式进一步提升计算结果的精确度,是一种高速低功耗的近似乘法器,更适用于大规模集成电路的应用。
Description
技术领域
本发明属于芯片设计与FPGA技术领域,更具体地,涉及一种基于对数的频率和精度可重构的近似浮点乘法器。
背景技术
近年以来,随着人工智能、机械学习的发展,神经网络的应用变得越来越频繁,涉及范围越来越广。但随着使用神经网络的场景愈加复杂化,神经网络训练和使用时,所需进行的计算量也在逐步增加。因此人们对芯片的数据处理能力提出了更高的要求。同时,庞大的计算量也带来的逐渐增加以至于不可忽视的功耗问题,对电路的性能也提出了新的挑战。
其中,乘法器作为最为重要也是最为基本的运算单元,在神经网络中发挥着重要作用。然而在基础电路元器件不做出改进的前提下,希望通过简单优化传统乘法器以求进一步提升乘法器速度现在已经变得十分困难。因此迫切地需要提出一种新型结构的,对乘法运算速度有显著提升的乘法器架构。以此来保证神经网络的高速运转以适应现代社会中更复杂多元化的需求。
目前传统乘法器的最基本结构主要有两种:串行乘法器架构和并行乘法器架构。其中,传统的串行乘法器具有结构简单面积小的优点,但其特点是部分积的产生与部分积的累加是分次完成的,每个周期产生一个部分积,然后循环复用一个加法器进行累加,也就是说对于n位的乘法器就需要n个周期才能得出最终结果,因此其运算周期很长,不利于乘法计算的高速实现。而并行乘法器则是将乘法运算的每一步在芯片中直接同步展开,将部分积的产生与部分积的压缩并行处理,从而可以大大提高乘法计算的速度,但是其电路十分复杂,浪费布线资源且占用面积很大,功耗也很大,是一种用空间换时间的思路。
现有技术中,也提出过一些新型的乘法器结构,大多是以尽可能地优化传统乘法器架构为主,或是选择将两种传统乘法器的结构进行融合,或是通过结构层面的优化提升乘法器的性能,但是这些方法均还是局限在传统乘法器的结构上,虽然在一定程度上优化乘法器的运行速度与功耗,并不能真正解决乘法器的运行速度和功耗的问题。
并且随着时代的发展,在神经网络、机械学习这类对乘法器速度提出了更高要求而对精度并没有十分苛刻要求的领域,通过优化传统乘法器结构的方法已经显得越来越力不从心。因此此时迫切地需要提供一种新颖的,结构更简单同时也更适用于神经网络运算的新型乘法器架构。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于对数的频率和精度可重构的近似浮点乘法器,其目的在于通过略微牺牲计算结果的精度而大幅提升乘法器的运行速度,并显著减小电路面积,使之更适用于大规模集成电路的应用。
为实现上述目的,本发明提供了一种基于对数的频率和精度可重构的近似浮点乘法器,包括:
符号判断模块,用于判断两个操作数乘积结果的符号位,其中,两个操作数是位宽为16位的浮点数;
尾码计算模块,包括第一加法器,两个操作数的尾码输入所述第一加法器,相加后输出结果为两个操作数乘积结果的尾码近似值;
阶码计算模块,包括一个八位带进位的加法器和一个九位减法器,两个操作数的阶码输入所述八位带进位的加法器,所述尾码计算模块的输出结果最高位输入至所述八位带进位的加法器的进位位,所述八位带进位的加法器的输出结果与九位的十进制数127分别输入至所述九位减法器做差后,所述九位减法器的输出为两个操作数乘积结果的阶码。
进一步地,所述乘法器还包括错误纠正模块,所述尾码计算模块还包括第二加法器;
所述错误纠正模块用于纠正所述尾码计算模块的输出结果;
所述第一加法器的输出以及所述错误纠正模块的输出分别输入所述第二加法器中相加后,所述第二加法器输出结果为两个操作数乘积结果的尾码。
进一步地,所述错误纠正模块包括四个并行的3×3乘法器、位扩展单元、两个九位加法器和一个十二位加法器,记所述两个九位加法器分别为第三加法器、第四加法器,所述十二位加法器为第五加法器;
将两个操作数尾码的高6位均分为高3位和低3位,记其中一个操作数的高3位和低3位分别为:MA[5:3],MA[2:0],另一个操作数的高3位和低3位分别为:MB[5:3],MB[2:0];
则所述四个并行的3×3乘法器的输入分别为:MA[5:3]与MB[5:3],MA[5:3]与MB[2:0],MA[2:0]与MB[5:3],MA[2:0]与MB[2:0],经过所述3×3乘法器相乘后,输出分别记为MA_53_MB_53,MA_53_MB_20,MA_20_MB_53,MA_20_MB_20;所述移位操作单元包括先对对应操作数进行位扩展后,在对应位补0;
所述位扩展单元用于将MA_53_MB_53低位补3位0,MA_53_MB_20高位补3位0后分别输入至所述第三加法器相加,输出结果记为M1;
所述位扩展单元还用于将MA_20_MB_53低位补3位0,MA_20_MB_20高位补3位0后分别输入至所述第四加法器相加,输出结果记为M2;
所述位扩展单元还用于将M1低位补3位0,M2高位补3位0后,分别输入所述至第五加法器相加,取输出结果的高7位作为所述错误纠正模块的高精度输出结果M_H。
进一步地,所述错误纠正模块还包括低精度输出单元、第二精度选择器;所述乘法器还包括时钟和精度控制模块;
所述低精度输出单元用于将MA_53_MB_53在最低位补一后,作为所述错误纠正模块的低精度输出结果M_L;
所述时钟和精度控制模块用于输出控制信号控制所述第二精度选择器选择所述高精度输出结果M_H或所述低精度输出结果M_L作为所述错误纠正模块的输出。
进一步地,所述3×3乘法器包括部分积产生单元、第一半加器、第二半加器、一个一位全加器和一个三位超前进位加法器;
所述部分积产生单元用于根据所述输入产生9个初始部分积,从高位到低位依次记为x2y2、x2y1、x1y2、x0y2、x1y1、x2y0、x0y1、x1y0、x0y0;
x0y0为所述3×3乘法器输出结果的最低位,记为S0;
x0y1、x1y0作为所述第一半加器HA的输入,相加得到的输出结果记为S1;
x0y2、x1y1、x2y0作为所述一位全加器的输入,x2y1、x1y2作为所述第二半加器的输入;所述第一半加器的进位位输出和所述一位全加器的输出结果共同作为所述三位超前进位加法器CLA的第一个输入,相加后输出结果记为S2;
所述一位全加器的进位位输出和所述第二半加器的输出结果共同作为所述三位超前进位加法器的第二个输入,相加后输出结果记为S3;
所述第二半加器的进位位输出与x2y2共同作为所述三位超前进位加法器A的第三个输入,相加后输出结果记为S4;
所述三位超前进位加法器的进位位输出作为所述3×3乘法器输出结果的最高位,记为S5;
则S5、S4、S3、S2、S1、S0依次作为所述3×3乘法器的输出结果。
进一步地,所述尾码计算模块还包括第一精度选择器块;
所述时钟和精度控制模块用于输出控制信号控制所述第一精度选择器选择所述第一加法器的输出作为两个操作数乘积结果的尾码,或选择所述第二加法器的输出作为两个操作数乘积结果的尾码。
进一步地,所述第一精度选择器或第二精度选择器均为七位数据选择器。
进一步地,所述时钟和精度控制模块采用glitch free无毛刺时钟切换电路。
进一步地,所述第一加法器为七位加法器,所述第二加法器为八位加法器。
进一步地,所述符号判断模块通过将两个操作数的符号位相异或后,得到的输出结果为两个操作数乘积结果的符号位。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明设计的浮点乘法器基于对数近似的思量,将两个尾码的乘法运算转换成对数运算,基于浮点数尾码的特点,取对数的近似,最终得到两个浮点数的尾码相乘的结果可近似为两浮点数的尾码的和。虽然略微牺牲了计算结果的精度,但是极大提升了乘法器的运行速度,并显著减小了电路面积,这种新的架构更适用于神经网络、机械学习这类对乘法器速度要求高而对精度并没有十分苛刻要求的场合。
(2)考虑到不同场景会对精度提出不同的要求,本发明进一步设计了错误纠正模块,弥补近似部分的运算结果,对尾码近似的输出结果与错误纠正系数求和以对计算结果进行修正,得到的结果为比较精确的计算结果。进一步地,还可以根据不同的应用场景,通过第一精度选择器,实现不同精度的输出;同时,本发明设计的错误纠正模块,通过设计的内部结构结合第二精度选择器,能够实现高精度和低精度的输出,进一步根据不同的精度要求,输出不同的精度,实现精度的重构,适用范围广泛。
(3)作为本发明的进一步设计,设计的错误纠正模块是一种串并行结合的方式,四个高速3×3乘法器以及两个九位加法器均为并行工作,高速3×3乘法器与加法器之间串行工作,相比现有的串行工作乘法器,本发明的3×3乘法器速度更快,相比现有的并行工作乘法器,本发明的3×3乘法器的电路面积更小,更适用于大规模集成电路。
(4)进一步地,本发明设计的高速3×3乘法器,采用了纯并行结构,保证了高运算速率的同时尽可能地通过优化设计减小了硬件资源的消耗。
(5)进一步地,本发明设计的时钟与精度控制模块采用glitch free无毛刺时钟切换电路,能够实现多个不相干的时钟信号的无毛刺切换,使乘法器工作在不同频率下,实现乘法器频率的重构。
总而言之,本发明的基于对数的频率和精度可重构的近似浮点乘法器能够大幅提升乘法器的运行速度,并显著减小电路面积,并且提供了不同精度和频率要求情况下的不同工作模式,在特定情况下,还可以通过选择两种错误纠正模式进一步提升计算结果的精确度,是一种高速低功耗的近似乘法器,更适用于大规模集成电路的应用。
附图说明
图1为本发明实施例提供的基于对数的频率和精度可重构的近似浮点乘法器的结构图。
图2为本发明实施例提供的错误纠正模块的架构图。
图3为本发明实施例提供的FECE架构图。
图4为本发明实施例提供的时钟与精度控制模块架构图。
图5为发明实施例提供的时序逻辑图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明中,本发明及附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。同时,声明本发明中所提及的移位操作,指先将原有数据进行位扩展,再于相应位进行补零操作。
如图1所示,本发明提供一种基于对数的频率和精度可重构的近似浮点乘法器,该浮点乘法器为16位乘法器,主要包括:乘法运算核部分、错误纠正模块以及时钟与精度控制模块。
乘法运算核部分主要包括:符号判断模块、阶码计算模块及尾码计算模块;
符号判断模块,用于判断两个操作数乘积结果的符号,具体地,通过将两个操作数的符号位相异或后,得到的输出结果即为两个操作数乘积结果的符号位。其中,两个操作数是位宽为16位的浮点数。
阶码计算模块,用于计算两个操作数乘积结果的阶码;具体地,包括一个八位带进位的加法器和一个九位减法器,两个操作数的阶码输入八位带进位的加法器,尾码计算模块输出的尾码计算结果的进位位(最高位)输入至该八位带进位的加法器的进位位,两个操作数的阶码相加后,得到的9位中间结束输入九位减法器,与9’d127(即九位的十进制数127)做差后,九位减法器的输出即为两个操作数乘积结果的阶码。
尾码计算模块,用于计算两个操作数乘积结果的尾码;具体地,包括第一加法器,两个操作数的尾码输入第一加法器,相加后输出即为两个操作数乘积结果的尾码近似值。其中,第一加法器输出的最终结果的最高位为进位位,第一加法器为七位加法器。
符号判断模块、阶码计算模块及尾码计算模块的输出结果依次构成该浮点乘法器输出结果的符号位、阶码及尾码。
为了进一步提升本发明乘法器计算结果的精度,尾码计算模块还包括第二加法器,配合错误纠正模块以实现计算结果精度的提升。
具体地,尾码计算模块中,第一加法器输出的尾码近似值与错误纠正模块的输出分别输入第二加法器中,相加后,第二加法器的输出结果即为经过修正的乘积计算结果,本实施例中,第二加法器为八位加法器。
进一步地,在尾码计算模块中还设计了第一精度选择器,第一加法器的输出与第二加法器的输出分别输入第一精度选择器中以选择不同的精度输出;根据不同的精度要求应用场景,基于时钟和精度控制模块输出的控制信号,控制第一精度选择器选择不同的精度,在对速度要求较高而对精度要求不要的场合,可以选择第一加法器的输出尾码近似值作为本发明的乘法器的尾码计算结果,在对精度有要求的场合,可以选择第二加法器的输出结果作为本发明的乘法器的尾码计算结果。
具体地,如图2所示,错误纠正模块用于对尾码乘积近似计算结果进行纠正,以提升计算结果的精度,主要包括:四个并行的高速3×3乘法器、位扩展单元、两个九位加法器和一个12位加法器;记两个九位加法器分别为第三加法器、第四加法器,记该12位加法器为第五加法器。
四个并行的高速3×3乘法器,是一种超高速的3bit乘法器,记为Fast ErrorCorrection Element(FECE);
将两个乘数的尾码中的高6位再次分成高3位和低3位,记其中一个乘数的高3位和低3位分别为:MA[5:3],MA[2:0],另一个乘数的高3位和低3位分别为:MB[5:3],MB[2:0];则四个并行的3×3乘法器的输入分别为:MA[5:3]与MB[5:3],MA[5:3]与MB[2:0],MA[2:0]与MB[5:3],MA[2:0]与MB[2:0],对应的四个并行的3×3乘法器的六位输出分别记为MA_53_MB_53,MA_53_MB_20,MA_20_MB_53,MA_20_MB_20;
位扩展单元用于将MA_53_MB_53低位补3位0,MA_53_MB_20高位补3位0后分别输入第三加法器,相加后,输出结果记为M1;
位扩展单元还用于将MA_20_MB_53低位补3位0,MA_20_MB_20高位补3位0后分别输入第四加法器,相加后,输出结果记为M2;
位扩展单元还用于将M1低位补3位0,M2高位补3位0后,分别输入第五加法器,相加后,取输出结果的高7位即为错误纠正模块的高精度输出结果M_H;
作为本发明的进一步设计,在上面方案的基础上,结合低精度输出单元、第二精度选择器和时钟和精度控制模块,本发明还能进一步地实现更精细化的精度选择和控制;
低精度输出单元用于在MA_53_MB_53低位补1位1后即为错误纠正模块的低精度输出结果M_L;
将M_L与M_H输入由SEL信号控制的第二精度选择器,其中SEL信号由时钟和精度控制模块给出,当SEL信号为1’b0时,为低精度修正模式,错误纠正模块输出的错误纠正系数Manti_C为M_L;当SEL信号为1’b1时,为高精度修正模式,错误纠正模块输出Manti_C为M_H。
将第一加法器输出的尾码近似值与错误纠正模块的输出结果Manti_C分别输入第二加法器中,相加后,输出结果即为经过修正的乘积计算结果。
作为本发明的进一步设计,在上面方案的基础上,结合低精度输出单元、第二精度选择器和时钟和精度控制模块,本发明还能进一步地实现更精细化的精度选择和控制;
具体地,低精度输出单元用于将MA_53_MB_53在末位补一,作为错误纠正模块的低精度输出结果M_L;错误纠正模块的高精度输出结果M_H和错误纠正模块的低精度输出结果M_L分别输入第二精度选择器选择不同的精度输出;根据不同的精度要求应用场景,时钟和精度控制模块输出的SEL控制信号,控制第二精度选择器选择不同的精度,在精度要求不是很高的场合,可以选择低精度输出结果M_L,此时错误纠正模块仅需要运行一次3*3的结果即可,能够实现在具有一定精度的基础上,提升乘法器的运行速度。其中,本实施例中,第二精度选择器为七位数据选择器。
作为本发明的进一步设计,本发明还设计了高速3×3乘法器的具体结构,如图3所述,每个高速3×3乘法器包括:部分积产生单元、两个一位半加器HA、一个一位全加器FA和一个三位超前进位加法器CLA,记两个一位半加器HA分别为第一半加器HA、第二半加器HA;记每个高速3×3乘法器的输入为x和y,x和y均为3bit数。
部分积产生单元用于根据每个高速3×3乘法器的输入x和y,产生9个初始部分积,从高位到低位依次记为x2y2、x2y1、x1y2、x0y2、x1y1、x2y0、x0y1、x1y0、x0y0;
将最低位的部分积x0y0直接作为高速3×3乘法器输出结果的最低位S0输出;x0y1、x1y0作为第一半加器HA的输入,第一半加器HA的输出结果记为S1,x0y2、x1y1、x2y0作为一位全加器FA的输入,x2y1、x1y2作为第二半加器HA的输入;其中,第一半加器HA的进位位输出和一位全加器FA的输出结果共同作为三位超前进位加法器CLA的第一个输入,其输出结果记为S2,一位全加器FA的进位位输出和第二半加器HA的输出结果共同作为三位超前进位加法器CLA的第二个输入,其输出结果记为S3,第二半加器HA的进位位输出与x2y2共同作为三位超前进位加法器CLA的第三个输入,其输出结果记为S4,三位超前进位加法器CLA的进位位输出记为S5,则S5、S4、S3、S2、S1、S0依次作为高速3×3乘法器的输出结果,其中,S5为最高位,S0为最低位。
本发明设计的高速3×3乘法器,采用了纯并行结构,保证了高运算速率的同时尽可能地通过优化设计减小了硬件资源的消耗。
具体地,如图4所示,本发明的时钟和精度控制模块采用glitch free无毛刺时钟切换电路,其包含了一系列三输入与门,二输入与门,三输入或门以及一些列D触发器,能够消除多个输入时钟的毛刺或亚稳态,实现多个不相干的时钟信号的无毛刺切换,可以输出多个不同频率的时钟作为本发明的乘法器运行的时钟频率,使乘法器工作在不同频率下,实现乘法器频率的重构;同时,时钟和精度控制模块还提供控制信号控制第一精度选择器、第二精度选择器以使乘法器实现不同精度的输出。本发明实施例中,时钟和精度控制模块实现的功能为消除三个输入时钟的毛刺或亚稳态,并根据控制信号选择输出已无毛刺与亚稳态的时钟信号,并通过mode register向乘法运算核及错误纠正模块传递精度控制信号,实现了精度和时钟的运行时可重构。
本发明设计的16位快速浮点乘法器的工作方法,具体包括:
初始化,接收复位信号后,在时钟上升沿,输入16位乘数A和16位被乘数B分别到输入寄存器,乘法运算结果存储在寄存器P;
乘法运算核部分为纯组合逻辑电路。其中,A与B的最高位分别输入符号判断模块,输出结果直接作为两个操作数乘积运算结果的符号位输出至寄存器P的最高位。
A与B的低7位(即两个操作数的尾码位,对应于图1中的Manti[7:1])分别输入尾码计算模块中的第一加法器相加后得到输出结果M_ADDER,也即两个操作数乘积结果的尾码近似值。A与B的第6位到第1位分别按照上述分组输入错误纠正模块,同时在时钟与精度控制模块输出的MODE信号的控制下,错误纠正模块输出错误纠正系数Manti_C(也即上文中所述的M_H或M_L)。然后,将第一加法器得到输出结果M_ADDER的低7位和错误纠正系数Manti_C输入第二加法器中,第二加法器输出的结果即为修正后的乘积结果M_Ptemp。
将M_ADDER和M_Ptemp的最高位相或得到尾码对阶码进位信号Exp_Carry,将Exp_Carry输入阶码计算模块中的八位带进位的加法器的进位位,A与B的第15位到第7位(即两个操作数的阶码位)分别输入阶码计算模块中的八位带进位的加法器得到输出结果E_P_temp1,将E_P_temp1与9’d127输入九位减法器,相减后,得到输出结果即为两个操作数乘积阶码运算结果E_P。
在错误纠正模块中,分别将A的第6位到第4位(记为MA[5:3])与B的6位到4位(记为MB[5:3]),A的6位到4位与B的3位到1位(记为MB[2:0]),A的3位到1位(记为MA[2:0])与B的6位到3位,A的3位到1位与B的3位到1位分别输入四个3×3乘法器,得到输出结果分别记为MA_53_MB_53,MA_53_MB_20,MA_20_MB_53,MA_20_MB_20;将MA_53_MB_53低位补3位0,MB_53_MB_20高位补3位0后分别输入第三加法器,相加后,输出结果记为M1;
将MA_20_MB_53低位补3位0,MA_20_MB_20高位补3位0后分别输入第四加法器,相加后,输出结果记为M2;
将M1低位补3位0,M2高位补3位0后,分别输入第五加法器,相加后,取输出结果的高7位(即第11位到第5位)即为错误纠正模块的高精度输出结果M_H;
将MA_53_MB_53在低位补1位1,作为错误纠正模块的低精度输出结果M_L;
通过MODE信号控制的第二数据选择器选择M_H或者M_L作为错误纠正模块输出的错误纠正系数Manti_C。
在时钟和精度控制模块中,通过MODE选择乘法器工作的时钟,借助D触发器的特性实现消除时钟信号的毛刺与亚稳态。具体工作过程如下:如图4所示为相关时钟源的无毛刺切换解决方法,每个时钟源的选择路径上,都插入了一个下降沿有效的D触发器。在时钟的每个下降沿,寄存选择控制信号MODE有效,并且其他时钟的选择被释放后会使能新的时钟选择。一个时钟的选择反馈到了另外两个时钟,其使门控开关在选择输出下一个时钟之前,会先取消当前时钟的输出选择,避免了任何可能出现的毛刺Glitch。
具体地,对于三个输入时钟信号,采用独热编码进行控制,因为三个时钟任意时刻只会选中其中一路,和独热编码性质相同。2bit的MODE信号经过独热码编码器后对时钟信号进行选择,同时编码后的信号(sel1~sel3)输入mode register用于控制乘法器核心的计算精度。另外,在本申请中,使用输出时钟信号驱动独热码编码器,不仅消除了MODE信号的亚稳态,进一步提升了系统稳定性。因为时钟从慢变快时,需要先完成关键路径的切换,而时钟从快变慢时,需要先完成时钟信号的切换,这种结构让精度控制信号与乘法核心的时钟同步,所有的切换都发生在clock gap时间的前一个时钟上升沿,从而解决了快慢时钟切换时的时序问题,最终的运行时序如图5所示。当输入MODE信号为2’b00或2’b01时,输出clk_1;当输入MODE信号为2’b10时,输出clk_2;当输入MODE信号为2’b11时,输出clk_3。
本发明设计的浮点乘法器基于对数近似的思量,将两个尾码的乘法运算转换成对数运算,基于浮点数尾码的特点,取对数的近似,最终得到两个浮点数的尾码相乘的结果可近似为两浮点数的尾码的和。虽然略微牺牲了计算结果的精度,但是极大提升了乘法器的运行速度,并显著减小了电路面积,这种新的架构更适用于神经网络、机械学习这类对乘法器速度要求高而对精度并没有十分苛刻要求的场合。
考虑到不同场景会对精度提出不同的要求,本发明进一步设计了错误纠正模块,弥补近似部分的运算结果,对上述近似的输出结果与错误纠正系数求和以对结果进行修正,得到的结果为比较精确的计算结果。并根据不同的应用场景,通过第一精度选择器,实现不同精度的输出。同时,本发明设计的错误纠正模块,通过设计的内部结构结合第二精度选择器,还能够实现高精度和低精度的输出,进一步根据不同的精度要求,输出不同的精度,实现精度的重构,适用范围广泛。
进一步地,在设计的错误纠正模块是一种串并行结合的方式,四个高速3×3乘法器以及两个九位加法器均为并行工作,高速3×3乘法器与加法器之间串行工作,相比现有的串行工作乘法器,本发明的3×3乘法器速度更快,相比现有的并行工作乘法器,本发明的3×3乘法器的电路面积更小。
进一步地,设计的时钟与精度控制模块采用glitch free无毛刺时钟切换电路,能够实现多个不相干的时钟信号的无毛刺切换,使乘法器工作在不同频率下,实现乘法器频率的重构;
另外,相比现有的高位截断直接相乘方式的乘法器,本发明的这种先通过近似计算在通过错误纠正模块纠正的方式的速度也更快,因为在近似计算的过程中,仅需要一个加法器就能实现;并且本发明基于逻辑推导的近似,相比直接硬截断的思路,精度更高。
总而言之,本发明设计的乘法器架构,乘法运算核部分通过将浮点数的乘法运算转化为了对数域的加法运算,极大提高了计算效率的同时减小了电路面积,能够降低整体功耗,使之更适用于大规模集成电路的应用。通过时钟与精度控制模块实现多个不相干的时钟信号的无毛刺切换,以及精度和频率的可重构。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于对数的频率和精度可重构的近似浮点乘法器,其特征在于,包括:
符号判断模块,用于判断两个操作数乘积结果的符号位,其中,两个操作数是位宽为16位的浮点数;
尾码计算模块,包括第一加法器,两个操作数的尾码输入所述第一加法器,相加后输出结果为两个操作数乘积结果的尾码近似值;
阶码计算模块,包括一个八位带进位的加法器和一个九位减法器,两个操作数的阶码输入所述八位带进位的加法器,所述尾码计算模块的输出结果最高位输入至所述八位带进位的加法器的进位位,所述八位带进位的加法器的输出结果与九位的十进制数127分别输入至所述九位减法器做差后,所述九位减法器的输出为两个操作数乘积结果的阶码。
2.根据权利要求1所述的乘法器,其特征在于,所述乘法器还包括错误纠正模块,所述尾码计算模块还包括第二加法器;
所述错误纠正模块用于纠正所述尾码计算模块的输出结果;
所述第一加法器的输出以及所述错误纠正模块的输出分别输入所述第二加法器中相加后,所述第二加法器输出结果为两个操作数乘积结果的尾码。
3.根据权利要求2所述的乘法器,其特征在于,所述错误纠正模块包括四个并行的3×3乘法器、位扩展单元、两个九位加法器和一个十二位加法器,记所述两个九位加法器分别为第三加法器、第四加法器,所述十二位加法器为第五加法器;
将两个操作数尾码的高6位均分为高3位和低3位,记其中一个操作数的高3位和低3位分别为:MA[5:3],MA[2:0],另一个操作数的高3位和低3位分别为:MB[5:3],MB[2:0];
则所述四个并行的3×3乘法器的输入分别为:MA[5:3]与MB[5:3],MA[5:3]与MB[2:0],MA[2:0]与MB[5:3],MA[2:0]与MB[2:0],经过所述3×3乘法器相乘后,输出分别记为MA_53_MB_53,MA_53_MB_20,MA_20_MB_53,MA_20_MB_20;所述移位操作单元包括先对对应操作数进行位扩展后,在对应位补0;
所述位扩展单元用于将MA_53_MB_53低位补3位0,MA_53_MB_20高位补3位0后分别输入至所述第三加法器相加,输出结果记为M1;
所述位扩展单元还用于将MA_20_MB_53低位补3位0,MA_20_MB_20高位补3位0后分别输入至所述第四加法器相加,输出结果记为M2;
所述位扩展单元还用于将M1低位补3位0,M2高位补3位0后,分别输入所述至第五加法器相加,取输出结果的高7位作为所述错误纠正模块的高精度输出结果M_H。
4.根据权利要求3所述的乘法器,其特征在于,所述错误纠正模块还包括低精度输出单元、第二精度选择器;所述乘法器还包括时钟和精度控制模块;
所述低精度输出单元用于将MA_53_MB_53在最低位补一后,作为所述错误纠正模块的低精度输出结果M_L;
所述时钟和精度控制模块用于输出控制信号控制所述第二精度选择器选择所述高精度输出结果M_H或所述低精度输出结果M_L作为所述错误纠正模块的输出。
5.根据权利要求3或4所述的乘法器,其特征在于,所述3×3乘法器包括部分积产生单元、第一半加器、第二半加器、一个一位全加器和一个三位超前进位加法器;
所述部分积产生单元用于根据所述输入产生9个初始部分积,从高位到低位依次记为x2y2、x2y1、x1y2、x0y2、x1y1、x2y0、x0y1、x1y0、x0y0;x0y0为所述3×3乘法器输出结果的最低位,记为S0;
x0y1、x1y0作为所述第一半加器HA的输入,相加得到的输出结果记为S1;
x0y2、x1y1、x2y0作为所述一位全加器的输入,x2y1、x1y2作为所述第二半加器的输入;所述第一半加器的进位位输出和所述一位全加器的输出结果共同作为所述三位超前进位加法器CLA的第一个输入,相加后输出结果记为S2;
所述一位全加器的进位位输出和所述第二半加器的输出结果共同作为所述三位超前进位加法器的第二个输入,相加后输出结果记为S3;
所述第二半加器的进位位输出与x2y2共同作为所述三位超前进位加法器A的第三个输入,相加后输出结果记为S4;
所述三位超前进位加法器的进位位输出作为所述3×3乘法器输出结果的最高位,记为S5;
则S5、S4、S3、S2、S1、S0依次作为所述3×3乘法器的输出结果。
6.根据权利要求5所述的乘法器,其特征在于,所述尾码计算模块还包括第一精度选择器块;
所述时钟和精度控制模块用于输出控制信号控制所述第一精度选择器选择所述第一加法器的输出作为两个操作数乘积结果的尾码,或选择所述第二加法器的输出作为两个操作数乘积结果的尾码。
7.根据权利要求6所述的乘法器,其特征在于,所述第一精度选择器或第二精度选择器均为七位数据选择器。
8.根据权利要求6或7所述的乘法器,其特征在于,所述时钟和精度控制模块采用glitch free无毛刺时钟切换电路。
9.根据权利要求1所述的乘法器,其特征在于,所述第一加法器为七位加法器,所述第二加法器为八位加法器。
10.根据权利要求1所述的乘法器,其特征在于,所述符号判断模块通过将两个操作数的符号位相异或后,得到的输出结果为两个操作数乘积结果的符号位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211429165.1A CN115796197A (zh) | 2022-11-15 | 2022-11-15 | 一种基于对数的频率和精度可重构的近似浮点乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211429165.1A CN115796197A (zh) | 2022-11-15 | 2022-11-15 | 一种基于对数的频率和精度可重构的近似浮点乘法器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115796197A true CN115796197A (zh) | 2023-03-14 |
Family
ID=85437876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211429165.1A Pending CN115796197A (zh) | 2022-11-15 | 2022-11-15 | 一种基于对数的频率和精度可重构的近似浮点乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115796197A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116149599A (zh) * | 2023-03-30 | 2023-05-23 | 杭州雄迈集成电路技术股份有限公司 | 一种分步进位处理方法、系统、加法器 |
-
2022
- 2022-11-15 CN CN202211429165.1A patent/CN115796197A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116149599A (zh) * | 2023-03-30 | 2023-05-23 | 杭州雄迈集成电路技术股份有限公司 | 一种分步进位处理方法、系统、加法器 |
CN116149599B (zh) * | 2023-03-30 | 2023-08-08 | 杭州雄迈集成电路技术股份有限公司 | 一种分步进位处理方法、系统、加法器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vun et al. | A new RNS based DA approach for inner product computation | |
Bahadori et al. | High-speed and energy-efficient carry skip adder operating under a wide range of supply voltage levels | |
CN108255777B (zh) | 用于fpga的嵌入式浮点型dsp硬核结构 | |
CN115407965B (zh) | 一种基于泰勒展开的高性能近似除法器及误差补偿方法 | |
CN101140511A (zh) | 串行进位二进制加法器 | |
CN115796197A (zh) | 一种基于对数的频率和精度可重构的近似浮点乘法器 | |
Yan et al. | An energy-efficient multiplier with fully overlapped partial products reduction and final addition | |
JP3556950B2 (ja) | 高速算術演算装置のけた上げ先見加算器段の数を減少させる構造及び方法 | |
Rafiq et al. | An efficient architecture of modified booth multiplier using hybrid adder | |
Ykuntam et al. | Design of 32-bit carry select adder with reduced area | |
Kaivani et al. | High-frequency sequential decimal multipliers | |
Baba et al. | Design and implementation of advanced modified booth encoding multiplier | |
CN115268832A (zh) | 浮点数取整的方法、装置以及电子设备 | |
Pawar et al. | Review on multiply-accumulate unit | |
Tapadar et al. | Power and area aware improved SQRT carry select adder (CSIA) | |
Sivanantham | Design of low power floating point multiplier with reduced switching activity in deep submicron technology | |
Anagha et al. | Power and area efficient carry select adder | |
Manjunatha et al. | Low Power VLSI Design for Power and Area Effective Utilisation of Carry Select Adder | |
Sandeep et al. | Design of area and power Potent Booth multiplier using multiplexer | |
Abraham et al. | An ASIC design of an optimized multiplication using twin precision | |
Gupta et al. | Design of serial multiplier circuit based on a variable length conditional binary counter for improved critical path delay and slack time | |
Al-Ibadi | Hardware implementation for high-speed parallel adder for QSD 2D data arrays | |
Thabah et al. | Improved Signed Binary Multiplier Through New Partial Product Generation Scheme | |
Shyamsunder et al. | Design and Implementation of an Arithmetic Unit with Reduced Switching Activity | |
Hamirdhavalle et al. | VLSI Implementation of Radix Binary Coded Decimal Multiplier using Reversible Logic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |