条件指令结束机器指令的制作方法

文档序号:11890441阅读:331来源:国知局
条件指令结束机器指令的制作方法与工艺

一个或多个方面一般地涉及多处理计算环境,并且具体地说,涉及此类计算环境中的事务处理。

在实现事务执行工具(也被称为“事务存储器”)的计算环境中,事务提供程序能够用于发出多个指令的手段,并且这些指令的存储访问(a)看似作为单个并发操作发生,或者(b)看似没有发生,如由其它中央处理单元(CPU)和输入/输出(I/O)子系统观察到的那样。由一个CPU进行的事务访问被称为与以下两项冲突:(a)由另一个CPU进行的事务或非事务访问,或者(b)由I/O子系统进行的非事务访问,前提是两个访问针对同一高速缓存行中的任何位置,并且两个访问之一或全部是存储。

当一个或两个CPU处于事务执行模式时,冲突检测的当前性质已使在一个CPU上执行的程序要影响在不同CPU上执行的程序的执行变得极其困难(如果不是不可能)。对由两个CPU访问的存储位置的任何存储都可能作为冲突情况处理,从而导致事务执行的中止。



技术实现要素:

通过提供一种用于在计算环境中执行机器指令的计算机程序产品,克服现有技术的缺点并且提供优点。所述计算机程序产品包括计算机可读存储介质,其能够由处理电路读取并且存储指令以便由所述处理电路执行以执行一种方法。所述方法例如包括:由处理器获得机器指令以便执行,所述机器指令根据计算机体系结构被定义用于计算机执行,所述机器指令包括:操作码字段,其具有用于指定条件指令结束操作的操作码;以及由所述处理器执行所述机器指令,所述执行包括:获得操作数;判定所述操作数是否与值具有预定关系;基于判定所述操作数与所述值没有所述预定关系而重复所述获得和所述判定;基于判定所述操作数与所述值具有所述预定关系而完成所述指令的执行;以及其中获得所述操作数、判定所述操作数是否与所述值具有所述预定关系、基于判定所述操作数与所述值没有所述预定关系而重复所述获得和所述判定、以及基于判定所述操作数与所述值具有所述预定关系而完成所述指令的执行被作为具有所述操作码的单个指令的一部分而执行。

在此还描述和要求保护涉及一个或多个实施例的方法和系统。进一步,在此还描述并且可以要求保护涉及一个或多个实施例的服务。

实现其它特性和优点。在此详细描述其它实施例和方面,并且这些实施例和方面被视为所要求保护的发明的一部分。

附图说明

在说明书结尾处的权利要求中作为实例具体指出并明确要求保护了一个或多个方面。从下面结合附图的详细描述,上述和其它目标、特性和优点显而易见,这些附图是:

图1示出计算环境的一个实施例;

图2A示出事务开始(TBEGIN)指令的一个实例;

图2B示出图2A的TBEGIN指令的字段的进一步细节的一个实施例;

图3A示出受约束事务开始(TBEGINC)指令的一个实例;

图3B示出图3A的TBEGINC指令的字段的进一步细节的一个实施例;

图4示出事务结束(TEND)指令的一个实例;

图5示出事务中止(TABORT)指令的一个实例;

图6示出嵌套事务的一个实例;

图7示出事务诊断块的一个实例;

图8示出条件事务结束(CTEND)指令的一个实例;

图9示出与图8的条件事务结束指令关联的逻辑的一个实施例;

图10示出与条件事务结束指令的逻辑关联的进一步细节的一个实施例;

图11A-11C示出与条件指令结束操作的各个方面关联的处理的一个实施例;

图12示出计算机程序产品的一个实施例;

图13示出主计算机系统的一个实施例;

图14示出计算机系统的进一步实例;

图15示出包括计算机网络的计算机系统的另一个实例;

图16示出计算机系统的各种元件的一个实施例;

图17A示出图16的计算机系统的执行单元的一个实施例;

图17B示出图16的计算机系统的分支单元的一个实施例;

图17C示出图16的计算机系统的加载/存储单元的一个实施例;

图18示出所仿真主计算机系统的一个实施例;

图19示出云计算节点的一个实施例;

图20示出云计算环境的一个实施例;以及

图21示出抽象模型层的一个实例。

具体实施方式

根据一个方面,提供一种能力以便允许在一个处理器(例如,中央处理单元(CPU))上执行的程序影响另一个处理器(例如,另一个CPU)的事务执行。在一个实施例中,提供一种指令,被称为条件事务结束(CTEND)指令,其允许以无约束事务执行模式执行的程序检查由另一个CPU和/或I/O子系统修改的存储位置。基于所检查的数据,可以结束或中止事务执行,或者可以延迟用于结束/中止的决策,例如直到发生预定义事件。

例如,当执行CTEND指令,处理器处于无约束事务执行模式,并且在指令的开始处事务嵌套深度是1时,检查指令的第二操作数,并且基于所检查的数据,可以结束或中止事务执行,或者可以延迟用于结束/中止的决策,例如直到发生预定义事件,例如第二操作数的值变成预先指定的值或者满足与选定时间间隔的预定义关系(例如,超过该时间间隔)。作为进一步实例,预定义事件可以包括变成未决的中断。其它事件也是可能的。

但是,在详细描述该指令之前,讨论关于事务执行工具(包括无约束和受约束事务执行模式)的细节。

所述事务执行工具引入一种CPU状态,被称为事务执行(TX)模式。在CPU重置之后,CPU未处于TX模式。CPU通过TRANSACTION BEGIN(事务开始)指令进入TX模式,并且通过以下方式离开TX模式:(a)最外层TRANSACTION END(事务结束)指令(下面提供有关内部和外部的更多细节);(b)CONDITIONAL TRANSACTION END(条件事务结束)指令,其将条件码设置为0;或者(C)中止事务。当处于TX模式时,CPU进行的存储访问看似块并发,如由其它CPU和I/O子系统观察到的那样。存储访问(a)被提交到存储,当最外层事务在没有中止的情况下结束时(即,例如在CPU本地的高速缓存或缓冲器中进行的更新被传播并存储在实存储器中,并且对其它CPU可见),或者(b)在事务被中止的情况下被丢弃。

事务可以嵌套。即,当CPU处于TX模式时,它可以执行另一个TRANSACTION BEGIN指令。导致CPU进入TX模式的指令被称为最外层TRANSACTION BEGIN;同样,程序被称为在最外层事务中。TRANSACTION BEGIN的后续执行被称为内部指令;以及程序执行内部事务。模型提供最小嵌套深度和模型相关最大嵌套深度。EXTRACT TRANSACTION NESTING DEPTH(取回事务嵌套深度)指令返回当前嵌套深度值,并且在进一步实施例中,可以返回最大嵌套深度值。这种技术使用一种被称为“平面化嵌套”的模型,其中任何嵌套深度的中止条件导致中止所有级别的事务,并且在最外层TRANSACTION BEGIN之后将控制返回到指令。

在事务处理期间,由一个CPU进行的事务访问被称为与以下两项冲突:(a)由另一个CPU进行的事务或非事务访问,或者(b)由I/O子系统进行的非事务访问,前提是两个访问针对同一高速缓存行中的任何位置,并且两个访问之一或全部是存储。换言之,为了提高事务执行效率,未观察到CPU在提交之前进行事务访问。这种编程模型可能在某些环境中非常有效;例如,更新包含数百万个元素的双向链表中的两个点。但是,如果对被进行事务访问的存储位置存在大量争用,则该模型可能不太有效。

在一种事务执行模型(在此被称为无约束事务)中,当中止事务时,程序可能尝试重新驱动事务以便希望不再存在中止条件,或者程序可能“回退”到等效的非事务路径。在另一种事务执行模型(在此称为受约束事务)中,由CPU自动重新驱动被中止事务;如果不存在约束违反,则确保最终完成受约束事务。

当发起事务时,程序可以指定各种控件,例如(a)如果中止事务,则哪些通用寄存器被恢复到其原始内容,(b)是否允许事务修改浮点寄存器上下文,例如包括浮点寄存器和浮点控制寄存器,(c)是否允许事务修改存取寄存器(AR),以及(d)是否阻止某些程序异常条件导致中断。如果中止无约束事务,则可以提供各种诊断信息。例如,发起无约束事务的最外层TBEGIN指令可以指定程序指定的事务诊断块(TDB)。进一步,如果由于导致解释执行结束的程序中断或条件而中止事务,则还可以分别使用CPU的前缀区中的TDB或者由主机的状态描述指定的TDB。

上面指示了各种类型的寄存器。在此进一步详细解释这些寄存器。通用寄存器可以在通用算术和逻辑运算中用作累加器。在一个实施例中,每个寄存器包含64位位置,并且具有16个通用寄存器。通用寄存器由数字0-15标识,并且由指令中的四位R字段指定。某些指令用于通过具有数个R字段,对多个通用寄存器进行寻址。对于某些指令,将暗示使用特定的通用寄存器,而不是由指令的R字段显式指定。

除了在通用算术和逻辑运算中用作累加器之外,16个通用寄存器的15个还在地址生成中用作基地址和索引寄存器。在这些情况下,寄存器由指令中的四位B字段或X字段指定。B或X字段中的0值指定不应用基地址或索引,并且因此通用寄存器0未被指定为包含基地址或索引。

浮点指令使用一组浮点寄存器。在一个实施例中,CPU具有16个浮点寄存器。浮点寄存器由数字0-15标识,并且由浮点指令中的四位R字段指定。每个浮点寄存器的长度为64位,并且可以包含短(32位)或长(64位)浮点操作数。

浮点控制(FPC)寄存器是32位寄存器,其包含屏蔽位、标志位、数据异常码和舍入模式位,并且在浮点运算处理期间使用。

进一步,在一个实施例中,CPU具有16个控制寄存器,每个具有64位位置。为寄存器中的位位置分配系统中的特定工具(例如下面讨论的程序事件记录(PER)),并且这些位位置用于指定可以进行操作,或者用于提供工具所需的特殊信息。在一个实施例中,对于事务工具,使用CR0(位8和9)和CR2(位61-63),如下所述。

CPU例如具有16个存取寄存器,编号为0-15。存取寄存器包括32个位位置,其中包含地址空间控制元素(ASCE)的间接指定。地址空间控制元素是一个参数,动态地址转换(DAT)机制使用它将引用转换为对应的地址空间。当CPU处于一种被称为存取寄存器模式(由程序状态字(PSW)中的位控制)的模式时,指令B字段(用于针对存储操作数引用指定逻辑地址)指定存取寄存器,并且DAT将由存取寄存器指定的地址空间控制元素用于进行的引用。对于某些指令,使用R字段代替B字段。指令用于加载和存储存取寄存器的内容,并且用于将一个存取寄存器的内容移动到另一个存取寄存器。

存取寄存器1-15中的每一个可以指定任何地址空间。存取寄存器0指定主地址空间。当使用存取寄存器1-15中的一个指定地址空间时,CPU通过转换存取寄存器的内容,确定指定哪个地址空间。当使用存取寄存器0指定地址空间时,CPU将存取寄存器视为指定主地址空间,并且它不会检查存取寄存器的实际内容。因此,在任一时刻,16个存取寄存器能够指定主地址空间和最多15个其它空间。

在一个实施例中,具有多种类型的地址空间。地址空间是连续的整数序列(虚拟地址)以及特定的转换参数,这些参数允许每个数字与存储装置中的字节位置关联。序列从0开始并且从左到右继续。

例如,在z/Architecture中,当CPU使用虚拟地址访问主存储装置(也被称为主存储器)时,首先通过动态地址转换(DAT)将虚拟地址转换为实地址,然后通过加前缀转换为绝对地址。DAT可以使用从一到五个级别的表(页、段、区域第三、区域第二和区域第一)作为转换参数。特定地址空间的最高级别表的指定(起始地址和长度)被称为地址空间控制元素,并且由DAT用于控制寄存器或者按照存取寄存器的指定而使用。备选地,地址空间的地址空间控制元素可以是实空间指定,其指示DAT只需将虚拟地址视为实地址而不使用任何表,即可转换虚拟地址。

在不同时刻,DAT使用不同控制寄存器中的地址空间控制元素,或者使用由存取寄存器指定的地址空间控制元素。通过当前PSW中指定的转换模式确定选择。提供四种转换模式:主空间模式、辅助空间模式、存取寄存器模式以及归属空间模式。可以根据转换模式,对不同地址空间进行寻址。

在任何时刻,当CPU处于主空间模式或辅助空间模式时,CPU能够转换属于两个地址空间—主地址空间和辅助地址空间—的虚拟地址。在任何时刻,当CPU处于存取寄存器模式时,它能够转换最多16个地址空间—主地址空间和最多15个AR的指定地址空间—的虚拟地址。在任何时刻,当CPU处于归属空间模式时,它能够转换归属地址空间的虚拟地址。

主地址空间被标识为如此,因为它包括通过主地址空间控制元素(ASCE)转换的主虚拟地址。同样,辅助地址空间包括通过辅助ASCE转换的辅助虚拟地址;AR指定的地址空间包括通过AR指定的ASCE转换的AR指定的虚拟地址;以及归属地址空间包括通过归属ASCE转换的归属虚拟地址。主ASCE和辅助ASCE分别在控制寄存器1和7中。AR指定的ASCE在ASN第二表项中,这些表项使用控制寄存器2、5和8通过被称为存取寄存器转换(ART)的过程定位。归属ASCE在控制寄存器13中。

参考图1描述结合和使用事务工具以及条件事务结束工具(其包括CONDITIONAL TRANSACTION END指令)的一个或多个方面的计算环境的一个实施例。

参考图1,在一个实例中,计算环境100基于z/Architecture,其由位于纽约阿蒙克的国际商业机器公司提供。在标题为“z/Architecture–Principles of Operation”(z/Architecture—操作原理)的IBM出版物(第SA22-7932-09号出版物第10版,2012年9月,在此全部引入作为参考)中描述了z/Architecture。

Z/ARCHITECTURE、IBM以及Z/OS和Z/VM(下面引用)是位于纽约阿蒙克的国际商业机器公司的注册商标。在此使用的其它名称可能是国际商业机器公司或其它公司的注册商标、商标或产品名称。

作为一个实例,计算环境100包括中央处理器复合体(CPC)102,其经由一个或多个控制单元108耦合到一个或多个输入/输出(I/O)设备106。中央处理器复合体102例如包括耦合到一个或多个中央处理器(又称为中央处理单元(CPU))110的处理器存储器104(又称为主存储器、主存储装置、中央存储装置),以及输入/输出子系统111,下面描述其中的每一个。

处理器存储器104例如包括一个或多个分区112(例如,逻辑分区)和处理器固件113,处理器固件113包括逻辑分区系统管理程序114和其它处理器固件115。逻辑分区系统管理程序114的一个实例是Processor Resource/System Manager(PR/SM),其由位于纽约阿蒙克的国际商业机器公司提供。

