用于从压缩十进制格式转换为十进制浮点格式的机器指令的制作方法

文档序号:11530601阅读:229来源:国知局
用于从压缩十进制格式转换为十进制浮点格式的机器指令的制造方法与工艺

相关申请的交叉引用

本申请涉及同时提交的标题为“machineinstructionsforconvertingfromdecimalfloatingpointformattopackeddecimalformat(用于从十进制浮点格式转换为压缩十进制格式的机器指令)”的美国专利申请14/502082,此专利申请在此全部引入作为参考。



背景技术:

本发明一般地涉及将数据从一种格式转换为另一种格式,并且更具体地说,涉及通过执行机器指令在压缩十进制格式与十进制浮点格式之间转换数据。

通常,用于处理以压缩十进制格式存储在数据库中的数字十进制(即,基数10)数据的运算直接针对存储装置运行。这些运算被称为存储到存储十进制运算。存储到存储运算的性能受存储接口的延迟的限制,因为依赖于来自上一个运算的结果的每个运算必须等待,直到结果被写出到存储器该运算才可以开始。随着存储延迟与处理器速度之间的差距继续增加,这些运算的相对性能继续降低。



技术实现要素:

本发明的各个方面包括一种用于执行机器指令的计算机程序产品、方法、以及系统。根据本发明的一个方面,提供一种通过执行机器指令将数据从一种格式转换为另一种格式的方法。所述方法从在通信上耦合到处理器的存储器读取压缩十进制格式的数据。所述方法将所述压缩十进制格式的数据转换成十进制浮点格式。所述方法将转换成所述十进制浮点格式的数据写入所述处理器的一个或多个目标寄存器。

根据本发明的另一个方面,提供一种用于将数据从一种格式转换为另一种格式的计算机程序产品。所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其包含的机器指令。可由处理器读取的所述机器指令导致处理电路执行一种方法。所述方法从在通信上耦合到所述处理器的存储器读取压缩十进制格式的数据。所述方法将所述压缩十进制格式的数据转换成十进制浮点格式。所述方法将转换成所述十进制浮点格式的数据写入所述处理器的一个或多个目标寄存器。

根据本发明的再一方面,提供一种用于将一种格式的数据转换为另一种格式的计算机系统。所述计算机系统包括存储器,其具有压缩十进制格式的数据。所述计算机系统进一步包括处理器,其被配置为执行机器指令以便执行一种方法。所述方法从在通信上耦合到所述处理器的所述存储器读取压缩十进制格式的数据。所述方法将所述压缩十进制格式的数据转换成十进制浮点格式。所述方法将转换成所述十进制浮点格式的数据写入所述处理器的一个或多个目标寄存器。

附图说明

现在将仅通过实例的方式参考附图描述本发明的实施例,这些附图是:

图1示出根据本发明的一个实施例的计算机系统的框图;

图2示出根据本发明的一个实施例的机器指令的格式;

图3示出根据本发明的一个实施例的用于转换数据的过程流程;

图4示出根据本发明的一个实施例的机器指令的格式;以及

图5示出根据本发明的一个实施例的用于转换数据的过程流程。

具体实施方式

用于浮点数的ieee标准(ieee754-2008)包括用于十进制浮点运算和数字格式的标准。该标准已被常规计算系统支持。但是,在这些常规计算系统中,浮点运算不能非常好地与压缩十进制格式的数据交互。这是因为用于处理压缩十进制格式的数据的软件例程必须被手动开发并且因此不会可靠地用于这些系统,并且还因为没有将数据从压缩十进制格式转换为十进制浮点格式的有效方式。

本发明的实施例有效地在压缩十进制格式与十进制浮点格式之间转换数据,而没有与存储到存储运算关联的存储开销。具体地说,本发明的实施例提供用于将数据从压缩十进制格式转换为十进制浮点格式的两个示例性机器指令。这两个示例性指令在此被称为长转换自压缩指令(cdpt,longconvertfrompackedinstruction)和扩展转换自压缩指令(cxpt,extendedconvertfrompackedinstruction)。cdpt用于从存储器读取压缩十进制格式的数据(例如,多达16位),将该数据转换成具有零指数的适当十进制浮点格式,并且将十进制浮点格式的数据写入目标浮点寄存器。cxpt用于从存储器读取压缩十进制格式的数据(例如,多达34位),将该数据转换成具有零指数的适当十进制浮点格式,并且将十进制浮点格式的数据写入目标浮点寄存器对。

