一种函数计算方法、计算装置及计算器与流程

文档序号:20030673发布日期:2020-02-28 10:21阅读:332来源:国知局
一种函数计算方法、计算装置及计算器与流程

本申请涉及数据处理技术领域,尤其涉及一种函数计算方法、装置及计算器。



背景技术:

随着人工智能技术的发展和推广,卷积神经网络技术的应用也愈加广泛。卷积神经网络是一种计算密集型的机器学习实现方案,一般利用中央处理单元(centralprocessingunit,cpu)或图形处理单元(graphicprocessingunit,gpu)实现。

但是,在卷积神经网络的过程中需要进行大量的乘法计算和多种复杂函数的计算,包括倒数、软最大值(softmax)、指数线性单元(exponentiallinearunits,elu)、s型函数(sigmoid)和双曲正切函数(tanh)等。这些复杂函数的计算会消耗大量的时间,功耗较大,影响卷积神经网络的计算效率和成本。



技术实现要素:

有鉴于此,本申请实施例提供了一种函数计算方法、装置及计算器,能够解决现有技术中复杂函数的计算耗时长、功耗大的问题。

本申请实施例第一方面提供的一种函数计算方法,所述函数包括ex,e为自然常数;所述方法包括:

获得x的n位定点数,并将所述x的n位定点数拆分为整数定点数和小数定点数;n为大于2的正整数,所述整数定点数为|i|的二进制数,所述小数定点数为|f|的二进制数;x=i+f,i为整数,-1<f<1,且当i和f均不为0时i和f同为正数或同为负数;

当i不为0时,根据所述整数定点数,利用预先设定的查找表获得ei的定点数;所述查找表包括的定点数,k∈[0,t1],k为整数,t1为第一阈值;

当f不为0时,基于泰勒展开式,利用所述小数定点数计算ef的定点数;

根据所述ei的定点数和所述ef的定点数得到ex

可选的,所述根据所述整数定点数,利用预先设定的查找表获得ei的定点数,具体包括:

逐一判断所述整数定点数的每一位是否为1;

当所述整数定点数从右至左的第a位是1且i为正时,从所述查找表中获得的定点数,得到第一参数;当所述整数定点数从右至左的第a位是1且i为负时,从所述查找表中获得的定点数,得到第一参数;所述整数位共p位,1≤a≤p,a和p均为正整数;

将获得的每个所述第一参数相等,得到所述ei的定点数。

可选的,所述基于泰勒展开式,利用所述小数定点数计算ef的定点数,具体包括:

利用所述小数定点数计算fb的定点数;b∈[1,t2],b为整数,t2为第二阈值;

按照公式计算得到所述ef的定点数。

可选的,具体通过以下步骤得到:

计算的定点数,得到第一定点数;

将所述第一定点数中每个1在所述第一定点数中从左至右的顺序编号减一,得到至少一个移位参数;

将n减去每个所述移位参数,得到至少一个移位距离;

将所述fb的定点数向右移动所述移动距离的位数,得到中间参数;

根据每个所述中间参数之和得到

可选的,将所述fb的定点数向右移动所述移动距离的位数,得到中间参数,具体包括:

在所述fb的定点数的右侧增加m位0,将所述fb的定点数扩大2m倍;

将扩大后的fb的定点数向右移动所述移动距离的位数,得到所述中间参数;

则,所述根据每个所述中间参数之和得到具体包括:

删除每个所述中间参数之和右侧的m位得到

可选的,所述将所述指数定点数拆分为整数定点数和小数定点数,之后还包括:

判断所述整数定点数是否大于2n

当所述整数定点数大于2n时,若i为正,则将n位定点数的最大值确定为ex;若i为负,则将n位定点数的最小值确定为ex

本申请实施例第二方面提供的一种函数计算方法,所述函数包括所述方法包括:

获得x的n位定点数;n为大于2的正整数;

对所述x的n位定点数执行第一移位操作,移动所述x的n位定点数中小数点的位置得到1+k的n位定点数,0≤k<1;

基于泰勒展开式,利用所述1+k的n位定点数计算(1+k)-1的n位定点数;

对所述(1+k)-1的n位定点数执行第二移位操作,移动所述(1+k)-1的n位定点数中小数点的位置得到所述第一移位操作和所述第二移位操作中小数点的移动位数相同但移动方向相反。

可选的,所述基于泰勒展开式,利用所述1+k的n位定点数计算(1+k)-1的n位定点数,具体包括:

按照公式1-k+k2-k3计算得到所述(1+k)-1的n位定点数。

本申请实施例第三方面提供的一种函数计算装置,所述函数包括ex,e为自然常数;所述装置包括:转换模块、第一计算模块、第二计算模块和第三计算模块;

所述转换模块,用于获得x的n位定点数,并将所述x的n位定点数拆分为整数定点数和小数定点数;n为大于2的正整数,所述整数定点数为|i|的二进制数,所述小数定点数为|f|的二进制数;x=i+f,i为整数,-1<f<1,且当i和f均不为0时i和f同为正数或同为负数;

所述第一计算模块,用于当i不为0时,根据所述整数定点数,利用预先设定的查找表获得ei的定点数;所述查找表包括的定点数,k∈[0,t1],k为整数,t1为第一阈值;

所述第二计算模块,用于当f不为0时,基于泰勒展开式,利用所述小数定点数计算ef的定点数;

所述第三计算模块,用于根据所述ei的定点数和所述ef的定点数得到ex

