CN104598196A - 一种浮点处理装置及方法 - Google Patents

一种浮点处理装置及方法 Download PDF

Info

Publication number
CN104598196A
CN104598196A CN201410848567.4A CN201410848567A CN104598196A CN 104598196 A CN104598196 A CN 104598196A CN 201410848567 A CN201410848567 A CN 201410848567A CN 104598196 A CN104598196 A CN 104598196A
Authority
CN
China
Prior art keywords
point
floating
operand
floating point
unnomalized
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410848567.4A
Other languages
English (en)
Inventor
郭宇波
陈林飞
刘继让
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou C Sky Microsystems Co Ltd
Original Assignee
Hangzhou C Sky Microsystems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou C Sky Microsystems Co Ltd filed Critical Hangzhou C Sky Microsystems Co Ltd
Priority to CN201410848567.4A priority Critical patent/CN104598196A/zh
Publication of CN104598196A publication Critical patent/CN104598196A/zh
Pending legal-status Critical Current

Links

Abstract

一种浮点处理装置,包括:译码单元,用于解析输入的指令码,产生相应的操作码和浮点寄存器索引信息;浮点寄存器组,包含N个M比特的浮点寄存器,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数;浮点寄存器组接收译码单元的浮点寄存器索引信息,输出原始浮点操作数,N、M、P、Q均为整数;操作数准备单元,浮点处理单元,以及结果回写单元,用于处理原始浮点操作数,执行浮点操作,并对结果进行格式检查,产生非规格化数指示信息,更新浮点寄存器组及其相应的非规格化指示域。本发明对非规格化浮点数处理时有效降低硬件资源消耗、提升处理性能。

Description

