(电子科学与技术专业论文)高性能cpu中浮点加法器的设计与实现.pdf_第1页
(电子科学与技术专业论文)高性能cpu中浮点加法器的设计与实现.pdf_第2页
(电子科学与技术专业论文)高性能cpu中浮点加法器的设计与实现.pdf_第3页
(电子科学与技术专业论文)高性能cpu中浮点加法器的设计与实现.pdf_第4页
(电子科学与技术专业论文)高性能cpu中浮点加法器的设计与实现.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(电子科学与技术专业论文)高性能cpu中浮点加法器的设计与实现.pdf.pdf 免费下载

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

文档简介

a b s t r a c t a b s t r a c t t h eg l o w i n gd e m a n do fc o m p u t a t i o n a lp r e c i s i o nh a sr e s u l t e di nt h er e s e a r c ho f f l o a t i n gp o i n tu n i t si nm o d e mc p ud e s i g n t h ef l o a t i n g p o i n ta d d e ri so n eo ft h e f u n d a m e n t a lu n i t so ft o d a y sc p u b e c a u s ei t so p e r a t i o ni s f r e q u e n ta n di t s o p e r a t i n gp r o c e s si sc o m p l e x ,i t sp e r f o r m a n c eh a sap r o f o u n di m p a c to nt h eo v e r a l l p e r f o r m a n c eo fc p ua n dah i g hp e r f o r m a n c ef l o a t i n g - p o i n ta d d e ru n i ti sc r i t i c a l t h i sp a p e rd e s c r i b e sad o u b l ep r e c i s i o nf l o a t i n g p o i n ta d d e r t h i sp a p e ro p t i m i z e st h ea r c h i t e c t u r ea n dt h ec i r c u i t s i tb e g i n sw i t ht h eb a s i c p r i n c i p l e o f f l o a t i n g - p o i n t a d d i t i o n a f t e ra n a l y z i n gs e v e r a l a l g o r i t h m s ,t h e a r c h i t e c t u r eo ft h ef l o a t i n g - p o i n ta d d e ri sg i v e n t h ea r c h i t e c t u r ei sb a s e do nt h e i m p r o v e dt w o p a t ha l g o r i t h m t h er t lm o d e li ss e tu pa n dt e s t e d p i p e l i n e t e c h n o l o g yi si n t r o d u c e dt od i v i d et h ea d d i t i o np r o c e s si n t ot h r e es t a g e st oa c h i e v e h i g h e rf r e q u e n c y t h i sp a p e ri se m p h a s i z e do nc o m p o u n da d d e r , l o pa n dr o u n d i n g t h ec i r c u i t so ft h ec o m p o u n da d d e ra n dl o pa r ed e s i g n e d t h ee m p h a s i so ft h e d e s i g ni st od e c r e a s et h ek e yp a t hd e l a ya n dc o n t r o lt h ec i r c u i ts c a l e o p t i m a ld e s i g n i n c l u d e s :t h ee x p o n e n tc o m p a r ea n de x c h a n g ei si np a r a l l e l ,l o pa n do p e r a t i o no f t h es i g n i f i c a n c eb i ta d d i t i o ni si np a r a l l e l ,u s i n gt h em i xa l g o r i t h mo fs q u a r er o o t s e l e c ta d d i t i o na n dc a r r y l o o k a h e a da d d i t i o nt o d e s i g nt h ec o m p o u n da d d e rt o d e c r e a s et h ed e l a y t e s ta n ds i m u l a t i o nh a v ep r o v e dt h a tt h ed e s i g nh a sr e a c h e dt h e d e s i g nd e s i r e k e yw o r d s :f l o a t i n g - p o i n ta d d e lc o m p o u n da d d e ll o p , r o u n d i n g i i 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:王颍 o 多年弓月j 口日 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名:学位论文作者签名: 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 签名:王颗 上0 0 5 年,月f 口日 第1 章引言 1 1 概述 第1 章引言 人类社会的发展已经进入了信息时代,各种信息技术构成了信息时代的基 础,目前,与信息相关的计算机、微电子及通讯技术已经成为推动社会进步和 国家发展的关键技术,而微电子技术又是信息技术的基础,因此集成电路产业 已经成为整个电子信息产业的命脉。 到目前为止我国已经成为世界电子信息产品的主要生产国,对集成电路需 求的增长是非常惊人的,而我们国内在这方面的供应能力显示出明显的不足。 发展中国的集成电路,成了中国政府产业政策的主导方向。2 0 0 0 年6 月,国务 院下发了鼓励软件产业和集成电路产业发展的若干政策,引导、鼓励资金、 技术和人才等资源投向集成电路产业。 微处理器的设计是芯片设计的核心,研制出具有自主产权的c p u 将促进我 国芯片设计水平的提高,同时发展具有自主知识产权的“中国芯”关系到国家 的安全,具有重要的战略意义。尽快研究出我国自己的c p u 和计算机能带动其 他科学技术的发展,有利于推动和促进整个国民经济持续、快速、健康的发展。 因此,在我国发展有自主知识产权的c p u 已成为人们注目的焦点。 随着微电子技术的飞速发展,集成电路工艺进入深亚微米阶段,特征尺寸 已减少到了5 0 纳米以下。基于工艺技术水平的提高,微处理器性能有了惊人的 发展,微处理器不断的更新换代,性能也不断的提高。在微处理器中,数据用 二进制的0 和1 来表示,分为定点和浮点两种类型。定点表示的主要缺点是数 的表示范围和精度都有限,而浮点数能够提供较大的表示精度和较大的动态表 示范围。浮点数在高精度数字计算中被普遍使用,如存许多现代的计算程序( 科 学计算、3 d 技术、数字信号处理、视频编辑及其他精确计算) 中,还有关乎我 们只常生活的天气预报、航天、军事等都需要高速度的浮点操作,并且随着数 字信号处理和图像处理需求的增长,其应用也越米越广。 以前受硅片面积的约束,人们无法实现复杂的浮点单元硬件。现在,随着 集成电路生产工艺的进步、工艺特征尺寸的减小、坼芯片面积的增大,使得在 一个芯片上可以集成更多的晶体管。因此实现算法更复杂的高性能浮点运算单 第1 章引言 元成为可能。而浮点数运算系统本身的复杂性决定了硬件实现浮点操作要比整 数操作慢,许多现在的计算机程序,如科学计算、三维图像处理、数字信号处 理和系统性能的测试程序等使用浮点操作的频率很高,这些应用性能经常要受 浮点硬件速度的限制,因此需要设计出高性能的浮点运算单元。 根据o b e r m a n 的技术报告可知( 3 2 ) ,主要浮点运算使用频率为:浮点乘法: 3 7 ,浮点加法:2 3 ,转换:9 ,传送9 ,浮点除法:3 。由于浮点加法的 使用频率很高而且设计难度最大所以浮点加法器已经成为现代微处理器和数字 信号处理器中的非常关键的部分,它的性能优劣将直接影响c p u 的浮点运算能 力。随着深亚微米技术的发展和流水段的减少,加快时钟频率的要求越来越显 著,因此对浮点加法器的运算速度要求越来越高以降低延时。 1 2 国内外f p u 发展史及研究现状 早期的计算机许多都不配备浮点运算单元,而是采用m m 的巴克斯发明的 软件,由定点运算部件来完成浮点运算。后来的c p u 可以通过“协处理器”来 增强其浮点运算能力。随着工艺技术的提高,可以将浮点运算单元( f p u ) 集成 在c p u 内部实现。 i n t e l 公司于1 9 8 0 年成功得实现了8 0 8 7 芯片的高速高效的浮点运算部件, 8 0 8 7 确立了浮点协处理器8 0 位的数据精度,定义了一个非常强大的浮点运算内 核。 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 处理器,它可以在一个时钟周期内完成浮点数 的移动、存储、交换、浮_ 加法、浮点乘法或除法。 国内从事浮点研究的不多,还没有形成完整的理论体系和设计方案,许多 关键的浮点部件的没计还不够完善。目前,在这方而开展i 作较多的有两安交 第1 章引言 大和航天7 7 1 所,2 0 0 4 年1 1 月西安交大宣布与航天7 7 1 所联合研发的“3 2 位高 性能浮点r i s c 微处理器”研制成功。但在绝对性能上距离国际一流标准尚有不 小差距,需要进一步研究和改进。 1 3 设计方法 在进行电子系统的传统设计时( 1 ) ,首先根据系统要求,建立起系统框图,将 整个系统适当划分,然后从确定单元电路开始,沿着单元电路一部件一整机的 过程进行样机的设计、制作和调试。系统功能的测试必须在样机完成以后才能 进行。这种设计是从底层开始,按照由简到繁、由下到上的顺序进行,因而称 之为由底向上的设计方法。这种方法存在着缺陷,因为在设计的最初,缺乏对 整个系统总体性的把握,需要在设计过程中不断进行修改和完善,因此这种设 计方法对设计人员要求很高,而且在设计完成以后如果发现性能尚待改进,修 改起来比较困难,而且设计周期较长,投资风险较大。 与之相反,现代设计方法都采用自顶向下的设计。这种设计方法,整个设 计是从系统顶层开始的,结合模拟和仿真手段,可以从最开始把握系统的模型 和算法的正确性。随着设计层次向下进行,系统的性能参数将进一步得到细化 和确认,并随时根据需要及时加以调整,从而保证了设计结果的正确性。因此 这种设计方法能有效降低研发成本,缩短开发周期,大大节省设计的人力和物 力,而且规模越大这种设计方法的优势越明显。自顶向下的设计流程如图1 1 所示。 本设计采用的是自顶向下的全定制设计方法,这种设计是从系统的行为级 开始,首先对系统的模型和算法进行模拟和仿真,检测系统模型和算法是否正 确,然后将系统的行为描述转化为可进行逻辑综合的r t l 级描述,同时在这一 层进行模拟仿真。r t l 验证通过后就可以进行电路设计,并进行h s p i c e 仿真验 证。然后进行版图设计。 本文首先对浮点加法器的算法进行分析,并在此基础上确立了双精度浮点 加法器的结构,并建立r t l 模型进行了功能验证。然后对其部分关键部件如复 合加法器和先导1 预测单元等进行优化设计。 第1 章引言 1 4 研究目标 模型或算法的建立 l , 、c c 模型建立 c 模型验证广_ 一 r t l 模型建立 r t l 模型验证l a s i c 甜牟牵制骨计 逻辑综台优化 电路设计 ,、l 级仿真、时序分析电路仿真 ,j , 门级| 尚9 表版图 版图 图1 1t o p d o w n 设计方法流程 本课题将对高性能c p u 中浮点加法器的算法与实现进行研究。研究目标有 两点:一、在改进的t w o p a t h 算法的基础上确立浮点加法器的流水线结构,并 建立r t l 模型进行功能验证。二、对其关键部件如复合加法器、先导1 预测逻 辑、舍入逻辑进行优化设计,并对电路进行仿真验证。 4 第2 章浮点运算的基本原理 第2 章浮点运算的基本原理 2 1 浮点数的表示 浮点数的表示( 2 ) 遵循i e e e 7 5 4 标准,一个浮点数是由四部分组成的:符号、 尾数( 有效数) 、指数及基。指数的基通常与尾数的基是相同的,在本文中我们 都采用二进制数。浮点数的表达式如下式: x = ( 一1 ) x l ,2 - 6 “ ( 2 1 ) 在这个式子中s 取值为o 或1 。s = 0 时此表达式表示的是一个正值;s = 1 时此表达式表示的是一个负值。e = e - b i a s ,是位于e m i n 和e 。之间的任何整数。 其中e 。i 。表示最小的指数值,e m 。表示最大的指数值。 i e e e 7 5 4 标准规定了四种浮点数格式,两种基本格式分别为单精度与双精度 格式,对应于这两种格式还有扩展精度格式。如表2 1 所示: 表2 1 四种浮点数格式 参数单精度单精度扩展双精度双精度扩展 格式宽度 3 2 4 3 6 4 7 9 尾数宽度 2 3 + 13 25 2 + 16 4 指数宽度 81 11 11 5 指数偏移 + 1 2 7 不指定 + 1 0 2 3 不指定 e m a x + 1 2 7+ 1 0 2 3+ 1 0 2 3+ 1 6 3 8 3 e m i i l 一1 2 6一1 0 2 21 0 2 21 6 3 8 2 2 1 1 单精度数的表示 一个3 2 位的单精度规格化的浮点数表示如图2 1 所示,它所表示的数值v 分为以下几种情况: ( 1 ) e = 2 5 5 并且,0 ,v 是n a n 5 ( 2 ) e 一2 5 5 并且,;0 ,v ;( 一1 ) 5 。 ( 3 ) 0 e 2 5 5 ,v t ( 一1 ) 5 2 e - 1 2 7 ( 1 ,) ( 4 ) e 。0 并且,0 ,v 一( 一1 ) 5 2 e - l z 7 ( 0 ,) ( 非规格化数) ( 5 ) e 一0 并且,;0 ,v = ( - 1 ) 0 ( 零) 位宽 m s bl s bm s b 1 s j 大小顺序 图2 1 单精度浮点数的格式 2 1 2 双精度数的表示 一个6 4 位的双精度规格化的浮点数表示如图2 2 所示,它所表示的数值v 分为以下几种情况: ( 1 ) e 一2 0 4 7 并且,l0 , v 是n a n ( 2 ) e 一2 0 4 7 并且,t o ,v 一( - 1 ) 。 ( 3 ) 0 e 2 0 4 7 ,v 一( 一1 ) 2 4 瞄( 1 ,) ( 4 ) e 0 并且,一0 ,v - ( 一1 ) 5 2 。“( o ,) ( 非规格化数) ( 5 ) e - 0 并且,一0 ,v t ( 一1 ) 。0 v = ( 1 ) s o ( 零) 11 15 2 位宽 m s b l s b m s b l s b 图2 2 双精度浮点数的格式 大小顺序 第2 章浮点运算的基本原理 在以上定义中,小数点左边的一个显式( 在运算时) 或隐式( 在存储时) 前导位与小数点右边的分数f 组成的二进制数部分叫做有效数( 或尾数) 。规格 化数的前导位为1 。采用隐含位的表数方法可以通过不存储这1 位而使表示数的 数目增加,提高表数的效率。但在进行运算时是不能忽略的。 上述单双精度浮点数的值的五种情形具体解析如下: ( 1 1 表示没有数学解析的操作( 例如0 o ) ,将产生一个非数。 ( 2 1 表示正负无穷大数。 f 3 1 表示规格化的数,它定义为非0 的浮点数,且最左有效位为1 。 ( 4 ) 表示一个反规格化的数,它的指数为最小值,且有效数非o ,最左有效位 为0 。 ( 5 ) 表示0 ,它的指数为最小值,且有效数为0 。由于浮点有效数采用原码表 示,所以有两个0 :+ 0 ,0 。 2 1 3 异常 i e e e 规定了五种能够检测的到的异常,当异常产生的时候对应的异常标识 有效: ( 1 ) 无效操作异常 如果操作中的操作数是无效数,就判断为无效操作。无效操作的种类有: 1 ) 任何对n a n 的操作。 2 ) 在进行加法或减法时对无穷数的加减操作,如( + 。o ) + ( 一o o ) 。 3 ) 在乘法运算时,0 。 4 ) 在除法运算时,o 0 或c o c o 。 5 ) 在取余运算时,x 余y ,当y 是0 或x 是无穷。 6 ) 在平方根运算时,操作数小于0 。 7 ) 二进制浮点数转换成十进制或整数形式时,产生溢出、无穷或n a n 时( 排 除表示失败的情况) 。 8 ) 在进行比较时,当操作数是无序数( u n o r d e r e d ) ,月预测方法包括 , 而没有“? ” ( 2 ) 除数为0 的异常 如果除数是0 而被除数是一个有限的非0 数,那么被0 除的异常将被标识。 结果如果没有陷阱发生就被校l 卜为。 第2 章浮点运算的基本原理 ( 2 ) 上溢异常 如果浮点运算的舍入结果在数值上超过目标数所能表示的最大值的时候, 上溢异常将被标识。 ( 3 ) 下溢异常 有两种相关的情况可能导致下溢,一种就是产生一个在t2 “之间的非零 的数值,因为这个数非常的小,所以在以后的运算中可能导致其他的异常,比 如说在除法运算中会导致上溢。另一种情况就是当这个小的数值是用非规格化 的数表示的时候在取近似值的时候会丢失精确性。这两种情况在所有运算中将 用同样的方法检测,具体方法检测见参考文献( 2 ) : 当下溢陷阱没被执行或者是没有被使能的时候,只有当小数值和失去精确 性同时被检测到的时候下溢异常才被标识。当下溢陷阱被执行并且被使能的时 候,只要检n n d , 数值就产生下溢异常标识。 ( 5 ) 不精确异常 如果舍入结果不精确或者溢出但没有溢出陷阱,那么不精确异常将被标识。 2 1 4 指数的表示 2 1 4 1 补码的表示 二进制数的补码就是用机器数的最高一位表示符号,以下的各位以给出数 值按2 取模的结果来表示。其具体定义为:设以二进制的补码表示的数 x = x m x i x 。) ,那么根据x “的不同值可以得到: ( 1 ) 当z 。一0 时,表示x 是丁f 数,即x = ( o x 。工,工。) ,它所表示的数值 为: ”酗掣 ( 2 2 ) ( 2 ) 当x 。= l ,表示x 是负数,即x = ( i x 。x x 。) ,它所表示的数值为: x = 一1 2 。一( z 2 1 z o ) 2 】 第2 章浮点运算的基本原理 x = 一( ( 善t 2 ) + ( 善i 2 ) + 1 ) + ( 善x i 2 i ) 工= 一2 肚1 + ( 荟x i 2 i ) x = 一( z ;2 + 1 ) ( 2 3 ) 综上所述,我们可以得出采用二进制补码运算的几个特点: ( 1 ) 在采用补码表示的二进制数中,机器数的最高一位是符号位,0 表示 正数,1 表示负数。 ( 2 ) 在采用补码表示的二进制数中,0 具有唯一的编码,即: 【+ o 】。m ,。,= 卜o 】。k 。= 0 采用补码表示后,进行加法运算时,可以将符号位与数值位等同处理。但 是,要特别注意的是,得到的结果不能超过计算机系统所能表达的数值范围, 否则可能会产生“溢出”的异常。 2 1 4 2 用二进制的偏移补码来表示指数 指数的操作只有加法与减法操作,我们通常用补码来表示这些操作中的操 作数。利用操作数的补码形式进行加法操作时,只要将两个操作数直接相加就 可以了;减法运算时,只要将被减数取反加1 即可,这非常便于我们进行硬件 实现。 在二进制数的指数表示中,由于所有( e ,o ) 都表示零,所以零没有唯一的 表示,为了解决这个问题我们考虑用一个最小的指数作为零的指数。如果真正 的指数为e ,并且一n s es n ,那么当e 为一n 时,e + n = 0 ,所以( 0 ,0 ) 就是零的唯一表示。因此,为了使零有唯一的表示,需要给指数加一个偏移量, 即用带偏移量的指数来代替真正的指数,即e = e + b i a s 。在单精度表示中 b i a s = 1 2 7 ,在双精度表示中b i a s ;1 0 2 3 。 综上所述,我们用偏移补码来表示指数是最佳的表示方法。 指数运算可能会产生溢出,即指数人于或小于允许数值。当指数大于最大 允许值时就发生指数上溢,当指数小丁最小允许值时就发生指数下溢。在本设 计中发生上溢或下溢都作为异常处理,将结果冲零,并报告异常。 第2 章浮点运算的基本原理 2 1 5 尾数的表示 在机器中可存储的数据的位数是有限的,因此为了提高有效位的存储位数 提高精度通常将尾数表示为规格化的数。所谓规格化的数是指在有效数的范围 内第一位数是非零的,对于二进制的数来说即第一个非符号数一定为1 。如果不 存储这一位可以使可表示数的数目加倍,这一位就是隐含位。本文中的操作数 即是规格化的数。 2 2 浮点数的基本运算 浮点数的基本运算包括加法、减法、乘法和除法。 ( 1 ) 加法运算 在进行加法操作的时候首先要将两个操作数的指数统一,即对小操作数进 行右移,然后对尾数进行加减操作。 ( e l , s 1 ) + ( e 2 ,s 2 ) = ( e l , s l + s 2 2 9 l - e 2 ) ,e 1 2 e 2 ( 2 4 ) ( 2 ) 减法运算 减法运算与加法运算相似,也要先对指数进行统一,再对尾数进行操作。 ( e l , s 1 ) 一( e 2 ,s 2 ) = ( e l ,s 1 一s 2 2 e 1 。2 ) ,e 1 2 e 2 ( 2 5 ) ( 3 ) 乘法运算 乘法运算比加减法操作简单,不需要进行尾数的移位操作,只需要尾数相 乘指数相加。 ( e l , s 1 ) ( e 2 ,s 2 ) = ( e l + e 2 ,s l x s 2 ) ( 4 ) 除法运算 除法运算与乘法运算相似 ( e 1 ,s 1 ) ( e 2 ,s 2 ) = ( e 1 一e 2 ,s 1 + s 2 ) ( 2 6 ) ( 2 7 ) 2 3 浮点加法算法 同前浮点加法算法j 三要有基本算法、t w o p a t h 算法和t r i p l e d a t a p a t h 算法。 1 0 第2 章浮点运算的基本原理 2 3 1 基本算法 基本的浮点加法运算一般要用以下几个步骤完成( 3 x 1 5 ) : ( 1 ) 指数相减:要将两个指数化为相同值,通过比较两个指数的大小求出指 数差的绝对值e 。 ( 2 ) 对阶移位:将指数较小的操作数的尾数右移e 位。 ( 3 ) 尾数加减:对完成对阶移位后的尾数进行加减运算。 ( 4 ) 转换:当尾数相加的结果是负数时,要进行求补操作,将其转换为符号 一尾数的表示方式。 ( 5 ) 前导1 或前导0 的判定:判定由于减法结果产生的左移数量。 ( 6 ) 规格化移位:根据前导0 个数的判定结果对尾数加减结果进行移位,消 除尾数的非有效位,使其最高非符号位为1 。 ( 7 ) 舍入:有限精度浮点表示需要将规格化后的尾数舍入到固定结果。 ( 8 ) 判断结果的有效性:舍入操作如果需要入可能会引起溢出,需要对其结 果的正确性进行判断。 由以上基本算法可见,它要包含两个全长的移位即对阶移位和规格化移位, 还要包括三个全长的有效加法,即3 ,4 ,7 步。由此可见基本算法将会有很大 的时延。 基本算法的流程图如图2 3 所示。 第2 章浮点运算的基本原理 图2 3 浮点加基本算法流程阁 2 3 2 t w o p a t h 算法 存对浮点加的算法进行多年研究后,取得了系列的成果,其中最重要的 第2 章浮点运算的基本原理 是m e f a r m w a l d 在1 9 8 1 年提出的t w o - p a t h 算法。此算法的原理就是将加法运 算中的一系列操作并行化,以减少延时。 在对浮点加法的实现过程进行分析发现( 4 x s x ”) : 1 对指数进行求差运算,指数差的符号决定哪个操作数大。我们在必要的 时候对操作数进行交换操作,使大的操作数为被减数,小的操作数为减数,这 样除了阶码相等的情况外,其他情况下基本算法中的第4 步可以省略;在指数 相等的情况下,不需要对阶移位,但是尾数相减的结果可能是负的,因此需要 转换,而运算结果是一个精确值,不需要舍入。所以通过操作数的交换,可以 取消第4 步或者第7 步,消减三个进位传输加法延时中的一个。 2 在尾数的加法运算中,规格化移位是不需要的;在减法操作中,当操作 数的指数差的绝对值l a 圳s1 时,尾数的对阶移位最多只需右移一位,而此时尾 数运算的结果产生的先导零的个数是个变量,结果的规格化移位是个变量,需 要一个全长的规格化移位;当l a e i ,1 时,尾数对阶移位就要右移多位,而结果 产生的先导零的个数最多为1 ,因此整个结构只需要一个移1 位电路和一个移多 位电路,因此,可根据操作数指数差的值将加法单元分成两个路径来实现运算 功能。 3 采用前导1 或前导0 的预测判定,将前导0 或前导1 的预测与有效位加 法并行处理可以减少延时。 根据以上三点分析,可以将基本算法进行改进,将浮点加法运算分为两个 路径( f a r 路径和c l o s e 路径) 完成,划分的依据就是指数差的绝对值i a e i , 当l a e i ,1 时f a r 路径为当前路径,当i a 酬s 1 时,c l o s e 路径为当前路径。得 到t w o p a t h 算法( 6 ) 如图2 4 所示: 1 3 第2 章浮点运算的基本原理 f a r 路径 c l o s e 路径 图2 4t w o p a t h 算法框图 t w o p a t h 算法的以上三点的改进,提高了浮点加法器的性能,花费的硬件 代价为附加的有效加法器,另外一个多路选择器选择两条路径产生的结果。 2 3 3 改进的t w o p a t h 算法 在t w o p a t h 算法中,舍入运算要等到尾数加减完成后才进行,而且只对结 果进行少量改动,因此n t q u a c h 和m j f l y n n 提出一种改进的算法( 4 ) ,在这种 算法中,将有效位运算,舍入及求 运算进行合并。 n t q u a c h 和m j f l y n 提出,通过提前计算所有可能的结果,舍入和转换 操作可以简化为只要选择正确的结果就可以了。对于i e e e 的舍入到最近的舍入 模式( r n ) ,计算a + b 和a + 曰+ 1 就能够满足舍入和转换后所有可能的结果了。 将这种优化方法与原算法相结合,要求每个路径上的尾数和同时产生s u m 和 s u m + l ,通常是通过复合加法器( c o m a d d ) 来完成的。选择正确的结果需要对舍 入位迸行分析,然后从两个结果中选择正确的一个。这种改进方法减少了一步 尾数加的操作。对于i e e e 的两种直接舍入方法即舍入到正无穷和负无穷,还需 要计算a + b + 2 。这通过在f a r 路径上加一排半加器来实现7 在比较指数大小及求指数差的时候我们发现,如果先将两个指数的求差运 算e ,一e 和e :一e ,同时进行,在指数比较完大小后根据比较结果选出正差,然 第2 章浮点运算的基本原理 后根据正差的值对较小的尾数进行对阶移位。这种方法比先比较指数大小然后 求差的时延要小,所以我们可以将算法进一步优化。本设计所采用的算法就是 改进的t w o _ p a t h 算法。 2 3 4 t r i p l e - d a t a - p a t h 算法 进一步的分析表明,当两个操作数的指数差的绝对值比尾数的有效宽度还 要大时,浮点加法的结果即为两个操作数中较大的一个,加法运算不需要执行, 因此根据t w o p a t h 算法的原理,我们引入t r i p l e d a t a p a t h 算法 8 1 。在此算法中, 浮点加法过程分为三个通道,其中两个数据通道为计算通道,另外一个为旁路 数据通道。当指数差的绝对值大于尾数的位宽时,旁路通道为当前通道,否则 计算通道为当前通道。t r i p l e d a t a - p a t h 算法的结构图如图2 5 所示。 左数据通道尾数的移位只需单级的多路选择器即可完成,由于有效数的预 对准操作速度很快,所以加法完成后再进行先导0 计数,而不采用先导零预测 逻辑,这样也能达到右数据通道相同的执行速度。由于先导零计数器远比先导 零预测逻辑简单,所以简化了硬件复杂度,降低了功耗。右数据通道有效数的 预对准需要移多位,这一操作用桶形移位器来实现。由于减法是用补码来实现 的,所以补码器只有在减法运算中才被激活。无论是左数据通道还是右数据通 道,舍入的计算与尾数的加法运算并行执行,提高了加法的执行速度。结果选 择器根据舍入条件选择合适的加法结果。 时序控制逻辑用于为不同的输入选择合适的通道,并将它们传送到所选的 数据通道,同时产生不同的选通信号用于控制数据通道的状态。标志位逻辑用 于标记异常情况,并进行相应的异常处理。 t r i p l e d a t a p a t h 浮点加法器结构在降低功耗方面有突出的优势,但其流水线设计 较复杂,硬件规模大,实现起来难度较大,所以本设计没有采用这种方法。 苎! 兰主竖盛垩簦塑茎查垦望 图2 5 t r i p l e - d a t a - p a t h 算法 第3 章整数加法器的设计 第3 章整数加法器的设计 复合加法器是浮点加法器中的一个重要部件,它的性能对整个浮点加法器 有着关键的作用。它是在整数加法器的基础上改进而成的,因此设计出性能优 良的整数加法器是至关重要的。 3 1 几种加法器 3 1 1 一位加法器 如果不考虑进位将两个二进制数相加,称为半加,实现半加运算的电路叫 做半加器。如果相加时考虑来自低位的进位及向高位的进位,则称为全加,实 现全加运算的电路叫做全加器( 9 ) 。图3 1 所示为一位全加器的逻辑图,图3 2 所示为一位全加器的框图。 c ia ib i 图31 一位全加器逻辑图 1 7 第3 章整数加法器的设计 c i + 1s i a ;b :c ; 图3 ,2 一位全加器框图 从逻辑图可以写出逻辑表达式为: 3 1 2 行波进位加法器 ( 3 1 ) 行波进位加法器是把1 1 个全加器的进位按照由低位到高位的顺序依次串连 起来构成的。用这种方法组成的加法器,从最低位来的进位信号是一位一位逐 位串行向高位传播,因此叫做行波进位加法器( 1 0 ) 。图3 3 是根据这种方法组成 的行波进位全加器的逻辑框图。 y 3x 3y 2 x 2 y lx ly 0x o r j 1r o 1 r 。 r c 过f a 怛f a 剀f a 埘f a 恤 o 一o o o t oo 。 ii s 3s 2s ls o 蚓3 34 位行波进位加法器 1 8 c “e即 + o b 4 4 i z s c 第3 章整数加法器的设计 一个k 位的行波进位加法器的延迟可以由最坏情况下的信号传输路径推测 而得到,如图3 3 所示:关键路径通常由输入) ( 0 或y 0 开始,经过进位传输链 到f a ,到输出s “结束。当然也有可能关键路径由c i n 开始到c 。结束。然而, 考虑到从进位输入到进位输出的延迟比从x 到进位输出或从进位输入到s 更重 要。因此我们可以将k 位行波进位加法器的延迟表示如下; l 呲“= 毛 ,y c 。,) + 一2 ) 一c 。,) + h s ) ( 3 2 ) 1 f a 表示一位全加器的输入与输出之间的延迟。因此,一个行波进位加法器 的延迟简化为k t f a 。 由此可见,行波进位加法器的延迟是与k 成正比的。如果加法器的位数增 多那么它的延迟将会随之增加。可见行波进位链的存在严重影响了全加器的加 法速度。 3 1 3 先行进位加法器 目前计算机中一般采用先行进位全加器的方法来消除行波进位链和提高全 加器的运算速度( 。先行进位加法器的原理就是利用递归原理,将第i 位的进 位信号c i 用低阶的进位信号c 0 表示。 若a i 与b i 为第i 位的加数与被加数,s i 与c i 为第i 位的和与进位,则: s f a f o b , ( 3 3 ) c i = a i b i + b i c 。+ a i c i 3 4 ) 首先,我们定义两个进位函数如下: g f = 4 马 ( 3 5 ) 只= a :o e ( 3 6 ) 其中,g i 称为全加器第i 位产生的本地进位函数,p j 祢为第i 位产生的进 位传播函数。用进位函数表示的和与进位的逻辑公式如下: s 。;c o c 。 ( 3 7 ) c l + 1 = g j + p , c 。 ( 3 8 ) 第3 章整数加法器的设计 我们把每一位的进位公式表示成g i 和p i 的函数: c 1 ;g 0 + p o c o ( 3 9 ) c 2ag 1 + 置g o + 只晶c o ( 3 1 0 ) c f + 1 = g + 只g f 一1 + 只e 一1 g 一2 + + 鼻只- l 一e o c o ( 3 1 1 ) 由上面分析可见所有位产生进位的时间是基本相同的,显然用这种方法组 成的全加器的速度比行波进位加法器要快,而且加法位数n 越大速度的提高越 明显。 然而,先行进位加法器所需的门的尺寸会随着位数的增加大到难以实现, 因此我们采用多级先行进位加法的方法来解决这一问题,我们以4 - b i t 的先行进 位加法器为标准模块来实现加法器的先行进位。在4 - b i t 的标准模块中,我们产 生两个组间进位信号: 只。= 只。只。只:。 ( 3 1 2 ) g i 4 兰g f 3 + 只3 g f 2 + 只3 只2 g n + 只3 鼻2 只l g 加 所以组间本地进位为: e 4 = g 4 + 4 g o 四位先行进位加法器的电路图如图3 4 所示: ( 3 1 3 ) ( 3 1 4 ) 第3 章整数加法器的设计 产生组间信号 图3 44 位先行进位加法器 将4 位加法器用框图表示如图3 5 : 的框图。 c i + 3c i + 2c i 十l 图3 54 位超前进位加法器框图 下面就是用多级超前进位加法器块来实现1 6 位的超前进位加法器模块 2 1 第3 章整数加法器的设计 图3 61 6 位先行进位加法器 3 1 4 线性选择进位加法器 在行波进位加法器中,每一个加法单元都必须等到前一位的进位传递进来 才能产生结果。为了解决这个问题可以提前将两种可能的结果( 进位为0 和进 位为1 ) 都计算出来,然后就可以根据实际值选出正确的结果。 选择进位加法器就是根据这一思想为原理来工作的:每一位求和运算都产 生两个数值,一个假设进位为1 ,另一个假设进位为0 。然后根据实际进位为0 或1 来选择正确的值。这样就可以把求和与求进位并行进行,提高了加法器的 执行速度。对于每一位都有: ,:嚣 将。e 。一4 量i 。 aa 兆= t 州= ;e + 。f 1 选择进位加法器采用4 位一分组的结组方式,我们以一个1 6 位的加法器为 例得到下图: 第3 章整数加法器的设计 图3 71 6 位选择进位加法器( 其中阴影部分为关键时延路径) ( “) 通过对上图的观察我们可以得到在最坏情况下的时延为: t a d d 。= t s e t u p + ( 等) t 。w + a 打。+ r 。 。,。, 其中,。、。和 。;为固定时延,n 和m 分别代表加法器总的位数和每 一组中的位数。其中幽。为进位建立时间;屯v 为单个全加器进位传输时间; k 。为每组中进位传输时延;。为和产生时间。 对于其中的每一组4 位加法器,组内采用先行进位加法算法其行为逻辑公 式为: s 。o = 心。鼠 ( 3 1 7 ) s 硼一a o o 民0 1 s 。1 4 0 b g o s p l = a l o b l o 晶 s 。:一a 2o b 2o ( g l + e g o ) s 。2 = a zo 口2o ( g 1 + 鼻晶) s 。,z a ,o 尾o ( g 2 + 足g l + 只置6 _ ) s 。,= a ,o 也o ( g :+ p 2 g ,+ 只只只) ( 3 1 8 ) ( 3 1 9 ) ( 3 2 0 ) ( 3 2 1 ) ( 3 2 2 ) ( 3 2 3 ) ( 3 2 4 ) 蕈 一 h 育 鋈 呻矿 一 h 冒 晷沁 1 l ,n - 一 h i 鐾沁 第3 章整数加法器的设计 c 。;g 3 + 只g 2 + 只b g l + 只最置g o c 。4 = g 3 + 只g 2 + 只b g l + 只只置晶 c q 4 + c p 4 c o s f s “c o + s p i c o 其中,g 。= 4 马;只= a i + b f ; 线性选择进位加法器的每组内的4 位加法器的电路图如图3 8 所示: ( 3 2 5 ) ( 3 2 6 ) ( 3 2 7 ) ( 3 2 8 ) s 3 s 2s 1 s 0 图3 84 位线性选择进位加法器 31 5 平方根进位选择加法器 2 4 第3 章整数加法器的设计 在进位选择加法器中,多路选择器是组的最后一级门,多路选择器的输入 是组的两条进位链和从前一级来的多路选择信号。通过对输入信号到来时间的 观察可以发现:在多路选择信号到来之前进位链的结果已经处于稳定状态很久 了。如果能使输入信号在几乎相同的时间到达那就可以大大提高加法器的速度。 所以可以考虑通过逐渐增加后一组的操作数的位数而使进位信号传输的时间增 加。例如:第一组可以做2 位加,第二组做3 位加,第四组做4 位加,等等, 如图3 9 所示: s 2 4s 5 8 图3 9 平方根算法结构( 1 1 ) 这种加法器的拓扑结构与线性结构相比,虽然需要额外一组电路,但速度 却比它要快。假设一个n 位加法器包括p 组,第一组进行m 位相加,以后各 组逐渐增加,满足以下关系: n = m + ( m + 1 ) + ( m + 2 ) + ( 吖+ 3 ) + + ( 肼+ p 一1 ) = m p + p r p - 1 ) 2 = p 2 2 + p ( m 一1 2 1 ( 3 2 9 ) 如果m ( ( ,那么式3 2 9 可简化为 。兰( 3 3 0 ) 2 式( 3 1 6 ) 可写为: ,s 第3 章整数加法器的设计 t “一f ;+ 胁。+ ( 互万p 。+ t 一 ( 3 3 1 ) 由上式可见当n 较大时延迟与万成正比。无论线性算法结构还是平方根 算法结构时延都是n 的函数。随着n 的增大,f 。将趋于常数。 3 1 6 加法器时延性能比较 比较行波进位加法器和线性选择加法器及平方根选择加法器的时延可以得 到下图。 图3 1 0 采用不同体系结构各级数r 加法器的时延( 1 1 ) 所以结合先行进位加法器和平方根进位加法器的优点,本设计中作为复合 加法器基础的整数加法器的结组方式采用平方根选择进位加法器的方法,但当 每组所计算的数据位数大于4 位的时候,组内采用先行进位的方法会使电路规 模大到难以实现,所以我们设计的整数加法器的组内采用选择进位的方法,组 间采用先行进位的方法。 3 2 整数加法器的设计 一口一警c警一口mhq一 第3 章整数加法器的设计 求s u m 的5 6 位加法器共分为1 0 个模块,第

温馨提示

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

评论

0/150

提交评论