CN113518971A - 指令执行中的数位验证检查控制 - Google Patents

指令执行中的数位验证检查控制 Download PDF

Info

Publication number
CN113518971A
CN113518971A CN202080013466.9A CN202080013466A CN113518971A CN 113518971 A CN113518971 A CN 113518971A CN 202080013466 A CN202080013466 A CN 202080013466A CN 113518971 A CN113518971 A CN 113518971A
Authority
CN
China
Prior art keywords
check
digital
validation
indicator
instruction
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
CN202080013466.9A
Other languages
English (en)
Inventor
C·里彻特纳
R·科普兰
P·莱贝尔
S·米勒
J·布拉德伯里
郭欣
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN113518971A publication Critical patent/CN113518971A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1052Bypassing or disabling error detection or correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/491Computations with decimal numbers radix 12 or 20.
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/491Indexing scheme relating to groups G06F7/491 - G06F7/4917
    • G06F2207/4912Non-specified BCD representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

用于指令的执行的数位验证检查控制。过程获得用至少一个输入值执行操作的指令。所述指令无验证指示符,用于控制是否为所述指令的执行而启用数位验证检查控制。所述过程执行指令,所述执行包括基于无验证指示符,确定是否为所述指令的执行启用了数位验证检查控制,以及基于所述确定而执行处理。基于无验证指示符被设置为定义的值,启用数位验证检查控制,并且所述处理包括强制所述执行输出的数位检查错误指示符指示关于所述至少一个输入值无数位检查错误。

Description