本发明的实施例进一步提供用于将数据从十进制浮点格式转换为压缩十进制格式的指令的两个其它示例性机器指令。这两个示例性指令在此被称为长转换为压缩指令(cpdt,longconverttopackedinstruction)和扩展转换为压缩指令(cpxt,extendedconverttopackedinstruction)。cpdt用于从指定浮点寄存器读取十进制浮点格式的数据,将指定浮点寄存器中的数据的尾数转换为压缩十进制格式,并且将数据写入目标存储位置。cpxt用于将浮点寄存器对中的扩展精度十进制浮点数据转换为压缩十进制格式,并且将该数据存储到目标存储位置。

如本领域中已知的,在压缩十进制格式中,数字以一系列8位字节来表示,其中每个字节的四位被分配给单个十进制数(digit),从而允许每个字节表示两个十进制数。4位模式中的一个被分配给符号(正或负)。压缩十进制数可以是任何指定长度,直到适用的语言所施加的限制,且认为在某个固定位置具有隐式小数点。

如本领域中已知的,十进制浮点格式旨在用于与压缩十进制格式不同的用途。使用不同的更紧凑的表示在十进制浮点格式中编码十进制数。十进制浮点数据可以以三种数据格式中的任一种表示:短、长或扩展。三种数据格式中的每一种的内容表示编码信息。分配特殊代码以便将有限数与nan(非数字)和无穷大区分开。对于有限数,在格式中使用偏置指数。对于三种格式中的每一种,针对右单位视图指数(right-units-viewexponents)使用不同于左单位视图指数(left-units-viewexponents)的偏差。偏置指数是无符号数。使用组合字段中的有效位(significand)的最左侧位来编码偏置指数。在编码后的尾随有效位字段中编码有效位的剩余位。

当将十进制浮点短格式的操作数(即,数据)加载到浮点寄存器中时,操作数占用寄存器的左半部分,并且右半部分保持不变。当将十进制浮点双精度格式(即,十进制浮点长格式)的操作数加载到浮点寄存器中时,操作数占用整个寄存器。十进制浮点扩展格式的操作数占用一个浮点寄存器对。最左侧64位占用该对的整个较低编号的寄存器,并且最右侧64位占用整个较高编号的寄存器。符号位在每种格式的位0中,并且例如对于正号为0而对于负号为1。

对于有限数,组合字段包括偏置指数和有效位的最左侧数位;对于nan和无穷大,组合字段包括用于标识nan和无穷大的代码。当格式的位1-5在00000-11101的范围内时,操作数是有限数。偏置指数的两个最左侧位和有效位的最左侧数位以格式的位1-5来编码。位6到组合字段的末尾包括偏置指数的其余部分。当格式字段的位1-5为11110时,操作数为无穷大。格式的位5右侧的组合字段中的所有位构成无穷大的保留字段。在源无穷大中接受保留字段中的非零值;在结果无穷大中将保留字段设置为0。当格式的位1-5为11111时,操作数为nan,并且位6(被称为snan位)进一步将qnan(安静nan)与snan(信令nan)区分开。如果位6为0,则它为qnan;否则为snan。格式的位6右侧的组合字段中的所有位构成nan的保留字段。在源nan中接受保留字段中的非零值;在结果nan中将保留字段设置为0。

图1示出根据本发明的某些实施例的用于有效地在压缩十进制格式与十进制浮点格式之间转换数据的系统100。具体地说,该图示出系统100包括处理器105、存储器110和输入/输出(i/o)接口115,此外还包括为使例示和描述简单而未被示出的其它组件(例如,网络接口)。应该理解,那些其它组件对于理解本发明的各种实施例不是必需的。处理器105、存储器110和i/o接口115经由一个或多个总线120彼此耦接。

