CN112685002A - 基于pwl的浮点数对数计算架构 - Google Patents
基于pwl的浮点数对数计算架构 Download PDFInfo
- Publication number
- CN112685002A CN112685002A CN202110016101.8A CN202110016101A CN112685002A CN 112685002 A CN112685002 A CN 112685002A CN 202110016101 A CN202110016101 A CN 202110016101A CN 112685002 A CN112685002 A CN 112685002A
- Authority
- CN
- China
- Prior art keywords
- unit
- width
- pwl
- floating point
- point number
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 58
- 230000006870 function Effects 0.000 claims abstract description 40
- 230000011218 segmentation Effects 0.000 claims abstract description 15
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 13
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 12
- 238000005516 engineering process Methods 0.000 claims abstract description 8
- 238000012886 linear function Methods 0.000 claims description 30
- 238000013139 quantization Methods 0.000 claims description 14
- 238000005457 optimization Methods 0.000 claims description 11
- 230000002194 synthesizing effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
Images
Abstract
本发明涉及高空作业平台技术领域,具体地说,涉及基于PWL的浮点数对数计算架构。其包括对数函数分割单元、宽度权衡单元、硬件描述语言单元和对数合成单元;所述对数函数分割单元将对数函数自动分割成几个最大的子段后,通过宽度权衡单元在分段数和分数位宽度之间进行了权衡,根据所述宽度权衡单元的结果,本发明通过利用PWL方法的分段器算法,在预先设定的最大绝对误差和计算单元的分数位宽的限制下,将对数函数自动分割成几个最大的子段,然后,我们在分段数和分数位宽度之间进行了权衡,基于分段器的结果,我们的设计使用Verilog HDL进行编码,并在TSMC 90nm CMOS技术下进行合成,达到在不影响精度的情况下,消耗更小的面积、延迟和功耗。
Description
技术领域
本发明涉及对数计算技术领域,具体地说,涉及基于PWL的浮点数对数计算架构。
背景技术
复杂的算术运算,如乘、除、平方根和幂运算都是一种常见的运算,广泛用于数字信号处理和人工智能算法。对数系统(LNS),将上述复杂的加、减、移位、乘法运算简化,对数计算基数为2是一个很大程度上影响LNS性能的关键组成部分,各种方法被提出,来执行对数函数的计算以及追求高速度和各种精度要求,其中,数字递推算法、基于CORDIC的逼近算法和分段线性逼近算法是最常用的逼近方法,但随着基数的增加,面积呈爆炸式增长,数字递推算法、基于CORDIC的逼近算法和分段线性逼近算法迭代需要多个时钟周期,不仅消耗更大的面积和时间,且使用功耗较大,鉴于此,我们提出基于PWL的浮点数对数计算架构。
发明内容
本发明的目的在于提供基于PWL的浮点数对数计算架构,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供基于PWL的浮点数对数计算架构,包括对数函数分割单元、宽度权衡单元、硬件描述语言单元和对数合成单元;
所述对数函数分割单元用于在预先设定的最大绝对误差和计算单元的分数位宽的限制下,将对数函数自动分割成几个最大的子段;
所述宽度权衡单元用于在分段数和分数位宽度之间进行了权衡;
所述硬件描述语言单元用于语言编写具体的硬件架构;
所述对数合成单元用于直接计算的浮点数对数;
所述对数函数分割单元将对数函数自动分割成几个最大的子段后,通过宽度权衡单元在分段数和分数位宽度之间进行了权衡,根据所述宽度权衡单元的结果,使用所述硬件描述语言单元进行编码,最后所述对数合成单元采用TSMC 90nm CMOS技术进行合成对数。
作为本技术方案的进一步改进,所述对数函数分割单元采用PWL方法的分段器算法,将非线性函数划分为若干个子部分。
作为本技术方案的进一步改进,所述对数函数分割单元包括线性函数计算模块、分段宽度计算模块、误差计算模块和误差优化模块;
所述线性函数计算模块用于计算线性函数,确定输入的所属段;
所述分段宽度计算模块用于计算分数位宽;
所述误差计算模块用于根据所述分段宽度计算模块计算的分数位宽评价PWL方法的分段器算法精度;
所述误差优化模块用于计算出分段截距的最优值;
通过使用移位和加法器来代替乘法器,但占用了多个23位输入加法器,而宽度较大的加法器增大了加法器的面积、时延和功率,因此,实现了71.21%的面积减少,32.20%的延迟和36.31%的功率,而不影响精度。
作为本技术方案的进一步改进,所述线性函数计算模块中的线性函数计算的公式如下:
其中,h为非线性函数的近似数,n为子区段,非线性函数f(x)被划分为若干个子部分,在第i小节,f(x)用线性函数hi(x)近似,假设f(x)[p,q]的输入范围被划分为n个子区段,f(x)由PWL方法将函数h(x)计算为,大量的段落数n增加有助于提高精度,但也会造成VLSI电路资源消耗较大。
作为本技术方案的进一步改进,所述分段宽度计算模块中的线性函数分段计算公式如下:
hi(x)=ki×x+bi,x∈[pi,qi].
其中,i为输入x的分数位宽,ki和bi是通过线段的起点和终点。
作为本技术方案的进一步改进,所述误差计算模块中的误差计算公式如下:
σ=f(x)-hi(x),x∈[pi,qi].
其中,σ为误差,考虑到输入x是离散的,我们可以遍历计算线段中的所有点,从而准确的得到误差。
作为本技术方案的进一步改进,所述误差优化模块优化后的线性函数的计算公式如下:
hi'(x)=hi(x)+D=ki*x+bi'。
作为本技术方案的进一步改进,所述宽度权衡单元采用量化算法,提高所述对数函数分割单元的子段分割的精度所述量化算法包括以下步骤:
①、用qw=ceil(-log2(MAEhw))初始化小数位,MAEhw用于限制量化后的MAE;
②、利用qw的小数位数计算量化后的MAE,首先将输入与每段的开始和结束进行比较,确定输入属于第i段,然后在MATLAB中量化ki和bi;
③、如果MAE>MAEhw,qw是最小的分数位,如果MAE≤MAEhw,qw太小,不满足MAEhw的约束,qw的值更新为qw+1,然后返回到步骤②;使线性函数从连续信号转换数字信号的。
作为本技术方案的进一步改进,量化ki和bi计算公式如下:
其中kqi和bqi为分数部分qw位量化后的线性函数系数,随着qw的增大,分段数逐渐减少,由于量化运算后对y轴截距进行了优化,加法器的输入宽度也减小了,在达到相同的精度同时,节省83.28%的面积、89.36%的时延和94.06%的功耗。
作为本技术方案的进一步改进,所述硬件描述语言单元采用Verilog HDL语言编写具体的硬件架构,所述对数合成单元采用TSMC 90nm CMOS技术进行合成。
与现有技术相比,本发明的有益效果:
1、该基于PWL的浮点数对数计算架构中,通过利用PWL方法的分段器算法,在预先设定的最大绝对误差和计算单元的分数位宽的限制下,将对数函数自动分割成几个最大的子段,然后,我们在分段数和分数位宽度之间进行了权衡,基于分段器的结果,我们的设计使用Verilog HDL进行编码,并在TSMC 90nm CMOS技术下进行合成,达到在不影响精度的情况下,消耗更小的面积、延迟和功耗。
附图说明
图1为本发明的整体模块框图;
图2为本发明的对数函数分割单元框图;
图3为本发明的量化算法流程框图。
图中各个标号意义为:
100、对数函数分割单元;110、线性函数计算模块;120、分段宽度计算模块;130、误差计算模块;140、误差优化模块;
200、宽度权衡单元;300、硬件描述语言单元;400、对数合成单元。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
请参阅图1-图3所示,本实施例提供基于PWL的浮点数对数计算架构,包括对数函数分割单元100、宽度权衡单元200、硬件描述语言单元300和对数合成单元400;
对数函数分割单元100用于在预先设定的最大绝对误差和计算单元的分数位宽的限制下,将对数函数自动分割成几个最大的子段;
宽度权衡单元200用于在分段数和分数位宽度之间进行了权衡;
硬件描述语言单元300用于语言编写具体的硬件架构;
对数合成单元400用于直接计算的浮点数对数;
对数函数分割单元100将对数函数自动分割成几个最大的子段后,通过宽度权衡单元200在分段数和分数位宽度之间进行了权衡,根据宽度权衡单元200的结果,使用硬件描述语言单元300进行编码,最后对数合成单元400采用TSMC 90nm CMOS技术进行合成对数。
本实施例中的,对数函数分割单元100采用PWL方法的分段器算法,将非线性函数划分为若干个子部分。
其中,对数函数分割单元100包括线性函数计算模块110、分段宽度计算模块120、误差计算模块130和误差优化模块140;
线性函数计算模块110用于计算线性函数,确定输入的所属段;
分段宽度计算模块120用于计算分数位宽;
误差计算模块130用于根据分段宽度计算模块120计算的分数位宽评价PWL方法的分段器算法精度;
误差优化模块140用于计算出分段截距的最优值;
通过使用移位和加法器来代替乘法器,但占用了多个23位输入加法器,而宽度较大的加法器增大了加法器的面积、时延和功率,因此,实现了71.21%的面积减少,32.20%的延迟和36.31%的功率,而不影响精度。
值得说明的,线性函数计算模块110中的线性函数计算的公式如下:
其中,hx为非线性函数的近似数,n为子区段,非线性函数f(x)被划分为若干个子部分,在第i小节,f(x)用线性函数hi(x)近似,假设f(x)[p,q]的输入范围被划分为n个子区段,f(x)由PWL方法将函数h(x)计算为,大量的段落数n增加有助于提高精度,但也会造成VLSI电路资源消耗较大。
进一步的,分段宽度计算模块120中的线性函数分段计算公式如下:
hi(x)=ki×x+bi,x∈[pi,qi].
其中,i为输入x的分数位宽,ki和bi是通过线段的起点和终点。
具体的,误差计算模块130中的误差计算公式如下:
σ=f(x)-hi(x),x∈[pi,qi].
其中,σ为误差,考虑到输入x是离散的,我们可以遍历计算线段中的所有点,从而准确的得到误差。
其中,误差优化模块140优化后的线性函数的计算公式如下:
hi'(x)=hi(x)+D=ki*x+bi';
将线性函数向y方向平移,可以减小y轴截距对MAE的影响,因此我们在开始时忽略y轴截距对MAE的影响,在量化后通过优化MAE计算出y轴截距的最优值,在伪代码的输入中MAEdef是预先定义的MAE,用来约束分割和量化后的误差,iw和qw分别为输入x的分数位宽和计算单位宽度,输出中,kpi表示在第i段中被量化后的k,输出starti和endi为第i段输入的起点和终点。
更进一步的,宽度权衡单元200采用量化算法,提高对数函数分割单元100的子段分割的精度量化算法包括以下步骤:
①、用qw=ceil(-log2(MAEhw))初始化小数位,MAEhw用于限制量化后的MAE;
②、利用qw的小数位数计算量化后的MAE,首先将输入与每段的开始和结束进行比较,确定输入属于第i段,然后在MATLAB中量化ki和bi;
③、如果MAE>MAEhw,qw是最小的分数位,如果MAE≤MAEhw,qw太小,不满足MAEhw的约束,qw的值更新为qw+1,然后返回到步骤②;使线性函数从连续信号转换数字信号的。
具体的,量化ki和bi计算公式如下:
其中kqi和bqi为分数部分qw位量化后的线性函数系数,随着qw的增大,分段数逐渐减少,由于量化运算后对y轴截距进行了优化,加法器的输入宽度也减小了,在达到相同的精度同时,节省83.28%的面积、89.36%的时延和94.06%的功耗。
除此之外的,硬件描述语言单元300采用Verilog HDL语言编写具体的硬件架构,对数合成单元400采用TSMC 90nm CMOS技术进行合成。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.基于PWL的浮点数对数计算架构,其特征在于:包括对数函数分割单元(100)、宽度权衡单元(200)、硬件描述语言单元(300)和对数合成单元(400);
所述对数函数分割单元(100)用于在预先设定的最大绝对误差和计算单元的分数位宽的限制下,将对数函数自动分割成几个最大的子段;
所述宽度权衡单元(200)用于在分段数和分数位宽度之间进行了权衡;
所述硬件描述语言单元(300)用于语言编写具体的硬件架构;
所述对数合成单元(400)用于直接计算的浮点数对数;
所述对数函数分割单元(100)将对数函数自动分割成几个最大的子段后,通过宽度权衡单元(200)在分段数和分数位宽度之间进行了权衡,根据所述宽度权衡单元(200)的结果,使用所述硬件描述语言单元(300)进行编码,最后所述对数合成单元(400)采用TSMC90nm CMOS技术进行合成对数。
2.根据权利要求1所述的基于PWL的浮点数对数计算架构,其特征在于:所述对数函数分割单元(100)采用PWL方法的分段器算法。
3.根据权利要求1所述的基于PWL的浮点数对数计算架构,其特征在于:所述对数函数分割单元(100)包括线性函数计算模块(110)、分段宽度计算模块(120)、误差计算模块(130)和误差优化模块(140);
所述线性函数计算模块(110)用于计算线性函数,确定输入的所属段;
所述分段宽度计算模块(120)用于计算分数位宽;
所述误差计算模块(130)用于根据所述分段宽度计算模块(120)计算的分数位宽评价PWL方法的分段器算法精度;
所述误差优化模块(140)用于计算出分段截距的最优值。
5.根据权利要求3所述的基于PWL的浮点数对数计算架构,其特征在于:所述分段宽度计算模块(120)中的线性函数分段计算公式如下:
hi(x)=ki×x+bi,x∈[pi,qi].
其中,i为输入x的分数位宽,ki和bi是通过线段的起点和终点。
6.根据权利要求3所述的基于PWL的浮点数对数计算架构,其特征在于:所述误差计算模块(130)中的误差计算公式如下:
σ=f(x)-hi(x),x∈[pi,qi].
其中,σ为误差。
7.根据权利要求3所述的基于PWL的浮点数对数计算架构,其特征在于:所述误差优化模块(140)优化后的线性函数的计算公式如下:
h’i(x)=hi(x)+D=ki*x+bi'。
8.根据权利要求7所述的基于PWL的浮点数对数计算架构,其特征在于:所述宽度权衡单元(200)采用量化算法所述量化算法包括以下步骤:
①、用qw=ceil(-log2(MAEhw))初始化小数位;
②、利用qw的小数位数计算量化后的MAE,首先将输入与每段的开始和结束进行比较,确定输入属于第i段,然后在MATLAB中量化ki和bi;
③、如果MAE>MAEhw,qw是最小的分数位,如果MAE≤MAEhw,qw太小,不满足MAEhw的约束,qw的值更新为qw+1,然后返回到步骤②。
10.根据权利要求1所述的基于PWL的浮点数对数计算架构,其特征在于:所述硬件描述语言单元(300)采用Verilog HDL语言编写具体的硬件架构,所述对数合成单元(400)采用TSMC 90nm CMOS技术进行合成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110016101.8A CN112685002A (zh) | 2021-01-07 | 2021-01-07 | 基于pwl的浮点数对数计算架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110016101.8A CN112685002A (zh) | 2021-01-07 | 2021-01-07 | 基于pwl的浮点数对数计算架构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112685002A true CN112685002A (zh) | 2021-04-20 |
Family
ID=75456137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110016101.8A Pending CN112685002A (zh) | 2021-01-07 | 2021-01-07 | 基于pwl的浮点数对数计算架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685002A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150113027A1 (en) * | 2013-10-22 | 2015-04-23 | National Tsing Hua University | Method for determining a logarithmic functional unit |
CN107305484A (zh) * | 2016-04-19 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种非线性函数运算装置及方法 |
US20190050369A1 (en) * | 2016-04-19 | 2019-02-14 | Cambricon Technologies Corporation Limited | Apparatus and methods for non-linear function operations |
CN112035796A (zh) * | 2020-09-04 | 2020-12-04 | 金陵科技学院 | 面向集成电路的超低延时的整数次幂计算电路的优化方法 |
-
2021
- 2021-01-07 CN CN202110016101.8A patent/CN112685002A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150113027A1 (en) * | 2013-10-22 | 2015-04-23 | National Tsing Hua University | Method for determining a logarithmic functional unit |
CN107305484A (zh) * | 2016-04-19 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种非线性函数运算装置及方法 |
US20190050369A1 (en) * | 2016-04-19 | 2019-02-14 | Cambricon Technologies Corporation Limited | Apparatus and methods for non-linear function operations |
CN112035796A (zh) * | 2020-09-04 | 2020-12-04 | 金陵科技学院 | 面向集成电路的超低延时的整数次幂计算电路的优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4949296A (en) | Method and apparatus for computing square roots of binary numbers | |
CN106202890B (zh) | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 | |
Schulte et al. | Exact rounding of certain elementary functions | |
US11163533B2 (en) | Floating point unit for exponential function implementation | |
JP3529828B2 (ja) | ポピュレーション・カウントの計算装置 | |
CN112035796B (zh) | 面向集成电路的超低延时的整数次幂计算电路的优化方法 | |
Sohn et al. | A fused floating-point three-term adder | |
CN111061992A (zh) | 一种基于抛物线的函数拟合方法及其装置 | |
Sundhar et al. | Performance analysis of wallace tree multiplier with kogge stone adder using 15-4 compressor | |
US5862068A (en) | Arithmetic circuit for calculating a square-root of a sum of squares | |
Wu et al. | An energy-efficient approximate divider based on logarithmic conversion and piecewise constant approximation | |
CN112685002A (zh) | 基于pwl的浮点数对数计算架构 | |
US9720648B2 (en) | Optimized structure for hexadecimal and binary multiplier array | |
US10374580B2 (en) | FIR filter circuit design method using approximate computing | |
US5648924A (en) | Method and apparatus for finding arctangents | |
CN112860218B (zh) | 用于fp16浮点数据和int8整型数据运算的混合精度运算器 | |
Murillo et al. | PLAUs: Posit Logarithmic Approximate Units to implement low-cost operations with real numbers | |
CN110262772B (zh) | 一种两位、三位的近似加法器和一种近似加法器 | |
CN114201140A (zh) | 指数函数处理单元、方法和神经网络芯片 | |
Chang et al. | A novel multiplexer based truncated array multiplier | |
Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
US20040122878A1 (en) | Circuits and methods for implementing approximations to logarithms | |
US5646876A (en) | Method and apparatus for reducing rounding error when evaluating binary floating point polynomials | |
US11687336B2 (en) | Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks | |
CN114610268A (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 |