指令执行中的数位验证检查控制
背景技术
二进制编码的十进制(BCD)是各种计算机系统和不同格式(如压缩十进制和分区十进制格式)中常用的十进制数编码。例如,数字+123(正123)在内存中以压缩十进制格式表示为12 3c,用空格分隔不同字节的值。数字12 3c消耗两个字节的数据–四个4位字段,其中最左边的三个、即最高有效4位字段保存数字1、2和3的二进制表示,最低有效4位字段保存表示正号的符号码“C”。在分区十进制格式中,+123表示为内存的三个字节F1 F2 C3。三个字节中的每一个字节都包括(i)一个4位字段,保存一个数字的二进制表示形式,以及(ii)一个4位字段,保存该数字的区位码。前两位数字“1”和“2”具有区位码“F”,最后一位数字“3”具有符号码“C”,表示正数。
在COBOL等编程语言中,在处理分区十进制和压缩十进制等格式时,对二进制编码的十进制数执行转换和移动操作等是很常见的。COBOL和其他语言通常都有定义良好的规则,针对各种情况是否以及应该执行什么样的验证和符号修改。在这些操作过程中,除了更改位数和设置条件码外,还可以检查数位和符号码的有效性。以压缩十进制数为例,硬件检查所有数字位置是否包含0-9范围内的数字,以及最低有效4位字段是否包含A到F范围内的符号码。如果检查失败,则调用数据异常。另外或者替代地,作为这些操作的一部分,可以修改符号。
各种指令集架构指令(例如,已知由美国纽约州阿蒙克的国际商业机器公司提供的
Figure BDA0003204004880000011
硬件架构的VECTOR PERFORM SIGN OPERATIONDECIMAL(VPSOP)指令(z/Architecture是注册商标))提高了例如上述操作的性能。然而,现有指令仍未能以期望方式处理某些情形。
例如,转换相对大的BCD数需要若干指令来部分地执行转换。可能需要通过所涉及的多个转换步骤来保持零的符号。在这方面,众所周知,零值可以具有符号,例如正号或负号。
提供了一个对相对较大的(31位)BCD数的示例性转换来说明。为了将源31位压缩十进制数转换为目标分区格式,COBOL编译器生成3条UNPK指令,例如:UNPK 1(15,8)、400(8,13);UNPK 15(3,8),407(2,13);UNPK 16(16,8),407(9,13)。最后一条UNPK指令转换源的最后17位数字。用向量指令替换最后一条UNPK指令例如作为用较新的指令优化编译的COBOL代码的优化过程的一部分,使用VPSOP指令将原始数字截断为17位,然后使用是UNPK指令的等价向量指令的VECTOR UNPACK ZONED(VUPKZ)指令。如果这最后17位数字都是零,则VPSOP的结果将带正号,无论源的原始符号是什么。如果原始数字为负数,则会导致不期望的结果。
在另一个例子中,COBOL编译器可以使用MVC和OI指令的组合来强制BCD数的符号,不是之后再检查数字。但是,某些指令(例如VPSOP)包含此类检查操作,这可能会导致问题。例如,假设希望将数据从源位置(A,包含数字12 3c)移动到目标位置(B)。作为这个序列输入的示例原始指令是MVC和OI指令,用于从源A向目标B移动(MVC)数据,并在目标B中将符号码(OI)设置为0xF,即:
MVCB,A[B于是包含12 3C]
OI B,0xF[B于是包含12 3F;OI是‘或-直接’,其有效地将符号改为F]
MVC和OI不执行数据或符号验证。相比之下,用于优化此COBOL代码序列的一些指令(例如,VPSOP指令)被配置为验证十进制数位,如果无效抛出数据异常。使用源A是A1 3C的场景,注意到,‘A1’的‘A’不是范围0-9內的数字。COBOL中的MVC+OI序列正确地将A1 3F置于目标B中。然而,源输入A1 3C将在VPSOP执行时导致数据异常,基于A不是范围0-9內的有效数字。
测试和纠正上述情况可能需要大量的资源,特别是存在具有诸如以上描述的不兼容的若干实例的大量代码时。
发明内容
通过提供一种用于促进计算环境中的处理的计算机程序产品来克服现有技术的缺点并提供附加的优点。所述计算机程序产品包含计算机可读存储介质,所述计算机可读存储介质可由处理电路读取且存储用于执行一种方法的指令。该方法包括获得用至少一个输入值执行一个或多个操作的指令。所述指令是单个架构化指令,并且所述指令包括无验证指示符,用于控制是否为所述指令的执行而启用数位验证检查控制。所述方法还包括执行所述指令。所述执行包括基于无验证指示符,确定是否为所述指令的执行启用了数位验证检查控制。执行所述指令还包括基于所述确定执行处理,其中,基于无验证指示符被设置为定义的值,启用数位验证检查控制,并且所述处理包括强制所述执行输出的数位检查错误指示符指示关于所述至少一个输入值无数位检查错误。该方案具有的优点在于,它提供了对是否由指令的执行来指示数位验证检查错误的按指令的控制。可以基于每个指令选择性地启用或禁用数位检查错误的指示,从而能够在验证检查否则可能会或确实基于尽管输入数字有效、但不在预期范围(例如,0-9)内而提交数位检查错误的情况下,传达无数位检查错误。这在例如输入数字不是数字(0-9)值而是在值A至F的其余范围中的非数值编码的情况下是有利的。
本文还描述并要求保护涉及一个或多个方面的计算机实现的方法和系统。进一步,本文还描述并可以要求保护涉及一个或多个方面的服务。
在有些实施例中,所述执行进一步包括对所述至少一个输入值执行数位验证检查,所述数位验证检查要验证所述至少一个输入值是否包括在定义的位置內的数字,并基于所述验证,输出指示关于所述至少一个输入值是否存在数位检查错误的结果。
一种可能性是,基于无验证指示符被设置为定义的值,所述处理可以处理数位验证检查的输出结果以指示无数位检查错误,而不管数位验证检查的输出结果是否指示存在数位检查错误。因此,可以对是否从指令的整体执行输出数位检查错误进行控制,即使作为指令执行的一部分执行的数位验证指示确实存在数位检查错误,就是说,即使当一些数位被数位验证检查指示为错误时,也是如此。这具有的优点在于,能够在数位未落入数位验证检查的期望范围时,选择性地覆盖由数位验证检查交付的结果。
作为另一种可能性,基于无验证指示符被设置为定义的值,所述处理还可以包括将所述至少一个输入值之外的、选择的至少一个预定义值作为输入,馈入数位验证检查。基于数位验证检查被设置得使其输出结果指示无数位验证错误来选择所述至少一个预定义的输入。由所述执行输出的数字校验错误指示符包括指示无数位检查错误的数位验证检查输出结果。这样做的优点在于,它提供了一种在不改变作为执行指令的一部分而执行的验证检查的输出或操作的情况下控制是否指示数位检查错误的方式。
作为另一种可能性,基于无验证指示符被设置为定义的值,对所述至少一个输入值执行数位验证检查,检查要验证所述至少一个输入值是否包括定义的位置內的数字。这有一个优点,即可以完全避免验证检查,这可能会提高执行速度并降低资源消耗,从而提高代码的执行效率。
通过本文所描述的技术来实现附加特征和优点。本文中详细描述了其他实施例和方面,这些实施例和方面被认为是所要求保护的方面的一部分。
附图说明
在本说明书结尾处的权利要求书中特别指出并清楚地要求保护本文所述的各方面的实例。从以下结合附图的详细描述中,本发明的上述和其他目的、特征和优点是显而易见的,其中:
图1A描绘了包括并使用本发明的一个或多个方面的计算环境的一个示例;
图1B描绘了根据本发明的一个或多个方面的图1A的处理器的进一步细节;
图2描绘了包括并使用本发明的一个或多个方面的计算环境的另一示例;
图3描绘了根据本文描述的各方面的示出基于指令的负零控制指示符和无验证指示符的指令执行的一个示例;
图4A描绘了根据本文描述的方面的与使用图3的指令的负零控制指示符相关联的处理的一个示例;
图4B描绘了根据本文所描述的方面的与使用图3的指令的无验证指示符相关联的处理的一个示例;
图5A-5E示出了根据本文描述的方面配置的示例指令的特征;
图6A-6B描绘了根据本文描述的各方面的促进计算环境内的处理的示例;
图7A描绘了包括并使用本文中所描述的各方面的计算环境的另一实例;
图7B描绘了图7A的存储器的进一步细节;
图8描绘了云计算环境的一个实施例;和
图9描绘了抽象模型层的一个示例。
具体实施方式
在不同场景中,可能期望在不同机器指令的执行中控制数据验证和/或零符号强制。在上述涉及VPSOP指令以优化某些已编译COBOL代码的实例中,可能需要抑制对输入数据进行数位验证检查的检查抑制。
本文中描述的各方面提供此类数据验证和零符号控制。由此提供关于是否和何时作为指令执行的一部分执行这些活动的灵活性,由此降低所得代码的复杂性。此外,通过控制是否执行这些活动,提高了性能。
根据本文描述的方面,提供了促进计算环境内的处理的能力。在一个示例中,该能力包括基于每个指令提供零符号控制,例如负零控制,作为产生带符号零值的指令的操作的一部分。作为示例,所述操作包括例如计算操作(例如,算术十进制、二进制编码的十进制、浮点)、转换操作(例如,二进制到十进制、十进制到二进制等)和/或移动操作(例如,将十进制值从一个位置(例如,寄存器)移动到另一个位置)。控制结果的符号,尤其是负零结果是否可以是指令执行的输出,使得能够进行有效的操作,并且使得能够在所有场景中获得期望的结果,从而避免必须执行错误检查或其他检查,并且因此提高整体性能。
在具体示例中,在指令码中提供修饰符位(modifier bit),用于启用或禁停用负零控制,例如,控制零结果上的符号是否要保留或反转,更具体地,是否强制将零量值的结果输出为正零,而不管其最初所带符号为何。修饰符位可以是如本文中使用的“负零控制指示符”。在一些示例中,将负零控制指示符包括到新的架构化指令中。在其他实例中,将负零控制指示符包括到现有架构化指令中,例如作为对已知VPSOP指令的增强。在VPSOP指令的特定实例中,可以将负零控制指示符特别地用于VPSOP指令的维持(Maintain)和互补(Complement)模式/变体,如本文所述那样。维持和互补是当前VPSOP指令的几种(例如四种)模式/变体的其中的两种。这些模式与如由该指令的符号码指示的符号操作相关。
根据本文描述的其他方面,提供了促进计算环境内的处理的能力,包括基于每个指令提供数位验证检查控制。在特定实例中,提供指令码中的修饰符位以控制数位检查错误指示。这些修饰符位在此可以被称为“无验证指示符”。在一些示例中,将无验证指示符包括到新的架构化指令中。在其他实例中,将无验证指示符包括到现有架构化指令中,例如作为对已知VPSOP指令的增强。
因此,可以将负零控制指示符和/或无验证指示符包括到新指令中或者作为修改而包括到现有指令(例如,现有VPSOP指令)中。对于现有指令,指令文本中未被使用或能够被重新目的化的位,可以转而用作用于提供本文描述的功能的负零控制指示符和/或无验证指示符。
各方面可以去除在上述COBOL情况下以其他方式经历的性能降级。例如,在没有本文描述的改进的情况下,一些现有指令(诸如MVC和OI组合)将不会得到增强,并且因此将未被优化地携带到另外优化的代码中,即使周围的COBOL操作可以被转换成更高效的指令。此外,如果紧密地绑定到不能被优化的部分,则缺少对原始COBOL代码的一部分的优化也可能使得难以或不可能优化原始COBOL代码的其他部分。此外,如果原始COBOL代码的其他部分与无法优化的一部分紧密相连,那么缺少对该部分的优化也可能导致难以或不可能优化原始COBOL代码的其他部分。
作为一个示例,指令是指令集架构(ISA)的一部分。例如,它是硬件/软件接口处的单个架构化硬件机器指令。指令可以是执行计算操作、转换操作、移动操作、符号操作和/或其他操作的多个指令之一。指令用于许多类型的处理,包括(但不限于)计算机处理、安全处理、仿真、代码优化和执行不同技术的计算(作为实例)。
根据一方面,可以在每个指令基础上启用和禁用数位验证检查控制和/或负零控制。例如,负零控制指示符和无验证指示符被包括在指令中(或以其他方式与指令相关联),并且,当在指令中被设置时,分别临时启用负零控制和数位验证检查控制。
参考图1A描述包括并使用本发明的一个或多个方面的计算环境的一个实施例。计算环境100包括例如处理器102(例如,中央处理单元)、存储器(memory)104(例如,主存储器;亦称系统存储器、主存储装置、中央存储装置、存储装置(storage))、以及通过例如一个或多个总线108和/或其他连接彼此耦合的一个或多个输入/输出(I/O)设备和/或接口106。
在一个示例中,处理器102基于美国纽约州阿蒙克市的的国际商业机器公司提供的
Figure BDA0003204004880000071
硬件架构,并且是服务器的一部分,例如
Figure BDA0003204004880000072
服务器的一部分,该服务器也由国际商业机器公司提供并实现z/Architecture硬件架构。z/Architecture硬件架构的一个实施例在标题为“z/Architecture Principles ofOperation”的出版物(IBMPublication No.SA22-7832-11,12th edition,September2017)中进行了描述,本文特此引用其全文作为参考。然而,z/Architecture硬件架构只是一个示例性架构;其他体系结构和/或其他类型的计算环境可以包括和/或使用本发明的一个或多个方面。在一个示例中,处理器执行操作系统,例如也是由国际商业机器公司提供的
Figure BDA0003204004880000073
操作系统。
处理器102包括用于执行指令的多个功能组件。如图1B所示,这些功能组件包括例如用于提取要执行的指令的指令提取组件120;对所提取的指令进行译码并获得译码后的指令的操作数的指令译码单元122;用于执行译码后的指令的指令执行组件124;用于必要时访问用于指令执行的存储器的存储器访问组件126;以及用于提供所执行指令的结果的写回组件130。根据本发明的一个或多个方面,这些组件中的一个或多个可以包括在有效性检查和/或负零处理(包括数位验证检查控制处理和/或负零控制处理)中使用的一个或多个其他组件的至少一部分或者可以访问这些组件,如本文所述。一个或多个其它组件包括例如有效性检查组件136和负零组件138。
参考图2描述包括并使用本发明的一个或多个方面的计算环境的另一示例。在一个示例中,计算环境基于z/Architecture硬件架构;然而,计算环境可以基于国际商业机器公司或其他公司提供的其他架构。
参照图2,在一个示例中,计算环境包括中央电子复合体(CEC)200。CEC200包括多个组件,例如耦合到一个或多个处理器(亦称中央处理单元(CPU))204和输入/输出子系统206的存储器202(亦称系统存储器、主存储器、中央存储装置、存储装置)。
存储器202包括例如一个或多个逻辑分区208、管理逻辑分区的管理程序210和处理器固件212。管理程序210的一个示例,是由美国纽约州阿蒙克市的国际商业机器公司提供的Processor Resource/System Manager(PR/SMTM)管理程序。如本文所使用的,固件包括例如处理器的微代码。其包括例如在更高级机器代码的实现中使用的硬件级指令和/或数据结构。在一个实施例中,其包括例如通常以微代码形式交付的专有代码,所述微代码包括可信软件或特定于底层硬件的微代码,控制操作系统对系统硬件的访问。
每个逻辑分区208都能充当单独的系统。即,每个逻辑分区都可以独立地重置,运行诸如z/OS操作系统或另一操作系统的客户操作系统220,并且用不同的程序222操作。在逻辑分区中运行的操作系统或应用程序看上去可以访问整个系统,但是实际上,系统仅一部分是可用的。
存储器202耦合到处理器(例如,CPU)204,其是可以被分配给逻辑分区的物理处理器资源。例如,逻辑分区208包括一个或多个逻辑处理器,每个逻辑处理器表示可以被动态地分配给逻辑分区的物理处理器资源204的全部或一份。在一个示例中,处理器204包括如本文所述的用于执行数位验证检查控制的有效性检查组件260和用于执行零符号控制(也称为负零控制)的负零控制组件262。
此外,存储器202耦合到I/O子系统206。I/O子系统206可以是中央电子复合体的一部分或与其分离。它引导主存储器202与耦合到中央电子复合体的输入/输出控制单元230以及输入/输出(I/O)设备240之间的信息流。
可以使用许多类型的I/O设备。一个特定类型是数据存储设备250。数据存储设备250可以存储一个或多个程序252、一个或多个计算机可读程序指令254和/或数据等。计算机可读程序指令可以被配置成执行本发明的各方面的实施例的功能。
被配置为执行本文描述的各方面的实施例的功能的计算机可读程序指令,还可以或者可替代地包括在存储器202中。许多变化是可能的。
中央电子复合体200可以包括和/或耦合到可移除/不可移除、易失性/非易失性计算机系统存储介质。例如,中央电子复合体200可以包括和/或耦合到不可移除的非易失性磁性介质(通常称为“硬盘驱动器”);用于从可移除的非易失性磁盘(例如,“软盘”)中读取和向其写入的磁盘驱动器,和/或光盘驱动器,用于从诸如CD-ROM、DVD-ROM或其他光学介质之类的可移除的非易失性光盘读取或向其写入。应当理解,其他硬件和/或软件组件可以与中央电子复合体200结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据归档存储系统等。
进一步地,中央电子复合体200可以与众多其他通用或专用计算系统环境或配置一起操作。可以适用于中央电子复合体200的公知的计算系统、环境和/或配置的例子包括但不限于:个人计算机(PC)系统、服务器计算机系统、瘦客户机、厚客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统和包括任何上述系统或设备的分布式云计算环境,等等。
尽管本文描述了计算环境的不同实例,但本发明的一个或多个方面可与许多类型的环境一起使用。本文提供的计算环境仅是示例。
根据本文描述的各方面,在处理器(诸如处理器102或204)上执行的指令包括或能访问每指令的(per-instruction)负零控制指示符,其指示是否为指令的执行启用如本文中描述的负零控制。通过启用负零控制,从执行指令输出的零结果的符号可为负。在相同的情形下,但在负零控制未被启用的情况下—如由负零控制指示符所指示的,则负号的零量值结果将被强制变为正号的零量值结果。在一些示例中,指令的执行,执行将零量值结果的符号设置为负的操作。按照本文中描述的各方面的指令的进一步处理,并且取决于负零控制指示符,强制使该零值具有正号,或者允许零结果带负号被输出。因此,负零控制指示符可以控制负零是否为可接受的输出数据结果。
根据本文描述的另一方面,在处理器(诸如处理器102或204)上执行的指令包括或能访问每指令的无验证指示符,其控制是否为指令的执行启用数位验证检查控制。通过控制是否启用数位验证检查控制,可以根据需要禁用或启用这样的数位验证检查。数位验证检查控制被启用,是指强制指示指令的执行没有数位检查错误,无论作为指令执行的一部分执行的数位验证是否指示有数位检查错误。
参见图3和4A-4B描述关于负零控制指示符、无验证指示符及其相关联的处理的进一步细节。
图3描绘了根据本文描述的各方面的示出基于指令的负零控制指示符和无验证指示符的指令执行的一个示例。
首先参见图3,在一个实施例中,指令300包括多个字段,包括具有负零控制指示符(NZ)的字段304、具有无验证指示符(NV)的字段306、以及作为指令文本(Itext)302的一部分所包括的一个或多个其他字段。指令文本包括例如用于执行由指令文本指定的操作的操作数。指令可对输入数据316执行许多类型的操作,例如包括但不限于计算,诸如算术运算,例如十进制运算、二进制编码的十进制运算、浮点运算等;转换操作,例如二进制到十进制、十进制到二进制等;和/或移动操作(例如,移动十进制)。作为示例,输入数据316因此可以是或包括来自寄存器文件、高速缓存或存储器层级的一个或多个操作数。例如,一个或多个操作数是或包括二进制编码的十进制数据。
在另一实施例中,NZ和NV指示符不在指令的显式字段中,而是被包括在指令的隐式字段或寄存器中。进一步,在另一实施例中,NZ和NV指示符不是指令自身的一部分,而是指令能够访问的位置(例如,寄存器或存储器位置)或者是用于修改要执行的指令的另一指令(例如,前缀指令)的一部分。不管具体实现方式如何,NZ和NV指示符是针对要执行一个或多个操作的指令专门提供的每指令指示符。
注意到图3的示例中的指令包括用于负零控制和用于无验证控制的NZ和NV指示符。在其他实施例中,指令只包括这两种指示符其中之一,以仅仅提供负零控制或仅仅提供无验证控制,视情况而定。
继续图3,指令被分派到处理器的指令排序单元310的发布队列308,指令在其中等待,直到例如其操作数可用。就绪时,指令被发布到处理器的执行单元312的适当功能执行单元314。例如,如果指令为十进制指令,那么将其发布到执行十进制计算的功能单元;如果其为浮点指令,那么将其发布到浮点功能单元。其他实例是可能的。
执行单元314接收要执行的指令以及NZ控制指示符304和NV指示符306。执行指令,其中,执行一个或多个操作。作为执行指令的结果,指示数位检查错误322且产生输出数据332。
根据本文描述的各方面,NZ控制指示符被输入到零符号控制组件326中,而NV指示符则被输入到逻辑运算符中,即”与”门320中,用于指示是否要在322上报告数位检查错误。关于NV指示符,例如,如果数位验证检查控制被启用,例如NV=1,从而控制数位验证检查并强制在322上报告无数位检查错误,则无论数位验证检查318是否指示存在数位检查错误,数位检查错误322都指示无数位检查错误。如果负零控制被启用,例如NZ=1,从而指示负零是可接受的输出数据结果,则带正号或负号的零结果可以是指令的执行的输出。如果负零控制被禁用,例如NZ=0,则计算324的零结果的符号328受制于潜在的反转,例如,根据本文描述的各方面,从负号反转为正号,使得输出数据332的数字330具有—例如—正的符号328,即使计算324的结果是负零。
负零控制(NZ)指示符具有启用或禁用负零控制的效果,从而导致对计算324的输出零值的符号的控制。负零控制被启用是指控制指令的执行,以使负零结果能成为执行的输出。当通过NZ指示符禁用负零控制时,这可以将特定的符号,例如负号,强加到零量值的结果。注意到这种该强制并不意味着必然要进行对从计算324输出的结果的符号的操纵;如果结果已经被标记为正号,则即使符号遭受正输出强制,符号也不改变。计算324的结果的符号是否改变可取决于例如给定指令的特定符号操作。例如,某些指令可能会在对应于特定符号操作的不同模式中执行。一个这样的符号操作可能会指示任何处理结果都要具有正号。如果是这种情况,无论NZ是否被启用,都可能导致零量值的符号的反转。
因此,是否对由计算324所计算出的结果进行符号改变可以是输入数据、计算本身、NZ控制指示符以及指令的符号操作的函数。在一些示例中,用如图5B中所描绘的查找表来指示零符号控制326是反转还是保留从计算324提供给它的符号。零符号控制326控制是保持从计算324输出的零结果的符号还是对符号取反。
为了说明,考察具有对应于四种模式——维持(Maintain)、互补(Complement)、强制正(Force Positive)和强制负(Force Negative)——的符号操作的示例VPSOP指令。在“强制正”的情况下,输出总是带正号。无论NZ=0还是NZ=1,输出零量值结果都将带正号(例如,00 0C或00 0F)。因此,带负号的任何零量值结果(例如,00 0D)将被强制为正(例如,00 0C或00 0F),无论NZ指示符的值如何。
在“维持”情况下,维持值的符号。对负零(例如,00 0D)的常规VPSOP处理会产生正零,尽管符号操作指示要维持结果的符号,这是因为,常规VPSOP不输出带负号的零。然而,利用在此描述的负零工具(facility),如果启用了负零控制,则结果就不一样。例如,如果未启用负零控制(NZ=0),则执行将对负零结果强加正号。在“维持”情况下,指令将输出正零。如果相反,NZ=1,启用负零控制,则根据本文描述的各方面,负零输入被维持,并被输出为负零。也就是说,当NZ=0时,负零值结果将不受常规VPSOP或本文中所描述的处理的强制正(forced-positive)实践的制约。
在“强制负”的情况下,由于常规VPSOP处理不允许零输出带有负号,所以零量值的输出将为正零。因此,示例常规VPSOP处理针对输入00 0x(其中x为任何输入符号)输出正零。如果NZ=0,负零控制不启用,则输出将与常规功能相同,即正零。然而,如果改为NZ=1,则根据本文描述的各方面,允许输出负零。接收带负号的零值结果的零符号控制326将输出负零。因此,输入00 0x(其中,x是任何输入符号)将导致负零的输出。
在“互补”的情况下,常规VPSOP处理不会将正零补为输出的负零。然而,如果负零控制被启用(例如NZ=1),则允许生成和输出负零;零符号控制326交付任一符号的零量值结果作为指令的输出,由此实现正零输入的互补。因此,输入的正零变为负零并以负零输出。
参见图4A描述关于与负零控制指示符相关联的处理的进一步细节。在一个示例中,该处理由诸如处理器102或处理器204之类的处理器执行。
参照图4A,一开始,向处理器的执行单元(例如,执行单元312)发出指令,步骤400。在步骤402,由处理器的执行单元执行该指令,以执行计算。进行关于结果是否具有零量值(即,是数值零)的确定,询问404。如果不是(404,否),则过程输出数据(步骤410),包括例如带符号的结果。如果相反,在404确定结果具有零量值(404,Y),则过程确定NZ是否等于0,询问406。如果NZ不等于零(406,N),例如NZ=1,则负零控制被启用,因此使负的零量值结果以及正零结果都能被输出。过程前进到步骤410,输出包括带符号的结果的数据,无论正号还是负号。否则,如果NZ等于0(406,Y),则负零控制被禁用,并且通过向结果强加正号而继续该过程(步骤408),然后输出数据(步骤410),该数据包括带有强加的正号的结果。注意,强加正号并不意味着对结果的符号本身作出了改变;如果结果是带正号的,则不需要改变。然而,即使在此场景中,正零结果也可能会经受如所描绘的过程的强加正号方面的影响(步骤408),然后从中被输出,作为输出数据的一部分(步骤410)。
在一些示例中,如果负零指示符是置位的(set),则称负零控制是启用的(enabled)。如果—例如如图4A中那样—负零控制指示符被设置为一个定义值,例如一(‘1’),则称负零指示符是置位的。如果负零控制指示符被设置为另一个定义值,例如设置为零(‘0’),则不启用负零控制。用于启用和禁用负零控制的特定定义值可以变化,例如,‘0’可以启用负零控制,而‘1’则禁用负零控制。
返回参见图3,验证检查318包括针对输入数据316(例如,指令的输入操作数)的数位验证检查。数位验证检查是检查输入操作数包含有效数字,例如,在0-9的范围内。然而,在有效数字是以字母和数字作为数位组合而成的情况下,例如,A表示在值的其余范围(A至F)中的非数字编码的情况下,这可能是有问题的。
根据图3的各方面,执行验证检查318,并将输出馈送到“与”门320,以与另一个输入(在这种情况下是NV指示符(或其修改的变体,例如其逆))进行逻辑“与”操作。“与”门的输出是数位检查错误指示符322。“与”门控制是否使用被馈送到“与”门的验证检查318的结果作为数位检查错误322。将该结果与一个假(false)值(例如,‘0’)相“与”,将总是产生数位检查错误322为假(例如,‘0’)结果,意味着不存在数位检查错误。与值‘1’或另一真值相“与”,实际将导致数位检查错误或真或假,是真是假依赖于318的输出,即是否由318指示了数位检查错误。以此方式,验证检查318的结果可以选择性地被用作或不用作数位检查错误322,这个选择性控制在此被称为“验证检查控制”。如果被启用,则施加控制来控制数位检查错误指示322。如果被禁用,则不施加这样的控制,数位检查错误指示322就是例如由验证检查318所指示的内容。
在一些示例中,如果无验证控制指示符是置位的,称数位验证检查控制被启用。例如,当无验证控制指示符被设置为一个定义值(例如,一(‘1’))时,则称无验证控制指示符是置位的。如果无验证控制指示符被设置为另一定义值(例如,为零),则不启用无验证控制。用于启用和禁用无验证控制的特定定义值可以变化,例如,‘0’可启用无验证控制,而‘1’可禁用无验证控制。
在一些示例中,NV指示符用于设置数位检查错误指示符322。在一个特定示例中,NV是单个位,当其被设置为1时,指示验证检查318的结果将被抑制,即,无验证控制被启用。在诸如使用“与”门的图3的情况下,NV位可以在输入到“与”门320之前被反转。通过将1反转为值‘假’的0,“与”门320接收至少一个假值,使得“与”门输出‘假’作为数位检查错误322,其指示没有数位检查错误。这与验证检查318是否指示有数位检查错误无关。
图3中的“与”门的使用仅是控制数位检查错误是否由322指示的一个示例。作为另一个示例,将“与”门或其他硬件电路定位在验证检查318之前并且至少将NV指示符的值作为输入。可以将位于验证检查之前的该电路配置为向验证检查318输出将导致验证检查指示无数位检查错误的一些有效输入。例如,向验证检查输入零值可能导致指示无数位检查错误。在NV=1、启用无验证控制的特定示例中,将NV指示符反转为零并输入到“与”门,其中“与”门的输出被馈送到验证检查318作为输入。这使得验证检查318的输入归零,并导致验证检查的输出为0,指示无数位检查错误322。
参见图4B,描述与使用无验证控制相关联的处理。在一个示例中,该处理由诸如处理器102或处理器204之类的处理器执行。
参照图4B,一开始,向处理器的执行单元(例如,执行单元312)发布指令,步骤420。由处理器的执行单元执行该指令,以执行验证检查(步骤422),例如数位验证检查。进行关于是否数位验证检查控制被启用的确定,询问424。数位验证检查控制指的是是否对要输出的数位检查错误指示(322)施加控制。验证检查控制被启用,意味着将对数位检查错误指示施加控制(例如,以指示无数位检查错误)。该控制被禁用,则意味着不对数位检查错误指示符施加这样的控制,并且数位检查错误指示例如就是由验证检查422指示的内容。在一个示例中,通过检查无验证(NV)指示符来做出该确定。如果启用了数位验证检查控制,(424,是),则强制使数位检查错误指示符指示无数位检查错误,步骤426。在特定示例中,这通过将数位验证检查的输出馈送到电路(诸如“与”门)中来完成,使得电路的输出是指示无数位检查错误的数位检查错误指示符322。
如果相反,确定未启用验证检查控制(424,否),则过程使用数位验证检查的结果作为数位检查错误指示符的输出,步骤428。
因而,本文中所描述的方面提供在指令字中编码BCD数位检查的抑制以及零量值结果的BCD符号的保留或反转。
在图3和4B的示例中,无条件地执行数位验证检查,并且其输出(i)被选择性地操纵以指示没有错误,或者(ii)被允许通过,作为输出的数位检查错误指示符。结果是,如果启用了无验证控制,则抑制检查错误。然而,在一些实施例中,如果启用了数位验证检查控制,则完全绕过验证检查。换言之,例如,如果主体指令正在架构上通过所选择的软件代码被仿真,则在一些场景中,可防止验证检查318本身发生或完全被绕过。在这种情况下,可以检查NV指示符,如果NV被设置为定义值,表明数位检查验证控制被启用,则可以在软件中跳过数位检查的处理。
如上所述,可以将负零控制指示符和/或无验证指示符包括到新指令中或作为对现有指令的修改或增强。一个实例指令是已知VPSOP指令的变体。图5A-5E示出了根据本文描述的各方面配置的示例指令的特征。
图5A描绘了示例指令格式。指令包括操作码字段502a和502b、用于第一操作数的第一操作数字段504、用于第二操作数的第二操作数字段506、立即数据字段508和510、掩码字段512以及扩展字段514。
在这个指令中,第二操作数的经修改的符号和指定数量的最右边数位被放置在第一操作数位置中,而其他数位被设置为零。操作数和结果采用带符号压缩十进制格式。
除非操作数2无验证(NV)控制为1,否则要检查第二操作数的所有数字码的有效性。基于符号操作(SO)控制、操作数2符号验证(SV)控制和操作数2无验证(NV)控制,检查第二操作数的符号码的有效性,如图5B中所指定的那样。图5B是示出示例指令的操作的表。该表包括以下列:符号操作(SO)520、结果量值(应用RDC之后)522、V2符号524、正符号码(PC)526、负零(NZ)528、V2符号码有效性检查530、如果…则V2数字码有效性检查执行532、结果符号码(十六进制)534和条件码536。
如图5B中所指定的,结果符号码是SO控制、第二操作数符号、第二操作数数位、结果数位计数(RDC)控制、正符号码(PC)控制以及负零(NZ)控制的函数。
在图5B中,“–”表示结果不依赖于该值;“a”表示如果结果的任何位为非零,则认为结果量值为非零;‘b’表示认为0-9之间的符号码无效;‘c’表示这产生抑制数据异常;‘d’表示该表正在示出非溢出情况的条件码——溢出情况将递送条件码3(CC3)。
如果RDC控制未指定足够的数位以包含第二操作数的所有最左边的非零数位,则发生十进制溢出。操作完成。通过忽略溢出数位获得结果,并且如果条件码集(CS)标记为1,则条件码3是置位的。如果PSW中的十进制溢出掩码为1且指令溢出掩码(IOM)为0,那么发生十进制溢出的程序中断。
如果RDC控制指定少于31个数位,则将零放置在第一操作数的剩余最左边数位中。
图5A的I3字段510具有图5C中所示的示例格式,包括指令溢出掩码(IOM)538和结果数位计数(RDC)540。在特定实例中,I3字段为8位长,IOM为第一位,位0,且RDC为最后5位(即,位3-7)。
关于IOM 538,如果未安装Vector-Packed-Decimal-Enhancement Facility或位0为零,则取决于PSW中的十进制溢出掩码而提交十进制溢出的程序中断。如果安装了Vector-Packed-Decimal-Enhancement Facility且位0是1,则无论PSW中的十进制溢出掩码的值如何,都不会识别十进制溢出的程序中断。
关于RDC 540(即,位3-7),这些位包含无符号二进制数,其指定将被放置在第一操作数中的第二操作数的最右位数。如果第二操作数的量值大于可用指定位数表示的最大十进制数,那么发生十进制溢出,且如果十进制溢出掩码为1,那么发生十进制溢出的程序中断。如果RDC字段为零,则识别出指定异常。
在该示例中,I3的位1-2被保留并且是可选的。在一些示例中,它们要含有零。如果没有安装Vector-Packed-Decimal-Enhancement Facility,那么I3的位0也可以被保留并且将包含零。否则,识别出指定异常。
图5A的I4字段508具有图5D中所示的示例格式。
无验证(NV)542是I4字段的位0中的一位字段。如果位0为零或没有安装Vector-Packed-Decimal-Enhancement Facility,那么检查第二操作数数位的有效性;如果SO控制指定维持(maintain)符号,那么还检查第二操作数符号码的有效性。如果SO控制指定互补(complement)符号,则始终检查符号码有效性,且如果SO控制指定强制正(forcepositive)或强制负(force negative),则符号码有效性的检查取决于SV控制。如果有效性检查失败,则识别出数据异常。相反,如果位0被设置为‘1’,指示启用数位验证检查控制,则不检查第二操作数数位的有效性,或如本文所述的抑制这种检查的任何结果;并且,如果SO控制指定维持符号,则也不检查第二操作数符号码。
负零(NZ)544是I4字段的位1中的一位字段。如果位1为零或者未安装Vector-Packed-Decimal-Enhancement Facility,则在应用RDC之后的零结果将导致正号。相反,如果位1为1,指示负零控制被启用,例如NZ=1,则在应用RDC之后的零结果的符号将取决于第二操作数符号(如果SO控制未指定强制正或强制负)。
符号操作(SO)546是I4字段的位4-5中的两位字段。SO位指定用于确定结果符号码的符号操作。结果符号码是如图5B的表中所指定的SO控制、第二操作数符号、第二操作数数位、RDC控制和PC位的函数。
正符号码(PC)548是I4字段的位6中的一位字段。如果位6为1,则当结果为正时使用符号码1111。当位6为0时,当结果为正时使用符号码1100。
操作2符号验证(SV)550是I4字段的位7中的一位字段。如果位7是1且SO控制指定强制正或强制负,则检查第二操作数符号码的有效性。如果位7为零且SO控制指定强制正或强制负,则不检查第二操作数符号码的有效性。当SO控制指定维持或互补符号时,基于NV位值检查第二操作数符号码的有效性。如果有效性检查失败,则识别出数据异常。
在一些示例中,I4字段的位2-3被忽略,但要包含零,否则程序将来可能不兼容地操作。
图5A的M5字段512具有图5E中所示的示例格式,具有条件码集(CS)字段552。在一些实例中,M5为4位长,且CS 552为M5字段的最后位(位3)中的一位字段。当位3为0时,条件码不是置位的且保持不变。当位3为1时,如下面所得条件码段中所指定的那样来设定条件码。M5字段的位0-2可被忽略,但要包含零,否则程序将来可能不兼容地操作。
当CS位为1时,条件码设置如下:0-结果为0,无溢出;1-结果小于零,无溢出;2-结果大于零,或非零结果和无效符号码,无溢出;3–溢出。
当CS位为0时,条件码保持不变。
示例程序异常包括具有DXC FE的数据、向量指令;具有DXC 00的数据、通用操作数;十进制溢出;操作(如果未安装z/Architecture的Vector-Packed-Decimal Facility);规范;以及事务约束。
作为编程注释,如果CS位为1,则应用RDC之后的零结果可总是导致CC0,而与零的符号无关。
如本文所述,根据一方面,用每指令负零控制指示符来确定负零控制是否被启用。通过使用该指示符,负零输出可被选择性地启用以用于否则就被配置成使得任何输出零值都被强制标记为正的指令。在输出正零被适当地标记为负的情况下,可以避免通过后续处理的修正,从而节省额外的处理周期、减小代码长度并且减小复杂度。
根据另一方面,用无验证指示符来确定是否启用数位验证检查控制。通过使用该指示符,可以为否则就会指示数位检查错误的指令选择性地启用数位检查抑制。这可以避免数位检查否则就会指示数位检查错误的情况,而这可能会导致不必要的数据异常。避免这种情况节省了额外的处理周期,减少了代码长度,并且降低了复杂度。
另外,通过提供每指令指示符,用户代码可为代码的不同部分指定是否要执行负零控制和/或数位验证检查控制。
本发明的一个或多个方面与计算机技术密切关联并且便于计算机内的处理,从而改进其性能。通过提供每指令负零控制,每指令负零控制例如使更新的指令能产生所期望的负零输出,由此使得它们能用于代码的优化,以节省额外的处理周期、减小代码长度且减小复杂性,从使性能得到增强。通过提供每指令数位验证检查控制,通过例如减少所采用的数据异常的数量和通过提供用户代码的灵活性,使性能得到增强。
可以将使用每指令负零控制和/或无验证指示符的指令包括在执行不同类型的任务的许多类型的处理中。例如,可以将这样的指令包括在其中执行计算、转换和/或移动的内部计算机处理中;包括在验证证书的安全处理中;包括在在代码仿真中;包括在代码优化中;以及包括在将算术运算用于执行任务的任何处理中。存在许多可能性。
图6A-6B描绘了根据本文描述的各方面的促进计算环境内的处理的示例过程。在一些实例中,所述过程由一个或多个计算机系统(例如,本文中所描述的计算机系统)执行。
参照图6A,描绘了与负零控制指示符相关联的示例过程,过程获得用输入值来执行一个或多个操作的指令(602)。例如,一个或多个操作可包括将由指令执行的特定计算,例如针对输入值的数据转换、数据移动或符号操作。所述指令是单个架构化指令,并且所述指令包括负零控制指示符,其指示是否为所述指令的执行启用负零控制。在特定示例中,负零控制指示符(NZ)是包括在指令文本中的位。然后,过程执行指令,例如,一开始用输入值来执行(604)一个或多个操作,以获得包含符号的结果。执行该一个或多个操作可以包括设置结果的符号。结果可以是例如计算组件(图3的324)的输出,其受制于零符号控制。
过程确定(606)结果是否具有零量值。如果不是,则过程输出(612)带符号的结果,作为指令的执行的一部分。否则(606,是),过程确定(608)是否要控制结果的符号,例如是否要被强制为正。该确定至少部分地基于负零控制是被启用还是被禁用,因此基于负零控制指示符(NZ)是否被设置为定义的值。如果启用负零控制,例如NZ被设置为‘1’,指示启用负零控制,这就使得能够输出带负号的零结果。因此,(来自604的)零量值结果的符号将不受强制使其为正的控制。过程通过输出(612)带正号或负号的零量值结果而继续进行。负零控制指示符NZ例如可以位于指令的字段中。在一些实例中,确定是否控制零结果的符号进一步基于指令的执行的选定模式,例如指令的选择的符号操作,所述选定的符号操作是由指令的字段选择的。这样所具有优点的在于,其使强制结果的符号能否发生取决于要由指令执行的选择的符号操作,从而赋予强制符号改变时的灵活性和选择性。
基于该确定(即608),过程然后执行进一步的处理,作为执行指令的一部分。如上所述,如果在608确定不需要强使为正零的符号控制,例如,因为启用了负零控制(NZ=1),使得负结果和正结果两者都能作为指令的执行的输出;然后,过程输出(612)具有由操作设置的符号的结果。相应地,被设置为定义值(例如,‘1’)的负零控制指示符(NZ)指示为指令的执行启用负零控制。确定(608)可基于为指令的执行而启用了负零控制,来确定不控制数值零结果的符号,且进一步处理可以因此产生指令的执行的输出,所述输出包含带符号的数值零。这具有的优点在于,被提供作为零结果的一部分的符号可以作为执行的输出被传递,而不强制任何特定(例如,正)的符号。其能够选择性地超越否则可能会强加的正零,反而允许输出负零。否则,如果在608确定需要符号控制(608,Y),例如因为负零控制未被启用(NZ=0),并且因此不允许输出负零,则过程强制使(610)零结果的符号为正(例如,通过无条件地将符号设置为正而不管它最初为正还是为负),以及输出(612)带强加的正号的结果。相应地,负零控制指示符(NZ)被设置为不同于定义值‘1’的另一值(例如,‘0’)指示负零控制不能用于执行指令。确定(608)可基于负零控制未被启用(NZ=0),来确定要通过强制使数值零的符号为正来控制符号,且进一步处理因此可以通过强制使该数值的符号为正来产生指令的执行的输出,所述输出包括带强加的正号的数值零。这具有的优点在于,可以视需要选择性地为正号强制赋能。
应注意,通过初始地确定(606)结果具有零量值,可以选择性地执行或不执行(即,绕过)确定(608)和执行进一步处理(610/612),具体取决于查询606的结果而定。这样做的优点在于可以避免不必要的处理。某些处理(例如,根据本文所描述的各方面来仿真指令的行为的部分的仿真处理)可绕过,从而尽可能地加快执行时间,提高效率,节省计算资源。
在特定实例中,零结果的符号的设定(即,作为604的部分)将零结果的符号设定为负,且强制(610)将零结果的符号反转为正。或者,执行操作(604)可将结果的符号改为正,并且在控制符号(608,Y)的情况下执行的包含强制(610)的处理不对正号作出改变,且输出具有正号的结果。
在一些实施例中,输入值是二进制编码的十进制数,并且,所述进一步处理和所述执行的输出是二进制编码的十进制格式的负零值。
图6A的过程具有以下优点:其提供对从执行输出的值的符号的每指令控制。可以在每指令的基础上被选择性地启用或禁用负零控制,从而能够避免指令处理否则就可能会在结果上强加特定符号(例如,正),即使该符号是不恰当的或不期望的。
在另一示例性实施例中,如本文中所描述的零符号控制是对递送具有已从负号变为强加的符号(例如,强制为正)的结果的指令的增强。在这种情况下,NZ指示符可以指示是否进行返回到负号的可能‘校正’。这个实施例在常规指令被配置成对负零值施加正号并且为使其常规处理不被修改而针对指令实施了NZ工具的情形中可能是有用的,但是零符号控制将已经通过常规处理进行符号反转(例如,为正)的结果作为输入,并且在适当的情况下应用校正(回到负号)。在此实施例中,NZ指示符指示所传递的零结果(具有正号)是否潜在地要让其符号被反转为负—其基于的是即使零值被正确地标记为负,指令计算也将零值的符号强制为正(例如,在针对正零的互补符号操作中)。当NZ=1时—这触发关于是否反转负零结果的符号的询问,这可能会例如考虑该指令的特定符号操作。
现在参见图6B,其示出了与使用无验证控制控件相关联的示例过程。过程获得用至少一个输入值执行一个或多个操作(620)的指令。例如,该一个或多个操作可包括将由指令执行的特定计算,例如针对输入值的数据转换、数据移动或符号操作。指令是单个架构化指令,并且指令包括可以控制是否为指令的执行启用数位验证检查控制的无验证指示符。在特定示例中,无验证指示符(NV)是包括在指令文本中的位。数位验证检查控制指的是在涉及数位验证检查的情况下,对基于指令的执行所指示的内容的控制。例如,无验证指示符可以位于指令的字段中。输入值可包括至少一个二进制编码的十进制数,根据本文中描述的各方面,对该至少一个二进制编码的十进制数数位验证检查进行控制。
然后,过程执行指令,例如基于无验证指示符来确定(622)是否为指令的执行启用了数位验证检查控制。在特定示例中,该确定检查验证指示符是否被设置为1,以指示数位验证检查控制被启用。
过程继续基于该确定来执行处理。因此,基于确定数位验证检查控制被启用(622,是)—例如通过确定无验证指示符(NV)被设置为定义的值(诸如1),该处理强制使(624)由执行所输出的数位检查错误指示符指示该至少一个输入值无数位检查错误。数位检查错误指示符例如是图3的322。
在特定示例中,执行指令还包括对该至少一个输入值执行数位验证检查。数位验证检查是为了该验证至少一个输入值是否包括在定义的位置(例如,0-9)內数字数位,并输出结果,该结果基于作为数位验证检查的一部分的验证,指示该至少一个输入值是否存在数位检查错误。在特定示例中,这是图3的验证检查318的输出,并且是如果为指令的执行启用了数位验证检查控制则可以被无效/抑制的结果。数位验证检查的输出结果指示是否存在数位检查错误。然而,基于无验证指示符被设置为定义的值,该处理可以处理数位验证检查的输出结果,以指示无数位检查错误,而不管数位验证检查的输出结果是否指示存在数位检查错误。就此而言,这强制使数位检查错误指示符指示无数位检查错误。在一些示例中,如图3中所描绘的示例中,“与”门无条件地使从数位验证检查输出的结果无效,而不管那个数位检查作为其结果指示的是0还是1。可以对数位验证检查的输出结果进行处置,即将结果馈送到例如也采用假(‘0’)输入的“与”门中,以产生指示无数位检查错误的假(‘0’)输出。在一些示例中,当NV位的值‘1’指示数位验证检查控制被启用、因此执行要指示无数位检查错误时,NV值1被取反为0并作为假输入馈送到“与”门以强制使其输出为假。因此,由执行(例如,322)输出的数位检查错误指示符可以包括处理后的数位验证检查输出结果,处理后的输出结果指示没有数位检查错误。因此,可以对是否从指令的整体执行输出数位检查错误进行控制,即使作为指令执行的一部分执行的数位验证指示确实存在数位检查错误,就是说,即使当一些数位被数位验证检查指示为错误时,也是如此。这具有的优点在于,能够在数位未落入数位验证检查的期望范围时,选择性地覆盖由数位验证检查交付的结果。
在一些示例中,通过向数位验证检查提供能确保数位验证检查报告无数位检查错误的输入,来控制作为执行指令的一部分而执行的数位验证检查的输出。基于无验证指示符被设置为指示数位验证检查控制被启用的定义值,处理因此可以包括将不是该至少一个输入值而是选择的至少一个预定义值作为输入,馈送到数位验证检查。该至少一个预定义的输入可以基于数位验证检查的配置来选择,即基于数位验证检查被配置得使得其输出结果基于所述预定义输入值而指示无数位检查错误。因此,由执行(例如,322)输出的数位检查错误指示符,可以包括基于预选输入值而指示无数位检查错误的数位验证检查输出结果。这具有的优点在于,它提供了一种在不改变作为执行指令的一部分而执行的验证检查的输出或操作的情况下控制是否指示数位检查错误的方式。
在一些实例中,指令的执行在仿真环境中进行,其中仿真指令的执行通过执行特定代码进行。代码中的一些可以模拟指令的典型处理的数位验证检查(图3的318)。在这些情况下,当启用了数位验证检查控制时,可以避免或完全绕过模拟数位验证检查的特定代码的执行。因此,基于无验证指示符被设置为定义值,绕过为验证至少一个输入值是否包括在定义位置內的数字数位而进行的对至少一个输入值的数位验证检查。这具有的优点在于,可以完全避免验证检查,从而潜在地提高执行速度,减少资源消耗,提高代码执行效率。
同样如所指出的,该处理可以使用无验证指示符(NV)作为为指示无数位检查错误而设置数位检查错误指示符(322)的硬件(例如,“与”门)的输入。这种使用可包括,例如,将NV值‘1’反转为‘0’,然后将其输入到”与”门,强行提供假(‘0’)输出。
返回参见图6B的确定622,用于启用数位验证检查控制的定义值可以是第一值,并且,基于无验证指示符被设置为不同于第一值的第二值,禁用数位验证检查控制且如此确定(622,否)。在这种情况下,过程可以对该至少一个输入值执行数位验证检查,该数位验证检查验证该至少一个输入值是否包括在定义的位置內的数字数位(0-9)并输出(626)结果,该结果基于所述验证而指示是否存在关于该至少一个输入值的数位检查错误。注意,可以在确定622之前或之后执行数位验证检查。
无论在哪种情况下,基于数位验证控制未被启用(622,否),过程从626继续进行,使用(628)数位验证检查的结果作为由执行(即,图3的322)输出的数位检查错误指示符。例如,如果数位验证检查控制被禁用,则由数位验证检查得出的无论什么数位检查错误,都被用作由指令的执行输出的数位检查错误指示符(例如,322)。
图6B的过程具有的优点在于,它提供了对是否由指令的执行来指示数位验证检查错误的按指令的控制。可以基于每个指令选择性地启用或禁用数位检查错误的指示,从而能够在验证检查否则可能会或确实基于尽管输入数字有效、但不在预期范围(例如,0-9)内而提交数位检查错误的情况下,传达无数位检查错误。这在例如输入数字不是数字(0-9)值而是在值A至F的其余范围中的非数值编码的情况下是有利的。
其他变化和实施例是可能的。
虽然提供了不同示例,但是在不脱离所要求保护的方面的精神的情况下,变型是可能的。
本文描述的过程可由一个或多个计算机系统(诸如本文描述的那些)单独地或共同地执行,并且本文描述的方面可由许多类型的计算环境使用。参看图7A描述用以并入且使用本发明的一个或多个方面的计算环境的另一实施例。在此示例中,计算环境10包含(例如)本地中央处理单元(CPU)12、存储器14和通过(例如)一个或多个总线18和/或其他连接而彼此耦合的一个或多个输入/输出装置和/或接口16。作为示例,计算环境10可以包括由美国纽约州阿蒙克市的国际商业机器公司提供的
Figure BDA0003204004880000251
处理器;具有Intel ItaniumII处理器的HPSuperdome,其由美国加州Palo Alto惠普公司提供;和/或基于由国际商业机器公司、惠普、英特尔公司、甲骨文或其他公司提供的架构的其他机器。IBM、z/Architecture、IBM Z、z/OS、PR/SM和PowerPC是国际商业机器公司在至少一个管辖区域中的商标或注册商标。Intel和Itanium是英特尔公司或其子公司在美国和其他国家的商标或注册商标。
本地中央处理单元12包括一个或多个本地寄存器20,诸如在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示环境在任何特定时间点的状态的信息。
此外,本地中央处理单元12执行存储在存储器14中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器14中的仿真器代码22。此代码使在一个架构中配置的计算环境能够模拟另一架构。例如,仿真器代码22允许基于除z/Architecture硬件架构之外的架构的机器(诸如PowerPC处理器、HPSuperdome服务器或其他)仿真z/Architecture硬件架构并执行基于z/Architecture硬件架构开发的软件和指令。
参见图7B,描述与仿真器代码22有关的进一步细节。存储在存储器14中的客户指令30包括为在不同于本地CPU 12的架构的架构中执行的而开发的软件指令(例如,与机器指令相关)。例如,客户机指令30可能已经被设计得用以在基于z/Architecture硬件架构处理器上执行,但改为在本地CPU 12上仿真,所述本地CPU 12可为(例如)Intel Itanium II处理器。在一个示例中,仿真器代码22包括指令获取例程32,以从存储器14获得一个或多个客户指令30,并且可选地为所获得的指令提供本地缓冲。它还包括指令转换例程34以确定已经获得的客户指令的类型并将客户指令转换成一个或多个对应的本机指令36。此转换包含(例如)识别将由客户指令执行的功能及选择原生指令以执行所述功能。
进一步,仿真器代码22包括仿真控制例程40以使得本机指令被执行。仿真控制例程40可致使本地CPU12执行模拟一个或多个先前获得的客户指令的本地指令的例程,且在此执行结束时,将控制返回到指令获取例程以模拟下一客户指令或一组客户指令的获得。本机指令36的执行可包含如由转换例程确定的将数据从存储器14加载到寄存器中;将数据从寄存器存储回存储器;或执行某种类型的算术或逻辑运算。
每一例程例如以软件实现,所述软件存储在存储器中且由本地中央处理单元12执行。在其他示例中,在固件、硬件、软件或其某一组合中实施例程或操作中的一个或多个。仿真处理器的寄存器可使用本地CPU的寄存器20或通过使用存储器14中的位置来模拟。在实施例中,客户指令30、本机指令36和仿真器代码22可以驻留在相同的存储器中或者可以分布在不同的存储器设备之间。
上文所描述的计算环境仅为可使用的计算环境的示例。可以使用其他环境,包括但不限于其他非分区环境、其他分区环境和/或其他仿真环境;实施例不限于任何一个环境。
每个计算环境能够被配置成包括本发明的一个或多个方面。例如,根据本发明的一个或多个方面,每一个可以被配置为提供负零/无验证处理。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实现。
云计算是一种服务交付模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便、按需的网络访问,所述可配置计算资源可以用最小的管理努力或与服务提供商的交互来快速配置和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助服务:云消费者可按需自动地单方面供应计算能力,诸如服务器时间和网络存储,而无需与服务提供商进行人工交互。
广泛的网络接入:通过网络提供功能,并通过标准机制进行访问,所述标准机制促进由异构的瘦客户端或厚客户端平台(例如,移动电话、膝上型计算机和PDA)的使用。
资源池化:提供者的计算资源被汇集起来以使用多租户模型来服务于多个消费者,不同的物理和虚拟资源根据需要被动态分配和重新分配。存在位置独立性的意义,因为消费者通常对所提供资源的确切位置不具有控制权或知识,但可能能够指定更高抽象层级的位置(例如,国家、州或数据中心)。
快速弹性:可以快速且弹性地配置功能,在某些情况下自动地快速扩展,迅速释放以快速收缩。对于消费者而言,可用于配置的功能通常看起来是无限的,可以在任何时间以任何数量购买。
度量的服务:云系统通过利用与服务类型(例如,存储、处理、带宽和活动用户帐户)相适应的某种抽象级别的计量功能来自动控制和优化资源使用。可以监视、控制和报告资源使用情况,为所使用服务的提供者和使用者提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的功能是使用在云基础设施上运行的提供者的应用。这些应用可通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口从不同客户端设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至个体应用功能的底层云基础结构,可能的例外是有限的用户特定的应用配置设置。
平台即服务(PaaS):向消费者提供的功能是在云基础结构上部署消费者创建或获取的应用,所述应用是用提供者所支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础结构,但是具有对所部署的应用以及可能的应用托管环境配置的控制。
基础设施即服务(IaaS):向消费者提供的功能是提供消费者能够部署和运行可包括操作系统和应用的任意软件的处理、存储、网络和其他基本计算资源。消费者不管理或控制底层云基础结构,而是具有对操作系统、存储、所部署的应用的控制,以及对所选联网组件(例如,主机防火墙)的可能有限的控制。
部署模型如下:
私有云:云基础结构仅为组织运营。它可以由组织或第三方管理,并且可存在于场所内或场所外。
社区云:云基础结构由多个组织共享,并支持具有共同关注点(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可存在于场所内或场所外。
公共云:云基础结构可供公众或大型行业团体使用,并由销售云服务的组织拥有。
混合云:云基础结构是由两个或更多个云(私有、社区或公共的)组成的,这些云仍然是唯一性实体,但通过标准化或专有技术来绑定在一起,这些技术实现数据和应用的可移植性(例如,用于云之间的负载平衡的云突发)。
云计算环境是面向服务的,着重于无状态性、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础架构。
现在参见图8,描绘了说明性云计算环境50。如图所示,云计算环境50包括一个或多个云计算节点52,云消费者使用的本地计算设备(诸如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N)可与云计算节点52通信。节点52可以彼此通信。它们可以在一个或多个网络中,诸如在上文所述的私有云、社区云、公共云或混合云或其组合中,被物理地或虚拟地分组(未示出)。这允许云计算环境50提供基础结构、平台和/或软件作为服务,云消费者不需要为其在本地计算设备上维护资源。应当理解,图8中所示的计算设备54A-N的类型仅旨在是说明性的,并且计算节点52和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备进行通信。
现在参见图9,示出了由云计算环境50(图8)提供的一组功能抽象层。应预先理解,图9中所示的部件、层和功能旨在仅是说明性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可提供下文所描述的功能。资源供应81提供用于执行云计算环境内的任务的计算资源和其他资源的动态获取。计量和定价82在云计算环境内利用资源时提供成本跟踪,并针对这些资源的消费进行计费或开票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及对数据和其他资源的保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)计划和履行85为根据SLA预期的云计算资源的未来要求提供云计算资源的预安排和采购。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟教室教育交付93;数据分析处理94;事务处理95;以及负零/无验证处理96。
本发明的各个方面可以是处于任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或媒体),所述计算机可读程序指令用于致使处理器执行本发明的方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令并且转发这些计算机可读程序指令以便存储在对应的计算/处理设备内的计算机可读存储介质中。
用于执行本技术方案的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的Smalltalk、C++等编程语言,以及过程式编程语言,例如“C”编程语言或类似的编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过使用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本技术方案的各方面。
在此参照根据技术方案的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本技术方案的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中指定的功能和动作。
附图中的流程图和框图示出了根据本技术方案的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
除上述之外,一个或多个方面可由提供客户环境管理的服务提供商提供、承诺、部署、管理、服务等。例如,服务提供商可创建、维护、支持为一个或多个客户执行一个或多个方面的计算机代码和/或计算机基础设施。作为回报,服务提供商例如可根据订阅和/或费用协议从消费者接收支付。附加地或替代地,服务提供商可以从广告内容向一个或多个第三方的销售接收支付。
在一个方面,可部署用于执行一个或多个实施例的应用程序。作为一个示例,应用程序的部署包括提供可操作用于执行一个或多个实施例的计算机基础设施。
作为另一方面,可部署计算基础架构,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
作为又一方面,可提供一种用于集成计算基础结构的过程,所述过程包括将计算机可读代码集成到计算机系统中。计算机系统包括计算机可读介质,其中计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
尽管上面描述了各种实施例,但是这些仅是示例。例如,可以使用其他架构的计算环境来包括和使用一个或多个实施例。
在此使用的术语仅用于描述具体实施例的目的并且不旨在是限制性的。如在此使用的,单数形式“一个”、“一种”和“该”旨在也包括复数形式,除非上下文另外清楚地指示。将进一步理解的是,当在本说明书中使用术语“包括”和/或“包含”时,其指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。
以下权利要求中的所有装置或步骤加上功能元件(如果有的话)的相应结构、材料、动作和等效物旨在包括用于结合如具体要求保护的其他要求保护的元件来执行功能的任何结构、材料或动作。出于说明和描述的目的已经给出了对一个或多个实施例的描述,但是并不旨在是详尽的或限于所公开的形式。许多修改和变化对本领域的普通技术人员将是明显的。实施例的选择和描述方式是为了最好地解释各个方面和实际应用,使得本领域普通技术人员能够理解具有适合于所预期的特定用途的不同修改的不同实施例。