如本领域中已知的,处理器或处理器系列(例如8086和x86系列或ibmsystemz服务器系列的处理器)具有它自己的机器指令集。例如,在ibm出版物z/architectureprinciplesofoperation(z/架构操作原理)(sa22-7832-09,第10版,2012年9月,其全部内容在此引入作为参考)中给出了ibmsystemz服务器系列的指令集(被称为z/architecture指令集)。机器指令是通过设计对应于到机器的不同命令的位模式。在大多数情况下,指令集特定于使用相同架构的一类处理器。机器指令集可以具有相同长度的所有指令,或者该集合可以具有可变长度指令。大多数指令具有一个或多个操作码字段,这些字段指定基本指令类型(例如算术、逻辑、跳转等)和实际运算(例如加法或比较);以及其它字段,其它字段可以给出操作数(多个)的类型、寻址模式(多个)、寻址偏移(多个)或索引,或者实际值本身。即,每个机器指令用于针对寄存器或存储器中的数据单元执行非常特定的任务,例如加载、跳转或算术逻辑单元(alu)运算。

处理器106是被配置为执行包括cdpt、cxpt、cpdt和cpxt(图1中未示出)的机器指令的处理器。即,当执行cdpt或cxpt时,处理器106从存储器110读取压缩十进制格式的数据,将该数据转换成适当的十进制浮点格式,并且将十进制浮点格式的数据写入寄存器125的目标浮点寄存器或目标浮点寄存器对。当执行cpdt和cpxt时,处理器106从寄存器125的源浮点寄存器或浮点寄存器对读取十进制浮点格式的数据,将十进制浮点格式的数据转换为压缩十进制格式,并且将数据存储到存储器110中的目标存储位置。处理器106的寄存器125包括一个或多个通用寄存器和/或一个或多个专用寄存器(包括浮点寄存器)。

i/o接口115支持i/o设备到系统100的附接。可以通过i/o接口115附接到系统100的i/o设备包括键盘和显示器以及盘、直接存取存储设备、光盘和其它存储介质。在某些实施例中,处理器106经由i/o接口115在系统100外部的存储器(未示出)中存储和取回压缩十进制格式的数据。

图2示出cpdt和cpxt的一种实例格式200。格式200包括操作码字段205、长度字段(l2)210、基址寄存器字段(b2)215、位移字段(d2)220、寄存器字段(r1)225、掩码字段(m3)230以及操作码字段235。操作码字段235是操作码字段205的扩展以便保存较长操作码(例如,2字节操作码)。在格式200下面示出的数字是位索引。如图所示,某些实施例的格式200具有48位的长度。

操作码字段205保存指定要执行的运算的操作码(例如,十六进制值)。预定义操作码(例如,edaehex)指定由格式200表示的机器指令是cpdt。另一个预定义操作码(例如,edafhex)指定机器指令是cpxt。当由处理器执行cpdt或cpxt时,处理器将压缩十进制格式的第二操作数转换为十进制浮点格式。该转换的结果被放置在第一操作数位置(即寄存器或寄存器对)处。

长度字段210指定第二操作数(即,压缩十进制格式的数据)的长度(例如,以字节为单位)。在某些实施例中,长度字段210包括用于cpdt的0与8之间(即,长度为1到9字节)的长度代码,以及用于cpxt的0到17(即,长度为1到18字节)的长度代码。即,长度字段210指示的字节数对应于压缩十进制格式的数据具有的位数。

基址寄存器字段215指定通用寄存器。由基址寄存器字段215指定的通用寄存器的内容被与位移字段220的内容相加。位移字段220包括这样的内容:这些内容被与由基址寄存器字段215指定的通用寄存器的内容相加以形成第二操作数地址。

寄存器字段225指定浮点寄存器。所指定寄存器的内容是第一操作数(即,转换为十进制浮点格式的数据)。包括第一操作数的寄存器被称为第一操作数位置。

