首页> 中国专利> 一种用于计算Power函数的硬件运算电路及数据处理方法

一种用于计算Power函数的硬件运算电路及数据处理方法

摘要

本申请公开了一种用于计算Power函数的硬件运算电路及数据处理方法,其中,该硬件运算电路包括:对数计算模块,乘法模块和指数计算模块;对数计算模块被配置为根据第一参数的阶码生成第一中间参数,根据第一参数的尾数,采用查表和对数泰勒级数展开的方式计算第二中间参数,并根据第一中间参数和第二中间参数,生成对数计算结果;乘法模块用于计算对数计算结果与第二参数的乘积,将乘积记作乘法计算结果;指数计算模块被配置为根据乘法模块的乘法计算结果进行指数运算,生成第一参数和第二参数的Power函数运算结果。通过本申请中的技术方案,对Power函数的硬件运算电路进行优化,使其能够提供较高的计算精度、支持更广数据范围、减少资源占用。

著录项

  • 公开/公告号CN114860193A

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 合肥工业大学;

    申请/专利号CN202210429140.5

  • 申请日2022-04-22

  • 分类号G06F7/544(2006.01);G06F7/556(2006.01);

  • 代理机构北京律谱知识产权代理有限公司 11457;

  • 代理人孟德洲

  • 地址 230000 安徽省合肥市合肥屯溪路193号

  • 入库时间 2023-06-19 16:17:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-23

    实质审查的生效 IPC(主分类):G06F 7/544 专利申请号:2022104291405 申请日:20220422

    实质审查的生效

  • 2022-08-05

    公开

    发明专利申请公布

说明书

技术领域

本申请涉及硬件运算电路的技术领域,具体而言,涉及一种用于计算 Power函数的硬件运算电路及一种在工业硬件运算电路中的数据处理方法。

背景技术

Power函数是一种常见的超越函数,表达式为f(x,y)=x

例如在相关文献《X-DSP IP核Power函数部件的设计与验证》中,其硬件结构主要分为对数通路、乘法通路以及指数通路。将Power函数通过数学变形转变为

而现有技术中,此类计算Power函数硬件电路通常存在以下问题:

1、由于用查找表存储系数,则存储资源由划分的区间大小和多项式展开的项数决定,通常需要消耗大量的存储资源;

2、由于存储的限制,划分的区间不能无限小,则要满足计算精度就需要较多的多项式展开项数,会带来更大的运算资源消耗和计算延迟。

3、利用切比雪夫算法在不同区间对目标函数逼近的方法,多项式不固定,且乘系数没有硬件技巧可使用,对多项式的实现上可优化空间小,乘加计算过多。

发明内容

本申请的目的在于:对Power函数的硬件运算电路进行优化,使其能够提供较高的计算精度、支持更广数据范围、减少资源占用。

本申请第一方面的技术方案是:提供了一种用于计算Power函数的硬件运算电路,该硬件运算电路包括:对数计算模块,乘法模块和指数计算模块;对数计算模块被配置为根据第一参数x的阶码E生成第一中间参数,根据第一参数x的尾数M,采用查表和对数泰勒级数展开的方式计算第二中间参数,并根据第一中间参数和第二中间参数,生成对数计算结果;乘法模块用于计算对数计算结果与第二参数y的乘积,将乘积记作乘法计算结果w;指数计算模块被配置为根据乘法模块的乘法计算结果w进行指数运算,生成第一参数x和第二参数y的Power函数运算结果,其中,指数运算的底数为2,指数运算的指数为乘法器的乘法计算结果w。

上述任一项技术方案中,进一步地,对数计算模块包括:对数预处理模块,对数泰勒计算单元以及对数后处理模块;对数预处理模块至少包括:对数查表单元,第一乘法器M0,对数组合逻辑单元,第二乘法器M1以及第一加法器A0,其中,对数查表单元被配置为根据第一参数x中尾数M的高q+1位进行第一查表,确定第一查表值e

上述任一项技术方案中,进一步地,对数组合逻辑单元被配置为根据第一乘法值c确定第一逻辑值e

若不等于1,即为0时,按照判断位、待增加数据、补码数据的形式组成输出数据,其中,待增加数据为n个0或者1,补码数据为输入数据的其余位的补码;步骤C,将第一逻辑值e

上述任一项技术方案中,进一步地,对数后处理模块至少包括:第二加法器A1,第三乘法器M2以及第三加法器A2;第二加法器A1的输入端分别连接于第一加法器A0以及对数泰勒计算单元的输出端,第二加法器A1被配置为计算第一和值与第二中间参数的和值,记作第二和值;第三乘法器M2被配置为计算第二和值与1/ln(2)的乘积,记作第三乘法值;第三加法器A2被配置为计算第一中间参数与第三乘法值的和值,记作对数计算结果。

上述任一项技术方案中,进一步地,硬件运算电路用于计算双精度浮点数,对数泰勒计算单元包括:第一泰勒逻辑单元,第一乘法器组以及第一加法器组;第一泰勒逻辑单元用于根据第二乘法值k,确定第一中间取值 k-1;第一乘法器组包括乘法器M3、乘法器M4、乘法器M5以及乘法器 M6,其中,乘法器M3的两个输入端分别连接于第一泰勒逻辑单元的输出端,乘法器M4的一个输入端连接于第一泰勒逻辑单元的输出端,乘法器 M4的另一个输入端被输入常数1/3,乘法器M5的两个输入端分别连接于乘法器M3的输出端,乘法器M6的一个输入端连接于乘法器M3的输出端,乘法器M6的另一个输入端连接于乘法器M4的输出端;第一加法器组包括加法器A3,加法器A4以及加法器A5,其中,加法器A3的两个输入端分别连接于第一泰勒逻辑单元以及乘法器M3的输出端,加法器A4的两个输入端分别连接于乘法器M5以及乘法器M6的输出端,加法器A5的两个输入端分别连接于加法器A3以及加法器A4的输出端。

上述任一项技术方案中,进一步地,硬件运算电路用于计算单精度浮点数,对数泰勒计算单元包括:第二泰勒逻辑单元,乘法器M7以及加法器 A6;第二泰勒逻辑单元用于根据第二乘法值k,确定第二中间取值k-1;乘法器M7的两个输入端分别连接于第二泰勒逻辑单元的输出端;加法器A6 的一个输入端连接于乘法器M7的输出端,加法器A6的另一个输入端连接于第二泰勒逻辑单元的输出端。

上述任一项技术方案中,进一步地,指数计算模块至少包括:第四乘法器,指数组合逻辑单元,指数泰勒计算模块,第五乘法器以及输出组合逻辑单元;第四乘法器被配置为计算乘法器的乘法计算结果w中的小数部分与ln(2)的乘积,记作第四乘积b;指数组合逻辑单元被配置为根据第四乘积b确定第三逻辑值b

上述任一项技术方案中,进一步地,第一参数x为Power函数的底数,第二参数y为Power函数的指数,第一参数x和第二参数y为64比特浮点型数据。

本申请第二方面的技术方案是:提供了一种基于FPGA的电路板,该电路板中集成有如上述第二方面技术方案中任意一项所述的硬件运算电路及其中的各个模块。

本申请第三方面的技术方案是:提供了一种在工业硬件运算电路中的数据处理方法,该数据处理方法包括:步骤1,根据第一参数x的阶码E 生成第一中间参数,根据第一参数x的尾数M,采用查表和对数泰勒级数展开的方式计算第二中间参数,并根据第一中间参数和第二中间参数,生成对数计算结果;步骤2,计算对数计算结果与第二参数y的乘积,将乘积记作乘法计算结果w;步骤3,根据乘法模块的乘法计算结果w进行指数运算,生成第一参数x和第二参数y的Power函数运算结果,其中,指数运算的底数为2,指数运算的指数为乘法器的乘法计算结果w。

