CN104572018A - 一种用于浮点常数生成的装置及方法 - Google Patents
一种用于浮点常数生成的装置及方法 Download PDFInfo
- Publication number
- CN104572018A CN104572018A CN201410841957.9A CN201410841957A CN104572018A CN 104572018 A CN104572018 A CN 104572018A CN 201410841957 A CN201410841957 A CN 201410841957A CN 104572018 A CN104572018 A CN 104572018A
- Authority
- CN
- China
- Prior art keywords
- bit
- field
- floating point
- floating
- constant
- 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
Links
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
一种用于浮点常数生成的装置,包括:译码单元,用于对浮点指令进行译码,产生操作指示符与m比特的二进制立即数;浮点常数生成单元,用于接受译码单元的信息,对m比特的二进制立即数进行逻辑操作,其中:m比特二进制立即数包含两个域,1比特的第一比特域和(m-1)比特的第二比特域;提取m比特立即数中的第一比特域,产生浮点常数的符号字段;提取m比特立即数中的第二比特域,将第二比特域作为小数点位置固定的定点数进行处理,产生浮点常数的尾数字段与指数字段;联合符号字段、指数字段、尾数字段封装生成n比特的浮点规格常数,n为整数。以及一种浮点常数生成方法。本发明有效提升执行效率、降低代码密度。
Description
技术领域
本发明涉及微处理器领域,尤其涉及浮点常数生成及浮点运算领域。
背景技术
微处理器普遍实现了浮点执行单元,用于硬件上支持浮点运算,提高处理器的浮点处理能力。同整形程序类似,浮点程序中也存在着大量的常数,这些常数往往需要直接参与浮点运算。如何高效的生成浮点规格的常数,对于进一步提高处理器的浮点处理效率具有重要的意义。
在整形指令与相关数据通路设计中,处理器通过在指令中设计立即数域,由这个立即数域表征整形数并直接参与整形运算,提高和常数相关的整形运算的执行效率。相比之下,由于浮点数采用了特殊的编码方式(IEEE-754浮点协议规定),使得浮点数的表征需要大量的比特资源。其中,单精度浮点数需要32比特,双精度浮点数需要64比特,扩展单精度和扩展双精度需要更多的比特资源。浮点指令能够提供的有限的二进制立即数,给浮点规格常数的生成造成了很大的困难。
浮点常数生成方面,传统的微处理器首先通过软件工具链将浮点常数保存至外部存储器中,当处理器运行中需要用到这个浮点常数时,再通过内存访问指令从外部存储器中加载进入浮点寄存器,然后再以寄存器的方式参与浮点运算。这种实现方式首先需要通过指令产生指向目标浮点常数的指针,然后再通过内存访问指令从指针指向的存储器地址上访问获取浮点常数。无论是执行效率,还是代码空间,传统的浮点常数生成方法都不够优化。
发明内容
为了克服已有微处理器的浮点常数生成技术的执行效率较低、代码密度较高的不足,本发明提供了一种有效提升执行效率、降低代码密度的用于浮点常数生成的装置及方法。
本发明解决其技术问题所采用的技术方案是:
一种用于浮点常数生成的装置,所述装置包括:
译码单元,用于对浮点指令进行译码,产生操作指示符与m比特的二进制立即数,m为整数;
浮点常数生成单元,用于接受译码单元的信息,对m比特的二进制立即数进行逻辑操作,所述的m比特二进制立即数包含两个域,1比特的第一比特域和(m-1)比特的第二比特域,联合符号字段、指数字段、尾数字段封装生成n比特的浮点规格常数,n为整数;
所述的浮点常数生成单元包括:
符号字段生成电路,用于提取m比特立即数中的第一比特域,产生浮点常数的符号字段;
指数和尾数字段生成电路,用于提取m比特立即数中的第二比特域,将第二比特域作为小数点位置固定的定点数进行处理,产生浮点常数的尾数字段与指数字段。
进一步,n>m。
更进一步,所述的浮点指令是浮点运算指令或浮点传送指令。
再进一步,所述浮点常数生成单元中,第二比特域包含a比特的整数部分A和b比特的小数部分B,a+b=m-1;
对第二比特域从左往右搜索数值为1的比特,并计算其位置q,记第二比特域的最高位位置为(m-2),最低位位置记为0,0≤q≤(m-2);
截取第二比特域中第(q-1)位至第0位的比特组,并在其右边扩充比特零,结果作为浮点常数的尾数字段;
根据位置信息q与定点数的小数位置信息b,计算产生浮点常数的指数字段。
一种浮点常数生成方法,所述生成方法包括以下步骤:
步骤a,对浮点指令进行译码,产生操作指示符与m比特的二进制立即数,m为整数;
步骤b,依据操作指示符,提取m比特立即数的第一比特域和第二比特域,其中第一比特域为1比特,第二比特域为(m-1)比特;
步骤c,对第一比特域进行处理,产生浮点常数的符号字段;
步骤d,将第二比特域作为小数点位置固定的定点数进行处理,产生浮点常数的指数字段与尾数字段;
步骤e,联合符号字段、指数字段、尾数字段封装生成n比特的浮点常数,n为整数。
进一步,所述步骤d中,将第二比特域作为小数点位置固定的定点数进行处理的过程如下:
步骤d1,第二比特域进一步包含a比特的整数部分A和b比特的小数部分B,a+b=m-1;
步骤d2,对第二比特域从左往右搜索数值为1的比特,并计算其位置q,记第二比特域的最高位位置为(m-2),最低位位置记为0,0<=q<=(m-2);
步骤d3,截取第二比特域中第(q-1)位至第0位的比特组,并在其右边扩充比特零,结果作为浮点常数的尾数字段;
步骤d4,根据位置信息q与定点数的小数位置信息b,计算产生浮点常数的指数字段。
再进一步,n>m。
所述的浮点指令是浮点运算指令或浮点传送指令。
本发明的有益效果主要表现在:本发明的浮点常数生成装置和方法,在增加有限的硬件资源与设计复杂度的前提下,使得微处理器具备了常见浮点常数的生成能力,提高微处理器处理常数相关的浮点运算的执行效率,对于降低代码密度也有积极的作用。
附图说明
图1为浮点协议标准定义的浮点数的结构图。
图2为浮点常数生成装置的结构图。
图3为m比特立即数的结构图。
图4为浮点常数生成的典型例子示意图。
具体实施方式
下面结合附图对本发明作进一步描述。
实施例1
参照图1~图4,一种用于浮点常数生成的装置,所述装置包括:
译码单元10,用于对浮点指令进行译码,产生操作指示符与m比特的二进制立即数,m为整数;
浮点常数生成单元20,用于接受译码单元的信息,对m比特的二进制立即数进行逻辑操作,所述的m比特二进制立即数包含两个域,1比特的第一比特域和(m-1)比特的第二比特域,联合符号字段、指数字段、尾数字段封装生成n比特的浮点规格常数,n为整数;
所述的浮点常数生成单元包括:
符号字段生成电路21,用于提取m比特立即数中的第一比特域,产生浮点常数的符号字段;
指数和尾数字段生成电路22,用于提取m比特立即数中的第二比特域,将第二比特域作为小数点位置固定的定点数进行处理,产生浮点常数的尾数字段与指数字段。
进一步,n>m。
更进一步,所述的浮点指令是浮点运算指令或浮点传送指令。
再进一步,所述浮点常数生成单元中,第二比特域包含a比特的整数部分A和b比特的小数部分B,a+b=m-1;
对第二比特域从左往右搜索数值为1的比特,并计算其位置q,记第二比特域的最高位位置为(m-2),最低位位置记为0,0≤q≤(m-2);
截取第二比特域中第(q-1)位至第0位的比特组,并在其右边扩充比特零,结果作为浮点常数的尾数字段;
根据位置信息q与定点数的小数位置信息b,计算产生浮点常数的指数字段。
本实施例首先说明IEEE-754浮点协议所规定的单精度浮点数与双精度浮点数的格式,如图1所示。无论单精度浮点数还是双精度浮点数都包含三个字段,分别是符号字段、指数字段与尾数字段,其中单精度浮点数表示共需要32比特,双精度浮点数表示共需要64比特。
本实施例中,如图2所示,所述浮点常数生成装置,包括译码单元10和浮点常数生成单元20,其中浮点常数生成单元20进一步包含了符号字段生成电路21和指数和尾数字段生成电路22。
述的译码单元10对输入的浮点指令进行译码,获取浮点操作指示符和m比特的二进制立即数。其中,浮点指令可以是浮点传送指令或浮点运算指令。对于浮点传送指令,指令的功能是产生浮点常数,并写回至微处理器的浮点寄存器中;对于浮点运算指令,指令的功能是产生一个或者若干浮点常数并作为源操作数,参与浮点运算,运算结果写回到浮点寄存器中。
所述的浮点常数生成单元20将m比特的二进制立即数分成两个部分,1比特的第一比特域和(m-1)比特的第二比特域,如图3所示。符号字段生成电路21直接将第一比特域的比特视为符号位,产生目标浮点常数的符号字段。指数和尾数字段生成电路22将第二比特域视为小数点固定的定点数处理。第二比特域的结构如图3所示,包含整数部分和小数部分,其中整数部分A占用a比特,小数部分B占用b比特,a+b=(m-1)。指数和尾数字段生成电路22对第二比特域从左往右搜索数值为1的第一个比特位,截取该比特的右侧比特组,并在其右侧添加若干比特0,产生符合目标浮点数规格的尾数字段。进一步,指数和尾数字段生成电路22计算第一个数值为1的比特的位置信息,同时根据小数点的位置信息,计算产生指数字段。最后,浮点常数生成单元20将产生的符号字段、指数字段、尾数字段封装产生符合目标浮点数规格的n比特浮点常数。
实施例1
参照图1~图4,一种浮点常数生成方法,所述生成方法包括以下步骤:
步骤a,对浮点指令进行译码,产生操作指示符与m比特的二进制立即数,m为整数;
步骤b,依据操作指示符,提取m比特立即数的第一比特域和第二比特域,其中第一比特域为1比特,第二比特域为(m-1)比特;
步骤c,对第一比特域进行处理,产生浮点常数的符号字段;
步骤d,将第二比特域作为小数点位置固定的定点数进行处理,产生浮点常数的指数字段与尾数字段;
步骤e,联合符号字段、指数字段、尾数字段封装生成n比特的浮点常数,n为整数。
进一步,所述步骤d中,将第二比特域作为小数点位置固定的定点数进行处理的过程如下:
步骤d1,第二比特域进一步包含a比特的整数部分A和b比特的小数部分B,a+b=m-1;
步骤d2,对第二比特域从左往右搜索数值为1的比特,并计算其位置q,记第二比特域的最高位位置为(m-2),最低位位置记为0,0<=q<=(m-2);
步骤d3,截取第二比特域中第(q-1)位至第0位的比特组,并在其右边扩充比特零,结果作为浮点常数的尾数字段;
步骤d4,根据位置信息q与定点数的小数位置信息b,计算产生浮点常数的指数字段。
本实施例的浮点常数生成方法,包含如下步骤:
步骤S100,对输入的浮点指令进行译码,产生操作指示符和m比特的二进制立即数。
步骤S200,依据操作指示符,提取m比特立即数的第一比特域和第二比特域,其中,第一比特域为1比特,第二比特域为(m-1)比特。
步骤S300,对第一比特域进行处理,直接产生浮点常数的符号字段,其中比特0代表正数,比特1代表负数;
步骤S400,将第二比特域视为小数点固定的定点数进行处理,产生浮点常数的尾数字段和指数字段。
进一步,步骤S400具体包含如下步骤:
步骤S410,第二比特域进一步包含了a比特的整数部分A和b比特的小数部分B,a+b=m-1;
步骤S420,对第二比特域从左往右搜索数值为1的比特,并计算其位置信息q,记第二比特域的最高位位置为(m-2),最低位位置记为0,0<=q<=(m-2);
步骤S430,截取第二比特域中第(q-1)位至第0位的比特组,并在其右边扩充若干比特0,产生符合目标浮点数规格的尾数字段。结合图4的典型例子,假设8比特的第二比特域为00101010,则截取的比特组为01010,产生的尾数字段为0101000…00;
步骤S440,根据第二比特域中最高比特1的位置信息q,以及默认的小数点位置信息,计算产生浮点常数的指数字段。结合图4的典型例子,8比特的第二比特域为00101010,则首个1的位置信息q为5,由于小数点的位置固定为3,则指数字段为5-3=2。
步骤S500,联合符号字段、指数字段、尾数字段封装生成符合目标浮点数规格的n比特浮点常数。
Claims (8)
1.一种用于浮点常数生成的装置,其特征在于:所述装置包括:
译码单元,用于对浮点指令进行译码,产生操作指示符与m比特的二进制立即数,m为整数;
浮点常数生成单元,用于接受译码单元的信息,对m比特的二进制立即数进行逻辑操作,所述的m比特二进制立即数包含两个域,1比特的第一比特域和(m-1)比特的第二比特域,联合符号字段、指数字段、尾数字段封装生成n比特的浮点规格常数,n为整数;
所述的浮点常数生成单元包括:
符号字段生成电路,用于提取m比特立即数中的第一比特域,产生浮点常数的符号字段;
指数和尾数字段生成电路,用于提取m比特立即数中的第二比特域,将第二比特域作为小数点位置固定的定点数进行处理,产生浮点常数的尾数字段与指数字段。
2.如权利要求1所述的用于浮点常数生成的装置,其特征在于:n>m。
3.如权利要求1或2所述的用于浮点常数生成的装置,其特征在于:所述的浮点指令是浮点运算指令或浮点传送指令。
4.如权利要求1或2所述的用于浮点常数生成的装置,其特征在于:所述浮点常数生成单元中,第二比特域包含a比特的整数部分A和b比特的小数部分B,a+b=m-1;
对第二比特域从左往右搜索数值为1的比特,并计算其位置q,记第二比特域的最高位位置为(m-2),最低位位置记为0,0≤q≤(m-2);
截取第二比特域中第(q-1)位至第0位的比特组,并在其右边扩充比特零,结果作为浮点常数的尾数字段;
根据位置信息q与定点数的小数位置信息b,计算产生浮点常数的指数字段。
5.一种如权利要求1所述的用于浮点常数生成的装置实现的浮点常数生成方法,其特征在于:所述生成方法包括以下步骤:
步骤a,对浮点指令进行译码,产生操作指示符与m比特的二进制立即数,m为整数;
步骤b,依据操作指示符,提取m比特立即数的第一比特域和第二比特域,其中第一比特域为1比特,第二比特域为(m-1)比特;
步骤c,对第一比特域进行处理,产生浮点常数的符号字段;
步骤d,将第二比特域作为小数点位置固定的定点数进行处理,产生浮点常数的指数字段与尾数字段;
步骤e,联合符号字段、指数字段、尾数字段封装生成n比特的浮点常数,n为整数。
6.如权利要求5所述的生成方法,其特征在于:所述步骤d中,将第二比特域作为小数点位置固定的定点数进行处理的过程如下:
步骤d1,第二比特域进一步包含a比特的整数部分A和b比特的小数部分B,a+b=m-1;
步骤d2,对第二比特域从左往右搜索数值为1的比特,并计算其位置q,记第二比特域的最高位位置为(m-2),最低位位置记为0,0<=q<=(m-2);
步骤d3,截取第二比特域中第(q-1)位至第0位的比特组,并在其右边扩充比特零,结果作为浮点常数的尾数字段;
步骤d4,根据位置信息q与定点数的小数位置信息b,计算产生浮点常数的指数字段。
7.如权利要求5或6所述的生成方法,其特征在于:n>m。
8.如权利要求5或6所述的生成方法,其特征在于:所述的浮点指令是浮点运算指令或浮点传送指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841957.9A CN104572018A (zh) | 2014-12-30 | 2014-12-30 | 一种用于浮点常数生成的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841957.9A CN104572018A (zh) | 2014-12-30 | 2014-12-30 | 一种用于浮点常数生成的装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104572018A true CN104572018A (zh) | 2015-04-29 |
Family
ID=53088196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410841957.9A Pending CN104572018A (zh) | 2014-12-30 | 2014-12-30 | 一种用于浮点常数生成的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572018A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094744A (zh) * | 2015-07-28 | 2015-11-25 | 成都腾悦科技有限公司 | 一种可变浮点数据微处理器 |
CN111796798A (zh) * | 2020-09-08 | 2020-10-20 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578059B1 (en) * | 1998-10-10 | 2003-06-10 | Institute For The Development Of Emerging Architectures, L.L.C. | Methods and apparatus for controlling exponent range in floating-point calculations |
US20130103732A1 (en) * | 2010-07-01 | 2013-04-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Circular Floating-Point Number Generator and a Circular Floating-Point Number Adder |
CN104106045A (zh) * | 2012-02-09 | 2014-10-15 | 高通股份有限公司 | 浮点常数产生指令 |
-
2014
- 2014-12-30 CN CN201410841957.9A patent/CN104572018A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578059B1 (en) * | 1998-10-10 | 2003-06-10 | Institute For The Development Of Emerging Architectures, L.L.C. | Methods and apparatus for controlling exponent range in floating-point calculations |
US20130103732A1 (en) * | 2010-07-01 | 2013-04-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Circular Floating-Point Number Generator and a Circular Floating-Point Number Adder |
CN104106045A (zh) * | 2012-02-09 | 2014-10-15 | 高通股份有限公司 | 浮点常数产生指令 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094744A (zh) * | 2015-07-28 | 2015-11-25 | 成都腾悦科技有限公司 | 一种可变浮点数据微处理器 |
WO2017016233A1 (zh) * | 2015-07-28 | 2017-02-02 | 成都腾悦科技有限公司 | 一种可变浮点数据微处理器 |
CN105094744B (zh) * | 2015-07-28 | 2018-01-16 | 成都腾悦科技有限公司 | 一种可变浮点数据微处理器 |
CN111796798A (zh) * | 2020-09-08 | 2020-10-20 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
CN111796798B (zh) * | 2020-09-08 | 2020-12-22 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110036368B (zh) | 用于执行算术运算以累加浮点数的装置及方法 | |
CN1928809A (zh) | 用于执行浮点运算的系统、设备和方法 | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN107305485B (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
EP3447634B1 (en) | Non-linear function computing device and method | |
KR20080055985A (ko) | 선택가능 준정밀도를 가진 부동―소수점 프로세서 | |
CN111767516A (zh) | 用于利用所选择的舍入来执行浮点加法的系统和方法 | |
CN103914276A (zh) | 利用浮点架构的定点除法电路 | |
CN109863476A (zh) | 动态变量精度计算 | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
CN113590195B (zh) | 支持浮点格式乘加的存算一体化dram计算部件 | |
CN103135960A (zh) | 一种基于fpga的集成浮点运算器的设计方法 | |
CN115268832A (zh) | 浮点数取整的方法、装置以及电子设备 | |
CN101510149B (zh) | 一种数据处理方法和装置 | |
US9703626B2 (en) | Recycling error bits in floating point units | |
Lyu et al. | PWL-based architecture for the logarithmic computation of floating-point numbers | |
CN104572018A (zh) | 一种用于浮点常数生成的装置及方法 | |
Dorrigiv et al. | Low area/power decimal addition with carry-select correction and carry-select sum-digits | |
Li et al. | Vector-Based Dedicated Processor Architecture for Efficient Tracking in VSLAM Systems | |
CN103399725A (zh) | 一种不恢复余数的除法器 | |
CN104823153A (zh) | 引导变化预测器逻辑 | |
Daud et al. | Hybrid modified booth encoded algorithm-carry save adder fast multiplier | |
CN102073473A (zh) | 基于fpga的十进制浮点乘法器设计 | |
CN104615404A (zh) | 一种基于查表操作的高速浮点除法部件装置 | |
CN116700664A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150429 |