逻辑分区用作单独系统并且具有一个或多个应用120,以及可选地在其中具有常驻操作系统122,每个逻辑分区的常驻操作系统可能不同。在一个实施例中,操作系统是z/OS操作系统、z/VM操作系统、z/Linux操作系统或TPF操作系统,其由位于纽约阿蒙克的国际商业机器公司提供。逻辑分区112由逻辑分区系统管理程序114管理,逻辑分区系统管理程序114由在处理器110上运行的固件实现。如在此使用的,固件例如包括处理器的微代码和/或毫代码。它例如包括用于实现更高级机器代码的硬件级别指令和/或数据结构。在一个实施例中,它例如包括典型地作为微代码提供的专用代码,该专用代码包括特定于底层硬件的可信软件或微代码,并且控制操作系统对系统硬件的访问。

中央处理器110是分配给逻辑分区的物理处理器资源。具体地说,每个逻辑分区112具有一个或多个逻辑处理器,每个逻辑处理器表示分配给该分区的物理处理器110的全部或一部分。特定分区112的逻辑处理器可以专用于该分区,以使得针对该分区保留底层处理器资源110;或者与另一个分区共享,以使得底层处理器资源可能用于另一个分区。在一个实例中,一个或多个CPU包括在此描述的事务执行工具130和条件事务结束工具132的各个方面。

输入/输出子系统111在输入/输出设备106与主存储装置104之间定向信息流。它耦合到中央处理复合体,其中它可以是中央处理复合体的一部分或者与其分离。I/O子系统减轻中央处理器直接与输入/输出设备通信的任务,并且允许数据处理与输入/输出处理同时进行。为了提供通信,I/O子系统采用I/O通信适配器。存在各种类型的通信适配器,例如包括通道、I/O适配器、PCI卡、以太网卡、小型计算机存储接口(SCSI)卡等。在此处描述的特定实例中,I/O通信适配器是通道,并且因此I/O子系统在此被称为通道子系统。但是,这仅是一个实例。可以使用其它类型的I/O子系统。

I/O子系统使用一个或多个输入/输出路径作为通信链路,以便管理进出输入/输出设备106的信息流。在该特定实例中,这些路径被称为通道路径,因为通信适配器是通道。

上述计算环境仅是能够使用的计算环境的一个实例。可以使用其它环境,包括但不限于非分区环境、其它分区环境和/或所仿真环境;各实施例并不限于任何一个环境。

根据一个或多个方面,事务执行工具是中央处理单元增强,其提供CPU能够用于执行指令序列(被称为事务)的手段,事务可以访问多个存储位置,包括更新这些位置。如由其它CPU和I/O子系统观察到的那样,事务(a)在整体上作为单个原子操作完成,或者(b)被中止,可能未留下表明它曾经执行的任何证据(除了在此描述的某些条件之外)。因此,成功完成的事务能够更新多个存储位置,而没有在传统多处理模型中需要的任何特殊锁定。

事务执行工具例如包括一个或多个控件;一个或多个指令;事务处理,包括受约束和无约束执行;以及中止处理,下面进一步描述其中的每一个。

在一个实施例中,使用以下各项控制事务执行工具:三个专用控件,包括事务中止程序状态字(PSW)、事务诊断块(TDB)地址以及事务嵌套深度;五个控制寄存器位;以及多个通用指令,包括TRANSACTION BEGIN(受约束和无约束)、TRANSACTION END、EXTRACT TRANSACTION NESTING DEPTH、TRANSACTION ABORT(事务中止)和NONTRANSACTIONAL STORE(非事务存储)。当安装了该工具时,例如将其安装在配置中的所有CPU中。工具指示(一种实施方式中的位73)为1时,指示安装了事务执行工具。

进一步,在一个方面,当安装了事务执行工具时,还可以安装另一个工具,其被称为条件事务结束工具。例如当将工具指示位的位55设置为1时,安装了条件事务结束工具。在一种实施方式中,仅当表示事务执行工具的位73也是1时,该位才有意义。当安装了两个工具时,则CONDITIONAL TRANSACTION END也是CPU增强并用于控制事务执行。

当安装了事务执行工具时,配置提供无约束事务执行工具,并且可选地提供受约束事务执行工具,下面描述其中的每一个。作为实例,当工具指示50和73均为1时,安装了受约束事务执行工具。将两个工具指示存储在存储器中的指定位置处。

如在此使用的,指令名称TRANSACTION BEGIN指具有助记符TBEGIN(无约束事务的事务开始)和TBEGINC(受约束事务的事务开始)的指令。与特定指令有关的讨论通过指令名称后跟圆括号或方括号中的助记符指示,或者仅通过助记符指示。

图2A-2B中示出TRANSACTION BEGIN(TBEGIN)指令的格式的一个实施例。作为一个实例,TBEGIN指令200(图2A)包括操作码字段202,其包括指定无约束事务开始操作的操作码;基址字段(B1)204;位移字段(D1)206;以及立即字段(I2)208。当B1字段为非0时,将由B1204指定的通用寄存器的内容添加到D1 206以便获得第一操作数地址。

当B1字段为非0时,以下内容适用:

*当事务嵌套深度最初为0时,第一操作数地址指定256字节事务诊断块(被称为TBEGIN指定的TDB,下面进一步描述)的位置,如果中止事务,则可以将各种诊断信息存储到该位置中。当CPU处于主空间模式或存取寄存器模式时,第一操作数地址指定主地址空间中的位置。当CPU处于辅助空间或归属空间模式时,第一操作数地址分别指定辅助或归属地址空间中的位置。当DAT关闭时,事务诊断块(TDB)地址(TDBA)指定实存储装置中的位置。确定第一操作数的存储可访问性。如果可访问,则将操作数的逻辑地址放到事务诊断块地址(TDBA)中,并且TDBA有效。

*当CPU已经处于无约束事务执行模式时,不修改TDBA,并且不可预测是否对第一操作数进行可访问性测试。

当B1字段为0时,未检测到第一操作数的访问异常,并且对于最外层TBEGIN指令,TDBA无效。

在一个实例中,I2字段的位定义如下:

通用寄存器保存屏蔽(GRSM)210(图2B):I2字段的位0-7包含通用寄存器保存屏蔽(GRSM)。GRSM的每个位表示奇偶通用寄存器对,其中位0表示寄存器0和1,位1表示寄存器2和3,等等。当最外层TBEGIN指令的GRSM中的位为0时,不保存对应的寄存器对。当最外层TBEGIN指令的GRSM中的位为1时,将对应的寄存器对保存在模型相关的位置中,该位置不可由程序直接访问。

如果事务中止,则将所保存的寄存器对恢复到其在执行最外层TBEGIN指令时的内容。当事务中止时,不恢复所有其它(未保存的)通用寄存器的内容。

针对所有TBEGIN(除了最外层TBEGIN之外)忽略通用寄存器保存屏蔽。

允许AR修改(A)212:A控件(I2字段的位12)控制是否允许事务修改存取寄存器。有效的允许AR修改控件是用于当前嵌套级别和所有外部级别的TBEGIN指令中的A控件的逻辑“与”。

如果有效的A控件为0,则尝试修改任何存取寄存器时,将通过中止码11(受约束指令)中止事务。如果有效的A控件为1,则修改存取寄存器时,将不中止事务(没有任何其它中止条件)。

允许浮点运算(F)214:F控件(I2字段的位13)控制是否允许事务执行指定的浮点指令。有效的允许浮点运算控件是用于当前嵌套级别和所有外部级别的TBEGIN指令中的F控件的逻辑“与”。

如果有效的F控件为0,则(a)尝试执行浮点指令时,将通过中止码11(受约束指令)中止事务,以及(b)将不会通过任何数据异常程序异常条件来设置浮点控制寄存器(FPCR)的字节2中的数据异常码(DXC)。如果有效的F控件为1,则(a)尝试执行浮点指令时,将不中止事务(没有任何其它中止条件),以及(b)可以通过数据异常程序异常条件来设置FPCR中的DXC。

程序中断过滤控件(PIFC)216:I2字段的位14-15是程序中断过滤控件(PIFC)。PIFC控在CPU处于事务执行模式时出现的某些类的程序异常条件(例如,寻址异常、数据异常、运算异常、保护异常等)是否导致中断。

有效的PIFC是用于当前嵌套级别和所有外部级别的TBEGIN指令中的最高PIFC值。当有效的PIFC为0时,所有程序异常条件都导致中断。当有效的PIFC为1时,具有事务执行类1和2的程序异常条件导致中断。(每个程序异常条件被分配至少一个事务执行类,具体取决于异常的严重性。严重性基于重复执行事务执行期间的恢复可能性,以及操作系统是否需要看到中断。)当有效的PIFC为2时,具有事务执行类1的程序异常条件导致中断。保留PIFC 3。

I2字段的位8-11(指令的位40-43)被保留,并且应该包含0;否则,将来程序可能无法兼容运行。

参考图3A-3B描述受约束事务开始(TBEGINC)指令的格式的一个实施例。在一个实例中,TBEGINC 300(图3A)包括:操作码字段302,其包括指定受约束事务开始操作的操作码;基址字段(B1)304;位移字段(D1)306;以及立即字段(I2)308。将由B1 304指定的通用寄存器的内容添加到D1 306以便获得第一操作数地址。但是,在使用受约束事务开始指令的情况下,不使用第一操作数地址访问存储。相反,该指令的B1字段包括0;否则,识别到规格异常。

在一个实施例中,I2字段包括各种控件,图3B中示出该字段的一个实例。

在一个实例中,I2字段的位定义如下:

通用寄存器保存屏蔽(GRSM)310:I2字段的位0-7包含通用寄存器保存屏蔽(GRSM)。GRSM的每个位表示奇偶通用寄存器对,其中位0表示寄存器0和1,位1表示寄存器2和3,等等。当GRSM中的位为0时,不保存对应的寄存器对。当GRSM中的位为1时,将对应的寄存器对保存在模型相关的位置中,该位置不可由程序直接访问。如果事务中止,则将所保存的寄存器对恢复到其在执行最外层TRANSACTION BEGIN指令时的内容。当受约束事务中止时,不恢复所有其它(未保存的)通用寄存器的内容。

当在无约束事务执行模式下使用TBEGINC继续执行时,忽略通用寄存器保存屏蔽。

允许AR修改(A)312:A控件(I2字段的位12)控制是否允许事务修改存取寄存器。有效的允许AR修改控件是用于当前嵌套级别和任何外部TBEGIN或TBEGINC指令的TBEGIN指令中的A控件的逻辑“与”。

如果有效的A控件为0,则尝试修改任何存取寄存器时,将通过中止码11(受约束指令)中止事务。如果有效的A控件为1,则修改存取寄存器时,将不中止事务(没有任何其它中止条件)。

I2字段的位8-11和13-15(指令的位40-43和45-47)被保留,并且应该包含0。

在一个实例中,事务开始指令的结束由TRANSACTION END(TEND)指令指定,图4中示出该指令的格式。作为一个实例,TEND指令400包括操作码字段402,其包括指定事务结束操作的操作码。

在进一步实施例中,事务的结束可以由CONDITIONAL TRANSACTION END(CTEND)指令指定,下面进一步描述该指令。

针对事务执行工具使用多个术语,并且因此,仅为方便起见,下面按字母顺序提供术语列表。在一个实施例中,这些术语具有以下定义:

中止:当事务在导致事务嵌套深度为0的TRANSACTION END指令之前结束时,或者当CONDITIONAL TRANSACTION END指令将条件码设置为0时,事务中止。在一个实施例中,当事务中止时,发生以下情况:

*由任何和所有级别的事务进行的事务存储访问被丢弃(即,不提交)。

*由任何和所有级别的事务进行的非事务存储访问被提交。

*由最外层TRANSACTION BEGIN指令的通用寄存器保存屏蔽(GRSM)指定的寄存器被恢复到其在事务执行之前的内容(即,恢复到其在执行最外层TRANSACTION BEGIN指令时的内容)。最外层TRANSACTION BEGIN指令的通用寄存器保存屏蔽未指定的通用寄存器不被恢复。

*存取寄存器、浮点寄存器和浮点控制寄存器不被恢复。当事务中止时,在事务执行期间对这些寄存器的任何更改被保留。

事务可能由于各种原因而中止,包括尝试执行受限指令、尝试修改受限资源、事务冲突、超过各种CPU资源、任何解释执行拦截条件、任何中断、TRANSACTION ABORT指令和其它原因。事务中止码提供事务可能中止的具体原因。

参考图5描述TRANSACTION ABORT(TABORT)指令的格式的一个实例。作为一个实例,TABORT指令500包括:操作码字段502,其包括指定事务中止操作的操作码;基址字段(B2)504;以及位移字段(D2)506。当B2字段为非0时,将由B2 504指定的通用寄存器的内容添加到D2 506以便获得第二操作数地址;否则,仅从D2字段形成第二操作数地址,并且B2字段被忽略。第二操作数地址并不用于对数据进行寻址;相反,该地址形成事务中止码,在中止处理期间该中止码被放在事务诊断块中。第二操作数地址的地址计算遵循地址运算的规则:在24位寻址模式中,将位0-29设置为0;在31位寻址模式中,将位0-32设置为0。

提交:在完成最外层TRANSACTION END指令时,或者在完成将条件码设置为0的CONDITIONAL TRANSACTION END指令时,CPU提交由事务(即,最外层事务和任何嵌套级别)进行的存储访问,以使得这些存储访问对其它CPU和I/O子系统可见。如由其它CPU和I/O子系统观察到的那样,当进行提交时,由所有嵌套级别的事务进行的所有取回和存储访问看似作为单个并发操作发生。

提交过程不修改通用寄存器、存取寄存器、浮点寄存器和浮点控制寄存器的内容。当提交事务的存储时,在事务执行期间对这些寄存器进行的任何更改被保留。

冲突:由一个CPU进行的事务访问与以下两项冲突:(a)由另一个CPU进行的事务访问或非事务访问,或者(b)由I/O子系统进行的非事务访问,前提是两个访问针对同一高速缓存行中的任何位置,并且两个访问之一或全部是存储。

可以通过CPU对指令的推测执行检测冲突,即使可能未在概念序列中检测到冲突。

受约束事务:受约束事务是在受约束事务执行模式下执行的事务,并且受到以下限制:

*通用指令的子集可用。

*可以执行有限数量的指令。

*可以访问有限数量的存储操作数位置。

*事务被限于单个嵌套级别。

如果不存在重复中断或与其它CPU或I/O子系统的冲突,则受约束事务最终完成,因此不需要中止处理机例程。

当执行受约束TRANSACTION BEGIN(TBEGINC)指令时,同时CPU已经处于无约束事务执行模式,执行作为嵌套无约束事务继续。

受约束事务执行模式:当事务嵌套深度为0,并且通过TBEGINC指令发起事务时,CPU进入受约束事务执行模式。当CPU处于受约束事务执行模式时,事务嵌套深度为1。