可选的,所述第一计算模块,具体包括:第一判断子模块、查找子模块和第一确定子模块;

所述第一判断子模块,用于判断所述整数定点数的每一位是否为1;

所述查找子模块,用于当所述第一判断子模块判断所述整数定点数从右至左的第a位是1且i为正时,从所述查找表中获得的定点数,得到第一参数;还用于当所述第一判断子模块判断所述整数定点数从右至左的第a位是1且i为负时,从所述查找表中获得的定点数,得到第一参数;所述整数位共p位,1≤a≤p,a和p均为正整数;

所述第一确定子模块,用于将获得的每个所述第一参数相等,得到所述ei的定点数。

可选的,所述第二计算模块,具体包括:第一计算子模块和第二计算子模块;

所述第一计算子模块,用于利用所述小数定点数计算fb的定点数;b∈[1,t2],b为整数,t2为第二阈值;

所述第二计算子模块,用于按照公式计算得到所述ef的定点数。

可选的,所述第二计算子模块具体用于:

计算的定点数,得到第一定点数;

将所述第一定点数中每个1在所述第一定点数中从左至右的顺序编号减一,得到至少一个移位参数;

将n减去每个所述移位参数,得到至少一个移位距离;

将所述fb的定点数向右移动所述移动距离的位数,得到中间参数;

根据每个所述中间参数之和得到

可选的,所述第二计算子模块具体还用于:

在所述fb的定点数的右侧增加m位0,将所述fb的定点数扩大2m倍;

将扩大后的fb的定点数向右移动所述移动距离的位数,得到所述中间参数;

删除每个所述中间参数之和右侧的m位得到

可选的,所述装置还包括:判断模块和确定模块;

所述判断模块,用于判断所述整数定点数是否大于2n

所述确定模块,用于当所述判断模块判断所述整数定点数大于2n时,若i为正,则将n位定点数的最大值确定为ex;若i为负,则将n位定点数的最小值确定为ex

本申请实施例第四方面提供的一种函数计算装置,所述函数包括所述装置包括:转换模块、第一移位模块、计算模块和第二移位模块;

所述转换模块,用于获得x的n位定点数;n为大于2的正整数;

所述第一移位模块,用于对x的n位定点数执行第一移位操作,移动所述x的n位定点数中小数点的位置得到1+k的n位定点数,0≤k<1;

所述计算模块,用于基于泰勒展开式,利用所述1+k的n位定点数计算(1+k)-1的n位定点数;

所述第二移位模块,用于对所述(1+k)-1的n位定点数执行第二移位操作,移动所述(1+k)-1的n位定点数中小数点的位置得到所述第一移位操作和所述第二移位操作中小数点的移动位数相同但移动方向相反。

可选的,所述计算模块,具体用于按照公式1-k+k2-k3计算得到所述(1+k)-1的n位定点数。

本申请实施例第五方面提供的一种函数计算器,所述函数包括ex,e为自然常数;所述函数计算器,包括:控制单元、整数计算单元、小数计算单元和整合单元;

所述控制单元,用于获得x的n位定点数,并将所述x的n位定点数拆分为整数定点数和小数定点数;n为大于2的正整数,所述整数定点数为|i|的二进制数,所述小数定点数为|f|的二进制数;x=i+f,i为整数,-1<f<1,且当i和f均不为0时i和f同为正数或同为负数;还用于根据i的正负,将所述整数定点数输入所述整数计算单元;还用于将所述小数定点数输入所述小数计算单元;

所述整数计算单元,用于根据输入的整数定点数,利用预先配置的查找表获得ei的定点数;所述查找表包括的定点数,k∈[0,t1],k为整数,t1为第一阈值;

所述小数计算单元,用于基于泰勒展开式利用所述小数定点数计算ef的定点数;

所述整合单元,用于根据所述ei的定点数和所述ef的定点数得到ex

可选的,所述整数计算单元,具体包括:p个第一整数寄存器、p个第二整数寄存器、第一乘法器集合和逻辑处理寄存器;

每个所述第一整数寄存器均存储有的定点数,且与所述整数定点数从右至左的第a位对应,用于当输入为1时,将存储的的定点数输出至所述第一乘法器集合;所述整数定点数共p位,a∈[1,p],a和p均为正整数;

每个所述第二整数寄存器均存储有的定点数,且与所述整数定点数从右至左的第a位对应,用于当输入为1时,将存储的的定点数输出至所述第一乘法器集合;

所述控制单元,具体用于当i为正时,将所述整数定点数的每一位输入至对应的所述第一整数寄存器;当i为负时,将所述整数定点数的每一位输入至对应的所述第二整数寄存器;

所述第一乘法器集合,用于将输入的定点数相乘,并将得到的乘积输出至所述逻辑处理寄存器;

所述逻辑处理寄存器,用于将输入的乘积得到所述ei的定点数后输出至所述整合单元。

可选的,所述小数计算单元,具体包括:第一小数寄存器、第二小数寄存器、第二乘法器集合和泰勒处理寄存器;

所述控制单元,具体用于将所述小数定点数输入所述第一小数寄存器和所述第二小数寄存器;

所述第一小数寄存器和所述第二小数寄存器,用于将所述小数定点数输出至所述第二乘法器集合;

所述第二乘法器集合,用于利用所述小数定点数计算fb的定点数后输出至所述泰勒处理寄存器;b∈[1,t2],b为整数,t2为第二阈值;

所述泰勒处理寄存器,用于按照公式计算得到所述ef的定点数后输出至所述整合单元。

可选的,所述泰勒处理寄存器具体用于:

计算的定点数,得到第一定点数;

将所述第一定点数中每个1在所述第一定点数中从左至右的顺序编号减一,得到至少一个移位参数;

将n减去每个所述移位参数,得到至少一个移位距离;

将所述fb的n位定点数向右移动所述移动距离的位数,得到中间参数;

根据每个所述中间参数之和得到

可选的,所述泰勒处理寄存器具体还用于:

在所述fb的定点数的右侧增加m位0,将所述fb的定点数扩大2m倍;

将扩大后的fb的定点数向右移动所述移动距离的位数,得到所述中间参数;

删除每个所述中间参数之和右侧的m位得到

可选的,还包括:判断单元;

所述判断单元,用于判断所述整数定点数是否大于2n;当所述整数定点数大于2n时,若i为正,则将n位定点数的最大值确定为ex输出;若i为负,则将n位定点数的最小值确定为ex输出。

本申请实施例第六方面提供的一种函数计算器,所述函数包括所述函数计算器包括:第一逻辑处理单元、泰勒处理单元和第二逻辑处理单元;

所述第一逻辑处理单元,用于获得x的n位定点数;还用于对所述x的n位定点数执行第一移位操作,移动所述x的n位定点数中小数点的位置得到1+k的n位定点数输出至所述泰勒处理单元,0≤k<1;n为大于2的正整数;

所述泰勒处理单元,用于基于泰勒展开式,利用所述1+k的n位定点数计算(1+k)-1的n位定点数后输出至所述第二逻辑处理单元;

所述第二逻辑处理单元,用于对所述(1+k)-1的n位定点数执行第二移位操作,移动所述(1+k)-1的n位定点数中小数点的位置得到所述第一移位操作和所述第二移位操作中小数点的移动位数相同但移动方向相反。

可选的,所述泰勒处理单元,具体包括:第一寄存器、第二寄存器、乘法器集合和泰勒处理寄存器;

所述第一逻辑处理单元,具体用于将k的n位定点数输入所述第一寄存器和所述第二寄存器;

所述第一寄存器和所述第二寄存器,用于将所述k的n位定点数输出至所述乘法器集合;

所述乘法器集合,用于利用所述k的n位定点数计算k、k2和k3的n位定点数后输出至所述泰勒处理寄存器;c∈[1,t2],c为整数,t2为第二阈值;

所述泰勒处理寄存器,用于根据输入的k、k2和k3的n位定点数,按照公式1-k+k2-k3计算得到所述(1+k)-1的n位定点数输出至所述第二逻辑处理单元。

与现有技术相比,本申请至少具有以下优点:

在本申请实施例中,在计算自然常数的x次方时,将x转换为整数和小数之和后,分别对整数部分i和小数部分f对应的结果进行计算。利用预先设置的包括e的2a次方的查找表快速计算得到e的i次方结果,并利用泰勒展开式快速计算e的f次方。在计算x的倒数时,通过移动小数点的位置将x转换为1和小数之和后,同样利用泰勒展开式快速计算1和和小数之和的倒数,并将结果的小数点的位置重新移动回去得到x的倒数。本申请提供的函数计算方法,能够快速的得到复杂函数中自然常数的幂运算结果以及倒数的计算结果,简化了复杂函数的计算过程,节约了计算耗时和功耗。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例一提供的一种函数计算方法的流程示意图;

图2为本申请实施例一提供的另一种函数计算方法的流程示意图;

图3为本申请实施例一提供的又一种函数计算方法的流程示意图;

图4为本申请实施例一提供的一种函数计算装置的结构示意图;

图5为本申请实施例一提供的一种第一计算模块的结构示意图;

图6为本申请实施例一提供的一种第二计算模块的结构示意图;

图7为本申请实施例一提供的一种函数计算器的结构示意图;

图8为本申请实施例一提供的另一种函数计算器的结构示意图;

图9为本申请实施例一提供的一种具体的函数计算器结构示意图;

图10为本申请实施例二提供的一种函数计算方法的流程示意图;

图11为本申请实施例二提供的一种函数计算装置的结构示意图;

图12为本申请实施例二提供的一种函数计算器的结构示意图;

图13为本申请实施例二提供的一种泰勒处理单元的结构示意图;

图14为本申请实施例一提供的一种具体的函数计算器结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了解决现有技术中复杂函数计算耗时长、功耗大的问题,本申请实施例提供了一种函数计算方法、计算装置及计算器,利用泰勒展开式简化函数中自然常数的幂运算和倒数运算,从而节约函数的计算耗时,降低功耗。并在设计硬件计算器时,最大限度的复用硬件资源、减少硬件的开销,进一步降低功耗。

基于上述思想,为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请的具体实施方式做详细的说明。

实施例一:

参见图1,该图为本申请实施例一提供的一种函数计算方法的流程示意图。在本实施例中,通过快速得到函数中自然常数e的幂运算结果,加快对函数的计算速度,减少计算耗时和能耗。下面详细说明具体的实现方式。

首先需要说明的是,本申请实施例提供的函数计算方法用于计算包括ex的函数,e为自然常数;其中,ex可以是函数的一项,也可以是函数中某一项的参数,本申请对ex在函数中的具体位置不进行限定。本申请实施例提供的函数计算方法包括如下步骤s101-s104。

s101:获得x的n位定点数,并将x的n位定点数拆分为整数定点数和小数定点数。

