一种浮点处理装置及方法

文档序号:8269712阅读:198来源:国知局
一种浮点处理装置及方法
【技术领域】
[0001]本发明涉及处理器领域,尤其涉及一种浮点处理装置及方法。
【背景技术】
[0002]浮点数是有理数中的某特定子集的数的数字表示,其数字表示的特点是小数点的位置是不固定的。在计算机中,对浮点数的表示广泛采用的是IEEE制定的二进制浮点数算术标准(IEEE-754)。该标准定义了浮点数的表示格式,特殊值的浮点表示以及浮点数的算术运算标准,还定义了浮点运算的舍入模式和浮点异常及其处理。在最新的2008标准中,还新增了基数为10的浮点表示等内容,但目前处理器对2008标准支持有限。
[0003]IEEE-754标准的浮点表示格式分为三个域:符号域S、指数域e和尾数域f。如果指数域编码的值e满足0〈e〈2b-l (b为指数域位宽),则称该浮点数为规格化浮点数,其值表示为(-1)s ^2Mias.(1.f),其中bias = 2b_\如果指数域编码的值e = 0,而尾数域编码值非零,则称该浮点数为非规格化浮点数,其值表示为(-1)s ^1-biaS.(0.f)。可以看到规格化浮点数和非规格化浮点数的值的表示形式是不同的,这为统一处理浮点运算带来了困难。
[0004]浮点运算的一般过程是:先进行浮点操作数类型的检测,区分规格化浮点数和非规格化浮点数;对非规格化浮点操作数进行处理;然后进行后续浮点运算。目前处理含有非规格化浮点数的浮点运算主要有两种做法。一是处理器的浮点单元硬件支持非规格化浮点数参与运算。例如在浮点单元内部采用更高精度的浮点格式表示非规格化浮点数,使其“规格化”,运算后进行格式转换。这种做法的缺点是需要消耗大量的硬件资源,且增加了浮点处理的执行延时。二是浮点单元在硬件中不直接支持非规格化浮点数,而是在遇到含有非规格化浮点数的运算时触发异常,转移到异常服务程序或微代码中处理非规格化浮点数的运算,但这种做法大大降低了处理器的浮点性能。
[0005]大多数应用并不涉及需要非规格化浮点数精确运算的情况,因此处理器,特别是嵌入式处理器并不总需要支持非规格化浮点数的精确运算。一种对非规格化浮点数进行替换的处理方式可以极大地简化非规格化浮点数的运算。这种做法是浮点单元在检测到浮点运算包含非规格化浮点操作数时,将非规格化浮点数用同符号的零或同符号的绝对值最小的规格化浮点数替换后进行后续运算。由于非规格化浮点数是绝对值极其接近零的一类数,在大多数应用领域,上述做法是满足其精度要求的,而且这种做法需要的硬件资源较少,同时能保证处理器的浮点性能。
[0006]上述做法的实现通常是在浮点单元中加入操作数检测电路,先对输入的浮点操作数进行非规格化检测,再进行替换操作。该方法容易造成浮点流水线的停顿或增大执行延时,影响处理器浮点处理的性能。另一种做法是将非规格化浮点数按规格化浮点数进行处理,再依据操作数检测结果和替换方式对运算结果进行指数域和尾数域的调整,得到最终的正确值。但这要求浮点单元保存额外的操作数信息,在一定程度上增加了硬件开销。

【发明内容】