嵌套事务:当发出TRANSACTION BEGIN指令时,同时CPU处于无约束事务执行模式,事务被嵌套。

事务执行工具使用一种被称为平面化嵌套的模型。在该平面化嵌套模式下,其它CPU和I/O子系统观察不到由内部事务进行的存储,直到最外层事务提交其存储。同样,如果事务中止,则所有嵌套事务都中止,并且所有嵌套事务的所有事务存储都被丢弃。

图6中示出嵌套事务的一个实例。如图所示,第一TBEGIN 600启动最外层事务601,TBEGIN 602启动第一嵌套事务,并且TBEGIN 604启动第二嵌套事务。在该实例中,TBEGIN 604和TEND 606定义最内层事务608。当TEND 610执行时,针对最外层事务和所有内部事务提交事务存储(612)。

无约束事务:无约束事务是在无约束事务执行模式下执行的事务。尽管无约束事务在方式上不被限制为受约束事务,但它仍然可能由于各种原因而中止。

无约束事务执行模式:当通过TBEGIN指令发起事务时,CPU进入无约束事务执行模式。当CPU处于无约束事务执行模式时,事务嵌套深度可以从1变化到最大事务嵌套深度。

非事务访问:非事务访问是由CPU在未处于事务执行模式时进行的存储操作数访问(即,传统的事务外部存储访问)。进一步,由I/O子系统进行的访问是非事务访问。此外,当CPU处于无约束事务执行模式时,NONTRANSACTIONAL STORE指令可以用于导致非事务存储访问。

外部/最外层事务:具有更低计数的事务嵌套深度的事务是外部事务。事务嵌套深度值为1的事务是最外层事务。

最外层TRANSACTION BEGIN指令是当事务嵌套深度最初为0时执行的指令。最外层TRANSACTION END指令是导致事务嵌套深度从1转变为0的指令。进一步,将条件码设置为0的CONDITIONAL TRANSACTION END指令还可以被视为指令的最外层形式。在该实施例中,受约束事务是最外层事务。

程序中断过滤:当由于某些程序异常条件而中止事务时,程序可以可选地防止发生中断。这种技术被称为程序中断过滤。程序中断过滤取决于中断的事务类、TRANSACTION BEGIN指令中的有效程序中断过滤控制,以及控制寄存器0中的事务执行程序中断过滤超控。

事务:当CPU处于事务执行模式时,事务包括进行的存储操作数访问,以及改变的选定通用寄存器。对于无约束事务,存储操作数访问可以包括事务访问和非事务访问。对于受约束事务,存储操作数访问被限于事务访问。如由其它CPU和I/O子系统观察到的那样,由CPU在处于事务执行模式时进行的所有存储操作数访问看似作为单个并发操作发生。如果中止事务,则事务存储访问被丢弃,并且由最外层TRANSACTION BEGIN指令的通用寄存器保存屏蔽指定的任何寄存器被恢复到其在事务执行之前的内容。

事务访问:事务访问是在CPU处于事务执行模式时进行的存储操作数访问,并且由NONTRANSACTIONAL STORE指令进行的访问除外。

事务执行模式:术语事务执行模式(也被称为事务性执行模式)描述无约束和受约束事务执行模式的公共操作。因此,当描述操作时,术语无约束和受约束用于限定事务执行模式。

当事务嵌套深度为0时,CPU未处于事务执行模式(也被称为非事务执行模式)。

如由CPU观察到的那样,在事务执行模式下进行的取回和存储与未在事务执行模式下进行的那些取回和存储并无区别。

在z/Architecture的一个实施例中,事务执行工具受控于控制寄存器0的位8-9、控制寄存器2的位61-63、事务嵌套深度、事务诊断块地址以及事务中止程序状态字(PSW)。

在初始CPU重置之后,将控制寄存器0的位位置8-9的内容、控制寄存器2的位位置62-63的内容以及事务嵌套深度设置为0。当事务执行控制(控制寄存器0的位8)为0时,无法将CPU置于事务执行模式。

下面描述关于各种控件的进一步细节。

如上所述,事务执行工具由控制寄存器0中的两个位和控制寄存器2中的三个位控制。例如:

控制寄存器0位:在一个实施例中,位分配如下:

事务执行控制(TXC):控制寄存器0的位8是事务执行控制。该位提供一种机制,控制程序(例如,操作系统)可以由此指示程序是否可使用事务执行工具。位8为1可成功进入事务执行模式。

当控制寄存器0的位8为0时,尝试执行CONDITIONAL TRANSACTION END、EXTRACT TRANSACTION NESTING DEPTH、TRANSACTION BEGIN和TRANSACTION END指令导致特殊的操作执行。

事务执行程序中断过滤超控(PIFO):控制寄存器0的位9是事务执行程序中断过滤超控。该位提供一种机制,控制程序能够由此确保在CPU处于事务执行模式时出现的任何程序异常条件都导致中断,与由TRANSACTION BEGIN指令(多个)指定或暗示的有效程序中断过滤控制无关。

控制寄存器2位:在一个实施例中,分配如下:

事务诊断范围(TDS):控制寄存器2的位61控制事务诊断控件(TDC)

在寄存器的位62-63中的应用,如下所示:

TDS

值 含义

0应用TDC,不管CPU是处于问题状态还是监控(supervisor)状态。

1仅当CPU处于问题状态时应用TDC。当CPU处于监控状态时,处理犹如包含0的TDC。

事务诊断控件(TDC):控制寄存器2的位62-63是2位无符号整数,其可以用于导致随机中止事务以便实现诊断目的。在一个实例中,TDC的编码如下:

TDC

值 含义

0正常操作;不会由于TDC而中止事务。

1在随机指令处,但在执行最外层TRANSACTION END指令或者将条件码设置为0的CONDITIONAL TRANSACTION END指令之前,中止每个事务。

2在随机指令处中止随机事务。

3保留

当由于非0TDC而中止事务时,则可能发生以下任何一种情况:

·将中止码设置为代码7-11、13-18或255中的任何一个,并且代码的值由CPU随机选择;设置对应于中止码的条件码。

·对于无约束事务,将条件码设置为1。在这种情况下,中止码不适用。

是否实现TDC值1与模型相关。如果不实现,则为1的值的操作犹如2被指定。

对于受约束事务,为1的TDC值的处理犹如指定为2的TDC值。

如果指定为3的TDC值,则结果不可预测。

事务诊断块地址(TDBA)

当指令的B1字段为非0时,从最外层TRANSACTION BEGIN(TBEGIN)指令的第一操作数地址设置有效的事务诊断块地址(TDBA)。当CPU处于主空间或存取寄存器模式时,TDBA指定主地址空间中的位置。当CPU处于辅助空间或归属空间模式时,TDBA分别指定辅助或归属地址空间中的位置。当关闭DAT(动态地址转换)时,TDBA指定实存储装置中的位置。

如果随后中止事务,则CPU使用TDBA定位事务诊断块(被称为TBEGIN指定的TDB)。TDBA的最右侧三位为0,意味着TBEGIN指定的TDB在双字边界上。

当最外层TRANSACTION BEGIN(TBEGIN)指令的B1字段为0时,事务诊断块地址无效,并且如果随后中止事务,则不存储TBEGIN指定的TDB。

事务中止PSW(TAPSW)

当嵌套深度最初为0时,在执行TRANSACTION BEGIN(TBEGIN)指令期间,将事务中止PSW设置为当前PSW的内容;以及事务中止PSW的指令地址指定下一顺序指令(即,在最外层TBEGIN之后的指令)。当嵌套深度最初为0时,在执行受约束TRANSACTION BEGIN(TBEGINC)指令期间,将事务中止PSW设置为当前PSW的内容,只是事务中止PSW的指令地址指定TBEGINC指令(而不是在TBEGINC之后的下一顺序指令)。

当中止事务时,使用指示中止条件严重性的代码替换事务中止PSW中的条件码。随后,如果由于未导致中断的原因而中止事务,则从事务中止PSW加载PSW;如果由于导致中断的原因而中止事务,则事务中止PSW被存储为中断旧PSW。

在执行任何内部TRANSACTION BEGIN指令期间,不改变事务中止PSW。

事务嵌套深度(TND)

事务嵌套深度例如是16位无符号值,每次在条件码0的情况下完成TRANSACTION BEGIN指令时,该值递增,并且每次在条件码0的情况下完成TRANSACTION END或CONDITIONAL TRANSACTION END指令时,该值递减。当事务中止或由CPU重置时,事务嵌套深度被重置为0。

在一个实施例中,实现最大为15的TND。

在一种实施方式中,当CPU处于受约束事务执行模式时,事务嵌套深度为1。此外,尽管最大TND可以被表示为4位值,但TND被定义为16位值以便于其在事务诊断块中的检查。

事务诊断块(TDB)

当中止事务时,可以将各种状态信息保存在事务诊断块(TDB)中,如下所示:

1.TBEGIN指定的TDB:对于无约束事务,当最外层TBEGIN指令的B1字段为非0时,指令的第一操作数地址指定TBEGIN指定的TDB。这是应用程序指定的位置,其可以由应用的中止处理机检查。

2.程序中断(PI)TDB:如果由于未过滤的程序异常条件而中止无约束事务,或者如果由于任何程序异常条件(即,导致识别到程序中断的任何条件)而中止受约束事务,则PI-TDB被存储到前缀区中的位置中。这可用于操作系统以便在PI-TDB可以提供的任何诊断报告中检查并且退出。

3.拦截TDB:如果由于导致拦截的任何程序异常条件(即,条件导致解释执行结束并且将控制返回到主机程序)而中止事务,则TDB被存储到客体操作系统的状态描述块中指定的位置中。

在一个实施例中,仅当TDB地址有效时(即,当最外层TBEGIN指令的B1字段为非0时)才存储TBEGIN指定的TDB。

对于由于未过滤的程序异常条件导致的中止,仅存储PI-TDB或拦截TDB中的一个。因此,可以针对中止存储0个、一个或两个TDB。

下面描述关于每个TDB的一个实例的进一步细节:

TBEGIN指定的TDB:由有效的事务诊断块地址指定的256字节位置。当事务诊断块地址有效时,存储有关事务中止的TBEGIN指定的TDB。TBEGIN指定的TDB经历在执行最外层TRANSACTION BEGIN指令时有效的所有存储保护机制。在执行最外层TBEGIN期间(而不是在事务中止处理期间),检测TBEGIN指定的TDB的任何部分的PER(程序事件记录)存储改变事件。

PER的一个用途是有助于调试程序。作为实例,它允许将程序改变为以下类型的事件:

*成功分支指令的执行。提供以下选项:仅当分支目标位置在指定的存储区域中时才发生事件。

*从指定存储区域取回指令。

*指定存储区域的内容的改变。提供以下选项:仅当存储区域在指定的地址空间中时才发生事件。

*STORE USING REAL ADDRESS(使用实地址存储)指令的执行。

*CONDITIONAL TRANSACTION END或TRANSACTION END指令的执行。

程序能够选择性地指定识别上面一种或多种类型的事件,只是STORE USING REAL ADDRESS的事件仅可以与存储改变事件一起被指定。通过程序中断向程序提供关于PER事件的信息,并且在中断码中标识中断原因。

当事务诊断块地址无效时,不存储TBEGIN指定的TDB。

程序中断TDB:实位置6,144-6,399(1800-18FF十六进制)。当由于程序中断而中止事务时,存储程序中断TDB。当由于其它原因而中止事务时,程序中断TDB的内容不可预测。

程序中断TDB不经历任何保护机制。当程序中断TDB在程序中断期间被存储时,不针对程序中断TDB检测PER存储改变事件。

拦截TDB:由状态描述的位置488-495指定的256字节主机实位置。当被中止事务导致客体程序中断拦截(即,拦截代码8)时,存储拦截TDB。当由于其它原因而中止事务时,拦截TDB的内容不可预测。拦截TDB不经历任何保护机制。

如图7中所示,在一个实施例中,事务诊断块900的字段如下:

格式702:字节0包含有效性和格式指示,如下所示:

值 含义

0 TDB的剩余字段不可预测。

1格式1TDB,下面描述其剩余字段。

2-255保留

其中格式字段为0的TDB被称为空TDB。

标志704:字节1包含各种指示,如下所示:

冲突令牌有效性(CTV):当由于取回或存储冲突而中止事务时(即,分别为中止码9或10),字节1的位0是冲突令牌有效性指示。当CTV指示为1时,TDB的字节16-23中的冲突令牌710包含在该处检测到冲突的逻辑地址。当CTV指示为0时,TDB的字节16-23不可预测。

当由于取回或存储冲突之外的任何原因而中止事务时,字节1的位0被存储为0。

受约束事务指示(CTI):当CPU处于受约束事务执行模式时,将字节1的位1设置为1。当CPU处于无约束事务执行模式时,将字节1的位1设置为0。

保留:字节1的位2-7被保留,并且被存储为0。

事务嵌套深度(TND)706:字节6-7包含事务中止时的事务嵌套深度。事务中止码(TAC)708:字节8-15包含64位无符号事务中止码。每个代码指示事务中止的原因。

当由于程序中断之外的条件而中止事务时,事务中止码是否被存储在程序中断TDB中与是模型相关的。

冲突令牌710:对于由于取回或存储冲突而中止的事务(即,分别为中止码9和10),字节16-23包含在该处检测到冲突的存储位置的逻辑地址。当CTV位(字节1的位0)为1时,冲突令牌有意义。

当CTV位为0时,字节16-23不可预测。

因为CPU进行推测执行,冲突令牌可能指定不一定由事务的概念执行序列访问的存储位置。

中止事务指令地址(ATIA)712:字节24-31包含指令地址,该指令地址标识当检测到中止时正在执行的指令。当由于中止码2、5、6、11、13、17、18或256或更高代码而中止事务时,或者当由于中止码4或12而中止事务,并且使程序异常条件无效时,ATIA直接指向被执行的指令。当由于中止码4或12而中止事务,并且未使程序异常条件无效时,ATIA越过正在被执行的指令。

当由于中止码7-10、14-16或255而中止事务时,ATIA不一定指示导致中止的确切指令,但可能指向事务中的较前或较后的指令。

如果由于作为执行型指令的目标的指令而中止事务,则ATIA标识该执行型指令,指向该指令或越过该指令,具体取决于中止码。ATIA不指示该执行型指令的目标。

ATIA经历事务中止时的寻址模式。在24位寻址模式下,字段的位0-40包含0。在31位寻址模式下,字段的位0-32包含0。

当由于程序中断之外的条件而中止事务时,中止事务指令地址是否被存储在程序中断TDB中与模型相关。

当由于中止码4或12而中止事务,并且未使程序异常条件无效时,ATIA不指向导致该中止的指令。通过从ATIA中减去由中断长度码(ILC)指示的半字数,能够在抑制或中止的条件中标识导致中止的指令,或者针对正在完成的非PER事件标识导致中止的指令。当由于PER事件而中止事务,并且不存在其它程序异常条件时,ATIA不可预测。