掩码字段230具有四个位(例如,位0到位3)。在某些实施例中,掩码字段230包括符号控制(例如,位),在一个实例中符号控制是掩码字段230的位0。当符号控制关闭时(例如,当将符号控制位设置为0时),第二操作数没有符号位,并且十进制浮点第一操作数结果的符号位被设置为指示正号的值(例如,0)。当符号控制开启时(例如,当将符号控制位设置为1时),第二操作数包含符号位-第二操作数的最右侧字节的最右侧四个位位置是符号。当第二操作数的符号位指示正值时,将十进制浮点第一操作数结果的符号位设置为指示正号的值(例如,0)。当第二操作数的符号字段指示负值时,将十进制浮点第一操作数结果的符号位设置为指示负号的值(例如,1)。

在某些实施例中,掩码字段230包括忽略符号位控制(例如,位),在一个实例中忽略符号位控制是掩码字段230的位3。仅当符号控制开启时才使用该忽略符号位控制。当符号控制关闭时,忽略符号位控制被忽略。当忽略符号位控制关闭时(例如,当将忽略符号位设置为0时),不采取动作。当忽略符号位控制开启时(例如,当将忽略符号位设置为1时),忽略第二操作数的符号位。即,不检查第二操作数的符号位的无效性,并且将十进制浮点第一操作数结果的符号位设置为指示正号的0。

当在第二操作数中检测到无效位或符号代码时,或者当未使用的位不为0时,识别到异常。如果符号控制和忽略符号位控制为1,则不针对符号位执行符号代码检查。

当检测到异常时,不执行由操作码字段205指定的机器指令。对于cdpt,当长度字段210大于8时,处理器停止执行该机器指令并且返回异常。对于cxpt,当长度字段210大于17时或者当寄存器字段225指定无效的浮点寄存器对时,处理器停止执行该机器指令并且返回异常。

图3示出根据本发明的某些实施例的用于执行机器指令的过程流程。在某些实施例中,系统100(具体地说图1的处理器105)执行图3中所示的过程流程。

在方框310,处理器105验证所接收的机器指令以便判定是否返回异常并停止执行该机器指令。具体地说,处理器105判定所接收的机器指令是否满足异常的任何条件。例如,当操作码字段205指示所接收的机器指令是cdpt时,处理器105判定长度字段210是否大于8。如果长度字段210大于8,则处理器105确定满足异常条件。此外,当操作码字段205指示所接收的机器指令是cpxt时,处理器105判定长度字段210是否大于17。如果长度字段210大于17,则处理器105确定满足异常条件。此外,当操作码字段205指示所接收的机器指令是cpxt时,处理器105还判定寄存器字段225是否指定了无效的浮点寄存器对。如果寄存器字段225指定了无效的浮点寄存器对,则处理器105确定满足异常条件。

当处理器105在方框310确定满足异常条件时,处理器105继续到方框320,这将在下面进一步描述。当处理器105在方框310确定不满足异常条件时,处理器105在方框380停止执行该机器指令并且返回异常。即,处理器105不执行由所接收的机器指令的操作码字段205指定的运算。

在方框320,处理器105从存储器110读取如格式200的字段所指定的压缩十进制格式的数据。在方框330,处理器105检查压缩十进制格式的十进制数的有效性。如果十进制数无效,则处理器105继续到方框380以便停止执行该机器指令并且返回异常。在方框340,处理器105检查压缩十进制格式的符号的有效性。如果符号无效,则处理器105继续到方框390以便停止执行该机器指令并且返回异常。

如果十进制数和压缩十进制格式的符号有效,则处理器105继续到方框350以便将数据中的数字转换成十进制浮点格式。具体地说,当机器指令是cpdt时,处理器105将数字转换成十进制浮点双精度格式(即,十进制浮点长格式)。当机器指令是cpxt时,处理器105将数字转换成十进制浮点扩展格式。

在方框360,处理器105设置用于转换后的数字的符号。具体地说,在某些实施例中,处理器105检查格式200的符号控制位。当符号控制关闭时,压缩十进制格式的数据没有符号字段,并且处理器105将十进制浮点数据的符号位设置为指示正号的值(例如,0)。当符号控制开启时,压缩十进制格式的数据包含符号位。当该符号位指示正值时,处理器105将十进制浮点数据中的数据的符号位设置为指示正号的值(例如,0)。当符号位指示负值时,处理器105将十进制浮点数据中的数据的符号位设置为指示负号的值(例如,1)。

在方框360,处理器105还在符号控制开启时检查忽略符号位控制。即,当符号控制关闭时,处理器105不使用忽略符号位控制。当忽略符号位控制关闭时,处理器105不采取动作。当忽略符号位控制开启时,忽略压缩十进制格式的数据的符号位。即,处理器105不检查压缩十进制格式的数据的符号位的无效性,并且将十进制浮点格式的数据的符号位设置为指示正号的值(例如,0)。

在方框370,处理器105将数据和符号写入十进制浮点格式寄存器(多个)中。具体地说,当机器指令是cdpt时,处理器105将数据写入目标十进制浮点寄存器中。当机器指令是cxpt时,处理器105将数据写入处理器105的一对目标十进制浮点寄存器中。

上面详细描述了两个指令cdpt和cxpt,它们提供了显著改善存储到存储十进制运算的手段。通过诸如加法(ap)、减法(sp)、乘法(mp)或除法(dp)之类的算术运算来操作压缩十进制格式的数据。这些算术运算必须等待先前操作的存储完成,然后算术运算才能开始,并且这些算术运算然后将结果存储到存储器。对运算的存储器依赖性主导了性能。诸如比较、移位和符号操纵之类的其它运算也可以作为基于寄存器的运算而不是作为存储到存储运算被执行,并且由此提高性能。

采用新指令cdpt和cxpt(例如,重新编译已启用cdpt和cxpt的程序的源代码)会使用十进制浮点格式等效物(例如,ad/xtr、sd/xtr、md/xtr、dt/xtr)替换压缩十进制格式的算术运算,以使得对于要存储或从存储器读取的任何操作数(即,数据)不存在等待。ad/xtr、sd/xtr、md/xtr和dt/xtr以与ap、sp、mp或dp相似的时间量操作,但没有存储开销。

cdpt和cxpt指令提供用于将数据从存储器中的压缩十进制格式直接转换成寄存器中的十进制浮点格式的有效手段。cdpt和cxpt允许在单个步骤中将数据从压缩十进制格式转换为十进制浮点格式。通常,压缩十进制格式的数据必须被加载到通用寄存器中,但因为当前在常规指令集架构中没有长度受控加载,这通常需要字、半字和字节加载操作的混合。然后能够使用其它机器指令将通用寄存器/通用寄存器对中的压缩十进制格式的数据转换为目标十进制浮点格式。相比之下,cdpt或cxpt允许在单个步骤中将数据从存储器中的压缩十进制格式转换为目标寄存器(多个)中的十进制浮点格式。

在某些情况下,存储在盘或磁带上的压缩十进制格式的数据不能具有可信符号。因此,不能使用cdpt和cxpt指令的常规编译器针对每个操作数插入orimmediate(oi)指令以便强制符号位为fhex。输入操作数的这种附加清除引入额外的存储延迟。相比之下,采用cdpt和cxpt使能通过以下方式移除这些oi指令:替代地设置忽略符号位位来作为从压缩十进制格式到十进制浮点格式的格式转换的一部分而强制产生正值。

除了从压缩转换为十进制浮点指令(cdpt和cxpt)之外,还提供cpdt和cpxt指令。cpdt和cpxt提供将数据从浮点寄存器或浮点寄存器对中保存的十进制浮点格式转换为压缩十进制格式并将转换后的数据直接存储到存储器的有效手段。

图4示出cpdt和cpxt的一个实例格式400。格式400包括操作码字段405、长度字段(l2)410、基址寄存器字段(b2)415、位移字段(d2)420、寄存器字段(r1)425、掩码字段(m3)430以及操作码字段435。格式400下示出的编号是位索引。如图所示,某些实施例的格式400具有48位的长度。

