浮点数幂运算处理方法、装置和计算机系统的制作方法

文档序号:6597814阅读:188来源:国知局
专利名称:浮点数幂运算处理方法、装置和计算机系统的制作方法
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种浮点数幂运算处理方法、装置 和计算机系统。
背景技术
现有技术中,计算机通常会进行浮点数的幂运算,浮点数的幂运算是计算机处理 过程中经常会遇到的一类幂运算,其数学表达式可以表示为χ%其中,X为浮点数变量,在不 同的场景下可以取不同的值,a为浮点数的指数,且a为常数。在实际应用中,计算机在进行浮点数幂运算时,会调用库函数(pow/powf)来进行 计算,pow/powf的功能是用来计算以X为底的y次方值。在进行浮点数的幂运算时,POW可 以表达为 double pow (double χ, double y),powf 可以表达为 float powf (float χ, floaty)。在实现本发明过程中,发明人发现现有技术中至少存在如下问题调用库函数进 行浮点数幂运算所消耗的计算时间是普通浮点数乘法运算的几十倍,如果计算机在计算过 程中需要进行大量的浮点数幂运算,就需要频繁调用库函数计算浮点数的幂运算,因此,会 导致计算机的处理效率低下。

发明内容
本发明实施例提供一种浮点数幂运算处理方法、装置和计算机系统,可以提高计 算机处理浮点数幂运算的处理速度。本发明实施例提供一种浮点数幂运算处理方法,包括根据浮点数X在内存中的二进制科学计数法存储结构,将所述浮点数X设置为y 与2n乘积的形式,其中,y的绝对值为大于1小于2的实数,η为大于负127小于128的整 数;根据预先创建的第一预处理表获取ya的取值,并根据第二预处理表获取2na的取 值,其中,所述第一预处理表存储有f的取值,所述第二预处理表存储有2na的取值,a为常 数;根据所述r的取值和所述2na的取值获得所述Xa的计算结果。本发明实施例提供一种浮点数幂运算处理装置,包括设置模块,用于根据浮点数X在内存中的二进制科学计数法存储结构,将所述浮 点数X设置为y与2n乘积的形式,其中,y的绝对值为大于1小于2的实数,η为大于负127 小于128的整数;查询模块,用于根据预先创建的第一预处理表查询/的取值,并根据第二预处理 表查询2na的取值,其中,所述第一预处理表存储有f的取值,所述第二预处理表存储有2na 的取值,a为常数;计算模块,用于根据所述ya的取值和所述2na的取值获得所述Xa的计算结果。
本发明实施例提供一种计算机系统,包括上述浮点数幂运算处理装置。本发明实施例的浮点数幂运算处理方法、装置和计算机系统,通过建立第一预处 理表和第二预处理表,并通过查表方式进行浮点数幂运算,克服了现有技术中计算机通过 调用库函数计算大量浮点数幂运算而导致计算机的处理效率低下的缺陷,能够有效提高计 算机处理浮点数幂运算的计算效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。图1是本发明实施例的浮点数幂运算处理方法的流程图;图2是本发明实施例的浮点数存储结构的示意图;图3是本发明实施例的浮点数幂运算处理装置的示意图。
具体实施例方式下面结合附图和具体实施例进一步说明本发明实施例的技术方案。根据本发明的实施例,提供了一种浮点数幂运算处理方法,图1是本发明实施例 的浮点数幂运算处理方法的流程图,如图1所示,根据本发明实施例的浮点数幂运算处理 方法包括步骤101,根据浮点数X在内存中的二进制科学计数法存储结构,将浮点数X设置 为y与2n乘积的形式,其中,y的绝对值为大于1小于2的实数,η为大于负127小于1 的整数;具体地,上述二进制科学计数法存储结构为士 1. χ与2n的存储结构,即士 1. x*2n 的存储结构,图2是本发明实施例的浮点数存储结构的示意图,如图2所示,在32位系统 上,浮点数占用32比特(bit)的空间,在存储浮点数时,32bit的空间分为三个部分符号 位、指数位、尾数位。其中,浮点数X的士符号存储在符号位中,例如,0代表正,1代表为负; 浮点数X的指数η存储在指数位中,可以采用移位存储的方式进行存储;浮点数X的尾数χ 存储在尾数位中,其中,χ为大于0小于1的实数。也就是说,利用二进制科学计数法存储 的浮点数,都可以表示为士 1.抖2"的形式,其中,η为大于-127小于128的整数。需要说明 的是,上述浮点数为在32bit空间内能够表达的大小范围和精度内的浮点数。其中,符号位 可以为1比特,指数位可以为8比特,尾数位可以为23比特。在步骤101中,根据浮点数士 1. x*2n的二进制科学计数法存储结构,通过简单的 位运算即可将任意的浮点数设置为下列形式X= 士(1+X)*2n,g卩,根据X= 士 l.x*2n,可以 将浮点数X设置为士(1+x)与2n乘积的形式,令士(1+x) =y,则可以将浮点数X设置为与 2n乘积(#2n)的形式,即令X = y*2n。步骤102,根据预先创建的第一预处理表获取f的取值,并根据第二预处理表获取 2na的取值,其中,第一预处理表存储有r的取值,第二预处理表存储有2na的取值,a为常 数;
具体地,由于将浮点数X设置为了 X = y*2n的形式,因此,在计算Xa时,可以通过 计算Xa = ya*2na来确定Xa的计算结果。在实际应用中,由于y在内存中占用23bit,共有223种可能的取值,则r也可以有 Z3种可能的取值;因此,在系统预处理阶段,预先建立一个第一预处理表,用来存放ya的223 种可能的取值,第一预处理表可以以32bit中23bit的尾数作为索引,通过pow或powf计 算23bit的尾数所对应的f的取值。由于η在内存中占用8bit,共有256种可能的取值, 则2na也有256种可能的取值,因此,在系统预处理阶段,还需要再建立一个第二预处理表, 用来存放2na的256种可能的取值,第二预处理表以32bit中Sbit指数作为索引,并通过 pow或powf计算Sbit的指数所对应的2na的取值。步骤103,根据f的取值和2na的取值获得Xa的计算结果。具体地,由于Xa = ya*2na,因此,将f的取值与2na的取值相乘,即可得到Xa的计算 结果。从上述处理可以看出,通过在系统预处理阶段构建第一预处理表和第二预处理 表,在系统运行过程中,求Xa的计算过程就变为两次查表和一次浮点数相乘的过程,能够有 效提高计算机处理浮点数幂运算的计算效率。需要说明的是,在实际应用中,第一预处理表的长度可以为= 8M,第二预处理 表的长度可以为256,如果两个预处理表中每一个表项占用4个字节,则第一预处理和第二 预处理表所占用的空间分别为8M*4 = 32M字节和IK字节。显然,第一预处理表占用了比 较大的内存空间。因此,在实际应用中,本发明实施例可以通过降低精度来节省空间。具体 地,尾数位占用23bit,如果舍弃尾数位的最后!3bit,则第一预处理表占用的空间降至4*22° =4M,相应的,尾数位表示的尾数χ的精度则降至2_2° ^ 0. 00000095。依次类推,如果系统 只能为第一预处理表提供IM的内存空间,则尾数位必须被削减到18位,尾数位表示的尾数 χ的精度也只能达到2_18 ^ 0. 0000038。也就是说,第一预处理表可以存储有T个f的取 值,其中,ζ为大于0且小于或等于23的整数,在实际应用中,ζ的取值可以在精度与内存资 源之间权衡抉择。通过上述处理,能够降低第一预处理表所占用内存的空间,并节省系统的 资源。需要说明的是,本发明实施例的技术方案根据浮点数在计算机中的存储规律,并 通过查表的方式提高了浮点数幂运算的计算效率。本发明实施例可以应用于计算机需要处 理浮点数幂运算的各种情况下。特别是计算机在频繁大量地处理浮点数幂运算的情况下, 例如,计算机在处理统计分析数据时,如果该统计分析数据中需要频繁地进行浮点数的幂 运算,则可以应用本发明实施例的技术方案进行浮点数的幂运算的处理,可以大幅度地提 高计算机处理该数据的效率。根据本发明的实施例,提供了一种浮点数幂运算处理装置,图3是本发明实施例 的浮点数幂运算处理装置的示意图,如图3所示,根据本发明实施例的浮点数幂运算处理 装置包括设置模块30、查询模块32、计算模块34。下面,对本发明实施例的上述模块进行 详细说明。设置模块30,用于根据浮点数X在内存中的二进制科学计数法存储结构,将所述 浮点数X设置为y与2n乘积的形式,其中,y的绝对值为大于1小于2的实数,η为大于负 127小于128的整数;
具体地,上述二进制科学计数法存储结构为士 1. x*2n的存储结构,在32位系统 上,浮点数占用32bit的空间,在存储浮点数时,32bit的空间分为三个部分符号位、指数 位、尾数位。其中,浮点数X的士符号存储在符号位中,例如,0代表正,1代表为负;浮点数 X的指数η存储在指数位中,可以采用移位存储的方式进行存储;浮点数X的尾数χ存储在 尾数位中,其中,χ为大于0小于1的实数。也就是说,利用二进制科学计数法存储的浮点 数,都可以表示为士 1. x*2n的形式,其中,η为大于负127小于128的整数。需要说明的是, 上述浮点数为在32bit空间内能够表达的大小范围和精度内的浮点数。浮点数存储结构可 以参照图2进行理解。其中,符号位可以为1比特,指数位可以为8比特,尾数位可以为23 比特。具体的,设置模块30可以包括第一设置子模块301以及第二设置子模块302,其 中第一设置子模块301,用于根据浮点数士 1. x*2n的二进制科学计数法存储结构,通 过简单的位运算将浮点数X设置为下列形式X= 士(l+x)*2n。也就是说,第一设置子模块 用于根据X= 士 l.x*2n,将浮点数X设置为X= 士(1+。*2"的形式。第二设置子模块302,用于使第一设置子模块获得的士(1+x)等于y,将所述浮点 数X设置为y与2n乘积的形式。具体的,可以令士(1+x) =y,将浮点数X设置为艸2"的 形式,即X = y*2n。查询模块32,用于根据预先创建的第一预处理表查询ya的取值,并根据第二预处 理表查询2na的取值,其中,第一预处理表存储有r的取值,第二预处理表存储有2na的取值, a为常数;具体地,由于设置模块30将浮点数X设置为了 X = y*2n的形式,因此,在计算Xa 时,可以通过计算Xa = ya*2na来确定Xa的计算结果。在实际应用中,y在内存中占用23bit,共有223种可能的取值,则r也可以有223 种可能的取值;在系统预处理阶段,可以预先建立一个第一预处理表,用来存放ya的沪种 可能的取值,第一预处理表可以以32bit中23bit的尾数作为索引,通过pow或powf计算 23bit的尾数所对应的f的取值。η在内存中占用8bit,共有256种可能的取值,2na也有 256种可能的取值,在系统预处理阶段,还需要再建立一个第二预处理表,用来存放2na的 256种可能的取值,第二预处理表以32bit中Sbit指数作为索引,并通过pow或powf计算 Sbit的指数所对应的2na的取值。计算模块34,用于根据f的取值和2na的取值获得Xa的计算结果。具体地,由于 Xa = ya*2na,因此,计算模块34将f的取值与2na的取值相乘,即可得到Xa的计算结果。从上述处理可以看出,本发明实施例通过在系统预处理阶段构建第一预处理表和 第二预处理表,在系统运行过程中,求Xa的计算过程就变为两次查表和一次浮点数相乘的 过程,能够有效提高计算机处理浮点数幂运算的计算效率。进一步的,该装置还可以包括预设模块36,用于预先设置第一预处理表和第二预处理表,其中,所述第一预处理 表存储有f的取值,所述第二预处理表存储有2na的取值,a为常数。具体的,在系统预处理阶段,可以通过预设模块36预先建立第一预处理表以及 第二预处理表,其中,第一预处理表用来存放ya的沪种可能的取值;第一预处理表可以以32bit中23bit的尾数作为索引,通过pow或powf计算23bit的尾数所对应的f的取值。由于η在内存中占用8bit,共有256种可能的取值,则2na也有256种可能的取值, 因此,可以通过预设模块36预先建立第二预处理表用来存放2na的256种可能的取值,第二 预处理表可以以32bit中Sbit指数作为索引,并通过pow或powf计算Sbit的指数所对应 的2na的取值。需要说明的是,在实际应用中,第一预处理表的长度为223 = 8M,第二预处理表的 长度为256,如果两个预处理表中每一个表项占用4个字节,则第一预处理和第二预处理表 所占用的空间分别为8M*4 = 32M字节和IK字节。显然,第一预处理表占用了比较大的内 存空间。为了解决上述问题,在实际应用中,本发明实施例通过降低精度来节省空间。具体 地,尾数位占用23bit,如果舍弃尾数位的最后!3bit,则第一预处理表占用的空间降至4*22° =4M,相应的,尾数位表示的尾数χ的精度则降至2_2° ^ 0. 00000095。依次类推,如果系统 只能为第一预处理表提供IM的内存空间,则尾数位必须被削减到18位,尾数位表示的尾数 χ的精度也只能达到2_18 ^ 0. 0000038。也就是说,第一预处理表可以存储有T个f的取 值,其中,ζ为大于0且小于或等于23的整数,在实际应用中,ζ的取值可以在精度与内存资 源之间权衡抉择。通过上述处理,能够降低第一预处理表所占用内存的空间,并节省系统的资源。需要说明的是,本发明实施例可以应用于计算机需要处理浮点数幂运算的各种情 况下。特别是计算机在频繁大量地处理浮点数幂运算的情况下,例如,计算机在处理统计 分析数据时,如果该统计分析数据中需要频繁地进行浮点数的幂运算,则可以应用本发明 实施例的技术方案进行浮点数的幂运算的处理,可以大幅度地提高计算机处理该数据的效 率。根据本发明的实施例,提供了一种计算机系统,该计算机系统包括浮点数幂运算 处理装置,该浮点数幂运算处理装置可以采用上述图3的实施例中的浮点数幂运算处理装 置,具体可以参见上述装置的实施例,此处不再赘述。如上述实施例所述,通过建立第一预处理表和第二预处理表,并通过查表方式进 行浮点数幂运算,克服了现有计算机系统中通过调用库函数计算大量浮点数幂运算而导致 计算机的处理效率低下的缺陷,能够有效提高计算机系统处理浮点数幂运算的计算效率。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单 元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 的劳动的情况下,即可以理解并实施。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的 软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器 (ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或任意其它 形式的存储介质中。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
1.一种浮点数幂运算处理方法,其特征在于,包括根据浮点数X在内存中的二进制科学计数法存储结构,将所述浮点数X设置为y与2n 乘积的形式,其中,y的绝对值为大于1小于2的实数,η为大于负127小于128的整数;根据预先创建的第一预处理表获取f的取值,并根据第二预处理表获取2na的取值,其 中,所述第一预处理表存储有f的取值,所述第二预处理表存储有2na的取值,a为常数;根据所述f的取值和所述2na的取值获得所述Xa的计算结果。
2.根据权利要求1所述的方法,其特征在于,所述二进制科学计数法存储结构包括 士 1. χ与2n乘积的存储结构,则所述X在内存中的二进制科学计数法存储结构包括X等于 士 1. χ与2n乘积,其中,所述浮点数X的士符号存储在符号位中,所述浮点数X的指数η存 储在指数位中、所述浮点数X的尾数χ存储在尾数位中,其中,χ为大于0小于1的实数。
3.根据权利要求2所述的方法,其特征在于,所述根据浮点数X在内存中的二进制科学 计数法存储结构,将所述浮点数X设置为数据y与2"乘积的形式包括根据X等于士 1.x与2"的乘积,将所述浮点数X设置为士(1+x)与2n乘积的形式;使士(1+χ)等于y,将所述浮点数X设置为y与2n乘积的形式。
4.根据权利要求3所述的方法,其特征在于,根据所述f的取值和所述2na的取值获得 所述Xa的计算结果包括将所述f的取值与所述2na的取值相乘,得到所述Xa的计算结果。
5.一种浮点数幂运算处理装置,其特征在于,包括设置模块,用于根据浮点数X在内存中的二进制科学计数法存储结构,将所述浮点数X 设置为y与2n乘积的形式,其中,y的绝对值为大于1小于2的实数,η为大于-127小于 128的整数;查询模块,用于根据预先创建的第一预处理表查询ya的取值,并根据第二预处理表查 询2na的取值,其中,所述第一预处理表存储有f的取值,所述第二预处理表存储有2na的取 值,a为常数;计算模块,用于根据所述f的取值和所述2na的取值获得所述Xa的计算结果。
6.根据权利要求5所述的装置,其特征在于,所述二进制科学计数法存储结构包括 士 1. χ与2n乘积的存储结构,则所述X在内存中的二进制科学计数法存储结构包括X等于 士 1. χ与2n乘积,其中,所述浮点数X的士符号存储在符号位中,所述浮点数X的指数η存 储在指数位中、所述浮点数X的尾数χ存储在尾数位中,其中,χ为大于0小于1的实数。
7.根据权利要求6所述的装置,其特征在于,所述设置模块包括第一设置子模块,用于根据X等于士 1. χ与2η的乘积,将所述浮点数X设置为士(1+χ) 与2η乘积的形式;第二设置子模块,用于使士(1+χ)等于y,将所述浮点数X设置为y与2η乘积的形式。
8.根据权利要求7所述的装置,其特征在于,所述计算模块具体用于将所述ya的取值 与所述2na的取值相乘,获得所述Xa的计算结果。
9.根据权利要求5-8任意一项所述的装置,其特征在于,还包括预设模块,用于预先设置第一预处理表和第二预处理表,其中,所述第一预处理表存储 有ya的取值,所述第二预处理表存储有2na的取值,a为常数。
10.一种计算机系统,其特征在于,包括权利要求5至9任一所述的浮点数幂运算处理装置。
全文摘要
本发明提供一种浮点数幂运算处理方法、装置和计算机系统,其中,该方法包括根据浮点数X在内存中的二进制科学计数法存储结构,将所述浮点数X设置为y与2n乘积的形式,其中,y的绝对值为大于1小于2的实数,n为大于负127小于128的整数;根据预先创建的第一预处理表获取ya的取值,并根据第二预处理表获取2na的取值,其中,所述第一预处理表存储有ya的取值,所述第二预处理表存储有2na的取值,a为常数;根据所述ya的取值和所述2na的取值获得所述Xa的计算结果。通过上述处理,能够有效提高计算机处理浮点数幂运算的计算效率。
文档编号G06F7/57GK102135870SQ201010104098
公开日2011年7月27日 申请日期2010年1月27日 优先权日2010年1月27日
发明者李有永 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1