(微电子学与固体电子学专业论文)快速浮点加法器的优化设计.pdf_第1页
(微电子学与固体电子学专业论文)快速浮点加法器的优化设计.pdf_第2页
(微电子学与固体电子学专业论文)快速浮点加法器的优化设计.pdf_第3页
(微电子学与固体电子学专业论文)快速浮点加法器的优化设计.pdf_第4页
(微电子学与固体电子学专业论文)快速浮点加法器的优化设计.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(微电子学与固体电子学专业论文)快速浮点加法器的优化设计.pdf.pdf 免费下载

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

文档简介

摘要 摘要 随着时代的发展,在多媒体领域和科学计算领域,当代处理器的一个重要特 征就是,在中央处理器( c p u ) 中将把浮点运算的部件作为核心运算部件直接集 成于其中。在信号处理以及图像处理以及语音识别等一些应用中,人们对高性能 浮点处理单元( f l o a t i n gp o i n tu n i t ,简称f p u ) 的需要就更加迫切了,总之就是 在越来越多的领域中,尤其是一些对于数字处理有着高速实时要求的领域,浮点 数的运算发挥出越来越重要的作用,因而浮点运算单元成为中央处理器设计中的 决定性能的关键部件之一。 根据o b e r m a n 的统计,浮点指令中使用最频繁的是浮点加法指令,浮点加法 运算占用了浮点运算的5 5 以上。浮点加法、减法、转换和传送都最终都可以转 换成为浮点加法运算完成,由于浮点加法的使用频率最高同时设计难度最大,所 以浮点加法器又成为浮点运算单元( f p u ) 中最为关键的部件,它的性能好坏将 直接影响f p u 的性能进而影响决定了c p u 的浮点运算能力。因此,设计高速的浮点 加法器更是重中之重。 本文的主要目的就是关于浮点加法器的优化设计,首先介绍了国内# f f p u 发 展历史和现状研究,并对浮点数处理器的应用进行了讨论,接着对于浮点数系统 以及i e e e 7 5 4 标准,以及i e e e 7 5 4 所定义的特殊值,异常和它的舍入模式做了相 应的介绍。从第三章开始,采用自项向下的设计方法,从传统的5 周期浮点加法 算法入手,对于其步骤分析进行改进,引入了t w o p a t h 算法。这样就构建了浮点 算法中的基本思路以及各个基本组件构成,第四章则分别对于浮点加法器中的各 个组件设计进行详细的分析以及优化,比如前导零的电路,错位并行电路设计思 想的引入,复合加法器的优化设计,以及桶形移位器的采用和舍入合并技术的引 进。经过上述的优化设计后,浮点加法器的加法运算从传统的5 周期变成了目前所 需要的3 周期,这极大地提高了加法器的速度。 设计完成后,对于其进行仿真验证,因为浮点加法器2 条路径分别是由若干 个小的功能模块组成,测试时按照自下而上、先小后大、逐级向上的思想进行仿 真测试。针对f a r 路径和c l o s e 路径执行数据的特点分别编写测试激励,在遍历测 试了各小部件且保证正确性后,再进一步验证各小部件间的逻辑连接正确性,在 m o d e l s i m 环境下对采用该方法的双精度浮点运算的前导零预测电路进行代码覆 盖率为1 0 0 的验证,结果表明该算法正确。同时对于其时延以及所占面积做了 进一步的分析。 最后对于本设计以及其中的研究重点做了总结,并且对于其中的不足和将要 进行的改进提出了展望。 摘要 关键词:f p u ;浮点加法器;i e e e 7 5 4 ;t w o p a t h 算法;错位并行;合并舍入; 前导零;复合加法器;桶形移位 i i a b s t r a c t a b s t r a c t w i t ht h ed e v e l o p m e n to fm u l t i m e d i aa n dt h ec o m p u t e rs c i e n c e ,f l o a t i n gp o i n t u n i ti n t e g r a t e di nt h ec e n t r a lp r o c e s s o ra st h ec o r ea r i t h m e t i cu n i tb e c o m e st h ec u r r e n t p r o c e s s o r se s s e n t i a lf e a t u r ed i r e c t l y t h e r ea r em a s s i v en e e d sf o rh i g h l ya n de f f e c t i v e f l o a t i n gp o i n tc a l c u l a t i o ni nt h e3 dv i d e op r o c e s s i n g ,t h es p e e c hr e c o g n i t i o n ,a sw e l l a st h ep r o j e c to p e r a t i o n a st h et i m ed e v e l o p e d ,i nm a n yd o m a i n s ,t h ef l o a t i n gn u m b e r o p e r a t i o ni sp l a y i n gm o r ea n dm o r ei m p o r t a n tr o l e e s p e c i a l l yi nt h eh i g hs p e e d r e a l t i m ed i g i t a lp r o c e s s i n ga s p e c t ,t h ep e o p l e s n e e d sf o rt h eh i g hp e r f o r m a n c eo f f l o a t i n gp o i n tu n i t ( w a sc a l l e df p u ) h a v eb e e nm o r eu r g e n t ,t h u st h ed e s i g no ff p u b e c a m eo n ek e yc o m p o n e n t si nc e n t r a lp r o c e s s o rd e s i g n t h ef l o a t i n gp o i n ta d d i t i v eo p e r a t i o ni st h eo n ew h i c hi su s e dm o s tf r e q u e n t l yi n a l lt h ef l o a t i n gp o i n ti n s t r u c t i o n a c c o r d i n gt ot h eo b e r m a ns t a t i s t i c s ,t h ef l o a t i n g p o i n ta d d i t i v eo p e r a t i o nh a st a k e na b o v ef l o a t i n gp o i n tc a l c u l a t i o n5 5 b e c a u s et h e f l o a t i n gp o i n ta d d i t i o n su s i n gf r e q u e n c yi s t h eh i g h e s ta n dt h ed e s i g ni st h em o s t d i f f i c u l t ,t h e r e f o r et h ed e s i g no ff l o a t i n gp o i n ta d d e rb e c o m e st ob eav e r ye s s e n t i a l p a r ti nt h em o d e r nm i c r o p r o c e s s o ra n dt h ed i g i t a ls i g n a lp r o c e s s o rm o s tg r e a t l y , i t s p e r f o r m a n c ei m m e d i a t ei n f l u e n c ec p uf l o a t i n gp o i n tc a l c u l a t i o na b i l i t y i n t h i sp a p e r ,w ep r e s e n tan e wd e s i g no fi e e ec o m p l i a n td o u b l ep r e c i s i o n f l o a t i n gp o i n ta d d e rb yu s i n gv a r i o u so p t i m i z a t i o nt e c h n i q u e s ,s u c ha st w od a t ap a t h s e p a r a t i o n ,t h r e ep i p e l i n es t a g e s ,f a s t e s t5 3 b i tc l aa d d e r ,an e wl z al o g i cf o r h i g h s p e e df l o a t i n g p o i n ta d d e r ,u s i n gb a r r e ls h i f t e r ,a n ds i m p l i f yt h er o u n d i n g a l lo fa b o v em e a s u r e sc o u l de f f e c t i v e l yi n c r e a s et h es p e e do ff l o a t i n g p o i n t a d d e ru n i t ,t h e nw eu s ee d at o o l st o d ov e r i f i c a t i o na n ds y n t h e t i z i t i o n t h e v e r i f i c a t i o ni sf r o md o w nt ot o p ,f r o ms m a l lt ob i g ,a n df r o me a s yt oc o m p l e x f o rt h e p u r p o s et of i n dw h e t h e rt h ed e s i g ni sr i g h to rn o t a f t e rv e r i f i c a t i o n ,t h ea d d e rc o u l d a c h i e v eh i g hp e r f o r m a n c eu pt o3 5 0 m h z ,a n dc o u l ds a v e2 3 l o g i cg a t e sc o m p a r et o t r a d i t i o n a la l g o r i t h m i nt h ee n do ft h i sp a p e r , w em a k eas u m m a r yo ft h ed e s i g n i n c l u d i n g i n s u f f i c i e n c ya n dp r o p o s et h ef o r e c a s ti m p r o v e m e n t i i i a b s 仃a c t k e yw o r d s :f p u ,f l o a t i n g p o i n ta d d e r ,i e e e 7 5 4 ,t w o p a t ha l g o r i t h m ,r o u n d i n g , p a r a l l e la n t i c i p a t i o n ,l e a d i n g - z e r oa n t i c i p a t o r yc i r c u i t ,t o m a d d e r , b a r r e ls h i f t e r i v 中国科学技术大学学位论文相关声明 本人声明所呈交的学位论文,是本人在导师指导下进行研究工作 所取得的成果。除已特别加以标注和致谢的地方外,论文中不包含任 何他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究 所做的贡献均已在论文中作了明确的说明。 本人授权中国科学技术大学拥有学位论文的部分使用权,即:学 校有权按有关规定向国家有关部门或机构送交论文的复印件和电子 版,允许论文被查阅和借阅,可以将学位论文编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 保密的学位论文在解密后也遵守此规定。 作者签名:国南 砷年如 叫。3 1 第一章绪论 1 1 课题的目的及意义 第一章绪论 现如今,国家与国家之间的高科技竞争越来越激烈,国家综合实力得以得到 体现的一个重要方面就是高性能计算技术的应用。它的作用主要发挥在3 方面: 促进科技进步、推动经济发展、保障国家安全。但是在现阶段,我们国家高性能 计算机依旧还是依赖着国外的高性能微处理器芯片,自主创新研发跟国际高性能 处理器芯片的局面仍没有改变,6 4 位体系的c p u 的研发仍然与国际领先水平有着 很大差距,因此关于c p u 相关器件的设计是很重要的一项研究。 微处理器中的数据通常用二进制的0 和1 来表示,分为两种类型:定点和浮点。 定点数的小数点位置是固定在定长数的某个位置上的,浮点数的格式与科学表示 法是相同的。定点表示存在着利与弊,优点就是定点运算的部件比较容易就能设 计,主要弊端就是定点数在表示范围和精度上的限制性,而浮点数则可以表示较 大的表示精度和较大的动态表示范围。如果数字计算对于精度有比较高的要求, 则显然浮点数比定点数要有优势。 浮点数的应用只会随着时代的发展而越来越广,因为我们生活对于信息的细 致度要求越来越高,精度要求越来越高,比如要求更为详细准确的天气预报,航 天航海军事上对于距离计算要求的越来越苛刻,图像处理以及语音识别要求越来 越清晰,逼真,这些与快速有效的浮点数操作是密不可分的,并且随着数字信号 处理和图像处理需求的增长,其应用也越来越广。 但是具体怎么来设计浮点运算单元却比定点运算单元要的设计复杂得多。因 此,早期的计算机c p u 中许多都不配备专门的浮点运算单元,取而代之,浮点运 算是通过一定的软件采用定点运算单元来完成的。但这种做法可以在硬件上简单 化c p u 的设计,但却浮点运算的速度受到限制,不能使之快速地完成,而使浮点 运算速度仍然成为制约c p u 性能的一个因素。 以前因为工艺的限制,浮点运算单元从硬件上实现确实比较复杂。但是,我 们知道,现在,工艺的特征尺寸越来越小,s o c ( s y s t e mo nc h i p ) 得以实现,从 硬件上设计一个独立的浮点运算单元( f p u ) 是一件完全可行的事情,所以现代 c p u 能使用独立的硬件来实现浮点运算单元f p u ( f l o a ti n gp o i n tu n i t ) 。 高速的浮点运算单元设计包含浮点加法器、浮点乘法器、浮点除法器和浮点 开方四部分的设计。根据o b e r m a n 的技术报告( s f o b e r m a n ,1 9 9 6 ) 可知,主要浮 点运算使用频率如表1 1 所示。 第一章绪论 表1 1 浮点运算使用频率 运算单元浮点运算使用频度 浮点加法器浮点加法,减 法,转换,传 5 5 送 浮点乘法器浮点乘法 3 7 浮点除法器浮点除法 3 其它 5 在一般的处理器中,浮点加法、减法、转换和传送最终都是可以转换为采用 浮点加法器实现,所以浮点加法器的使用频率高达5 5 ,是使用频率最高的浮点 运算模块。 浮点加法的2 个特点,一是它最复杂,而是它被使用的频率在所有操作里面 又是最高的,所以它是现代微处理器和数字信号处理器中的非常关键的部分,它 的性能好坏将直接影响c p u 的浮点运算速度。因此,设计高速的浮点加法器对f p u 的整体性能至关重要。 1 2 浮点处理器f p o 的应用 浮点处理器f p u 的应用领域十分广泛,涉及军事、航天、科学研究、金融、 大型应用软件、信号处理以及图像处理等。 f p u 的应用背景 ( 1 ) p d a 和图像手机、语音压缩解压缩、用户接1 3 、j a v a 加速器和j i t ( j u s t i n t i m e ) 编译。 ( 2 ) 3 d 图像、音频、3 维图形游戏。 ( 3 ) f f t & f i r 过滤、成像、数码相机、d v 。 ( 4 ) 高真彩色打印机、多功能彩色复合机。 ( 5 ) 数字影音机顶盒、3 d 用户接1 3 。 ( 6 ) a b s 、引擎管理、机械传动、牵引控制、灵活性背负系统等汽车电子应 用。 ( 7 ) - r 业控制系统。 第一章绪论 使用f p u 使性能得到提高包括如下等方面: ( i ) f p u 可以在浮点算数方面提高汽车的性能,包括在机械传动和车体控制 应用,汽车中的机械传动,a b s 系统,牵引控制,灵活性背负系统等关键应用 方面。精确性和可预测性是它们的基本要求。 ( 2 ) 图像应用如比例缩放,印刷中的字形产生,3 d 转换,f f t ,图形过滤等。 ( 3 ) 下一代消费产品如网络应用产品、机顶盒和网关可以直接受益于f p u 。 ( 4 ) 许多的应用会得益于浮点运算的动态范围和精确度,越来越多的嵌入式 产品将使用f p u 。 ( 5 ) 在s o c 设计中应用f p u 可以达到更快的速度和更稳定的性能。 ( 6 ) 许多工业和汽车领域的中的实时控制应用会得益于浮点运算的动态范围 和精确度。 1 3 国内外f p u 发展史以及研究现状研究 从1 9 7 1 年i n t e l 推出第一片4 位微处理器到现在主流的6 4 位处理器,微处理器 的发展已经经历了3 8 年。 在这3 8 个年头里,处理器无论从结构上还是性能上,还是规模上都有很大的 改变。 1 结构方面由以前分离的处理器( 主要进行定点运算) 和协处理器( 主要 指f p u ) 到现在合二为一。 2 在性能方面,c p u 的速度由以前的只有几十m h z 2 f l 速到如今的几百m h z 甚至于几g h z 。 3 规模方面更甚,一个芯片上集成的晶体管数目,由几十万个到现在的 上亿个,同时工艺特征尺寸也从几微米发展到现在的深亚微米。著名 的“摩尔定律”就揭示了处理器的每一次变革。 浮点处理器( f p u ) 的发展紧跟c p u 的发展,同样迅猛非常,在速度、性能、稳 定、精度多个方面都有了非常大的提高。 下面着重介绍与浮点处理单元相关的发展历程: 1 9 8 0 年,i n t e l 公司成功实现t 8 0 8 7 芯片的高速高效的浮点运算部件,8 0 8 7 确立了浮点协处理器8 0 位的数据精度,定义了一个非常强大的浮点运算内核,但 第一章绪论 它并没有, 跟i e e e 一7 5 4 标准兼容。 1 9 8 6 年,i n t e l 公司推出8 0 3 8 6 的协处理器8 0 3 8 7 ,总线接口扩大为3 2 位,且 与i e e e - 7 5 4 标准兼容。 1 9 8 9 年,i n t e l 公司推出了8 0 4 8 6 d x 。8 0 4 8 6 d x 将8 0 3 8 6 ,8 0 3 8 7 以及一个8 k b 的高速缓存集成在一个芯片上并首次采用r i s c 技术。在4 8 6 d x 中集成有f p u ,c p u 部分与f p u 部分是通过内部数据总线直接连接,使f p u 的性能显著提高。 1 9 9 3 年3 月i n t e l 推出了第五代c p u - p e n t i u m ,采用了多个流水线的超标量执 行技术,浮点单元采用流水线实现。 2 0 0 1 年,i n t e l 推出了奔腾4 处理器,它可以在一个时钟周期内完成浮点数的 移动、存储、交换、浮点加法、浮点乘法或除法。 当浮点运算一经提出,国内外关于如何对其进行优化以达到提高速度减小功 耗以及面积的各个课题层出不穷。因为现在的工艺水平已达到深亚微米技术,不 再把面积作为主要考察处理器性能的全部考虑指标,浮点处理单元f p u 的设计技 术一般采用流水线技术为获得运算的高效实现设计出专门的乘法器即将实现加 减运算的加法单元与实现乘除运算等的乘法器阵列分离这虽然增加了面积却大 大提高了速度如m o t o r o l a 6 8 0 4 0 ,i b mr i s cs y s t e m1 6 0 0 0 中的f p u 等。 国内从事浮点研究的不多,还没有形成完整的理论体系和设计方案,许多关 键的浮点部件的设计还不够完善。目前,在这方面开展工作较多的有西安交大和 航天7 7 1 所,2 0 0 4 年1 1 月西安交大宣布与航天7 7 1 所联合研发的“3 2 位高性能浮点 r i s c 微处理器”研制成功。但在绝对性能上距离国际一流标准尚有不小差距,需 要进一步研究和改进。 关于f p u 中浮点加法器的设计,更是浮点处理单元设计中的重中之中,国内 外在浮点加法器改进的这个工作中,都做了非常多的研究, 浮点加法的基本算法由7 个操作步骤组成,由于所有步骤串行执行,其中包 含了两个全长的移位和二个全长的有效位加法。因此,基本算法的延时很大,不 适合高速流水线结构的实现。1 9 8 1 年,f a r m w a l d 在他的博士论文中提出使用 t w o - p a t h 算法的基本思想,基于浮点加减计算的特性使得浮点加法的运算步骤 得以并行执行。他的想法揭开了学术界对浮点加法t w o - p a t h 算法研究的序幕,之 后业界的处理器设计也大多采用他的思想设计浮点加法器的结构。1 9 9 1 年,q u a c h 和f l y n n 在一份技术报告中提出合并舍入的t w o - p a t h 算法,使用混合加法器计算 第一章绪论 出舍入的所有可能结果,将四个周期的浮点加法器结构变为三周器内完成。1 9 9 6 年,0 b e r m a n 根据浮点加法器各流水线延时的不均衡,以及不同类型的浮点数据 所需要的运算步骤不同,提出了可变周期的t w o - p a t h 算法,但是由于其结构的不 确定性、流水线冲突和碰撞不可避免,因此,至今未被商业处理器采用。 之后的文献报道集中在对前导l 预测模块和舍入策略的改进上,通过并行计 算的方法提升速度。文献( n t q u a c ha n dm j f l y n n ,1 9 9 1 ) 最先提出前导1 预 测的基本方案,通过输入数据预编码判断前导1 的位置。文献( h s u z u k i ,1 9 9 6 ) 提出基于进位检查的前导1 预测单元,通过对加法器进位的计算得出前导1 位置是 否需要进行l 位的纠错,省略了补偿移位这一模块,但是由于进位选择模块的增 加使得路径延时并没有很大的减少。讨论浮点运算舍入方案的文献也很多。q u a c h , f l y n n 等人在文献中提出的算法是将舍入合并到加法器中实现,y u 和z y n e 在设计 浮点乘法器中提出的基于舍入查找表的舍入算法e v e n 和s e i d l e 提出基于增加 i n j 变量将舍入方式合并为一种,大大降低了舍入算法的逻辑延时。 目前还有一种三通路的结构,该结构是针对两操作数的指数差异很大时的情 况应运而生,它可以在指数差异超过尾数有效位宽度时完全绕过尾数相加电路直 接将较大操作数作为运算结果使运算速度大幅提高,然而我们也可以看到其电路 复杂度相当可观电路面积较之双路径通路结构增加了将近3 0 在实际应用中的 可行性较低。( 高海霞,杨银堂,2 0 0 2 ) 。 1 4 研究重点及创新之处 这里将设计中的研究重点以及一些创新点归结为以下几点: ( 1 ) 从传统浮点加法器的5 周期入手,采用广泛使用的t w o p a t h 算法,将其分 为2 个路径,f a r 路径以及c l o s e 路径,从而将周期减小。 ( 2 ) 采用并行错位的指数比较与尾数移位,大大提高速度,同时指数比较时 候,对于减法运算进行分析,使我们最终只得到有用的绝对值数值并且判断2 个 操作数的大小,方便后面的运算。 ( 3 ) 在尾数有效位加法器上,着重介绍了超前进位加法器与选择进位加法器 这2 种加法器,结合两者的优点,设计混合的运算单元,同时计算出a + b 以及 第一章绪论 a + b + i 的结果。 ( 4 ) 采用了一种适用于高速浮点加法器的前导零预测电路,它是基于并行预 测算法的,在c l o s e 路径中,我们尽量是采用大数减去小数,判断依据是通过对 操作数的指数来判断大小,但是当2 个指数相同的时候,尾数相减的结果是正是 负却不得而知,相减出来的绝对值在首个有效位1 之前可能有很多个0 ,这不符合 i e e e 7 5 4 的表示标准,我们需要统计出0 的个数,并将最终结果左移。但是如果采 用了前导零预测电路的话,就能在进行加减法同时预测出最终结果的前导零数, 而本文中采用的前导零预测电路是无论最终结果是正是负,都可以预测。并行预 测可以跟加法器共用部分逻辑电路,从而可以达到2 个目的,提高速度,减少面 积。 ( 5 ) 舍入合并技术,舍入操作对加法结果进行+ 0 或+ 1 操作。可以预先计算出 尾数加法所有的可能结果,再根据具体舍入情况选择正确结果。 1 5 本论文的结构安排 本论文总共由六个章节组成。 第1 章绪论里,阐述了课题的目的以及意义,以及浮点处理器f p u 的应用, 同时对于国内外f p u 的发展史以及研究现状做了一部分调研,着重强调了浮点 加法器在f p u 设计中的重要性,最后对于论文的结构做了一定的安排。 第2 章浮点数系统中,主要介绍了浮点数系统以及i e e e 7 5 4 标准,以及 i e e e 7 5 4 所定义的特殊值,异常和它的舍入模式。 第3 章中则对于浮点加法算法做了介绍,以及对于其步骤分析所进行改进, 同时引入了t w o p a t h 算法。 第4 章中针对浮点加法算法中的各个具体部件做了详细具体的介绍,分析了 其跟以往部件的优势以及它所带来的创新之处。 第5 章中针对设计采用e d a 工具进行了仿真验证,从而分析了其的可行性 以及跟传统算法相比较的优势。 第6 章则针对设计中的不足以及将来还需要进行改进的地方做了阐述。 6 第二章浮点数系统 第二章浮点数系统 本章主要介绍浮点数系统和i e e e 7 5 4 标准,以及该系统中主要运算单元的 实现。 在计算机中通常有两种方式来表示数字,定点和浮点。定点数的小数点位置 是固定在定长数的某个位置上的。浮点数的格式与科学表示法是相同的,在用浮 点来表示一个数时,要用两个部分,基数和指数。例如,1 2 3 4 5 6 能够被表示成 1 2 3 4 5 6 1 0 2 。在十六进制下,数1 2 3 a b c 将被表示成1 2 3 a b c 1 6 2 。 定点数有一个固定的表示域,这样就限制了用它来表示非常大和非常小的 数。另外在用定点数进行两个大数除法时会严重丢失精度。而浮点数的表示域是 可伸缩的,它既能保证数的大小,又能保证数的精度。它的表达范围从 1 , 0 0 0 ,0 0 0 ,0 0 0 ,0 0 0 到0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 。 i e e e 二进制浮点数算术标准( i e e e 一7 5 4 ) 是最广泛使用的浮点数运算 标准,为许多c p u 与浮点运算器所采用。这个标准定义了表示浮点数的格 式( 包括负零- 0 ) 与反常值( d e n o r m a ln u m b e r ) ) ,一些特殊数值( 无穷与 非数值( n a n ) ) ,以及这些数值的“浮点数运算子”;它也指明了四种数值 修约规则和五种例外状况( 包括例外发生的时机与处理方式) 。 2 1i e e e 7 5 4 标准简介 i e e e 7 5 4 标准是当今计算机上最为通用的浮点数标准( i e e es t a n d a r df o r b i n a r yf l o a t i n gp o i n ta r i t h m e f i c a n s i i e e e 7 5 4 19 8 5 ) 。i e e e 7 5 4 浮点数标准包 括如下的主要内容: ( 1 ) 基本的和扩展后的浮点数格式。 ( 2 ) 加、减、乘、除、开方、求余和对比操作。 ( 3 ) 在整数和浮点数格式间转换。 ( 4 ) 在不同的浮点数格式间转换。 ( 5 ) 在基本的浮点数格式和十进制数的转换。 ( 6 ) 浮点异常和它们的处理方式。 i e e e 浮点数由三个部分组成:符号、指数和尾数。尾数由小数部分和隐 含位构成。下面的表格显示出了3 2 位单精度和6 4 位双精度浮点数的布局,其 中符号位( s i g n ) :0 代表正数,l 代表负数。 7 第二章浮点数系统 表2 13 2 位单精度和6 4 位双精度浮点数的布局 s i g ne x p o n e n t f r a c t i o nb i a s s i n g hp r e c i s i o n1 【3 1 】8 【3 0 2 3 2 3 【2 2 0 0 】 1 2 7 d o u b l ep r e c i s i o n 1 【6 3 】1 1 【6 2 - 5 2 】 5 2 【5 1 - 0 0 】 1 0 2 3 指数( e x p o n e n t ) :指数部分既要能够代表正指数,又要能够代表负指数。 为了做到这一点,指数部分实际存储的是真实的指数加上一个偏移量。对于 i e e e 单精度浮点数,这个值是1 2 7 。因此,指数为0 意味着指数部分的值将是 1 2 7 。如果指数部分的值是2 0 0 ,则意味着实际的指数值应该为2 0 0 1 2 7 = 7 3 。 另外,指数值1 2 7 和+ 1 2 8 是被保留作为特殊数来使用的。对于双精度浮点数, 指数部分共占据1 1 位,偏移量为1 0 2 3 。 尾数( m a n t i s s a ) :尾数部分代表着浮点数的精确度,它包含着一个隐含位和 小数部分。为了说明隐含位的值,考虑任何一个数用科学记数法有很多种表示 方法。例如,5 可以被表示成下面几种形式: 5 0 0 x1 0 00 0 5 1 0 25 0 0 0x1 0 。3 为了最大化可表示数的数量,浮点数通常是以a r m 的形式出现的。这要 求将小数点放在第一个非0 数的后面。在这种规则下,5 将会被表示成 5 0 x1 0 0 。这样,一个小小的优化就能够被用在二进制数上,因为第一个非0 的数字只能为l 。这样我们就可以假设领头的数字为l ,从而不需要将其显式 表示出来。在这个条件下,尾数就能够以2 3 个比特位来表示2 4 个比特的信息。 浮点数的表示范围:正浮点数能被分成a r m 的数和非a r m 的数。具体 数值范围如表2 2 所示。 表2 2 单精度和双精度浮点数的表示范围 d e n o r m a l i z e dn o r m a l i z e d a p p r o s t a t ed e c i m a l s i n g hp r e c i s i o n 士z 1 暂t o ( 1 - 2 2 3 ) x z l 箱 士2 l 拍t o ( 2 2 2 妨c 2 1 2 7 士。1 俨笳t o - 1 0 3 9 d o u b hp r e d s i o n士2 i 叮4t o ( 1 - 2 5 2 ) 垃1 0 2 2 士2 - 1 0 篮t o ( 2 2 j 2 愆1 0 2 3 士。1 0 - 3 2 3 at o 1 0 - 强3 有五个数值范围是单精度浮点数所不能表示的。 ( 1 ) 小于( 2 2 。2 3 ) x2 1 2 7 的负数。 ( 2 ) 大于2 州9 的负数。 ( 3 ) o 。 ( 4 ) 小于2 1 4 9 的正数。 ( 5 ) 大于( 2 - 2 2 3 ) x2 1 2 7 的正数。 2 2 i e e e 7 5 4 中的特殊值 i e e e 7 5 4 列举了部分特 1 ) 0 保留 殊值) 了指数部分全为0 和全为1 的数来表示一些特殊值( 表2 3 ,下面是详细介绍。 0 是无法用浮点形式直接表达出来的,因为尾数部分隐含了一位1 。0 值 是用指数部分全0 ,尾数部分全o 来表示的。注意+ 0 和一o 是有区别的,虽 然它们的值相同,主要因为符号位的不同,一个为l ,一个为0 。 2 ) 低于正常数 当指数部分全为0 ,而尾数部分不全为0 ,则该数为一个非规格化数。它 不含有隐含位1 。这样非a r m 的数的表达式为( - 1 ) sx0 fx2 - 1 2 6 。这里的s 是符号位,f 是尾数部分。你可以将0 的特殊表达方式作为非规格化数的一个 特例。 3 ) 无穷大数 当指数部分全为1 而尾数部分全为0 时,该浮点数表示无穷大。由于符号 位任意,因此有正无穷大和负无穷大。 4 ) n o tan u m b e r n a n 用来代表一个非真实的数字。当浮点数的指数部分全为1 ,而尾数部 分不全为0 时,该浮点数代表了一个n a n ( n o tan u m b e r ) 。 非数又分为告警非数( s n a n ) 和静态非数( q n a n ) 。告警非数尾数首位为 o ,静态非数首位为l 。浮点处理对两者区别对待。 表2 3i e e e 定义的特殊数值 o0 0 0 0 0 0 0 00 0 0 0 函o 0 0 0 0 0 0 0 0 0 0 0 0 0 c 0 7 0 f s i t i v ez e r o ) 一0 10 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c 1 0 0 0 0 f n e 3 a t t v pz - ? t o ) 一二一一,:u t 。i 一 工0 0 0 0 0 0 0 0:0 0 0 0 0 0 c 0 0 0 0 0 0 t ) o o o o o c 0 0 一:l - gx0 5 ,:i “x o 1 :。) 0 0 0 0 0 0 0 0 00 0 0 0 c o o o o 0 0 0 0 0 0 0 0 0 c l 一) c o l o j a 工l e ocv a l u e ) ;:一x 二c = 、) - o 0 0 0 0 0 0 0 l0 二0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 二v 1 5 2 1 x o - o1 0 0 0 0 0 0 lo o o o o o o c o o o o o o o o o o 0 0 0 0 0 矗 i n f i n l c y 01 1 1 1 1 1 1 o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 t 1 1 ,1 1 1 0 0 0c i o o o c o o 0 0 0 0 0 0 3 0 0 0 0 0 0 一i n f i n i t y n e ta ! u r m rf n a k ) 0 1 1 l l l i o u o o o o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 n 。) tan u m b e ri k a n ) 上 ! l ! i l t i ! 0 0 0 0 i 0 0 0 二0 0 0 0 0 0 0 0 0 i 二0 0 9 第二章浮点数系统 2 3i e e e 7 5 4 中的异常 i e e e - 7 5 4 标准定义了五种异常,分别是:无效操作异常、被零除异常、 非精确异常、下溢异常、上溢异常。 无效操作异常 有一些操作在计算中是无效的,例如负数开方。下面给出了一些无效操作 的例子: a 任何对n a n 的操作 b 加或减:0 0 + ( - c o ) c 乘:0 + o o d 除:0 0 或o o o o e 开方:开方数小于0 被零除异常 0 是不能作为除数的,一个非零数除以0 就是被零除异常。 非精确异常 当计算的结果由于受到指数或精度范围限制时,将给出非精确异常。 下溢异常 当极微小的数被发现以及损失了精度时,都会发生下溢异常。当计算结果 被位于2 - 内,在舍入前后极微小的数会被发现;当计算结果非精确或非规 格化时会损失精度。当v f p l l 的计算结果在舍入后发现了极微小的数,与此同 时计算结果也是非精确的,这时下溢异常将会发生。 上溢异常 上溢异常将会在计算结果超过了浮点数所能表达的最大指数范围时发生。 如果仅有一个操作数是无穷大,上溢异常是不会发生的,因为无穷大是精确的。 被零除也不会触发这个异常。 2 4i e e e 7 5 4 中的舍入模式 i e e e 7 5 4 定义了四种舍入模式:舍入到最近的数、舍入到零、向上舍入、 向下舍入。 ( 1 ) 舍入到最近的数:这是标准的默认舍入方式。即向上或向下舍入到最近 的精确的整数。例如表2 4 所示: i o 第二章浮点数系统 表2 4 舍入到最近的数几个例子 u n r o u n d e dr o u n d e d 3 43 5 6 , 3 54 2 5 ( 2 ) 舍入到零:这种模式下,就是直接截掉尾数部分。不产生进位。例如: 3 4 7 将会被截成3 4 。 ( 3 ) 向上舍入:结果将会朝+ o o 方向舍入,例如:3 2 将舍入到4 ,- 3 2 舍入 n - 3 。 ( 4 ) 向下舍入:结果朝一0 0 方向舍入。例如:3 2 将舍入n 3 ,- 3 2 舍入n - 4 2 。5 i e e e 7 5 4 标准有关浮点误差的规定 i e e e 7 5 4 标准规定了浮点数的数据格式,浮点格式是一种数据结构,用于 指定包含浮点数的字段、这些字段的布局及其算法解释。浮点存储格式指定如何 将浮点格式存储在内存中。 在这里不再准备详细说明i e e e 7 5 4 标准的基本的相关约束,而要提到下面 的一些情况: ( 1 ) i e e e 标准要求在1 0 舢和1 0 + 4 4 数量级范围内的典型数字进行正确地舍 入,但允许对更大的指数进行略有误差的舍入。 ( 2 ) 一种测量其大小的简便方法称为最后一位中的单位( 简写为u l p ) 。在标 准表示中,浮点数尾数的最低有效位就是其最后一位。该位表示的值( 例如,其 表示除此位外均相同的两个数的绝对差值) 就是该数的最后一位的单位。如果计 算结果是通过将真实结果舍入到最接近的可表示数得出的,则无疑舍入误差不会 大于计算结果最后一位中的单位的一半。换句话说,在舍入模式为舍入到最接近 值的i e e e 算法中,计算结果的舍入值为: o i 舍入值l 1 zu l p 浮点数的u l p 取决于表示该数的精度。 表2 5 列出四种不同精度的u l p 。 第二章浮点数系统 表2 5 四种不同精度的u l p 精度 值 单袖度 舣精度 砹铺,堑拶展( x 8 6 ) 网倍懿度( s v a r c ) u l p o ) = 2 “- 2 3 、1 1 9 2 0 9 3 e - 0 7 u x p o ) = 2 “5 2 2 2 2 0 4 4 6 e 1 6 u l p o ) = 2 6 3 1 0 8 4 2 0 2 e 1 9 u l p ( 1 ) ;2 “- 1 1 2 1 9 2 5 9 3 0 e 3 4 ( 3 ) i e e e 标准要求精确舍入加、减、乘、除的结果。也就是说,必须先精确 计算结果,然后舍入为最接近的浮点数( 或者舍入为偶数) 。当两个浮点数的指 数有很大差异时,精确计算这两个浮点数的差或和的开销会非常大。我们引入保 护位,它提供了一种在保证相对误差很小的同时计算差值的实用方法。 ( 4 ) 在标准中提到的所有运算都需要精确舍入,但十进制和二进制之间的转 换除外。原因是精确舍入所有运算的高效算法是已知的( 转换除外) 。对于转换, 已知的最好的有效算法所产生的结果比精确舍入的结果稍差。 ( 5 ) 许多问题( 如数值积分和微分方程的数值解) 涉及计算多个项的和。因 为每个加法运算都有可能引入大至0 5u l p 的误差,所以产生数千项的求和会具 有相当大的舍入误差。纠正这一点的简单方法是将部分被加数存储在双精度变量 中,并使用双精度执行每个加法运算。 ( 6 ) i e e e 标准并不保证同一程序在所有符合该标准的系统上都将提供完全 相同的结果。实际上,由于种种原因,大多数程序都会在不同的系统上产生不同 的结果。其中一个原因是,大多数程序都涉及十进制格式和二进制格式之间的数 字转换,而i e e e 标准没有完全指定执行这样的转换必须使用的准确度。i e e e 标 准要求将每个结果都正确舍入到将放置它的目标的精度,但是标准不要求由用户 程序确定该目标精度。因此,不同的系统可能将其结果提供给不同精度的目标, 使同一程序产生不同的结果( 有时差异很大) ,即使那些系统都符合标准亦 是如此。 ( 7 ) 一些单精度双精度系统提供单个指令将两个数相乘并与第三个数相加, 只进行一次最终舍入。此运算称为合并的乘加,会导致同一程序在不同的单精 度双精度系统上产生不同的结果;与扩展精度一样,它甚至会导致同一程序在 同一系统上产生不同的结果,这取决于是否使用它和何时使用它。在v f p 中没 有这种情况。 ( 8 ) 当内存中的数据按双精度存储( 单精度往往也用双精度的数制进行存储) 时,通常认为计算机厄普西隆是该精度中的最大相对舍入误差,因为( 正确或错 误地) 假定在输入数据被输入时已经过舍入,在存储结果时将对其进行类似舍入。 第二章浮点数系统 这样,尽管按扩展精度计算一些中间结果可能产生更精确的结果,但是扩展精度 不是必需的。在这种情况下,我们可能更希望仅当扩展精度不会明显减慢程序速 度时编译器才使用扩展精度,否则使用双精度。 ( 9 ) 不要使用更宽的精度:按单精度双精度格式的精度正确舍入结果( 尽管 可能使用扩展的范围) 。为了使最容易编写的程序依赖正确舍入的双精度运算, 包括上述的一些实例,语言必须提供一种方法,供程序员用来指示不得使用扩展

温馨提示

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

评论

0/150

提交评论