在本申请实施例中,n为大于2的正整数,x=i+f,i为整数,-1<f<1,且当i和f均不为0时i和f同为正数或同为负数,整数定点数为|i|的二进制数,小数定点数为|f|的二进制数。例如,当计算e3.5时,x=3.5,i=3,f=0.5;当计算e-3.5时,x=-3.5,i=-3,f=-0.5。

在一些可能的实现方式中,可以根据x的n位定点数中小数点的位置将其拆分为位于小数点之前的位组成的整数定点数和位于小数点之后的位组成的小数定点数。例如3.5的8位定点数为0011_0101,则对应的整数定点数为0011,小数定点数为0101。在实际应用中,可以根据实际精度需要具体设定n的数值和n位定点数中小数点的位置,本申请对此不进行限定。可以理解的是,0110_0000中的下划线用于表示小数点位置,并不代表n位定点数中包括该下划线。

s102:当i不为0时,根据整数定点数,利用预先设定的查找表获得ei的定点数。

在本申请实施例中,查找表包括的定点数,k∈[0,t1],k为整数,t1为第一阈值。可以理解的是,当i为0时,可以直接得到ei的结果为1。

具体实施时,第一阈值t1可以根据实际精度设定,本申请对此不进行限定。在一个例子中,t1可以等于整数定点数的位数,即当整数定点数为4位时,查找表中包括e0、e±2、e±4和e±8。由于查找表中已经存储有e的整数指数幂的结果,利用查找表中的数据即可直接或相乘获得ei的结果,即ei的定点数。

在本申请实施例一些可能的实现方式中,如图2所示,步骤s102具体可以包括如下步骤s1021-s1024:

s1021:逐一判断整数定点数的每一位是否为1;当整数定点数从右至左的第a位是1且i为正时,执行步骤s1022;当整数定点数从右至左的第a位是1且i为负时,执行步骤s1023。

s1022:从查找表中获得的定点数,得到第一参数后执行步骤s1024。其中,整数位共p位,1≤a≤p,a和p均为正整数。

s1023:从查找表中获得的定点数,得到第一参数后执行步骤s1024。

s1024:将获得的每个第一参数相等,得到ei的定点数。

根据二进制和十进制转换算法,一个十进制的数等于以2为底数、以二进制中每个1按照从右至左的顺序所对应的位数减一为指数的数之和。继续以i=3为例,3的二进制为11,从右至左第1位和第2位均为1,21-1+22-1=1+2=3。因此,i就等于以2为底数、以整数定点数中每个1对应按照从右至左的顺序所对应的位数减一为指数的数之和,即i=∑2a-1,ei就等于每个获得的的乘积,即e3=e1×e2

因此,在本申请实施例中,当整数定点数从右至左的第a位是1时,从查找表中得到的每个(当i为正)或(当i为负)的乘积,即为ei的定点数。由于在查找表中已经预先记录了部分e的指数运算结果,在计算ei的结果时,可以直接从查找表中获得记录的结果,根据记录的指数e的指数运算结果快速得到ei,无需进行耗时长、功耗大的指数运算,节约了运算时间和功耗。

s103:当f不为0时,基于泰勒展开式,利用小数定点数计算ef的定点数。

同理,当f为0时,可以直接得到ef为1。

已知,自然常数的指数运算的泰勒展开式如下式(1)

在本申请实施例中,将对无限循环小数(即自然常数)的指数运算转换为小数定点数的一次方、二次方和三次方的运算,节约了运算时间和功耗。

在本申请实施例一些可能的实现方式中,如图3所示,步骤s103具体可以包括如下步骤s1031-s1032。

s1031:利用小数定点数计算fb的定点数。

在本申请实施例中,b∈[1,t2],b为整数,t2为第二阈值;第二阈值t2可以根据实际精度设定,本申请对此不进行限定。

s1032:按照公式(2),计算得到ef的定点数。

在本申请实施例一些可能的实现方式中,为了进一步节约计算的时间,可以利用移位操作得到,具体步骤如下:

计算的定点数,得到第一定点数;将第一定点数中每个1在第一定点数中从左至右的顺序编号减一,得到至少一个移位参数;将n减去每个移位参数,得到至少一个移位距离;将fb的定点数向右移动移动距离的位数,得到中间参数;根据每个所述中间参数之和得到

举个例子,假设y的定点数共8位,n=8,y=100,其定点数为01100100,在计算y/3时,先计算的定点数约等于85,其定点数为01010101。01010101中为1的位置有4个,从右向左数分别为第1、3、5、7位,得到四个移位参数0、2、4、6。然后,将n减去每个移位参数得到移动距离8、6、4、2。再将01100100向右移动8位得到0、向右移动6位得到01、向右移动4位得到0110、向右移动2位得到011001、将0+01+0110+011001=100000,即y/3的二进制为100000,转换为十进制则为32。

从上面的例子中可看出,由于在计算的定点数时需要将小数部分省略导致计算结果的精度不高。为此,在一些可能的设计中,在得到中间参数时,可以在fb的定点数的右侧增加m位0,将fb的定点数扩大2m倍后,再将扩大后的fb的定点数向右移动之前得到的移动距离的位数,得到中间参数。在得到第一参数之和后,删除每个所述中间参数之和右侧的m位得到

继续上面的例子,例如可以将01100100扩展为16位,在01100100右侧补充8个0,得到0110010000000000,相当于将100扩大了256倍。在将0110010000000000向右移动8位得到1100100、向右移动6位得到110010000、向右移动4位得到11001000000、向右移动2位得到1100100000000,将1100100+110010000+11001000000+1100100000000=10000100110100,再将10000100110100缩小256倍,删除右侧的8位,得到100001,即y/3的二进制为100001,转换为十进制则为33。

