从比例二进制编码十进制转换到十进制浮点的系统和方法

文档序号:7539251阅读:268来源:国知局
专利名称:从比例二进制编码十进制转换到十进制浮点的系统和方法
技术领域
本发明涉及十进制浮点(DFP)数字,具体来说,涉及从比例二进制编码十进制(SBCD)浮点数字转换为DFP数字。
背景技术
DFP已经用于计算器许多年,但是成为IEEE标准(754R浮点标准)的一部分还是第一次。如IEEE 754R标准所定义的DFP格式包括32位单精度格式、64位双精度格式,以及128位扩展精度格式。此新标准为计算机设计者提供了开发为此新标准优化的特定操作的装置。在操作数的标准化之前,不可能开发用于加速这种计算的特定操作。对于某些商业工作负荷,软件中的DFP操作的模拟可以占处理时间的主导地位。
随着新标准的出现,以及十进制算术运算广泛应用于财务计算,需要以高性能实现这些操作。

发明内容
本发明的示范性实施例包括用于从比例二进制编码十进制(scaled binary coded decimal)(SBCD)转换到十进制浮点(DFP)的系统。该系统包括用于接收SBCD数字的指数部分和SBCD数字的系数部分的一个或多个的机制。该系统还包括用于对SBCD数字的系数部分执行系数压缩以创建DFP数字的系数部分的机制以及用于执行包括将SBCD数字的指数部分插入到DFP数字的指数部分的指数插入的机制中的至少一种机制。
另外的示范性实施例包括用于从SBCD转换到DFP的方法。该方法包括用于接收SBCD数字的指数部分和SBCD数字的系数部分的一个或多个的机制。该方法还包括对SBCD数字的系数部分执行系数压缩以创建DFP数字的系数部分以及执行包括将SBCD数字的指数部分插入到DFP数字的指数部分的指数插入中的至少一种。
其他示范性实施例包括用于从SBCD转换到DFP的系统。该系统包括用于接收SBCD数字的指数部分和SBCD数字的系数部分的一个或多个的机制。SBCD数字的指数部分是二进制,SBCD数字的系数部分是BCD。该系统还包括用于对SBCD数字的系数部分执行系数压缩以创建DFP数字的系数部分的机制,或者用于执行包括将SBCD数字的指数部分插入到DFP数字的指数部分的指数插入的机制中的任何一种。用于执行系数压缩的机制是通过双精度硬件来实现的。SBCD数字是单精度、双精度或扩展精度。执行系数压缩的过程包括确定在SBCD数字的系数部分是否有无效BCD位,并响应确定存在无效BCD位的情况,设置条件码。执行压缩的过程还包括确定SBCD数字是否为特殊数字,并响应确定SBCD数字是特殊数字的情况,设置第二条件码。执行指数插入的过程包括响应SBCD指数包含负值,创建DFP特殊数字。
通过本本发明的技术,来实现其他特征和优点。这里将详细描述本发明的其他实施例和方面,它们被视为所声明的发明的一部分。为了更好地了解本发明具有的优点和特征,请参阅说明书和附图。


