(微电子学与固体电子学专业论文)高性能浮点单元的分析与设计.pdf_第1页
(微电子学与固体电子学专业论文)高性能浮点单元的分析与设计.pdf_第2页
(微电子学与固体电子学专业论文)高性能浮点单元的分析与设计.pdf_第3页
(微电子学与固体电子学专业论文)高性能浮点单元的分析与设计.pdf_第4页
(微电子学与固体电子学专业论文)高性能浮点单元的分析与设计.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(微电子学与固体电子学专业论文)高性能浮点单元的分析与设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高性能浮点单元的分析与设计 摘要 浮点运算单元( f p u ) 是处理器中专门进行浮点算术运算的电路单元,广泛应用 在科学计算,d s p 和图象处理。 本文主要研究浮点运算中的关键技术。首先,文章研究了浮点运算中使用频率最 高的加法器的设计技术。主要介绍双数据通道和三数据通道浮点加法器的设计原理, 超高精度浮点加法器的设计。超高精度浮点加法运算过程中,由于有效数长度明显增 加,有效数相加对系统性能的影响更为突出。针对有效数相加问题,本文提出了三输 入加法树的设计方法,并就其性能作了简要的分析。第二,本文在分析了数字电路实 现乘法运算的基本原理及部分积优化原理的基础上,提出了一种具有动态加速浮点乘 法运算功能的变基b o o t h 算法。该算法可以在不增加加法器负担的条件下收到很好的 加速效果。在一个普通的2 输入加法器的支持下,平均加速效果至少好于8 基b o o t h , 而面积和速度都优于前者。同目前集中于乘法器中阵列结构的优化方法研究相比,本 文为乘法器优化设计找出了一种新的研究方向。变基b o o t h 编码方法具有一般性,对 于其它乘法器设计有一定指导意义。最后,文章总结了前期的工作,并就下一步的工 作做了布署。 关键词:浮点数据类型浮点加法浮点乘法变基b o o t h a n a l y s i sa n dd e s i g no fh i g h - p e r f o r m a n c ef l o a t i n g - p o i n tu n i t a b s t r a c t f l o a t i n g p o i n tu n i ti sas p e c i a lm i c r o p r o c e s s o rc i r c u i t r yu n i tt h a t d e a l sw i t h r i o a t i r i g - p o i n ta r i t h m e t i co p e r a t i o n s w h i c hi sw i d e l yu s e di ns c i e n t i f i ca r i t h m e t i c 、c p u 、 d s p f d i g i t a ls i g n a lp r o c e s s i n g ) a n di m a g ep r o c e s s i n g i nt h i sp a p e rw em a i n l ys t u d yf o rt h ek e yt e c h n o l o g yo ff l o a t i n go o i n ta r i t h m e t i c f i r s t , i nt h i sp a p e rw es t u d yt h em a i n l yt e c h n o l o g yo ff l o a t i n gp o i n ta r i t h m e t i c i nt h i sp a r t w eg i v et h eo r i n e i p l eo ft w od a t ap a t h sa d d e ra n dt h r e ed a t ap a t h sa d d e r , a n dt h es m l e t u r e o fs u p e rp r e c i s i o nn o a t i n 2p o i n ta d d e r i nt h es u p e rp r e c i s i o nf l o a t i n gp o i n ta d d i t i o n , s i g n i f i c a n td i g i t sa d d i t i o nb e c o m em o l ei m p o r t a n tf o rt h er e a s o no ft h es i g n i f i c a n td i 画t s w e n tu p i no r d e rt od e a lw i t ht h es i g n i f i c a n td i g i t sa d d i t i o i lw e d e s i g n e dt h r e ei n p u t sa d d e r t r e e ,a n dg i v eas i m p l ep e r f o r m a n c ed i s c :u s $ o f t h i sm e t h o d s e c o n d ,h i g h - r a d i xb o o t hi so f g r e a ti m p o r t a n c ef o rs p e e d i n gu pm u l t i d l yb yr e d u c i n gt h en u m b e ro fp a r t i a lp r o d u c t s b u t i ta l s oa d d sg r e a tb u r d e n s0 1 3 t h ea d d e ro f t h em u l t i p l i e ro nt i m i n ga n da r e a 0 nt h eb a s i so f a n a l y z i n gt h et h e o r yo fd i g i t a lm u l t i p l ya n dt h ep r i n e i p i u mo fp a r t i a lp r o d u c t ss h r i n k i n g , a r a d i x - xb o o t ha l g o r i t h mi sp r o p o s e d i tc f i na c h i e v es p e e d i n gu pm u l t i p l y i n gd y n a m i c a l l y w i t h o u tb u r d e n i n gt h ea d d e r a3 2 - b i tm a n t i s s af l o a t i n gp o i n tm u l t i p l i e rb a s e do nt h i s a l g o r i t h mi sa l s oi n t r o d u c e d i ti sb e t t e rt h a na3 2 - b i tm a n t i s s ar a d i x - 8f l o a t i n gd 0 i m m u l t i p l i e ri nb o t ha t c aa n dt i m i n g f o rt h el a s tp a r tw es u mu do k u w o r k , a n dg i v et h em a i n s u c c u l e n tw o r k k e y w o r d s :f l o a t i n gp o i n td a t at y p e sf l o a t i n gp o i n ta d df l o a t i n gp o i n tm u l t i p l y r a d i x - xb o o t h 2 插图清单 图2 1 单精度存储格式4 图2 2 双精度浮点存储格式4 图2 3 双精度扩展格式( 8 6 ) 一5 图2 4 超高精度扩展格式( s p a r c ) 6 图3 1 传统浮点加法器体系结构1 4 图3 2 浮点加法器双数据通道流程图1 6 图3 3 超高精度浮点加法器的三通道结构图1 8 图3 4 超前进位加法器逻辑图2 0 图3 5k o g g e s t o n e 树形结构2 1 图3 6b r c n t - k u n g 树形结构2 1 图3 7s l d a n s k y 树形结构2 2 图3 8 三输入2 7 位树形加法器2 3 图3 9 二输入加法树运算节点逻辑图2 3 图3 1 0 三输入加法树运算节点逻辑图2 3 图3 1 l 三输入加法树k o g g e s t o n e 结构2 4 图3 1 2 图3 1 2 前导零检测( l z d ) 和前导零预测( l z a ) 2 6 图3 1 3 图3 1 3 前导0 预测方案2 8 图4 1 传统乘法器实现方案3 2 图4 2 传统乘法器实现方案流程图3 3 图4 3 陈列乘法器中的两行3 6 图4 4 最简单的迭代结构3 6 图4 5w a l l a c e 树实现乘法器3 7 图4 6 变基b o o t h 乘法器算法结构图4 1 表格清单 表2 1i e e e 7 5 4 中的四中浮点数据类型3 表2 2 不同数据类型间距比较l l 表3 1 对阶移位器和规格化移位器的比较1 5 表3 2 三种典型树形结构比较2 2 表3 3 二输入和三输入树形加法器结构性能比较2 4 表3 4 一些二进制位串及其对应前导零个数2 7 表3 5 进位串形式与前导l 的位置关系2 9 表4 1 两位一乘的b o o t h 译码3 5 表4 2 变基b o o t h 译码表4 1 表4 3 性能比较g w ooo oo o * oo o # 4 2 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知, 除了文中特别加以标志和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得盒a 王些太堂或其他教育机构的学位或证书而使用过的材料。与我一同工作的同 志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签字:乡舷签字日期。和7 年石月乙日 学位论文版权使用授权书 本学位论文作者完全了解金自b 王些盘堂有关保留、使用学位论文的规定,有权保留并向国 家有关部门或机构送交论文的复印件和磁盘t 允许论文被查阅或借阅本人授权金胆王些太堂 可以将学位论文的全部或部分论文内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复 制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文者签名;红嗟宸 一名科鸡 签字日期:? 7 年月2 日签字日期:上”7 年f 月z 日 学位论文作者毕业后去向: 工作单位: 通讯地址: 电话: 邮编: 致谢 值此论文完成之际,衷心地向辛勤培养我的导师陈钟鸣高级工程师表示崇 高的敬意和深深的谢意。感谢陈老师给予我学业上的谆谆教导,生活上无微不 至的关怀及工作上的指导和帮助。在撰写论文期间,陈老师从论文的选题思路, 撰写结构到具体问题的讨论等多方面给予我启发与指导,使我顺利的完成了硕 士学位论文,在此再次向陈老师表示感谢l 陈老师渊博的知识,严谨的科学态 度,宽容正直的人格无一不给我留下深刻印象,并将成为我今后学习和工作的 楷模从他身上我不仅学到了先进的科学知识,更让我感悟到要做好科学研究 必须先从做人开始。 感谢合肥工业大学微电子设计研究所张多利博士给予论文的指导和帮 助。并且在实验中给予了指导。本篇论文还得益予其他人的帮助。他们是:丁 勇( 东南大学博士) 、苏祖辉( 上海中颖公司) 、王强( 美国s y n o p s y s 公司) 、 鲁迎春( 合肥工业大学理学院) 、程作仁( 合肥工业大学微电子设计研究所) 他们给予的帮助使我在论文的撰写过程中少走了许多弯路。 感谢合肥工业大学微电子设计研究所和合肥工业大学理学院计算中心的 老师们,是他们给我提供了一个良好的学习和工作环境。 感谢合肥工业大学理学院应用物理教研室高峰主任对我的关心和支持。 感谢我的父母对我的培养、帮助、关心和支持。 最后感谢文中引用过文献的所有作者,感谢所有关心、支持和帮助过我 的老师、同学和朋友们! 作者:仇冀宏 2 0 0 7 年5 月 第一章前言 1 1 课题研究背景 浮点运算的一个重要特点就是其运算规模庞大,需要耗费大量c p u 资源, 而且运算的时间相当长,而与之相矛盾的是,随着时代的发展,在很多的领域, 浮点数的运算扮演着越来越重要的角色,特别是在高速实时数字处理方面,人 们对高性能浮点处理单元( f l o a t i n gp o i n tu n i t ,简称f p u ) 的需要就更加迫切 了。而且应用领域的课题研究对计算机性能的需求是无止境的。汽车引擎的设 计需要1 0 0 万亿次的高性能计算机,飞机动力分析需要1 0 0 0 0 万亿次计算机系 统。可以说应用领域的需求和现有高性能计算机系统计算能力之间的差距是高 性能计算机研究的原动力。在这些问题中,浮点运算占有相当大的比例。浮点 处理器的诞生正是为加速浮点数据的处理而设计的。 f p u 的发展大致可以分为两个时代:第一代是串行执行结构,以早期的8 0 8 7 和8 0 4 8 6 为代表;第二代是基于流水线的并发执行结构,以p e n t i u m 为主 要代表。另外在2 0 世纪9 0 年代以后,为了满足实时处理的要求。人们开发出 了内嵌e p u 的新一代通用d s p 数字信号处理器,作为协处理器来专门对浮点运 算进行处理,如t 1 公司推出的t m s 3 2 0 c 6 7 x x 系列d s p ,最高处理能力已经达到 1 3 5 0 m f i o p s 。而且越来越多的专用集成电路( a s i c ) 设计中也集成了f p u 或者 专门的浮点运算部件。 浮点处理单元( f p u ) 的应用领域十分广泛,例如: 军事:主要涉及卫星遥感、轨道计算以及实时信息传输等。 航天:主要涉及轨道计算、飞行控制、导航以及数据处理。 科学研究:主要包括物理、化学、生物、数学、工程等科学研究中的 大型计算。 金融:主要涉及银行的利息、汇率、股票以及银行的大型数据处理等。 大型应用软件:包括c a d 、e d a - r 具、数据库软件、绘图软件和工程 应用软件。 信号处理和图像处理:信号处理主要包括滤波、变换等通讯领域,此 外还有语音信号的识别以及处理;图像处理主要涉及一些绘图软件、图象识别 等。 1 2 论文的意义 本文论述了f p u 中一些重要的组成部件的设计,其中包括超高精度浮点加 法器,在详细研究有效数相加算法的基础上,提出了用于快速实现有效数相加 的三输入加法树的设计思想。并通过简单的实验,分析了该加法器的性能。以 及针对传统浮点乘法器的b o o t h 算法基础上提出了一种新的变基b o o t h 算法。 该变基b o o t h 算法的设计思想来源于手算乘法加速原理,通过改变b o o t h 编码 的分组界限,采用灵活分组的方法,在不增加加法器负担的前提下,收到了很 好的动态加速效果。适用于复杂异步处理单元中浮点乘法运算电路设计。同时, 该算法对于特殊数乘法( 如常数乘) 的设计实践也有一定的借鉴意义。并通过 实验论证了该乘法器设计方案的有效性。 1 3 论文结构 论文从提高浮点运算单元的性能入手,主要是如何提高浮点加法器和浮点 乘法器的运算速度进行了分析与优化。 论文组织结构如下: 第一章介绍课题的应用背景和意义。 第二章介绍浮点数据表示方法、浮点数据类型及舍入方法等有关浮点运 算的基本内容。 第三章详细研究了浮点加法器设计的关键技术,如系统结构的设计、双 数据通道和三数据通道浮点加法器的基本原理。针对超高精度浮点数据类型中 有效数长度增加的特点,在详细研究有效数相加算法的基础上,设计了三输入 树形加法器,并通过简单的实验,分析了该加法器的性能。 第四章在传统的b o o t h 算法基础上提出了一种新的变基b o o t h 算法。该 变基b o o t h 算法的设计思想来源于手算乘法加速原理,通过改变b o o t h 编码的 分组界限,采用灵活分组的方法,在不增加加法器负担的前提下,收到了很好 的动态加速效果。适用于复杂异步处理单元中浮点乘法运算电路设计。同时, 该算法对于特殊数乘法( 如常数乘) 的设计实践也有一定的借鉴意义。最后本 章通过实验论证了该乘法器设计方案的有效性。 第五章总结前期工作,介绍下一步的主要工作; 2 第二章浮点数据 浮点算术是算术运算的一项很重要的内容,是和整数运算相对应的。浮点 算术的操作对象是浮点数,也就是小数本章主要介绍i e e e 一7 5 4 二进制数的基 本定义及概念。 2 1 浮点数据表示 本节介绍一些浮点运算的基本问题,着重介绍i e e e 一7 5 4 中浮点数据的表示 方法。浮点数的表示包括:浮点类型数据格式与基的选择,范围与精度,格式 化,舍入以及基本误差。 数的浮点表示是数的标准( 十进制) 科学表示的一个等效机器形式,是一 种适应科学计算的非常好的数据表示方法。定点数的主要缺点是表示范围有限, 而浮点数在有限的数据位宽下,扩大了数据的表示范围。在浮点数据表示中, 通常叫做指数:s 是一个带符号的定点数,通常是分数,叫做有效数或尾数; 对于给定的表示,基是不变的,故不显示地表示在浮点数中。事实上b8 是一 个机器可调节的比例因子,用以拟示有效数s 中小数点的位置。换句话说,改 变一个给定浮点数中的指数,将产一小数点位置也变化的有效数。例如,3 1 4 2 x 1 0 一,3 1 4 2 x 1 0 0 ,0 3 1 4 2 x 1 0 1 是同一个数的不同表示,在基为1 0 的浮点数中, 它们的表示分别为( 一l ,3 1 4 2 ) ,( 0 ,3 1 4 2 ) ,( 1 ,0 3 1 4 2 ) ,这就是浮点名称的由 来。 2 i 1 浮点数据类型 i e e e - 7 5 4 定义了三种格式的浮点数据类型【1 1 2 】:单精度、双精度、扩展双 精度。第四种数据类型超高精度数据格式不是由i e e e 一7 5 4 定义的,但是已经成 为几家计算机生产厂商共同使用的标准。每种数据格式都有 n a n s ( n o t a n u m b e r ) ,士一( i n f i n i t y ) ,它们所能表示的有限数值都用一个简 单的形式表示为;2 “”n 两个整数n ( 有符号有效数) 和k ( 无偏斜的有符号指 数) 。四种浮点数据格式中各部分位宽如下: 表2 1i e e e - 7 5 4 中的四种浮点数据类型 f o r m a t b y t e s k + i n s i n g l e 482 4 d o u b i e81 15 3 d o u b l e e x t e n d e d1 01 56 4 o u a d r u p le 1 61 51 1 3 这种简洁的表示方式2 “n ,对于i e e e - 7 5 4 来计是唯一的,它看似非常简 单。但是它存在潜在的不确定性,所以要归一化。 单精度格式 i e e e 单精度格式由三个字段组成:2 3 位有效数f ;8 位偏移指数e ;以及1 位符号s 。这些字段连续存储在一个3 2 位字元中( 如图2 1 所示) 。第0 :2 2 包 含2 3 位有效数f ,第0 位是有效数的最低有效位,第2 2 位是最高有效位:经 2 3 :3 0 位包含8 位偏移指数e ,第2 3 位是偏移指数的最低有效位,第3 0 位是最 高有效位;最高序位( 第3 1 位) 包含符号位s 。 图2 1 单精度存储格式 双精度格式 i e e e 双精度格式包含三个字段:5 2 位有效数f ;1 1 位偏移指数e ;以及1 位符号s 。这些字段连续存储在两个连续地址的3 2 位字元中( 如图2 2 所示) 。 在s p a r c 体系结构中,具有较高地址的3 2 位字元包含有效数的3 2 个最低有效 位;而在x 8 6 体系结构中,具有较低地址的3 2 位字元包含有效数的3 2 个最低 有效位。如果我们将f 3 1 ;0 表示为有效数的3 2 个最低有效位,则第0 位是 整个有效数的最低有效位,第3 l 位是3 2 位最低有效有效数位中的最高有效位 在另一个3 2 位字元中,第o :1 9 位包含有效数的2 0 个最高有效位f 5 1 :3 2 第0 位为这2 0 个最高有效有效数位中的最低有效位,而第1 9 位为整个有效数 的最高有效位;第2 0 :3 0 位包含1 1 位偏移指数c ,经2 0 位为偏移指数的最低 有效位,第3 0 位为最高有效位,而最高序位( 第3 1 位) 包含符号位s 。图1 2 在对位进行编号时将两个连续的3 2 位字元视为一个6 4 位字元,其中第o :5 1 位存储5 2 位有效数f ;第5 2 :6 2 位存储1 1 位偏移指数e ;第6 3 位存储符号位 so 3 1 图2 2 双精度浮点存储格式 4 双精度扩展格式( x 8 6 ) 该浮点环境的双精度扩展格式符合i e e e 的双精度扩展格式定义。它包含四 个字段:6 3 位有效数f 、l 位显式前导有效数字位j 、1 5 位偏移指数e 和1 位 符号s 。在x 8 6 体系结构系列中,这些字段连续存储在1 0 个地址连续的8 位字 节中。但是,“u n i x 系统v 应用程序二进制接口i n t e l 3 8 6 处理器增补( i n t e l a b i ) ”要求双精度扩展参数和结果在堆栈中占用三个地址连续的3 2 位字元,其 中具有最高地址的字元的1 6 个最高有效位没有使用( 如图2 3 所示) 具有最低地址的3 2 位字元包含有效数的3 2 个最低有效位f 3 1 :0 ,第0 位为整个有效数的最低有效位,第3 1 位为3 2 个最低有效有效数的最高有效位。 在具有中间地址的3 2 位字元中,第0 :3 0 位包含有效数的3 1 最高有效位 6 2 : 3 2 ,第0 位于这个3 1 个最高有效有效数位的最低有效位,第3 0 位为整个有效 数的最高有效位;此中间地址的3 2 位字元的第3 1 位包含显式前导有效数字位 j 。在具有最高地址的3 2 位字元中,第o :1 4 位包含1 5 位偏移指数e ,第0 位 为偏移指数的最低有效位,第1 4 位为最高有效位;第1 5 位包含符号位s 。虽 然x 8 6 体系结构系列不使用此最高地址的3 2 位字元中的1 6 个最高序位,但按 照i n t e la b i 之规定它们必须存在( 如上所述) 。图2 3 在对位进行编号时将三 个连续的3 2 位字元视为一个9 6 位字元,其中第0 :6 2 位存储6 3 位有效数f ; 第6 3 位存储显式前导有效数字位j ;第6 4 :7 8 位存储1 5 位偏移指数e ;第7 9 位存储符号位s 。 9 68 07 97 86 4 i j i f 6 2 :3 2 i 6 3 3 2 “3 l :o l 3 1 o 图2 3 双精度扩展格式( x 8 6 ) 超高精度格式 s p a r c 浮点环境的超高精度格式符合i e e e 的双精度扩展格式定义。超高精 格式占用四个3 2 位字元并包含三个字段:1 1 2 位有效数f ;1 5 位偏移指数e ; 以及1 位符号s 。这些字段是连续存储的( 如图2 4 所示) 。具有最高地址的3 2 位字元包含有效数的3 2 个最低有效位( 表示为f 3 1 :0 ) 。接下来的两个3 2 位字元分别包含f 6 3 :3 2 和f 9 5 :6 4 。下一个字元的第o :1 5 位包含有效数 的1 6 个最高有效位“1 1 l :9 6 3 ,第0 位为这1 6 位的最低有效位,而第1 5 位 为整个有效数的最高有效位。第1 6 :3 0 位包含1 5 位偏移指数e ,第1 6 位为偏 移指数的最低有效位,第3 0 位为最高有效位;第3 l 位包含符号位s 。图2 4 在对位进行编号时将四个连续的3 2 位字元视为一个1 2 8 位字元,其中第o :i i i 位存储有效数f ;第1 1 2 :1 2 6 位储1 5 位存储1 5 位偏移指数e ;第1 2 7 位存储 符号位s 。 6 4 3 2 o 1 2 71 2 61 1 21 1 19 6 9 5 6 3 图2 4 超高精度格式( s p a r c ) 2 1 2 指数的表示 指数的表示中,原则上原码、反码与补码三种定点数的方法中的任何一种 都可以用来表示指数。事实并非如此简单,数零的特殊地位导致指数的表示要 采用稍微不同的方法。显然( e ,0 ) = o 2 8 = o ,数学上讲任何表示( e ,0 ) 都 看作零,即零没有一个唯一的表示。为了防止这一点,则需要用最小的指数作 为零表示,那将是方便的,容易检测。在用最小指数表示零的限制下,这可以 通过加一个偏移指数( 该最小指数的绝对值) 来实现。为了保持一致,对每 个数的指数都要加偏移量。也就是说使用一个偏移指数来取代真正的指数。如 果真正的指数为e ,满足关系式一n e n ,则使偏移指数e 满足关系式o e 2 n ,即e = e + n 。于是( 0 ,0 ) 就可以作为唯一表示。注意:当有效数采用一个 隐含位时,不能再依靠一个全零有效数来表示0 ,为此,必须保留一个特殊的 指数( 最小指数) 用于0 的表示。对指数的操作有加法与减法,而这些操作数 在补码表示中是最快的。因此,偏移补码是指数的最好表示方法。 指数溢出是指数的最后结果中,指数大于或小于允许指数值时所造成的溢 出。当结果的指数大于允许指时,就发生指数上溢;当结果的指数小于最小允 6 许指数时,就发生指数下溢。当发生下溢时,有两个简单的处理方法:一是让 结果冲零,这种方法已在当前许多计算机中采用;另一种方法不遵守规格化要 求,将有效数移位,并相应的调整指数,直到得到一个具有最小可能指数的非 规格化的有效数,这样得到的数叫做反规格化数。反规格化处理比冲零更难正 确地实现,而且误差分析复杂,但是,它通常能产生有意义的结果。当发生上 溢时,处理方法是按中间结果是负数或正数,将结果分别置为负无穷大或正无 穷大。而对象0 x 一,一一一,以及0 + 0 这样的操作,它们的结果应该是什么并 不清楚,通常认为这种情况产生一个不确定数( n a n ) 。 综上所叙,指数的表示是偏移的,有两个指数值不是用于表示正常的,而 是留作特殊情形:最小可能的指数e m i n 保留用作0 以及反规格化数:最大可 能的指数e m a x 用作c o 以及n a n 。于是指数偏移之后,各种组合的解释如下; e m a x 与一个非零有效数表示n a n : e m a x 与一个零有效数按照符号位的不同表示+ 一或一一; e m a x 与一个非零有效数表示一个反规格化数; 其余的指数值与有效数表示正常的数。 2 i 3 有效数的表示 有效数的表示中,基于定点算术的早期讨论,似乎补码表示是有效数的最 好表示。但是许多因素表明要采用其他的选择。首先,如前所述,处理下溢的 一种方法就是+ 0 或一0 均有意义,这只有原码与反码才有可能;其次,补码表示 的数的范围对称性,不是每个表示的数求负仍然是可以表示的,这会带来处理 不方便;第三,在补码表示中,四种操作a + b ,一a + b ,a + ( 一b ) ,一a + ( 一b ) 不能同样 简单地实现,但用反码和原码表示时是可以的;在把中间结果变为最后结果而 进行一些舍入处理中,用原码比用反码和补码更容易实现,也更方便产生一致 的结果。因此,原码是有效数表示最好的选择。有效数表示的第二个问题是基 点在有效数中的位置,几乎在所有的机器中,基点的位置都是放在有效数的最 高有效位( 符号位) 与下一位之间的。有效数表示的第三个问题是规格化。为 了得到可能的精度,在浮点计算中通常是尽可能消除有效的非有效位,例如用 0 3 1 4 2 代替0 0 0 0 3 1 4 2 。因为在机器中可表示的位是固定的,保留有效数可以 得到最大的精确度。说一个数是规格化的,就是指它是有效数的范围之内,而 且有一个非零开头位。对于一个非零的、基为2 的有效数来说,如果它是规格 化的,则它的开头非符号位的值一定为1 ,因此可以通过不存储这一位而使可 表示数的数目加倍。进而获得额外一位的精度。这个省去的位通常叫隐含位。 除非特别指明总是认为所有算术操作的被作数以及操作的结果都要求是规格 的。这就是说,对于每个非零的数,只有种允许的表示,简化了数的比较工作, 而且有利于保证硬件实现的一致性,便于误差分析而且能够减少一定的误差。 7 2 1 4 舍入方法 由于机器字长的限制,需要对某些运算结果进行舍入,因此往往带来表示 误差。在有限的机器字长下,减小表示误差的问题实际上是如何选择舍入方法 的闯题。由于规格化之前含入可能会去掉应有的有效位,一般会带来更大的误 差,因此舍入通常在规格化之后完成【3 1 。 如果舍入方法有向一个方向舍入的倾向,则称它是偏倚的。如果舍入结果 小于实际值则该舍入方法是向下偏倚的;如果舍入后结果大于实际值则该舍入 方法是向上偏倚的。i e e e 标准要求任何舍入的结果与对无限位的中间结果舍入 后的值相同,因此,比较好的舍入方法应该当是无偏倚的,这就是人们常说的 无偏倚舍入,也叫做最近舍入或对称舍入。 保护位。计算两个浮点数差的一种方法就是首先计算出精确的值,然后根 据要求舍入到与之最接近的浮点数。但是,这种方法会消耗很多的资源。比如: 假设浮点数据的长度为3 ,要计算2 1 5 1 0 ”一1 2 5 1 0 1 计算过程如下: x = 2 1 5 1 0 1 2 y = o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 1 0 1 2 x y = 2 。1 4 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 7 5 l o ” 结果经过舍入后仍为2 1 5 i 0 “。如果不使用所有的位,浮点部件将数的 长度限制在固定的数据长度内。比如仍然按p 位计算,这时小数将右移,其中 的某些数据将被丢失。这样2 1 5 1 0 ”- i 2 5 1 0 “就简化成 x = 2 1 5 1 0 1 2 y = o 0 0 1 0 1 2 x y = 2 1 5 1 0 ” 这与采用精确计算,然后舍入,所得到的结果完全相同。我们看下一个例 子:1 0 卜9 9 3 。如果不采用精确计算,它的结果是: x = 1 o l 1 0 1 y = o 9 9 1 0 1 x - y = o 0 2 1 0 而实际结果是0 1 7 ,计算误差为0 0 3 ,而且没有一位小数字。这样的结果 是很糟糕的。所以,在这种情况下引入了保护位的概念。假设两个浮点数x 和 y ,指数的底数为b 有效数长度为p ,那么如果使用p + l 位计算( 最后一位保护 位) ,那么它的结果误差将小于2f ( 其中r = ,) 。 使用保护位计算1 0 卜9 9 3 ,计算结果为0 1 7 ,计算结果为精确结果。而 如果使用保护位计算1 0 卜9 9 9 3 ,结果为0 1 l ,与精确结果0 1 0 7 仅相差 0 0 0 3 ,而且有一位的有效数字。所以如果不使用保护位,两个绝对值接近的数 相减就会造成很大的相对误差,而使用保护位可以大大地减小相对误差。 8 2 2 误差的类型与来源 2 2 1 误差类型 误差在用计算机求解问的过程中是不可避免的。根据误差的来源,误差的 类型有以下几种: ( 1 ) 模型误差。由实际问题抽象出数学模型,要简化许多条件,这就不可 避免地要产生误差。实际问题的精确解与数学模型得到的解之间的误差,叫做 模型误差。 ( 2 ) 观测误差。数学模型中通常会包含一些观测数据,这些观测数据不会 绝对准确,这就会产生观测误差。如自由落体下落时,距离和时间的关系式: s ( f ) = :1g 2 , 其中g 是一千物理学数,通常取g z 9 8 1 m s 2 。它是由观测得到的近似值。 ( 3 ) 截断误差。由模型求得的准确解与用数值方法求得的解之间的误差称 搿曩于荔麓雾帮e o1 ”嚣j :黟髓扩嚣雾妻曩磊 i - o ;i o n ;l ,o “3t o ( 4 ) 舍入误差或表示误差。因计算机字长有限,原始数据在计算机上表示 会产生误差,这个误差称为舍入误差或表示误差。根据i e e e 浮点数据标准,由 于机器内部数据表示的长度有限,所以当数据格式固定后,它所能表示的实数 个数就是一个固定值。以双精度浮点数为例,双精度浮点数有6 4 位,那么它所 能表示的实数最多不超过2 “个。如果要与实数做一一影射,则不可避免的存在 一定的表示误差。同样,一个有限长度的十进制浮点数,如果要转化为二进制 浮点数,那么它们之间通常也不能做一一对应的转换。比如:千迸制数3 1 4 , 它的最低有效位为4 ;而二进制浮点数据相邻两个数之间的步长是2 1 ( p 为整 数) 。所以把二进制浮点数转化为十进制浮点数,它的最末位只能是0 或者5 。 因此,在有限的数据长度下,十进制浮点数和二进制浮点数之间只要十进制数 存在小数部分,那么必然存在某些十进制数在计算机中不能精确表示。 同样,用十进制数表示某些实数,如乃2 ,妄等,在只能取有限位( 如取小 数后四位) ,则 p l = 3 1 4 1 6 - 万= + 0 0 0 0 0 0 7 4 p 2 = 1 4 1 4 2 一压= - 0 0 0 0 0 1 3 见;o 3 3 3 3 一;:- 4 ) 0 0 0 0 3 3 j 这就是舍入误差。 2 2 2 浮点数据表示误差分析 下面我们通过几个结论说明如何估算数据表示误差。 结论l :规格化的浮点数,在同一种浮点数据类型中表示方法是唯一的; 9 即不会出现两个浮点数x ,x 。形式不同,但是x l = x :。 证明:设 而= 0 。一1 + 口。:。2 + - i - a i ,一,扮耵 善:= g :。- 1 + 口。- 2 + + 口:,卢一,扮2 岛 k l ,p 为有效数长度 若而= x 2 ( 2 1 ) ( 2 2 ) 一( 口:一1 + 口。4 + - i - a 2 ,一,扮妇 = “( 口。,一1 + 口。:- 2 + + 口。,一,一 g 2 1 一1 + b 呐一口2 2 。2 + 也一 一一a 2 e l - p + k t - ) ( 2 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论