实际应用中,可以根据具体计算精度的需要,选择是否对fb的定点数进行补位以提高计算精度,本申请实施例对此不进行限定。

s104:根据ei的定点数和ef的定点数得到ex

可以理解的是,由于x=i+f,则ex=ei×ef,利用ei的定点数和ef的定点数相乘即可得到ex的定点数,进而可以得到ex的任意进制的结果。

在实际应用中,一般会对ex的定点数的位数进行限制,若超出定点数的范围则会导致系统错误。因此,在本申请实施例一些可能的实现方式中,步骤s101之后还可以包括:判断整数定点数是否大于2n;当整数定点数大于2n时,若i为正,则将n位定点数的最大值确定为ex;若i为负,则将n位定点数的最小值确定为ex。例如,当ex的定点数为16位时,当i大于16时,ex超出16位定点数的最大值,直接将0xffff(即16位定点数的最大值)作为ex的结果输出;当i小于-16时,ex超出16位定点数的最小值,直接将0x000(即16位定点数的最小值)作为ex的结果输出。

在本申请实施例中,在计算自然常数的x次方时,将x转换为整数和小数之和后,分别对整数部分i和小数部分f对应的结果进行计算。利用预先设置的包括e的2a次方的查找表快速计算得到e的i次方结果,并利用泰勒展开式快速计算e的f次方,能够快速的得到复杂函数中自然常数的幂运算结果以及倒数的计算结果,简化了复杂函数的计算过程,节约了计算耗时和功耗。

基于上述实施例一提供的函数计算方法,本申请实施例一还提供了一种函数计算装置。

参见图4,该图为本申请实施例一提供的一种函数计算装置的结构示意图。在本实施例中,通过快速得到函数中自然常数e的幂运算结果,加快对函数的计算速度,减少计算耗时和能耗。下面详细说明具体的实现方式。

首先需要说明的是,本申请实施例提供的函数计算装置用于计算包括ex的函数,e为自然常数;其中,ex可以是函数的一项,也可以是函数中某一项的参数,本申请对ex在函数中的具体位置不进行限定。

本申请实施例提供的函数计算装置,包括:转换模块100、第一计算模块200、第二计算模块300和第三计算模块400;

转换模块100,用于获得x的n位定点数,并将x的n位定点数拆分为整数定点数和小数定点数;n为大于2的正整数,整数定点数为|i|的二进制数,小数定点数为|f|的二进制数;x=i+f,i为整数,-1<f<1,且当i和f均不为0时i和f同为正数或同为负数;

第一计算模块200,用于当i不为0时,根据整数定点数,利用预先设定的查找表获得ei的定点数;查找表包括的定点数,k∈[0,t1],k为整数,t1为第一阈值;

第二计算模块300,用于当f不为0时,基于泰勒展开式,利用小数定点数计算ef的定点数;

第三计算模块400,用于根据ei的定点数和ef的定点数得到ex

在本申请实施例一些可能的实现方式中,如图5所示,第一计算模块,具体可以包括:第一判断子模块201、查找子模块202和第一确定子模块203;

第一判断子模块201,用于判断整数定点数的每一位是否为1;

查找子模块202,用于当第一判断子模块201判断整数定点数从右至左的第a位是1且i为正时,从查找表中获得的定点数,得到第一参数;还用于当第一判断子模块201判断整数定点数从右至左的第a位是1且i为负时,从查找表中获得的定点数,得到第一参数;整数位共p位,1≤a≤p,a和p均为正整数;

第一确定子模块203,用于将获得的每个第一参数相等,得到ei的定点数。

在本申请实施例一些可能的实现方式中,如图6所示,第二计算模块,具体包括:第一计算子模块301和第二计算子模块302;

第一计算子模块301,用于利用小数定点数计算fb的定点数;b∈[1,t2],b为整数,t2为第二阈值;

第二计算子模块302,用于按照公式计算得到ef的定点数。

可选的,第二计算子模块302具体可以用于:

计算的定点数,得到第一定点数;将第一定点数中每个1在第一定点数中从左至右的顺序编号减一,得到至少一个移位参数;将n减去每个移位参数,得到至少一个移位距离;将fb的定点数向右移动移动距离的位数,得到中间参数;根据每个中间参数之和得到

可选的,第二计算子模块302具体还可以用于:

在fb的定点数的右侧增加m位0,将fb的定点数扩大2m倍;将扩大后的fb的定点数向右移动移动距离的位数,得到中间参数;删除每个中间参数之和右侧的m位得到

在本申请实施例一些可能的实现方式中,该函数计算装置还可以包括:判断模块和确定模块(未在图中示出);

判断模块,用于判断整数定点数是否大于2n

确定模块,用于当判断模块判断整数定点数大于2n时,若i为正,则将n位定点数的最大值确定为ex;若i为负,则将n位定点数的最小值确定为ex

在本申请实施例中,在计算自然常数的x次方时,将x转换为整数和小数之和后,分别对整数部分i和小数部分f对应的结果进行计算。利用预先设置的包括e的2a次方的查找表快速计算得到e的i次方结果,并利用泰勒展开式快速计算e的f次方,能够快速的得到复杂函数中自然常数的幂运算结果以及倒数的计算结果,简化了复杂函数的计算过程,节约了计算耗时和功耗。

基于上述实施例一提供的函数计算方法和装置,本申请实施例一还提供了一种函数计算器。