一种浮点处理装置及方法
技术领域
本发明涉及处理器领域,尤其涉及一种浮点处理装置及方法。
背景技术
浮点数是有理数中的某特定子集的数的数字表示,其数字表示的特点是小数点的位置是不固定的。在计算机中,对浮点数的表示广泛采用的是IEEE制定的二进制浮点数算术标准(IEEE-754)。该标准定义了浮点数的表示格式,特殊值的浮点表示以及浮点数的算术运算标准,还定义了浮点运算的舍入模式和浮点异常及其处理。在最新的2008标准中,还新增了基数为10的浮点表示等内容,但目前处理器对2008标准支持有限。
IEEE-754标准的浮点表示格式分为三个域:符号域s、指数域e和尾数域f。如果指数域编码的值e满足0<e<2b-1(b为指数域位宽),则称该浮点数为规格化浮点数,其值表示为(-1)s·2e-bias·(1.f),其中bias=2b-1。如果指数域编码的值e=0,而尾数域编码值非零,则称该浮点数为非规格化浮点数,其值表示为(-1)s·21-bias·(0.f)。可以看到规格化浮点数和非规格化浮点数的值的表示形式是不同的,这为统一处理浮点运算带来了困难。
浮点运算的一般过程是:先进行浮点操作数类型的检测,区分规格化浮点数和非规格化浮点数;对非规格化浮点操作数进行处理;然后进行后续浮点运算。目前处理含有非规格化浮点数的浮点运算主要有两种做法。一是处理器的浮点单元硬件支持非规格化浮点数参与运算。例如在浮点单元内部采用更高精度的浮点格式表示非规格化浮点数,使其“规格化”,运算后进行格式转换。这种做法的缺点是需要消耗大量的硬件资源,且增加了浮点处理的执行延时。二是浮点单元在硬件中不直接支持非规格化浮点数,而是在遇到含有非规格化浮点数的运算时触发异常,转移到异常服务程序或微代码中处理非规格化浮点数的运算,但这种做法大大降低了处理器的浮点性能。
大多数应用并不涉及需要非规格化浮点数精确运算的情况,因此处理器,特别是嵌入式处理器并不总需要支持非规格化浮点数的精确运算。一种对非规格化浮点数进行替换的处理方式可以极大地简化非规格化浮点数的运算。这种做法是浮点单元在检测到浮点运算包含非规格化浮点操作数时,将非规格化浮点数用同符号的零或同符号的绝对值最小的规格化浮点数替换后进行后续运算。由于非规格化浮点数是绝对值极其接近零的一类数,在大多数应用领域,上述做法是满足其精度要求的,而且这种做法需要的硬件资源较少,同时能保证处理器的浮点性能。
上述做法的实现通常是在浮点单元中加入操作数检测电路,先对输入的浮点操作数进行非规格化检测,再进行替换操作。该方法容易造成浮点流水线的停顿或增大执行延时,影响处理器浮点处理的性能。另一种做法是将非规格化浮点数按规格化浮点数进行处理,再依据操作数检测结果和替换方式对运算结果进行指数域和尾数域的调整,得到最终的正确值。但这要求浮点单元保存额外的操作数信息,在一定程度上增加了硬件开销。
发明内容
为了克服已有浮点处理方式对非规格化浮点数处理时硬件资源消耗较大、处理性能低下的不足,本发明提供了一种对非规格化浮点数处理时有效降低硬件资源消耗、提升处理性能的浮点处理装置及方法
本发明解决其技术问题所采用的技术方案是:
一种浮点处理装置,所述处理装置包括:
译码单元,用于解析输入的指令码,产生相应的操作码和浮点寄存器索引信息,其中,操作码指示具体的浮点操作,浮点寄存器索引信息指示浮点操作的数据来源和结果的存放信息;
浮点寄存器组,包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数;浮点寄存器组接收译码单元的浮点寄存器索引信息,输出原始浮点操作数,N、M、P、Q均为整数;
操作数准备单元,用于接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数;
浮点处理单元,用于接收译码单元的指令操作码与操作数准备单元的目标浮点操作数,依据指令操作码指示,产生运算结果;
结果回写单元,用于接收浮点处理单元输出的运算结果,进行格式检查,产生非规格化数指示信息,用于指示该运算结果是否为非规格化数,更新所述浮点寄存器组及其相应的非规格化指示域。
进一步,所述浮点处理单元包含执行浮点运算及浮点内存访问中的操作的运算部件。
一种浮点处理方法,浮点寄存器组包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数,N、M、P、Q均为整数;所述浮点处理方法包括如下步骤:
步骤一:接收输入的指令码,译码得到操作码和浮点寄存器组的索引信息;
步骤二:根据译码单元输入的索引信息,输出P比特原始浮点数及其Q比特非规格化数指示信息;
步骤三:接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数。
步骤四:接收步骤一的操作指示符与步骤三的目标浮点操作数,产生浮点处理结果;
步骤五:对浮点操作的结果进行非规格化数检测,生成浮点结果的非规格化指示信息,并更新所述浮点寄存器组及其相应的非规格化指示域。
进一步,所述步骤四中,包含浮点运算或者浮点内存访问中的若干或者全部操作。
本发明的有益效果主要表现在:通过在浮点寄存器组中增加非规格化数指示域,标记所存储浮点数据的类型,通过操作数准备单元,在精度允许的情况下对非规格化浮点数进行替换,在浮点操作数进入浮点处理单元之前完成了对非规格化浮点数的处理。本发明极大地简化了非规格化浮点数的处理,缩短了其执行延时,具有硬件复杂度小、资源消耗小的优点。
附图说明
图1为本发明浮点处理装置的方块示意图。
图2为本发明浮点寄存器组一实施例的示意图。
图3为本发明操作数准备单元一实施例的示意图。
图4为本发明结果回写单元一实施例的示意图。
具体实施方式
下面结合附图对本发明作进一步描述。
实施例1
参照图1~图4,一种浮点处理装置,所述处理装置包括:
译码单元10,用于解析输入的指令码,产生相应的操作码和浮点寄存器索引信息,其中,操作码指示具体的浮点操作,浮点寄存器索引信息指示浮点操作的数据来源和结果的存放信息;
浮点寄存器组20,包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数;浮点寄存器组接收译码单元的浮点寄存器索引信息,输出原始浮点操作数,N、M、P、Q均为整数;
操作数准备单元30,用于接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数;
浮点处理单元40,用于接收译码单元的指令操作码与操作数准备单元的目标浮点操作数,依据指令操作码指示,产生运算结果;
结果回写单元50,用于接收浮点处理单元输出的运算结果,进行格式检查,产生非规格化数指示信息,用于指示该运算结果是否为非规格化数,更新所述浮点寄存器组及其相应的非规格化指示域。
进一步,所述浮点处理单元包含执行浮点运算及浮点内存访问中的操作的运算部件。
本实施例中,参见图1所示,这种浮点处理装置包含译码单元10、浮点寄存器组20、操作数准备单元30、浮点处理单元40和结果回写单元50。
译码单元10解析输入的指令码,产生相应的操作码和浮点寄存器索引信息,其中,操作码指示具体的浮点操作,包含浮点类型信息(单精度操作或双精度操作)和操作类型信息(浮点加、浮点乘......),浮点寄存器索引信息指示浮点操作的数据来源和结果的存放信息。
浮点寄存器组20,接收译码单元10输出的浮点寄存器索引信息,输出原始浮点操作数及其非规格化数指示信息。浮点寄存器组20包含N个M比特的浮点寄存器,其中每个寄存器包含P比特的数据域和Q比特的非规格化数指示域。一实施例参见图2,其包含16个67比特的浮点寄存器。67比特的浮点寄存器分为64比特的数据域和3比特的非规格化数指示域。64比特的数据域可存储一个双精度浮点数或两个单精度浮点数。3比特的非规格化数指示域分别指示数据域的低32比特和高32比特是否为非规格化单精度浮点数,以及整体64比特的数据域是否为非规格化双精度浮点数。
操作数准备单元30接收浮点寄存器组20输出的原始浮点操作数及其非规格化数指示信息,根据本次浮点处理所要求的浮点数类型,对原始浮点操作数进行处理。一实施例参见图3,操作数准备单元30由多级多路选择器构成,同时包含一个1比特的控制寄存器,指示对非规格化原始浮点操作数的处理模式。第一级多路选择器301根据浮点处理所要求的浮点数类型,确定非规格化原始浮点操作数转换可供选择的对象,分别是与原始操作数同符号的零和同符号的绝对值最小的规格化数。第一级多路选择器301的输出作为第二级多路选择器302的输入,第二级多路选择器302根据控制寄存器确定非规格浮点数的转换值。第三级多路选择器303根据非规格化数指示信息,决定是否需要用转换值替换原始浮点操作数成为目标浮点操作数。若指示信息表征原始浮点操作数为非规格化数,则目标浮点操作数为第二级多路选择器302选择出的规格化数,若原始浮点操作数为规格化数,则目标浮点操作数为原始浮点操作数。
浮点处理单元40,接收译码单元10的指令操作码与操作数准备单元30输出的目标浮点操作数,依据指令操作码指示,产生运算结果。
结果回写单元50,接收浮点处理单元40的运算结果,对结果进行非规格化数检测,生成浮点结果的非规格化数指示信息,将运算结果及其非规格化数信息回写至浮点寄存器组20中。一实施例参见图4。结果回写单元50主要由浮点结果非规格化数信息生成电路和回写模块503构成。单精度浮点非规格化数检测电路501,分别对输入的双精度浮点结果的高32比特和低32比特数据进行检测;双精度浮点非规格化数检测电路502对输入浮点结果的整个64比特数据进行检测,共生成3比特的非规格化数信息。回写模块503负责将浮点结果及其非规格化数信息正确写回浮点寄存器组20。
实施例2
参照图1~图4,一种浮点处理方法,浮点寄存器组包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数,N、M、P、Q均为整数;所述浮点处理方法包括如下步骤:
步骤一:接收输入的指令码,译码得到操作码和浮点寄存器组的索引信息;
步骤二:根据译码单元输入的索引信息,输出P比特原始浮点数及其Q比特非规格化数指示信息;
步骤三:接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数。
步骤四:接收步骤一的操作指示符与步骤三的目标浮点操作数,产生浮点处理结果;
步骤五:对浮点操作的结果进行非规格化数检测,生成浮点结果的非规格化指示信息,并更新所述浮点寄存器组及其相应的非规格化指示域。
进一步,所述步骤四中,包含浮点运算或者浮点内存访问中的若干或者全部操作。
本实施例的浮点处理方法,步骤如下:
步骤一:译码单元10接收输入的指令码,译码得到操作码和浮点寄存器组20的索引信息;
步骤二:浮点寄存器组20根据译码单元10输入的索引信息,输出原始浮点数及其非规格化数指示信息;
步骤三:操作数准备单元30接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则根据控制位的设置,将原始非规格化操作数转换为同符号的零或同符号的绝对值最小的规格化数;若原始浮点操作数为规格化数,则保持不变。处理之后的操作数为目标浮点操作数;
步骤四:浮点处理单元40接收译码单元10的操作指示符与操作数准备单元30的目标浮点操作数,执行浮点运算或者浮点内存访问操作,产生浮点处理结果;
步骤五:结果回写单元50对浮点操作的结果进行非规格化数检测,生成浮点结果的非规格化数指示信息,并更新所述浮点寄存器组20的数据域及其相应的非规格化指示域。

