APP下载

一种单精度浮点对数运算的硬件实现

2017-03-24焦永

电脑知识与技术 2017年1期
关键词:对数

焦永

摘要:超越函数计算在高性能微处理器、DSP以及GPU的设计中均会涉及,对数是其中比较重要的一种运算。目前的做法一般是采用多项式展开或者查表法:采用多项式展开法达到要求的精度,需要计算的乘法和加法非常多;若采用直接查表法,所需要的ROM资源将非常多。该文提出了一种高效的单精度浮点对数运算的实现方法,采用展开式和查表相结合的方法,可以实现对任意底数的对数运算,同时在运算器数量和ROM资源数量间达到平衡。

关键词:单精度浮点;对数;查表

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)01-0235-02

Abstract: Transcendental function computing is used in high-performance microprocessors, DSP and GPU, the logarithm is one of the important operations. Most implementation is generally used polynomial expansion or look-up table method: achieving high precision accuracy needs a lot of multiplication and addition operations while using polynomial expansion method; the ROM resources will be very much while using direct look-up table method. This paper presents an efficient single-precision floating-point logarithm algorithm, using the polynomial expansion and look-up table combination, which can achieve any base of the logarithm, while the resources of ALU and ROM are balanced.

Key words: single precision floating-point; logarithm; lookup

1 概述

单精度对数运算在高性能微处理器、DSP和GPU中经常使用到。硬件实现对数运算的方法一般是多项式展开法或者查表法,多项式展开法需要使用的运算器(浮点乘法、加法)数量非常多;查表法需要使用的ROM资源非常多,本文采用一种多项式展开和查表相结合的算法,实现了对任意底数的对数运算,同时在运算器数量和ROM资源数量间达到平衡。

2 IEEE 754单精度浮点数据格式

IEEE754标准[1]定义了单精度32位和双精度64位浮点数的格式。32位IEEE754单精度标准值中,第一位是符号位,其后8位用来存放指数,最后23位用来存放小数尾数,如图1所示。

在IEEE754单精度浮点标准中,最高位为符号位(0为正,1为负),阶码共8位,阶码=阶码的真值+7fH,尾数共23位,进行了归一化,以产生一个1.f格式的数,f是小数部分,占用分配的23位。因为规格化的数最左一位总是1,所以不需要存储该位,在该格式中它是隐式的。

3 单精度浮点对数运算算法

设,其中x为单精度浮点数且x>0,n>0且n≠1,求y。

根据对数的运算性质可以将y写成,n为外部输入的值,可以将输入常数n变为输入常数,那么问题就转变为计算,的计算采用多项式展开和查表相结合的算法。

对于单精度浮点数(其中),那么:

E为x的指数部分,容易提取,ln2为常数,所以问题变为计算。

根据泰勒展开公式[2]:设n是一个正整数,如果定义在一个包含a的区间上的函数f在a点处n+1次可导,那么对于这个区间上的任意x都有,其中的多项式称为函数在a处的泰勒展开式,是泰勒公式的余项且是的高阶无穷小。

若要使结果保证单精度浮点数的精度,即24位小数,那么需满足,不妨设,其中,,此时可保证(此处未考虑浮点乘法和加法的精度损失,实际结果的误差可能会超过),所以原计算可以转换成计算,下面的问题是计算和。

首先计算,由于a只有8位小数(二进制),拟采用查表法,预先计算好1.00000000~1.11111111的自然对数值(单精度浮点数),将其存储在32×256的ROM中。

再计算,同样采用查表法,预先计算好1.00000000~1.11111111的倒数值(单精度浮点数),将其存储在32×256的ROM中,其余的就是浮点加法和乘法运算。

4 硬件实现

根据前面对算法的描述,将该算法的硬件实现结构如图2所示。

根据硬件实现结构,计算浮点对数运算的模块需要的逻辑资源为:3个单精度浮点加法、3个单精度浮点乘法、2个256×32(bit)=1KB的ROM。

将该算法用Verilog语言描述,在(1,2)区间生成一些随机测试激励(为便于比较,将输入和输出的单精度浮点数转化成十进制小数[3])在Modelsim[4]环境下进行仿真,仿真波形如图3所示,其中输入数据、实际结果、运行结果和误差见表1所示(以2为底数)。

单精度浮点数的精度为2-23=1.19×10-7,由仿真结果可以看出,在硬件实现的计算结果与真实结果相比,误差都不会超过1×2-23,能够满足单精度浮点数的精度要求。

5 结论

本文针对高性能微处理器、DSP、GPU设计中用到的单精度浮点对数运算的实现,提出一种基于多项式展开和查表法相结合的硬件实现算法,该算法可以实现任意底数的对数运算,将该算法使用Verilog语言描述,并进行仿真,在运算精度、硬件资源消耗方面均达到较理想的效果。

参考文献:

[1]the Institute of Electrical and Electronics Engineers, EEE Standard for Binary Floating-Point Arithmetic [S], July 26, 1985

[2] 同济大学数学系.高等數学[M].6版.北京:高等教育出版社,2007.

[3] https://www.h-schmidt.net/FloatApplet/IEEE754.html [OL]

[4] https://www.mentor.com/company/higher_ed/modelsim-student-edition [OL]

猜你喜欢

对数
含有对数非线性项Kirchhoff方程多解的存在性
一类带对数非线性项的抛物方程解的存在性和爆破
指数与对数
指数与对数
比较底数不同的两个对数式大小的方法
神奇的对数换底公式
Bazilevic函数的对数系数
基于对数正态分布的出行时长可靠性计算
一个新型对数混沌系统及其电路仿真
NA随机变量序列加权和的Chover型重对数律