DSP中的浮点与定点比较
2020-02-20侯力秩
侯力秩
(翱捷科技(深圳)有限公司,深圳 福田 518000)
0 引 言
目前,在DSP业界存在两类数据表示形式,同时伴随产生了两类DSP架构产品。关于两类产品的不同特性,业界存在很多讨论甚至争议。本文大致描述两类数据表示格式在DSP应用中的不同特性,并阐述其特点和使用场景。
1 浮点数据格式与定点数据格式
1.1 浮点数据格式
在计算机系统的发展过程中提出过多种方法表示实数,但是目前为止使用最广泛的是浮点表示法。IEEE(Institute of Electrical and Electronics Engineers,电子电气工程师协会)在I985年制定的IEEE 754(IEEE Standard for Binary Floating-Point Arithmetic,ANSI/IEEE Std 754-1985)二进制浮点运算规范,是浮点运算部件的工业标准[1]。
采用以下浮点表示格式表示16位浮点数,该格式为IEEE 745标准的子集,除了能够完成要求的实数表示外,处理上也更为简洁。总位宽m=16 bit,格式如图1所示,用一个三元组{S,E,M}来表示一个数N。
图1 三元组表示法举例
(1)S(Sign)表示N的符号位,位宽为1 bit,对应值s满足:N>0时,s=0;N<0时,s=1;N=0时,s=0或1均可。
(2)E(Exponent)表示N的指数位,位于S和M之间的n位,默认位宽n=5 bit。E采用移码表示,固定偏置为16。E的数值范围为0~31,但其表示数值的实际范围为-16~15。
(3)M(Mantissa)表示N的尾数位,位于N末尾,默认位宽为10 bit。小数点在最左边,且左边还有一个隐含位,这个隐含位固定为1。假定M为“0101100111”,其对应的实际值在二进制数值上是“1.0101100111”。
N数值计算式如下[2]:
可见,它的最小正数为min=1.0×2-16≈1.525 9×10-5,最大正数为max=(1.1111111111)bin×215=65 504。
1.2 定点数据格式
定点数据格式如图2所示,16位定点数的首位为符号位,0表示正数,1表示负数。后面的数据部分为二进制整数部分和二进制小数部分。整个数值部分表示的数据大小为整数部分和小数部分之和。
图2 16 bit定点数据格式
由于定点数表示的小数点位置可以发生变化,因此定点数根据小数点位置的不同可以定义成不同的数据格式。如表1所示,Q代表小数所占据的位宽,S则代表整数和小数所占据的位宽。
2 浮点定点DSP主要优劣对比
2.1 浮点DSP主要优点和缺点
传统意义上,浮点数运算具有如下优点。
(1)动态范围大。由于浮点数采用了类似科学计数法形式的数据表示方式,因此其数据分布为非均匀状态,如图3所示。在同样数据宽度的情况下,浮点数据能够表示更宽广的动态范围,因此浮点DSP进行数据处理时基本不会发生数据溢出现象。
表1 定点数据格式范围
图3 浮点数和定点数的数据分布对此
(2)浮点数据舍入误差小,表示数据更精确。定点数相对于浮点数会引入更大的量化误差。例如:对于32位浮点数,每个相邻的数据之间的数据间隙约为该数据的千万分之一。每引入一个新的浮点数,需要舍入这个间隙的一半。对于16位定点数,数据间的间隙是等间距的。对于整数表示的浮点数(-32 768~32 767),引入10 000左右的数据则会引入1/10 000左右的舍入误差;表示1 000左右的数据,则会引入1/1 000的舍入误差。标准的量化误差一般为舍入误差的1/3,这样在表示数据时,浮点数引入的量化噪声将远远小于定点数。特别是在累加操作中,定点数引入的量化噪声可能得到进一步累加,导致结果精确度下降。
首先,寻找现场光源。即便在弱光环境下依然会有些许高光区域,利用画面之中的最亮部分进行对焦。其次,寻找对比度高的边界进行对焦。当下不少数码相机依然使用对比检测方式进行对焦,所以在对焦时寻找对比度高的边界,可以发挥相机的优势。最后,利用相机的中心对焦点进行对焦。一般相机的中心对焦点都是对焦能力最强的地方,关闭自动选择对焦物体模式,而采用中心点的单点对焦模式,先对焦再构图,可以加大对焦的成功率。
2.2 定点DSP的主要优点和缺点
传统意义上,定点数运算具有如下优点。
(1)定点运算单元的设计相对于浮点运算单元较为简单直接,一般定点运算单元所需的内部单元少,结构想对简单,因此定点运算单元在设计成本上相对于浮点运算单元具有一定的设计优势。
(2)定点运算单元由于设计面积较小等原因,具有较小的运行功耗,因此对于对功耗有需求的处理器具有一定的吸引力。
传统意义上,定点数运算具有如下缺点。
(1)定点数的动态范围较小,对动态范围较大的DSP运算一般无法较好地表示,只能通过饱和截位等操作进行近似处理,丧失了一定的运算精度。
(2)定点数相对于浮点数会引入更大的量化误差。
3 定点DSP为保持数据精度的设计
定点DSP由于在动态范围、表示精度和开发复杂度上的不足,往往会通过多种方式进行弥补[3]。
(1)提供相应的库函数和开发工具,辅助软件设计人员加速完成浮点算法到定点程序的转化;
(2)内部设置较高精度范围的累加器,防止误差在累加时被累积;
(3)设置相应的溢出等状态位,通知程序人员当前的运算状态;
(4)设计专门的饱和归一化指令,完成对数据结果的处理;
(5)指令集分为整数操作指令和定点数操作指令,并对结果进行不同方式的舍入等处理;
(6)乘法器一般带有对结果的移位功能,直接控制结果的输出定点格式。
4 结 论
综上所述,在进行高复杂度、高精度要求的数据处理如3G、4G等通信算法时,浮点DSP具有很强的设计优势。因此,各大DSP处理器设计公司都在其高端DSP领域采用了浮点设计或浮点/定点混合技术。