Claims (4)

1.一种浮点处理装置,其特征在于:所述处理装置包括:
译码单元,用于解析输入的指令码,产生相应的操作码和浮点寄存器索引信息,其中,操作码指示具体的浮点操作,浮点寄存器索引信息指示浮点操作的数据来源和结果的存放信息;
浮点寄存器组,包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数;浮点寄存器组接收译码单元的浮点寄存器索引信息,输出原始浮点操作数,N、M、P、Q均为整数;
操作数准备单元,用于接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数;
浮点处理单元,用于接收译码单元的指令操作码与操作数准备单元的目标浮点操作数,依据指令操作码指示,产生运算结果;
结果回写单元,用于接收浮点处理单元输出的运算结果,进行格式检查,产生非规格化数指示信息,用于指示该运算结果是否为非规格化数,更新所述浮点寄存器组及其相应的非规格化指示域。
2.如权利要求1所述的一种浮点处理装置,其特征在于:所述浮点处理单元包含执行浮点运算及浮点内存访问中的操作的运算部件。
3.一种如权利要求1所述的浮点处理装置实现的浮点处理方法,其特征在于:浮点寄存器组包含N个M比特的浮点寄存器,其中,每个寄存器包含P比特的数据域和Q比特的非规格化数指示域,数据域用于存储浮点数据,非规格化数指示域表征该浮点数是否为非规格化数,N、M、P、Q均为整数;所述浮点处理方法包括如下步骤:
步骤一:接收输入的指令码,译码得到操作码和浮点寄存器组的索引信息;
步骤二:根据译码单元输入的索引信息,输出P比特原始浮点数及其Q比特非规格化数指示信息;
步骤三:接收原始浮点操作数及其非规格化数指示信息,若指示信息表征原始浮点操作数为非规格化数,则将原始操作数转换为规格化数,若原始浮点操作数为规格化数,则保持不变,处理之后的操作数为目标浮点操作数。
步骤四:接收步骤一的操作指示符与步骤三的目标浮点操作数,产生浮点处理结果;
步骤五:对浮点操作的结果进行非规格化数检测,生成浮点结果的非规格化指示信息,并更新所述浮点寄存器组及其相应的非规格化指示域。
4.如权利要求3所述的浮点处理方法,其特征在于:所述步骤四中,包含浮点运算或者浮点内存访问中的若干或者全部操作。
CN201410848567.4A 2014-12-30 2014-12-30 一种浮点处理装置及方法 Pending CN104598196A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410848567.4A CN104598196A (zh) 2014-12-30 2014-12-30 一种浮点处理装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410848567.4A CN104598196A (zh) 2014-12-30 2014-12-30 一种浮点处理装置及方法

Publications (1)

Publication Number Publication Date
CN104598196A true CN104598196A (zh) 2015-05-06

Family

ID=53124021

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410848567.4A Pending CN104598196A (zh) 2014-12-30 2014-12-30 一种浮点处理装置及方法

Country Status (1)

Country Link
CN (1) CN104598196A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020056764A1 (zh) * 2018-09-21 2020-03-26 华为技术有限公司 一种浮点精度检测方法与装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101221496A (zh) * 2008-01-23 2008-07-16 中国科学院计算技术研究所 精简指令集计算机处理器装置及其数据处理方法
CN101256504A (zh) * 2008-03-17 2008-09-03 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
CN102495719A (zh) * 2011-12-15 2012-06-13 中国科学院自动化研究所 一种向量浮点运算装置及方法
CN103150146A (zh) * 2013-01-31 2013-06-12 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101221496A (zh) * 2008-01-23 2008-07-16 中国科学院计算技术研究所 精简指令集计算机处理器装置及其数据处理方法
CN101256504A (zh) * 2008-03-17 2008-09-03 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
CN102495719A (zh) * 2011-12-15 2012-06-13 中国科学院自动化研究所 一种向量浮点运算装置及方法
CN103150146A (zh) * 2013-01-31 2013-06-12 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
沈俊: "浮点运算加速器的设计研究", 《万方学位论文》 *
王伟: "高性能浮点处理单元设计", 《万方学位论文》 *
谷理想等: "一种43位浮点乘法器的设计", 《微电子学与计算机》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020056764A1 (zh) * 2018-09-21 2020-03-26 华为技术有限公司 一种浮点精度检测方法与装置

