从十进制浮点格式转换为区位格式的制作方法
【专利摘要】提供本文中被称为长的从区位转换指令(CDZT)和扩展的从区位转换指令(CXZT)的机器指令,这些机器指令从存储器读取EBCDIC或ASCII数据,将其转换为适当的十进制浮点格式,且将其写入至目标浮点寄存器或浮点寄存器对。另外,提供本文中被称为长的转换为区位指令(CZDT)和扩展的转换为区位指令(CZXT)的机器指令,这些机器指令将源浮点寄存器或浮点寄存器对中的十进制浮点(DFP)操作数转换为EBCDIC或ASCII数据,且将其存储至目标存储器位置。
【专利说明】从十进制浮点格式转换为区位格式
【技术领域】
[0001]本发明的一个方面一般是涉及在计算环境内的处理,且具体地,是涉及将数据从一个格式转换为另一个格式。
【背景技术】
[0002]可按许多不同格式将数据存储在内部计算机存储器或外部存储器中,格式包括扩展二进制编码十进制交换码(EBCDIC)、美国信息交换标准码(ASCII)及十进制浮点等等。
[0003]不同计算机架构支持不同数据格式,并且可能希望对特定格式执行操作。在此情况下,可能需要将处于一种格式的数据转换为所希望的格式。
[0004]另外,传统上,用于处理按EB⑶IC或ASCII格式存储在数据库中的数字十进制数据的运算直接在存储器上操作。被称为存储器至存储器十进制运算的这些运算及这些运算的执行受到存储器接口的延时限制。取决于来自先前运算的结果的每一运算在其可开始前必须等待,直至将结果写出至存储器为止。因为存储器延时与处理器速度之间的间隙继续增大,所以这些运算的相对执行继续减少。
【发明内容】
[0005]经由提供一种用于在中央处理单元中执行机器指令的计算机程序产品来克服现有技术的缺点并且提供优势。该计算机程序产品包括计算机可读存储介质,其可由处理电路读取且存储用于由该处理电路执行以用于执行一方法的指令。该方法包括例如由处理器获得用于执行的机器指令,该机器指令根据计算机架构经定义用于计算机执行,该机器指令包括:至少一个操作码字段,其用于提供操作码,该操作码识别从十进制浮点转换为区位函数;第一寄存器字段,其指定第一寄存器,该第一寄存器包含第一操作数;第二寄存器字段及位移字段,其中由该第二寄存器字段指定的第二寄存器的内容与该位移字段的内容组合以形成第二操作数的地址;以及掩码字段,该掩码字段包括在该机器指令的执行期间使用的一个或多个控制;及执行该机器指令,该执行包括:将十进制浮点格式的该第一操作数的至少一部分转换为区位格式;及将该转换的结果放置在由该第二操作数的该地址指定的位置处。
[0006]在此还描述及主张涉及本发明的一个或多个方面的方法和系统。另外,本文中还描述且可主张涉及本发明的一个或多个方面的服务。
[0007]经由本发明的技术,认识到额外特征及优势。本发明的其他实施例和方面在此得以详细描述且被视为所主张的本发明的一部分。
【专利附图】
【附图说明】
[0008]本发明的一个或多个方面在本说明书的结束处的权利要求中作为示例经特定指出且清楚地主张。从以下结合附图进行的详细描述,本发明的前述内容及目标、特征及优势是显而易见的。[0009]图1描绘并入且使用本发明的一个或多个方面的计算环境的一个实施例;
[0010]图2A描绘并入且使用本发明的一个或多个方面的计算环境的另一实施例;
[0011]图2B描绘根据本发明的一个方面的图2A的存储器的进一步细节;
[0012]图3描绘根据本发明的一个方面的从区位格式转换为十进制浮点格式的逻辑的概述;
[0013]图4描绘根据本发明的一个方面使用的从区位转换指令的格式的一个实施例;
[0014]图5描绘根据本发明的一个方面的从区位转换为十进制浮点的逻辑的进一步细节;
[0015]图6描绘根据本发明的一个方面的从十进制浮点格式转换为区位格式的逻辑的概述;
[0016]图7描绘根据本发明的一个方面使用的从十进制浮点转换为区位指令的一个实施例;
[0017]图8描绘根据本发明的一个方面的从十进制浮点转换为区位的逻辑的进一步细节;
[0018]图9描绘并入本发明的一个或多个方面的计算机程序产品的一个实施例;
[0019]图10描绘并入且使用本发明的一个或多个方面的主机计算机系统的一个实施例;
[0020]图11描绘并入且使用本发明的一个或多个方面的计算机系统的又一示例;
[0021]图12描绘并入且使用本发明的一个或多个方面的包含计算机网络的计算机系统的另一不例;
[0022]图13描绘并入且使用本发明的一个或多个方面的计算机系统的各种元件的一个实施例;
[0023]图14A描绘并入且使用本发明的一个或多个方面的图13的计算机系统的执行单元的一个实施例;
[0024]图14B描绘并入且使用本发明的一个或多个方面的图13的计算机系统的分支单元的一个实施例;
[0025]图14C描绘并入且使用本发明的一个或多个方面的图13的计算机系统的载入/存储单元的一个实施例;及
[0026]图15描绘并入且使用本发明的一个或多个方面的模拟主机计算机系统的一个实施例。
【具体实施方式】
[0027]不同计算机架构可支持不同数据格式,且所支持的数据格式可随时间改变。举例而言,由国际商业机器公司提供的机器传统上已支持EB⑶IC及ASCII格式。后来,机器开始支持十进制浮点(DFP)格式及运算,存在针对DFP格式及运算的IEEE标准(IEEE754-2008)。然而,为了使用DFP运算,要将EBCDIC及ASCII数据转换为DFP。
[0028]根据本发明的一个方面,提供在EBCDIC或ASCII与十进制浮点之间转换的有效机制。在一个示例中,此机制在无其他技术的存储器开销的情况下执行转换。
[0029]在本发明的一个方面中,提供机器指令,机器指令从存储器读取EB⑶IC或ASCII数据(其具有区位格式),将其转换为适当的十进制浮点格式,且将其写入至目标浮点寄存器或浮点寄存器对。这些指令在本文中被称为长的从区位转换指令(CDZT)及扩展的从区位转换指令(CXZT)。
[0030]在本发明的又一个方面中,提供机器指令,机器指令将源浮点寄存器或浮点寄存器对中的十进制浮点(DFP)操作数转换为EBCDIC或ASCII数据,且将其存储至目标存储器位置。这些指令在本文中被称为长的转换为区位指令(CZDT)及扩展的转换为区位指令(CZXT)。
[0031]参看图1描述并入且使用本发明的一个或多个方面的计算环境的一个实施例。计算环境100包括(例如)经由(例如)一个或多个总线108和/或其他连接相互耦接的处理器102 (例如,中央处理单元)、存储器104 (例如,主存储器)及一个或多个输入/输出(I/O)设备和/或接口 106。
[0032]在一个不例中,处理器102为ZZArchitecturelt处理器,其为由国际商业机器公司(IBM?)(纽约Armonk)提供的系统Systemz?服务器的部分。System z?服务器实施由国际商业机器公司提供的z/ArchitectureK,其指定计算机的逻辑结构及函数运算。z/Architecture〖的一个实施例描述于题为“z/Architecture Principles of Operation”
的IBM?公开(IBM?公开第SA22-7832-08号,第九版,2010年8月)中,该公开在此以引用的方式全部并入本文中。在一个示例中,该服务器运行操作系统,诸如,也由国际商业机器公司提供的z/OSK。TBMK、z/Architecture'&z/OSK为国际商业机器公司(美国纽约Armonk)的注册商标。本文中使用的其他名称可为国际商业机器公司或其他公司的注册商标、商标或产品名称。 [0033]参看图2A描述并入且使用本发明的一个或多个方面的计算环境的另一实施例。在此示例中,计算环境200包括(例如)经由(例如)一个或多个总线208和/或其他连接相互耦接的原生中央处理单元202、存储器204及一个或多个输入/输出设备和/或接口 206。作为示例,计算环境200可包括由国际商业机器公司(纽约Armonk)提供的
PowerPC?:处理器、pSeries? 服务器或 xSenes? 服务器;由 Hewlett Packard C0.(PaloAlto, California)提供的具有 Intel Itanium II?:处理器的 HP Superdome ;和 / 或基于由IBM' Hewlett Packard、Intel、Sun Microsystems或其他者提供的架构的其他机器。PowerPC" > pSeries'及xSeriesK)为国际商业机器公司(美国纽约Armonk)的注册商标。
Intel? 及 Itanium II?,为 Intel Corporation (Santa Clara, California)的注册商标。
[0034]原生中央处理单元202包括在环境内的处理期间使用的一个或多个原生寄存器210,诸如,一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
[0035]此外,原生中央处理单元202执行存储在存储器204中的指令及代码。在一个特定示例中,中央处理单元执行存储在存储器204中的模拟器(emulator)代码212。此代码使在一个架构中组态的处理环境能够模拟另一架构。举例而言,模拟器代码212允许基于不同于z/Architecture?.的架构的机器(诸如,PowerPC?处理器、pSeries」服务器、xSeries?,
服务器、HP Superdome服务器或其他)模拟z/Architecture及执行基于z/Architecture?'
开发的软件及指令。
[0036]参看图2B描述关于模拟器代码212的进一步细节。客体指令250包含经开发以待在不同于原生CPU202的架构的一个架构中执行的软件指令(例如,机器指令)。举例而
言,客体指令250可已经设计以在z/ArchitectureK.处理器102上执行,但实情为,正在原生
CPU202(其可为(例如)Intef Itanium II?.处理器)上经模拟。在一个示例中,模拟器代
码212包括指令提取单元252以从存储器204获得一个或多个客体指令250,及可选地提供用于获得的指令的局部缓冲。其也包括指令转译例程254以判定已获得的客体指令的类型且将客体指令转译成一个或多个对应的原生指令256。此转译包括(例如)识别要由客体指令执行的函数及选择原生指令来执行该函数。
[0037]另外,模拟器212包括模拟控制例程260以使原生指令被执行。模拟控制例程260可使原生CPU202执行模拟一个或多个先前获得的客体指令的原生指令的例程,且在此执行完结时,将控制返回至指令提取例程以模拟下一个客体指令或一组客体指令的获得。客体指令250的执行可包括将数据从存储器204载入至寄存器;将数据从寄存器存储回至存储器;或执行某一类型的算术或逻辑运算(如由转译例程判定)。
[0038]每一例程(例如)以软件实施,该软件存储在存储器中且由原生中央处理单元202执行。在其他示例中,例程或运算中的一个或多个以固件、硬件、软件或其某一组合实施。可使用原生CPU的寄存器210或通过使用存储器204中的位置来模拟模拟的处理器的寄存器。在实施例中,客体指令250、原生指令256及模拟器代码212可常驻于同一存储器中或可分布在不同存储器设备间。
[0039]如本文中使用,固件包括(例如)处理器的微代码、毫代码和/或宏代码。其包括(例如)在较高层级机器代码的实施中使用的硬件层级指令和/或数据结构。在一个实施例中,其包括(例如)通常作为微代码递送的专有代码,该微代码包括特定针对基础硬件的受信任软件或微代码且控制操作系统对系统硬件的存取。
[0040]在一个示例中,获得、转译及执行的客体指令250为本文中描述的指令的一。在此不例中为z/Architeeture?.指令的指令从存储器经提取、转译且表不为被执行的一系列原
生指令 256 (例如,PowerPC*、pSeries\ xSeries'\ Intelk 等)。
[0041]在另一实施例中,在另一架构环境中执行指令中的一个或多个,该另一架构环境包括(例如)如在以下描述的架构:2006年11月的“Intel? 64and IA-32ArchitecturesSoftware Developer's Manual Volumel” (序号 253665-022US) ;2006 年 11 月的<4 IntelR 64and IA-32Architecture Software Developer's Manual Volume2A”(序号
253666-022US) ;2006 年 I 月的 “Intel? Itanium? Architecture Software Developer’s
Manual Volumel” (文件号 245317-005) ;2006 年 I 月的“Intef Itanium" ArchitectureSoftware Developer’s Manual Volume2”(文件号 245318-005);和 / 或 2006 年 I 月的 “Intel.', Itanium ( Architecture Software Developer's Manual Volume3”(文件号245319-005)。
[0042]本文中描述的处理器以及其他执行指令,以执行某些功能(诸如,在EBCDIC或ASCII与十进制浮点格式之间转换)。在一个示例中,EB⑶IC或ASCII数据具有区位格式,且因此,示例指令包括(例如)如本文中描述的从区位转换为十进制浮点指令以及从十进制浮点转换为区位指令。
[0043]然而,在描述指令前,描述本文中提及的各种数据格式。举例而言,在区位格式下,字节的最右边四个位称为数字位(N)且通常包括表示十进制数位(digit)的代码。字节的最左边四个位称为数字位(Z),除十进制操作数的最右边字节外,在该情况下,可将这些位作为区位或作为符号(S)来处理。
[0044]区位格式的十进制数位可为较大字符集合的部分,其还包括字母及特殊字符。区位格式因此适合于以人可读形式输入、编辑及输出数字数据。在一个实施例中,十进制算术指令不直接按区位格式对十进制数运算;这样的数首先经转换为(例如)十进制浮点格式的一。
[0045]可按三个数据格式中的任一表示十进制浮点数据:短、长或扩展。每一数据格式的内容表示编码的信息。指派特殊代码以将有限数与NaN(非数)及无限数区分开。
[0046]对于有限数,按该格式使用有偏指数(biased exponent)。对于每一个格式,将与用于左单元视图(LUV)指数的有偏不同的有偏用于右单元视图(RUV)指数。有偏指数为不带符号的数。通过组合字段中的有效数(significand)的最左边数位(LMD)来编码有偏指数。在编码的尾有效数字段中编码有效数的其余数位。
[0047]这些数据格式的示例为:
[0048]DFP短格式
[0049]
【权利要求】
1.一种用于在中央处理单元中执行机器指令的计算机程序产品,该计算机程序产品包含: 计算机可读存储介质,其可由处理电路读取且存储用于由该处理电路执行以用于执行一种方法的指令,该方法包含: 由处理器获得用于执行的机器指令,该机器指令根据计算机架构经定义用于计算机执行,该机器指令包含: 至少一个操作码字段,其用于提供操作码,该操作码识别从十进制浮点转换为区位函数; 第一寄存器字段,其指定第一寄存器,该第一寄存器包含第一操作数; 第二寄存器字段和位移字段,其中由该第二寄存器字段指定的第二寄存器的内容与该位移字段的内容组合,以形成第二操作数的地址;以及 掩码字段,该掩码字段包含在该机器指令的执行期间使用的一个或多个控制;并且 执行该机器指令,该执行包含: 将十进制浮点格式的该第一操作数的至少一部分转换为区位格式;以及 将该转换的结果放置在由该第二操作数的该地址指定的位置处。
2.如权利要求1所述的计算机程序产品,其中该操作码字段当为第一值时指示长的十进制浮点源和区位结果。
3.如权利要求1所述的计算机程序产品,其中该操作码当为第二值时指示扩展的十进制浮点源和区位结果。
4.如权利要求1所述的计算机程序产品,其中该掩码字段包含符号控制,其用于指示该第二操作数具有符号字段。
5.如权利要求1所述的计算机程序产品,其中该掩码字段包含区位控制,其用于确定该第二操作数的区位字段的值。
6.如权利要求1所述的计算机程序产品,其中该掩码字段包含加号代码控制,其用于编码加号。
7.如权利要求1所述的计算机程序产品,其中该掩码字段包含强迫加零控制,其用于确定放置在该第二操作数中的结果的符号。
8.如权利要求1所述的计算机程序产品,其中该掩码字段包含区位字段和符号字段,并且其中该方法进一步包含使用该区位字段和该符号字段中的至少一个以确定该符号字段和存储在该第二操作数中的该结果的字段代码中的至少一个的值。
9.如权利要求1所述的计算机程序产品,其中该机器指令包含长度字段,其指定要转换的该第一操作数的最右边有效数数位的数目和该第二操作数的长度中的至少一个。
10.如权利要求1所述的计算机程序产品,其中该执行包含从至少一个浮点寄存器读取该第一操作数的至少一部分,并且其中包括该结果的该第二操作数在存储器中。
11.一种用于在中央处理单元中执行机器指令的计算机系统,该计算机系统包含: 存储器;以及 处理器,其与该存储器通信,其中该计算机系统配置为执行一种方法,该方法包含:获得用于执行的机器指令,该机器指令根据计算机架构定义用于计算机执行,该机器指令包含:至少一个操作码字段,其用于提供操作码,该操作码识别从十进制浮点转换为区位函数; 第一寄存器字段,其指定第一寄存器,该第一寄存器包含第一操作数; 第二寄存器字段和位移字段,其中由该第二寄存器字段指定的第二寄存器的内容与该位移字段的内容组合以形成第二操作数的地址;以及 掩码字段,该掩码字段包含在该机器指令的执行期间使用的一个或多个控制;并且 执行该机器指令,该执行包含: 将十进制浮点格式的该第一操作数的至少一部分转换为区位格式;以及 将该转换的结果放置在由该第二操作数的该地址指定的位置处。
12.如权利要求11所述的计算机系统,其中该掩码字段包含符号控制,其用于指示该第二操作数具有符号字段。
13.如权利要求11所述的计算机系统,其中该掩码字段包含区位控制,其用于确定该第二操作数的区位字段的值。
14.如权利要求11所述的计算机系统,其中该掩码字段包含加号代码控制,其用于编码加号。
15.如权利要求11所述的计算机系统,其中该掩码字段包含强迫加零控制,其用于确定放置在该第二操作数中的结果的符号。
16.如权利要求11所述的计算机系统,其中该掩码字段包含区位字段和符号字段,并且其中该方法进一步包含使用该区位字段和该符号字段中的至少一个以确定该符号字段及存储在该第二操作数中的该结果的字段代码中的至少一个的值。
17.如权利要求11所述的计算机系统,其中该机器指令包含长度字段,其指定要转换的该第一操作数的最右边有效数数位的数目和该第二操作数的长度中的至少一个。
18.一种用于在中央处理单元中执行机器指令的方法,该方法包含: 由处理器获得用于执行的机器指令,该机器指令根据计算机架构定义用于计算机执行,该机器指令包含: 至少一个操作码字段,其用于提供操作码,该操作码识别从十进制浮点转换为区位函数; 第一寄存器字段,其指定第一寄存器,该第一寄存器包含第一操作数; 第二寄存器字段和位移字段,其中由该第二寄存器字段指定的第二寄存器的内容与该位移字段的内容组合以形成第二操作数的地址;以及 掩码字段,该掩码字段包含在该机器指令的执行期间使用的一个或多个控制;并且 执行该机器指令,该执行包含: 将十进制浮点格式的该第一操作数的至少一部分转换为区位格式;以及 将该转换的结果放置在由该第二操作数的该地址指定的位置处。
19.如权利要求18的方法,其中该掩码字段包含用于指示该第二操作数是否具有符号字段的符号控制、用于确定该第二操作数的区位字段的值的区位控制、用于编码加号的加号代码控制以及用于确定放置在该第二操作数中的结果的符号的强迫加零控制。
20.如权利 要求18的方法,其中该机器指令包含长度字段,其指定要转换的该第一操作数的最右边有效数数位的数目和该第二操作数的长度中的至少一个。
【文档编号】G06F9/30GK104025043SQ201280065483
【公开日】2014年9月3日 申请日期:2012年11月13日 优先权日:2011年12月29日
【发明者】S.卡洛, E.M.施瓦兹, T.斯莱格尔, 小查尔斯.盖尼, M.米特兰, R.科佩兰德 申请人:国际商业机器公司