参见图7,该图为本申请实施例一提供的一种函数计算器的结构示意图。在本实施例中,通过快速得到函数中自然常数e的幂运算结果,加快对函数的计算速度,减少计算耗时和能耗。下面详细说明具体的实现方式。

首先需要说明的是,本申请实施例提供的函数计算器用于计算包括ex的函数,e为自然常数;其中,ex可以是函数的一项,也可以是函数中某一项的参数,本申请对ex在函数中的具体位置不进行限定。

本申请实施例提供的函数计算器,包括:控制单元701、整数计算单元702、小数计算单元703和整合单元704;

控制单元701,用于获得x的n位定点数,并将x的n位定点数拆分为整数定点数和小数定点数;n为大于2的正整数,整数定点数为|i|的二进制数,小数定点数为|f|的二进制数;x=i+f,i为整数,-1<f<1,且当i和f均不为0时i和f同为正数或同为负数;还用于根据i的正负,将整数定点数输入整数计算单元;还用于将小数定点数输入小数计算单元。

在本申请实施例中,控制单元701具体可以利用任意一种处理器或逻辑处理寄存器实现,本申请实施例对此不进行限定。

整数计算单元702,用于根据输入的整数定点数,利用预先配置的查找表获得ei的定点数;查找表包括的定点数,k∈[0,t1],k为整数,t1为第一阈值。

小数计算单元703,用于基于泰勒展开式利用小数定点数计算ef的定点数。

整合单元704,用于根据ei的定点数和ef的定点数得到ex

可以理解的是,整数计算单元702、小数计算单元703和整合单元704功能的具体实现步骤可以参见上述方法的实施例,这里不再赘述。

在本申请实施例一些可能的实现方式中,如图8所示,整数计算单元,具体可以包括:p个第一整数寄存器702a、p个第二整数寄存器702b、第一乘法器集合702c和逻辑处理寄存器702d;

每个第一整数寄存器702a均存储有的定点数,且与整数定点数从右至左的第a位对应,用于当输入为1时,将存储的的定点数输出至第一乘法器集合702c;整数定点数共p位,a∈[1,p],a和p均为正整数;

每个第二整数寄存器702b均存储有的定点数,且与整数定点数从右至左的第a位对应,用于当输入为1时,将存储的的定点数输出至第一乘法器集合702c;

控制单元701,具体用于当i为正时,将整数定点数的每一位输入至对应的第一整数寄存器702a;当i为负时,将整数定点数的每一位输入至对应的第二整数寄存器702b;

第一乘法器集合702c,用于将输入的定点数相乘,并将得到的乘积输出至逻辑处理寄存器702d;

在本申请实施例中,第一乘法器集合702c中乘法器的数量可以根据第一整数寄存器702a和第二整数寄存器702b的数量具体设定,可以包括分为两部分,每部分分别可以将每个第一整数寄存器702a输出的乘积以及每个第二整数寄存器702b输出的乘积。下面将结合具体场景说明,这里先不赘述。

逻辑处理寄存器702d,用于将输入的乘积得到ei的定点数后输出至整合单元704。

在本申请实施例一些可能的实现方式中,继续参见图8,小数计算单元703,具体可以包括:第一小数寄存器703a、第二小数寄存器703b、第二乘法器集合703c和泰勒处理寄存器703d;

控制单元701,具体用于将小数定点数输入第一小数寄存器703a和第二小数寄存器703b;

第一小数寄存器703a和第二小数寄存器703b,用于将小数定点数输出至第二乘法器集合703c;

第二乘法器集合703c,用于利用小数定点数计算fb的定点数后输出至泰勒处理寄存器703d;b∈[1,t2],b为整数,t2为第二阈值。

在本申请实施例中,第二乘法器集合703c中乘法器的数量可以根据b的取值范围具体设定,以得到fb的结果。下面将结合具体场景说明,这里先不赘述。

泰勒处理寄存器703d,用于按照公式计算得到ef的定点数后输出至整合单元704。

可选的,泰勒处理寄存器703d具体可以用于:

计算的定点数,得到第一定点数;将第一定点数中每个1在第一定点数中从左至右的顺序编号减一,得到至少一个移位参数;将n减去每个移位参数,得到至少一个移位距离;将fb的n位定点数向右移动移动距离的位数,得到中间参数;根据每个中间参数之和得到

可选的,泰勒处理寄存器703d具体还可以用于:

在fb的定点数的右侧增加m位0,将fb的定点数扩大2m倍;将扩大后的fb的定点数向右移动移动距离的位数,得到中间参数;删除每个中间参数之和右侧的m位得到

在本申请实施例一些可能的实现方式中,该函数计算器还可以包括:判断单元(未在图中示出);

判断单元,用于判断整数定点数是否大于2n;当整数定点数大于2n时,若i为正,则将n位定点数的最大值确定为ex输出;若i为负,则将n位定点数的最小值确定为ex输出。

在实际应用中,为了保证时序的准确,可以在整合单元704得到ex的结果后,在利用判断单元实现以上功能。

为了便于理解,下面以i为负数,查找表包括4个的定点数(k=0、1、2、3)为例,举例说明本申请实施例提供的函数计算器结构。

参见图9,该图为本申请实施例一提供的一种具体的函数计算器结构示意图。