当事务诊断块地址有效时,可以在TBEGIN指定的TDB的字节36-39中的程序中断标识(PIID)中检查ILC。当不应用过滤时,可以在实存储装置中的位置140-143处的PIID中检查ILC。

异常访问标识(EAID)714:对于由于某些过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节32包含异常访问标识。在z/Architecture的一个实例中,EAID的格式及其存储情况与异常条件导致中断时的实位置160中描述的相同,如上面引入作为参考的“操作原理”中所述。

对于由于其它原因(包括导致程序中断的任何异常条件)而中止的事务,字节32不可预测。在程序中断TDB中,字节32不可预测。

该字段仅被存储在由事务诊断块地址指定的TDB中;否则,该字段被保留。仅针对以下各项存储EAID:访问列表控制或DAT保护、ASCE类型、页转换、区域第一转换、区域第二转换、区域第三转换以及段转换程序异常条件。

数据异常码(DXC)716:对于由于过滤的数据异常程序异常条件而中止的事务,TBEGIN指定的TDB的字节33包含数据异常码。在z/Architecture的一个实例中,DXC的格式及其存储情况与异常条件导致中断时的实位置147中描述的相同,如上面引入作为参考的“操作原理”中所述。在一个实例中,位置147包括DXC。

对于由于其它原因(包括导致程序中断的任何异常条件)而中止的事务,字节33不可预测。在程序中断TDB中,字节33不可预测。

该字段仅被存储在由事务诊断块地址指定的TDB中;否则,字段被保留。仅针对数据程序异常条件存储DXC。

程序中断标识(PIID)718:对于由于过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节36-39包含程序中断标识。在z/Architecture的一个实例中,PIID的格式与条件导致中断时的实位置140-143中描述的相同(如上面引入作为参考的“操作原理”中所述),只是PIID的位13-14中的指令长度码对应于其中检测到异常条件的指令。

对于由于其它原因(包括导致程序中断的异常条件)而中止的事务,字节36-39不可预测。在程序中断TDB中,字节36-39不可预测。

该字段仅被存储在由事务诊断块地址指定的TDB中;否则,字段被保留。仅针对程序异常条件存储程序中断标识。

转换异常标识(TEID)720:对于由于以下任何一个过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节40-47包含转换异常标识。

*访问列表控制或DAT保护

*ASCE类型

*页转换

*区域第一转换

*区域第二转换

*区域第三转换

*段转换异常

在z/Architecture的一个实例中,TEID的格式与条件导致中断时的实位置168-175中描述的相同,如上面引入作为参考的“操作原理”中所述。

对于由于其它原因(包括导致程序中断的异常条件)而中止的事务,字节40-47不可预测。在程序中断TDB中,字节40-47不可预测。

该字段仅被存储在由事务诊断块地址指定的TDB中;否则,字段被保留。

中断事件地址722:对于由于过滤的程序异常条件而中止的事务,TBEGIN指定的TDB的字节48-55包含中断事件地址。在z/Architecture的一个实例中,中断事件地址的格式与条件导致中断时的实位置272-279中描述的相同,如上面引入作为参考的“操作原理”中所述。

对于由于其它原因(包括导致程序中断的异常条件)而中止的事务,字节48-55不可预测。在程序中断TDB中,字节48-55不可预测。

该字段仅被存储在由事务诊断块地址指定的TDB中;否则,字段被保留。

下面描述有关中断事件的进一步细节。

在z/Architecture的一个实施例中,当安装了PER-3工具时,它为程序提供在CPU顺序执行中导致中断的上一指令的地址。中断事件地址记录可以用作自然分支检测的调试帮助。该工具例如在CPU中提供64位寄存器,被称为中断事件地址寄存器。每次TRANSACTION ABORT之外的指令在顺序指令执行中导致中断(即,PSW中的指令地址被替换,而非按指令长度递增)时,该指令的地址被放置在中断事件地址寄存器中。每当发生程序中断时,无论是否指示PER,中断事件地址寄存器的当前内容都被放在实存储装置位置272-279中。

如果导致中断事件的指令是执行型指令(EXECUTE(执行)或EXECUTE RELATIVE LONG(执行相对长))的目标,则用于取回执行型指令的指令地址被放在中断事件地址寄存器中。

在z/Architecture的一个实施例中,每当以下指令之一导致分支时,便会视为发生中断事件:BRANCH AND LINK(BAL、BALR);BRANCH AND SAVE(BAS、BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH AND STACK(BAKR);BRANCH ON CONDITION(BC、BCR);BRANCH ON COUNT(BCT、BCTR、BCTG、BCTGR);BRANCH ON INDEX HIGH(BXH、BXHG);BRANCH ON INDEX LOW OR EQUAL(BXLE、BXLEG);BRANCH RELATIVE ON CONDITION(BRC);BRANCH RELATIVE ON CONDITION LONG(BRCL);BRANCH RELATIVE ON COUNT(BRCT、BRCTG);BRANCH RELATIVE ON INDEX HIGH(BRXH、BRXHG);BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE、BRXLG);COMPARE AND BRANCH(CRB、CGRB);COMPARE AND BRANCH RELATIVE(CRJ、CGRJ);COMPARE IMMEDIATE AND BRANCH(CIB、CGIB);COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ、CGIJ);COMPARE LOGICAL AND BRANCH(CLRB、CLGRB);COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ、CLGRJ);COMPARE LOGICAL IMMEDIATE AND BRANCH(CLIB、CLGIB);以及COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ、CLGIJ)。

每当完成以下指令之一时,也会视为发生中断事件:BRANCH AND SET AUTHORITY(BSA);BRANCH IN SUBSPACE GROUP(BSG);BRANCH RELATIVE AND SAVE;BRANCH RELATIVE AND SAVE LONG(BRASL);LOAD PSW(LPSW);LOAD PSW EXTENDED(LPSWE);PROGRAM CALL(PC);PROGRAM RETURN(PR);PROGRAM TRANSFER(PT);PROGRAM TRANSFER WITH INSTANCE(PTI);RESUME PROGRAM(RP);以及TRAP(TRAP2、TRAP4)。

中断事件不会被视为由于中止事务而发生(隐式发生或者由于TRANSACTION ABORT指令而发生)。

模型相关诊断信息724:字节112-127包含模型相关诊断信息。

对于除了12(过滤的程序中断)之外的所有中止码,模型相关诊断信息被保存在存储的每个TDB中。

在一个实施例中,模型相关诊断信息包括以下各项:

*字节112-119包含64位向量,被称为事务执行分支指示(TXBI)。

向量前63位中的每个位指示当CPU处于事务执行模式时,执行分

支指令的结果,如下所示:

值 含义

0指令完成而没有分支。

1指令完成而具有分支。

位0表示第一个此类分支指令的结果,位1表示第二个此类指令的结果,等等。

当CPU处于事务执行模式时,如果执行少于63个分支指令,则将不对应于分支指令的最右侧位设置为0(包括位63)。当执行多于63个分支指令时,将TXBI的位63设置为1。

TXBI中的位由能够导致中断事件的指令(如上面列出)设置,以下

情况除外:

-任何受限指令不导致在TXBI中设置位。

-对于例如z/Architecture的指令,当BRANCH ON CONDITION、BRANCH RELATIVE ON CONDITION或BRANCH RELATIVE ON CONDITION LONG指令的M1字段为0时,或者当以下指令的R2字段为0时,指令的执行是否导致在TXBI中设置位与模型相关。

·BRANCH AND LINK(BALR);BRANCH AND SAVE(BASR);BRANCH AND SAVE AND SET MODE(BASSM);BRANCH AND SET MODE(BSM);BRANCH ON CONDITION(BCR);以及BRANCH ON COUNT(BCTR、BCTGR)

·对于由主机访问异常导致的中止条件,将字节127的位位置0设置为1。对于所有其它中止条件,将字节127的位位置0设置为0。

·对于由加载/存储单元(LSU)检测到的中止条件,字节127的最右侧五位包含原因指示。对于未由LSU检测到的中止条件,字节127被保留。

通用寄存器730:字节128-255包含事务中止时的通用寄存器0-15的内容。寄存器按升序存储,从字节128-135中的通用寄存器0、字节136-143中的通用寄存器1开始,以此类推。

保留:所有其它字段被保留。除非另外指明,否则被保留字段的内容不可预测。

如由其它CPU和I/O子系统观察到的那样,在事务中止期间存储TDB(多个)是在任何非事务存储之后发生的多重访问引用。

可能由于在执行事务的立即配置范围之外的原因而中止事务。例如,由系统管理程序(例如LPAR或z/VM)识别到的瞬时事件可能导致事务中止。

在事务诊断块中提供的信息用于诊断目的,并且基本上正确。但是,因为可能由立即配置范围之外的事件导致中止,诸如中止码或程序中断标识之类的信息可能不会准确地反映配置中的条件,并且因此不应用于确定程序动作。

除了保存在TDB中的诊断信息之外,当由于任何数据异常程序异常条件而中止事务,并且AFP寄存器控件(控制寄存器0的位45)和有效的允许浮点运算控件(F)都为1时,数据异常码(DXC)被放到浮点控制寄存器(FPCR)的字节2中,与是否向程序异常条件应用过滤无关。当中止事务,并且AFP寄存器控件或有效的允许浮点运算控件之一或全部为0时,DXC未被放到FPCR中。

在一个实施例中,如在此所述,当安装了事务执行工具时,提供多个通用指令,例如包括EXTRACT TRANSACTION NESTING DEPTH、NONTRANSACTIONAL STORE、TRANSACTION ABORT、TRANSACTION BEGIN和TRANSACTION END。进一步,当安装了条件事务结束工具时,提供CONDITIONAL TRANSACTION END指令。

当CPU处于事务执行模式时,尝试执行某些指令被限制,并且导致事务中止。

当在受约束事务执行模式下发出时,尝试执行受限指令也可能导致事务约束程序中断,或者可能导致执行继续,犹如事务未受约束。

在z/Architecture的一个实例中,作为实例,受限指令包括以下非特权指令:COMPARE AND SWAP AND STORE;MODIFY RUNTIME INSTRUMENTATION CONTROLS;PERFORM LOCKED OPERATION;PREFETCH DATA(RELATIVE LONG),当M1字段中的代码为6或7时;STORE CHARACTERS UNDER MASK HIGH,当M3字段为0并且R1字段中的代码为6或7时;STORE FACILITY LIST EXTENDED;STORE RUNTIME INSTRUMENTATION CONTROLS;SUPERVISOR CALL;以及TEST RUNTIME INSTRUMENTATION CONTROLS。

在上面列表中,COMPARE AND SWAP AND STORE和PERFORM LOCKED OPERATION是复杂指令,其可以通过在TX模式下使用基本指令更高效地实现。PREFETCH DATA和PREFETCH DATA RELATIVE LONG的情况被限制,因为代码6和7释放高速缓存行,可能需要在事务完成之前提交数据。SUPERVISOR CALL被限制,因为它导致中断(其导致事务中止)。

在下面列出的条件下,限制以下指令:

*BRANCH AND LINK(BALR)、BRANCH AND SAVE(BASR)和BRANCH AND SAVE AND SET MODE,当指令的R2字段为非0并且启用分支跟踪时。

*BRANCH AND SAVE AND SET MODE和BRANCH AND SET MODE,当R2字段为非0并且启用模式跟踪时;SET ADDRESSING MODE,当启用模式跟踪时。

*CONDITIONAL TRANSACTION END,当事务嵌套深度大于1时。

*MONITOR CALL,当识别到监视事件条件时。

上面列表包括可能形成跟踪项的指令。如果允许这些指令以事务方式执行并形成跟踪项,并且随后中止事务,则控制寄存器12中的跟踪表指针将增加,但到跟踪表的存储被丢弃。这在跟踪表中留下不一致的分歧;因此,在指令形成跟踪项的情况下,将限制指令。

当CPU处于事务执行模式时,是否限制以下指令与模型相关:CIPHER MESSAGE;CIPHER MESSAGE WITH CFB;CIPHER MESSAGE WITH CHAINING;CIPHER MESSAGE WITH COUNTER;CIPHER MESSAGE WITH OFB;COMPRESSION CALL;COMPUTE INTERMEDIATE MESSAGE DIGEST;COMPUTE LAST MESSAGE DIGEST;COMPUTE MESSAGE AUTHENTICATION CODE;CONVERT UNICODE-16TO UNICODE-32;CONVERT UNICODE-16TO UNICODE-8;CONVERT UNICODE-32TO UNICODE-16;CONVERT UNICODE-32TO UNICODE-8;CONVERT UNICODE-8TO UNICODE-16;CONVERT UNICODE-8TO UNICODE-32;PERFORM CRYPTOGRAPHIC COMPUTATION;RUNTIMEINSTRUMENTATION OFF;以及RUNTIME INSTRUMENTATION ON。

上面每个指令当前由硬件协处理器实现,或者过去在机器中实现,并且因此被视为受限。

当有效的允许AR修改(A)控件为0时,限制以下指令:COPY ACCESS;LOAD ACCESS MULTIPLE;LOAD ADDRESS EXTENDED;以及SET ACCESS。

上面每个指令导致修改存取寄存器的内容。如果TRANSACTION BEGIN指令中的A控件为0,则程序显式指示不允许存取寄存器修改。

当有效的允许浮点运算(F)控件为0时,限制浮点指令。

在某些情况下,可能限制以下指令:EXTRACT CPU TIME;EXTRACT PSW;STORE CLOCK;STORE CLOCK EXTENDED;以及STORE CLOCK FAST。

上面每个指令都经历解释执行状态描述中的拦截控制。如果系统管理程序针对这些指令设置拦截控制,则指令的执行可能由于系统管理程序实现而延期;因此,如果发生拦截,则这些指令被视为受限。

当由于尝试执行受限指令而中止无约束事务时,将事务诊断块中的事务中止码设置为11(受限指令),并且将条件码设置为3,以下情况除外:当由于尝试执行指令(该指令否则导致特权操作异常)而中止无约束事务时,不可预测将中止码设置为11(受限指令)还是4(识别到特权操作程序中断导致的未过滤的程序中断)。当由于尝试执行以下指令而中止无约束事务时:PREFETCH DATA(RELATIVE LONG)(当M1字段中的代码为6或7时)或STORE CHARACTERS UNDER MASK HIGH(当M3字段为0并且R1字段中的代码为6或7时),不可预测将中止码设置为11(受限指令)还是16(缓存其它)。当由于尝试执行MONITOR CALL而中止无约束事务,并且存在监视事件条件和指定规格异常条件时,不可预测将中止码设置为11、4,还是设置为12(如果过滤程序中断)。

在受约束事务中,可能限制其它指令。尽管这些指令当前未在无约束事务中被定义为受限,但在将来处理器的无约束事务中,它们可能在某些情况下受限。