上述任一项技术方案中,进一步地,步骤3具体包括:步骤31,计算乘法器的乘法计算结果w中的小数部分与ln(2)的乘积,记作第四乘积b;步骤32,根据第四乘积b确定第三逻辑值b

本申请中提到的各个模块可以通过FPGA烧结在电路板中实现,也可以直接在纳米芯片内部集成实现。

本申请的有益效果是:

本申请中的技术方案,通过在硬件运算电路分别设置对数计算模块、乘法模块和指数计算模块,将Power函数拆为对数函数和指数函数实现,利用查找表和泰勒级数展开式相结合的方法进行电路设计,通过数字迭代法和区间划分方法提高计算精度、扩展数据计算范围。该硬件运算电路的硬件资源开销小、计算精度高,支持数据范围广,还可分别计算指数函数和对数函数。

在本申请中的对数计算模块和指数计算模块中,通过对泰勒展开式计算前的预处理,缩小了进入泰勒展开式的数据范围,提高了精度,减少泰勒展开式的项数,进而减少乘加运算,降低延迟、减少运算器的硬件资源消耗,并且根据数据特点和范围设计查找表,减小存储资源。

附图说明

本申请的上述和/或附加方面的优点在结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本申请的一个实施例的用于计算Power函数的硬件运算电路的示意框图;

图2是根据本申请的一个实施例的对数计算模块的示意框图;

图3是根据本申请的一个实施例的第一组合逻辑的实现方式的示意图;

图4是根据本申请的一个实施例的第二组合逻辑的实现方式的示意图;

图5(a)是根据本申请的一个实施例的第一逻辑值e

图5(b)是根据本申请的一个实施例的第三逻辑值处理过程的示意图;

图5(c)是根据本申请的一个实施例的第一中间取值处理过程的示意图;

图6是根据本申请的一个实施例的第三组合逻辑的实现方式的示意图;

图7(a)是根据本申请的一个实施例的对数计算模块的泰勒级数展开式的结构示意图;

图7(b)是根据本申请的另一个实施例的对数计算模块的泰勒级数展开式的结构示意图;

图8是根据本申请的一个实施例的指数计算模块的示意框图;

图9(a)是根据本申请的一个实施例的指数泰勒计算模块实现的结构示意图;

图9(b)是根据本申请的另一个实施例的指数泰勒计算模块实现的结构示意图;

图10是根据本申请的一个实施例的在工业硬件运算电路中的数据处理方法的示意流程图。

具体实施方式

为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互结合。

在下面的描述中,阐述了很多具体细节以便于充分理解本申请,但是,本申请还可以采用其他不同于在此描述的其他方式来实施,因此,本申请的保护范围并不受下面公开的具体实施例的限制。

实施例一:

如图1所示,本实施例提供了一种用于计算Power函数的硬件运算电路,该硬件运算电路包括:对数计算模块100,乘法模块和指数计算模块 200;对数计算模块100被配置为根据第一参数x的阶码E生成第一中间参数,根据第一参数x的尾数M,采用查表和对数泰勒级数展开的方式计算第二中间参数,并根据第一中间参数和第二中间参数,生成对数计算结果;乘法模块用于计算对数计算结果与第二参数y的乘积,将乘积记作乘法计算结果w;指数计算模块200被配置为根据乘法模块的乘法计算结果w进行指数运算,生成第一参数x和第二参数y的Power函数运算结果,其中,指数运算的底数为2,指数运算的指数为乘法器的乘法计算结果w。

本实施例中,第一参数x为Power函数的底数,第二参数y为Power 函数的指数,第一参数x和第二参数y为64比特浮点型数据。