整数部分:四个第二整数寄存器分别存储有e0、e2、e4和e8的定点数,控制单元(未在图中示出)按照从右至左的顺序将整数定点数的每一位按照e0、e2、e4和e8的顺序输入到每个第二整数寄存器。在输入为1时,该第二整数寄存器将其内存储的定点数输出至连接的乘法器;输入为0时,该第二整数寄存器输出1至连接的乘法器。第一乘法器集合分为两级,第一级乘法器的输入端分别连接两个不同的第二整数寄存器,每个第一级乘法器连接的第二整数寄存器不同;然后,每两个第一级乘法器的输出端连接一个第二级乘法器的输入端。由于共四个第二整数寄存器,第二级乘法器的输出端连接逻辑处理寄存器d1t即可。逻辑处理寄存器d1t可以得到ei的定点数输出值整合乘法器的第一输入端。

小数部分:控制单元将小数定点数输入第一小数寄存器和第二小数寄存器,第一小数寄存器和第二小数寄存器将小数定点数f输出至第二乘法器集合中的第一级乘法器,使其输出小数定点数和小数定点数的平方至第二乘法器集合中的第二级乘法器。第二乘法器集合中的第二级乘法器输出小数定点数、小数定点数的平方和小数定点数的立方至泰勒处理寄存器taylor。然后,泰勒处理寄存器taylor根据输入进行移位和加和操作得到ef的定点数输出至整合乘法器的第二输入端。

整合单元包括整合乘法器,整合乘法器将ei的定点数和ef的定点数的乘积输出,得到ex的运算结果。

在本申请实施例中,在计算自然常数的x次方时,将x转换为整数和小数之和后,分别对整数部分i和小数部分f对应的结果进行计算。利用预先设置的包括e的2a次方的查找表快速计算得到e的i次方结果,并利用泰勒展开式快速计算e的f次方,能够快速的得到复杂函数中自然常数的幂运算结果以及倒数的计算结果,简化了复杂函数的计算过程,节约了计算耗时和功耗。

实施例二:

参见图10,该图为本申请实施例二提供的一种函数计算方法的流程示意图。在本实施例中,通过快速得到函数中倒数运算结果,加快对函数的计算速度,减少计算耗时和能耗。下面详细说明具体的实现方式。

首先需要说明的是,本申请实施例提供的函数计算器用于计算包括倒数的函数;其中,可以是函数的一项,也可以是函数中某一项的参数,本申请对在函数中的具体位置不进行限定。

本申请实施例提供的函数计算方法,包括如下步骤s1001-s1004。

s1001:获得x的n位定点数。

在本申请实施例中,n为大于2的正整数,具体可以根据实际精度需要设定n的具体数值和n位定点数中小数点的位置,本申请对此不进行限定。例如,n=8,小数位在第四位和第五位之间。则,在计算1/6时,x=6,其n位定点数为0110_0000。可以理解的是,0110_0000中的下划线用于表示小数点位置,并不代表n位定点数中包括该下划线。

s1002:对x的n位定点数执行第一移位操作,移动x的n位定点数中小数点的位置得到1+k的n位定点数,0≤k<1。

继续以x=6为例,可以将小数点的位置向右移动两位得到01_100000,其对应的十进制数为1.5,即1+0.5,k=0.5。

s1003:基于泰勒展开式,利用1+k的n位定点数计算(1+k)-1的n位定点数。

可以理解的是,1和一个数之和的a次方用泰勒展开式展开后得到如下式(3)

因为,在本申请实施例中,a=-1,x即k,则根据式(3),在本申请实施例一些可能的实现方式中,步骤s1003具体可以包括:按照公式1-k+k2-k3计算得到(1+k)-1的n位定点数。

在实际应用中,可以根据计算的具体精度需求确定所用泰勒展开式的具体项数,本申请对此不进行限定。

s1004:对(1+k)-1的n位定点数执行第二移位操作,移动(1+k)-1的n位定点数中小数点的位置得到第一移位操作和第二移位操作中小数点的移动位数相同但移动方向相反。

由于步骤s1002中通过第一移位操作,移动x的n位定点数中小数点的位置得到1+k的n位定点数,为了得到的结果需要将小数点位恢复,向与第一移位操作相反的方向移动与第一移位操作相同的位数,得到继续以x=6为例,由于第一移位操作将小数点位向右移动了两位,在得到1/1.5的定点数时,需要将小数点位向左移动两位以得到1/6的定点数。

在本申请实施例中,在计算x的倒数时,通过移动小数点的位置将x转换为1和小数之和后,同样利用泰勒展开式快速计算1和和小数之和的倒数,并将结果的小数点的位置重新移动回去得到x的倒数。本申请提供的函数计算方法,能够快速的得到复杂函数中自然常数的幂运算结果以及倒数的计算结果,简化了复杂函数的计算过程,节约了计算耗时和功耗。

基于上述实施例二提供的函数计算方法,本申请实施例二还提供了一种函数计算装置。

参见图11,该图为本申请实施例二提供的一种函数计算装置的结构示意图。在本实施例中,通过快速得到函数中倒数运算结果,加快对函数的计算速度,减少计算耗时和能耗。下面详细说明具体的实现方式。

首先需要说明的是,本申请实施例提供的函数计算器用于计算包括倒数的函数;其中,可以是函数的一项,也可以是函数中某一项的参数,本申请对在函数中的具体位置不进行限定。

本申请实施例提供的函数计算装置,包括:转换模块1101、第一移位模块1102、计算模块1103和第二移位模块1104;

转换模块1001,用于获得x的n位定点数;n为大于2的正整数;

第一移位模块1102,用于对x的n位定点数执行第一移位操作,移动x的n位定点数中小数点的位置得到1+k的n位定点数,0≤k<1;