Claims (20)

1.一种用于促进计算环境中的处理的计算机程序产品,所述计算机程序产品包括:
可由处理电路读取且存储用于执行方法的指令的计算机可读存储介质,所述方法包括:
获得用至少一个输入值执行一个或多个操作的指令,所述指令是单个架构化指令,并且所述指令包括无验证指示符,用于控制是否为所述指令的执行而启用数位验证检查控制;和
执行所述指令,所述执行包括:
基于无验证指示符,确定是否为所述指令的执行启用了数位验证检查控制;和
基于所述确定执行处理,其中,基于无验证指示符被设置为定义的值,启用数位验证检查控制,并且所述处理包括强制所述执行输出的数位检查错误指示符指示关于所述至少一个输入值无数位检查错误。
2.根据权利要求1所述的计算机程序产品,其中,所述执行进一步包括对所述至少一个输入值执行数位验证检查,所述数位验证检查要验证所述至少一个输入值是否包括在定义的位置內的数字,并基于所述验证,输出指示关于所述至少一个输入值是否存在数位检查错误的结果。
3.根据权利要求2所述的计算机程序产品,其中,所述处理基于无验证指示符被设置为定义的值来处理数位验证检查的输出结果,以指示无数位验证错误,而不管数位验证检查的输出结果是否指示存在数位验证错误。
4.根据权利要求3所述的计算机程序产品,其中,由所述执行输出的数字校验错误指示符包括处理后的指示无数字校验错误的数位验证校验输出结果。
5.根据权利要求2所述的计算机程序产品,其中,所述处理基于无验证指示符被设置为定义的值来处理数位验证检查的输出结果,进一步包括将所述至少一个输入值之外的、选择的至少一个预定义值作为输入,馈入数位验证检查,其中,基于数位验证检查被设置得使其输出结果指示无数位验证错误来选择所述至少一个预定义的输入,并且其中,由所述执行输出的数字校验错误指示符包括指示无数位检查错误的数位验证检查输出结果。
6.根据权利要求1所述的计算机程序产品,其中,基于无验证指示符被设置为定义的值,绕过对所述至少一个输入值的、验证所述至少一个输入值是否包含定义的位置內的数字的数位验证检查。
7.根据权利要求1所述的计算机程序产品,其中,所述至少一个输入值包括至少一个二进制编码的十进制数。
8.根据权利要求1所述的计算机程序产品,其中,无验证指示符位于所述指令的字段中。
9.根据权利要求1所述的计算机程序产品,其中,所述执行处理用无验证控制指示符作为将数位检查错误指示符设置得指示无数位检查错误的硬件的输入。
10.根据权利要求1所述的计算机程序产品,其中,定义的值是第一值,并且其中,基于无验证指示符被设置为不同于第一值的第二值,禁用数位验证检查控制,并且,所述处理包括:
对所述至少一个输入值执行数位验证检查,所述数位验证检查要验证所述至少一个输入值是否包括定义的位置內的数字,并基于所述验证,输出指示关于所述至少一个输入值是否存在数位检查错误的结果;以及
按由所述执行输出的数位检查错误指示符使用数位验证检查的结果。
11.一种用于促进计算环境中的处理的计算机系统,所述计算机系统包括:
存储器;和
耦合到存储器的处理器,其中,所述计算机系统被配置以执行方法,所述方法包括:
获得用至少一个输入值执行一个或多个操作的指令,所述指令是单个架构化指令,并且所述指令包括无验证指示符,用于控制是否为所述指令的执行而启用数位验证检查控制;和
执行所述指令,所述执行包括:
基于无验证指示符,确定是否为所述指令的执行启用了数位验证检查控制;和
基于所述确定执行处理,其中,基于无验证指示符被设置为定义的值,启用数位验证检查控制,并且所述处理包括强制所述执行输出的数位检查错误指示符指示关于所述至少一个输入值无数位检查错误。
12.根据权利要求11所述的计算机系统,其中,所述执行进一步包括对所述至少一个输入值执行数位验证检查,所述数位验证检查要验证所述至少一个输入值是否包括在定义的位置內的数字,并基于所述验证,输出指示关于所述至少一个输入值是否存在数位检查错误的结果。
13.根据权利要求12所述的计算机系统,其中,所述处理基于无验证指示符被设置为定义的值来处理数位验证检查的输出结果,以指示无数位验证错误,而不管数位验证检查的输出结果是否指示存在数位验证错误,并且其中,由所述执行输出的数字校验错误指示符包括处理后的指示无数字校验错误的数位验证校验输出结果。
14.根据权利要求12所述的计算机系统,其中,所述处理基于无验证指示符被设置为定义的值来处理数位验证检查的输出结果,进一步包括将所述至少一个输入值之外的、选择的至少一个预定义值作为输入,馈入数位验证检查,其中,基于数位验证检查被设置得使其输出结果指示无数位验证错误来选择所述至少一个预定义输入,并且其中,由所述执行输出的数字校验错误指示符包括指示无数位检查错误的数位验证检查输出结果。
15.根据权利要求11所述的计算机系统,其中,所述至少一个输入值包括至少一个二进制编码的十进制数。
16.根据权利要求11所述的计算机系统,其中,所述执行处理用无验证控制指示符作为将数位检查错误指示符设置得指示无数位检查错误的硬件的输入。
17.一种促进计算环境中的处理的计算机实现的方法,所述计算机实现的方法包括:
获得用至少一个输入值执行一个或多个操作的指令,所述指令是单个架构化指令,并且所述指令包括无验证指示符,用于控制是否为所述指令的执行而启用数位验证检查控制;和
执行所述指令,所述执行包括:
基于无验证指示符,确定是否为所述指令的执行启用了数位验证检查控制;和
基于所述确定执行处理,其中,基于无验证指示符被设置为定义的值,启用数位验证检查控制,并且所述处理包括强制所述执行输出的数位检查错误指示符指示关于所述至少一个输入值无数位检查错误。
18.根据权利要求17所述的方法,其中,所述执行进一步包括对所述至少一个输入值执行数位验证检查,所述数位验证检查要验证所述至少一个输入值是否包括在定义的位置內的数字,并基于所述验证,输出指示关于所述至少一个输入值是否存在数位检查错误的结果。
19.根据权利要求18所述的方法,其中,所述处理基于无验证指示符被设置为定义的值来处理数位验证检查的输出结果,以指示无数位验证错误,而不管数位验证检查的输出结果是否指示存在数位验证错误,并且其中,由所述执行输出的数字校验错误指示符包括处理后的指示无数字校验错误的数位验证校验输出结果。
20.根据权利要求18所述的方法,其中,所述处理基于无验证指示符被设置为定义的值来处理数位验证检查的输出结果,进一步包括将所述至少一个输入值之外的、选择的至少一个预定义值作为输入,馈入数位验证检查,其中,基于数位验证检查被设置得使其输出结果指示无数位验证错误来选择所述至少一个预定义输入,并且其中,由所述执行输出的数字校验错误指示符包括指示无数位检查错误的数位验证检查输出结果。
CN202080013466.9A 2019-02-15 2020-01-27 指令执行中的数位验证检查控制 Pending CN113518971A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/277,486 2019-02-15
US16/277,486 US11099853B2 (en) 2019-02-15 2019-02-15 Digit validation check control in instruction execution
PCT/IB2020/050594 WO2020165668A1 (en) 2019-02-15 2020-01-27 Digit validation check control in instruction execution