在本说明书结尾的权利要求书中,特别指出了并明确声明了被视为本发明的主题。通过下面的结合附图对上述发明进行的详细说明,可以更好地理解上述发明的前述和其他目的、特征和优点,其中图1是根据本发明的示范性实施例的用于实现从BCD到DPD的系数压缩的示范性硬件图表;图2是根据本发明的示范性实施例的用于将34BCD位系数转换为四倍精度DFP操作数的过程的方框图;图3是根据本发明的示范性实施例的用于将SBCD数字的指数部分转换为DFP数字的示范性硬件图表;图4是根据本发明的示范性实施例的用于实现从BCD到DPD的系数扩展的示范性硬件图表;图5是根据本发明的示范性实施例的用于将四倍精度DFP操作数转换为34BCD位系数的过程的方框图;图6是根据本发明的示范性实施例的用于实现将DFP数字转换为SBCD数字的提取指数部分的示范性硬件图表。
详细的描述通过参考图形说明了本发明的示范性实施例,以及优点和特征。
具体实施例方式
本发明的示范性实施例包括用于在DFP数字和SBCD数字之间相互转换系数的操作。实施例支持三种不同DFP格式(单精度-32位、双精度-64位,以及扩展精度128位)。此外,示范性实施例还设置可使处理器快速地检测源操作数何时包含无效数据或特殊数字,如无穷大、安静NaN(Not-A-Number)(qNaN)和信号NaN(Not-A-Number)(sNaN)。本发明的示范性实施例还描述了用于提取和设置三种不同DFP格式的DFP数字的指数字段的操作。由这些操作使用在插入和提取指令之间兼容的数字格式来处理特殊数字。设置了条件码,以使处理器快速地检测何时已经处理了特殊数字。
示范性实施例包括从SBCD数字(包括BCD系数和二进制指数两者)到DFP数字的转换和从DFP数字到SBCD数字的转换两者。从SBCD数字到DFP数字的转换包括压缩BCD系数和将SBCD指数插入到DFP数字中。从DFP数字到SBCD数字的转换包括将DFP系数扩展为BCD系数和将DFP指数提取到SBCD二进制指数两者。
下面的表1显示了SBCD数字的三种不同格式。这里所使用的术语SBCD数字是指包括以BCD表示的系数和以二进制表示的指数以及可选的一位符号字段。
表1.SBCD数字格式格式每一个字段中的位数符号指数 系数单精度 18 28(7位)双精度 110 64(16位)扩展精度114 136(34位)下面的表2显示了DFP数字的三种不同格式。符号字段(表2中标记为“S”)表示操作数的符号,组合字段(表2中标记为“C”)包含系数的上面的最高有效位(MSD)和编码为五位编码格式的两个最高指数位,偏置指数连续字段(表2中标记为“BEC”)包含指数的几乎所有位,但是,两个最高位除外,系数连续字段(表2中标记为“CC”)包含密集紧缩十进制(DPD)格式的系数的几乎所有位,但是,MSD除外。
表2. DFP数字格式格式每一个字段中的位数SCBEC CC单精度 15620双精度 15850扩展精度1512 110如前所述,组合字段包含系数的上面的MSD和以五位编码格式编码的两个最高指数位。
下面的表3显示了如IEEE 754R标准所描述的此五个位编码,其中,d0、d1、d2、d3来自于系数的MSD的BCD编码,b0,b1是指数的两个最高位。
表3. 组合字段的编码条件组合字段编码
MSD=0到7b0,b1,d1,d2,d3MSD=8或91,1,b0,b1,d3无穷大 1,1,1,1,0NaN 1,1,1,1,1示范性实施例使用组合字段来快速识别诸如qNaN、sNaN和无穷大值(但不仅限于这些值)之类的特殊数字。可以通过检查组合字段中的位,来检测特殊数字。
压缩系数(BCD到DFP)压缩操作主要处理包含系数数据的最高有效位(以及指数数据的两个最高有效位)的组合字段,以及包含压缩成20、50或110DPD位的系数的剩余7、15或33BCD位的系数连续字段,具体情况取决于目标DFP格式。压缩操作获得BCD系数,并创建DPD系数,用于存储在DFP数字中,并从基于系数的最有效BCD位的值生成5位组合字段。这也被称为从BCD压缩(CBCDR)。
CBCDR操作可以作为计算机指令来实现,该指令从源操作数获得16BCD系数位,并将最右边15位压缩成DPD位,并将它们写入到目标寄存器的最右边的50位。最上面的位被编码为组合字段,假设指数值为0,并写入到目标寄存器中。目标寄存器(对于双精度操作数,BEC)的符号字段和位6到13分别是正和0。如果源寄存器包含无效BCD数字码,那么,条件码被设置为1,否则,设置条件码0。基于有效十进制数据设置条件码,可以不需要额外的指令来专门验证源数据,对于典型的处理器,节省了大量的周期和指令。
图1描述了根据本发明的示范性实施例的用于实现将系数从BCD压缩为DFP(即,CBCDR指令)的示范性硬件图表。图1包括16位BCD系数102,作为到有效数位检测块110,BCD到组合字段编码器108,以及多个BCD到DPD编码器106的输入。多个BCD到DPD编码器106这里也被称为一个DPD到BCD编码器库。响应确定BCD系数操作数102是否为有效BCD数字,设置条件码112。在示范性实施例中,如果SBCD系数102是有效BCD数字,则条件码被设置为0,如果BCD系数102包含无效BCD数字,则被设置为1。
BCD到DPD编码器106各自将三个BCD位(12位)BCD系数102压缩为10位DPD。对SBCD系数102的所有位进行压缩,但是MSD除外。对于双精度数,压缩的系数存储在DFP数字104a的五十个最低有效位中。BCD到组合字段编码器108基于SBCD数字的系数的MSD创建前面所描述的5位组合字段。组合字段存储在DFP数字104a的第二到第六位中。
对于双精度格式的操作数,从图1中所描述的处理输出的64位DFP数字104a包括64位,最高有效位中的符号位(位0),下五个最高有效位中的组合字段(位1-5),偏置指数连续字段中的零(位6-13),以及系数连续字段中的压缩系数(位14-63)。
如上所述,CBCDR操作是为双精度DFP操作数设计的,这种操作数预计是用于工作负荷中的最常见的操作数。然而,也可以使用这些指令来处理扩展精度操作数。图2中描述了将34位BCD系数压缩为扩展格式DFP数字的过程。
将34位BCD系数转换为四倍精度DFP操作数的过程包括一系列移位、合并,以及CBCDR操作。位于左边的第一源寄存器202(34位BCD系数的低阶位)被压缩为DPD格式的50位,并写入到位于右边的第一中间寄存器208。第二源寄存器204(34位BCD系数的第2到18位)向左移位一个位,来自第一源寄存器202的MSD被合并到空出的最右边的位。然后,将此数据压缩为50位DPD数据,并写入到第二中间寄存器210。
接下来,第三个源寄存器206被移位,直到它对齐,第二源寄存器204中的未处理的二位数(第0到1位)被合并到被移位的第三源操作数数据的右边。如参考CBCDR指令所描述的,进行最后的压缩,以便对MSD进行处理,以便它与目标寄存器的组合字段对齐。将结果写入到第三中间寄存器212。最后一个步骤是将中间寄存器208、210、212中的数据对齐,将它合并到目标寄存器对214中,符号位和偏置指数连续字段分别被设置为正和0。
标记为216的箭头所描述的处理是前面参考图1所描述的CBCDR操作。此处理可以由连续地执行的相同硬件/软件指令来执行,和/或通过拥有三套并行地执行的相同硬件/软件指令,以在第一中间寄存器208、第二中间寄存器210和第三中间寄存器212中产生结果。此外,还可以使用相同CBCDR操作来压缩单精度格式的数字。对于针对十进制浮点数字的IEEE 754R指定的三个精度中的任何一种精度,可以使用相同硬件(例如,64位硬件)和/或软件(例如,微码)来进行压缩。
插入指数(BCD数字DFP)用于将二进制指数从SBCD数字插入到DFP数字的指令主要处理组合字段和偏置指数连续字段,该字段根据格式,包含指数数据的剩余6、8或12位。三个插入指数指令包括insert exponentsingle precision、insert exponent double precision,以及insertexponent extended precision。这些指令中的每一个指令都从源寄存器中读取二进制整数,其值是将要插入到目标寄存器中的DFP数字中的偏置指数。读取在目标寄存器中编码的系数的MSD,以确定应该如何对组合字段进行编码。然后,更新组合字段和指数连续字段。更新过程将目标寄存器中的目标DFP数字的指数值设置为源寄存器中包含的值。
如果源寄存器是负的(位0=1),那么,目标寄存器将用特殊数字更新。在示范性实施例中,使用最小的两个有效位来确定目标寄存器是否用表示无穷大(位62:63=11′b)、qNaN(位62:63=10′b)或sNan(位62=0′b)的值来更新。
图3描述了根据本发明的示范性实施例的用于实现从SBCD数字的二进制指数部分转换为DFP数字的指数部分的指数插入的示范性硬件图表。图3描述了64位二进制指数302,以及从参考图1所描述的处理输出的64位DFP数字104a。图3中所描述的处理的输出是更新的64位DFP数字104b,包括对组合和偏置指数连续字段的更新。如果二进制指数是负的(位0是值“1”),64位二进制指数302的操作数位0、62和63被输入到特殊数字生成器306,以生成特殊值无穷大、qNaN和sNaN,如前面所讨论的。组合字段生成器308接收6位(位50-51和54-57)二进制指数302(来自特殊数字生成器306),操作数大小304,以及DFP数字104a。组合字段生成器308生成结果(组合字段)的位1到5和指数连续字段的第一位,并将结果写入到64位DFP数字104b。图3中的处理也包括指数连续字段生成器310,用于更新DFP数字104b的偏置指数连续字段。在示范性实施例中,特殊数字生成器306的输出被输入到指数连续字段生成器310。如果特殊数字生成器306指出DFP数字是qNaN,那么,指数连续字段生成器310用“0”改写指数字段的最高有效位(第6位)。如果特殊数字生成器306指出DFP数字是sNaN,那么,指数连续字段生成器310用“1”改写指数字段的最高有效位(第6位)。
扩展系数(DFP到BCD)扩展到BCD操作获得源寄存器中的双精度DFP数字,并将作为DPD和组合字段存储的DFP数字的系数位转换为BCD系数,再将其写入到目标寄存器中。如果源操作数是诸如无穷大、qNaN或sNaN之类的特殊数字,则将0写入到目标寄存器的MSD中,并可以相应地设置条件码(无穷大=1、qNaN=2、sNaN=3)。此操作也被称为提取到BCD操作(EBCDR)。
图4描述了根据本发明的示范性实施例的用于实现EBCDR过程的示范性硬件图表。图4包括了64位DFP数字104b,作为到可选特殊数字检测器406,组合字段到BCD解码器404和到多个DPD到BCD解码器402的输入。响应确定DFP数字104b的系数部分是否为特殊数字,设置条件码112。在示范性实施例中,如果系数为普通值,则条件码被设置为0,如果系数为无穷大,则被设置为1,如果系数为qNaN,则被设置为2,如果系数为sNaN,则被设置为3。
DPD到BCD解码器402各自将DPD的10位扩展为三个BCD位(12位)。对DFP数字104b中的系数连续字段中的所有位进行解码。对于双精度数字,扩展的SBCD系数连续字段作为16位BCD系数102的15个最低有效位存储。组合字段到BCD解码器404接收DFP数字104b的5位组合字段108,并创建BCD系数的MSD。
如上所述,EBCDR操作是为双精度DFP操作数设计的,这种操作数预计是用于工作负荷中的最常见的操作数。然而,如图5所描述的,也可以使用这些指令来处理扩展精度操作数。图5中所描述的用于将四倍精度DFP数字转换为34位BCD系数的过程包括一系列移位、合并,和EBCDR扩展步骤。
图5中所描述的过程开始将第一源寄存器502的低阶50位(DFP扩展精度操作的低阶50位)转换(例如,使用图4中所描述的EBCDR过程)为第一中间寄存器508中的BCD数据的15位。第二源寄存器504的系数连续字段(DFP扩展精度操作数的高阶64位)向左移位14位,第一源寄存器502中的未处理的位被合并到它们的右边。第二扩展指令(例如,EBCDR)将15个另外的BCD位写入到第二中间寄存器510中。然后,系数连续字段向右移位10位,并存储在第三源寄存器506中。最后的扩展指令(例如,EBCDR)将剩余的4个BCD位写入到第三中间寄存器512中。最后,三个中间寄存器508510512中的34BCD位数据被对齐,并被合并到为此操作分配的三个目标寄存器514中。
标记为516的箭头所描述的处理是前面参考图4所描述的EBCDR操作。此处理可以由连续地执行的相同硬件/软件指令来执行,和/或通过拥有三套并行地执行的相同硬件/软件指令,以在第一中间寄存器508、第二中间寄存器510和第三中间寄存器512中产生结果。此外,还可以使用相同EBCDR操作来压缩单精度格式的数字。对于针对十进制浮点数字的IEEE 754R指定的三个精度中的任何一种精度,可以使用相同硬件(例如,64位硬件)和/或软件(例如,微码)来进行压缩。
提取指数(DFP到SBCD)指数提取指令(每一个格式一个)从源寄存器中读取DFP数字的较高的双字。对于单精度和双精度,这包含整个DFP数字。对于普通数字,操作从编码组合字段和偏置指数连续字段中提取偏置指数,并将条件码设置为零。如果源DFP数字是无穷大,那么,SBCD指数被设置为-1,并设置条件码1。如果源DFP数字是q NaN,那么,SBCD指数被设置为-2,并设置条件码2。如果源DFP数字是sNaN,那么,SBCD指数被设置为-3,并设置条件码3。如此使用条件码可使处理器快速地检测何时在处理特殊的数字,并且不需要特殊指令来检测这些特殊情况。
图6描述了用于为从DFP数字104b转换为二进制指数302而实现指数提取的示范性硬件图表。图6描述了作为输入的64位DFP数字(或扩展精度的DFP数字的上半部)104b和操作数大小304。特殊数字检测器406基于组合字段的值和偏置指数连续字段的第一位寻找如上文所描述的特殊的数字。特殊数字检测器406设置条件码112,并将状态输出到指数提取器602。指数提取器602基于组合字段和偏置指数连续字段操作数大小304确定二进制指数302,并从特殊数字检测器406输出。
本发明的示范性实施例允许这里所描述的过程(系数压缩、系数扩展、指数插入和指数提取)分别地执行。例如,如果已知数据集包含相同的指数值(即,用于添加已知以便士表示的集中的数据值那么,不需要提取指数所需的额外的处理和寄存器使用。另一个示例可以是用来将数据库从SBCD转换为DFP的例程,不需要转换过程将DFP转换回SBCD。另一个示例是检查特殊值,只需要提取指数过程,以获取必要的条件码。串行地执行每一个转换操作的选项也使得系统所需的硬件减少,因为所有操作都可以使用相同的中间寄存器。此性能对复杂性的折衷对于所需要的硬件可用的面积或功率受到限制的硬件实现方式是重要的。
本发明的示范性实施例提供了支持三种IEEE 754R标准DFP格式的四种转换操作。操作包括系数压缩、系数扩展、指数插入和指数提取。这里所描述的示范性实施例可以在使用最低限度的额外数据流硬件的标准超标量微处理器中使用。此外,利用一般情况通过结果值和/或条件码,检测和报告特殊的数字。此外,还通过条件码报告无效的十进制数据。
本发明的特征可以以软件、固件、硬件或其某些组合来实现。
作为一个示例,本发明的一个或多个方面可以包括在具有计算机可使用的介质的产品中(例如,一个或多个计算机程序产品)。介质中包含了用于提供和促进本发明的特征的计算机可读取的程序代码装置。产品可以作为计算机系统的一部分或单独地销售。
另外,可以提供至少一个由机器可读取的程序存储设备,其中可触摸地包含了由机器可执行的至少一个指令程序以执行本发明的特征。
这里所描述的图表只是示例。在不偏离本发明的精神的情况下,对这里所描述的这些图表或步骤(或操作)可以有许多更改。例如,可以以不同顺序执行各个步骤,也可以添加、删除或修改步骤。所有这些变化被视为带有权利要求的本发明的一部分。
尽管描述了本发明的优选实施例,但是,可以理解,那些本领域普通技术人员可以理解,可以作出落入随后的权利要求的范围内的各种改善和提高。这些权利要求应该被理解为适当地维护首先描述的发明的保护范围。
权利要求
1.一种用于从比例二进制编码十进制(SBCD)转换到十进制浮点(DFP)的系统,该系统包括用于接收SBCD数字的指数部分和SBCD数字的系数部分的一个或多个的机制,其中SBCD数字的指数部分是二进制,SBCD数字的系数部分是BCD;以及用于对SBCD数字的系数部分执行系数压缩以创建DFP数字的系数部分的机制以及用于执行包括将SBCD数字的指数部分插入到DFP数字的指数部分的指数插入的机制中的至少一种机制。
2.根据权利要求1所述的系统,其中,用于执行系数压缩的机制包括一个从BCD到DPD转换器库,系数压缩包括使用一个BCD到DPD转换器库将SBCD数字的系数部分从BCD转换为密集紧缩十进制(DPD),以及用于将SBCD数字的BCD系数部分的最高有效位插入到DFP数字的组合字段中的机制。
3.根据权利要求2所述的系统,其中,使用一个BCD到DPD转换器的库两次或更多次,以转换BCD系数部分。
4.根据权利要求1所述的系统,其中,用于执行系数压缩的机制包括多个从BCD到DPD转换器库,系数压缩包括使用多个BCD到DPD转换器库将SBCD数字的系数部分从BCD转换为DPD,以及用于将SBCD数字的BCD系数部分的最高有效位插入到DFP数字的组合字段中的机制。
5.根据权利要求1所述的系统,其中,插入过程包括将SBCD数字的指数部分的两个最高有效位和SBCD数字的系数部分的最高有效位编码为组合字段,并将SBCD数字的指数部分的剩余位插入到DFP数字的指数部分。
6.根据权利要求5所述的系统,其中,编码导致指出DFP数字是否为特殊数字的组合字段。
7.根据权利要求1所述的系统,其中,DFP数字是单精度。
8.根据权利要求1所述的系统,其中,DFP数字是双精度。
9.根据权利要求1所述的系统,其中,DFP数字是扩展精度。
10.根据权利要求1所述的系统,其中,至少一个机制只包括用于执行系数压缩的机制。
11.根据权利要求1所述的系统,其中,至少一个机制只包括用于执行指数插入的机制。
12.根据权利要求1所述的系统,至少一个机制包括用于执行系数压缩的机制和用于执行指数插入的机制两种机制。
13.根据权利要求1所述的系统,进一步包括用于基于SBCD数字的系数部分是否为有效BCD数字来设置条件码的机制。
14.一种用于从SBCD转换到DFP的方法,该方法包括接收SBCD数字的指数部分和SBCD数字的系数部分的一个或多个,其中,SBCD数字的指数部分是二进制,SBCD数字的系数部分是BCD;对SBCD数字的系数部分执行系数压缩以创建DFP数字的系数部分以及执行包括将SBCD数字的指数部分插入到DFP数字的指数部分的指数插入中的至少一种。
15.根据权利要求14所述的方法,其中,执行过程包括只执行系数压缩。
16.根据权利要求14所述的方法,其中,执行过程包括执行只指数插入。
17.根据权利要求14所述的方法,其中,执行过程包括执行系数压缩和指数插入两种。
18.根据权利要求14所述的方法,其中,插入过程包括将SBCD数字的指数部分的两个最高有效位和SBCD数字的系数部分的最高有效位编码为组合字段,并将SBCD数字的指数部分的剩余位插入到DFP数字的指数部分。
19.根据权利要求18所述的方法,其中,编码导致指出DFP数字是否为特殊数字的组合字段。
20.一种用于从比例二进制编码十进制(SBCD)转换到十进制浮点(DFP)的系统,该系统包括用于接收SBCD数字的指数部分和SBCD数字的系数部分的一个或多个的机制,其中SBCD数字的指数部分是二进制,SBCD数字的系数部分是BCD;以及用于对SBCD数字的系数部分执行系数压缩以创建DFP数字的系数部分的机制以及用于执行包括将SBCD数字的指数部分插入到DFP数字的指数部分的指数插入的机制中的至少一种机制;其中用于执行系数压缩的机制是通过双精度硬件来实现的;SBCD数字是单精度、双精度或扩展精度;执行系数压缩包括确定在SBCD数字的系数部分中是否有无效BCD位,并响应确定存在无效BCD位的情况,设置条件码;以及确定SBCD数字是否为特殊数字,并响应确定SBCD数字是特殊数字的情况,设置第二条件码;以及执行指数插入的过程包括响应SBCD指数包含负值,创建DFP特殊数字。
全文摘要
一种用于从比例二进制编码十进制(SBCD)转换到十进制浮点(DFP)的系统和方法。该系统包括用于接收SBCD数字的指数部分和SBCD数字的系数部分的一个或多个的机制。该系统还包括用于对SBCD数字的系数部分执行系数压缩以创建DFP数字的系数部分的机制以及用于执行包括将SBCD数字的指数部分插入到DFP数字的指数部分的指数插入的机制中的至少一种机制。
文档编号H03M7/02GK1933334SQ200610121620
公开日2007年3月21日 申请日期2006年8月23日 优先权日2005年9月15日
发明者史蒂文·R.·加洛, 谢乐尔·H.·温内拉塞恩, 埃里克·M.·施瓦兹 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1