如图2所示,本实施例示出了一种对数计算模块100的实现方式,假定输入x、y为浮点型,x、y属于双精度浮点数表示范围,输出Power函数计算结果也属于双精度浮点数表示范围,且输入x、y和输出均为64比特数据[x

进一步的,本实施例中的对数计算模块100包括:对数预处理模块201,对数泰勒计算单元202以及对数后处理模块203;对数预处理模块201至少包括:对数查表单元,第一乘法器M0,对数组合逻辑单元,第二乘法器 M1以及第一加法器A0,其中,对数查表单元被配置为根据第一参数x中尾数M的高q+1位进行第一查表,确定第一查表值e

具体的,对数预处理模块201,用于利用数字迭代法对输入的第一参数 x进行预处理,对数预处理模块201的输入为第一参数x,三个输出分别为: k、E-offset和ln(f

对于第一个输出k,根据第一参数x的浮点数表示形式x=2

对于第二个输出E-offset,由第一参数x的阶码E通过第一组合逻辑方式得到,第一组合逻辑的实现方式如图3所示,是阶码E的偏置,在双精度浮点数中offset为1023,是一个固定取值。

对于第三个输出ln(f

r=2

式中,round()为四舍五入函数,r的取值是64,q为尾数M中的高位。

将提前计算好e

在上述实施例的一个优选实现方式中,如图4所示,对数组合逻辑单元被配置为根据第一乘法值c,采用第二组合逻辑方式,依次确定第一逻辑值e

判断输入数据的判断位是否等于1,其中,判断位可以为符号位、整数位、符号位和整数位中的一种;

若等于1,则在判断位与输入数据的其余位之间增加n个0或者1,以组成输出数据;

若不等于1,即为0时,则将输入数据的其余位取补码,并按照判断位、待增加数据、补码数据的形式组成输出数据,其中,待增加数据为n个0 或者1。

具体的,如图5(a)所示,根据第一乘法值c的数值进行第二组合逻辑运算,通过判断和取补得到第一逻辑值e

第二逻辑值f

需要说明的是,上述对数组合逻辑单元可利用Verilog HDL硬件描述语言进行RTL建模,通过FPGA或者ASIC实现。

提前计算ln(f

本实施例中,对数泰勒计算单元202被配置为根据第二乘法值k计算第二中间参数;

具体的,对数泰勒计算模块202用于通过对数泰勒级数展开式计算对数预处理模块得到的k的对数值;对数泰勒计算模块202的输入为k,输出为ln(k)。

在本实施例对数泰勒计算模块202的一种实现方式中,如图7(b)所示,当硬件运算电路用于计算双精度浮点数,对数泰勒计算单元202包括:第一泰勒逻辑单元,第一乘法器组以及第一加法器组;第一泰勒逻辑单元用于根据第二乘法值k,确定第一中间取值k-1;第一乘法器组包括乘法器 M3、乘法器M4、乘法器M5以及乘法器M6,其中,乘法器M3的两个输入端分别连接于第一泰勒逻辑单元的输出端,乘法器M4的一个输入端连接于第一泰勒逻辑单元的输出端,乘法器M4的另一个输入端被输入常数1/3,乘法器M5的两个输入端分别连接于乘法器M3的输出端,乘法器M6的一个输入端连接于乘法器M3的输出端,乘法器M6的另一个输入端连接于乘法器M4的输出端;第一加法器组包括加法器A3,加法器A4以及加法器 A5,其中,加法器A3的两个输入端分别连接于第一泰勒逻辑单元以及乘法器M3的输出端,加法器A4的两个输入端分别连接于乘法器M5以及乘法器M6的输出端,加法器A5的两个输入端分别连接于加法器A3以及加法器A4的输出端。

具体的,第一泰勒逻辑单元利用上述第二组合逻辑的方式,根据第二乘法值k,确定第一中间取值k-1;并将第一中间取值k-1记作a。具体过程如图5(c)所示,通过判断k的高位和上述第二组合逻辑的方式得到k-1 的取值,设定a=k-1;k对应图中的in,a对应图中的out,k的最高位k[71] 为符号位,k是正数,符号位为0,k的次高位k[70]为整数位,根据k[71:70] 作为多路选择器的判断位,n=0,N=69,M=0,即当k[71:70]=01时,a为 {2’b00,k[69:0]},当k[71:70]=00时,a为{2’b10,k[69:0]取补码}。

本实施例中,泰勒级数展开式如下:

在本实施例对数泰勒计算模块202的另一种实现方式中,如图7(a) 所示,硬件运算电路用于计算单精度浮点数,对数泰勒计算单元202包括:第二泰勒逻辑单元,乘法器M7以及加法器A6;第二泰勒逻辑单元用于根据第二乘法值k,确定第二中间取值k-1;乘法器M7的两个输入端分别连接于第二泰勒逻辑单元的输出端;加法器A6的一个输入端连接于乘法器 M7的输出端,加法器A6的另一个输入端连接于第二泰勒逻辑单元的输出端。

此时,泰勒级数展开式取2项即可,如下:

本实施例中,对数后处理模块203用于根据第一中间参数和第二中间参数,生成对数计算结果。

进一步的,对数后处理模块203至少包括:第二加法器A1,第三乘法器M2以及第三加法器A2;第二加法器A1的输入端分别连接于第一加法器A0以及对数泰勒计算单元202的输出端,第二加法器A1被配置为计算第一和值与第二中间参数的和值,记作第二和值;第三乘法器M2被配置为计算第二和值与1/ln(2)的乘积,记作第三乘法值;第三加法器A2被配置为计算第一中间参数与第三乘法值的和值,记作对数计算结果。

具体的,对数后处理模块203用于将对数预处理模块和对数泰勒计算模块得到的中间运算结果进行进一步乘加运算,得到对数计算模块的输出值log

对数后处理模块203的输入为E-offset、ln(f

本实施例中,乘法模块用于计算对数计算结果与第二参数y的乘积,将乘积记作乘法计算结果w。

具体的,乘法模块将对数计算模块100输出值log

在上述是实施例的基础上,本实施例又示出了一种指数计算模块200 的实现方式,该指数计算模块200至少包括:第四乘法器,指数组合逻辑单元,指数泰勒计算模块502,第五乘法器以及输出组合逻辑单元;其中,第四乘法器和指数组合逻辑单元组成数预处理模块501,第五乘法器以及输出组合逻辑单元组成指数后处理模块503。

其中,第四乘法器被配置为计算乘法器的乘法计算结果w中的小数部分与ln(2)的乘积,记作第四乘积b;指数组合逻辑单元被配置为根据第四乘积b确定第三逻辑值b

具体的,如图8所示,指数预处理模块501的输入为乘法计算结果w,输出为w

本实施例中,b对应图5(b)中in,第三逻辑值b

上述指数泰勒计算模块502用于通过指数泰勒级数展开式计算指数预处理模块501得到的第三逻辑值b

指数泰勒计算模块502的输入为第三逻辑值b

如图6所示,利用第三组合逻辑方式,通过b

第一次两个乘法器分别得到b

图9(a)为计算数据为单精度浮点数的情况下指数泰勒计算单元的结构,此时泰勒级数展开式取3项即可,如下:

上述指数后处理模块503,用于将指数预处理模块和指数泰勒计算模块 502得到的中间运算结果进行进一步乘加运算,得到指数计算模块的输出值 2

其输入为

实施例二:

在上述实施例的基础上,如图10所示,本实施例提供了一种在工业硬件运算电路中的数据处理方法,该方法适用于硬件运算电路中的数据处理,该硬件运算电路可用于计算Power函数,该方法包括:

步骤1,根据第一参数x的阶码E生成第一中间参数,根据所述第一参数x的尾数M,采用查表和对数泰勒级数展开的方式计算第二中间参数,并根据所述第一中间参数和所述第二中间参数,生成对数计算结果;

具体的,Power函数为f(x,y)=x

对x

对数函数计算包括:将log

指数函数计算包括:设定w=y*log

具体的,对数计算是计算x的以2为底的对数值log

进一步缩小ln(1.M)中的1.M数据范围,数字迭代法对1.M进行处理包括:利用数据范围和查找表获取合适的f

通过一系列乘法使1.M归一化,即(1.M)Πf

设定k=(1.M)×f

其中ln(k)用对数泰勒级数展开式进行求解,展开式如下:

其中k为数字迭代法对1.M处理后的结果k=1.M×f

至此,log

步骤2,计算对数计算结果与第二参数y的乘积,将乘积记作乘法计算结果w;

步骤3,根据乘法模块的乘法计算结果w进行指数运算,生成第一参数x和第二参数y的Power函数运算结果,其中,指数运算的底数为2,指数运算的指数为乘法器的乘法计算结果w。

进一步的,步骤3具体包括:

步骤31,计算乘法器的乘法计算结果w中的小数部分与ln(2)的乘积,记作第四乘积b;

步骤32,根据第四乘积b确定第三逻辑值b

步骤33,根据第三逻辑值b

步骤34,计算中间指数值与第四查表值

步骤35,根据乘法器的乘法计算结果w中的整数部分与第五乘积,确定第一参数x和第二参数y的Power函数运算结果。

具体的,指数计算是计算以2为底、以w为指数的指数函数2

利用区间划分法对w进行处理包括:将指数函数的指数w拆成整数w

设定b=w

将[0,1]进行等区间划分,每个区间范围为

设定b

2

至此,2

为了验证本实施例中计算Power函数的硬件运算电路的性能,将本实施例中的技术方案与相关文献《X-DSP IP核Power函数部件的设计与验证》中硬件结构作为对比方案,将两者的性能进行对比,如表1所示,需要说明的是,对比方案中仅采用单精度浮点数计算。

表1

在单精度下,由表1可知,两种电路精度一致,都为10

在双精度下所需要的存储资源,本实施例为32.28125k,相较于对比方案在单精度下的资源减少了10.33%。本实施例计算精度可达10

从存储来看,对比方案中的查找表用来存放多项式系数,存储资源统计如下:对数部分将区间分为64份,多项式采用三次四项式,在[1,2)区间内再等分为32份,采用二级查找表,则对数部分存储资源为 (64+32)*4*32=12k;指数部分将区间分为128份,多项式采用二次三项式,考虑到负数情况,用2

通过对上述性能指标进行对比分析,可以发现本实施例在保持高精度计算的同时,可以用更少的存储资源和计算资源,体现了本实施例设计的 Power函数硬件电路的优越性。

以上结合附图详细说明了本申请的技术方案,本申请提出了一种用于计算Power函数的硬件运算电路及数据处理方法,其中,该硬件运算电路包括:对数计算模块,乘法模块和指数计算模块;对数计算模块被配置为根据第一参数x的阶码E生成第一中间参数,根据第一参数x的尾数M,采用查表和对数泰勒级数展开的方式计算第二中间参数,并根据第一中间参数和第二中间参数,生成对数计算结果;乘法模块用于计算对数计算结果与第二参数y的乘积,将乘积记作乘法计算结果w;指数计算模块被配置为根据乘法模块的乘法计算结果w进行指数运算,生成第一参数x和第二参数y的Power函数运算结果,其中,指数运算的底数为2,指数运算的指数为乘法器的乘法计算结果w。通过本申请中的技术方案,对Power函数的硬件运算电路进行优化,使其能够提供较高的计算精度、支持更广数据范围、减少资源占用。

本申请中的步骤可根据实际需求进行顺序调整、合并和删减。

本申请装置中的单元可根据实际需求进行合并、划分和删减。

尽管参考附图详地公开了本申请,但应理解的是,这些描述仅仅是示例性的,并非用来限制本申请的应用。本申请的保护范围由附加权利要求限定,并可包括在不脱离本申请保护范围和精神的情况下针对发明所作的各种变型、改型及等效方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号