基于RISC指令系统的32位浮点加减法运算器设计.doc_第1页
基于RISC指令系统的32位浮点加减法运算器设计.doc_第2页
基于RISC指令系统的32位浮点加减法运算器设计.doc_第3页
基于RISC指令系统的32位浮点加减法运算器设计.doc_第4页
基于RISC指令系统的32位浮点加减法运算器设计.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

基于RISC指令系统的32位浮点加减法运算器设计摘要:浮点运算部件一直是限制微处理器性能的一个关键因素。在分析了浮点运算器的结构和算法,提出了一种支持IEEE-754标准的浮点加减法运算器的实现方案,并详细介绍了该运算器的结构和算法。方案采用了四级流水线的结构,即:0操作数检查、对阶、尾数运算、结果规格化及舍入处理。每个步骤可以单独作为一个模块,在每个模块之间增加了寄存器,利用这些寄存器可以为下一个操作准备正确的数据。关键词:流水线,IEEE-754标准,警戒位,舍入法32 bit Floating-Point Addition and Subtraction ALU Design Based on RISC StructureABSTRACT:Floating-Point arithmetic unit is always key factor of restricting microprocessor performance. This paper analyses structure and algorithm of Floating-Point ALU and brings forward a scenario about Floating-Point addition and subtraction ALU which supports IEEE-754 standard. The scenario adopts 4-Level pipelining structure: 0 operation numbers check、match exponent、fraction arithmetic、result normalization and rounding. Each step can be act as a single module. Among these modules, there are some registers which can prepare correct data for next operation.Keywords: pipelining, IEEE-754 Standard, Guard Digit, Rounding Method1 引言随着SOC技术、IP技术以及集成电路技术的发展,RISC软核处理器的研究与开发设计开始受到了人们的重视。基于FPGA的RISC软核处理器在各个行业开始得到了广泛的应用,特别是在一些基于FPGA的嵌入式系统中有着越来越广阔的应用前景。数据类型是数据表示的计算机实现,常见类型分为基本型, 带标志位型, 堆栈型, 向量型等等,其中基本型数据更是为高级编程语言中广泛应用。浮点数据在基本数据类型中更是占有重要位置, 因此,浮点运算能力甚至成为数据运算强弱的一个指标。由于浮点数可以同时提供大范围和高精度的数据,很多微处理器直接采用硬件浮点运算单元。IEEE-754标准就是目前最广泛使用的浮点数标准,它规定了符合该标准所需的浮点数的格式、精度和算术操作。通过对所设计对象特点及其可行性的研究,选用了Altera公司QuartusII软件作为设计与仿真验证的环境。在设计方法上,采用了自顶向下的设计方法。在设计过程中采用了边设计边验证这种设计与验证相结合的设计流程,大大提高了设计的可靠性。2 浮点加减法器工作原理与结构浮点加法器的运算除了尾数加法以外,还需要对准移位、规格化移位、求补码、前导零预测和舍入操作,因此运算速度较整数加法器运算有很大差距。快速的浮点加法器对于浮点单元的性能至关重要,故而减少浮点加法运算时间的技术研究倍受重视。在设计中,通过流水线技术来实现0操作数检查、对阶、尾数运算、结果规格化及舍入处理四步操作;浮点数选用IEEE 754标准,尾数用补码表示,阶码用移码表示。设计完成的这一加减法运算器可以提高CPU的运算速度,进而可以提高整个系统的性能。2.1需要解决的关键问题(1)首先要进行“0”操作数检查,如果加数/被加数是“0”,则结果是被加数/加数。(2)由于本设计采用的数据是IEEE754标准的浮点数,而且在计算机中阶码是用移码表示,所以运算前要先对阶。使两数的小数点位置对齐,即要求两数的阶码相等。采用小的尾数向右移位,每右移一位,阶码加1,直到两数的阶码相等为止。尾数右移时可能会发生数码丢失,影响精度。(3)在做尾数加减操作时,因为尾数结构实际是1.m,所以在实际进行运算时要将这个丢掉的“1”补上。运算后得到的结果也要保证尾数是1.m的形式,所以在最终的结果上要对不是这种结构的尾数进行向左或向右规格化,而且要对得到的结果选取不同的舍入方法进行舍入处理。2.2总体结构设计通过对两个浮点数加减法运算过程的分析,将运算器的加减运算过程分为四个流水段:0操作数检查、对阶使小阶向大阶看齐操作、尾数加减、结果的规格化处理及其舍入处理。在每个模块之间设计了寄存器用来存放前一流水段所得出的结果。这四个模块可以作为四个不同的子任务,只要能不断地向这个流水线中输入需要进行加减运算的两个数,那么这些任务就能保证是并行执行各自的操作,从而也实现了时间的并行性。设计的抽象结构图如图1所示:图1.运算器总体设计结构图2.3浮点数的结构及设计2.3.1浮点数的结构由于所设计的是32位浮点数的加减法运算器,而且浮点数采用IEEE754标准,因此本设计中浮点数结构如图2所示:图2.浮点数结构注:浮点数结构中,M为尾数的值,原码表示,采用隐藏位表示方法;E为阶码的值,移码表示;S为尾数符号位。2.3.2警戒位与舍入法警戒位:对于加减法,如果两个同号的规格化浮点数相加或两个异号的规格化浮点数相减,则对阶时无论阶码较小的那个浮点数的尾数右移多少位,它与阶码较大的那个浮点数的尾数之和一定不需要进行左规格化。设mA是阶码较大的浮点数尾数,mB是阶码较小的浮点数对阶之后的尾数,在尾数采用原码、小数的情况下一定有:两尾数之和为: mA+mB的和一定不需要进行左规格化,有可能要右规格化1位。如果两个同号的规格化浮点数相减或两个异号的规格化浮点数相加,则根据两个浮点数的阶差会出现如下3种不同情况:(1) 当两个规格化浮点数的阶差为0时,这两个浮点数的尾数之和最多可能要左规格化p-1位(p是尾数数值部分的字长),但是对阶时没有从尾数最低位移出任何代码,即对警戒位有需要但没有来源,因此不必设置警戒位。(2) 当两个规格化浮点数的阶差为1时,这两个浮点数的尾数之和最多可能要左规格化p位,但是对阶时只从阶码较小的浮点数的尾数最低位移出了1位代码,因此也只需要设置1位警戒位。(3) 如果两个规格化浮点数的阶差大于等于2,对阶时可能要从阶码较小的尾数的最低位移出去很多位,但是两个浮点数的尾数之和最多只可能左规格化1位,因此只需要为左规格化设置1位警戒位即可。综上所述,无论什么情况下两个规格化浮点数相加,用于左规格化的浮点数位数只需要1位。舍入法:在对阶或向右规格化时,尾数要向右移位,这样,被右移的尾数的低位部分会被丢掉,从而造成一定误差,因此要进行舍入处理。常用的舍人方法有恒舍法、恒置法、下舍上入法、R*舍入法、查表法。这里,本系统采用恒置法。恒置法的实现难度仅次于恒舍法。恒置法的舍入规则是:把规格化尾数有效字长p位的最低一位置成(r是尾数的基值),而不管超过有效字长之外的g位代码是什么。当尾数基值取2时,把尾数有效位的最低一位置成1,当尾数基值取16时,把尾数有效位的最低一位置成8。若舍入前规格化尾数mx共有pg位:mx0.xxx.x0|000.000.xxx.x0|111.11,符号“”左边是尾数有效字长之内的数值,共有p位;“”右边是尾数有效字长之外的数值,共有g位。则舍入后规格化尾数m有p位,其值为:m(0.xxx.x02-p)0.xxx.x1,把有效字长之外的g位全部舍掉,并在有效字长之内的数值上加了2-p。若舍入前规格化尾数mx为:mx0.xxx.x1|000.00.xxx.x1|111.1,则舍入后规格化尾数m为:m0.xxx.x1,把有效字长之外的g位全部舍掉,与恒舍法相同。恒置法在正数区的误差范围为:mmx2-p(12-g)2-p,在负数区的误差范围为:mmx2-p2-p(12-g),恒置法的主要缺点是表数精度比较低,这是由于尾数的最低位被恒置成了,因此损失了一位精度。其主要优点是实现起来比较容易,在正数区和负数区的积累误差都比较小,而且能达到平衡。表1中第一行给出的是各种情况下用于左规格化所需要的警戒位位数,第一列给出各种舍入方法所需要的警戒位位数,各个交叉点上的数字表示各种情况下所需要的总的警戒位位数(包括用于舍入和用于左规格化两种用处),表的最后一列给出采用某种舍入方法时应该设置的警戒位位数。另外,还应当指出,当浮点数尾数的基值大于2时,用于舍入的最低一位只需要设置一个二进制位。4表1 各种情况下所需要的警戒位位数2.3.3浮点数加减运算流程图3.浮点数加减运算流程图3 模块设计3.1 0操作数检查模块浮点加减运算过程比定点运算过程复杂。如果判知两个操作数中有一个数为“0”,即可知运算结果而没有必要进行后续的一系列操作。“0”操作数检查模块则用来完成这一功能对输入的两个数检查是否为“0”。在做加法运算的时候,如果加数/被加数是0,则结果肯定是被加数/加数。3.2 对阶操作模块在该模块中,主要是要实现两个数的阶码对齐操作。两浮点数进行加减,首先要看两数的阶码是否相同,即小数点是对齐的才可以进行尾数的加减运算。反之,若两数阶码不同,表示小数点位置没有对齐,此时必须使两数的阶码相同,即小阶要向大阶靠齐。设有两个浮点数x和y,E1和E2分别为X和Y的阶码,并且阶码用移码表示,即X=M1*2E1,Y=M2*2E2(M1和M2表示尾数),首先求阶差E=|E1-E2|并保留大阶E=max(E1,E2),若E=0则对阶码小的数,将尾数右移E并把阶码值加上E。由于阶码是用移码表示的,移码和它的补码之间数据位完全相同,而符号位恰恰相反,因此只要将y的阶码转换成相应的补码形式,就可做阶码加减法操作了。出于表数效率方面的考虑,在IEEE 754标准中,对于每一个浮点数来说,其尾数形式默认为1.m。但在输入的数据中并没有将这个“1”表示出来,所以为了保证在接下来的尾数加减操作能够准确无误,在此模块中的输出数据中就应该将这个“1”表示出来,即将输出数据中的尾数部分的前面加上“1”,即可以表示为1.m。这样,在接下来的加减法运算中,尾数部分就是以24位数据参加运算的。3.3 尾数加减运算模块该模块主要是对输入的两个数据做加法运算。由于尾数采用了隐藏位的表示方法,在进行计算之前,尾数部分必须将省略的“1”补上。其方法与定点加减运算完全一样。 3.4 结果规格化模块由于任何一种浮点数表示方式的尾数字长总是有限的,因此需要考虑浮点数的舍入处理问题。使用浮点数时可能会遇到如下两个问题:一是在把日常使用的十进制实数转化为计算机内部的浮点数时,其有效位长度可能超过给定的尾数字长,这时必须舍去多余的部分。二是两个规格化浮点数的加、减、乘、除运算结果,其尾数长度可能超过给定的尾数字长,例如,两个浮点数相乘时,其乘积的尾数字长是给定浮点数字长的两倍;两个浮点数相加时,首先要进行对阶,阶码小的那个浮点数的尾数要右移,移出去的部分就超过了给定的尾数字长;同样,两个浮点数相除时,可能由于除不尽而要多上几位商,从而商的尾数长度可能超过给定的尾数字长。在浮点加减运算时尾数求和的结果也可以得到01.,即两符号位不相等,这在定点加减运算中称为溢出,是不允许的。但在浮点运算中,它表明尾数求和结果的绝对值大于1,向左破坏了规格化。此时将尾数运算结果右移以实现规格化表示,称为向右规格化,即尾数右移一位,阶码加1。当尾数不是1.M是必须向左规格化。4.结束语本文主要描述的是CPU设计中的一个功能部件的设计。该浮点数加减法运算部件已经在Quartus4.1环境中成功的通过了仿真。实验证明,该运算部件对任何RISC处理器都是一种有效的方法。在实际应用中,只要对该方案做一些调整,就能根据实际情况选择最优方案。参考文献1 Wang-YanFang,RISC Technology Development and Research,Sci/Tech Information Development & Economy.,2005.5. 王艳芳,RISC技术发展与研究,科技情报开发与经济,2005.5.2 Zhao-Xin, VHDL and Digital Circuit Design,Engine Industry Press,2005.6.赵鑫,VHDL与数字电路设计,机械工业出版社,2005.63 Mo-JianKun, Gao-JianSheng,Computer Organization, Huazhong University of Science and Technology Press,1996.莫建坤,高建生,计算机组成原理,华中科技大学出版社,19964 Zheng-WeiMin, Computer System Structure,Tsinghua University Press,2004.10; 郑纬民,计算机系统结构,清华大学出版社,2004.105 Bai-ZhongYing,Computer Organization,Science Press,2000.11; 白中英,计算机组成原理,科学出版社,2000.116 Chen-Lei, Gao-DeYuan, Pan-XiaoYa etc. a embedded rise Micro-Process Integer Component DesignJ. Micro-Electronics and Computer,2004; 陈雷,高德远樊晓桠等一种嵌入式rise微处理器的整

温馨提示

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

评论

0/150

提交评论