在将来处理器的事务执行模式下,可能允许某些受限指令。因此,程序不应依赖于由于尝试执行受限指令而中止事务。应该使用TRANSACTION ABORT指令可靠地导致中止事务。

在无约束事务中,程序应该提供备选非事务代码路径,以便适应由于受限指令中止的事务。

在操作中,当事务嵌套深度为0时,如果执行导致条件码0的TRANSACTION BEGIN(TBEGIN)指令,则导致CPU进入无约束事务执行模式。当事务嵌套深度为0时,如果执行导致条件码0的受约束TRANSACTION BEGIN(TBEGINC)指令,则导致CPU进入受约束事务执行模式。

除了另外显式说明之外,适用于非事务执行的所有规则也适用于事务执行。下面是在CPU处于事务执行模式时的处理的其它特性。

当CPU处于无约束事务执行模式时,如果执行导致条件码0的TRANSACTION BEGIN指令,则导致CPU仍处于无约束事务执行模式。

如由CPU观察到的那样,在事务执行模式下进行的取回和存储与未在事务执行模式下进行的那些取回和存储并无区别。如由其它CPU和I/O子系统观察到的那样,在CPU处于事务执行模式时进行的所有存储操作数访问看似单个块并发访问。即,对半字、字、双字或四字中的所有字节的访问被指定为看似块并发,如由其它CPU和I/O(例如,通道)程序观察到的那样。在本章节中,半字、字、双字或四字被称为块。当取回型引用被指定为看似在块中并发时,在取回包含在该块中的字节期间,不允许另一个CPU或I/O程序存储访问该块。当存储型引用被指定为看似在块中并发时,在存储该块中的字节期间,不允许另一个CPU或I/O程序访问该块(取回或存储)。

指令的存储访问以及DAT和ART(存取寄存器表)表的取回遵循非事务规则。

CPU通常借助TRANSACTION END指令或CONDITIONAL TRANSACTION END指令离开事务执行模式,TRANSACTION END指令导致事务嵌套深度转变为0,CONDITIONAL TRANSACTION END指令将条件码设置为0;在其中每种情况下均完成事务。

当CPU借助完成TRANSACTION END指令或CONDITIONAL TRANSACTION END指令(其将条件码设置为0)而离开事务执行模式时,在处于事务执行模式时进行的所有存储被提交;即,存储看似作为单个块并发操作发生,如由其它CPU和I/O子系统观察到的那样。

可以由于各种原因而隐式中止事务,或者可以通过TRANSACTION ABORT指令而显式中止事务。下面描述事务中止的实例可能原因、对应的中止码以及被放到事务中止PSW中的条件码。

外部中断:将事务中止码设置为2,并且将事务中止PSW中的条件码设置为2。作为外部中断处理的一部分,事务中止PSW被存储为外部旧PSW。

程序中断(未过滤):导致中断的程序中断条件(即,未过滤的条件)将导致以代码4中止事务。特定于程序中断码而设置事务中止PSW中的条件码。作为程序中断处理的一部分,事务中止PSW被存储为程序旧PSW。

否则导致由于操作异常而中止事务的指令可能产生备选结果:对于无约束事务,事务可能实际以中止码11(受限指令)中止;对于受约束事务,可能识别到事务约束程序中断而不是操作异常。

当结合任何其它未过滤的程序异常条件识别到PER(程序事件记录)事件时,将条件码设置为3。

机器检查中断:将事务中止码设置为5,并且将事务中止PSW中的条件码设置为2。作为机器检查中断处理的一部分,事务中止PSW被存储为机器检查旧PSW。

I/O中断:将事务中止码设置为6,并且将事务中止PSW中的条件码设置为2。作为I/O中断处理的一部分,事务中止PSW被存储为I/O旧PSW。

取回溢出:当事务尝试从超过CPU所支持的多个位置中取回时,检测到取回溢出条件。将事务中止码设置为7,并且将条件码设置为2或3。

存储溢出:当事务尝试存储到超过CPU所支持的多个位置时,检测到存储溢出条件。将事务中止码设置为8,并且将条件码设置为2或3。如果响应于取回或存储溢出中止而允许条件码为2或3,则允许CPU指示潜在重试的情况(例如,条件码2指示重新执行事务可以是高效率的,而条件码3不建议重新执行)。

取回冲突:当另一个CPU或I/O子系统尝试存储到该CPU以事务方式取回的位置中时,检测到取回冲突条件。将事务中止码设置为9,并且将条件码设置为2。

存储冲突:当另一个CPU或I/O子系统尝试访问在该CPU事务执行期间已被存储的位置时,检测到存储冲突条件。将事务中止码设置为10,并且将条件码设置为2。

受限指令:当CPU处于事务执行模式时,尝试执行受限指令导致中止事务。将事务中止码设置为11,并且将条件码设置为3。

当CPU处于受约束事务执行模式时,不可预测尝试执行受限指令导致事务约束程序中断还是由于受限指令而产生的中止。事务仍被中止,但中止码可能指示任一原因。

程序异常条件(过滤):不导致中断的程序异常条件(即,过滤的条件)将导致以是12的事务中止码中止事务。将条件码设置为3。

超过嵌套深度:当事务嵌套深度处于配置的最大可允许值,并且执行TRANSACTION BEGIN指令时,检测到超过嵌套深度条件。以是13的事务中止码中止事务,并且将条件码设置为3。

高速缓存取回相关条件:由CPU的高速缓存电路检测到与事务取回的存储位置相关的条件。以是14的事务中止码中止事务,并且将条件码设置为2或3。

高速缓存存储相关条件:由CPU的高速缓存电路检测到与事务存储的存储位置相关的条件。以是15的事务中止码中止事务,并且将条件码设置为2或3。

高速缓存其它条件:由CPU的高速缓存电路检测到高速缓存其它条件。以是16的事务中止码中止事务,并且将条件码设置为2或3。

在事务执行期间,如果CPU使用映射到相同绝对地址的不同逻辑地址访问指令或存储操作数,则是否中止事务与模型相关。如果由于使用映射到相同绝对地址的不同逻辑地址的访问而中止事务,则设置中止码14、15或16,具体取决于条件。

CTEND负操作数条件:当执行CONDITIONAL TRANSACTION END指令,并且第二操作数的内容为负时,识别到CTEND负操作数条件。以是17的事务中止码中止事务,并且将条件码设置为3。

CTEND超时条件:当CONDITIONAL TRANSACTION END指令的执行超过模型相关限制时,识别到CTEND超时条件。将条件中止码设置为18,并且将条件码设置为2。

其它条件:其它条件是由CPU识别到的导致事务中止的其它任何条件。将事务中止码设置为255,并且将条件码设置为2或3。

当在相同机器(例如,逻辑分区或虚拟机)中执行多个配置时,事务可能由于不同配置中发生的外部机器检查或I/O中断而中止。

尽管上面提供了实例,但可以提供具有对应中止码和条件码的事务中止的其它原因。例如,原因可以是重新启动中断,其中将事务中止码设置为1,并且将事务中止PSW中的条件码设置为2。作为重新启动处理的一部分,事务中止PSW被存储为重新启动旧PSW。作为进一步实例,原因可以是监控调用条件,其中将中止码设置为3,并且将事务中止PSW中的条件码设置为3。其它或不同的实例也是可能的。注意事项:

1.其它条件可以由以下任何一项产生:

·由配置中的另一个CPU执行的指令,例如,在z/Architecture中,COMPARE AND REPLACE DAT TABLE ENTRY、COMPARE AND SWAP AND PURGE、INVALIDATE DATTABLE ENTRY、INVALIDATE PAGE TABLE ENTRY、PERFORM FRAME MANAGEMENT FUNCTION(其中NQ控件为0,并且SK控件为1)、SET STORAGE KEY EXTENDED(其中NQ控件为0);将条件码设置为2。

·在CPU上执行运算符函数,例如重置、重新启动或停止,或者等效的SIGNAL PROCESSOR(信号处理器)命令。将条件码设置为2。

·上面未枚举的任何其它条件;将条件码设置为2或3。

2.检测到取回和存储冲突的位置可以是同一高速缓存行中的任何位置。

3.在特定条件下,CPU不能区分类似的中止条件。例如,取回或存储溢出可能无法与相应的取回或存储冲突区分开。

4.CPU对多个指令路径的推测执行可能导致由于冲突或溢出条件而中止事务,即使这种条件不在概念序列中发生。当处于受约束事务执行模式时,CPU可能临时禁止推测执行,从而允许事务尝试在不以推测方式检测这种冲突或溢出的情况下完成。

执行TRANSACTION ABORT指令导致事务中止。从第二操作数地址设置事务中止码。将条件码设置为2或3,分别具体取决于第二操作数地址的位63是0还是1。

如在此所述,事务工具用于无约束事务(以及受约束事务)和与其关联的处理,包括但不限于事务结束和条件事务结束(假设了安装条件事务工具)。下面描述关于其中每个方面的进一步细节。

在一个实施例中,无约束事务的处理包括:

*·如果TND=0:

ο如果B1≠0,则从第一操作数地址设置事务诊断块地址。

ο事务中止PSW设置为下一顺序指令地址。

ο由I2字段指定的通用寄存器对保存在模型相关位置中。

-不可由程序直接访问

·计算有效的PIFC、A&F控件

ο有效的A=TBEGIN A&任何外部A

ο有效的F=TBEGIN F&任何外部F

ο有效的PIFC=max(TBEGIN PIFC,任何外部PIFC)

·事务嵌套深度(TND)递增

·如果TND从0转变为1,则CPU进入事务执行模式

·条件码设置为0

ο当TBEGIN后面的指令接收控件时:

-由CC0指示TBEGIN成功

-由非0CC指示中止的事务

·异常:

ο如果超过嵌套深度,则出现中止码13

ο如果B1字段为非0,则出现访问异常(各种PIC之一),并且不能访问存储操作数以便进行存储操作

ο如果TBEGIN指令是执行型指令的目标,则出现执行异常(PIC 0003)

ο如果未安装事务执行工具,则出现操作异常(PIC 0001)

ο如果发生以下任何一种情况,则出现PIC 0006

-PIFC无效(为3的值)

-第二操作数地址未进行双字对齐

ο如果事务执行控件(CR0.8)为0,则出现PIC 0013十六进制

ο如果在受约束TX模式下发出,则出现PIC 0018十六进制

如上所述,可以通过TRANSACTION END(TEND)指令结束无约束(或受约束事务)。在此描述关于事务结束(TEND)指令的处理的进一步细节。

首先,基于获得(例如,取回、接收等)TEND指令的处理器,执行各种异常检查,并且如果存在异常,则处置异常。例如,如果TRANSACTION END是执行型指令的目标,则抑制操作并且识别到执行异常;以及如果事务执行控件(CR0的位8)为0,则识别到特殊操作异常并且抑制操作。更进一步,如果未在配置中安装事务执行工具,则识别到操作异常并且抑制操作。

但是,如果未识别到执行异常,则事务嵌套深度递减(例如,减1)。判定事务嵌套深度在递减之后是否为0。如果事务嵌套深度为0,则提交由该事务进行的所有存储访问。进一步,CPU离开事务执行模式,并且指令完成。

如果事务嵌套深度不等于0,则仅完成TRANSACTION END指令。

如果在操作开始时CPU处于事务执行模式,则将条件码设置为0;否则,将条件码设置为2。

注意,有效的允许浮点运算(F)控件、允许AR修改(A)控件和程序中断过滤控件(PIFC)被重置为它们在结束启动级别的TRANSACTION BEGIN指令之前的相应值。进一步,在操作完成时执行序列化功能。

在完成最外层TRANSACTION END指令时识别到的PER指令取回和事务结束事件不会导致事务中止。

在进一步实施例中,如果安装了条件事务结束工具,则除了TRANSACTION END指令之外,存在CONDITIONAL TRANSACTION END指令。CONDITIONAL TRANSACTION END(CTEND)指令是专用指令,其允许在无约束事务执行模式下执行的程序检查由另一个CPU和/或I/O子系统修改的存储位置,并且基于检查采取动作。例如,基于所检查的数据,可以结束、中止事务执行,或者可以延迟用于结束/中止的决策,例如直到发生预定义事件,例如满足与选定时间间隔的预定义关系(例如,超过该时间间隔)或者所检查的数据变成预先指定值,如下面进一步描述的那样。进一步,可以使用额外或其它事件结束延迟,例如变成未决的中断或其它事件。

参考图8描述CONDITIONAL TRANSACTION END指令的一个实施例。作为一个实例,CONDITIONAL TRANSACTION END指令800包括:多个操作码字段802a、802b,其指定指明条件事务结束操作的操作码;屏蔽字段(M1)804;索引字段(X2)806;基址字段(B2)808;第一位移字段(DL2)字段810;以及第二位移字段(DH2)字段812。将由X2和B2字段指定的通用寄存器的内容添加到串接的DH2和DL2字段的内容以便形成第二操作数的地址(即,包括第二操作数的存储位置的地址)。当X2或B2字段之一或全部为0时,对应的寄存器不参与添加。

在操作中,当执行CTEND指令时,发生以下情况:当CPU处于无约束事务执行模式并且在指令开始时事务嵌套深度为1时,检查双字第二操作数。第二操作数作为64位带符号二进制整数被处理,并且后续执行依赖于操作数的内容,如下所示:

●当第二操作数为负时,通过中止码17(CTEND中止)中止事务执行,并且将事务中止PSW中的条件码设置为3。

●当第二操作数为0时,结束事务。提交由该事务进行的所有存储访问,将事务嵌套深度设置为0,CPU离开事务执行模式,并且通过设置条件码0完成指令。

●当第二操作数为正时,延迟指令的完成直到(a)操作数变成负或0,在这种情况下,指令执行如上所述,或者(b)不超过模型相关间隔(例如,超过1毫秒)。

●如果超过模型相关间隔,则通过中止码18中止事务执行,并且将事务中止PSW中的条件码设置为2。如果在CPU延迟时中断变成未决,则使指令无效,并且处理中断。

●出于存储访问排序和块并发性的目的,当第二操作数为正时,不认为它被取回。但是,当操作数为负或0时,CTEND看似执行单个操作数取回。进一步,针对操作数识别到访问异常,不管操作数的符号为何。

在以下条件下,CONDITIONAL TRANSACTION END是受限指令:

●在受约束事务执行模式下执行指令。在这种情况下,可以识别到事务约束程序异常条件。

●在无约束事务执行模式下执行指令,并且在指令开始时事务嵌套深度大于1。在这种情况下,由于受限指令中止条件(中止码11)而中止事务执行。

当在指令开始时CPU未处于事务执行模式时,以下内容适用:

●针对第二操作数位置识别到访问异常还是PER零地址检测事件与模型相关。

●如果未针对第二操作数位置识别到访问异常,则通过设置条件码2完成指令。

在操作完成时执行序列化功能。

M1字段被忽略,但应该包含0;否则,将来程序可能无法兼容运行。

特殊条件

如果指令是执行型指令的目标,则识别到执行异常并且抑制操作。

如果事务执行控件(控制寄存器0的位8)为0,则识别到特殊操作异常并且抑制操作。

如果第二操作数未在双字边界上,则识别到规格异常并且抑制操作。当在指令开始时CPU未处于事务执行模式时,是否识别到该条件与模型相关。

结果条件码:

0 事务结束

1 不适用

2 CPU未处于事务执行模式

3 不适用

程序异常:

●访问(取回,第二操作数)

●执行

●操作(如果未安装条件事务结束工具)

●特殊操作

●规格

●事务约束

在一个实例中,指令的执行优先级如下所示:

1.-7.D异常,其优先级与一般情况的程序中断条件的优先级相同。

7.E中止码11(受限指令),如果事务嵌套深度大于1。

8.A规格异常(第二操作数未在双字边界上)*。

8.B访问异常(第二操作数位置)*。

9条件码2(事务嵌套深度为0)。

10中止码17(事务嵌套深度为1,第二操作数为负)。

11条件码0(事务嵌套深度为1,第二操作数为0)。

12中止码18(事务嵌套深度为1,在模型相关时间限制内第二操作数保持为正)。

*当事务嵌套深度为0时(即,当CPU未处于事务执行模式时),是否识别到该条件与模型相关。

编程备注:

1.尽管指令未直接将条件码设置为3,但如果中止事务执行,则通过后续事务中止处理将事务中止PSW中的条件码设置为3。

2.如由执行CTEND的CPU观察到的那样,没有由其它CPU对第二操作数位置进行的更改的有保证排序。例如,假设(a)CPU处于事务执行模式,(b)双字位置(DW)最初包含正值,并且(c)执行CTEND,从而指定DW作为其第二操作数位置。如果一个或多个其它CPU将负值、0和正值存储到双字,则不可预测CTEND将中止、通过条件码0完成,还是继续延迟。

3.取决于模型,当另一个CPU尝试修改CTEND存储操作数时,如果CTEND存储操作数与在事务中访问的其它数据在同一高速缓存行中,则CPU可以中止事务。因此,不应该将正常事务数据与CTEND存储操作数放在同一高速缓存行中。

参考图9-10描述关于CONDITIONAL TRANSACTION END指令的执行的进一步细节。参考图9,首先,处理器获得(例如,取回、接收、被提供或者以其它方式获得)CONDITIONAL TRANSACTION END指令(步骤900)。处理器然后执行指令(步骤902)。如在此描述的,在执行期间,从由指令指定的存储位置取回第二操作数并且检查。指令的后续执行取决于该操作数的内容。例如,如果第二操作数为负值,则中止事务并且在事务中止PSW中将条件码例如设置为3。进一步,如果第二操作数为0,则结束指令、提交存储访问、将事务嵌套深度设置为0、将条件码设置为0、以及处理器离开事务模式。进一步,如果第二参数具有正值,则延迟指令的完成,例如直到发生预定义事件。

参考图10描述有关由处理器执行的CONDITIONAL TRANSACTION END指令的进一步方面。在一个实例中,当执行CONDITIONAL TRANSACTION END指令时,判定事务执行工具是否可用(查询1000)。例如,如果将控制寄存器(CR)0的位8设置为0,则工具不可用,并且出现异常(例如,特殊操作异常)(步骤1002)。但是,如果控制寄存器0的位8不等于0,则事务执行工具可用,并且进一步判定执行指令的处理器(例如,CPU)是否处于事务执行模式(查询1004)。如果处理器未处于事务执行模式,如由事务嵌套深度(TND)等于0指示的那样,则将条件码例如设置为2并且指令结束(步骤1006)。但是,如果事务嵌套深度大于0,其指示处理器处于事务执行模式,则判定执行指令的处理器是否处于无约束事务执行模式(查询1008)。如果否,则出现异常,例如在一个实例中为事务约束程序中断(步骤1010)。

如果处理器处于无约束事务执行模式,则判定在指令开始时事务嵌套深度是否等于1(查询1012)。如果事务嵌套深度大于1,则出现异常,其在一个实例中指示受限指令:中止码11(步骤1014)。但是,如果CPU处于无约束事务执行模式,并且在指令开始时事务嵌套深度为1,则取回第二操作数(步骤1016)。在一个实例中,第二操作数作为64位带符号二进制整数被处理,并且CONDITIONAL TRANSACTION END指令的后续执行取决于第二操作数的内容。例如,如果第二操作数的值为负值(查询1018),则例如通过中止码17中止事务执行,并且将事务中止程序状态字(PSW)中的条件码例如设置为3(步骤1020)。在这种情况下,事务存储数据被丢弃。

但是,如果第二操作数的值为0(查询1018),则结束事务、提交由事务进行的所有存储访问、将事务嵌套深度设置为0、处理器离开事务执行模式、以及通过将条件码例如设置为0完成指令(步骤1022)。

返回到查询1018,如果第二操作数的值为正值,则延迟指令的完成,例如直到发生预定义事件,例如操作数变成负或0(在这种情况下指令执行如上所述),或者超过模型相关间隔。在一个实例中,当处于延迟时,中断可能变成未决。因此,在一个实例中,处理继续判定处理器的中断是否未决(查询1024)。如果中断未决,则中止事务并且处理该中断(步骤1026)。但是,如果中断未未决,则判定是否超过模型相关间隔(例如,未超过1毫秒)(查询1028)。如果超过模型相关间隔,则例如通过例如中止码18(CTEND超时)中止事务执行,并且将事务中止PSW中的条件码例如设置为2(可以重试事务)(步骤1030)。在另一个实施例中,将中止码例如设置为255(其它),并且将事务中止PSW中的条件码例如设置为3(不重试)。其它中止码和条件码是可能的。

如果没有模型相关超时,则处理继续重新取回第二操作数(步骤1016),并且检查第二操作数(查询1018)。如可以看到的那样,作为实例,延迟继续例如直到第二操作数变成负值、第二操作数变成0、中断变成未决,或者存在模型相关超时。这决定CTEND指令的处理。

出于存储访问排序和块并发性的目的,当第二操作数为正时,不认为它被取回。但是,针对操作数识别到访问异常,不管操作数的符号为何。

尽管在上面实例中,模型相关间隔是时间间隔,但在其它实例中,它可以不同于时间间隔,例如指令数或其它类型的间隔。进一步,尽管查询是否超过间隔,但在进一步实施例中,可以使用其它运算,例如等于、小于等。许多变型是可能的。

上面详细描述了CONDITIONAL TRANSACTION END指令,其允许以无约束事务执行模式执行的程序检查由另一个CPU或I/O子系统修改的存储位置,并且基于所检查的数据,可以结束、中止事务执行,或者可以暂时延迟用于结束/中止的决策。CONDITIONAL TRANSACTION END指令属于其一部分的条件事务结束工具提供一种机制,通过该机制,一个CPU上的事务执行可以受由另一个CPU或I/O子系统进行的存储的影响,而不会导致由于存储冲突而中止事务。

在一个方面,提供指令(例如,CTEND),当该指令执行时,针对带符号值连续测试由指令指定的存储操作数(例如,第二操作数)。基于带符号值具有第一值(例如,负值),中止事务并且丢弃事务存储数据。进一步,基于带符号值具有第二值(例如,0),结束事务并且将事务存储数据存储到存储器。更进一步,基于带符号值具有第三值(例如,正值),延迟事务的中止或结束直到发生预定义动作,例如带符号值变成第一值或第二值,或者满足与模型相关间隔的预定义关系(例如,超过该时间间隔)。其它预定义动作也是可能的。

在一个实施例中,CTEND指令基于对在处理器与I/O子系统之间共享的存储位置的检查,有条件地结束事务,其它处理器可能以事务方式也可能不以事务方式执行。通常,到由处于事务执行模式的CPU检查的存储位置的存储将导致中止事务;但是,CTEND不同,因为它不会导致由于冲突而识别到中止。

在进一步实施例中,当由指令取回的第二操作数为正值时,它可以用于提供预计延迟持续时间的指示。例如,CPU 1可能正在执行CTEND,等待CPU 2完成其序列化处理。CPU 2可能重复地向CPU 1的CTEND第二操作数位置中存储,指示其预计延迟(例如,将在5微秒内完成,4、3、2、1…微秒内完成)。如果CPU 1看到CPU 2不会及时地完成,则它可能立即结束CTEND而不等待。其它实例和/或变型是可能的。

在一个或多个方面,提供一种条件指令结束工具,其可用于或者可不用于事务处理。该工具例如包括单个指令,该单个指令可以在完成中延迟直到指令的操作数到达特定值。在一个实例中,操作数由指令显式定义,并且在另一个实施例中,操作数被暗示。参考图11A-11C描述与条件指令结束工具关联的逻辑的一个实施例。

首先参考图11A,处理器获得(例如,接收、被提供或者以其它方式获得)机器指令(步骤1100),机器指令包括用于指定条件指令结束操作的操作码(1102),并且在该实例中,包括用于提供操作数的一个或多个字段(1104)。在一个实施例中,一个或多个字段提供操作数在存储器中的位置。例如,一个或多个字段可以包括索引字段、基址字段、第一位移字段和第二位移字段,并且将由索引字段和基址字段中的一个或多个字段指定的寄存器的内容添加到串接的第二位移字段和第一位移字段以便提供操作数的位置。

处理器然后执行机器指令(步骤1110)。在一个实施例中,参考图11B,执行包括获得操作数(例如,从位置取回操作数)(步骤1120)。判定操作数是否与值具有预定关系(查询1122)。在一个实施例中,预定关系包括相等并且所述值等于0。但是,可以使用其它关系和/或值。基于操作数与值具有预定关系(例如,操作数=0),则由处理器完成指令的执行(步骤1124)。

但是,基于操作数与值没有预定关系(查询1122),则延迟指令的完成(步骤1126)。因此,重新获得操作数(步骤1120),并且处理继续检查值。即,在该实施例中,指令循环直到所述操作数被设置为所述值。

参考图11C描述另一实施例。在该实施例中,处理器获得操作数(例如,从存储器取回操作数)(步骤1150),并且判定操作数是否与值(例如,0)具有预定关系(例如,相等)(查询1152)。如果操作数与值具有预定关系,则完成指令的执行(步骤1154)。在一个实例中,将条件码设置为0。在另一实施例中,指令是事务的一部分或者与事务关联,并且完成指令也结束事务。在结束事务中,在一个特定实施例中,提交由事务进行的存储访问、将事务嵌套深度设置为0、处理器退出事务执行模式、以及将条件码设置为0。

返回到查询1152,如果操作数与值没有预定关系,则在一个实施例中,进一步判定操作数是否与值具有另一种关系(查询1156)。例如,判定操作数是否大于0。如果操作数大于0,则延迟指令的完成(步骤1158),并且处理继续重新取回操作数(步骤1150)。在其中指令是事务的一部分或者与事务关联的一个特定实施例中,延迟指令的完成也延迟事务的完成。

返回到查询1156,如果例如操作数小于0(即,它与值没有预定关系或另一种关系),则提前结束指令(步骤1160)。在其中指令是事务的一部分或者与事务关联的一个实施例中,中止事务,并且在一个实例中,将事务中止程序状态字(PSW)中的条件码设置为定义值。

尽管上面描述各种实施例,但一个或多个方面可以涉及可能包括也可能不包括事务处理的其它实施例。例如,锁定指令或工具可以包括在此描述的一个或多个方面。存在许多其它可能性。

如在此使用的,存储装置、中央存储装置、主存储装置、存储器和主存储器可以交换使用,除非通过使用隐式或显式地另有说明。

参考图12,在一个实例中,计算机程序产品1200例如包括一个或多个非瞬时性计算机可读存储介质1202,其用于将计算机可读程序代码装置、逻辑和/或指令1204存储在其上以便提供和促进一个或多个实施例。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

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

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

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

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

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

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

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

除了上述之外,可以由供应客户环境的管理的服务提供商提供、供应、部署、管理、服务一个或多个方面等。例如,服务提供商可以建立、维护、支持计算机代码和/或执行用于一个或多个客户的一个或多个方面的计算机基础结构等。作为实例,作为回报,服务提供商可以在订阅和/或收费协议下从客户收取付款。此外或备选地,服务提供商可以从广告内容销售至一个或多个第三方而收取付款。

在一个方面,可以部署应用以便执行一个或多个实施例。作为一个实例,应用的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。

作为进一步方面,可以部署计算基础结构,包括将计算机可读代码集成到计算系统中,其中代码结合计算系统能够执行一个或多个实施例。

作为更进一步方面,可以提供一种用于集成计算基础结构的过程,其包括将计算机可读代码集成到计算机系统中。计算机系统包括计算机可读介质,其中计算机介质包括一个或多个实施例。代码结合计算机系统能够执行一个或多个实施例。

尽管上面描述各种实施例,但其仅为实例。例如,其它架构的计算环境可以用于结合以及使用一个或多个实施例。进一步,可以使用不同指令、指令格式、指令字段和/或指令值。更进一步,尽管提供用于中止码和条件码的值的实例,但可以使用其它值。此外,可以提供/使用不同、其它和/或额外限制/约束。更进一步,可以以不同方式提供和/或使用其它间隔。许多变型是可能的。

进一步,其它类型的计算环境可以有益并且被使用。作为实例,适合于存储和/或执行程序代码的数据处理系统为可使用的,其包括直接或通过系统总线间接耦合到存储元件的至少两个处理器。存储元件例如包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置和高速缓冲存储器,所述存储元件对至少某程序代码提供临时存储以便减少在执行期间必须从大容量存储装置检索代码的次数。

输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器(thumb drive)和其它存储介质等)可以直接或通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统以使得数据处理系统能够通过中间专用或公共网络耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网络卡仅为可用类型的网络适配器中的少数几种。

参考图13,描绘实现一个或多个实施例的主计算机系统5000的代表性组件。代表性主计算机5000包括与计算机存储器(即,中央存储装置)5002通信的一个或多个CPU 5001,以及到存储介质设备5011和网络5010以用于与其它计算机或SAN等通信的I/O接口。CPU 5001与具有架构指令集和架构功能的架构兼容。CPU 5001可以具有存取寄存器转换(ART)5012,其包括ART后备缓冲器(ALB)5013,用于选择要由用于将存储器的程序地址(虚拟地址)转换为实地址的动态地址转换(DAT)5003使用的地址空间。DAT通常包括用于缓存转换的转换后备缓冲器(TLB)5007,以使得稍后对计算机存储器5002的块的访问不需要地址转换的延迟。通常,在计算机存储器5002与处理器5001之间采用高速缓存5009。高速缓存5009可以为具有对一个以上CPU可用的大型高速缓存以及在大型高速缓存与每个CPU之间具有更小更快(更低级别)高速缓存的分层结构。在某些实现中,分离更低级别的高速缓存以便提供用于指令取回和数据访问的独立低级别高速缓存。在一个实施例中,对于TX工具,事务诊断块(TDB)5100以及一个或多个缓冲器5101可以被存储在高速缓存5009和存储器5002的一个或多个中。在一个实例中,在TX模式下,数据最初被存储在TX缓冲器中,并且当TX模式结束(例如,最外层TEND)时,缓冲器中的数据被存储(提交)到存储器,或者如果存在中止,则缓冲器中的数据被丢弃。

在一个实施例中,由指令取回单元5004经由高速缓存5009从存储器5002取回指令。指令在指令解码单元5006中进行解码,并且分派(在某些实施例中,与其它指令一起)到一个或多个指令执行单元5008。通常,采用数个执行单元5008,例如算术执行单元、浮点执行单元和分支指令执行单元。进一步,在TX工具的一个实施例中,可以采用各种TX控件5110。由执行单元执行指令,从而根据需要从指令指定的寄存器或存储器访问操作数。如果从存储器5002访问(加载或存储)操作数,则加载/存储单元5005通常在被执行指令的控制下处理访问。可以在硬件电路或内部微代码(固件)中执行指令,或者由这两者的组合执行指令。

根据TX工具的一个方面,处理器5001还包括PSW 5102(例如,TX和/或中止PSW)、嵌套深度5104、TDBA 5106以及一个或多个控制寄存器5108。

需注意的是,计算机系统包括本地(或主)存储装置中的信息,以及寻址、保护以及引用和改变记录。寻址的一些方面包括地址格式、地址空间的概念、地址的各种类型和其中一种类型的地址被转换为另一种类型的地址的方式。一些主存储装置包括永久分配的存储位置。主存储装置向系统提供直接可被寻址的快速访问的数据存储。数据和程序在可以被处理之前都将(从输入设备)被加载到主存储装置。

主存储装置可以包括一个或多个更小、更快速访问的缓冲存储装置,有时被称为高速缓存。高速缓存通常与CPU或I/O处理器物理地关联。物理结构以及不同存储介质的使用的效果,除了在性能上,通常不会被程序观察到。

可以维护用于指令和数据操作数的单独的高速缓存。高速缓存中的信息被维护为相邻的字节,所述字节位于被称为高速缓存块或高速缓存行(或简称为行)的整数边界上。模型可以提供EXTRACT CACHE ATTRIBUTE指令,其返回高速缓存行的字节大小。模型也可以提供PREFETCH DATA和PREFETCH DATA RELATIVE LONG指令,其实现存储到数据或指令高速缓存中的预取,或者数据从高速缓存的释放。

将存储装置视为位的长水平字串。对于多数操作,对存储装置的存取以从左至右的顺序进行。将位字串再分为八个位的单元。八位单元被称为字节,其为所有信息格式的基础构建块。通过唯一非负整数识别存储装置中的每一字节位置,其为该字节位置的地址或简单地为字节地址。相邻字节位置具有连续地址,在左侧自0开始且以从左至右的顺序进行。地址为无符号的二进制整数且为24个、31个或64个位。

信息在存储装置与CPU或通道子系统之间传输,一次一个字节或一组字节。除非另有指定,否则在(例如)z/Architecture中,存储装置中的一组字节由该组的最左字节寻址。该组中的字节的数目由待执行的操作隐含或显式地指定。当用于CPU操作中时,一组字节被称为字段。在每一组字节内,在(例如)z/Architecture中,位以从左至右的顺序编号。在z/Architecture中,最左位有时被称作“高阶”位,并且最右位被称为“低阶”位。然而,位编号并非存储地址,仅可寻址字节。为对存储装置中的字节的个体位进行操作,存取整个字节。字节中的位从左至右(在例如z/Architecture中)被编号为0至7。针对24位地址,地址中的位可被编号为8至31或40至63,或针对31位地址,其被编号为1至31或33至63;针对64位地址,所述位被编号为0至63。在一个实例中,位8至31及1至31适用于处于为32个位宽的一位置(例如,寄存器)中的地址,而位40至63及33至63适用于处于64位宽位置中的地址。在多个字节的任何其他固定长度格式内,构成该格式的位自0开始连续编号。出于错误检测的目的且优选地用于校正,一个或多个校验位可随每一字节或随一组字节传输。这些校验位由机器自动产生且不可由程序直接控制。存储容量以字节数表达。当存储装置-操作数字段的长度通过指令的操作码暗示时,字段被称为具有固定长度,其可为一个、两个、四个、八个或十六个字节。可针对一些指令暗示较大字段。当不暗示而是显式声明存储装置-操作数字段的长度时,字段被称为具有可变长度。可变长度操作数的长度可变化一个字节的增量(或对于一些指令,以两个字节的倍数或其他倍数变化)。当将信息放置于存储装置中时,替换仅包括在指定字段中的那些字节位置的内容,即使至存储装置的物理路径的宽度可大于所存储的字段的长度。

某些信息单元将在存储装置中的整体边界上。当信息单元的存储地址为以字节为单位的单元长度的倍数时,对于该信息单元,边界被称为整体的。为整体边界上的2、4、8 16及32字节的字段给出特殊名称。半字(halfword)为二字节边界上的两个连续字节的组且为指令的基础构建块。字(word)为在四字节边界上的四个连续字节的组。双字(doubleword)为在八字节边界上的八个连续字节的组。四倍字(quadword)为在16字节边界上的16个连续字节的组。八倍字(octoword)为在32字节边界上的32个连续字节的组。当存储地址指定半字、字、双字、四倍字及八倍字时,地址的二进制表示分别含有一个、两个、三个、四个或五个最右0位。指令将在二字节整体边界上。多数指令的存储操作数不具有边界对准要求。

在针对指令及数据操作数实施独立高速缓存的设备上,无论存储是否更改随后取回的指令,如果程序存储至随后取回指令的高速缓存线中,则可能经历显著延迟。

在一个实例中,可通过软件(有时被称作许可内码、固件、微码、毫码或微微码及类似者,以上中的任一者将与一个或多个实施例相一致)实施该实施例。参考图13,体现一个或多个方面的软件程序代码可由主机系统5000的处理器5001自长期存储介质设备5011(诸如CD-ROM驱动器或磁带驱动器或硬盘驱动器)存取。软件程序代码可体现于多种已知介质中的任一者上以与数据处理系统(诸如,磁盘、硬盘驱动器或CD-ROM)使用。代码可分布于此类介质上,或可自计算机存储器5002或一个计算机系统的存储装置经由至其他计算机系统的网络5010分发给用户,以供此类其他系统的用户使用。

软件程序代码包括操作系统,其控制各种计算机组件及一个或多个应用程序的功能及交互。在程序代码可用于由处理器5001进行处理的情况下,通常自存储介质设备5011将程序代码分页至相对较高速度的计算机存储装置5002。在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件程序代码的技术及方法是公知的且本文将不对其进行进一步论述。在被创建及存储于有形介质(包括(但不限于)电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带及其类似者)上时,程序代码常被称作“计算机程序产品”。计算机程序产品介质通常可由优选地在计算机系统中的处理电路读取以供处理电路执行。

图14示出其中可实施一个或多个实施例的代表性工作站或服务器硬件系统。图14的系统5020包括代表性基本计算机系统5021,诸如个人计算机、工作站或服务器,包括可选的周边设备。基本计算机系统5021包括一个或多个处理器5026及用于根据已知技术连接系统5021的处理器5026与其他组件及启用其间的通信的总线。总线将处理器5026连接至存储器5025及长期存储装置5027,其可(例如)包括硬盘驱动器(包括(例如)磁介质、CD、DVD及闪存中的任一者)或磁带驱动器。系统5021亦可包括用户接口适配器,其经由总线将微处理器5026连接至一个或多个接口设备(诸如键盘5024、鼠标5023、打印机/扫描仪5030,和/或其他接口设备),所述一个或多个接口设备可为任何用户接口设备,诸如触敏式屏幕、数字化输入板(entry pad)等。总线亦经由显示器适配器将显示设备5022(诸如LCD屏幕或监视器)连接至微处理器5026。

系统5021可借助能够与网络5029通信的网络适配器与其他计算机或计算机的网络通信5028。实例网络适配器为通信通道、令牌环、以太网或调制解调器。备选地,系统5021可使用诸如CDPD(蜂窝数字分组数据)卡的无线接口进行通信。系统5021可与局域网(LAN)或广域网(WAN)中的此类其他计算机相关联,或系统5021可为与另一计算机的客户机/服务器配置中的客户机等。所有这些配置以及适当通信硬件及软件在本领域中是公知的。

图15示出其中可实施一个或多个实施例的数据处理网络5040。数据处理网络5040可包括多个个体网络,诸如无线网络及有线网络,以上中的每一者可包括多个个体工作站5041、5042、5043、5044。另外,如本领域技术人员将了解的,可包括一个或多个LAN,其中LAN可包括耦合至主机处理器的多个智能工作站。

仍参考图15,网络亦可包括大型计算机或服务器,诸如,网关计算机(客户机服务器5046)或应用服务器(可存取数据存储库且亦可直接自工作站5045存取的远程服务器5048)。网关计算机5046充当至每一个体网络的进入点。在将一个网络连接协议连接至另一者时,需要网关。网关5046可借助通信链路优选地耦接至另一网络(例如,因特网5047)。网关5046亦可使用通信链路直接耦接至一个或多个工作站5041、5042、5043、5044。可以利用可从国际商业机器公司获得的IBM eServer System z服务器来实现网关计算机。

同时参考图14及图15,可体现一个或多个方面的软件编程码5031可由系统5020的处理器5026自诸如CD-ROM驱动器或硬盘驱动器的长期存储介质5027存取。软件编程码可体现于多种已知介质中的任一者上以与数据处理系统(诸如,磁盘、硬盘驱动器或CD-ROM)使用。所述代码可分布于此类介质上,或可自一个计算机系统的存储器或存储装置经由至其他计算机系统的网络分发给用户,以供此类其他系统的用户使用。

备选地,编程码可体现于存储器5025中且由处理器5026使用处理器总线存取。此类编程码包括操作系统,其控制各种计算机组件及一个或多个应用程序5032的功能及交互。在程序代码可用于由处理器5026进行处理的情况下,通常自存储介质5027将程序代码分页至高速存储器5025。在存储器中、在物理介质上体现软件编程码和/或经由网络分布软件程序代码的技术及方法是公知的且本文将不对其进行进一步论述。在被创建及存储于有形介质(包括(但不限于)电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带及其类似者)上时,程序代码常被称作“计算机程序产品”。计算机程序产品介质通常可由优选地在计算机系统中的处理电路读取以供处理电路执行。

可最容易用于处理器的高速缓存(通常比处理器的其他高速缓存更快及更小)为最低(L1或层级1)的高速缓存且主存储(主存储器)为最高层级高速缓存(如果存在3个层级,则为L3)。最低层级高速缓存常划分为保存待执行的机器指令的指令高速缓存(I-高速缓存)及保存数据操作数的数据高速缓存(D-高速缓存)。

参考图16,描绘处理器5026的例示性处理器实施例。通常,一个或多个层级的高速缓存5053用于缓冲存储器块以便改进处理器性能。高速缓存5053为保存可能将使用的存储器数据的高速缓存线的高速缓冲器。通常,高速缓存线为64个、128个或256个字节的存储器数据。独立高速缓存常用于缓存指令而非用于缓存数据。经常通过本领域中公知的各种“窥探(snoop)”算法提供高速缓存一致性(线的复本在存储器及高速缓存中的同步)。处理器系统的主存储装置5025常被称作高速缓存。在具有4个层级的高速缓存5053的处理器系统中,主存储装置5025有时被称作层级5(L5)高速缓存,这是因为其通常更快且仅保存可用于计算机系统的非易失性存储器(DASD、磁带等)的一部分。主存储装置5025“缓存”由操作系统页入及页出主存储装置5025的数据页面。

程序计数器(指令计数器)5061保持待执行的当前指令的地址追踪。z/Architecture处理器中的程序计数器为64个位且可被截断成31或24个位以支持先前寻址限制。程序计数器通常体现于计算机的PSW(程序状态字)中,以使得其在上下文切换期间持续。因此,正在进行中的具有程序计数器值的程序可由(例如)操作系统(自程序环境至操作系统环境的上下文切换)中断。在程序不活动时,程序的PSW维持程序计数器值,并且在操作系统正在执行中时,使用操作系统的(PSW中的)程序计数器。通常,程序计数器的增量等于当前指令的字节数。RISC(精简指令集计算)指令通常为长度固定的,而CISC(复杂指令集计算)指令通常为长度可变的。IBM z/Architecture的指令为具有2个、4个或6个字节的长度的CISC指令。通过(例如)分支指令的上下文切换操作或分支采取操作来修改程序计数器5061。在上下文切换操作中,将当前程序计数器值连同关于正执行的程序的其他状态信息(诸如条件代码)保存于程序状态字中,并且加载新程序计数器值,该值指向新程序模块的待执行的指令。执行分支采取操作以便通过将分支指令的结果加载至程序计数器5061中而准许程序作出决策或在程序内循环。

通常,指令取回单元5055用于代表处理器5026取回指令。取回单元取回“下一顺序指令”、分支采取指令的目标指令或上下文切换后的程序的第一指令。现代指令取回单元常使用预取回技术以基于可使用预取回指令的可能性来以推测方式预取回指令。举例而言,取回单元可取回16个字节的指令,其包括下一顺序指令及额外字节的其他顺序指令。

接着由处理器5026执行被取回的指令。在一个实施例中,将被取回的指令(多个)传递至取回单元的分派单元5056。分派单元将指令(多个)解码且将关于已解码指令(多个)的信息转发至适当单元5057、5058、5060。执行单元5057通常将自指令取回单元5055接收关于已解码算术指令的信息且将根据指令的操作码对操作数执行算术运算。优选地自存储器5025、架构化寄存器5059或自正被执行的指令的立即字段提供操作数至执行单元5057。在存储时,将执行结果存储于存储器5025、寄存器5059中或存储于其他机器硬件(诸如控制寄存器、PSW寄存器及类似者)中。

使用动态地址转换5062及可选地使用存取寄存器转换5063将虚拟地址转变为实地址。

处理器5026通常具有用于执行指令的功能的一个或多个单元5057、5058、5060。参考图17A,执行单元5057可借助接口连接逻辑5071与架构化通用寄存器5059、解码/分派单元5056、加载存储单元5060及其他处理器单元5065通信5071。执行单元5057可使用数个寄存器电路5067、5068、5069以保存信息,算术逻辑单元(ALU)5066将基于所述信息进行操作。ALU执行诸如加法、减法、乘法及除法的算术运算以及诸如“与”、“或”及“异或(XOR)”、循环及移位的逻辑功能。优选地,ALU支持设计相关的专用运算。其他电路可提供其他架构化工具5072,包括(例如)条件代码及恢复支持逻辑。通常,将ALU运算的结果保存在输出寄存器电路5070中,其可将结果转发至多种其他处理功能。存在处理器单元的许多配置,本描述仅意欲提供对一个实施例的代表性理解。

ADD指令例如在具有算术和逻辑功能的执行单元5057中执行,而浮点指令例如在具有专门浮点能力的浮点执行中执行。优选地,执行单元通过针对操作数执行操作码定义的功能来处理由指令标识的操作数。例如,执行单元5057可以对在由指令的寄存器字段标识的两个寄存器5059中找到的操作数执行ADD指令。

执行单元5057对两个操作数执行算术加法并将结果存储在第三操作数中,其中第三操作数可以是第三寄存器或两个源寄存器之一。执行单元优选地使用算术逻辑单元(ALU)5066,算术逻辑单元(ALU)5066能够执行各种逻辑功能(例如Shift、Rotate、“与”、“或”和“异或”)以及各种代数功能(包括加、减、乘、除中的任一种)。有些ALU 5066设计用于标量运算而有些用于浮点运算。根据体系结构,数据可以是大端(Big Endian)(其中最低有效字节在最高字节地址处)或小端(其中最低有效字节在最低字节地址处)。IBM z/Architecture是大端。根据体系结构,带符号字段可以是符号以及1的补码或2的补码的量值。2的补码数是有利的,因为ALU不需要设计减法功能,原因是采用2的补码的负值或正值在ALU内仅需要加法。数字通常以速记法描述,例如其中一个12位字段定义一个4,096字节块的地址,并且通常被描述为4KB(千字节)块。

参考图17B,通常将用于执行分支指令的分支指令信息发送到分支单元5058,分支单元5058通常采用分支预测算法(例如分支历史表5082)以便在其他条件运算完成之前预测分支的结果。在条件运算完成之前,将取回并推测地执行当前分支指令的目标。当条件运算完成时,根据条件运算的条件以及推测的结果,将完成或丢弃推测地执行的分支指令。典型的分支指令可以测试条件码并分支到目标地址,如果条件码满足分支指令的分支要求,则可以根据若干数值(例如包括在寄存器字段或指令的立即字段中找到的数值)计算目标地址。分支单元5058可以采用具有多个输入寄存器电路5075、5076、5077以及一个输出寄存器电路5080的ALU 5074。分支单元5058可以例如与通用寄存器5059、解码分派单元5056或其他电路5073通信5081。

一组指令的执行可以因各种原因被中断,这些原因例如包括由操作系统发起的上下文切换、导致上下文切换的程序异常或错误、导致上下文切换的I/O中断信号或多个程序的多线程活动(在多线程环境中)。优选地,上下文切换操作将保存有关当前正在执行的程序的状态信息,然后加载有关被调用的其他程序的状态信息。例如,可以将状态信息保存在硬件寄存器或存储器中。状态信息优选地包括指向要执行的下一指令的程序计数器值、条件码、存储器转换信息以及架构寄存器内容。可以由硬件电路、应用程序、操作系统程序或固件代码(微码、微微码或许可内码(LIC))单独或联合实施上下文切换活动。

处理器根据指令定义的方法存取操作数。指令可使用指令的一部分的值提供立即操作数,可提供显式指向通用寄存器或专用寄存器(例如,浮点寄存器)的一个或多个寄存器字段。指令可利用由操作码字段识别为操作数的隐含寄存器。指令可利用操作数的存储器位置。操作数的存储器位置可由寄存器、立即字段或寄存器及立即字段的组合提供,如由以下各者所例示的:z/Architecture长位移工具,其中指令定义基寄存器、索引寄存器及立即字段(位移字段),以上各者加在一起提供(例如)存储器中的操作数的地址。除非另有指示,否则本文中的位置通常暗示主存储器(主存储装置)中的位置。

参考图17C,处理器使用加载/存储单元5060存取存储装置。加载/存储单元5060可通过获得存储器5053中的目标操作数的地址及将所述操作数加载到寄存器5059或另一存储器5053位置中来执行加载操作,或可通过获得存储器5053中的目标操作数的地址及将自寄存器5059或另一存储器5053位置获得的数据存储于存储器5053中的目标操作数位置来执行存储操作。加载/存储单元5060可为推测式的且可以以相对于指令顺序无序的顺序来存取存储器;然而,加载/存储单元5060用于对程序维持按次序执行指令的表象。加载/存储单元5060可与通用寄存器5059、解码/分派单元5056、高速缓存/存储器接口5053或其他组件5083通信5084,并且包括各种寄存器电路5086、5087、5088及5089、ALU 5085及控制逻辑5090以计算存储地址及提供管线定序以保持操作有序。一些操作可为无序的,但加载/存储单元提供功能性以使无序操作对程序表现为已按次序执行,如本领域中公知的那样。

优选地,应用程序“看到”的地址通常被称为虚拟地址。虚拟地址有时被称为“逻辑地址”和“有效地址”。这些地址是虚拟的,因为它们通过各种动态地址转换(DAT)技术之一被重定向到物理存储器位置,这些技术包括但不限于仅使用偏移值向虚拟地址添加前缀、通过一个或多个转换表转换虚拟地址,所述转换表优选地单独或同时包括至少一个段表和页表,优选地,所述段表具有指向页表的表项。在z/Architecture中,提供了包括区域第一表、区域第二表、区域第三表、段表以及可选的页表的转换层次结构。通常通过使用转换后备缓冲器(TLB)提高地址转换的性能,转换后备缓冲器包括将虚拟地址映射到关联的物理存储器位置的表项。当DAT使用转换表来转换虚拟地址时,将创建表项。然后,虚拟地址的后续使用能够使用快速TLB而不是缓慢顺序转换表存取的表项。可以由包括LRU(最近最少使用)在内的各种替换算法管理TLB内容。

如果处理器是多处理器系统的处理器,则每个处理器都有责任保持诸如I/O、高速缓存、TLB以及存储器之类的共享资源互锁以实现一致性。通常,将使用“窥探”技术保持高速缓存一致性。在窥探环境中,每个高速缓存行可以被标记为处于共享状态、独占状态、已更改状态、无效状态等中的任何一种状态以便于共享。

I/O单元5054(图16)提供用于附接至周边设备(包括(例如)磁带、光盘、打印机、显示器及网络)的构件给处理器。I/O单元通常由软件驱动器呈现至计算机程序。在大型计算机(诸如来自的System z)中,通道适配器及开放系统适配器为在操作系统与周边设备之间提供通信的大型计算机的I/O单元。

此外,其他类型的计算环境可受益于一个或多个方面。作为一实例,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括(例如)指令执行、架构化功能(诸如,地址转换)及架构化寄存器)或其子集被仿真(例如,在具有处理器及存储器的本机计算机系统上)。在此类环境中,仿真器的一个或多个仿真功能能够实施一个或多个实施例,即使执行仿真器的计算机可能具有不同于正被仿真的能力的架构也是如此。作为一个实例,在仿真模式中,对特定指令或正被仿真的操作进行解码,并且构建适当仿真功能以实施个体指令或操作。

在一仿真环境中,主计算机包括(例如):存储器,其存储指令及数据;指令取回单元,其自存储器取回指令,并且可选地,提供所取回的指令的本地缓冲;指令解码单元,其接收所取回的指令且判定已取回指令的类型;及指令执行单元,其执行所述指令。执行可包括将数据自存储器加载至寄存器中;将数据自寄存器存储回至存储器;或执行某一类型的算术或逻辑运算(如由解码单元所判定的)。在一个实例中,在软件中实施每一单元。举例而言,由所述单元执行的操作被实施为仿真器软件内的一个或多个子例程。

更具体地说,在大型计算机中,经常由编程人员(通常为当今的“C”编程人员)借助编译器应用使用架构化机器指令。可本机地在z/Architecture 服务器中或替代地在执行其他架构的机器中执行存储于存储介质中的这些指令。这些指令可在现有及在未来大型计算机服务器、及在的其他机器(例如,Power Systems服务器和System x服务器)上进行仿真。可在使用由AMD及其他公司制造的硬件的多种机器上运行Linux的机器中执行这些指令。除了在z/Architecture下的该硬件上执行以外,可使用Linux以及使用由Hercules、UMX或FSI(Fundamental Software公司)的仿真的机器,其中总体上执行处于仿真模式中。在仿真模式中,由本机处理器执行仿真软件以仿真所仿真处理器的架构。

本机处理器通常执行包括固件或本机操作系统的仿真软件,以执行所仿真处理器的仿真。仿真软件负责取回及执行所仿真的处理架构的指令。仿真软件维护所仿真的程序计数器以保持对指令边界的追踪。仿真软件可一次取回一个或多个所仿真的机器指令且将所述一个或多个所仿真的机器指令转换为一组对应的本机机器指令以供本机处理器执行。这些转换后的指令可被缓存,使得可实现更快的转换。尽管如此,仿真软件用于维持所仿真的处理器架构的架构规则以确保被编写以用于所仿真处理器的操作系统及应用正确地进行操作。此外,仿真软件用于提供由所仿真的处理器架构识别的资源,其包括(但不限于)控制寄存器、通用寄存器、浮点寄存器、包括(例如)段表及页表的动态地址转换功能、中断机制、上下文切换机制、当日时间(TOD)时钟及至I/O子系统的架构化接口,使得被设计以在所仿真处理器上运行的操作系统或应用程序能够在具有仿真软件的本机处理器上运行。

对正被仿真的特定指令进行解码且调用子例程以执行个体指令的功能。例如在“C”子例程或驱动程序中或在为特定硬件提供驱动程序的某一其他方法(如在理解优选实施例的描述后将属于本领域技术内)中实施仿真所仿真处理器的功能的仿真软件功能。针对本领域技术人员可获得的目标机器,各种软件及硬件仿真专利及许多其他专利例示了达成对针对不同机器架构化的指令格式的仿真的多种已知方式,所述软件及硬件仿真专利包括(但不限于):Beausoleil等人的标题为“Multiprocessor for Hardware Emulation”的美国专利证书第5,551,013号;及Scalzi等人的标题为“Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor”的美国专利证书第6,009,261号;及Davidian等人的标题为“Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions”的美国专利证书第5,574,873号;及Gorishek等人的标题为“Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System”的美国专利证书第6,308,255号;及Lethin等人的标题为“Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method”的美国专利证书第6,463,582号;及Eric Traut的标题为“Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions”的美国专利证书第5,790,825号,以上中的每一者在此以全文引用的方式并入本文中。

在图18中,提供所仿真主计算机系统5092的一个实例,其仿真主机架构的主计算机系统5000'。在所仿真的主计算机系统5092中,主机处理器(CPU)5091为所仿真的主机处理器(或虚拟主机处理器)且包括仿真处理器5093,其具有不同于主计算机5000'的处理器5091的本机指令设定架构。所仿真的主计算机系统5092具有对仿真处理器5093可存取的存储器5094。在该实例实施例中,存储器5094被分区为主计算机存储器5096部分及仿真例程5097部分。根据主计算机架构,主计算机存储器5096可用于所仿真的主计算机5092的程序。仿真处理器5093执行架构与所仿真处理器5091的架构不同的架构化指令集的本机指令,所述本机指令自仿真例程存储器5097获得,并且所述仿真处理器可通过使用在顺序及存取/解码例程中获得的一个或多个指令来从主计算机存储器5096中的程序存取用于执行的主机指令,所述顺序及存取/解码例程可解码所存取的主机指令(多个)以确定用于仿真所存取主机指令的功能的本机指令执行例程。举例而言,被定义用于主计算机系统5000'架构的其他工具可由架构化工具例程仿真,所述工具包括诸如以下各者的工具:通用寄存器、控制寄存器、动态地址转换及I/O子系统支持及处理器高速缓存。仿真例程亦可利用仿真处理器5093中可获得的功能(诸如通用寄存器及虚拟地址的动态转换)以改进仿真例程的性能。亦可提供专用硬件及卸载引擎以帮助处理器5093仿真主计算机5000'的功能。

在进一步实施例中,一个或多个方面涉及云计算。首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。

云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。

特征包括:

按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。

广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。

资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。

迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。

可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。

服务模型如下:

软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。

平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。

基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其它基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。

部署模型如下:

私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。

共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。

公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。

混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。

云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。

现在参考图19,其中显示了云计算节点的一个例子。图19显示的云计算节点6010仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。

云计算节点6010具有计算机系统/服务器6012,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器6012一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。

计算机系统/服务器6012可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器6012可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

如图19所示,云计算节点6010中的计算机系统/服务器6012以通用计算设备的形式表现。计算机系统/服务器6012的组件可以包括但不限于:一个或者多个处理器或者处理单元6016,系统存储器6028,连接不同系统组件(包括系统存储器6028和处理单元6016)的总线6018。

总线6018表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MCA)总线,增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机系统/服务器6012典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器6012访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器6028可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)6030和/或高速缓存存储器6032。计算机系统/服务器6012可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统6034可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图19中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM、DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线6018相连。存储器6028可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块6042的程序/实用工具6040,可以存储在存储器6028中,这样的程序模块6042包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块6042通常执行本发明所描述的实施例中的功能和/或方法。

计算机系统/服务器6012也可以与一个或多个外部设备6014(例如键盘、指向设备、显示器6024等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器6012交互的设备通信,和/或与使得该计算机系统/服务器6012能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口6022进行。并且,计算机系统/服务器6012还可以通过网络适配器6020与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器6020通过总线6018与计算机系统/服务器6012的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器6012一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

现在参考图20,其中显示了示例性的云计算环境6050。如图所示,云计算环境6050包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点6010,本地计算设备例如可以是个人数字助理(PDA)或移动电话6054A,台式电脑6054B、笔记本电脑6054C和/或汽车计算机系统6054N。云计算节点6010之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点6010进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境6050提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图20显示的各类计算设备6054A-N仅仅是示意性的,云计算节点6010以及云计算环境6050可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。

现在参考图21,其中显示了云计算环境6050(图20)提供的一组功能抽象层。首先应当理解,图21所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图21所示,提供下列层和对应功能:

硬件和软件层6060包括硬件和软件组件。硬件组件的例子包括:主机,例如系统;基于RISC(精简指令集计算机)架构的服务器,例如IBM 系统;IBM 系统;IBM 系统;存储装置;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如IBM 应用服务器软件;数据库软件,例如IBM 数据库软件。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。

虚拟层6062提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户机。

在一个示例中,管理层6064可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。

工作负载层6066提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理。

本文中所用的术语,仅仅是为了描述特定的实施例,而不意图限定本发明。本文中所用的单数形式的“一”和“该”,旨在也包括复数形式,除非上下文中明确地另行指出。还要知道,“包含”和/或“包括”在本说明书中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件,以及/或者它们的组合。

以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对一个或多个实施例的描述其目的在于示意和描述,并非是穷尽性的,也并非是要将本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,显然可以作出许多修改和变型。对实施例的选择和描述,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施例。

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