[0007]为了克服已有浮点处理方式对非规格化浮点数处理时硬件资源消耗较大、处理性能低下的不足,本发明提供了一种对非规格化浮点数处理时有效降低硬件资源消耗、提升处理性能的浮点处理装置及方法
[0008]本发明解决其技术问题所采用的技术方案是:
[0009]一种浮点处理装置,所述处理装置包括:
[0010]译码单元,用于解析输入的指令码,产生相应的操作码和浮点寄存器索引信息,其中,操作码指示具体的浮点操作,浮点寄存器索引信息指示浮点操作的数据来源和结果的存放信息;
[0011]浮点寄存器组,包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数;浮点寄存器组接收译码单元的浮点寄存器索引信息,输出原始浮点操作数,N、M、P、Q均为整数;
[0012]操作数准备单元,用于接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数;
[0013]浮点处理单元,用于接收译码单元的指令操作码与操作数准备单元的目标浮点操作数,依据指令操作码指示,产生运算结果;
[0014]结果回写单元,用于接收浮点处理单元输出的运算结果,进行格式检查,产生非规格化数指示信息,用于指示该运算结果是否为非规格化数,更新所述浮点寄存器组及其相应的非规格化指示域。
[0015]进一步,所述浮点处理单元包含执行浮点运算及浮点内存访问中的操作的运算部件。
[0016]一种浮点处理方法,浮点寄存器组包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数,N、M、P、Q均为整数;所述浮点处理方法包括如下步骤:
[0017]步骤一:接收输入的指令码,译码得到操作码和浮点寄存器组的索引信息;
[0018]步骤二:根据译码单元输入的索引信息,输出P比特原始浮点数及其Q比特非规格化数指示信息;
[0019]步骤三:接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数。
[0020]步骤四:接收步骤一的操作指示符与步骤三的目标浮点操作数,产生浮点处理结果;
[0021]步骤五:对浮点操作的结果进行非规格化数检测,生成浮点结果的非规格化指示信息,并更新所述浮点寄存器组及其相应的非规格化指示域。
[0022]进一步,所述步骤四中,包含浮点运算或者浮点内存访问中的若干或者全部操作。
[0023]本发明的有益效果主要表现在:通过在浮点寄存器组中增加非规格化数指示域,标记所存储浮点数据的类型,通过操作数准备单元,在精度允许的情况下对非规格化浮点数进行替换,在浮点操作数进入浮点处理单元之前完成了对非规格化浮点数的处理。本发明极大地简化了非规格化浮点数的处理,缩短了其执行延时,具有硬件复杂度小、资源消耗小的优点。
【附图说明】
[0024]图1为本发明浮点处理装置的方块示意图。
[0025]图2为本发明浮点寄存器组一实施例的示意图。
[0026]图3为本发明操作数准备单元一实施例的示意图。
[0027]图4为本发明结果回写单元一实施例的示意图。
【具体实施方式】
[0028]下面结合附图对本发明作进一步描述。
[0029]实施例1
[0030]参照图1?图4,一种浮点处理装置,所述处理装置包括:
[0031]译码单元10,用于解析输入的指令码,产生相应的操作码和浮点寄存器索引信息,其中,操作码指示具体的浮点操作,浮点寄存器索引信息指示浮点操作的数据来源和结果的存放信息;
[0032]浮点寄存器组20,包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数;浮点寄存器组接收译码单元的浮点寄存器索引信息,输出原始浮点操作数,N、M、P、Q均为整数;
[0033]操作数准备单元30,用于接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数;
[0034]浮点处理单元40,用于接收译码单元的指令操作码与操作数准备单元的目标浮点操作数,依据指令操作码指示,产生运算结果;
[0035]结果回写单元50,用于接收浮点处理单元输出的运算结果,进行格式检查,产生非规格化数指示信息,用于指示该运算结果是否为非规格化数,更新所述浮点寄存器组及其相应的非规格化指示域。
[0036]进一步,所述浮点处理单元包含执行浮点运算及浮点内存访问中的操作的运算部件。
[0037]本实施例中,参见图1所示,这种浮点处理装置包含译码单元10、浮点寄存器组20、操作数准备单元30、浮点处理单元40和结果回写单元50。
[0038]译码单元10解析输入的指令码,产生相应的操作码和浮点寄存器索引信息,其中,操作码指示具体的浮点操作,包含
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1