操作码字段405保存指定要执行的运算的操作码(例如,十六进制值)。预定义操作码(例如,edachex)指定由格式400表示的机器指令是cpdt。另一个预定义操作码(例如,edadhex)指定机器指令是cpxt。当由处理器执行cpdt或cpxt时,处理器将第一操作数(即,十进制浮点格式的数据)的有效数字和第一操作数的符号位转换为压缩十进制格式。处理器忽略组合字段中的指数,并且在偏置之前将其视为指数具有为0的值。

长度字段410指定包含第一操作数的最右侧有效数字的字节数量。在某些实施例中,长度字段410包括用于cpdt的0与8之间(即,长度为1到9字节)的长度代码,以及用于cpxt的0到17(即,长度为1到18字节)的长度代码。长度字段410指示的字节数量还对应于转换为压缩十进制格式的数据将具有的位数。当由处理器执行cpdt或cpxt时,处理器将由长度字段410指示的字节数量放置在第二操作数位置处。如果没有足够的有效数字来填充转换成压缩十进制格式的数据的所有字节,则处理器将数字0附加到有效数字作为最左侧数字。

基址寄存器字段415指定通用寄存器。由基址寄存器字段415指定的通用寄存器的内容被与位移字段420的内容相加。位移字段420包括这样的内容:这些内容被与由基址寄存器字段415指定的通用寄存器的内容相加以形成第二操作数地址。

寄存器字段425指定寄存器。所指定寄存器的内容是第一操作数(即,十进制浮点格式的源数据)。包括第一操作数的寄存器被称为第一操作数位置。

掩码字段430具有四个位(例如,位0到位3)。在某些实施例中,掩码字段430包括符号控制(例如,位),在一个实例中符号控制是掩码字段430的位0。当符号控制开启时(例如,当将符号控制位设置为1时),第二操作数具有符号位—第二操作数的最右侧字节的最右侧四个位位置将具有符号。当符号控制关闭时(例如,当将符号控制位设置为0时),第二操作数没有符号位。

在某些实施例中,掩码字段430包括加号代码控制(例如,位),在一个实例中加号代码控制是掩码字段430的位2。仅当符号控制开启时才使用该加号代码控制。当符号控制关闭时,加号代码控制被忽略。当加号代码控制关闭时(例如,当将加号代码控制设置为0时),加号被编码为指示正号的值(例如,11002或chex)。当加号代码控制开启时(例如,当将加号代码控制设置为1时),加号被编码为指示无符号数的值(例如,11112或fhex)。

在某些实施例中,掩码字段430包括强制加零控制(例如,位),在一个实例中强制加零控制是掩码字段430的位3。仅当符号控制开启时才使用该强制加零控制。当符号控制关闭时,强制加零控制被忽略。当强制加零控制关闭(例如,当将强制加零控制设置为0)并且产生负零的带符号值时,不采取动作。当强制加零控制开启(例如,当将强制加零控制设置为1)并且要放置在第二操作数位置中的转换结果的绝对值为零时,使用由加号代码控制指定的符号代码设置转换结果的符号位以便指示正零。

针对任何类型的第一操作数(包括无穷大、qnan或snan)执行cpdt或cpxt而不导致异常。如果第一操作数是特殊的(即,无穷大、qnan或snan),则附加数字0作为有效数字的最左侧数字,从而在概念上形成要转换的实际有效数字。指定数量的最右侧实际有效数字和符号位被转换为压缩十进制格式。转换结果被放置在第二操作数位置处,并且以适当的条件代码完成cpdt或cpxt的执行。实例条件代码包括:0,其用于指示十进制浮点格式的源数据为0;1,其用于指示源数据不是特殊的并且小于0;2,其用于指示源数据不是特殊的并且大于0;以及3,其用于指示源是特殊的—无穷大、qnan、snan或部分结果。

对于任何类型的第一操作数(包括无穷大和nan),当因为第二操作数字段太短而使有效位的一个或多个最左侧非零位丢失时,通过忽略溢出位获得转换结果。然后,设置条件代码3。如果十进制溢出掩码位为1,则发生针对十进制溢出的程序中断。操作数长度本身不是溢出的指示;非零位必定已在运算期间丢失。

