CN104572018A - 一种用于浮点常数生成的装置及方法 - Google Patents

一种用于浮点常数生成的装置及方法 Download PDF

Info

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
Application number
CN201410841957.9A
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 CN201410841957.9A priority Critical patent/CN104572018A/zh
Publication of CN104572018A publication Critical patent/CN104572018A/zh
Pending legal-status Critical Current

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所述的生成方法,其特征在于:所述的浮点指令是浮点运算指令或浮点传送指令。
CN201410841957.9A 2014-12-30 2014-12-30 一种用于浮点常数生成的装置及方法 Pending CN104572018A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 高通股份有限公司 浮点常数产生指令

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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的流水浮点乘累加方法
EP3447634B1 (en) Non-linear function computing device and method
CN107305485B (zh) 一种用于执行多个浮点数相加的装置及方法
CN101630243B (zh) 超越函数装置以及用该装置实现超越函数的方法
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
CN111767516A (zh) 用于利用所选择的舍入来执行浮点加法的系统和方法
CN103914276A (zh) 利用浮点架构的定点除法电路
CN109863476A (zh) 动态变量精度计算
CN113590195B (zh) 支持浮点格式乘加的存算一体化dram计算部件
Hormigo et al. Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest
CN103135960A (zh) 一种基于fpga的集成浮点运算器的设计方法
US9703626B2 (en) Recycling error bits in floating point units
CN104572018A (zh) 一种用于浮点常数生成的装置及方法
CN101510149B (zh) 一种数据处理方法和装置
Lyu et al. PWL-based architecture for the logarithmic computation of floating-point numbers
Dorrigiv et al. Low area/power decimal addition with carry-select correction and carry-select sum-digits
Daud et al. Hybrid modified booth encoded algorithm-carry save adder fast multiplier
CN102073473A (zh) 基于fpga的十进制浮点乘法器设计
CN104615404A (zh) 一种基于查表操作的高速浮点除法部件装置
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
CN104823153A (zh) 引导变化预测器逻辑
Lastras et al. A logarithmic approach to energy-efficient GPU arithmetic for mobile devices
US8924447B2 (en) Double precision approximation of a single precision operation

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