CN115826913A - 基于静态分段补偿方法的近似二进制乘法器 - Google Patents
基于静态分段补偿方法的近似二进制乘法器 Download PDFInfo
- Publication number
- CN115826913A CN115826913A CN202211373911.XA CN202211373911A CN115826913A CN 115826913 A CN115826913 A CN 115826913A CN 202211373911 A CN202211373911 A CN 202211373911A CN 115826913 A CN115826913 A CN 115826913A
- Authority
- CN
- China
- Prior art keywords
- partial product
- bit
- multiplier
- partial
- row
- 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
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提出的基于静态分段截断补偿方法的近似二进制乘法器结构,考虑了乘法器输入的分布规律而进行分段,在乘法器输入高位冗余概率较大的情况下将冗余部分积截断,降低了硬件资源消耗并很好的保持了精度;在乘法器输入高位不冗余的概率较大的情况下,在截断低有效位的部分积后进行了基于部分积的概率分析的误差补偿电路设计,使其适用于通用的可容错应用场景。并且在两种情况下,乘法器输入经过部分积生成电路产生的部分积输入到同样的进一步采用了截断补偿方法的部分积压缩电路中,而不需要两种情况使用不同的部分积压缩电路,实现了资源的共享从而降低了硬件资源消耗,保证了本发明在大部分应用场景中实现了电路硬件性能和精度很好的折中。
Description
技术领域
本发明属于集成电路技术领域,具体的说是涉及一种基于静态分段补偿方法的近似二进制乘法器。
背景技术
随着物联网、人工智能等业务和场景发展越来越快,智能终端设备越来越多,带来更多的对边缘计算应用的诉求,这些应用所需要的海量数据和复杂计算对于算子电路的设计带来了前所未有的挑战。高性能、低功耗是边缘计算应用中的算子电路的设计需求。同时,精确或高精度的计算在边缘计算应用中并不总是必要的,比如工业界通常选择了8位定点数量化,在需要大量浮点数计算的图像处理,数字信号处理等应用中,将高精度32位单精度浮点数转换为低精度的8位定点数进行处理,经过定点数运算的结果依然是可以接受的。近似计算是这类容错应用中一种常见的低功耗设计方法,可以在精度有限损失的情况下提高算子电路的性能。由于乘法器是算子电路的主要功耗来源,近似乘法器的设计是近似计算研究领域的重点。
一类重要的近似乘法器称为分段乘法器,这类乘法器的设计思想为从两个操作数中各提取出一个低位宽的有效位段,使用内部的低位宽乘法器将两个位段相乘,并将乘法器输出结果扩展到最终的完整位宽乘积结果。分段乘法器的分段方法主要有两种,分别为动态分段和静态分段方法。在使用动态分段的乘法器中,通过最高有效位检测器来检测两个操作数中的最高有效位并提取有效位段,再通过内部乘法器进行有效位段相乘,最后通过移位器来将有效位段乘积结果移位并扩展得到最终乘积结果。动态分段乘法器的近似方法主要是通过对有效位段进行截断补偿和对内部低位宽乘法器进行近似设计来获得不同的近似精度级别,其设计是通过相对复杂的硬件体系结构来实现的,除了内部低位宽乘法器之外,内部的最高有效位检测器和移位器大大增加了硬件资源消耗。在静态分段乘法器中,两个操作数分别被静态分段并提取出一个确定位宽的有效位段。这种方法大大简化了硬件实现,降低了功耗,因为不需要前置探测器和移位器。但另一方面,由于无法精确的选择有效位段,对内部乘法器采用相同近似设计方法的静态分段乘法器比动态分段乘法器误差更大,因此静态分段乘法器更需要精细的误差恢复电路以及对操作数静态分段位宽确定方法的分析。
然而,现有的分段乘法器大多没有考虑输入的分布规律而直接进行分段,也缺少基于部分积的概率分析的误差补偿。
发明内容
针对传统分段乘法器无法很好地实现功耗和精度的折中的问题,本发明提出了一种基于静态分段补偿的近似二进制乘法器结构,通过结构上的创新设计实现性能的提升以及功耗的降低。
本发明实现基于静态分段补偿的近似二进制乘法器的技术方案为:
基于静态分段补偿的近似二进制乘法器,包括部分积生成模块、部分积压缩模块和加法器模块。
所述部分积生成模块用于对乘数进行编码并根据编码信号对被乘数进行解码来生成部分积阵列。
所述部分积压缩模块用于对部分积阵列进行压缩,最终压缩为两行部分积。
所述最后一级加法器模块将压缩得到的两行部分积相加得到所述近似二进制乘法器的输出。
所述部分积生成模块采用基-4Booth编码的方法,基-4Booth编码的过程是将乘数的每相邻三位组成一个编码位段并且每段之间重叠一位的方式进行编码,乘数在Booth编码的过程中根据其原理已经被静态地分为多个编码位段。首先在乘法器架构确定时对输入数据分布的冗余特性进行分析并确定在高位或低位截断位段的位宽,然后在实际计算过程中对乘数进行冗余位判断并选择出有效位段进行Booth编码,其余位段被截断,体现在生成的简化后的部分积阵列中是对其横向的截断。如果乘数的最高有效位段冗余,代表此位段中的前两位为符号拓展位,最低一位代表实际数值的最高有效位。本发明舍去最高编码位段的Booth编码过程,同时实际数值可以保留并且其余三个有效位段参加到Booth编码过程中,不会造成实际代表的数值发生改变。如果乘数的最高编码位段不冗余,则是三个高有效位段参加到Booth编码过程中,最低编码位段的Booth编码过程被舍去并引入误差。
所述部分积压缩模块对基于静态分段方法生成的简化后的部分积阵列进行了误差期望分析和截断补偿设计。对于最高编码位段冗余的情况,体现在部分积阵列中就是最高有效部分积行被截断,部分积阵列被精简到只包括其余有效部分积行以及每行包含的部分积拓展位;对于最高编码位段不冗余的情况,经过误差补偿计算并优化后,其部分积阵列与最高编码位段冗余情况下的部分积阵列相同。
所述部分积压缩模块为了进一步降低规模,按照常规截断补偿的方式将低位截断,采用或门电路以及部分积的移位压缩的方式,将截断部分的最高有效列经过这种方式补偿到部分积压缩电路的最低有效列中进行误差补偿。这部分截断补偿的具体部分积列数可以根据精度要求进行调整,得到精度和性能的折中。
部分积压缩模块利用全加器和半加器对所述的经过截断补偿的部分积阵列进行压缩。
对于乘积结果的输出也分别考虑冗余以及不冗余的情况。在非冗余的情况下压缩树截断的为部分积第一行以及部分积阵列的低有效位,这时输出乘积结果只需在低位添0补到输出乘积结果完整位宽。在冗余的情况下,这是需要在乘积结果的高位补充符号拓展位,其数值等于部分积压缩结果的最高位,在低位还需添0来补到输出乘积结果完整位宽。乘积结果的输出是对得到的结果的拼接,无需移位等附加逻辑。
本发明的有益效果为:本发明提出了一种基于静态分段补偿方法的近似二进制乘法器结构,考虑了乘法器输入的分布规律而进行分段,在乘法器输入高位冗余概率较大的情况下很好的保持了精度,并且进行了基于部分积的概率分析的误差补偿电路设计,使得其同样适用于通用的可容错应用场景,保证了本发明在大部分应用场景中实现了电路硬件性能和精度很好的一个折中,本发明能够用于乘加密集型应用,使得这些应用能更好地部署到便携式设备或者大型高性能计算设备上。
附图说明
图1为本发明提出的乘法器中基于静态分段方法的Booth编码过程示意图。
图2为本发明中乘数的最高编码位段冗余的情况下生成的部分积阵列示意图。
图3为本发明中乘数的最高编码位段不冗余的情况下生成的部分积阵列及其误差补偿方法示意图。
图4为本发明提出的乘法器中的部分积压缩电路示意图。
图5为本发明提出的乘法器中乘积结果输出方法示意图。
具体实施方式
下面结合附图对本发明进行详细的描述。
图1为本发明提出的乘法器中基于静态分段方法的Booth编码过程示意图。本发明提出的基于静态分段补偿的近似二进制乘法器中,部分积阵列的生成步骤是通过静态分段截断基-4Booth编码实现的。首先需要对基-4Booth编码中的最高有效位段进行冗余判断,基-4Booth编码的过程是将乘数的每相邻三位组成一个编码位段并且每段之间重叠一位的方式进行编码。对于8×8有符号数基-4Booth乘法器,乘数被分为4个编码位段进行编码,用m3到m0表示,如图1所示。如果乘数的最高有效位段冗余,代表此位段中的前两位为符号拓展位,最低一位代表实际数值的最高有效位。本发明舍去最高编码位段m3的Booth编码过程,同时实际数值可以保留并且其余三个有效位段m2到m0参加到Booth编码过程中,不会造成实际代表的数值发生改变。如果乘数的最高编码位段不冗余,则是有效位段m3到m1参加到Booth编码过程中,最低编码位段m0的Booth编码过程被舍去并引入误差,这里由舍去造成的误差值经过误差分析并进行补偿后对乘积结果精度的影响很小。
生成部分积阵列的静态分段截断基-4Booth编码电路由冗余判断电路,乘数位段选通电路以及Booth编码器组成,见图1。通过冗余判断电路判断乘数的最高有效位段是否冗余,具体原理是判断最高编码位段是否为111或000,进而得到冗余判断结果并输入到乘数位段选通电路。在乘数位段选通电路中,如果最高编码位段冗余,则将乘数的最高编码位段m3截断,其余三个有效位段m2到m0输入到对应的Booth编码器EN2到EN0中;如果最高有效位段非冗余,则将乘数的最低编码位段m0截断(其中包括在最低位添加的一位0)。将其余三个有效位段输入到对应的Booth编码器。两位一组的被乘数与三位一组的乘数有效位段一起输入到编码器EN0到EN2中生成第一行到第三行部分积PPR0到PPR2。
图2和图3为本发明中乘数的最高编码位段冗余和不冗余的情况下生成的部分积阵列以及误差补偿方法示意图。对于8×8有符号数基-4Booth乘法器,完整的部分积阵列共有4行16列。本设计经过图1所示的部分积生成电路生成的部分积阵列有以下两种情况,分别为最高编码位段m3冗余和不冗余的情况。m3冗余的情况下截去部分积阵列中的冗余部分积,可以通过较少的硬件资源对部分积进行压缩并保持较高的精度。m3不冗余的情况下,通过误差分析补偿也可以在不消耗更多补偿电路的情况下保持较好的精度。
对于最高编码位段m3冗余的情况,将乘数的最高编码位段m3截断,其余三个有效位段输入到对应的Booth编码单元EN,体现在部分积阵列中就是第4行被截断,如图2中虚线框中的部分积行,由于第4行部分积本来就不包含任何信息,所以对第4行的截断不会损失精度,此时部分积阵列被精简到只包括前三行,包括部分积行PPR0到PPR2以及每行包含的部分积拓展位和符号补偿位,所需的压缩单元消耗得到了降低。在出现高位冗余情况的概率很大的应用场景下,这时部分积大概率通过高位冗余情况的部分积压缩树压缩,可以用很少的资源消耗,获得很高的精度。
在最高编码位段不冗余的情况下,为了保持良好的精度,将乘数的最低编码位段m0截断,其余三组编码位段输入到对应的Booth编码单元EN,体现在部分积阵列中就是第1行没有经过Booth编码器的生成直接被截断,如图3中虚线框中的部分积行。
进一步将虚线框中的第一行部分积分为高4位点线框和低位的点线框两部分,经过误差分析,提前将低位的部分积截断并计算造成的误差期望,在对高4位通过不同部分积组合情况出现的概率进行误差分析,高4位只有4种出现的组合情况,通过分析结果可知将前4位近似为1000可以很好的平衡截断造成的误差,于是第一部分积行可以近似补偿为第一行最高有效位MSB的一位1,后对这里重复进行符号拓展位优化,可以得到优化后的压缩树阵列,如图3所示。
如图3所示,用si表示第i行部分积的符号拓展位的值,其数值等于该部分积行最高位的部分积,si的非用表示,其余普通部分积如图3中的白色圆形符号表示。将第一行部分积近似补偿的一个1与第二行部分积的符号拓展位一起考虑,用Sgn表示,则:
其中,当s1=1时,上式最后一项的括号中的值为3,即二进制表示的当s1=0时,上式中的最后一项的括号中的值为4,同样为因此我们可以将上式括号中的内容替换为也就是分别在部分积阵列的第11,12,13列分别补偿s1,s1和通过这样的表达就不会使第一行部分积补偿的1占据单独的一行。优化后的Sgn表示为:
此时优化后的部分积阵列与冗余情况下完全相同,包括部分积行PPR0到PPR2以及每行包含的部分积拓展位和符号补偿位,如图3所示,类似于压缩窗口滑动到了下三行,不需要额外电路就使用相同的压缩树阵列对误差进行了补偿。
在这种补偿情况下对其误差概率进行分析可得第一行整体误差平均值ME1为:
ME1=μ2-μ1-0.5=-0.25
第一行通过误差补偿其正负误差基本抵消,整体误差平均值非常接近0。通过部分积拓展优化算法,与常规部分积阵列第一行生成特殊符号拓展位的方法相同,可将这一位1融合到精简后的部分积阵列中如图3所示,此时的精简部分积阵列与最高编码位段冗余情况下的精简部分积阵列相同,再进行相同的低位截断补偿的优化,即可使用与最高编码位段冗余情况下相同的压缩树对部分积进行压缩。即乘法器输入经过部分积生成电路产生的部分积直接输入到同样的压缩树中,而不需要两种情况使用不同的压缩树,实现了资源的共享,降低了硬件资源的消耗,从而降低了功耗。
图4为本发明提出的乘法器中的部分积压缩电路示意图。由于部分积阵列高度的减少,此时的压缩树可以完全不使用4-2压缩器,而是由全加器及半加器即可实现压缩过程。
为了得到误差和硬件消耗的一个折中,本发明提出的乘法器中的部分积压缩电路中的近似进一步采用常规截断补偿的方式,通过部分积低有效位的信息进行补偿。本发明采用简单的逻辑电路以及部分积的移位压缩进行误差补偿。如图4所示,对于8×8有符号数基-4Booth乘法器,对如图2和图3所示的部分积行PPR0到PPR2以及每行包含的部分积拓展位和符号补偿位组成的剩余部分积阵列继续进行截断补偿,剩余部分积阵列包括3行14列,此时不再区分最高编码位段冗余和不冗余两种情况,将部分积阵列的低4列部分积以及属于第3行部分积的符号补偿位全部截断,第5列部分积的第1行和第2行处共2个部分积输入一个或门,如椭圆框所示,其结果输出到第6列部分积阵列中参与后续压缩过程,第5列部分积的第3行处的部分积直接移到第6列部分积阵列中参与后续压缩过程。在压缩树中的补偿主要就是这两方面,这样的补偿没有增加额外的压缩过程,只在第二级压缩中增加了一个全加器的使用。压缩树低位截断的列数可以进行配置,从而满足不同的精度需求。经过压缩树压缩可以得到最终两行部分积,经过加法器模块相加可以得到8位的压缩树结果,进一步对结果的进行拼接即可拓展位宽,得到乘积结果。
图5为本发明提出的乘法器中乘积结果输出方法示意图。得到压缩树结果后,对于乘积结果的输出也分别考虑冗余以及不冗余的情况,如图5所示。冗余信号就是之前选择Booth编码器输入时使用的冗余信号,在这里再次使用来进行判断冗余,在最高编码位段非冗余的情况下,输出乘积结果只需在压缩树结果的低位添8位0;在最高编码位段冗余的情况下,输出乘积结果需在压缩树结果高位补两个符号拓展位Sr,其数值等于压缩树结果的最高位,取值范围是0或1,在压缩树结果的低位添6位0。
综上所述,本发明提出的基于静态分段补偿方法的近似二进制乘法器结构,考虑了乘法器输入的分布规律而进行分段,在乘法器输入高位冗余概率较大的情况下将冗余部分积截断,降低了硬件资源消耗的同时很好的保持了精度;在乘法器输入高位不冗余的概率较大的情况下,在截断低有效位的部分积后进行了基于部分积的概率分析的误差补偿电路设计,使得其同样适用于通用的可容错应用场景。并且在两种情况下,乘法器输入经过部分积生成电路产生的部分积输入到同样的部分积压缩电路中,而不需要两种情况使用不同的部分积压缩电路,实现了资源的共享从而降低了硬件资源的消耗,保证了本发明在大部分应用场景中实现了电路硬件性能和精度很好的一个折中。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (4)
1.基于静态分段补偿的近似二进制乘法器,其特征在于,包括部分积生成模块、部分积压缩模块和加法器模块;
所述部分积生成模块用于对乘数进行编码并根据编码信号对被乘数进行解码来生成部分积阵列;
所述部分积压缩模块用于对部分积阵列进行压缩,最终压缩为两行部分积;
所述加法器模块将压缩得到的两行部分积相加得到所述近似二进制乘法器的输出;
所述部分积生成模块采用基-4Booth编码的方法,具体为:将乘数静态地分为多个编码位段,进行冗余位判断并选择出有效位段进行Booth编码,其余位段被截断。
2.根据权利要求1所述的基于静态分段补偿的近似二进制乘法器,其特征在于,所述冗余位判断的方式是判断最高编码位段是否冗余,定义乘数被分为4个编码位段进行编码,用m3到m0表示,则判断m3是否为全1或全0,如果是,则最高编码位段冗余,将m3截断,m2到m0参加到Booth编码过程中,否则,将m0截断,m3到m1参加到Booth编码过程中。
3.根据权利要求2所述的基于静态分段补偿的近似二进制乘法器,其特征在于,所述部分积压缩模块对经Booth编码生成的部分积阵列进行截断补偿后进行压缩,分为最高编码位段冗余和不冗余两种情况,具体为:
对于8×8有符号数基-4Booth乘法器,完整的部分积阵列共有4行16列;
若最高编码位段冗余,在部分积阵列中就是第4行被截断,此时剩余部分积阵列包括部分积前3行以及每行包含的部分积拓展位和符号补偿位;
若最高编码位段不冗余,在部分积阵列中就是第1行被截断,在部分积阵列的第2行部分积的第11,12,13列分别补偿s1,s1和si等于该部分积行最高位的部分积,此时剩余的部分积阵列与最高编码位段冗余情况下相同,包括部分积前3行以及每行包含的部分积拓展位和符号补偿位;
对部分积前3行以及每行包含的部分积拓展位组成的剩余部分积阵列继续进行截断补偿,剩余部分积阵列包括3行14列,此时不再区分最高编码位段冗余和不冗余两种情况,将部分积阵列的低4列部分积以及属于第3行部分积的符号补偿位全部截断,第5列部分积的第1行和第2行处共2个部分积输入一个或门,输出到第6列部分积阵列中参与后续压缩过程,第5列部分积的第3行处的部分积直接移到第6列部分积阵列中参与后续压缩过程。
4.根据权利要求2所述的基于静态分段补偿的近似二进制乘法器,其特征在于,所述加法器模块对压缩后的两行部分积进行相加得到压缩树结果后,最终乘积结果的输出对压缩树结果的处理分为最高编码位段冗余和不冗余两种情况,具体为:
若最高编码位段冗余,输出乘积结果需在压缩树结果高位补两个符号拓展位Sr,其数值等于压缩树结果的最高位,取值范围是0或1,在压缩树结果的低位添6位0;
若最高编码位段不冗余,输出乘积结果只需在压缩树结果的低位添8位0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211373911.XA CN115826913A (zh) | 2022-11-04 | 2022-11-04 | 基于静态分段补偿方法的近似二进制乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211373911.XA CN115826913A (zh) | 2022-11-04 | 2022-11-04 | 基于静态分段补偿方法的近似二进制乘法器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115826913A true CN115826913A (zh) | 2023-03-21 |
Family
ID=85526569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211373911.XA Pending CN115826913A (zh) | 2022-11-04 | 2022-11-04 | 基于静态分段补偿方法的近似二进制乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115826913A (zh) |
-
2022
- 2022-11-04 CN CN202211373911.XA patent/CN115826913A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109214509B (zh) | 一种用于深度神经网络高速实时量化结构和运算实现方法 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN114647399B (zh) | 一种低能耗高精度近似并行定宽乘法累加装置 | |
CN111507465B (zh) | 一种可配置的卷积神经网络处理器电路 | |
CN111488133A (zh) | 高基数近似布斯编码方法和混合基数布斯编码近似乘法器 | |
CN109144473B (zh) | 一种基于冗余odds数的十进制3:2压缩器结构 | |
CN116400883A (zh) | 一种可切换精度的浮点乘加器 | |
CN110955403B (zh) | 近似基-8布斯编码器及混合布斯编码的近似二进制乘法器 | |
CN114115803B (zh) | 一种基于部分积概率分析的近似浮点乘法器 | |
CN110187866B (zh) | 一种基于双曲cordic的对数乘法计算***及方法 | |
CN115407965A (zh) | 一种基于泰勒展开的高性能近似除法器及误差补偿方法 | |
CN112783469A (zh) | 一种用于执行浮点指数运算的方法及装置 | |
CN116205244A (zh) | 一种数字信号处理结构 | |
CN115826913A (zh) | 基于静态分段补偿方法的近似二进制乘法器 | |
US7840628B2 (en) | Combining circuitry | |
CN110825346A (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN101110016A (zh) | 子字并行整数乘法器 | |
CN113157247B (zh) | 一种可重构整型-浮点型乘法器 | |
US20140115023A1 (en) | Bid to bcd/dpd converters | |
CN116126283B (zh) | 一种fpga卷积加速器的资源占用率优化方法 | |
KR100974190B1 (ko) | 부동 소수점을 이용한 복소수 곱셈방법 | |
Sharanya et al. | A MODIFIED PARTIAL PRODUCT GENERATOR FOR REDUNDANT BINARY MULTIPLIERS | |
CN116974517A (zh) | 浮点数处理方法、装置、计算机设备和处理器 | |
CN116011512A (zh) | 一种面向神经网络的高精度低功耗近似移位乘法器 |
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 |