管理耦合设施中的操作员消息缓冲器的制造方法

xiaoxiao2020-7-22  19

管理耦合设施中的操作员消息缓冲器的制造方法
【专利摘要】提供了一种设施以使得能够从多个不同的源向计算环境的耦合设施提供操作员消息命令以用于处理。这些命令被用来例如在耦合设施上执行动作,并且可以从耦合到耦合设施的控制台以及被与之耦合的逻辑分区或其他系统接收。响应于执行命令,向命令的发起者返回响应。
【专利说明】管理耦合设施中的操作员消息缓冲器
【技术领域】
[0001]本发明的一个或多个方面一般地涉及计算环境内的处理,并且特别涉及计算环境内的处理操作员消息命令。
【背景技术】
[0002]计算环境的范围从简单环境到更复杂的环境。简单环境可以包括执行一个操作系统的一个处理器,而复杂环境可以包括执行各种系统的多个处理器或多个隔离存储器空间。例如,复杂环境可以包括执行一个或多个操作系统的一个或多个逻辑分区及执行耦合设施控制代码的至少一个逻辑分区。无论计算环境是简单的还是复杂的,必须充分地测试计算环境的部件以确保可靠性和可接受水平的性能。
[0003]用于测试计算环境的部件的一种技术是通过在连接到部件的控制台处发布操作员命令,其然后被计算环境的预定部件处理。一旦操作员命令被处理,结果返回到控制台以便由控制台的操作员验证。
[0004]还可以出于除测试之外的目的使用操作员命令。再次地,这些操作员命令由操作员在控制台处发布并由计算环境的预定部件处理。

【发明内容】

[0005]通过提供用于管理计算环境的缓冲器的计算机程序产品,克服了现有技术的缺点并提供了优点。该计算机程序产品包括可被处理电路读取并存储用于由处理电路执行以便执行一种方法的指令的计算机可读存储介质。该方法包括例如将耦合设施的缓冲器设置成活动状态或空闲状态,包括响应于开始操作员消息命令具有关联操作员消息令牌值,设置所选缓冲器中的操作员消息令牌值并使得所选缓冲器活动;以及确定计算环境的耦合设施的所选缓冲器将被重置,该缓冲器包括关于处理从被耦合到耦合设施但与之分离的处理器映像远程地向耦合设施发送的操作员消息命令的信息,该操作员消息命令用以对耦合设施执行动作,所选缓冲器包括具有使得所选缓冲器与具有操作员消息(OM)令牌的操作员消息相关的令牌值的令牌字段,所述操作员消息(OM)令牌具有相同的令牌值;以及响应于确定缓冲器将被重置而将所确定的缓冲器设置成空闲状态,其中,所述缓冲器包括多个字段,该字段包括用以指示对于缓冲器而言操作员消息已经活动的时间段的定时器、操作员消息请求长度以及操作员消息响应长度。
[0006]在本文中还描述了关于本发明的一个或多个方面的方法和系统并要求保护。此夕卜,还描述了关于本发明的一个或多个方面的服务,并且可以在此要求保护。
[0007]通过本发明的一个或多个方面的技术实现了附加特征和优点。在此详细地描述了本发明的其他实施例和方面并将其视为要求保护的本发明的一部分。
【专利附图】

【附图说明】
[0008]特别地指出了本发明的一个或多个方面并在本说明书结束时在权利要求中作为例子明确地要求保护。根据结合附图进行的以下详细描述,本发明的一个或多个方面的前述及其他目的、特征和优点是显而易见的,在所述附图中:
[0009]图1描述了将结合并使用本发明的一个或多个方面的计算环境的一个例子。
[0010]图2A描述了根据本发明的一方面的与计算环境的耦合设施通信的图1的计算环境的处理器的一个例子;
[0011]图2B描述了根据本发明的一方面使用的关于发送消息(Send Message)指令的细节的一个实施例;
[0012]图3A描述了根据本发明的一方面的用来控制在耦合设施处接收到的操作员消息命令的处理的复用器的一个例子;
[0013]图3B描述了根据本发明的一方面的被图3A的复用器用来控制操作员消息命令的处理的逻辑的一个例子;
[0014]图4A描述了根据本发明的一方面的在处理操作员信息命令时所使用的缓冲器的一个例子;
[0015]图4B描述了根据本发明的一方面的图4A的缓冲器的更多细节的一个例子;
[0016]图5描述了根据本发明的一方面的缓冲器的各种可能状态的例子;
[0017]图6描述了根据本发明的一方面的所使用的各种命令的一个实施例;
[0018]图7A描述了根据本发明的一方面的关于使用发送消息指令来发布开始操作员消息(Start Operator Message)命令的细节的一个实施例;
[0019]图7B描述了根据本发明的一方面的所使用的开始操作员消息(Start OperatorMessage)命令的逻辑的一个实施例;
[0020]图8A描述了根据本发明的一方面的关于使用发送消息(Send Message)指令来发布读取操作员消息(Read Operator Message)命令的细节的一个实施例;
[0021]图8B描述了根据本发明的一方面所使用的读取操作员消息(Read OperatorMessage)命令的逻辑的一个实施例;
[0022]图9A描述了根据本发明的一方面的关于使用发送消息指令来发布删除操作员消息(Delete Operator Message)命令的细节的一个实施例;
[0023]图9B描述了根据本发明的一方面所使用的删除操作员消息(Delete OperatorMessage)指令的逻辑的一个实施例;
[0024]图10描述了结合了本发明的一个或多个方面的计算机程序产品的一个实施例;
[0025]图11描述了将结合和使用本发明的一个或多个方面的主机计算机系统的一个实施例;
[0026]图12描述了将结合和使用本发明的一个或多个方面的主机计算机系统的另一例子;
[0027]图13描述了将结合和使用本发明的一个或多个方面的包括计算机网络的计算机系统的另一例子;
[0028]图14描述了将结合和使用本发明的一个或多个方面的计算机系统的各种元件的一个实施例;
[0029]图15A描述了将结合和使用本发明的一个或多个方面的图14的计算机系统的执行单元的一个实施例;[0030]图15B描述了将结合和使用本发明的一个或多个方面的图14的计算机系统的分支单元的一个实施例;
[0031]图15C描述了将结合和使用本发明的一个或多个方面的图14的计算机系统的加载/存储单元的一个实施例;以及
[0032]图16描述了将结合和使用本发明的一个或多个方面的仿真主机计算机系统的一个实施例。
【具体实施方式】
[0033]根据本发明的一个或多个方面,提供了一种促进从一个或多个源接收到的操作员信息命令的处理的能力。在一个例子中,操作员消息命令是由耦合设施从一个或多个源接收到的,并且该耦合设施处理该命令并向源返回响应。在一个特定例子中,源中的至少一个是耦合到耦合设施但与之分离的处理器映像。作为例子:
[0034]*该处理器映像是具有与之相关联的中央处理器资源并能够执行操作系统的逻辑分区,并且该耦合设施在具有与之相关联的中央处理器资源并能够执行耦合设施控制代码的另一逻辑分区,其中,两个逻辑分区都在同一中央处理复合体(即,同一机器)内;
[0035]*该处理器映像是具有与之相关联的中央处理器资源并能够执行操作系统的逻辑分区,并且该耦合设施在具有与之相关联的中央处理器资源并能够执行耦合设施控制代码的另一逻辑分区,其中,两个逻辑分区都在不同的中央处理复合体(即,不同的机器)内;以及
[0036]*处理器映像与能够执行耦合设施的机器或逻辑分区分离的独立机器(并未在逻辑分区中虚拟化)。
[0037]每个处理器映像包括一个或多个处理器。
[0038]稱合设施操作员命令的例子包括:
[0039]配置一使得CHPID (信道路径)上线或离线;CP—使CP (中央处理器)上线或离线;显示一显示资源;帮助〈command〉一命令特定帮助;定位一显示SID (子信道id)向量或SID帧;模式一设置易失性模式;PRY—将PRY (机器级调试工具)开启或关闭;检索一检索耦合设施(CF)信息;安全渡过一设定电源故障安全渡过时间;RType—设置响应类型;关断一终止CF操作;SMI—将系统监视仪表开启或关闭;时区一设置时区偏移;追踪一设置追踪控制;补丁一应用并发补丁 ;Dyndisp—将动态耦合设施分派开启或关闭;ΜΤ0 —开启用于命令表的MTO (消息超时);VMDUMP—强制VM上的耦合设施hardlong ;CFDUMP—强制非破坏性断电(dump);以及 NDDUMP—nddump_command。在 2005 年 I 月的 IBM PublicationN0.SB10-7036-04 第五版中的 “Processor Resource/Systems Manager Planning Guide,,中描述了这些指令。
[0040]在一个例子中,命令正在测试耦合设施,在于该命令指定要在耦合设施上采取的动作,执行该动作,将结果返回至命令的发起者(例如,操作系统控制台、耦合设施控制台、测试程序)并且由操作员、分析员等手动地或变地分析那些结果。通过使得能够从除耦合设施控制台之外的远程源发起和/或发送在耦合设施上采取动作的操作员消息命令,增强了能够在耦合设施上执行的测试以及能够执行的操作。这可以导致耦合设施的增加的可靠性和/或性能。[0041]参考图1来描述将结合和/或使用本发明的一个或多个方面的计算环境的一个实施例。在一个例子中,计算环境100包括中央处理器复合体(CPC) 102,其是基于由国际商业机器公司(IBM?)提供的 z/Architecture?。在 2010 年 IBM PublicationN0.SA22-7832-08 中的题为 “z/Architecture Principles of Operation” 的出版物中描述了 z/Architecture?的方面。可以包括中央处理器复合体102的一个系统是由国际商业机器公司提供的zEnterprisel96 (zl96)系统。IBM?和z/Architecture?.是美国纽约Armonk市的国际商业机器公司的注册商标,并且zEnterprisel96和zl96是商标。在此所使用的其他名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
[0042]中央处理器复合体102包括例如一个或多个分区(处理器映像)104、管理程序分区106、一个或多个中央处理器108以及输入/输出子系统110的一个或多个部件。分区可以是物理分区或逻辑分区104(例如,LPARS),并且每个分区包括一组系统的硬件资源(物理或虚拟化)作为能够运行操作系统软件的单独系统。
[0043]每个逻辑分区104能够作为单独系统运行。也就是说,每个逻辑分区能够被独立地设置,最初被加载操作系统或其他控制单元(如果期望的话),并且用不同的程序进行操作。在逻辑分区中运行的操作系统或应用程序看起来可访问完整的整个系统,但实际上,仅其一部分是可用的。硬件与被称为固件的许可内部代码(LIC)的组合防止一个逻辑分区中的程序与不同逻辑分区中的程序相干扰。这允许多个不同的逻辑分区以时间切片的方式在单个或多个物理处理器上进行操作。(本文所使用的固件包括例如处理器的伪代码、毫代码和/或宏代码。)其包括例如硬件级指令和/或在较高层机器代码的实现中使用的数据结构。在一个实施例中,其包括例如专有代码,该专有代码通常被作为包括可信软件的微代码或底层硬件所特定的微代码传送并控制操作系统对系统硬件的访问。
[0044]在本例子中,多个逻辑分区具有驻留操作系统(OS) 120,其对于一个或多个逻辑分区而言可以是不同的。在一个实施例中,至少一个逻辑分区正在执行由纽约Armonk市的国际商业机器公司提供的Z/OS?.操作系统。此外,至少一个逻辑分区正在执行也是由IBM?.提供的耦合设施控制代码(CFCC) 122,并且因此被称为耦合设施。
[0045]耦合设施是例如非易失共享存储器件(例如,硬件),包括多个存储结构,诸如高速缓存器、列表和/或锁结构,其被用来为计算环境提供独有的功能。其为具有存储和处理能力的可共享设施。例如,耦合设施是执行耦合设施控制代码(CFCC)的具有存储器和特殊信道(CF链路)的处理器而不是标准操作系统。耦合设施中的信息作为CFCC驻留在存储器上,并且除CF链路之外,耦合设施并不具有I/O设备。在1994年5月31日发布的Elko等人的题为“Method and Apparatus for Coupling Data Processing System” 的美国专利号5,317, 739中描述了稱合设施(也称为结构化外部存储器)的实施方式。
[0046]逻辑分区104被与在中央处理器108上运行的固件实现的管理程序106管理。逻辑分区104和管理程序106每个包括驻留在与中央处理器相关联的主存储器的各部分中的一个或多个程序。管理程序106的一个例子是由纽约Armonk市的国际商业机器公司提供的处理器资源/系统管理器(PR/SM?)。
[0047]中央处理器108是分配给逻辑分区的物理处理器资源。例如,逻辑分区104包括一个或多个逻辑处理器,其中的每一个表示分配给该分区的物理处理器资源108的全部或一部分。特定分区104的逻辑处理器可以专用于该分区,使得底层处理器资源专供该分区之用;或者与另一分区共享,使得底层处理器资源潜在地可用于另一分区。
[0048]输入/输出子系统110 (仅描述了其一部分)提供到I/O设备的连接。在z/Architecture?的一个特定例子中,I/O子系统包括信道子系统,其指引I/O设备与主存储器之间的信息流。然而,I/O子系统可以是除信道子系统之外的。
[0049]信道子系统在管理到或来自I/O设备的信息流时使用一个或多个信道路径作为通信链路。在信道子系统内的是子信道。
[0050]一个子信道被提供为用于且专用于信道子系统可访问的每个I/O设备。每个子信道包含用于关于关联I/o设备及其到信道子系统的附件的信息的存储器。该子信道还提供了用于关于I/o操作和涉及到关联I/O设备的其他功能的信息的存储器。包含在子信道中的信息可以被CPU使用I/O指令以及被信道子系统访问,并且充当任何CPU与信道子系统之间的关于关联I/o设备的通信装置。
[0051]虽然在本文中将逻辑分区环境描述为用以结合和使用本发明的一个或多个方面的一个计算环境,但其他环境也可以结合和/或使用本发明的一个或多个方面。例如,具有耦合到耦合设施(不是逻辑分区环境)的环境也可以结合和使用本发明的一个或多个方面。还可以有其他例子。
[0052]一个或多个系统间信道促进了处理器与耦合设施之间的通信,无论是否在逻辑分区环境中,如图2A中所描述的。在本文所述的例子中,通信是在逻辑分区之间。例如,执行诸如z/OS?操作系统的操作系统204的逻辑分区200经由至少一个系统间信道210来与执行耦合设施控制代码208的逻辑分区206通信。特别地,在一个例子中,逻辑分区200经由发送消息(Send Message) (SMSG)协议220通过系统间信道与逻辑分区206通信。
[0053]在一个例子中,发送消息(Send Message )协议包括发起消息操作的发送消息(Send Message)指令。该消息操作由发送消息(Send Message)指令中的信息以及在发送消息(Send Message)指令中指定的消息操作控制。消息操作包括执行在消息命令块中指定的命令(例如,对于本发明的一个或多个方面而言,下文所述的开始操作员消息(StartOperator Message)命令、读取操作员消息(Read Operator Message)命令和/或删除操作员消息(Delete Operator Message)命令)。此外,在操作的执行期间,相应信息被存储在主存储器中的消息响应块中。
[0054]参考图2B来描述关于发送消息(Send Message)协议的其他细节。发送消息指令250具有两个操作数,包括消息操作块(MOB)252和位于信道子系统256中的子信道254的名称。消息操作块包括例如指向消息命令块264/消息响应块266对的消息命令块地址258。存在位于主存储器中的256字节缓冲器。消息操作块252还包括指向消息缓冲器地址列表268的消息缓冲器地址列表(MBAL)地址260。MBAL列表是例如从I一 16的可变长度列表。其包括指定一个或多个消息缓冲器272的一个或多个消息缓冲器地址字(MBAW)268。该缓冲器可以是用于到耦合设施206的写操作的源或来从耦合设施的读取操作的目标。在消息操作块252中还包括指示MBAL列表的长度的MBAL长度262。并不是所有命令都必须具有消息缓冲器地址列表,并且因此该长度可以是零。消息命令块264包括被发送到耦合设施的参数,并且当响应返回时,其被直接存储到MRB。
[0055]当执行发送消息(Send Message)时,来自消息操作块的参数被传递至CPU或信道子系统,其请求用与信道子系统的指定子信道相关联的耦合设施来执行发送功能。与发送消息(Send Message)同步地或异步地执行发送功能。
[0056]该发送功能是通过使用子信道中的信息以发现到耦合设施的路径来执行的。使用该路径,消息操作被换送至耦合设施。例如,通过将命令信息传递至耦合设施、对命令进行解码并执行、将指示结果的相应信息公式化并将响应信息存储在消息响应块中来实现消息操作的执行。
[0057]概括在发送功能的执行期间所检测的条件的状态指示被置于子信道处且可用于操作系统。在1996年10月I日发布的Elko等人的题为“In A Multiprocessing SystemHaving A Coupling Facility, Communicating Messages Between The Processors AndThe Coupling Facility In Either A Synchronous Operation Or An AsynchronousOperation”的美国专利号5,561,809中描述了关于发送消息(Send Message)的附加细节。
[0058]继续图2A,在本例子中,耦合到逻辑分区200的是一个或多个操作系统控制台230以及一个或多个测试程序232,其可以在同一逻辑分区、同一中央处理复合体但不同逻辑分区或另一系统内运行。同样地,耦合到逻辑分区206的是至少一个耦合设施控制台234。每个控制台使得用户能够像其各自逻辑分区输入操作员消息命令。此外,测试程序232也能够向其各逻辑分区发布操作员消息命令。从控制台234发布到逻辑分区206 (在本文中也称为耦合设施)的操作员消息命令在一个例子中被耦合设施内的操作员消息处理器240接收,其服务于从耦合设施控制台接收到的命令。
[0059]在本发明的一个或多个方面之前,可以直接地向耦合设施发送耦合设施操作员消息命令并接收返回的响应的唯一远程实体是耦合设施控制台。耦合设施操作员命令的测试要求一个人登录到耦合设施控制台以发布命令并检验结果。诸如操作系统、操作系统控制台、测试程序和/或其他远程系统的其他远程实体不能直接地访问耦合设施以使操作员消息命令被处理并返回结果。作为替代,任何此类命令都必须被转发至耦合设施控制台,并且由于某些命令不能被传送,所以那些命令不能被耦合设施处理。由耦合设施处理的命令的任何将被返回至耦合设施控制台并在控制台上显示。
[0060]根据本发明的一个或多个方面,在耦合设施处从控制台234以及逻辑分区2009(和/或其他逻辑分区、处理器、系统等)接收操作员消息命令。例如,在逻辑分区200处从控制台230和/或测试程序232 (以及其他可能的发起者)接收操作员消息命令,并且然后从逻辑分区200转发至逻辑分区206。为了将操作员消息命令从逻辑分区200转发至逻辑分区206,在一个例子中,通过系统间信道使用发送消息(Send Message)协议从逻辑分区200向逻辑分区206发送操作员消息(OM)请求222。该请求包括例如指定所请求的操作员消息命令的命令。耦合设施处理该请求并使用SMSG来发送从逻辑分区206返回至逻辑分区200的操作员消息(OM)响应224。
[0061]由于耦合设施现在能够从多个、不同的源接收操作员消息命令,包括例如耦合设施控制台和被与之耦合的一个或多个逻辑分区(或其他处理器、系统等),所以在耦合设施内提供了控制机构以管理要处理的多个请求。一个此类控制是复用器,在图3A中描述了其示例。
[0062]如图3A中所示,复用器300从多个源302接收操作员消息,作为例子,包括执行操作系统的逻辑分区和耦合设施控制台。特别地,在一个例子中,复用器使用SMSG经由开始操作员消息(Start Operator Message)命令直接地从稱合设施控制台且直接地从逻辑分区接收操作员消息命令。复用器位于耦合设施内且耦合到操作员消息处理器240。因此,从耦合设施控制台发布的操作员消息命令现在被转发至复用器,其指引那些命令到操作员消息处理器的转发。同样地,从逻辑分区(或其他远程实体)接收到的操作员消息命令也被输入到复用器300。此外,与操作员消息命令(例如,读取操作员消息(Read OperatorMessage)和删除操作员消息(Delete Operator Message))的处理相关联的逻辑分区所发布的其他命令也被输入到复用器300。因此,为了方便起见,包括操作员消息命令的命令以及与之相关联的其他操作在本文中被称为SMSG命令。复用器将接收到的命令(即,来自耦合设施控制台的操作员消息命令和SMSG命令)指引到操作员消息处理器。
[0063]参考图3B来描述复用器用来控制命令的选择以由操作员消息处理的逻辑的一个实施例。最初,复用器是空闲的,等待接收命令,步骤350。如果不存在命令,询问352,则复用器保持空闲,步骤350。否则,如果接收到至少一个命令,则命令中的一个被发送到操作员消息处理以便处理,步骤354。例如,接收到的第一命令被发送,或者如果接收到操作员消息命令和SMSG命令两者,在本例子中,则发送SMSG命令中的一个。
[0064]操作员消息处理器处理命令,如下文进一步所述,并且输出结果,步骤356。如果命令来自耦合设施控制台,则结果被输出到控制台。然而,在本例子中,如果命令来自处理器,则结果被存储在缓冲器中,如下文所述,并被提供给耦合设施控制台。
[0065]其后,进行关于是否存在来自除耦合设施控制台的源之外的任何待决命令(例如,待决SMSG命令),询问358。如果存在至少一个待决SMSG命令,则处理器以其中选择命令并发送到操作员消息处理器的步骤354继续。否则,进行检查以查看是否存在来自耦合设施控制台的任何待决命令,询问360。如果存在一个或多个待决控制台命令,则处理器以步骤354继续。然而,如果不存在更多的待决控制台命令,则处理继续至步骤350。
[0066]可以从耦合到耦合设施的一个或多个逻辑分区(S卩,从非CF逻辑分区,其是不包括耦合设施控制代码的分区)接收多个命令。因此,耦合设施包括一个或多个缓冲器(在本文中称为操作员消息(OM)处理缓冲器)以存储来自此类分区的输入命令。参考图4A — 4B来描述关于缓冲器的更多细节。
[0067]参考图4A,在一个例子中,耦合设施包括一个或多个缓冲器400。在本例子中,存在九个缓冲器,但此缓冲器数目是可配置的。每个缓冲器400具有与之相关联的多个控制机构,如参考图4B所述。
[0068]参考图4B,缓冲器400包括例如:
[0069]操作员消息状态402,其指示缓冲器的状态,包括空闲;活动和在正在进行中;或者活性,响应待决,如下所述。
[0070]操作员消息令牌(OMTK) 404,其为当开始操作员消息过程时由操作系统(例如,操作系统控制台,其包括操作系统代码,或者在逻辑分区中运行的操作系统的部分)提供的值。操作员消息令牌唯一地识别操作员消息请求。当操作员消息处理缓冲器是空闲的时,操作员消息令牌包括零。此令牌被用来识别缓冲器,一旦其被选择。
[0071]操作员消息定时器(0MT)406,其为在开始操作员消息请求时设定的日时值。其被设置成日时钟的当前值。操作员消息定时器被用来确定操作员消息已经活动的时间长度。当操作员处理缓冲器是空闲的时,操作员消息定时器包含零。
[0072]操作员消息请求长度(OMREQL) 408,其为包含OM请求(例如,操作员消息命令)的以字节为单位的长度。当OM处理缓冲器是空闲的时,OMREQL对象的值是零。
[0073]操作员消息响应长度(OMRESL) 410,其为包含OM响应的以字节为单位的长度的值。当OM处理缓冲器是空闲的时或者当OM处理缓冲器是活动的且正在处理时,OMRESL对象的值是零。
[0074]操作员消息请求数据(OMREQD) 412,其包括由开始操作员消息(Start OperatorMessage)命令(下文所述)传递至稱合设施的OM请求的内容。当OM处理缓冲器是空闲的时,OM请求数据的内容是未定义的。
[0075]操作员消息响应数据(OMRESD) 414,其包括操作员消息命令的结果。当操作员消息处理缓冲器是空闲的时,或者当操作员消息处理缓冲器是活动的且正在处理时,OM响应数据的内容是未定义的。
[0076]如上所述,每个缓冲器具有与之相关联的各种状态。参考图5,最初,缓冲器处于空闲状态500。这指示其可用于开始消息。响应于开始操作员消息(Start Operator Message)命令,缓冲器过渡至活动和正在进行中状态502,其指示操作员消息命令正在被耦合设施处理。特别地,操作员消息处理器240在后台中处理该请求,包括操作员消息命令,并提供响应。响应于生成响应,缓冲器被置于活动,响应待决状态504。在这里,查询缓冲器的读取操作能够访问缓冲器并读出响应。
[0077]其后,可以经由例如耦合设施(B卩,操作员消息处理器)所识别的超时或者明确地由删除操作员消息(Delete Operator Message)或开始操作员消息(Start OperatorMessage)使缓冲器返回至空闲状态。下面描述关于缓冲器及其处理的更多细节。
[0078]操作换消息(OM)处理缓冲器是包含与经由开始操作员消息(Start OperatorMessage) (SOM)命令发送的操作员消息命令的处理有关的信息的耦合设施存储器的区域。OM处理缓冲器是从不可用于结构分配的耦合设施存储器的区域分配的。
[0079]OM处理缓冲器是活动的或空闲的。当空闲时,其可用于由开始操作员消息(StartOperator Message) (SOM)命令选择。当活动时,操作员消息过程已经开始且尚未被删除。如果操作员消息响应是可用的,则缓冲器状态是活动的,响应待决。否则,缓冲器状态是活动的且正在处理。
[0080]删除具有响应待决的活动操作员消息过程将与OM处理缓冲器相关联的对象重置并将缓冲器置于空闲状态(也称为将OM处理缓冲器重置)。
[0081]存在能够删除活动操作员消息过程的三个方式:
[0082]1.执行删除操作员消息(Delete Operator Message)命令,其指定与OM令牌对象匹配的OM令牌,并且OM处理缓冲器是活动的,响应待决。
[0083]2.操作员消息过程已经活动的时间长度超过OM超时控制的值,并且OM处理缓冲器是活动的,响应待决。这可以被内部I禹合设施过程或被开始操作员消息(Start OperatorMessage)命令检测到。
[0084]3.执行开始操作员消息(Start Operator Message)命令,其指定与OM令牌对象匹配的OM令牌,并且OM处理缓冲器是活动的,响应待决,并且所有消息缓冲器都是忙碌的,并且至少一个具有超时。
[0085]时间的滞后可以在OM处理缓冲器超时的时间和其被检测为超时并重置成空闲状态时之间发生。在这种情况下,OM处理缓冲器仍是活动的,响应待决,直至OM请求被删除。[0086]处理OM请求是作为后台操作执行的。当开始操作员消息(Start OperatorMessage)命令成功地完成时,发起后台过程。后台过程生成OM响应数据,将响应数据存储在OMRESD对象中,并将响应长度存储在OMRESL对象中。其然后将OM处理缓冲器的状态变成活动的,响应待决。
[0087]下面描述关于缓冲器处理且特别是操作员消息(Operator Message)命令的更多细节。然而,在该描述之前,描述其他对象和操作数以帮助理解本发明的一个或多个方面。
[0088]作为示例,耦合设施包括用来处理操作员消息命令的许多全局对象。这些对象包括例如:
[0089]固定全局控制一例如,操作员消息处理缓冲器计数(0MPBC),其为模型相关值,执行耦合设施所支持的OM处理缓冲器的数目;
[0090]程序可修改全局控制一例如,操作员消息处理缓冲器(0ΜΡΒ),以及操作员消息超时控制(0MT0C),其为确定操作员消息与OM处理缓冲器相关联的以秒为单位的最大时间长度的值。如果操作员消息在超过超时值之前尚未被明确地删除,则操作员消息被耦合设施删除,并且OM处理缓冲器被置于空闲状态。在一个例子中,默认值是300 ;以及
[0091]设施属性(FACA) —例如,操作员消息设施指示符,其为指定用于处理操作员消息命令的本文所述设施是否得到耦合设施的支持的值。
[0092]此外,耦合设施包括在处理操作员消息命令中所使用的多个全局操作数。在一个例子中,这些操作数包括:
[0093]操作员消息(OM)请求(0MREQ):可变长度字节串,具有预先指定数目的字节(例如,192字节)的最大长度,其包括要处理的操作员消息命令。该长度由OM请求长度指定。
[0094]操作员消息(OM)响应(OMRES):可变长度字节串,具有预定义数目的字节(例如,4096字节)的最大长度。该长度由OM响应长度指定。
[0095]操作员消息(OM)超时控制(0MT0C):确定操作员消息与OM处理缓冲器相关联的以秒为单位的最大时间长度的值。作为例子,有效值的范围为从5至300。忽视此操作数,除非更新OMTOC指示符是有效的,并被设置成指示要更新OM超时控制的值。
[0096]操作员消息(OM)令牌(OMTK):唯一地识别操作员消息过程的值。
[0097]更新OMTOC指示符(UOMTCI):指示是否应更新操作员消息超时控制的值。其具有以下编码,作为例子:不更新OM超时控制;更新OM超时控制。
[0098]根据本发明的一个或多个方面,能够将操作员消息命令从耦合设施控制台发送到耦合设施以及耦合到耦合设施的逻辑分区或其他系统处理器等。参考图6来描述与从除耦合设施控制台之外的源向耦合设施发送操作员消息命令相关联的处理。
[0099]最初,由发起者输入或生成命令,作为例子,诸如操作系统控制台或测试程序,步骤600。响应于此,操作系统(例如,在控制台上执行或执行测试程序的部分)生成操作员消息令牌,步骤602。在一个例子中,通过将系统标识符与日时钟值串联来生成令牌。其后,发起者发布包括令牌的开始操作员消息(Start Operator Message) (SOM)请求以及所请求的操作员消息命令,步骤604。开始操作员消息(Start Operator Message)请求被发送到耦合到发起者的逻辑分区。
[0100]在逻辑分区处,操作系统通过将包括令牌和所请求操作员消息命令的开始请求放置在开始操作员消息(start Operator Message)命令的消息命令块中来创建开始操作员消息(Start Operator Message)命令。然后经由SMSG命令将消息命令块从操作系统发送到耦合设施。复用器接收SMSG命令并及时地将其转发至操作员消息处理器。操作员消息处理器然后处理该命令,如下所述。作为处理的一部分,生成响应。
[0101]对开始操作员消息(Start Operator Message)命令的响应被转发至SOM的发起者。例如,响应被包括在经由SMSG转发至逻辑分区的消息响应块中。然后,从逻辑分区,响应被转发至发起者。
[0102]发起者(例如,操作系统控制台、测试程序)接收响应并检查响应代码的值,询问606。如果响应代码指示所有缓冲器都已是活动的,并且因此不可用,则处理返回至步骤604。然而,如果相应代码指示操作员消息已经开始,则处理以步骤610继续。否则,发布错误消息,步骤608。
[0103]在步骤610处,由发起者读取操作员消息(Read Operator Message)命令以读取缓冲器以获得由I禹合设施响应于处理开始操作员消息(start Operator Message)中的操作员消息命令而提供的响应。例如,在逻辑分区(例如,操作系统)处接收由发起者发布的读取操作员消息(Read Operator Message)请求,其创建读取操作员消息(Read OperatorMessage)命令并经由SMSG将其从操作系统转发至耦合设施。该耦合设施和特别地复用器接收SMSG命令并随后将其转发至操作员消息处理器。操作员消息处理器如下所述地处理读取命令并发送响应代码。响应代码最终被返回至发起者,如上所述。检查响应代码,询问612,并且如果响应指示OM响应不可用,则处理返回至步骤610。然而,如果响应代码指示OM响应是可用的,则读取缓冲器以获得所请求操作员消息命令的结果。在一个实施例中,处理然后以步骤616继续。否则,发布错误消息,步骤614。
[0104]在步骤616处,由发起者发布删除操作员消息请求并在逻辑分区处接收。操作系统生成删除操作员消息(Delete Operator Message)命令并经由SMSG将其发送到稱合设施,如上所述。由操作员消息处理器处理删除操作员消息(Delete Operator Message)命令,如下所述,并且向发起者返回响应。发起者检查对删除操作员消息(Delete OperatorMessage)命令的响应代码,询问618。如果响应代码指示操作员消息被删除,则向发布者提供OM响应,步骤620。否则,发布错误消息,步骤622。
[0105]如上文所指示的,存在根据本发明的一个或多个方面而使用的各种消息命令。一个此列命令是开始操作员消息(Start Operator Message)命令,参考图7A—7B来描述其实施例。
[0106]在一个例子中,通过例如z/OS?控制台或测试程序来发起操作员消息命令。其流入z/OS?逻辑分区并被通过开始操作员消息(start Operator Message)命令中的发送消息(Send Message)被发送到耦合设施。参考图7A来描述此处理的一个实施例。
[0107]如上所述,发送消息(Send Message)指令250包括消息操作块252和子信道254的名称。然而,在这种情况下,对于开始操作员消息(Start Operator Message)而言,消息操作块仅包括消息命令块地址258,其指向MCB264/MRB266。对于此操作而言,不存在消息块。呈现给稱合设施的消息命令块包括开始操作员消息(Start Operator Message)MCB780,其具有例如开始操作员消息(Start Operator Message)请求参数782和指定所请求的操作员命令的操作员消息请求784。返回的响应是开始操作员消息MRB790,其包括具有响应代码的开始操作员消息(Start Operator Message)响应参数792。[0108]在一个例子中,开始操作员消息(Start Operator Message)请求参数包括令牌、请求以及请求长度。耦合设施和特别地操作员消息处理器经由复用器接收SMSG命令块并开始处理开始操作员消息(Start Operator Message)命令,如参考图7B所述。
[0109]最初,操作员消息处理器扫描操作消息缓冲器,寻找空闲缓冲器(例如,OMTK具有零),步骤700。进行关于是否存在任何空闲缓冲器的确定,询问702。如果存在空闲缓冲器,则选择空闲缓冲器(例如,第一),步骤704。其后,将操作员消息令牌存储在缓冲器中,步骤706。此外,将缓冲器中的操作员消息定时器设置成当前时间,步骤708。在一个例子中,从日时钟获得时间。此外,将请求和请求长度存储在缓冲器中,步骤710,并且将缓冲器状态设置成活动的和正在进行中(也称为活动和处理),步骤712。返回代码被返回操作系统(例如,z/OS?)指示设置了缓冲器,步骤714,并且最后到发起者。此处理与z/OS?程序同步地执行。
[0110]返回询问702,如果不存在空闲缓冲器,则再一次操作操作员消息缓冲器,寻找已经超时的活动缓冲器,步骤720。进行关于是否存在已经超时的任何活动缓冲器的确定,询问722。如果没有,则提供指示不存在可用缓冲器的返回代码,步骤724。
[0111]然而,如果存在已经超时的任何活动缓冲器,则选择超时缓冲器,步骤726。在一个例子中,选择的是第一超时缓冲器。缓冲器被设置成空闲状态,步骤728,并且处理以步骤706继续,其中缓冲器被初始化。
[0112]下面描述关于开始操作员消息(Start Operator Message)命令的更多细节。如本文所指示的,此命令以及读取操作员消息(Read Operator Message)命令和删除操作员消息(Delete Operator message)命令被使用SMSG传送至稱合设施。SMSG从逻辑分区向稱合设施发送包括所请求命令的消息。为了发送该消息,消息被包括在消息命令块(PCB)中,并且在消息响应开(MRB)中包括对消息的任何响应。
[0113]在一个例子中,用于开始操作员消息(Start Operator Message)的消息命令块包括:消息报头;命令(例如,开始操作员消息(Start Operator Message)) ;0M请求长度;操作员消息令牌;以及操作员消息请求(例如,操作员消息命令)。
[0114]在操作中,将在请求中提供的OM令牌的值与每个OM处理缓冲器中的OM令牌对象相比较。如果OM令牌是有效的且与任何OM令牌对象不匹配,并且如果至少一个OM处理缓冲器是空闲的,则选择空闲缓冲器。如果OM处理缓冲器处于空闲状态且至少OM处理缓冲器是活动的,响应待决且已超过了超时值,则选择超时缓冲器并重置成空闲状态。
[0115]一旦选择了空闲缓冲器,则将OM令牌放置在OMTK对象中,将0M0请求放置在OMREQD对象中,将OM请求长度放置在OMREQL对象中,将OM定时器对象设置成日时钟的值,将缓冲器置于活动和正在处理状态,并且发起后台过程以处理OM响应(B卩,开始处理所请求的操作员消息命令并将信息(流入,关于OM命令的结果)放置在缓冲器中)。返回代码被返回至操作系统,指示操作员消息已经开始。
[0116]如果OM令牌与用于活动OM处理缓冲器的OM令牌对象匹配,则不发生处理。该命令完成并返回响应代码,指示操作员消息已经开始。
[0117]如果OM令牌是有效的,不与任何OM令牌对象匹配,并且所有缓冲器是活动的且正在处理或者活动的,响应待决而未超过超时控制,则该命令完成并返回响应代码,指示没有可用缓冲器。[0118]在消息响应块中返回响应,其包括例如响应描述符和响应代码。
[0119]响应于接收到指示操作员消息已经开始的响应,发布读取操作员消息(ReadOperator Message)命令以获得对所请求操作员消息命令的响应。返回图8A,经由发送消息(Send Message)协议来发送读取操作员消息(Read Operator Message)命令。如上所述,发送消息(Send Message)指令250包括消息操作块252和子信道254的名称。对于读取操作员消息(Read Operator Message)命令而言,消息操作块252包括MCB地址258、MBAL地址260以及MBAL长度262。对于读取操作员消息(Read Operator Message)命令而言,MBAL长度等于一且MBAL地址260指向具有一个条目的MBAL268。MBAL268指向消息缓冲器272。
[0120]MCB地址258指定MCB264/MRB266对。用于读取操作员消息(Read OperatorMessage)命令的消息控制块880包括读取操作员消息(Read Operator Message)请求参数882 (例如,消息报头、读取命令、OM令牌),其被传送至耦合设施以用于处理。响应于处理读取操作员消息(Read Operator Message)命令,在MRB266中返回读取操作员消息(ReadOperator Message)响应参数(例如,响应代码)。另外,返回操作员消息(OM)响应875并放置在消息缓冲器272中。
[0121]参考图SB来描述读取操作员消息命令的逻辑的一个实施例。最初,在操作员消息缓冲器中扫描具有与在命令中提供的OM令牌匹配的OM令牌的缓冲器,步骤800。如果不存在具有匹配OM令牌的缓冲器,询问802,则返回指示未发现匹配令牌的响应代码,步骤804。
[0122]然而,如果存在具有匹配OM令牌的OM缓冲器,则进行关于在缓冲器是否存在OM响应待决的确定,询问806。如果不存在OM响应待决,则返回指示OM响应不可用的响应代码,步骤808。
[0123]返回询问806,如果存在OM响应待决,则OM响应被拷贝到由SMSG指定的数据块(例如,位于消息缓冲器272内),步骤810,并且响应长度被拷贝到消息响应块,步骤812。返回OM响应(即,数据块),以及指示OM响应可用的响应代码,步骤814。
[0124]下面描述关于读取操作员消息(Read Operator Message)命令的更多细节。在一个例子中,用于读取操作员消息(Read Operator Message)的消息命令块包括消息报头;读取命令;以及操作员消息令牌。
[0125]在操作中,当提供了足够的消息缓冲器空间(例如,缓冲器272)时(即等于或大于预先指定尺寸的缓冲空间可用),则将OM令牌的值与每个OM处理缓冲器中的OM令牌对象相比较。
[0126]如果OM令牌与用于OM处理缓冲器的OM令牌对象相比较且缓冲器是活动的,响应待决,则OM响应被放置在数据块中。返回数据块、OM请求、OM请求长度、OM响应长度以及指示OM响应可用的响应代码。除数据块之外,在消息响应块中返回响应,其包括例如响应描述符、响应代码、OM请求长度、OM响应长度以及OM请求。经由SMSG但与响应块分开地返回数据块。
[0127]如果OM令牌与用于活动且正在处理的OM处理缓冲器的OM令牌对象匹配,则不发生处理。该命令完成并向程序返回指示OM响应不可用的响应代码。在响应块中返回响应,其包括例如响应指示符和响应代码。
[0128]如果OM令牌是有效的但并不与用于活动OM处理缓冲器的任何OM令牌对象匹配,则不发生处理。命令完成并返回指示未发现匹配令牌的响应代码。在响应块中返回响应,其包括例如响应指示符和响应代码。
[0129]当消息缓冲器尺寸小于预先指定尺寸时,存在不足以包含数据块的消息缓冲器空间(例如,缓冲器272)。(在这种情况下,不发生处理,命令完成并返回指示不足消息缓冲器空间的响应代码。在响应块中返回响应,其包括例如响应指示符和响应代码。
[0130]在接收到响应之后,可以进行将缓冲器重置的判定。因此,发布删除操作员消息(Delete Operator Message)命令。参考图9A,如其他操作员消息命令的情况一样,经由发送消息(Send Message)协议向f禹合设施发送删除操作员消息(Delete Operator Message)命令。再次地,发送消息(Send Message)指令250包括消息操作块252和子信道254的名称。在这种情况下,消息操作块包括指向MCB264/MRB266对的MCB地址258。用于删除操作员消息(Delete Operator Message)的MCB980包括删除操作员消息请求参数982(例如,消息报头、删除命令以及OM令牌),其被转发至耦合设施。响应于执行删除操作员消息(DeleteOperator Message)命令,在 MRB266 中返回删除操作员消息(Delete Operator Message)MRB990,其包括删除操作员消息(Delete Operator Message)响应参数。
[0131]参考图9B来描述由操作员消息处理器执行的删除操作员消息(Delete OperatorMessage)命令的逻辑的一个实施例。最初,在OM缓冲器中扫描具有匹配OM令牌的缓冲器,步骤900。如果不存在具有匹配OM令牌的缓冲器,询问902,则返回指示操作员消息被删除的响应代码,步骤904。
[0132]然而,如果存在具有匹配OM令牌的缓冲器,询问902,则进行关于OM响应是否待决的进一步确定,询问906。如果OM响应不是待决的,则返回指示缓冲器是活动的且正在处理的响应代码,步骤908。
[0133]如果存在OM响应待决,询问906,则将OM令牌、OM定时器、请求长度和响应长度重置,例如重置成零,步骤910。此外,将OM缓冲器状态设置成空闲,步骤912,并且返回指示操作员消息被删除的响应代码,步骤914。(在另一实施例中,将缓冲器设置成空闲状态删除缓冲器;并且将空闲缓冲器设置成活动状态创建新的缓冲器。)
[0134]下面描述关于删除操作员消息(Delete Operator Message)命令的更多细节。在一个例子中,用于删除操作员消息(Delete Operator Message)命令的消息命令块包括消息报头;删除操作员消息(Delete Operator Message)命令;以及操作员消息令牌。
[0135]在操作中,将OM令牌的值与每个OM处理缓冲器中的OM令牌对象相比较。如果OM令牌与活动OM处理缓冲器中的OM令牌对象的值匹配且缓冲器是活动的,响应待决,则将OM处理缓冲器中的对象重置并将缓冲器置于空闲状态。当缓冲器对象已被重置时,命令完成并向操作系统返回指示操作员消息被删除的响应代码。
[0136]当OM处理缓冲器是活动的且正在处理时,不发生动作。命令完成并返回指示缓冲器是活动的且正在处理的响应代码。
[0137]当OM令牌是有效的且不与用于任何活动OM处理缓冲器的OM令牌对象匹配时,不发生动作。命令完成并向程序返回指示操作消息被删除的响应代码。
[0138]在消息响应块中返回响应,其包括例如响应描述符和响应代码。
[0139]上面详细地描述了用以处理操作员消息请求的各种命令。在本例子中,这些命令是操作员消息(Operator Message)设施的一部分。操作员消息(Operator Message)设施包括在本文中为了完整起见而描述的其他命令。这些命令包括读取设施参数(Read FacilityParameters)命令和设置设施权限(Set Facility Authority)命令。
[0140]对于读取设施参数(Read Facility Parameters)命令而言,消息请求块包括例如消息报头和读取设施参数(Read Facility Parameters)命令。在操作中,将稱合设施控制的值放置在响应操作数中,并且指示成功(如果为真的话)的响应代码存储在响应代码操作数中。此命令可以将许多控制置于响应操作数中,然而,对于操作员消息设施(OperatorMessage Facility)而言,操作员消息处理器缓冲器计数被放置在OMPBC中,并且操作员消息超时控制被放置在OMTOC中。
[0141]当响应代码指示返回了耦合设施控制值时,返回的消息响应块包括例如用于操作员消息设施(Operator Message Facility)的响应描述符、响应代码、OM处理器缓冲器计数以及OM超时控制。还可以返回用于其他设施的其他控制。
[0142]对于设置设施权限(Set Facility Authority)命令而言,消息请求块包括例如下文所述的消息报头、设置设施权限(Set Facility Authority)命令、OM超时控制、更新0MT0C指示符、比较权限控制和权限控制。
[0143]在操作中,将耦合设施权限控制值与在消息命令块中接收到的比较权限(CAU)操作数相比较。当其比较为相等时,将在消息命令块中接收到的权限(AU)操作数的值存储在耦合设施权限控制中并更新耦合设施状态。
[0144]当耦合设施权限控制从零变成非零值时,耦合设施状态从未管理变成被管理,OM超时控制被有条件地更新,在每个消息路径上向远程耦合设施发布activate-message-path (活动消息路径)命令,并且返回指示成功的响应代码。如果update-0m-timeout (更新OM超时)指示符是一,则OM超时控制操作数被存储在0MT0C对象中。否则,不对0MT0C对象进行更新。还可以发生其他处理。
[0145]在包括例如响应描述符和响应代码的消息响应块中返回响应代码。
[0146]根据本发明的一个或多个方面,提供了用于由耦合设施来处理来自多个源的操作员消息命令的操作员消息设施(Operator Message FaciIity),包括但不限于稱合到I禹合设施的耦合设施控制台和逻辑分区(或其他处理器、系统等)。设施包括例如:
[0147]*操作员消息(OM)处理缓冲器集合。每个缓冲器能够每次处理一个操作员消息请求。缓冲器的数目是固定的(例如,9个)且是模型相关的。
[0148]*所支持OM处理缓冲器的数目的计数器。
[0149]*到期超时,称为OM超时控制,其额定操作员消息在其被删除之前将在处理缓冲器中维持的时间长度。用于到期超时的默认值是例如5分钟。其可以被设置设施权限(SetFacility Authority)命令改变。
[0150]*全局命令,允许程序访问操作员消息设施(Operator Message Facility):
[0151]一开始操作员消息(Start Operator Message) (SOM)
[0152]一读取操作员消息(Read Operator Message) (ROM)
[0153]一删除操作员消息(Delete Operator Message) (DOM)
[0154]*后台处理功能,其生成操作员消息响应,将响应放置在OM处理缓冲器中,并改变缓冲器的状态以指示响应而用于检索。
[0155]此设施在一方面提供用于除耦合设施控制台之外的远程实体发布操作员消息命令以例如测试耦合设施的机构。这允许更多的深入测试,例如在生产之前或者甚至在生产中。操作员消息命令导致在耦合设施上执行动作。此类命令/动作的示例包括但不限于在耦合设施上安装一块代码,产生耦合设施的一部分的切断,配置耦合设施,将耦合设施解除配置或管理耦合设施的一个或多个部件。也可以有其他动作,在本文中描述了其中的某些。按照所请求命令,在耦合设施上执行动作,并且然后进行关于动作是否如预期的那样执行、引起错误等的确定。通过执行该动作,测试耦合设施以查看耦合是否按照该动作表现如预期的那样。
[0156]在一个特定示例中,z/OS系统上的程序使用系统名和存储时钟(STCK)值来生成sysplex范围的唯一令牌,并发布SMSG指令以向耦合设施发送CFCC操作员命令。耦合设施接受该命令并异步地处理命令。如果SMSG是成功的,则z/OS程序用缓冲器来轮询命令完成以使用在第一 SMSG上发布的唯一令牌来包含命令响应。当CFCC处理命令时,其向耦合设施控制台发布消息并将消息保存到缓冲器中。当命令完成时,用来轮询命令完成的SMSG将获得成功返回代码并向指定缓冲器中返回命令响应。z/OS程序然后处理该结果并发布SMSG以将保存的命令响应从耦合设施删除。作为示例,程序可以是处理结果的测试用例或在控制台上显示结果的z/OS命令接口。
[0157]作为示例,如本文所使用的获得包括但不限于接收、具有、提供、生成或创建。
[0158]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0159]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0160]现在参考图10,在一个例子中,计算机程序产品1000包括,例如,一个或多个非易失性计算机可读存储介质1002,在其上存储有计算机可读的程序代码装置或逻辑1004,以提供并方便本发明的一个或多个方面。
[0161]体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
[0162]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0163]本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0164]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
[0165]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0166]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0167]除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,月艮务提供商可从向一个或多个第三方销售广告内容接受付费。
[0168]在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。
[0169]作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
[0170]作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
[0171]虽然上文描述了各种实施例,但这些仅仅是例子。例如,其他架构的计算环境可以结合并使用本发明的一个或多个方面。作为例子,除zl96服务器之外的服务器可以包括、使用和/或受益于本发明的一个或多个方面。此外,除逻辑分区环境之外的环境可以结合和使用本发明的一个或多个方面。另外,可以使用更多、更少或其他操作员消息命令和/或其他命令。此外,可以使用除SMSG之外的传输。此外,复用器可以使用其他逻辑来选择要处理的下一命令。可以有许多其他变化。
[0172]而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器取回代码的次数。
[0173]输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、⑶、DVD、拇指驱动器(thumb drive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器耦合到系统。网络适配器也可耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。
[0174]参考图11,其描述了实施本发明的一个或多个方面的主机计算机系统5000的代表性组件。代表性主机计算机5000包括与计算机存储器(即,中央存储器)5002通信的一个或多个CPU5001,以及到存储介质设备5011和网络5010的I/O接口,以用于与其他计算机或SAN等通信。CPU5001符合具有架构指令集和架构功能的架构。CPU5001可具有动态地址转换(DAT)5003,其用于将程序地址(虚拟地址)转变为存储器的真实地址。DAT典型地包括用于高速缓存转换的转换后备缓冲器(TLB)5007,这样稍后对计算机存储器5002块的访问不需要地址转换的延迟。典型地,高速缓存5009被使用在计算机存储器5002和处理器5001之间。高速缓存5009可以是分层的,具有可被多于一个的CPU获得的大高速缓存,以及大高速缓存和每个CPU之间的较小、较快(较低级)的高速缓存。在一些实施方式中,较低级的高速缓存被拆分以为指令获取和数据访问提供单独的低级高速缓存。在一个实施例中,由指令提取单元5004经由高速缓存5009从存储器5002获取指令。指令在指令解码单元5006中被解码,且(在一些实施例中与其他指令一起)被发送到一个或多个指令执行单元5008。典型地,使用若干执行单元5008,例如算术执行单元、浮点执行单元和分支指令执行单元。指令被执行单元执行,如需要,从指令指定的寄存器或存储器访问操作数。如果将从存储器5002访问(加载或存储)操作数,加载/存储单元5005典型地在被执行的指令的控制下处理该访问。指令可在硬件电路或内部微代码(固件)中或其组合中被执行。
[0175]需注意的是,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及引用和改变记录。寻址的一些方面包括地址格式、地址空间的概念、地址的各种类型和其中一种类型的地址被转换为另一种类型的地址的方式。一些主存储器包括永久分配的存储位置。主存储器向系统提供直接可被寻址的快速访问的数据存储。数据和程序在可被处理之前都将(从输入设备)被加载到主存储器。
[0176]主存储器可包括一个或多个更小、更快速访问的缓冲存储器,有时候被称为高速缓存。高速缓存典型地与CPU或I/O处理器物理地关联。物理结构以及不同存储介质的使用的效果,除了在性能上,通常不会被程序观察到。[0177]可维护用于指令和数据操作数的单独的高速缓存。高速缓存中的信息可被维护为相邻的字节,所述字节位于被称为高速缓存块或高速缓存线(或简称为线)的整数界限上。模型可提供EXTRACT CACHE ATTRIBUTE(提取高速缓存属性)指令,其返回高速缓存线的字节大小。模型也可提供PREFETCH DATA (预取数据)和PREFETCH DATA RELATIVE LONG (预取较长数据)指令,其实现存储到数据或指令高速缓存中的预取,或数据从高速缓存的释放。
[0178]存储器被视为位的长水平串。对于大部分操作来说,以从左到右的顺序进行对存储器的访问。位串被细分为八个位的单位。八位单位被称为字节,其是所有信息格式的基本构件。存储器中的每个字节位置由唯一的非负整数标识,该非负整数是该字节位置的地址,或简称为字节地址。相邻的字节位置具有连续的地址,在左边从O开始且以从左到右的顺序进行。地址是无符号二进制整数,且是24、31或64位。
[0179]信息一次一个字节或一组字节地在存储器和CPU或通道子系统之间传递。除非另有指定,例如在z/Architecture?中,存储器中的一组字节由该组的最左边的字节寻址。组中的字节的数量可由将被执行的操作暗示或显式地指定。当在CPU操作中使用时,一组字节被称为字段。在字节的每个组内,例如在ζ/Architecture?中,位以从左到右的顺序被编号。在z/Architecture?中,最左边的位有时候被称为“高阶”位且最右边的位被称为“低阶”位。但是,位数不是存储器地址。仅字节可被寻址。为了操作存储器中的字节的单个位,访问整个字节。字节上的位从左到右被编号为O到7(例如在z/Architecture?中)。对于24位地址,地址中的位被编号为8-31或40-63,对于31位地址,编号为1_31或33-63,对于64位地址,编号为0-63。在多个字节的任何其他的固定长度的格式中,构成格式的位从O开始被连续编号。为了错误检测,且优选地为了校正,一个或多个校验位可与每一个字节或一组字节一起被传递。这样的校验位由机器自动生成且不能被程序直接控制。存储容量以字节的数量来表示。当存储器操作数字段的长度由指令的操作码暗示时,字段被称为具有固定长度,其可以是一个、两个、四个、八个或十六个字节。可为某些指令暗示更大的字段。当存储器操作数字段的长度没有被暗示,而是被显式地表示时,该字段被称为具有可变长度。可变长度的操作数可以一个字节的增量(或者对于一些指令,以两个字节倍数或其他倍数)在长度上可变。当信息被放在存储器中时,仅替换被包括在指定的字段中的那些字节位置的内容,即使到存储器的物理路径的宽度可能大于正被存储的字段的长度。
[0180]某些信息单元位于存储器中的整数界限上。对于信息单元,当其存储器地址是以字节表示的单元长度的倍数时,界限被称为是整数的。特殊的名称被给予整数界限上的2、
4、8和16字节的字段。半字是两字节边界上的一组两个连续的字节,且是指令的基本构件。字是四字节边界上的一组四个连续的字节。双字是八字节边界上一组八个连续的字节。四倍长字(quadword)是16字节边界上的一组16个连续的字节。当存储器地址指定半字、字、双字和四倍长字时,地址的二进制表示分别包括一个、两个、三个或四个最右边的零位。指令将位于二字节整数边界上。大多数指令的存储器操作数不具有界限对准要求。
[0181]在为指令和数据操作数实现单独的高速缓存的设备上,如果程序在高速缓存线中存储且指令被随后从该高速缓存线获取,可经历显著的延迟,不管该存储是否改变随后被获取的指令。
[0182]在一个实施例中,本发明可被软件(有时候被称为许可的内部代码、固件、微代码、毫代码、微微代码(pico-code)等,其任何一个都将符合本发明)实施。参考图11,体现本发明的软件程序代码可典型地由主系统5000的处理器5001从长期存储介质设备5011(诸如CD-ROM驱动器、磁带驱动或硬盘驱动器)访问。软件程序代码可体现在与数据处理系统一起使用的各种已知介质(诸如软磁盘、硬盘驱动或CD-ROM)中的任何一个上。代码可在这样的介质上被分发,或可从一个计算机系统的计算机存储器5002或存储设备通过网络5010被分发给其他计算机系统的用户,以由这样的其他系统的用户使用。
[0183]软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码通常可从存储介质设备5011调页到相对更高速的计算机存储器5002,在此它对于处理器5001是可用的。用于在存储器中、物理介质上体现软件程序代码和/或经由网络分发软件代码的技术和方法是熟知的,且不会在此被进一步讨论。当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(⑶)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。
[0184]图12示出了可在其中实施本发明的代表性工作站或服务器硬件系统。图12的系统5020包括代表性基本计算机系统(base computer system)5021,诸如个人计算机、工作站或服务器,包括可选的外围设备。根据已知技术,基本计算机系统5021包括一个或多个处理器5026以及被用于连接并使能处理器5026和系统5021的其他组件之间的通信的总线。总线将处理器5026连接到存储器5025以及可包括例如硬盘驱动器(例如,包括磁介质、⑶、DVD和闪存中的任何一个)或磁带驱动器的长期存储器5027。系统5021也可包括用户接口适配器,其经由总线将微处理器5026连接到一个或多个接口设备,诸如键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口设备,其可以是任何用户接口设备,诸如触摸敏感屏、数字化输入垫(digitized entry pad)等。总线也可经由显示适配器将诸如IXD屏幕或监视器的显示设备5022连接到微处理器5026。
[0185]系统5021可通过能与网络5029通信5028的网络适配器与其他计算机或计算机网络通信。示例性网络适配器是通信通道、令牌环网、以太网或调制解调器。或者,系统5021可使用诸如⑶ro (蜂窝数字分组数据)卡的无线接口来通信。系统5021可与局域网(LAN)或广域网(WAN)中的这样的其他计算机关联,或系统5021可以是与另一个计算机的客户机/服务器安排中的客户机等。所有这些配置以及合适的通信硬件和软件在本领域中是已知的。
[0186]图13示出了其中可实施本发明的数据处理网络5040。数据处理网络5040可包括多个单独的网络,诸如无线网和有线网,其每个可包括多个单独的工作站5041、5042、5043、5044。此外,本领域技术人员将理解,可包括一个或多个LAN,其中LAN可包括多个耦合到主处理机的智能工作站。
[0187]仍然参考图13,网络也可包括大型计算机或服务器,诸如网关计算机(客户机服务器5046)或应用服务器(远程服务器5048,其可访问数据储存库,且也可直接从工作站5045被访问)。网关计算机5046用作到每个单独网络的进入点。当将一个联网协议连接到另一个时,需要网关。网关5046可通过通信链路优选地耦合到另一个网络(例如因特网5047)。也可使用通信链路将网关5046直接耦合到一个或多个工作站5041、5042、5043、5044。可以
利用可从国际商业机器公司获得的eServerTMSystem z?.服务器来实现网关计算机。
[0188]同时参考图12和13,可体现本发明的软件编程代码可被系统5020的处理器5026从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质5027访问。软件编程代码可被体现在与数据处理系统一起使用的各种已知介质(诸如软盘、硬盘驱动器或CD-ROM)中的任一个上。代码可在这样的介质上被分发,或从一个计算机系统的存储器或存储设备通过网络被分发到其他计算机系统的用户5050、5051,以供这样的其他系统的用户使用。
[0189]或者,编程代码可体现在存储器5025中,且由处理器5026使用处理器总线访问。这样的编程代码包括操作系统,其控制各种计算机组件和一个或多个应用程序5032的功能和交互。程序代码通常从存储介质5027调页到高速存储器5025,在此它可用于由处理器5026进行处理。用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,不会在此进一步讨论。程序代码,当其被创建且在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(⑶)、DVD、磁带等)上存储时,通常被称为“计算机程序产品”。计算机程序产品介质典型地可以被优选地位于计算机系统中的处理电路读取以由处理电路执行。
[0190]最容易被处理器使用的高速缓存(通常比处理器的其他高速缓存更快更小)是最低级(LI或级别I)高速缓存,且主存储(主存储器)是最高级高速缓存(如果有三个级别的话是L3)。最低级高速缓存经常被分为保持将被执行的机器指令的指令缓存(1-高速缓存),和保持数据操作数的数据高速缓存(D-高速缓存)。
[0191]参考图14,为处理器5026示出了示例性处理器实施例。典型地,使用一个或多个级别的高速缓存5053来缓冲存储器块,以便改善处理器性能。高速缓存5053是高速缓冲器,其保持很可能被使用的存储器数据的高速缓存线。典型的高速缓存线是64、128或256字节的存储器数据。通常使用单独的高速缓存以用于缓存指令而不是缓存数据。高速缓存一致性(存储器和高速缓存中的线的副本的同步)通常由本领域中熟知的各种“窥探”算法提供。处理器系统的主存储器5025通常被称为高速缓存。在具有4个级别的高速缓存5053的处理器系统中,主存储器5025有时候被称为级别5 (L5)高速缓存,因为它典型地更快,且仅保持可被计算机系统使用的非易失性存储器(DASD、磁带等)的一部分。主存储器5025可“高速缓存”由操作系统向主存储器5025调页入或从其调页出的数据页。
[0192]程序计数器(指令计数器)5061保持跟踪将被执行的当前指令的地址。z/Architect:ure?处理器中的程序计数器是64位的,且可被截短为31或24位以支持先前的寻址界限。程序计数器典型地体现在计算机的PSW (程序状态字)中,这样它可在上下文转换中持续。因此,具有程序计数器值的进行中的程序可被例如操作系统中断(从程序环境到操作系统环境的上下文转换)。当程序不活动时,程序的PSW维持程序计数器值,且在操作系统执行时,操作系统的(PSW中的)程序计数器被使用。典型地,程序计数器以等于当前指令的字节数的量增量。RISC (精简指令集计算)指令典型地是固定长度,而CISC (复杂指令集计算)指令典型地是可变长度。IBMz/Architecture?的指令是具有长度为2、4或6字节的CISC指令。程序计数器5061被例如上下文转换操作或分支指令的分支采取操作修改。在上下文转换操作中,当前的程序计数器值与关于正被执行的程序的其他状态信息(诸如条件码)一起被保存在程序状态字中,且新程序计数器值被载入并指向将被执行的新程序模块的指令。执行分支采取操作,以通过将分支指令的结果加载到程序计数器5061中而允许程序进行决定或在程序内循环。
[0193]典型地,使用指令提取单元5055代表处理器5026获取指令。获取单元可获取“下一序列指令”、分支采取指令的目标指令或上下文转换后的程序的第一指令。现在的指令获取单元通常使用预取技术基于被预取的指令将被使用的可能性来推测性地预取指令。例如,获取单元可获取16字节的指令,其包括下一顺序指令以及进一步的顺序指令的额外字节。
[0194]获取的指令随后被处理器5026执行。在一实施例中,获取的指令被传递给获取单元的分派单元5056。分派单元解码指令并将关于解码的指令的信息转发给合适的单元5057、5058、5060。执行单元5057将典型地从指令获取单元5055接收关于解码的算术指令的信息,并将根据指令的操作码对操作数执行算术操作。优选地从存储器5025、架构寄存器5059或从正被执行的指令的立即字段(immediate field)向执行单元5057提供操作数。执行的结果,当被存储时,被存储在存储器5025、寄存器5059或其他机器硬件(诸如控制寄存器、PSW寄存器等)中。
[0195]处理器5026典型地具有一个或多个用于执行指令的功能的单元5057、5058、5060。参考图15A,执行单元5057可通过接口逻辑5071与架构通用寄存器5059、解码/分派单元5056、加载存储单元5060和其他5065处理器单元通信。执行单元5057可使用几个寄存器电路5067、5068、5069来保持算术逻辑单元(ALU) 5066将操作的信息。ALU执行诸如加减乘除的算术操作,以及诸如和、或以及异或(X0R)、旋转和移位的逻辑运算。优选地,ALU支持依赖于设计的专门操作。其他电路可提供其他架构工具5072,例如包括条件码和恢复支持逻辑。典型地,ALU操作的结果被保持在输出寄存电路5070中,该输出寄存器电路可将结果转发到多种其他处理功能。有许多处理器单元安排,本说明书仅旨在提供对一个实施例的代表性理解。
[0196]例如,ADD指令将在具有算术和逻辑功能的执行单元5057中被执行,而例如浮点指令将在具有专用浮点能力的浮点执行中被执行。优选地,执行单元通过在操作数上执行操作码定义的功能在由指令标识的操作数上操作。例如,ADD指令可被执行单元5057在由指令的寄存器字段标识的两个寄存器5059中发现的操作数上执行。
[0197]执行单元5057对两个操作数执行算术加法,并在第三操作数中存储结果,其中第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元优选地利用算术逻辑单元(ALU)5066,其能执行多种逻辑功能,诸如移位、旋转、和、或、异或,以及多种代数函数,包括加减乘除中的任何一个。有些ALU5066被设计为用于标量运算,有些用于浮点。根据架构,数据可以是大端(big endien)(其中最低有效字节位于最高字节地址)或小端(littleendien)(其中最低有效字节位于最低字节地址)。TBM z/Architecture?是大端。根据架构,带符号字段可以是符号和幅度、I的补码或2的补码。2的补码数是有利的,其在于ALU不需要设计减法能力,因为不管是2的补码中的负值还是正值,都仅要求ALU中的加法。数字通常以速记描述,其中12位的字段定义了 4096字节块的地址,且通常被描述为例如4Kbyte (千字节)块。
[0198]参考图15B,用于执行分支指令的分支指令信息典型地被发送到分支单元5058,该分支单元经常使用诸如分支历史表5082的分支预测算法,在其他条件运算完成前预测分支结果。在条件运算完成前,当前分支指令的目标将被获取并推测性地执行。当条件运算完成时,基于条件运算的条件和推测的结果,推测性执行的分支指令或被完成或被丢弃。典型的分支指令可测试条件码,以及如果条件码满足分支指令的分支要求,分支到目标地址,分支地址可基于若干数被计算,所述数包括例如在寄存器字段或是指令的立即字段中找到的数。分支单元5058可利用具有多个输入寄存器电路5075、5076、5077和一个输出寄存器电路5080的ALU5074。分支单元5058可与例如通用寄存器5059、解码分派单元5056或其他电路5073通信。
[0199]一组指令的执行可由于多个原因中断,所述原因包括例如由操作系统发起的上下文转换、引起上下文转换的程序异常或错误、引起上下文转换的I/o中断信号或多个程序(在多线程环境中)的多线程活动。优选地,上下文转换动作保存关于当前执行的程序的状态信息,且随后加载关于正被调用的另一个程序的状态信息。状态信息可被存储在例如硬件寄存器或存储器中。状态信息优选地包括指向将被执行的下一个指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文转换活动可被硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或许可内部码(LIC))单独地或其组合实现。
[0200]处理器根据指令定义的方法而访问操作数。指令可使用指令的一部分的值提供立即操作数,可提供一个或多个寄存器字段,其显式地指向通用寄存器或专用寄存器(例如浮点寄存器)。指令可利用由操作码字段确定的暗示的寄存器作为操作数。指令可利用用于操作数的存储器位置。可由寄存器、立即字段或寄存器和立即字段的组合提供操作数的存储器位置,如由z/Architecture?长位移工具(facility)所例示的,其中该指令定义了基寄存器、索引寄存器和立即字段(位移字段),它们加到一起,以提供例如存储器中的操作数的地址。除非另外指明,此处的位置典型地意味着主存储器(主存储设备)中的位置。
[0201]参考图15C,处理器使用加载/存储单元5060访问存储器。加载/存储单元5060可以通过获取存储器5053中的目标操作数的地址并将操作数加载到寄存器5059或其他存储器5053位置中,来执行加载操作,或可以通过获取存储器5053中的目标操作数的地址并将从寄存器5059或另一个存储器5053位置获得的数据存储在存储器5053中的目标操作数位置,来执行存储操作。加载/存储单元5060可以是推测性的,且可以以相对于指令顺序来说无序的顺序访问存储器,但是加载/存储单元5060将向程序维持指令按顺序执行的外观。加载/存储单元5060可与通用寄存器5059、解密/分派单元5056、高速缓存/存储器接口 5053或其他元件5083通信,且包括各种寄存器电路、ALU5085和控制逻辑5090以计算存储器地址并提供流水线顺序以使操作保持次序。一些操作可不按顺序,但加载/存储单元提供功能以使不按顺序执行的操作对程序看起来如已按顺序执行一样,如本领域所熟知的。
[0202]优选地,应用程序“看到的”地址通常被称为虚拟地址。虚拟地址有时候被称为“逻辑地址”和“有效地址”。这些虚拟地址之所以虚拟,在于它们由多种动态地址转换(DAT)技术中的一种重定向到物理存储器位置,所述动态地址转换技术包括但不限于简单地给用偏移值给虚拟地址加前缀、经由一个或多个转换表转换虚拟地址,所述转换表优选地包括至少一个段表和一个页表(单独地或组合地),优选地,段表具有指向页表的项。在z/Architecture?中,提供转换分级结构,包括区域第一表、区域第二表、区域第三表、段表和可选的页表。地址转换的性能通常通过利用转换后备缓冲器(TLB)被改善,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储位置的项。当DAT使用转换表转换虚拟地址时,创建项。于是,虚拟地址的随后使用可利用快的TLB的项,而不是慢的顺序转换表访问。TLB内容可由包括LRU (最少最近使用)的多个替换算法来管理。
[0203]在处理器是多处理器系统的处理器的情况下,每个处理器具有保持共享资源的责任,所述共享资源诸如I/o、高速缓存、TLB和存储器,它们互锁以实现一致性。典型地,“窥探”技术将被用于维持高速缓存一致性。在窥探环境中,每个高速缓存线可被标记为正处于共享状态、独占状态、改变状态、无效状态等中的一个,以便有助于共享。
[0204]I/O单元5054 (图14)向处理器提供用于附加到例如包括磁带、盘、打印机、显示器和网络的外围设备的装置。I/o单元通常由软件驱动器向计算机程序呈现。在诸如来自IBM?的System z?'的大型计算机中,通道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型计算机的i/o单元。
[0205]而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。
[0206]在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
[0207]更具体地,在大型计算机中,程序员(通常是如今的“C”程序员)一般通过编译器应用使用架构机器指令。存储在存储介质中的这些指令可以在z/Architecture?IBM?服务器中本机地执行,或在执行其他架构的机器中执行。它们可在现有的和未来的IBM?大型计算机服务器以及IBM?的其他机器(例如,Power Systems服务器和System X?.服务器)中被仿真。它们可在使用山IBM?、丨ntel?、AMD?等制造的硬件的各种机器上运行Linux的机器中被执行。除了在z/Architecture? K的该硬件上执行,Linux也可被用于这样的机器,其使用由Hercules、UMX或FSI (Fundamental Software, Inc)(其中一般地执行是处于仿真模式中)提供的仿真。在仿真模式中,仿真软件由本机处理器执行以仿真被仿真处理器的架构。
[0208]本机处理器典型地执行仿真软件,其包括固件或本机操作系统,以执行被仿真处理器的仿真程序。仿真软件负责获取并执行被仿真处理器架构的指令。仿真软件维护仿真的程序计数器以保持跟踪指令界限。仿真软件可一次获取一个或多个仿真的机器指令,并将所述一个或多个仿真的机器指令转换为对应的本机机器指令组,以由本机处理器执行。这些转换的指令可被高速缓存,这样可完成更快的转换。仿真软件将维持被仿真的处理器架构的架构规则以保证为被仿真处理器编写的操作系统和应用正确操作。而且,仿真软件将提供由被仿真的处理器架构确定的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址转换功能、中断机制、上下文转换机制、日中时间(TOD)时钟和到I/O子系统的架构接口,这样被设计为在被仿真处理器上运行的操作系统或应用程序可在具有仿真软件的本机处理器上运行。
[0209]解码正被仿真的特定指令,且调用子例程以执行该单个指令的功能。仿真被仿真处理器的功能的仿真软件功能例如在“C”子例程或驱动器中实现,或由提供用于特定硬件的驱动器的其他方法实现,如本领域技术人员在理解优选实施例的描述后将理解的。包括但不限于 Beausoleil 等人的标题为 “Multiprocessor for Hardware Emulation” 的美国专利证书号 5,551,013 ;以及 Scalzi 等人的标题为 “Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美国专利证书号 6, 009, 261 ;以及 Davidian 等人的标题为 “Decoding Guest Instruction toDirectly Access Emulation Routines that Emulate the Guest Instructions,,的美国专利证书号,5,574,873 ;以及Gorishek等人的标题为“Symmetrical Multiprocessing Busand Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem”的美国专利证书号6,308, 255 ;以及Lethin等人的标题为“Dynamic OptimizingObject Code Translator for Architecture Emulation and Dynamic Optimizing ObjectCode Translation Method”的美国专利证书号6,463,582,;以及Eric Traut的标题为“Method for Emulating Guest Instructions on a Host Computer Through DynamicRecompilation of Host Instructions”的美国专利证书号5,790,825 ;以及许多其他专利的各种软件和硬件仿真专利示出各种已知的方式来实现针对可为本领域技术人员获得的目标机器对为不同机器进行架构设计的指令格式的仿真。
[0210]在图16中,提供了仿真主计算机系统5092的例子,其仿真主架构的主计算机系统5000’。在仿真主计算机系统5092中,主处理器(CPU) 5091是仿真主处理器(或虚拟主处理器),并包括具有与主计算机5000’的处理器5091不同的本机指令集架构的仿真处理器5093。仿真主计算机系统5092具有可被仿真处理器5093访问的存储器5094。在示例性实施例中,存储器5094被分区为主计算机存储器5096部分和仿真例程5097部分。根据主计算机架构,主计算机存储器5096对于仿真主计算机5092的程序来说是可用的。仿真处理器5093执行与被仿真处理器5091不同架构的架构指令集的本机指令(即来自仿真程序处理器5097的本机指令),且可通过使用从顺序和访问/解码例程获得的一个或多个指令从主计算机存储器5096中的程序访问用于执行的主机指令,所述顺序和访问/解码例程可解码访问的主机指令,以确定用于仿真被访问的主机指令的功能的本机指令执行例程。被定义用于主计算机系统5000’架构的其他工具可被架构工具例程仿真,所述架构工具例程包括诸如通用寄存器、控制寄存器、动态地址转换和1/0子系统支持和处理器高速缓存等工具。仿真例程也可利用在仿真处理器5093中可获得的功能(诸如通用寄存器和虚拟地址的动态转换)以改善仿真例程的性能。也可提供专用硬件和卸载引擎以辅助处理器5093来仿真主计算机5000’的功能。
[0211]在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
【权利要求】
1.一种用于管理计算环境的缓冲器的计算机程序产品,所述计算机程序产品包括: 计算机可读存储介质,其可被处理电路读取并存储指令以供处理电路执行以便执行一种方法,所述方法包括: 将耦合设施的缓冲器设置成活动状态或空闲状态,包括: 响应于具有关联操作员消息令牌值的开始操作员消息命令,设置所选缓冲器中的操作员消息令牌值并使得所选缓冲器活动;以及 确定计算环境的耦合设施的所选缓冲器将被重置,该缓冲器包括关于处理从被耦合到耦合设施但与之分离的处理器映像远程地向耦合设施发送的操作员消息命令的信息,该操作员消息命令用以对耦合设施执行动作,所选缓冲器包括具有使得所选缓冲器与具有操作员消息(OM)令牌的操作员消息相关的令牌值的令牌字段,所述操作员消息(OM)令牌具有相同的令牌值;以及 响应于确定缓冲器将被重置而将所确定的缓冲器设置成空闲状态,其中,所述缓冲器包括多个字段,该字段包括用以指示对于缓冲器而言操作员消息已经活动的时间长度的定时器、操作员消息请求长度以及操作员消息响应长度。
2.如权利要求1所述的计算机程序产品,其中,所述确定是基于由耦合设施接收到的明确操作员消息命令,该明确操作员消息命令具有用于选择与令牌匹配的令牌字段值的缓冲器的令牌。
3.如权利要求2所述的计算机程序产品,其中,所述明确操作员消息命令包括删除操作员消息命令。
4.如权利要求2所述 的计算机程序产品,其中,所述明确操作员消息命令包括开始操作员消息命令。
5.如权利要求4所述的计算机程序产品,其中,所述确定包括响应于处理开始操作员消息命令而确定缓冲器是活动的且已超时;并且其中,所述设置包括用与开始操作员消息命令相关联的信息将缓冲器的一个或多个字段初始化,该信息包括操作员消息令牌值。
6.如权利要求1所述的计算机程序产品,其中,所述确定是隐含地基于耦合设施所考虑的定义标准。
7.如权利要求6所述的计算机程序产品,其中,所述定义标准包括确定缓冲器是活动的,具有待决响应,并且与缓冲器相关联的超时值已经超过预定时间值。
8.如权利要求1所述的计算机程序产品,其中,所述重置包括处理删除操作员消息命令,该删除操作员消息命令包括具有消息报头、指示删除操作员消息命令的命令以及操作员消息令牌的消息命令块。
9.如权利要求8所述的计算机程序产品,其中,所述处理包括: 确定缓冲器中的操作员消息令牌与删除操作员消息令牌中的操作员消息令牌匹配;以及 响应于确定指示缓冲器中的操作员消息令牌与删除操作员消息命令中的操作员消息令牌匹配,检查操作员消息响应是否是待决的; 响应于确定指示操作员消息响应是待决的,将缓冲器的一个或多个字段重置并将缓冲器的状态设置成空闲;以及 提供指示操作员消息被删除的消息响应块。
10.如权利要求9所述的计算机程序产品,其中,所述方法还包括将操作员消息令牌设置成零。
11.一种用于管理计算环境的缓冲器的计算机系统,所述计算机系统包括: 存储器;以及 与存储器通信的处理器,其中,所述计算机系统被配置成执行一种方法,所述方法包括: 将耦合设施的缓冲器设置成活动状态或空闲状态,包括: 响应于具有关联操作员消息令牌值的开始操作员消息命令,设置所选缓冲器中的操作员消息令牌值并使得所选缓冲器活动;以及 确定计算环境的耦合设施的所选缓冲器将被重置,该缓冲器包括关于处理从被耦合到耦合设施但与之分离的处理器映像远程地向耦合设施发送的操作员消息命令的信息,该操作员消息命令用以对耦合设施执行动作,所选缓冲器包括具有使得所选缓冲器与具有操作员消息(OM)令牌的操作员消息相关的令牌值的令牌字段,所述操作员消息(OM)令牌具有相同的令牌值;以及 响应于确定缓冲器将被重置而将所确定的缓冲器设置成空闲状态,其中,所述缓冲器包括多个字段,该字段包括用以指示对于缓冲器而言操作员消息已经活动的时间长度的定时器、操作员消息请求长度以及操作员消息响应长度。
12.如权利要求11所述的 计算机系统,其中,所述确定是基于由耦合设施接收到的明确操作员消息命令,该明确操作员消息命令具有用于选择与令牌匹配的令牌字段值的缓冲器的令牌。
13.如权利要求11所述的计算机系统,其中,所述确定是隐含地基于耦合设施所考虑的定义标准。
14.如权利要求13所述的计算机系统,其中,所述定义标准包括确定缓冲器是活动的,具有待决响应,并且与缓冲器相关联的超时值已经超过预定时间值。
15.如权利要求11所述的计算机系统,其中,所述重置包括处理删除操作员消息命令,该删除操作员消息命令包括具有消息报头、指示删除操作员消息命令的命令以及操作员消息令牌的消息命令块。
16.如权利要求15所述的计算机系统,其中,所述处理包括: 确定缓冲器中的操作员消息令牌与删除操作员消息令牌中的操作员消息令牌匹配;以及 响应于确定指示缓冲器中的操作员消息令牌与删除操作员消息命令中的操作员消息令牌匹配,检查操作员消息响应是否是待决的; 响应于确定指示操作员消息响应是待决的,将缓冲器的一个或多个字段重置并将缓冲器的状态设置成空闲;以及 提供指示操作员消息被删除的消息响应块。
17.如权利要求16所述的计算机系统,其中,所述方法还包括将操作员消息令牌设置成零。
18.一种用于管理计算环境的缓冲器的方法,所述方法包括: 将耦合设施的缓冲器设置成活动状态或空闲状态,包括:响应于具有关联操作员消息令牌值的开始操作员消息命令,设置所选缓冲器中的操作员消息令牌值并使得所选缓冲器活动;以及 确定计算环境的耦合设施的所选缓冲器将被重置,该缓冲器包括关于处理从被耦合到耦合设施但与之分离的处理器映像远程地向耦合设施发送的操作员消息命令的信息,该操作员消息命令用以对耦合设施执行动作,所选缓冲器包括具有使得所选缓冲器与具有操作员消息(OM)令牌的操作员消息相关的令牌值的令牌字段,所述操作员消息(OM)令牌具有相同的令牌值;以及 响应于确定缓冲器将被重置而将所确定的缓冲器设置成空闲状态,其中,所述缓冲器包括多个字段,该字段包括用以指示对于缓冲器而言操作员消息已经活动的时间长度的定时器、操作员消息请求长度以及操作员消息响应长度。
19.如权利要求18所述的方法,其中,所述确定是基于由耦合设施接收到的明确操作员消息命令,该明确操作员消息命令具有用于选择与令牌匹配的令牌字段值的缓冲器的令牌。
20.如权利要求18所述的方法,其中,所述重置包括处理删除操作员消息命令,该删除操作员消息命令包括具有消息报头、指示删除操作员消息命令的命令以及操作员消息令牌的消息命令块。
【文档编号】G06F13/37GK103582879SQ201280025769
【公开日】2014年2月12日 申请日期:2012年6月6日 优先权日:2011年6月10日
【发明者】T.肖, S.N.戈斯, D.埃尔科 申请人:国际商业机器公司

最新回复(0)