CN107590105B - 面向非线性函数的计算装置及方法 - Google Patents
面向非线性函数的计算装置及方法 Download PDFInfo
- Publication number
- CN107590105B CN107590105B CN201710777378.6A CN201710777378A CN107590105B CN 107590105 B CN107590105 B CN 107590105B CN 201710777378 A CN201710777378 A CN 201710777378A CN 107590105 B CN107590105 B CN 107590105B
- Authority
- CN
- China
- Prior art keywords
- function
- parameter
- unit
- input value
- look
- 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.)
- Active
Links
Landscapes
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种面向非线性函数的计算装置,包括查找单元,用于根据所述函数以及函数变量输入值确定函数和对应的线性函数参数;以及计算单元,用于利用所述输入值和所述对应的线性函数参数进行计算。
Description
技术领域
本发明涉及计算领域,特别涉及一种面向非线性函数的计算装置及方法。
背景技术
非线性函数是函数形式的一种,在许多技术领域中都涉及针对非线性函数的计算。非线性函数的计算通常包含乘法运算、除法运算、指数运算和三角函数运算等一系列复杂运算,其计算较为繁琐,通常需要采用算术逻辑单元等部件完成相应运算,相应的,运算电路设计复杂度较高。
现有技术中采用的通用型算术逻辑单元,例如CPU中的ALU,对非线性函数进行计算存在资源利用率低、执行速度慢、电路硬件开销大等一系列问题,无法满足许多低功耗应用场景。尤其是在某些特定算法中,部分非线性函数以较高频率出现,例如,神经网络中存在于每一层的sigmoid函数,其运算速度的快慢以及运算能耗的多少直接制约着整个神经网络的计算效率。
因此,需要一种能够简化电路设计的快速计算非线性函数的装置及方法。
发明内容
本发明提供一种面向非线性函数的计算装置及方法,包括查找单元,用于根据所述函数以及函数变量输入值确定函数和对应的线性函数参数;以及
计算单元,用于利用所述输入值和所述对应的线性函数参数进行计算;
其中,所述线性函数参数包括乘法参数和加法参数。
优选的,所述计算单元包括用于对所述输入值和所述乘法参数执行乘法运算的乘法器。
优选的,所述乘法器是基于布斯编码的乘法器。
优选的,所述基于布斯编码的乘法器包括
布斯编码单元,用于对输入值和乘数参数进行布斯编码;
部分积计算单元,用于计算部分积;以及
压缩单元,用于将所述部分积相加,并获得所述乘法器的输出值。
优选的,所述布斯编码单元采用了基四的布斯编码方式。
优选的,所述计算单元还包括用于对所述乘法器的输出值和所述家法参数执行加法运算的加法器。
优选的,所述函数区间是根据函数自变量的分布规律划分的。
优选的,所述查找单元包括:
匹配单元,用于将非线性函数的输入值匹配至对应的函数区间;
查找表单元,用于根据所述函数区间确定对应的线性函数参数。
根据本发明的另一个方面,还提供一种非线性函数的计算方法,包括以下步骤:
利用所述函数区间的端点计算所述函数区间对应的线性函数的乘法参数和加法参数并保存为查找表;
利用所述查找表查找所述非线性函数的输入值对应的所述函数区间以及所述线性函数的乘法参数和加法参数;
利用所述非线性函数的输入值以及对应的所述线性函数的乘法参数和加法参数进行计算。
优选的,对所述乘法参数和所述输入值执行布斯编码并产生部分积;
将所述部分积求和之后与所述加法参数执行加法运算并获得计算结果。
相对于现有技术,本发明取得了如下有益技术效果:本发明提供的面向非线性函数的计算装置及方法,采用了分段近似的计算方法,将非线性函数的计算范围分为若干区间,在区间内将非线性函数近似为线性函数进行计算函数值,提高了计算速度;采用了基于布斯编码的乘法器实现乘法及加法操作,进一步提高了运算效率,从而节省了电路面积开销及能量损耗,特别适用于低功耗高能效的应用场景。
附图说明
图1是本发明较佳实施例的非线性函数计算装置结构示意图。
图2是本发明较佳实施例的计算单元的结构示意图。
图3是本发明较佳实施例的查找表单元的结构示意图。
图4是利用图1所示的计算装置进行非线性函数计算的方法流程图。
具体实施方式
为了使本发明的目的、技术方案以及优点更加清楚明白,以下结合附图,对根据本发明的实施例中提供的面向非线性函数的计算装置及方法进一步详细说明。
线性与非线性常用于区别函数y=f(x)对自变量x的依赖关系。线性函数即一次函数,在坐标系中,线性函数的图像可表示为一条直线,描述的是量与量之间按比例、成直线的关系,在空间和时间上代表规则和光滑的运动;而非线性函数,在坐标系中,其图像表示不是直线,描述的是量与量之间不按比例、不成直线的关系,代表非直线的运动和突变。虽然对于线性函数的分析计算等方法更为快速简便,但是在实际中,我们遇到的大部分量与量之间的关系都是非线性函数,因此为了简化对于非线性函数的计算,我们通常需要使用线性函数表示出非线性函数。
近似方法(approximate method)是一种以近似地表示某一个量的真正值的数为计算对象的数学计算方法。发明人经研究发现,为了快速计算较为复杂的应用,例如低功耗高能效的应用场景,采用分段线性的方法,可以将函数分为若干区间,在每一区间内采用线性近似的方式计算函数值,利用逼近理论,尽可能的逼近实际的非线性函数。这种方法既可省去复杂函数中幂运算、除法运算和三角函数运算等复杂函数计算,也可节省电路面积开销及能量损耗。
为了将非线性函数分段近似为线性函数,首先需要将非线性函数的计算范围划分为若干区间,将划分完成的区间存储至匹配单元中,同时利用各区间的端点值将各区间内的函数曲线近似地表示为连接端点值之间的直线;以区间端点值作为参考点,计算区间内线性函数的参数值,将获得的各个函数区间对应的线性函数参数值制成查找表存储至查找表单元中。
假设线性函数的表达式为y=ax+b,其中,a为斜率,b为y轴截距。函数区间端点的表达式为(x0,y0)和(x1,y1),则可计算得到对应线性函数参数值a和b。
例如,计算函数f(x)=x3在区间[-2,2]的函数值。
首先,将函数的计算范围[-2,2]划分为若干个函数区间。例如,可将函数进一步划分为四个区间:
[-2,-1)、[-1,0)、[0,1)、[1,2]
根据函数f(x)=x3,则可获得每个区间的端点值:
(-2,-8、(-1,-1)、(0,0)、(1,1)、(2,8)
其次,利用上述获得的五个端点值分别计算对应的函数区间的函数参数值并制成查找表,如表1所示。
表1 不同函数区间对应的线性函数参数查找表
区间 | 参数a | 参数b |
[-2,-1) | -7 | 6 |
[-1,0) | 1 | 0 |
[0,1) | 1 | 0 |
[1,2] | -7 | -6 |
在本发明的一个实施例中,区间划分方法可以考虑自变量的分布规律、查找表空间大小(例如查找表的存储容量)和计算分辨率(例如计算步长)等因素,针对不同的函数类型,可以根据其特征采用不同的区间划分策略。例如,根据函数自变量数据的稀疏度,将该函数的计算范围划分为若干区间,并计算各区间的端点值。例如,可在数据密集部分增加区间的划分的稠密度,在数据稀疏部分,适当增加区间的划分间隔。
假设在一应用场景中,非线性函数f(x)=x2的自变量计算范围是:
-23,-12,-5,-2,-1,-0.98,-0.97,-0.94,-0.90,……-0.78,-0.71,-0.69,-0.66……-0.08,-0.03,-0.02,-0.01,0.01,0.03,0.04,0.05……0.64,0.67,0.71,0.74,0.77,0.81……0.91,0.94,0.95,0.98,1,5,7,18,34
通过统计分析可知,上述自变量的计算范围在区间[-1,1]中分布密度较大,因此,在划分函数区间时,可适当增加区间[-1,1]内的划分密度,以便提高相应函数区间内线性拟合准确度。
图1是本发明较佳实施例的面向非线性函数的计算装置结构示意图,该装置包括匹配单元、查找表单元和计算单元。
其中,匹配单元用于接收函数变量输入值,并将函数变量输入值匹配至对应的函数区间,将匹配得到函数区间输出至查找表单元,同时将函数变量输入值传输出计算单元。例如,函数f(x)=x3的输入值为0.5,利用匹配单元可将该输入值匹配至对应的函数区间为[0,1),同时,匹配单元将输入值0.5输出至计算单元,将函数区间[0,1)输出至查找表单元。
查找表单元中存储了由非线性函数的区间及对应的参数所组成的查找表(如表1),可用于根据输入的函数区间查找对应的近似线性函数的参数,并将对应的参数输出至计算单元。例如,查找表单元根据接收的函数区间[0,1),查找对应的表1可得到函数f(x)=x3在函数区间[0,1)内所对应的线性函数参数值为a=1,b=0,同时,查找表单元将参数值a=1,b=0输出至计算单元。
在本发明的一个实施例中,查找表单元中可以储存多个函数的参数查找表,因此,在利用匹配单元输出的函数区间进行查找相应参数时,首先确定对应于要计算的函数的参数查找表,然后根据相应的函数区间确定相应的线性函数参数。
在本发明的一个实施例中,可将多个函数的不同函数区间对应的参数存储在一个查找表中,为相同函数的函数区间添加标签,以便查找使用。
在本发明的一个实施例中,可将上述匹配单元与查找表单元合并为查找单元,将划分完成的函数区间与相应的函数参数制作成查找表存储在查找单元中,利用函数及函数变量输入值,使用查找单元查找到相应的区间及其对应的函数参数值后,将该函数变量输入值和对应的函数参数值输出至计算单元进行计算。计算单元根据从匹配单元接收的函数变量输入值,和从查找表单元接收的线性函数参数完成线性函数的计算。
图2是本发明较佳实施例的计算单元的结构示意图,如图2所示,本发明的计算单元由乘法单元和加法单元组成。其中,乘法单元用于接收来自上述查找表单元提供的参数a和上述匹配单元提供的函数变量输入值x,并将参数a和函数变量输入值x作为乘数和被乘数进行乘法操作,得到乘积p;加法单元用于接收来自乘法单元的输出结果p和来自查找表单元提供的参数b,并将数值p和数值a相加,从而得到计算结果。
例如,计算单元从匹配单元接收的输入值是0.5,从查找表单元接收的参数为a=1,b=0,根据近似线性函数表达式y=ax+b,首先将输入值0.5和参数a=1进行乘法运算,得到乘积p=0.5,再将乘积与参数b=0进行加法运算,得到该区间[0,1)内的非线性函数f(x)=x3的输入值0.5所对应的近似线性函数值0.5。
在本发明的一个实施例中,计算单元采用了基于布斯编码的乘法器实现计算单元的乘法操作,从而解决乘法器中部分积过多导致需要的加法器增加的问题。
图3是本发明一个实施例的基于布斯编码的乘法器和加法器的结构示意图,如图3所示,该计算单元包括乘法器和加法器,其中乘法器包括布斯编码器单元、部分积计算单元、压缩单元。
布斯编码单元用于对输入的参数进行布斯编码。假设计算单元接收到的输入值为x,线性函数参数分别为乘法参数a和加法参数b,则布斯编码单元可将参数a以及输入值x进行布斯编码后的值输出至部分积计算单元;
部分积计算单元用于接收布斯编码单元输出的输入值x和乘法参数a,并产生部分积后将计算结果输出至压缩单元。例如可以采用基4的布斯编码方式,部分积计算单元将接收到的经布斯编码后的输入值x(即乘数)的最低位补零后每三位一组进行编码,每两位与其低一位组成一组进行编码,每组间会有一位重叠,具体布斯编码表示如表1所示:
表1:基4的布斯编码表
参数2 | 参数1 | 参数0 | 部分积 |
0 | 0 | 0 | 0 |
0 | 0 | 1 | X |
0 | 1 | 0 | X |
0 | 1 | 1 | 2x |
1 | 0 | 0 | -2x |
1 | 0 | 1 | -x |
1 | 1 | 0 | -x |
1 | 1 | 1 | 0 |
其中,参数2和参数1表示当前被乘数的两位,参数0表示低两位的高位。
压缩单元用于将部分积相加,并将结果输出至加法器。例如,当计算单元接收的输入值位宽为8时,在布斯编码单元对输入值进行布斯编码时会分为四组,在部分积计算单元进行计算时,每组会产生一个部分积,因此,压缩单元可以选择4-2压缩器对部分积进行求和。
加法器用于将从乘法器的压缩单元获得的计算结果与加法参数b进行加法操作。
图4是利用图1所示的计算装置进行非线性函数计算的方法流程图,如图4所示,根据本发明的一个实施例,提供一种非线性函数计算方法,该方法具体包括以下步骤:
S10、将非线性函数的计算范围划分为若干函数区间;
S20、计算不同区间所对应的线性函数参数值并制作查找表,将查找表储存至查找表单元中;
S30、利用匹配单元将非线性函数变量输入值匹配至对应的函数区间,利用查找表单元查找相应函数区间所对应的线性函数参数值;
S40、利用计算单元根据非线性函数的输入值和所对应的线性函数的参数值进行计算,例如对所述乘法参数和所述输入值执行布斯编码并产生部分积;将所述部分积求和之后与所述加法参数执行加法运算并获得计算结果。
在本发明的一个实施例中,可以重复上述步骤S30和S40直到获得非线性函数所有函数区间所对应的线性函数值。
尽管在上述实施例中,采用了基四的布斯编码方式为例进行了举例说明,但本领域普通技术人员应理解,此处的布斯编码还可采用其它多种方式,例如,基十六的布斯编码等,从而实现二进制的乘法运算。
相对于现有技术,在本发明实施例中所提供的面向非线性函数的计算装置及方法,利用近似计算的思想,采用分段线性的方法,将函数的计算范围分为若干区间,在每一区间内采用线性近似的方式计算函数值,省去了非线性函数的幂运算、除法运算和三角函数运算等复杂函数计算,节省了电路面积开销及能量损耗。
虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。
Claims (8)
1.一种面向非线性函数的计算装置,包括
查找单元,用于存储对应于不同非线性函数所划分的若干区间和线性函数参数,以及用于根据所述非线性函数以及函数变量输入值确定对应的线性函数参数;以及
计算单元,用于利用所述输入值和所述对应的线性函数参数进行计算;
其中,所述线性函数参数包括乘法参数和加法参数;所述查找单元包括用于将非线性函数的输入值匹配至对应的函数区间的匹配单元,以及用于根据所述函数区间确定对应的所述线性函数参数的查找表单元;以及
所述函数区间是根据函数自变量的分布规律或者查找表的空间大小或者计算分辨率中的至少一个划分的。
2.根据权利要求1所述的计算装置,其特征在于,所述计算单元包括用于对所述输入值和所述乘法参数执行乘法运算的乘法器。
3.根据权利要求2所述的计算装置,其特征在于,所述乘法器是基于布斯编码的乘法器。
4.根据权利要求3所述的计算装置,其特征在于,所述基于布斯编码的乘法器包括
布斯编码单元,用于对输入值和乘数参数进行布斯编码;
部分积计算单元,用于计算部分积;以及
压缩单元,用于将所述部分积相加,并获得所述乘法器的输出值。
5.根据权利要求4所述的计算装置,其特征在于,所述布斯编码单元采用了基四的布斯编码方式。
6.根据权利要求5所述的计算装置,其特征在于,所述计算单元还包括用于对所述乘法器的输出值和所述加法参数执行加法运算的加法器。
7.一种面向非线性函数的计算方法,包括以下步骤:
利用所述函数区间的端点计算所述函数区间对应的线性函数的乘法参数和加法参数并保存为查找表;其中,所述查找表中还存储了对应于不同非线性函数所划分的若干区间和线性函数参数;
利用所述查找表查找所述非线性函数的输入值对应的所述函数区间以及所述线性函数的乘法参数和加法参数;
利用所述非线性函数的输入值以及对应的所述线性函数的乘法参数和加法参数进行计算;
其中,所述函数区间是根据函数自变量的分布规律或者查找表的空间大小或者计算分辨率中的至少一个划分的。
8.根据权利要求7所述的计算方法,还包括以下步骤:
对所述乘法参数和所述输入值执行布斯编码并产生部分积;
将所述部分积求和之后与所述加法参数执行加法运算并获得计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710777378.6A CN107590105B (zh) | 2017-09-01 | 2017-09-01 | 面向非线性函数的计算装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710777378.6A CN107590105B (zh) | 2017-09-01 | 2017-09-01 | 面向非线性函数的计算装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107590105A CN107590105A (zh) | 2018-01-16 |
CN107590105B true CN107590105B (zh) | 2019-02-01 |
Family
ID=61050714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710777378.6A Active CN107590105B (zh) | 2017-09-01 | 2017-09-01 | 面向非线性函数的计算装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107590105B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920748B (zh) * | 2018-05-22 | 2023-01-06 | 复旦大学 | 一种具有高灵活性与精度的非线性运算电路结构 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1741394A (zh) * | 2005-09-16 | 2006-03-01 | 北京中星微电子有限公司 | 一种计算反量化公式中的非线性函数的方法 |
CN102354111A (zh) * | 2011-07-14 | 2012-02-15 | 哈尔滨工业大学 | 基于动液面预测的潜油往复式抽油机冲次优化方法 |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012098436A1 (en) * | 2011-01-21 | 2012-07-26 | Freescale Semiconductor, Inc. | Device and method for computing a function value of a function |
-
2017
- 2017-09-01 CN CN201710777378.6A patent/CN107590105B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1741394A (zh) * | 2005-09-16 | 2006-03-01 | 北京中星微电子有限公司 | 一种计算反量化公式中的非线性函数的方法 |
CN102354111A (zh) * | 2011-07-14 | 2012-02-15 | 哈尔滨工业大学 | 基于动液面预测的潜油往复式抽油机冲次优化方法 |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
Non-Patent Citations (3)
Title |
---|
基于Radix-4 Booth编码的模2n+1乘法器设计;鄢斌;《通信技术》;20151031;第48卷(第10期);第1-3节 * |
定点参考独立分量分析算法的FPGA实现;王佑锋;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090515(第05期);中国优秀硕士学位论文全文数据库 信息科技辑 * |
王佑锋.定点参考独立分量分析算法的FPGA实现.《中国优秀硕士学位论文全文数据库 信息科技辑》.2009,(第05期),中国优秀硕士学位论文全文数据库 信息科技辑. * |
Also Published As
Publication number | Publication date |
---|---|
CN107590105A (zh) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107589935A (zh) | 一种非线性函数计算装置及方法 | |
CN107729984A (zh) | 一种适用于神经网络激活函数的计算装置及方法 | |
TWI701612B (zh) | 用於神經網路中激勵函數的電路系統及其處理方法 | |
CN110852434B (zh) | 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置 | |
Lin et al. | A digital circuit design of hyperbolic tangent sigmoid function for neural networks | |
CN110362292A (zh) | 一种基于近似4-2压缩器的近似乘法运算方法和近似乘法器 | |
KR20190062129A (ko) | 컨볼루션 신경망 계산을 위한 저전력 하드웨어 가속 방법 및 시스템 | |
CN113038302B (zh) | 流量预测方法及装置、计算机可存储介质 | |
CN112051980B (zh) | 一种基于牛顿迭代法的非线性激活函数计算装置 | |
CN108596328B (zh) | 一种定点化方法及装置、计算机设备 | |
CN109634558A (zh) | 可编程的混合精度运算单元 | |
Garg et al. | LoBA: A leading one bit based imprecise multiplier for efficient image processing | |
CN106940689A (zh) | 基于Jacobi迭代算法的高精度矩阵特征值分解实现方法 | |
CN109308520A (zh) | 实现softmax函数计算的FPGA电路及方法 | |
CN110361691A (zh) | 基于非均匀阵列的相干信源doa估计fpga实现方法 | |
Wu et al. | Efficient dynamic fixed-point quantization of CNN inference accelerators for edge devices | |
Garg et al. | Reconfigurable rounding based approximate multiplier for energy efficient multimedia applications | |
CN107590105B (zh) | 面向非线性函数的计算装置及方法 | |
CN103809931A (zh) | 一种专用高速浮点指数运算器的设计 | |
CN110187866A (zh) | 一种基于双曲cordic的对数乘法计算***及方法 | |
CN112200299A (zh) | 神经网络计算装置、数据处理方法及装置 | |
CN110837624A (zh) | 一种针对sigmoid函数的近似计算装置 | |
Trejo-Arellano et al. | Adaptive segmentation methodology for hardware function evaluators | |
CN114298813A (zh) | 一种基于资源消耗的企业用户管理方法及*** | |
CN108268982A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230104 Address after: 518063 14th Floor, West Tower, Baidu International Building, No. 8, Haitian 1st Road, Binhai Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong Patentee after: Zhongke Times (Shenzhen) Computer System Co.,Ltd. Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |