比较和延迟指令的制作方法

文档序号:11890414阅读:392来源:国知局
比较和延迟指令的制作方法与工艺

一个或多个方面一般地涉及多处理计算环境,并且具体地说,涉及在此类计算环境中控制程序执行。



背景技术:

在诸如对称多处理(SMP)环境之类的多处理计算环境中,SMP环境的多个处理器使用传统同步机制以便在环境中同步执行。这些同步机制包括在共享存储位置中实现的序列化技术,并且可以包括旗号(semaphore)或其它共享存储标志或计数器。为了确保进度,此类机制还可以包括额外代码以便限制等待同步信号花费的时间。这些限制可以包括简单指令计数器、基于时间的机制或其它技术。

诸如同步多线程(SMT)环境之类的其它多处理环境可以使用上面技术或其它技术以便同步执行。



技术实现要素:

通过提供一种用于在计算环境中执行机器指令的计算机程序产品,克服现有技术的缺点并且提供优点。所述计算机程序产品包括计算机可读存储介质,其能够由处理电路读取并且存储指令以便由所述处理电路执行以执行一种方法。所述方法例如包括:由处理器获得机器指令以便执行,所述机器指令根据计算机体系结构被定义用于计算机执行,所述机器指令包括:操作码,其用于指定比较和延迟操作;一个或多个第一字段,其用于获得第一操作数;以及一个或多个第二字段,其用于获得第二操作数;以及由所述处理器执行所述机器指令,所述执行包括:比较所述第一操作数与所述第二操作数以便获得比较结果;判定对应于所述比较结果的屏蔽指示符是否被设置为定义值;以及基于判定对应于所述比较结果的所述屏蔽指示符被设置为所述定义值,延迟所述机器指令的完成直到发生预定义事件。

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

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

附图说明

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

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

图1B示出图1A的处理器的进一步细节;

图2示出计算环境的另一个实例;

图3A示出计算环境的另一个实例;

图3B示出图3A的存储器的进一步细节;

图4A示出比较和延迟(CAD)指令的一个实例;

图4B示出比较和延迟(CADG)指令的另一个实例;

图5A-5B示出与图4A-4B的比较和延迟指令关联的逻辑的一个实施例;

图6A-6C示出与图4A-4B的比较和延迟指令的各个方面关联的处理的另一个实施例;

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

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

图9示出计算机系统的另一实例;

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

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

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

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

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

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

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

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

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

具体实施方式

根据一个方面,提供一种能力以便延迟程序执行直到发生预定义事件,例如存储位置的比较导致真条件、到达超时、使中断变成未决或者存在另一个条件。该能力例如包括延迟工具,其具有用于延迟执行的一个或多个比较和延迟机器指令。

参考图1A描述引入和使用延迟工具的一个或多个方面的计算环境的一个实施例。计算环境100例如包括处理器102(例如,中央处理单元)、存储器104(例如,主存储器),以及一个或多个输入/输出(I/O)设备和/或接口106,它们例如经由一个或多个总线108和/或其它连接耦合到彼此。

在一个实例中,处理器102基于由国际商业机器公司提供的z/Architecture,并且是诸如System z服务器之类的服务器的一部分,System z服务器也由国际商业机器公司提供并且实现z/Architecture。在标题为“z/Architecture Principles of Operation”(z/Architecture操作原理)的出版物(第SA22-7832-09号出版物第10版,2012年9月,在此全部引入作为参考)中描述了z/Architecture的一个实施例。在一个实例中,处理器执行诸如z/OS之类的操作系统,z/OS也由国际商业机器公司提供。和(以及下面引用的)是位于美国纽约阿蒙克的国际商业机器公司的注册商标。在此使用的其它名称可以是国际商业机器公司或其它公司的注册商标、商标或产品名称。

在另一实施例中,处理器102基于由国际商业机器公司提供的Power Architecture。在“Power ISATM版本2.06修订版B”(国际商业机器公司,2010年7月23日,在此全部引入作为参考)中描述了Power Architecture的一个实施例。POWER是位于纽约阿蒙克的国际商业机器公司的注册商标。

在再一实施例中,处理器102基于由英特尔公司提供的Intel架构。在“64和IA-32架构开发人员手册:卷2B,指令集引用A-L”(序号253666-045US,2013年1月)和“64和IA-32架构开发人员手册:卷2B,指令集引用M-Z”(序号253667-045US,2013年1月)(其中的每一个在此全部引入作为参考)中描述了Intel架构的一个实施例。是位于加利福尼亚圣克拉拉的英特尔公司的注册商标。

处理器102包括用于执行指令的多个功能组件。如图1B中所示,这些功能组件例如包括:指令取回组件120,其用于取回要执行的指令;指令解码单元122,其用于对所取回的指令解码并且获得所解码的指令的操作数;指令执行组件124,其用于执行所解码的指令;存储器访问组件126,其用于访问存储器以便指令执行(如果需要);以及回写组件130,其用于提供所执行的指令的结果。根据一个方面,这些组件的一个或多个可以通过包括延迟组件136的至少一部分或者具有对延迟组件136的访问而提供延迟功能。下面进一步详细地描述该功能。

在一个实施例中,处理器120还包括一个或多个寄存器140,其用于由一个或多个所述功能组件使用。

参考图2描述引入和使用延迟工具(包括比较和延迟指令)的一个或多个方面的计算环境的另一个实施例。

参考图2,在一个实例中,计算环境200基于由位于纽约阿蒙克的国际商业机器公司提供的z/Architecture。计算环境200例如包括中央处理器复合体(CPC)202,其经由一个或多个控制单元208耦合到一个或多个输入/输出(I/O)设备206。中央处理器复合体202例如包括耦合到一个或多个中央处理器(又称为中央处理单元(CPU))210的处理器存储器204(又称为主存储器、主存储装置、中央存储装置),以及输入/输出子系统211,下面描述其中的每一个。

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

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

中央处理器210是分配给逻辑分区的物理处理器资源。具体地说,每个逻辑分区212具有一个或多个逻辑处理器,每个逻辑处理器表示分配给该分区的物理处理器210的全部或一部分。特定分区212的逻辑处理器可以专用于分区,以使得针对该分区保留底层处理器资源210;或者与另一个分区共享,以使得底层处理器资源潜在可用于另一个分区。在一个实例中,一个或多个CPU包括在此描述的延迟工具224的各个方面。

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

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

参考图3A描述引入和使用延迟工具的一个或多个方面的计算环境的另一个实施例。在该实例中,计算环境300例如包括本机中央处理单元(CPU)302、存储器304,以及一个或多个输入/输出设备和/或接口306,它们例如经由一个或多个总线308和/或其它连接耦合到彼此。作为实例,计算环境300可以包括由位于纽约阿蒙克的国际商业机器公司提供的PowerPC处理器、pSeries服务器或xSeries服务器;由位于加利福尼亚帕洛阿尔托的惠普公司提供的具有Intel Itanium II处理器的HP Superdome;和/或基于由国际商业机器公司、惠普公司、英特尔公司、Oracle公司或其它公司提供的架构的其它机器。

本机中央处理单元302包括一个或多个本机寄存器310,例如在环境中的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示环境在任何特定时间点的状态的信息。

此外,本机中央处理单元302执行存储在存储器304中的指令和代码。在一个特定实例中,中央处理单元执行存储在存储器304中的仿真器代码312。该代码使得在一个架构中配置的计算环境能够仿真另一个架构。例如,仿真器代码312允许基于除了z/Architecture之外的架构的机器(例如PowerPC处理器、pSeries服务器、xSeries服务器、HP Superdome服务器等)仿真z/Architecture并且执行基于z/Architecture开发的软件和指令。

参考图3B描述有关仿真器代码312的进一步细节。存储在存储器304中的客体指令350包括被开发以便在除了本机CPU 302的架构之外的架构中执行的软件指令(例如,与机器指令关联)。例如,客体指令350可以被设计为在z/Architecture处理器102上执行,但改为在本机CPU 302上被仿真,本机CPU 302例如可以是Intel Itanium II处理器。在一个实例中,仿真器代码312包括指令取回例程352,其用于从存储器304获得一个或多个客体指令350,并且可选地提供获得的指令的本地缓冲。它还包括指令转换例程354,其用于确定已获得的客体指令的类型并且将客体指令转换成一个或多个对应的本机指令356。该转换例如包括标识要由客体指令执行的功能以及选择本机指令(多个)以便执行该功能。

进一步,仿真器代码312包括仿真控制例程360,其用于导致执行本机指令。仿真控制例程360可以导致本机CPU 302执行仿真一个或多个先前获得的客体指令的本机指令的例程,并且在此类执行结束时,将控制返回给指令取回例程以便仿真下一客体指令或一组客体指令的获得。本机指令356的执行可以包括将数据从存储器304加载到寄存器中;将数据从寄存器存储回存储器;或者执行某一类型的算术或逻辑运算,如由转换例程所确定的。

每个例程例如以软件实现,所述软件存储在存储器中并且由本机中央处理单元302执行。在其它实例中,一个或多个例程或操作以固件、硬件、软件或它们的某一组合来实现。所仿真处理器的寄存器可以使用本机CPU的寄存器310或者通过使用存储器304中的位置来仿真。在多个实施例中,客体指令350、本机指令356和仿真器代码312可以驻留在同一存储器中或者可以分布在不同存储设备中。

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

每个计算环境能够被配置为包括用于延迟程序执行的延迟工具。在此描述的实施例用于z/Architecture,但是,其它架构可以引入和使用延迟工具,包括在此描述的COMPARE AND DELAY(比较和延迟)指令。在此描述的实施例并非旨在以任何方式进行限制。

根据一个或多个方面,当将z/Architecture的工具指示位(例如,位128)例如设置为1时,该延迟工具被安装。进一步,可以使用控制寄存器(例如,CR 2)控制环境中的哪些实体(例如,操作系统、应用编程等)可以使用该延迟工具。例如,如果将CR 2的选定位(例如,位60)例如设置为1,则当处理器未处于监控(supervisor)状态(例如,特权状态)时,属于延迟工具一部分的COMPARE AND DELAY指令被授权在问题状态(例如,非特权状态)下执行。

在一个实施例中,延迟工具包括两个指令:32位COMPARE AND DELAY指令(CAD)和64位COMPARE AND DELAY指令(CADG),下面描述其中的每一个。

参考图4A描述32位COMPARE AND DELAY指令的格式的一个实施例。作为一个实例,COMPARE AND DELAY(CAD)指令400包括:多个操作码字段402a、402b,其指定指明比较和延迟操作的操作码;寄存器字段(R1)404,其指定寄存器,该寄存器的内容包括第一操作数;屏蔽字段(M3)406;基址字段(B2)408;第一位移字段(DL2)410;以及第二位移字段(DH2)412。将由B2字段指定的通用寄存器的内容添加到串接的DH2和DL2字段的内容,以便形成用于获得第二操作数的第二操作数地址。第一和第二操作数是32位带符号二进制整数。第一操作数例如位于通用寄存器R1的位位置32-63中。第二操作数例如是存储装置中的字。

在另一个实施例中,提供64位COMPARE AND DELAY(CADG)指令450,该指令包括:多个操作码字段452a、452b,其指定指明比较和延迟操作的操作码;寄存器字段(R1)454,其指定寄存器,该寄存器的内容包括第一操作数;屏蔽字段(M3)456;基址字段(B2)458;第一位移字段(DL2)460;以及第二位移字段(DH2)462。将由B2字段指定的通用寄存器的内容添加到串接的DH2和DL2字段的内容,以便形成用于获得第二操作数的第二操作数地址。在这种情况下,第一和第二操作数是64位带符号二进制整数。第一操作数例如位于通用寄存器R1的位位置0-63中。第二操作数是存储装置中的双字。

在操作中,不管COMPARE AND DELAY指令的格式为何,将第一操作数与第二操作数相比较。如果例如对应于比较结果的M3字段的位位置0-2中的屏蔽位为1,则延迟指令的完成;否则,完成指令的执行。如果完成指令,则从最近操作数比较确定结果条件码。

在延迟期间,由于以下任何一个原因(以先发生者为准)而结束指令:

·导致延迟的操作数值的关系不再由其值为1的M3字段中的位位置表示。在这种情况下,完成指令。

·使已启用中断变成未决。在这种情况下,可以使指令无效(指令执行未进展但返回到同一指令)或完成(指令执行进展到下一指令)。

·到达模型相关的时间限制。在该实例中,该限制未超过大约1毫秒。在这种情况下,完成指令。

·识别到模型相关的CPU确定的原因。在这种情况下,可以使指令无效或完成。

在延迟期间,可以多次取回第二操作数。在第二操作数的每次取回之前是特定操作数序列化。第二操作数的每次取回是块并发的。

在比较和延迟指令正在延迟期间,当快速连续地发生由另一个CPU或I/O子系统进行的到第二操作数的多个存储时,可以发生也可以不发生该指令对照一个或多个先前存储值的比较。

比较结果和对应M3位的一个实例如下所示:

M3字段的位3被保留并且应为0;否则,将来程序可能无法兼容运行。

特殊条件:

·第二操作数将在对应于其大小的整数边界上,否则识别到规格异常。

·在问题状态下,当控制寄存器2的位60为0时,识别到特权操作异常。

结果条件码:

0 操作数相等

1 第一操作数低

2 第一操作数高

3 --

程序异常:

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

·操作异常(如果未安装延迟工具)

·特权操作

·规格

·事务约束

编程备注:

1.当M3字段的位位置0-2包含0时,指令不会导致延迟。当M3字段的位位置0-2包含111二进制时,发生延迟。

2.在完成COMPARE AND DELAY时,由于来自另一个CPU或I/O子系统的存储而不保证由条件码指示的比较仍然为真。

3.取决于程序的要求,可能需要在更改第二操作数的值之前再次对其进行检验,例如使用COMPARE AND SWAP(比较和交换)指令。

参考图5A-5B描述关于COMPARE AND DELAY指令的处理的进一步细节。参考图5A,在一个实施例中,处理器获得(例如,取回、接收、被提供或者以其它方式获得)COMPARE AND DELAY指令(CAD或CADG)(步骤500),并且执行该指令(步骤502)。在执行中,从寄存器获得第一操作数并且从存储器取回第二操作数。第一操作数例如由程序基于程序想要针对什么延迟(例如,计数器到达特定值等)而预先加载。作为实例,例如由另一个处理器或I/O子系统来存储第二操作数。

比较操作数,从而提供比较结果,该比较结果是相等、操作数1小于操作数2(又称为第一操作数低)或操作数1大于操作数2(又称为第一操作数高)。检查对应于比较结果的M3字段的位位置0-2中的屏蔽位。例如,如果比较结果是相等,则检查M3中的位0的值;如果比较结果是第一操作数小于第二操作数,则检查M3中的位1;以及如果比较结果是第一操作数大于第二操作数,则检查M3中的位2。

如果所检查位的值被设置为0,则完成指令,并且结束COMPARE AND DELAY指令的处理。但是,如果对应于比较结果的屏蔽位被设置为1,则延迟指令,例如直到发生预定义事件。

参考图5B描述关于由获得指令的处理器执行COMPARE AND DELAY指令的进一步细节。首先,判定执行COMPARE AND DELAY指令(CAD或CADG)的处理器是否处于监控状态(查询550)。如果处理器未处于监控状态,则进一步判定是否设置选定控制寄存器(例如,控制寄存器0)中的选定位(例如,位60),从而指示该指令被授权在问题状态下执行(查询552)。如果将控制寄存器0的位60设置为0,则指令未被授权在问题状态下执行,并且出现异常,从而指示特权操作异常(步骤554)。但是,如果控制寄存器0的位60被设置为1,从而指示指令被授权在问题状态下执行,则处理继续到查询556。同样,如果处理器处于监控状态(查询550),则处理继续到查询556。

在查询556,判定第二操作数是否被正确对齐(查询556)。例如,针对CAD指令判定第二操作数是否在4字节边界上,并且针对CADG指令判定第二操作数是否在8字节边界上。如果第二操作数未正确对齐,则出现规格异常(步骤558)。但是,如果第二操作数被正确对齐,则从存储器取回第二操作数(步骤558)。此外,从选定寄存器获得第一操作数。

接下来,在一个实施例中,通过比较第一操作数与第二操作数确定条件码(步骤560)。在该特定实例中,如果两个操作数(OP1和OP2)相等,则将条件码(CC)设置为0;如果操作数1小于操作数2,则将条件码设置为1;以及如果操作数1大于操作数2,则将条件码设置为等于2。条件码表示比较结果,并且此类结果用于选择要检查的M3的屏蔽位。

检查对应于比较结果的屏蔽位,并且判定屏蔽条件为真或假(查询562)。在一个实例中,屏蔽条件为真,前提是M3的位0为1并且CC等于0;或者M3的位1为1并且CC等于1;或者M3的位2为1并且CC等于2。即,如果对应于比较结果(例如,相等、小于、大于)的M3字段的位位置0-2中的屏蔽位为1,则屏蔽条件为真。如果屏蔽条件为假,则完成指令,并且从最近操作数比较设置条件码(步骤564)。

返回到查询562,如果屏蔽条件为真,则延迟指令的完成(步骤566)。在一个实例中,延迟指令直到发生预定义事件。因此,在一个实例中,为了判定是继续还是结束延迟,判定是否到达模型相关超时(查询568)。如果是,则完成指令,并且基于最近操作数比较设置条件码(步骤564)。但是,如果未到达模型相关超时,则进一步判定是否已使已启用中断变成未决(查询570)。如果已使已启用中断变成未决,则采取中断,并且使指令无效或完成(步骤572)。如果完成指令,则基于最近操作数比较设置条件码。返回到查询570,如果没有中断,则进一步判定是否存在用于结束延迟的另一个CPU条件(例如,机器条件或另一个事件)(查询574)。如果是,则使指令无效或完成(步骤576)。再次,如果完成指令,则基于最近操作数比较设置条件码。但是,如果没有用于结束延迟的另一个CPU条件,则处理继续到重新取回第二操作数(步骤558)。即,延迟继续。如在此所述,延迟继续,例如直到发生以下一个事件(它们没有采取任何特定顺序):

·导致延迟的操作数值的关系不再由其值为1的M3字段中的位位置表示;

·使已启用中断变成未决;

·到达模型相关的时间限制;或者

·识别到模型相关的CPU确定的条件。

尽管上文指时间限制,但可以使用任何其它限制。

上面详细描述了包括COMPARE AND DELAY指令的延迟工具,这些指令用于延迟程序执行直到发生定义的事件。一个CPU例如可以使用该延迟工具确保它与来自另一个CPU的信号同步。操作系统分派器可以使用这些指令和工具确保微细分派算法快速保持同步或者用于其它类型的控制。可以存在不同类型的用途。在进一步实施例中,除了操作系统之外的程序也可以使用包括一个或多个延迟指令的延迟工具。

在一个方面,延迟工具提供例如SMT环境的同步CPU执行(也被称为线程)的高分辨率手段,以便实现有效的CPU分派。该工具在提供延迟中提供有效的处理器资源使用。在一个实例中,在多线程环境中,当线程被延迟(即,使处理器无效使用)时,能够在处理器上分派另一个线程并且使其取得进展。

多处理环境使用延迟工具的各个方面,其中特定指令流的进度要与另一个指令流同步。通过使用存储器中的公共可访问的位置作为门控指示,能够暂时延迟处理器,例如直到另一个处理器更新共享位置或者直到已经过模型相关时间段。借助条件码,提醒程序注意哪个原因结束了延迟。

除了上述之外,参考图6A-6C描述延迟工具的各个方面。首先参考图6A,处理器获得机器指令(步骤600),并且执行机器指令(步骤620)。在一个实施例中,机器指令包括:用于指定比较和延迟操作的操作码602、用于获得第一操作数的一个或多个第一字段604(例如,寄存器字段),以及用于获得位于存储位置中的第二操作数的一个或多个第二字段606(例如,基址字段、第一位移字段和第二位移字段)。在一个实施例中,处理器与另一个处理器和/或I/O子系统共享存储位置,并且另一个处理器和/或I/O子系统用于存储第二操作数。在另一实施例中,机器指令包括具有屏蔽指示符的屏蔽字段608。在一个特定实例中,屏蔽字段包括用于第一操作数与第二操作数相等的比较结果的第一屏蔽指示符、用于第一操作数小于第二操作数的比较结果的第二屏蔽指示符,以及用于第一操作数大于第二操作数的比较结果的第三屏蔽指示符。

在一个实施例中,用于获得第一操作数的一个或多个第一字段包括寄存器字段,该寄存器字段包括寄存器的命名,并且该寄存器包括第一操作数604。在另一实施例中,通过将在基址字段中指定的寄存器的内容添加到串接的第二位移字段和第一位移字段,提供第二操作数在存储器中的地址(步骤610)。

在一个实施例中,如图6B中所示,由处理器执行机器指令包括比较第一操作数与第二操作数以便获得比较结果(步骤630)。作为实例,从寄存器获得第一操作数并且从存储器取回第二操作数(步骤625)。在一个特定实施例中,首先,基于处理器未处于监控状态,判定机器指令是否被授权在非特权状态下执行(查询632)。基于根据处理器未处于监控状态而指示机器指令被授权在非特权状态下执行的判定,执行第一操作数与第二操作数的比较(步骤636)。在一个实施例中,如果机器指令位被授权,则出现异常(步骤634)。

此后,参考图6C,判定对应于比较结果的屏蔽指示符是否被设置为定义值(查询638)。基于对应于比较结果的屏蔽指示符等于定义值(查询638),延迟机器指令的完成直到发生预定义事件(步骤640)。在延迟期间,例如在多线程环境中,能够执行一个或多个其它线程的一个或多个其它机器指令或其它程序。

作为实例,预定义事件包括到达预定义限制(查询642);使已启用中断变成未决(查询644);发生选定处理器条件(查询646);或者判定与从第一操作数与第二操作数的另一个比较产生的比较结果相对应的屏蔽指示符未被设置为定义值(步骤648)。

在一个特定实例中,如果未到达预定义限制(查询642)、未使已启用中断变成未决(查询644)、以及未发生选定处理器条件(查询646),则延迟继续。重新取回第二操作数(步骤648),并且比较第一操作数与第二操作数(步骤650)。在查询638,处理继续。

在查询638,如果对应于比较结果的屏蔽指示符不等于定义值,则完成指令(例如,如果在延迟中,则结束延迟)(步骤660),并且确定条件码(步骤622)。在一个实施例中,如果比较结果是第一操作数与第二操作数相等,则条件码(CC)等于第一值(例如,0)。如果比较结果是第一操作数小于第二操作数,则条件码等于第二值(例如,1),以及如果比较结果是第一操作数大于第二操作数,则条件码等于第三值(例如,2)。

返回到查询642,如果到达预定义限制,则处理继续到步骤660,其中完成指令并且设置条件码(步骤662)。

进一步,返回到查询644,如果使已启用中断变成未决或者发生选定处理器条件(查询646),则完成指令并且设置条件码,或者使指令无效(步骤664)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

尽管上面描述了各种实施例,但其仅为实例。例如,其它架构的计算环境能够用于引入和使用一个或多个实施例。进一步,可以使用不同指令、指令格式、指令字段和/或指令值。更进一步,可以以不同方式提供和/或使用其它限制。在其它实例中,被比较的一个或多个操作数可能未在指令中被指定,但例如被暗示。在其它实施例中,单处理器程序可以执行比较和延迟指令,并且取决于第二操作数(例如,由执行该程序的处理器存储)的内容,立即继续进行或者延迟该指令,例如直到超时或中断。许多变型是可能的。

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

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

参考图8,描绘实现一个或多个实施例的主计算机系统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之间具有更小更快(更低级别)高速缓存的分层结构。在某些实现中,分离更低级别的高速缓存以便提供用于指令取回和数据访问的独立低级别高速缓存。

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

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

主存储装置可以包括一个或多个更小、更快速访问的缓冲存储装置,有时被称为高速缓存。高速缓存通常与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位。指令将在二字节整体边界上。多数指令的存储操作数不具有边界对准要求。

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

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

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

图9示出其中可实施一个或多个实施例的代表性工作站或服务器硬件系统。图9的系统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可为与另一计算机的客户机/服务器配置中的客户机等。所有这些配置以及适当通信硬件及软件在本领域中是公知的。

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

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

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

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

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

参考图11,描绘处理器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。参考图12A,执行单元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(千字节)块。

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

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

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

参考图12C,处理器使用加载/存储单元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(图11)提供用于附接至周边设备(包括(例如)磁带、光盘、打印机、显示器及网络)的构件给处理器。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号,以上中的每一者在此以全文引用的方式并入本文中。

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

部署模型如下:

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

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

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

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

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

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

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

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

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

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

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

系统存储器6028可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)6030和/或高速缓存存储器6032。计算机系统/服务器6012可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统6034可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图14中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如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系统、磁带驱动器以及数据备份存储系统等。

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

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

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

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

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

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

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

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

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