计算模块1103,用于基于泰勒展开式,利用1+k的n位定点数计算(1+k)-1的n位定点数;

第二移位模块1104,用于对(1+k)-1的n位定点数执行第二移位操作,移动(1+k)-1的n位定点数中小数点的位置得到第一移位操作和第二移位操作中小数点的移动位数相同但移动方向相反。

在本申请实施例一些可能的实现方式中,计算模块1103,具体用于按照公式1-k+k2-k3计算得到(1+k)-1的n位定点数。

在本申请实施例中,在计算x的倒数时,通过移动小数点的位置将x转换为1和小数之和后,同样利用泰勒展开式快速计算1和和小数之和的倒数,并将结果的小数点的位置重新移动回去得到x的倒数。本申请提供的函数计算方法,能够快速的得到复杂函数中自然常数的幂运算结果以及倒数的计算结果,简化了复杂函数的计算过程,节约了计算耗时和功耗。

基于上述实施例二提供的函数计算方法和装置,本申请实施例二还提供了一种函数计算器。

参见图12,该图为本申请实施例二提供的一种函数计算器的结构示意图。在本实施例中,通过快速得到函数中倒数运算结果,加快对函数的计算速度,减少计算耗时和能耗。下面详细说明具体的实现方式。

首先需要说明的是,本申请实施例提供的函数计算器用于计算包括倒数的函数;其中,可以是函数的一项,也可以是函数中某一项的参数,本申请对在函数中的具体位置不进行限定。

本申请实施例提供的函数计算器,包括:第一逻辑处理单元1201、泰勒处理单元1202和第二逻辑处理单元1023;

第一逻辑处理单元1201,用于获得x的n位定点数;还用于对x的n位定点数执行第一移位操作,移动x的n位定点数中小数点的位置得到1+k的n位定点数输出至泰勒处理单元1202,0≤k<1;n为大于2的正整数;

泰勒处理单元1202,用于基于泰勒展开式,利用1+k的n位定点数计算(1+k)-1的n位定点数后输出至第二逻辑处理单元1023;

第二逻辑处理单元1203,用于对(1+k)-1的n位定点数执行第二移位操作,移动(1+k)-1的n位定点数中小数点的位置得到第一移位操作和第二移位操作中小数点的移动位数相同但移动方向相反。

在本申请实施例一些可能的实现方式中,如图13所示,泰勒处理单元1202,具体可以包括:第一寄存器1202a、第二寄存器1202b、乘法器集合1203c和泰勒处理寄存器1203d;

第一逻辑处理单元1201,具体用于将k的n位定点数输入第一寄存器1202a和第二寄存器1202b。

第一小数寄存器1202a和第二小数寄存器1202b,用于将k的n位定点数输出至乘法器集合1203c;

乘法器集合1203c,用于利用k的n位定点数计算k、k2和k3的n位定点数后输出至泰勒处理寄存器1203d;c∈[1,t2],c为整数,t2为第二阈值;

在本申请实施例中,乘法器集合1203c中乘法器的数量可以根据泰勒处理器的项数或k的最高次方具体设定。下面将结合具体场景说明,这里先不赘述。

泰勒处理寄存器1203d,用于根据输入的k、k2和k3的n位定点数,按照公式1-k+k2-k3计算得到(1+k)-1的n位定点数输出至第二逻辑处理单元1203。

为了便于理解,下面以利用公式1-k+k2-k3,即k的最高次方是3为例,举例说明本实施例提供的函数计算器结构。

参见图14,该图为本申请实施例一提供的一种具体的函数计算器结构示意图。

第一逻辑处理单元可以包括数据寄存器和逻辑处理寄存器dynamic,数据寄存器中存储由x的n位定点数,工作时将x的n位定点数输出至逻辑处理寄存器dynamic。逻辑处理寄存器dynamic对x的n位定点数进行移位操作得到(1+k)的n位定点数,并输出代表k的定点数至第一寄存器和第二寄存器。第一寄存器和第二寄存器分别连接乘法器集合的第一级乘法器的两个输入端,输出k的定点数至第一级乘法器。第一级乘法器输出k的n位定点数和k的n位定点数的平方至乘法器集合的第二级乘法器,以使第二级乘法器输出k的n位定点数、k的n位定点数的平方和k的n位定点数的立方至泰勒处理寄存器taylor。泰勒处理寄存器taylor根据输入得到1/(1+k)的n位定点数后输出至第二逻辑处理单元shift。第二逻辑处理单元shift执行与第一逻辑处理单元方向相反但移动位数相同的移位操作得到

在本申请实施例中,在计算x的倒数时,通过移动小数点的位置将x转换为1和小数之和后,同样利用泰勒展开式快速计算1和和小数之和的倒数,并将结果的小数点的位置重新移动回去得到x的倒数。本申请提供的函数计算方法,能够快速的得到复杂函数中自然常数的幂运算结果以及倒数的计算结果,简化了复杂函数的计算过程,节约了计算耗时和功耗。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的硬件系统或装置而言,由于其与实施例公开的方法相对应,所以描述比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述,仅是本申请的较佳实施例而已,并非对本申请作任何形式上的限制。虽然本申请已以较佳实施例揭露如上,然而并非用以限定本申请。任何熟悉本领域的技术人员,在不脱离本申请技术方案范围情况下,都可利用上述揭示的方法和技术内容对本申请技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本申请技术方案的内容,依据本申请的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本申请技术方案保护的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1