Similar Documents

Publication Publication Date Title
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
CN109643228B (zh) 用于浮点乘加运算的低能耗尾数乘法
US8214417B2 (en) Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction
CN101620589B (zh) 处理器中的有效并行浮点异常处理
US10140046B2 (en) Supporting data compression using match scoring
US9542154B2 (en) Fused multiply add operations using bit masks
GB2497469B (en) Multiply add functional unit capable of executing scale,round,Getexp,round,getmant,reduce,range and class instructions
CN103988171B (zh) 在数据处理系统中用于执行浮点算术运算的方法和装置
US9170772B2 (en) Method and apparatus for decimal floating-point data logical extraction
KR20090014292A (ko) 비정규 피연산자를 위한 모드―기반 곱셈-가산 프로세서
CN101438232A (zh) 不同浮点格式的浮点加法
JP2021525403A (ja) 改良された低精度の2進浮動小数点形式設定
US20190196785A1 (en) System and method of floating point multiply operation processing
CN103180820A (zh) 用于执行浮点除法的方法和装置
TW201730759A (zh) 併合乘-加(fma)低功能性單元
CN107851007B (zh) 宽数据类型的比较的方法和装置
CN100543670C (zh) 产生扩展精度的整数除的商和余数的方法和装置
US20160253235A1 (en) Recycling Error Bits in Floating Point Units
CN105302519A (zh) 用于执行浮点平方根运算的装置和方法
CN106997284B (zh) 实现浮点运算操作的方法和装置
CN104598196A (zh) 一种浮点处理装置及方法
Toronto et al. Practically accurate floating-point math
US8495343B2 (en) Apparatus and method for detection and correction of denormal speculative floating point operand
US10459689B2 (en) Calculation of a number of iterations
CN112394904A (zh) 一种浮点数据处理方法、运算器及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150506

RJ01 Rejection of invention patent application after publication