响应于适配器事件采取的动作的操作系统通知的制作方法

文档序号:6352182阅读:199来源:国知局
专利名称:响应于适配器事件采取的动作的操作系统通知的制作方法
技术领域
本发明一般涉及促进计算环境中的通信,并且更具体而言,涉及促进响应于适配器事件所采取的动作的通知。
背景技术
Arbeitman 等在 2006 年 11 月 21 日发布的题为 “Method and ApparatusforReporting Global Errors on Heterogeneous Partitioned Systems”(用于在异构分区的系统上全局错误的方法和装置)的第7,139,940号美国专利描述了用于在具有运行不同类型操作系统的多个分区的逻辑分区数据处理系统中报告全局错误的计算机指令。响应于检测全局错误,将唯一的标识符分配给全局错误。将所述唯一的标识符发送到服务焦点。还将所述唯一的标识符发送到分区。将来自分区的错误信息报告给焦点。所述分区将错误信·息发送到与所述唯一的标识符相关联的焦点。所述焦点识别从分区发送的错误信息,其用于使用唯一标识符的全局错误。Marisetty等在2009年6月 9 日发布的题为“OS and FirmwareCoordinated ErrorHandling Using Transparent Firmware Intercept andFirmware Services,,(使用透明固件截取和固件服务的OS和固件协调的错误处理)的第7,546,487号美国专利中描述了用于使用协调的操作系统(OS)和固件服务执行硬件错误处理的方法和架构。在一个方面,提供硬件接口以使OS能够访问固件错误处理服务。这种服务使OS能够访问与平台硬件错误相关的错误数据,其中不能经由平台处理器或通过其它传统方式来直接访问所述错误数据。还公开了用于硬件错误事件的截取和处理,以及在尝试使用基于OS的服务对错误进行服务之前引导对固件错误处理服务的控制的技术。固件服务可以纠正硬件错误和/或记录错误数据,其中OS稍后可能会访问所述错误数据或稍后使用带外通信信道将所述错误数据提供给远程管理服务器。根据另一方面,可按照对OS透明的方式来执行固件截取和服务。Bailey 等在 2009 年 6 月 16 日发布的题为 “Autonomic Recovery fromHardwareErrors on an Input/Output Fabric”(从输入/输出结构上的硬件错误的自动恢复)的第7,549,090号美国专利介绍了一种将10结构元件中检测的错误从10结构传播到计算机中的处理元件的装置、计算机产品和方法,其中所述10结构用于耦合多个端点10字段。特别地,结合从10结构元件中的错误恢复,将这种错误传播到受10结构元件影响的端点10字段。通过这样做,可以允许设备驱动器或用于访问每个受影响的10资源的其它程序代码异步地从其相关联的10资源的传播错误中恢复,并且通常不需要从10结构元件中的错误恢复以等待对每个受影响的10资源的完成恢复。此外,10结构可被动态地配置为支持可恢复和不可恢复的端点10资源。特别地,响应于端点10资源是非可恢复属性的检测,10结构中的10结构元件可被动态地配置为使机器能够检查这种10结构中的信令。在硬件路径中部署如此被动态配置的10结构元件,其中在非可恢复资源和访问非可恢复资源的之间定义所述硬件路径。
存在这样的计算机环境,其中硬件中发生的某些事件对于处理器固件来说是不可见的。例如,存在不将适配器错误报告给处理器固件而是报告给操作系统的情况。然而,操作系统不负责处理这种错误。因此,固件无法检测的这些事件是无法被处理的。

发明内容
根据本发明的方面,提供一种用于将要采取的处理这种事件的动作通知给固件的能力。通过提供用于促进要被采取的动作的通信的计算机程序产品来克服现有技术的缺点并且提供优点。计算机程序产品包括计算机可读存储介质,其为处理电路可读并且存储由处理电路所执行的指令,以用于执行一种方法。所述方法包括例如,响应于执行指定控制块的服务呼叫逻辑处理器(SCLP)指令,所述控制块包括事件类型、适配器的功能句柄、适 配器类型和动作限定符(qualifier),基于所述动作限定符来执行动作,所述动作包括重置适配器或请求修复动作中的一个;响应于完成SCLP,通知操作系统;并且响应于执行由操作系统响应于通知来发出的存储事件信息命令,获得与所述动作相关的信息。进一步地,提供一种用于促进事件的通信的计算机程序产品。计算机程序产品包括计算机可读存储介质,其为处理电路可读并且存储由处理电路所执行的指令,以用于执行一种方法。例如,所述方法包括例如,响应于已经出现的与适配器相关的事件,通知操作系统;以及响应于由操作系统响应于所述通知来执行存储事件信息命令,获得与事件相关联的信息,所述信息包括标识适配器的功能句柄并且事件码提供与适配器相关的状态。此处,还描述和要求保护与本发明的一个或多个方面相关的方法和系统。通过本发明的技术可以实现附加的特征和优点。此处详细地描述本发明的其他实施例和方面,并且将本发明的其他实施例和方面认作要求保护的发明的一部分。


现在将仅通过实例的方式并参照附图来描述本发明的优选实施例,其中图I示出了包含并使用本发明的一个或多个方面的计算环境的一个实施例;图2A示出了根据本发明的一方面来执行错误检测和动作通知的逻辑的一个实施例;图2B示出了根据本发明的一方面的通知操作系统已经采取了动作的逻辑的一个实施例;图3示出了根据本发明的一方面使用的控制块的一个实施例;图4示出了包括本发明的一个或多个方面的计算机程序产品的一个实施例;图5示出了包括和使用本发明的一个或多个方面的主机计算机系统的一个实施例;图6示出了包括和使用本发明的一个或多个方面的计算机系统的另一例子;图7示出了包括和使用本发明的一个或多个方面的计算机网络的计算机系统的
另一例子;图8示出了包括和使用本发明一个或多个方面的计算机系统的各种元件的一个实施例;
图9A示出了包括和使用本发明的一个或多个方面的图8的计算机系统的执行单元的一个实施例;图9B示出了包括和使用本发明的一个或多个方面的图8的计算机系统的分支单元的一个实施例;图9C描述了包括和使用本发明的一个或多个方面的图8的计算机系统的加载/存储单元的一个实施例;以及图10描述了包括和使用本发明的一个或多个方面的仿真主机计算机系统的一个实施例。
具体实施方式
根据本发明的一方面,提供一种促进向处理器固件通知响应于适配器事件要采取的动作的能力。由在处理单元内执行的操作系统来执行通知。作为例子,为操作系统提供将操作系统所检测的适配器错误和/或响应于错误要采取的动作通知处理单元的固件的能力。如此处使用的,固件是例如处理器的微代码、毫代码(millicode)和/或宏代码。它包括例如用于实现更高级的机器码的硬件级的指令和/或数据结构。在一个实施例中,它包括例如专有(proprietary)代码,该专有代码典型地作为包括可信软件的微代码或特定于底层硬件的微代码而被交付,并控制操作系统访问系统硬件。在一个特定的实施例中,操作系统在已逻辑分区的环境中执行。在这种环境中,当分区使用适配器功能时,所述分区逻辑上拥有所述功能。例如,所述分区的操作系统访问所述适配器并且允许所述功能访问所述分区的存储器。由于分区逻辑上拥有所述功能,既然某些错误被直接报告给在分区操作系统上运行的设备驱动器而绕过固件,所以它们对于固件来说是不可视的。这意味着分区操作系统设备驱动器且不是固件可能知道需要硬件修复或服务的某些错误。这是有问题的,因为分区操作系统不拥有执行整个系统的硬件维护或修复的责任;没有从操作系统请求用于硬件的修复动作的现有方法;操作系统执行设备专用处理,甚至是适配器类型间共同的那些错误;并且设备驱动器的恢复动作是不一致的并且动作包含几乎无法恢复到复杂方案。因此,根据本发明的一方面,提供允许操作系统将适配器错误和/或要采取的动作通知给固件的能力。在本发明的一个方面,提供当由分区操作系统且不是固件检测到问题时,用于请求外部适配器的维护或修复动作的通用架构。固件发起一致的全系统方法进行恢复,而不是将恢复留给操作系统。此外,如这里所使用的,术语适配器包括任意类型的适配器(例如存储适配器、网络适配器、处理适配器、PCI适配器、加密适配器、其他类型的输入/输出适配器等)。在一个实施例中,一适配器包括一个适配器功能。但是,在其他实施例中,一适配器可包括多个适配器功能。本发明的一个或多个方面可以应用,不管一适配器包含一个适配器功能或多个适配器功能。此外,在这里展示的例子中,适配器是与适配器功能(例如PCI功能)可互换地使用,除非另外说明。参考图I描述包含并使用本发明的一个或多个方面的计算环境的一个实施例。在一个例子中,计算环境100是由国际商业机器公司提供的Systemz 服务器。Systemz 服务器是基于由国际商业机器公司提供的z,ZArchitecture'关于z/Airhiteeture^细节在IBM 出版,物11 中描述,该出版物的标题是“z/Architecture Principles of Operation”(z/Architecture 操作原理),IBM 出版号 SA22-7832-07,2009 年 2 月。IBMa、System Z 和z/Architecture0是位于纽约州阿蒙克的国际商业机器公司的注册商标。在此使用的其他名字可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。在一个例子中,计算环境100包括经由存储控制器106耦合到系统存储器104(也称为主存储器)的中央处理复合体102。存储器控制器106从中央处理复合体接收读取或写入情趣,并且访问用于中央处理复合体的系统存储器。存储控制器106例如包含硬件且被用于仲裁对系统存储器的访问并维持存储器的一致性。该仲裁针对从中央处理复合体接收的请求以及从一个或多个适配器110接收的请求而执行。与中央处理单元类似,适配器向系统存储器104发出请求以获得对系统存储器的访问。例如,适配器110是外围组件互连(PCI)或PCI Express (PCIe)适配器,其包括一个或多个PCI功能。PCI功能发出请求,该请求要求访问系统存储器。所述请求经由一个或多个交换器(例如,PCIe交换器)114被路由到输入/输出集线器112 (例如,PCI集线器)。在一个例子中,输入/输出集线器包括含有一个或多个状态机的硬件。所述输入/输 出集线器经由I/o到存储器总线118耦合到存储器控制器106。中央处理器复合体102还耦合到服务处理器102,其促进对服务请求和通知的处理,如下面进一步详细介绍的。服务处理器例如是服务器,例如由国际商业机器公司提供的PowerPC 或System z 服务器。还可使用其它服务器或其它处理器和系统。PowerPC 是纽约阿蒙克的国际商业机器公司的注册商标。中央处理复合体102包括例如一个或多个分区或区域130 (例如,逻辑分区LPl-LPn)、一个或多个中央处理器132 (例如,CPl_CPm)、以及管理程序134 (例如,逻辑分区管理器),下面介绍上述内容中的每一个。每个逻辑分区130能够用作单独的系统。即,每个逻辑分区可以独立地重置、利用操作系统或管理程序(例如,由纽约阿蒙克的国际商业机器公司提供的z/VMe)进行初始加载(如果需要的话),并且利用不同的程序进行操作。在逻辑分区中运行的操作系统、管理程序或应用程序似乎具有对完整和全部系统的访问,但仅其一部分是可用的。硬件和许可内部码(还被称为微代码或毫代码)保持逻辑分区中的程序不受不同逻辑分区中的程序的干扰。这样允许多个不同的逻辑分组按时间片方式在单个或多个物理处理器上操作。在这种特定的实例中,每个逻辑分区具有驻留操作系统136,其对于一个或多个逻辑分区可以是不同的。在一个实施例中,操作系统136是由纽约阿蒙克的国际商业机器公司提供的z/OSB或zLinux操作系统。z/OSMPz/VM11是纽约阿蒙克的国际商业机器公司的注册商标。中央处理器132是被分配给逻辑分区的物理处理器资源。例如,逻辑分区130包括一个或多个逻辑处理器,每个逻辑处理器代表被分配给分区的全部物理处理器资源132或物理处理器资源132的共享。底层(underlying)处理器资源可专用于所述分区或与另一分区共享。通过由处理器132上运行的固件实现的管理程序134来管理逻辑分区130。逻辑分区130和管理程序134每个都包括一个或多个程序,所述程序驻留在与中央处理器相关联的中央存储的相应部分中。管理程序134的一个例子是由纽约阿蒙克的国际商业机器公司所提供的处理器资源/系统管理器(PR/SM)。
尽管在这个例子中描述了具有逻辑分区的中央处理复合体,可将本发明的一个或多个方面合并到其他处理单元或并且由其他处理单元来使用,包括多个处理单元中未被分区的单个或多个处理器处理单元。此处介绍的中央处理复合体仅是一个例子。根据本发明的一方面,在中央处理复合体的逻辑分区中执行的操作系统检测适配器事件并且调用用于适配器的动作,其是外部的,但耦合到中央处理复合体。例如,操作系统检测适配器错误并且请求一个或多个要采取的用于适配器的动作。在一个例子中,所述错误是固件未检测到的。通过参照图2来进一步详细地介绍上述处理,其中提供一种当操作系统(例如,分区操作系统)并且不是固件检测到问题时,用于请求外部适配器的维护或修复动作的通用架构。参照图2A,执行逻辑以检测适配器错误(或其它适配器事件),通知固件,并且采取动作。在这个例子中,由多个实体来执行所述逻辑。例如,通过在处理单元上执行的操作系统,并且特别地,通过与发生事件的适配器相关联的操作系统设备驱动器来执行由200所指示的逻辑;由中央处理复合体(或其它处理单元)的固件执行在202处指 示的逻辑;以及由耦合到中央处理复合体的服务处理器来执行由204所指示的逻辑。开始,操作系统检测错误,步骤210。例如,与引发错误并且作为操作系统的一部分来执行的适配器相关联的设备驱动器,经由事件或状态更新来检测错误。然后,作出所述错误是要由操作系统来处理的软件错误还是硬件错误的确定,查询212。设备驱动器可通过事件或状态更新中指示的错误类型来确定上述内容。例如,设备驱动器具有错误分类,并且使用这些分类和事件或状态更新可确定错误类型。如果错误不是硬件错误,那么由操作系统来处理错误。步骤214。错误的处理专用于操作系统和错误类型。处理完成,步骤216。返回查询212,如果错误是硬件错误,那么建立包括与适配器和要采取的动作相关的各种信息的控制块,步骤218。在这个例子中,创建服务呼叫控制块(SCCB),通过参照图3来介绍所述创建服务呼叫控制块的例子。参照图3,在一个实施例中,创建服务呼叫控制块300包括a)事件类型302,其指定被请求的事件的类型,并且在这个例子中,被设置为等于“适配器服务请求”;b)功能句柄304,其标识适配器的实例(例如适配器功能)。在一个例子中,句柄包括使能指示器,其指示句柄是否是使能的、标识适配器功能的功能号(这是静态标识符并且可用于功能表中的索引以对包括用于适配器功能的可操作参数的条目进行定位);以及实例号,其指定所述句柄的特定实例;c)物理功能标识符306,其是适配器的静态标识符(例如适配器功能),并且可标识适配器的物理位置;d)适配器类型308,其描述适配器类型(例如,PCI适配器功能);e)动作限定符310,其描述要采取的一个或多个特定动作(例如,重置、然后解除配置;重置;解除配置;请求修复等)。在这个例子中,动作限定符是不依赖于设备的,但是在其它例子中,可以是依赖于设备的。即,在这个例子中,动作限定符不依赖于适配器类型(即,它是与依赖于设备的)。f)响应码312,其包括操作的结果;以及g)可选数据314,其依赖于动作限定符并且可以是适配器专用的。
在其它实施方式中,SCCB中可包括更多、更少或不同的信息。返回图2A,在创建SCCB之后,将SCCB提供给固件。在一个例子中,经由服务呼叫逻辑处理器(SCLP)指令来进行提供,步骤220。由操作系统发出的并且由固件执行的服务呼叫逻辑处理器指令包括命令(例如,配置适配器、解除配置适配器和SCCB的位置的指示。命令和SCCB提供要采取的动作的指示。响应于接收SCLP指令,固件分析SCCB中的信息,步骤222。基于SCCB中的信息,固件确定适配器服务是否被请求,查询224。通过检查在服务呼叫逻辑处理器指令所提供的服务呼叫控制块中的事件类型来作出上述确定。如果所请求的服务不是适配器服务,那么过程完成,步骤226。否则,由固件分析所请求的动作,步骤228。例如,固件分析动作限定符(例如,重置,请求修复)来确定要采取的一个或多个动作。动作限定符是SCLP解除配置命令的子命令。 进一步的,固件发起对描述事件和所请求的动作的记录的创建,步骤230。例如,固件发送请求给服务处理器,以在系统记录中创建条目。所述请求中包括的是SCCB和服务参考码(SRC)。在一个实施例中,存在与每个适配器类型/动作限定符组合的相关联的唯一SRC。附加地,固件可请求对其它记录的创建。此外,固件可执行由动作限定符所指定的一个或多个动作,步骤232。例如,其可执行或指示适配器执行重置、解除配置等。服务处理器接收服务请求并分析所述请求,以确定要被创建的记录条目,步骤240。响应于所述分析,其在描述所请求的动作的系统记录中创建条目,步骤242。在一个例子中,记录包括SCCB。可以基于动作限定符、特定适配器和固件的请求来生成附加记录。此外,服务处理器确定是否需要“呼叫归属”,查询244。在这个例子中,“呼叫归属”指将错误报告提供给特定实体,例如IBM ,并且请求要被采取的修复和维护动作。即,即使固件可能采取动作,例如重置、解除配置等,仍需请求指示适配器需要服务(例如,物理修复)的修复动作。是否需要“呼叫归属”的确定依赖于服务请求中接收的SRC的值。如果不需要“呼叫归属”,那么完成处理,步骤246。否则,如果需要“呼叫归属”,则发出“呼叫归属”,步骤248。异步地,固件利用外部中断来完成操作并且将结果报告给SCCB (例如,在SCCB的响应码中)。响应于固件基于动作限定符执行动作,例如,重置适配器或请求修复动作,向操作系统通知已经通过正常SCLP完成、外部中断和SCCB中的响应码来执行了所述动作。还可应用其它主动请求的事件。这通过参照图2B进一步介绍。通知操作系统,步骤250。例如,从固件为操作系统提供信道报告字(CRW),其指示已经执行了所述动作。响应于接收所述信道报告字,操作系统发出存储事件信息命令以获得关于事件的信息。特别地,在一个例子中,由固件执行存储事件信息命令,并且返回响应块,所述响应块包括例如,指定与所述事件相关联的适配器的功能句柄;标识适配器的功能标识符;以及描述用于适配器可用性事件通知的原因的事件码。示例的事件码包括已将PCI功能(或适配器)移动到所配置的状态。存储通用PCI功能句柄。已将PCI功能从保留状态移动到待机状态。存储通用PCI功能句柄,但是所述配置不使用所述通用PCI功能句柄,直到成功地配置了由PCI功能标识符所标识的PCI。
请求PCI功能的解除配置。如果PCI功能被使能,那么存储使能的PCI功能。如果PCI功能被禁用,则存储通用PCI功能句柄。使用人工控制,将PCI功能从配置状态移动到就绪或保留状态。存储通用PCI功能句柄,但是所述配置不使用所述通用PCI功能句柄。可用于映射I/O地址转换的存储器数量已经改变。一个或多个PCI功能可能处于待机状态。不存储PCI功能级别和PCI功能ID。这些事件码为操作系统提供由句柄所标识的适配器的状态的指示。此处详细介绍的是允许操作系统或适配器外部的其它组件能够代表适配器发起动作。这些动作包括例如,系统级维护和修复请求。软件(例如,操作系统)可以通过独立于设备驱动器的固件来获得错误的一致性处理的优点。操作系统,与所述操作系统是何种系统无关,可发出请求(对于各种操作系统来说是相同的)以使固件采取动作,并且固件处理 要被采取的动作的设备专用属性。多种不同类型的操作系统并且在一个或多个类型的适配器之间使用单个方法(例如,网络、存储器、密码机和/或处理适配器)在此描述的实施例中,适配器是PCI适配器。如在此使用的,PCI指根据由外围组件互连特别兴趣组(PCI-SIG)定义的基于PCI的规范而实现的任何适配器,包括但不限于PCI或PCIe。在一个特定例子中,快速外围组件互连(PCIe)是组件级互连标准,其定义了用于I/O适配器和主机系统之间的事务的双向通信协议。根据用于PCIe总线上的传输的PCIe标准,PCIe通信被封装在包中。源于I/O适配器且止于主机系统的事务被称为上行事务。源于主机系统且止于I/O适配器的事务被称为下行事务。PCIe拓扑基于成对(例如,一个上行链路,一个下行链路)以形成PCIe总线的点对点单向链路。PCIe标准由PCI-SIG维护并公布。所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。现在参考图4,在一个例子中,计算机程序产品400包括,例如,一个或多个计算机可读存储介质402,在其上存储有计算机可读的程序代码装置或逻辑404,以提供并方便本发明的一个或多个方面。体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的 情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,月艮务提供商可从向一个或多个第三方销售广告内容接受付费。在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。尽管以上描述了各种实施例,这些仅是例子。例如,其他体系结构的计算环境可包含并使用本发明的一个或多个方面。作为例子,除了 Systems服务器之外的服务器,诸如由国际商业机器公司提供的Power Systems服务器或其他服务器,或其他公司的服务器,可包括、使用和/或受益于本发明的一个或多个方面。而且,尽管在此示出的例子中,适配器和I/O集线器(例如,PCI集线器)被认为是服务器的一部分,在其他实施例中,它们不是必须被认为是服务器的一部分,而是可被简单地认为是耦合到计算环境的系统存储器和/或其他组件。计算环境不需要是服务器。进一步,尽管适配器是基于PCI的,可与其他适配器或其他I/O组件一起使用本发明的一个或多个方面。适配器和PCI适配器仅仅是例子。此外,SCCB可包括更多、更少或不同的信息。在一些实施方式中,其包括依赖于动作限定符的数据。许多其他变化是可能的。 而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,可使用适于存储和/或执行程序代码的数据处理系统,其包括至少两个通过系统总线直接或间接耦合到存储元件的处理器。存储器元件包括,例如,在程序代码的实际执行期间使用的本地存储器、大容量存储器以及高速缓冲存储器,其提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器获取代码的次数。输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、⑶、DVD、拇指驱动器(thumb drive)以及其他的存储介质等)可直接或通过介于其间的I/O控制器被耦合到系统。网络适配器也可被耦合到系统以使得数据处理系统能够通过介于其间的私有或公共网络而耦合到其他的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些可获得的网络适配器类型。参考图5,其描述了实施本发明的一个或多个方面的主机计算机系统5000的代表性组件。代表性主机计算机5000包括与计算机存储器(即,中央存储器)5002通信的一个或多个CPU,以及到存储介质设备5011和网络5010的I/O接口,以用于与其他计算机或SAN等通信。CPU 5001符合具有架构指令集和架构功能的架构。CPU 5001可具有动态地址转换(DAT)5003,其用于将程序地址(虚拟地址)转变为存储器的真实地址。DAT典型地包括用于高速缓存转换的转换后备缓冲器(TLB)5007,这样稍后对计算机存储器5002块的访问不需要地址转换的延迟。典型地,高速缓存5009被使用在计算机存储器5002和处理器5001之间。高速缓存5009可以是分层的,具有可被多于一个的CPU获得的大高速缓存,以及大高速缓存和每个CPU之间的较小、较快(较低级)的高速缓存。在一些实施例中,较低级的高速缓存被拆分以为指令获取和数据访问提供单独的低级高速缓存。在一个实施例中,由指令获取单元5004经由高速缓存5009从存储器5002获取指令。指令在指令解码单元5006中被解码,且(在一些实施例中与其他指令一起)被发送到一个或多个指令执行单元5008。典型地,使用若干执行单元5008,例如算术执行单元、浮点执行单元和分支指令执行单元。指定被执行单元执行,如需要,从指令指定的寄存器或存储器访问操作数。如果将从存储器5002访问(加载或存储)操作数,加载/存储单元5005典型地在被执行的指令的控制下处理该访问。指令可在硬件电路或内部微代码(固件)中或其组合中被执行。需注意的是,计算机系统包括本地(或主)存储器中的信息,以及寻址、保护以及引用和改变记录。寻址的一些方面包括地址格式、地址空间的概念、地址的各种类型和其中一种类型的地址被转换为另一种类型的地址的方式。一些主存储器包括持久分配地存储位置。主存储器向系统提供直接可被寻址的快速访问的数据存储。数据和程序在可被处理之前都将(从输入设备)被加载到主存储器。主存储器可包括一个或多个更小、更快速访问的缓冲存储器,有时候被称为高速缓存。高速缓存典型地与CPU或I/O处理器物理地关联。物理结构以及不同存储介质的使用的效果,除了在性能上,通常不会被程序观察到。可维护用于指令和数据操作数的单独的高速缓存。高速缓存中的信息可被维护为相邻的字节,所述字节位于被称为高速缓存块或高速缓存线(或简称为线)的整数界限上。模型可提供EXTRACT CACHE ATTRIBUTE (提取高速缓存属性)指令,其返回高速缓存线的字节大小。模型也可提供PREFETCH DATA (预取数据)和PREFETCH DATA RELATIVEL0NG (预取较长数据)指令,其实现存储到数据或指令高速缓存中的预取,或数据从高速缓存的释放。存储器被视为位的长水平串。对于大部分操作来说,以从左到右的顺序进行对存储器的访问。位串被细分为八个位的单位。八位单位被称为字节,其是所有信息格式的基本构件。存储器中的每个字节位置由唯一的非负整数标识,该非负整数是该字节位置的地址,或简称为字节地址。相邻的字节位置具有连续的地址,在左边从O开始且以从左到右的 顺序进行。地址是无符号二进制整数,且是24、31或64位。信息一次一个字节或一组字节地在存储器和CPU或通道子系统之间传递。除非另有指定,例如在z/Archkecturee中,存储器中的一组字节由该组的最左边的字节寻址。组中的字节的数量可由将被执行的操作暗示或显式地指定。当在CPU操作中使用时,一组字节被称为字段。在字节的每个组内,例如在z/Architeeture 中,位以从左到右的顺序被编号。在z/Architecture8中,最左边的位有时候被称为“高阶”位且最右边的位被称为“低阶”位。但是,位数不是存储器地址。仅字节可被寻址。为了操作存储器中的字节的单个位,访问整个字节。字节上的位从左到右被编号为O到7(例如在z/Architecture 中)。地址中的位被编号为对于24位地址的8-31或40-63,或者对于31位地址的1_31或33-63 ;它们被编号为对于64位地址的0-63。在多个字节的任何其他的固定长度的格式中,构成格式的位从O开始被连续编号。为了错误检测,且优选地为了校正,一个或多个校验位可与每一个字节或一组字节一起被传递。这样的校验位由机器自动生成且不能被程序直接控制。存储容量以字节的数量来表示。当存储器操作数字段的长度由指令的操作码暗示时,字段被称为具有固定长度,其可以是一个、两个、四个、八个或十六个字节。可为某些指令暗示更大的字段。当存储器操作数字段的长度没有被暗示,而是被显式地表示时,该字段被称为具有可变长度。可变长度的操作数可以一个字节的增量(或者对于一些指令,以两个字节倍数或其他倍数)在长度上可变。当信息被放在存储器中时,仅替换被包括在指定的字段中的哪些字节位置的内容,即使到存储器的物理路径的宽度可能大于正被存储的字段的长度。某些信息单元位于存储器中的整数界限上。对于信息单元,当其存储器地址是以字节表示的单元长度的倍数时,界限被称为是整数的。特殊的名称被给予整数界限上的2、4、6、8和16字节的字段。半字是两字节边界上的一组两个连续的字节,且是指令的基本构件。字是四字节边界上的一组四个连续的字节。双字是八字节边界上一组八个连续的字节。四倍长字(quadword)是16字节边界上的一组16个连续的字节。当存储器地址指定半字、字、双字和四倍长字时,地址的二进制表示分别包括一个、两个、三个或四个最右边的零位。指令将位于二字节整数边界上。大多数指令的存储器操作数不具有界限对准要求。在为指令和数据操作数实现单独的高速缓存的设备上,如果程序在高速缓存线中存储且指令被随后从该高速缓存线获取,可经历显著的延迟,不管该存储是否改变随后被获取的指令。在一个实施例中,本发明可被软件(有时候被称为许可的内部代码、固件、微代码、毫代码、微微代码(Pico-code )等,其任何一个都将符合本发明)实施。参考图5,体现本发明的软件程序代码可典型地由主系统5000的处理器从长期存储介质设备5011 (诸如CD-ROM驱动器、磁带驱动或硬盘驱动器)访问。软件程序代码可体现在与数据处理系统一起使用的各种已知介质(诸如软磁盘、硬盘驱动或⑶-ROM)中的任何一个上。代码可在这样的介质上被分发,或可从一个计算机系统的计算机存储器5002或存储设备通过网络5010被分发给 其他计算机系统的用户,以由这样的其他系统的用户使用。软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码通常可从存储介质设备5011调页到相对更高速的计算机存储器5002,在此它对于处理器5001是可用的。用于在存储器中、物理介质上和/或体现软件程序代码或经由网络分发软件代码的技术和方法是熟知的,且不会在此被进一步讨论。当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。图6示出了可在其中实施本发明的代表性工作站或服务器硬件系统。图6的系统5020包括代表性基本计算机系统(base computer system) 5021,诸如个人计算机、工作站或服务器,包括可选的外围设备。根据已知技术,基本计算机系统5021包括一个或多个处理器5026以及被用于连接并使能处理器5026和系统5021的其他组件之间的通信的总线。总线将处理器5026连接到存储器5025以及可包括例如硬盘驱动器(例如,包括磁介质、⑶、DVD和闪存中的任何一个)或磁带驱动器的长期存储器5027。系统5021也可包括用户接口适配器,其经由总线将微处理器5026连接到一个或多个接口设备,诸如键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口设备,其可以是任何用户接口设备,诸如触摸敏感屏、数字化输入垫(digitized entry pad)等。总线也可经由显示适配器将诸如IXD屏幕或监视器的显示设备5022连接到微处理器5026。系统5021可通过能与网络5029通信5028的网络适配器与其他计算机或计算机网络通信。示例性网络适配器是通信通道、令牌环网、以太网或调制解调器。或者,系统5021可使用诸如⑶ro (蜂窝数字分组数据)卡的无线接口来通信。系统5021可与局域网(LAN)或广域网(WAN)中的这样的其他计算机关联,或系统5021可以是与另一个计算机的客户机/服务器安排中的客户机等。所有这些配置以及合适的通信硬件和软件在本领域中是已知的。图7示出了其中可实施本发明的数据处理网络5040。数据处理网络5040可包括多个单独的网络,诸如无线网和有线网,其每个可包括多个单独的工作站5041、5042、5043、5044。此外,本领域技术人员将理解,可包括一个或多个LAN,其中LAN可包括多个耦合到主处理机的智能工作站。仍然参考图7,网络也可包括大型计算机或服务器,诸如网关计算机(客户机服务器5046)或应用服务器(远程服务器5048,其可访问数据储存库,且也可直接从工作站5045被访问)。网关计算机5046用作到每个单独网络的进入点。当将一个连网协议连接到另一个时,需要网关。网关5046可通过通信链路优选地耦合到另一个网络(例如因特网5047)。也可使用通信链路将网关5046直接耦合到一个或多个工作站5041、5042、5043、5044。可以利用可从国际商业机器公司获得的IBM eServerTMSystem服务器来实现网关计算机。同时参考图6和7,可体现本发明的软件编程代码可被系统5020的处理器5026从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质5027访问。软件编程代码可被体现在与 数据处理系统一起使用的各种已知介质(诸如软盘、硬盘驱动器或⑶-ROM)中的任一个上。代码可在这样的介质上被分发,或从一个计算机系统的存储器或存储设备通过网络被分发到其他计算机系统的用户5050、5051,以供这样的其他系统的用户使用。或者,编程代码可体现在存储器5025中,且由处理器5026使用处理器总线访问。这样的编程代码包括操作系统,其控制各种计算机组件和一个或多个应用程序5032的功能和交互。程序代码通常从存储介质5027调页到高速存储器5025,在此它可用于由处理器5026进行处理。用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,且不会在此进一步讨论。程序代码,当其被创建且在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(⑶)、DVD、磁带等)上存储时,通常被称为“计算机程序产品”。计算机程序产品介质典型地可以被优选地位于计算机系统中的处理电路读取以由处理电路执行。最容易被处理器使用的高速缓存(通常比处理器的其他高速缓存更快更小)是最低级(LI或级别I)高速缓存,且主存储(主存储器)是最高级高速缓存(如果有三个级别的话是L3)。最低级高速缓存经常被分为保持将被执行的机器指令的指令缓存(I-高速缓存),和保持数据操作数的数据高速缓存(D-高速缓存)。参考图8,为处理器5026示出了示例性处理器实施例。典型地,使用一个或多个级别的高速缓存5053来缓冲存储器块,以便改善处理器性能。高速缓存5053是高速缓冲器,其保持很可能被使用的存储器数据的高速缓存线。典型的高速缓存线是64、128或256字节的存储器数据。通常使用单独的高速缓存以用于缓存指令而不是缓存数据。高速缓存一致性(存储器和高速缓存中的线的副本的同步)通常由本领域中熟知的各种“窥探”算法提供。处理器系统的主存储器5025通常被称为高速缓存。在具有4个级别的高速缓存5053的处理器系统中,主存储器5025有时候被称为级别5 (L5)高速缓存,因为它典型地更快,且仅保持可被计算机系统使用的非易失性存储器(DASD、磁带等)的一部分。主存储器5025可“高速缓存”由操作系统向主存储器5025调页入或从其调页出的数据页。程序计数器(指令计数器)5061保持跟踪将被执行的当前指令的地址。z/Arcliitecture 处理器中的程序计数器是64位的,且可被截短为31或24位以支持先前的寻址界限。程序计数器典型地体现在计算机的PSW (程序状态字)中,这样它可在上下文转换中持续。因此,具有程序计数器值的进行中的程序可被例如操作系统中断(从程序环境到操作系统环境的上下文转换)。当程序不活动时,程序的PSW维持程序计数器值,且在操作系统执行时,操作系统的(PSW中的)程序计数器被使用。典型地,程序计数器以等于当前指令的字节数的量增量。RISC (精简指令集计算)指令典型地是固定长度,而CISC (复杂指令集计算)指令典型地是可变长度。IBMz/Architecture8的指令是具有长度为2、4或6字节的CISC指令。程序计数器5061被例如上下文转换操作或分支指令的分支采取操作修改。在上下文转换操作中,当前的程序计数器值与关于正被执行的程序的其他状态信息(诸如条件码)一起被保存在程序状态字中,且新程序计数器值被载入并指向将被执行的新程序模块的指令。执行分支采取操作,以通过将分支指令的结果加载到程序计数器5061中而允许程序进行决定或在程序内循环。典型地,使用指令获取单元5055代表处理器5026获取指令。获取单元可获取“下一序列指令”、分支采取指令的目标指令或上下文转换后的程序的第一指令。现在的指令获取单元通常使用预取技术基于被预取的指令将被使用的可能性来推测性地预取指令。例如,获取单元可获取16字节的指令,其包括下一顺序指令以及进一步的顺序指令的额外字节。
获取的指令随后被处理器5026执行。在一实施例中,获取的指令被传递给获取单元的分派单元5056。分派单元解码指令并将关于解码的指令的信息转送给合适的单元5057、5058、5060。执行单元5057将典型地从指令获取单元5055接收关于解码的算术指令的信息,并将根据指令的操作码对操作数执行算术操作。优选地从存储器5025、架构寄存器5059或从正被执行的指令的立即字段(immediate field)向执行单元5057提供操作数。执行的结果,当被存储时,被存储在存储器5025、寄存器5059或其他机器硬件(诸如控制寄存器、PSW寄存器等)中。处理器5026典型地具有一个或多个用于执行指令的功能的单元5057、5058、5060。参考图9A,执行单元5057可通过接口逻辑5071与架构通用寄存器5059、解码/分派单元5056、加载存储单元5060和其他5065处理器单元通信。执行单元5057可使用几个寄存器电路5067、5068、5069来保持算术逻辑单元(ALU) 5066将操作的信息。ALU执行诸如加减乘除的算术操作,以及诸如和、或以及异或(X0R)、旋转和移位的逻辑运算。优选地,ALU支持依赖于设计的专门操作。其他电路可提供其他架构工具5072,例如包括条件码和恢复支持逻辑。典型地,ALU操作的结果被保持在输出寄存电路5070中,该输出寄存器电路可将结果转送到多种其他处理功能。有许多处理器单元安排,本说明书仅旨在提供对一个实施例的代表性理解。例如,ADD指令将在具有算术和逻辑功能的执行单元5057中被执行,而例如浮点指令将在具有专用浮点能力的浮点执行中被执行。优选地,执行单元通过在操作数上执行操作码定义的功能在由指令标识的操作数上操作。例如,ADD指令可被执行单元5057在由指令的寄存器字段标识的两个寄存器5059中发现的操作数上执行。执行单元5057对两个操作数执行算术加法,并在第三操作数中存储结果,其中第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元优选地利用算术逻辑单元(ALU) 5066,其能执行多种逻辑功能,诸如移位、旋转、和、或以及异或,以及多种代数函数,包括加减乘除中的任何一个。一些ALU5056被设计为用于标量运算,且有些用于浮点。根据架构,数据可以是大端(big endien)(其中最低有效字节位于最高字节地址)或小端(little endien)(其中最低有效字节位于最低字节地址)。IBMz/Architectlire^^大端。根据架构,带符号字段可以是符号和幅度、I的补码或2的补码。2的补码数是有利的,其在于ALU不需要设计减法能力,因为不管是2的补码中的负值还是正值,都仅要求ALU中的加法。数字通常以速记描述,其中12位的字段定义了 4096字节块的地址,且通常被描述为例如4Kbyte (千字节)块。参考图9B,用于执行分支指令的分支指令信息典型地被发送到分支单元5058,该分支单元经常使用诸如分支历史表5082的分支预测算法,在其他条件运算完成前预测分支结果。在条件运算完成前,当前分支指令的目标将被获取并推测性地执行。当条件运算完成时,基于条件运算的条件和推测的结果,推测性执行的分支指令或被完成或被丢弃。典型的分支指令可测试条件码,以及如果条件码满足分支指令的分支要求,分支到目标地址,分支地址可基于若干数被计算,所述数包括例如在寄存器字段或是指令的立即字段中找到的数。分支单元5058可利用具有多个输入寄存器电路5075、5076、5077和一个输出寄存器电路5080的ALU 5074。分支单元5058可与例如通用寄存器5059、解码分派单元5056或其他电路5073通信。一组指令的执行可由于多个原因中断,所述原因包括例如由操作系统发起的上下 文转换、引起上下文转换的程序异常或错误、引起上下文转换的I/o中断信号或多个程序(在多线程环境中)的多线程活动。优选地,上下文转换动作保存关于当前执行的程序的状态信息,且随后加载关于正被调用的另一个程序的状态信息。状态信息可被存储在例如硬件寄存器或存储器中。状态信息优选地包括指向将被执行的下一个指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文转换活动可被硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或许可内部码(LIC))单独地或其组合实现。处理器根据指令定义的方法而访问操作数。指令可使用指令的一部分的值提供立即操作数,可提供一个或多个寄存器字段,其显式地指向通用寄存器或专用寄存器(例如浮点寄存器)。指令可利用由操作码字段确定的暗示的寄存器作为操作数。指令可利用用于操作数的存储器位置。可由寄存器、立即字段或寄存器和立即字段的组合提供操作数的存储器位置,如由z/Architecture 长位移工具(facility)所例示的,其中该指令定义了基寄存器、索引寄存器和立即字段(位移字段),它们加到一起,以提供例如存储器中的操作数的地址。此处的位置典型地意味着主存储器(主存储设备)中的位置,除非另外指明。参考图9C,处理器使用加载/存储单元5060访问存储器。加载/存储单元5060可以通过获取存储器5053中的目标操作数的地址并将操作数加载到寄存器5059或其他存储器5053位置中,来执行加载操作,或可以通过获取存储器5053中的目标操作数的地址并将从寄存器5059或另一个存储器5053位置获得的数据存储在存储器5053中的目标操作数位置,来执行存储操作。加载/存储单元5060可以是推测性的,且可以相对于指令顺序来说无序的顺序访问存储器,但是加载/存储单元5060将向程序维持指令按顺序执行的外观。加载/存储单元5060可与通用寄存器5059、解密/分派单元5056、高速缓存/存储器接口 5053或其他元件5083通信,且包括各种寄存器电路、ALU 5085和控制逻辑5090以计算存储器地址并提供流水线顺序以使操作保持次序。一些操作可不按顺序,但加载/存储单元提供功能以使不按顺序执行的操作对程序看起来如已按顺序执行一样,如本领域所熟知的。优选地,应用程序“看到的”地址通常被称为虚拟地址。虚拟地址有时候被称为“逻辑地址”和“有效地址”。这些虚拟地址之所以虚拟,在于它们由多种动态地址转换(DAT)技术中的一种重定向到物理存储器位置,所述动态地址转换技术包括但不限于简单地给用偏移值给虚拟地址加前缀、经由一个或多个转换表转换虚拟地址,所述转换表优选地包括至少一个段表和页表(单独地或组合地),优选地,段表具有指向页表的项。在z/Archit_ecti丨,提供转换分级结构,包括区域第一表、区域第二表、区域第三表、段表和可选的页表。转换表的性能通常通过利用转换后备缓冲器(TLB)被改善,该转换后备缓冲器包括将虚拟地址映射到相关的物理存储位置的项。当DAT使用转换表转换虚拟地址时,创建项。于是,虚拟地址的随后使用可利用快的TLB的项,而不是慢的顺序转换表访问。TLB内容可由包括LRU (最少最近使用的)多个替换算法来管理。
在处理器是多处理器系统的处理器的情况下,每个处理器具有保持共享资源的责任,所述共享资源诸如I/o、高速缓存、TLB和存储器,它们互锁以实现一致性。典型地,“窥探”技术将被用于维持高速缓存一致性。在窥探环境中,每个高速缓存线可被标记为正处于共享状态、独占状态、改变状态、无效状态等中的一个,以便有助于共享。I/O单元5054 (图8)向处理器提供用于附加到例如包括磁带、盘、打印机、显示器和网络的外围设备的装置。I/o单元通常由软件驱动器向计算机程序呈现。在诸如来自 Β\Ρ的Systemz*的大型计算机中,通道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型计算机的I/O单元。而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。更具体地,在大型计算机中,程序员(通常是如今的“C”程序员)一般通过编译器应用使用架构机器指令。存储在存储介质中的这些指令可以在z/Airhitet!tureBlBiVP服务器中本机地执行,或在执行其他架构的机器中执行。它们可在现有的和未来的IBM8大型计算机服务器以及 ΒΜ 的其他机器(例如,Power Systems服务器和Systemxa服务器)中被仿真。它们可在使用由IBM8、Intel'AMD 等制造的硬件的各种机器上运行Linux的机器中被执行。除了在z/Architecture吓的该硬件上执行,Linux也可被用于这样的机器,其使用由Hercules或FSI (Fundamental Software, Inc)提供的仿真,其中,一般来说执行是在仿真模式中。在仿真模式中,仿真软件由本机处理器执行以仿真被仿真处理器的架构。在万维网WWW. hercules-390· org and www. funsoft. com分别可获得与上述参考的仿真器产品相关的信息。本机处理器典型地执行仿真软件,其包括固件或本机操作系统,以执行被仿真处理器的仿真程序。仿真软件负责获取并执行被仿真处理器架构的指令。仿真软件维护仿真的程序计数器以保持跟踪指令界限。仿真软件可一次获取一个或多个仿真的机器指令,并将所述一个或多个仿真的机器指令转换为对应的本机机器指令组,以由本机处理器执行。这些转换的指令可被高速缓存,这样可完成更快的转换。尽管,仿真软件将维持被仿真的处理器架构的架构规则以保证为被仿真处理器编写的操作系统和应用正确操作。而且,仿真软件将提供由被仿真的处理器架构确定的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址转换功能、中断机制、上下文转换机制、日中时间(TOD)时钟和到I/O子系统的架构接口,这样被设计为在被仿真处理器上运行的操作系统或应用程序可在具有仿真软件的本机处理器上运行。解码正被仿真的特定指令,且调用子例程以执行该单个指令的功能。仿真被仿真处理器的功能的仿真软件功能例如在“C”子例程或驱动器中实现,或由提供用于特定硬件的驱动器的其他方法实现,如本领域技术人员在理解优选实施例的描述后将理解的。 包括但不限于 Beausoleil 等人的标题为 “Multiprocessor for Hardware Emulation”的美国专利证书号5,551,013 ;以及Scalzi等人的标题为“Preprocessing of StoredTargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美国专利证书号6,009, 261 ;以及Davidian等人的标题为“Decoding GuestInstructionto Directly Access Emulation Routines that Emulate the Guestlnstructions,,的美国专利证书号,5, 574, 873 ;以及 Gorishek 等人的标题为 “Symmetrical MultiprocessingBus and Chipset Used for CoprocessorSupport Allowing Non-Native Code to Run ina System”的美国专利证书号6,308,255 ;以及Lethin等人的标题为“Dynamic OptimizingObject CodeTranslator for Architecture Emulation and Dynamic OptimizingObjectCode Translation Method” 的美国专利证书号 6,463,582,;以及 Eric Traut 的标题为“Method for Emulating Guest Instructions on a Host ComputerThrough DynamicRecompilation of Host Instructions”的美国专利证书号5,790,825 ;以及许多其他专利的各种软件和硬件仿真专利示出各种已知的方式来实现针对可为本领域技术人员获得的目标机器对为不同机器进行架构设计的指令格式的仿真。在图10中,提供了仿真主计算机系统5092的例子,其仿真主架构的主计算机系统5000’。在仿真主计算机系统5092中,主处理器(CPU) 5091是仿真主处理器(或虚拟主处理器),并包括具有与主计算机5000’的处理器5091不同的本机指令集架构的仿真处理器5093。仿真主计算机系统5092具有可被仿真处理器5093访问的存储器5094。在示例性实施例中,存储器5094被分区为主计算机存储器5096部分和仿真例程5097部分。根据主计算机架构,主计算机存储器5096对于仿真主计算机5092的程序来说是可用的。仿真处理器5093执行与被仿真处理器5091不同架构的架构指令集的本机指令(即来自仿真程序处理器5097的本机指令),且可通过使用从顺序和访问/解码例程获得的一个或多个指令从主计算机存储器5096中的程序访问用于执行的主机指令,所述顺序和访问/解码例程可解码访问的主机指令,以确定用于仿真被访问的主机指令的功能的本机指令执行例程。被定义用于主计算机系统5000’架构的其他工具可被架构工具例程仿真,所述架构工具例程包括诸如通用寄存器、控制寄存器、动态地址转换和I/o子系统支持和处理器高速缓存等工具。仿真例程也可利用在仿真处理器5093中可获得功能(诸如通用寄存器和虚拟地址的动态转换)以改善仿真例程的性能。也可提供专用硬件和卸载引擎以辅助处理器5093来仿真主计算机5000’的功能。在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显·的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
权利要求
1.一种用于促进要采取的动作的通信的方法,包括以下步骤 计算机可读存储介质,其为 处理电路可读并且存储由处理电路所执行的指令,以用于执行一种方法,包括 响应于执行指定控制块的服务呼叫逻辑处理器(SCLP)指令,所述控制块包括事件类型、适配器的功能句柄、适配器类型和动作限定符,基于所述动作限定符来执行动作,所述动作包括重置适配器或请求修复动作中的一个; 响应于完成SCLP,通知操作系统;以及 响应于执行由操作系统响应于通知所发出的存储事件信息命令,获得与所述动作相关的信息。
2.根据权利要求I所述的方法,其中所述信息包括指示事件的事件码,所述事件与为适配器执行的动作相关联。
3.根据权利要求2所述的方法,其中所述事件包括以下内容中的一个由功能句柄标识的适配器移动到配置状态;适配器从保留状态移动到待机状态;适配器的解除配置;适配器从配置状态移动到待机或保留状态;存储器数量改变以及一个或多个未识别的适配器可能处于待机状态。
4.根据权利要求I所述的方法,其中操作系统在已逻辑分区的处理单元的逻辑分区中执行,并且所述逻辑分区逻辑上拥有所述适配器。
5.根据权利要求I所述的方法,其中由操作系统发出SCLP以请求动作,所述操作系统进行的请求独立于适配器的类型和操作系统的类型。
6.根据权利要求I所述的方法,其中所述执行包括每次执行用于事件类型的动作时一致地执行动作。
7.根据权利要求I所述的方法,其中所述方法进一步包括响应于接收控制块,由固件请求系统记录中的条目的创建,所述条目包括来自控制块的信息。
8.根据权利要求7所述的方法,其中请求所述条目的创建包括将请求发送给服务处理器以创建条目,并且其中所述方法进一步包括 由服务处理器分析所述请求中提供的服务参考码;以及 由服务处理器基于所述服务参考码发起服务修复动作。
9.根据权利要求8所述的方法,其中与动作相关联的是动作限定符,并且其中服务参考码对于适配器类型和动作限定符组合是唯一的。
10.一种包括在计算机可读介质上存储的计算机程序代码的计算机程序,当所述计算机程序被加载到计算机系统并且在其上执行时,促使所述计算机系统执行根据权利要求I至9中任一项所述的方法的所有步骤。
11.一种用于促进要采取的动作的通信的计算机系统,所述计算机系统包括 存储器; 与所述存储器通信的处理单元; 响应于执行指定控制块的服务呼叫逻辑处理器(SCLP)指令,所述控制块包括事件类型、适配器的功能句柄、适配器类型和动作限定符,所述处理单元基于所述动作限定符来执行动作,所述动作包括重置适配器或请求修复动作中的一个; 所述处理单元响应于完成SCLP,通知操作系统;以及所述处理单元响应于执行由操作系统响应于通知所发出的存储事件信息命令,获得与所述动作相关的信息。
12.一种用于促进要采取的动作的通信的计算机系统,所述计算机系统包括 存储器;以及 与所述存储器通信的处理器,其中所述计算机系统被配置为一种执行方法,所述方法包括 响应于执行指定控制块的服务呼叫逻辑处理器(SCLP)指令,所述控制块包括事件类型、适配器的功能句柄、适配器类型和动作限定符,基于所述动作限定符来执行动作,所述动作包括重置适配器或请求修复动作中的一个; 响应于完成SCLP,通知操作系统;以及 响应于执行由操作系统响应于通知所发出的存储事件信息命令,获得与所述动作相关的信息。
13.根据权利要求12所述的计算机系统,其中所述信息包括指示事件的事件码,所述事件与为适配器执行的动作相关联。
14.根据权利要求13所述的计算机系统,其中所述事件包括以下内容中的一个由功能句柄标识的适配器移动到配置状态;适配器从保留状态移动到待机状态;适配器的解除配置;适配器从配置状态移动到待机或保留状态;存储器数量改变以及一个或多个未识别的适配器可能处于待机状态。
15.根据权利要求12所述的计算机系统,其中操作系统在已逻辑分区的处理单元的逻辑分区中执行,并且所述逻辑分区逻辑上拥有所述适配器。
16.根据权利要求12所述的计算机系统,其中由操作系统发出SCLP以请求动作,所述操作系统进行的请求独立于适配器的类型和操作系统的类型。
17.根据权利要求12所述的计算机系统,其中所述执行包括执行动作,其中所述执行包括每次执行用于事件类型的动作时一致地执行动作。
18.根据权利要求12所述的计算机系统,其中所述方法进一步包括响应于接收控制块,由固件请求系统记录中的条目的创建,所述条目包括来自控制块的信息。
19.根据权利要求18所述的计算机系统,其中请求所述条目的创建包括将请求发送给服务处理器以创建条目,并且其中所述方法进一步包括 由服务处理器分析所述请求中提供的服务参考码;以及 由服务处理器基于所述服务参考码发起修复动作。
20.一种用于促进要采取的动作的通信的计算机程序产品,所述计算机程序产品包括 计算机可读存储介质,其为处理电路可读并且存储由处理电路所执行的指令,以用于执行根据权利要求I至9中任一项所述的方法的所有步骤。
全文摘要
促进响应于硬件事件要采取的硬件动作的通知。耦合到硬件但在其外部的操作系统向固件通知要采取的硬件动作。
文档编号G06F11/07GK102906708SQ201080066983
公开日2013年1月30日 申请日期2010年11月8日 优先权日2010年6月23日
发明者B·格伦迪宁, D·克拉多克, T·格雷格, C·小盖尼, U·恩乔库-查尔斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1