图5示出根据本发明的某些实施例的用于执行机器指令的过程流程。在某些实施例中,系统100(具体地说图1的处理器105)执行图5中所示的过程流程。

在方框510,处理器105验证所接收的机器指令以便判定是否返回异常并停止执行该机器指令。具体地说,处理器105判定所接收的机器指令是否满足任何异常条件。例如,当操作码字段405指示所接收的机器指令是cdpt时,处理器105判定长度字段410是否大于8。如果长度字段410大于8,则处理器105确定满足异常条件。此外,当操作码字段405指示所接收的机器指令是cpxt时,处理器105判定长度字段410是否大于17。如果长度字段410大于17,则处理器105确定满足异常条件。

当处理器105在方框510确定满足异常条件时,处理器105继续到方框520,这将在下面进一步描述。当处理器105在方框510确定不满足异常条件时,处理器105在方框560停止执行该机器指令并返回异常。即,处理器105不执行由所接收的机器指令的操作码字段405指定的运算。

在方框520,处理器105从如由格式400的字段指定的十进制浮点寄存器或十进制浮点寄存器对读取十进制浮点格式的数据。在方框530,处理器105将十进制浮点格式的数据中的数字转换成压缩十进制格式。具体地说,如果十进制浮点格式的数据是特殊的(即,无穷大、qnan或snan),则处理器105附加数字0作为有效数字的最左侧数字。处理器105还将指定数量的最右侧实际有效数字和符号位转换为压缩十进制格式。

在方框540,处理器105设置用于转换后的数字的符号。具体地说,在某些实施例中,处理器105检查格式400的符号控制位。当符号控制开启时,处理器105为压缩十进制格式的转换后数据设置符号位。处理器105在压缩十进制格式的数据的最右侧字节的最右侧四个位位置中设置符号。当符号控制关闭时,处理器105不为压缩十进制格式的转换后数据设置符号位。

在方框540,当符号控制开启时,处理器105还检查加号代码控制。即,当符号控制关闭时,处理器105忽略加号代码控制。当加号代码控制关闭时(例如,当将加号代码控制设置为0时),处理器105将加号编码为指示正号的值(例如,11002或chex)。当加号代码控制开启时(例如,当将加号代码控制设置为开启时),处理器105将加号编码为指示无符号数的值(例如,11112或fhex)。

也在方框540,当符号控制开启时,处理器105检查强制加零控制。当符号控制关闭时,处理器105忽略强制加零控制。当强制加零控制关闭并且产生负零的带符号值时,处理器105不采取动作。当强制加零控制开启并且转换为压缩十进制格式的数据的绝对值为零时,处理器105使用由加号代码控制指定的符号代码设置数据的符号位以便指示正零。

在方框550,处理器105将压缩十进制格式的数据写入目标存储位置。在某些实施例中,处理器105还返回适当的条件代码。

cpdt和cpxt指令提供用于将数据从浮点寄存器或浮点寄存器对中保存的十进制浮点格式直接转换为压缩十进制格式并将转换后的数据存储到存储器的有效手段。通常,必须在通用寄存器中将十进制浮点格式的数据转换为压缩十进制格式。然后必须将转换为压缩十进制格式的数据从通用寄存器存储到存储器,但因为当前在常规指令集架构中没有长度受控加载,这通常需要字、半字和字节加载操作的混合。相比之下,cdzt或cxzt允许在单个步骤中将数据从寄存器(多个)中的十进制浮点格式转换为存储器中的压缩十进制格式。因此,能够提高计算机本身的功能。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是—但不限于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

出于示例目的给出了对本发明的不同实施例的描述,但所述描述并非旨在是穷举的或是限于所公开的实施例。在不偏离所述实施例的范围和精神的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。在此使用的术语的选择,旨在最好地解释实施例的原理、实际应用或对市场中的技术的技术改进,或者使所属技术领域的其它普通技术人员能理解在此所公开的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1