Publications (1)

Publication Number Publication Date
CN113518971A true CN113518971A (zh) 2021-10-19

Family

ID=72043223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080013466.9A Pending CN113518971A (zh) 2019-02-15 2020-01-27 指令执行中的数位验证检查控制

Country Status (6)

Country Link
US (1) US11099853B2 (zh)
JP (1) JP2022520712A (zh)
CN (1) CN113518971A (zh)
DE (1) DE112020000805T5 (zh)
GB (1) GB2595191B (zh)
WO (1) WO2020165668A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099853B2 (en) * 2019-02-15 2021-08-24 International Business Machines Corporation Digit validation check control in instruction execution
US11042371B2 (en) 2019-09-11 2021-06-22 International Business Machines Corporation Plausability-driven fault detection in result logic and condition codes for fast exact substring match
US10996951B2 (en) * 2019-09-11 2021-05-04 International Business Machines Corporation Plausibility-driven fault detection in string termination logic for fast exact substring match
US11442726B1 (en) 2021-02-26 2022-09-13 International Business Machines Corporation Vector pack and unpack instructions

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0677235B2 (ja) * 1986-08-14 1994-09-28 日本電気株式会社 情報処理装置
JP2504847B2 (ja) * 1989-10-27 1996-06-05 甲府日本電気株式会社 10進デ―タのチェック回路
IL100987A (en) 1991-02-27 1995-10-31 Digital Equipment Corp Method and device for encoding
US5925125A (en) * 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
GB9510834D0 (en) 1995-05-27 1995-07-19 Int Computers Ltd Decimal arithmetic apparatus and method
US5761474A (en) * 1996-05-24 1998-06-02 Hewlett-Packard Co. Operand dependency tracking system and method for a processor that executes instructions out of order
US6178495B1 (en) * 1998-04-30 2001-01-23 International Business Machines Corporation Processor E-unit to I-unit interface instruction modification with E-unit opcode computer logic in the unit
US6862565B1 (en) 2000-04-13 2005-03-01 Hewlett-Packard Development Company, L.P. Method and apparatus for validating cross-architecture ISA emulation
US6970898B2 (en) 2001-05-25 2005-11-29 Sun Microsystems, Inc. System and method for forcing floating point status information to selected values
US7133890B2 (en) 2001-05-25 2006-11-07 Sun Microsystems, Inc. Total order comparator unit for comparing values of two floating point operands
US7346735B2 (en) 2004-04-08 2008-03-18 Intel Corporation Virtualized load buffers
US7543007B2 (en) 2005-08-22 2009-06-02 Sun Microsystems, Inc. Residue-based error detection for a shift operation
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US8560591B2 (en) 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US20100262813A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates
US8856759B2 (en) 2010-02-01 2014-10-07 Bull Hn Information Systems Inc. Method and apparatus providing COBOL decimal type arithmetic functions with improved performance
WO2012077185A1 (ja) 2010-12-07 2012-06-14 富士通株式会社 10進絶対値加算器
US9075621B2 (en) * 2011-12-23 2015-07-07 Arm Limited Error recovery upon reaching oldest instruction marked with error or upon timed expiration by flushing instructions in pipeline pending queue and restarting execution
US9329861B2 (en) 2011-12-29 2016-05-03 International Business Machines Corporation Convert to zoned format from decimal floating point format
US9335993B2 (en) 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
JP2013242700A (ja) 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
US9477476B2 (en) * 2012-11-27 2016-10-25 Qualcomm Incorporated Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9940182B1 (en) 2013-09-13 2018-04-10 Stott Creations LLC Business rule engine validation systems and related methods
CN106030510A (zh) * 2014-03-26 2016-10-12 英特尔公司 三源操作数浮点加法处理器、方法、系统和指令
US20160092163A1 (en) 2014-09-30 2016-03-31 International Business Machines Corporation Machine instructions for converting from decimal floating point format to packed decimal format
US20160092162A1 (en) 2014-09-30 2016-03-31 International Business Machines Corporation Machine instructions for converting to decimal floating point format from packed decimal format
US10698688B2 (en) * 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US11099853B2 (en) * 2019-02-15 2021-08-24 International Business Machines Corporation Digit validation check control in instruction execution

Also Published As

Publication number Publication date
JP2022520712A (ja) 2022-04-01
GB2595191A (en) 2021-11-17
US11099853B2 (en) 2021-08-24
WO2020165668A1 (en) 2020-08-20
GB202112124D0 (en) 2021-10-06
GB2595191B (en) 2022-09-21
DE112020000805T5 (de) 2021-12-16
US20200264890A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
CN113518971A (zh) 指令执行中的数位验证检查控制
US10747537B2 (en) Efficient quantization of compare results
JP7398464B2 (ja) 命令の実行における負のゼロ制御
US10346134B2 (en) Perform sign operation decimal instruction
US10235137B2 (en) Decimal shift and divide instruction
US10331408B2 (en) Decimal multiply and shift instruction
US11442726B1 (en) Vector pack and unpack instructions
US10430185B2 (en) Decimal load immediate instruction
US11531546B2 (en) Hexadecimal floating point multiply and add instruction
WO2023093524A1 (en) Reducing data format conversion of an accelerator
CN113474753A (zh) 以从右向左的方向移动数据的指令
CN117396846A (zh) 具有不同操作参数验证的执行多个操作的单个功能
CN117396898A (zh) 在指令执行期间检测到的无效值的异常概要

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination