一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

检测用于保护存储器的存储密钥的更改的制作方法

2021-10-29 20:07:00 来源:中国专利 TAG:
检测用于保护存储器的存储密钥的更改
背景技术
::1.一般而言,一个或多个方面涉及促进计算环境内的处理,并且具体地涉及促进与保护对存储器的访问相关联的处理。2.在由纽约阿蒙克的国际商业机器公司提供的硬件架构中,存储密钥用于控制对存储器的访问。例如,每个存储器块都有一个与其相关联的存储密钥,用于控制对该存储器块的访问。存储密钥包括多个字段,这些字段可以由程序执行的各种指令设置或改变。某些字段通过特权程序(例如操作系统或其他特权程序)执行的指令设置或更改。3.按照惯例,仅期望特定程序改变存储密钥。当其他程序更改存储密钥时,可能会产生不利后果。此外,如果发出更改存储密钥指令的程序存在编程错误,则存储密钥可能会被错误更改并损坏。技术实现要素:4.通过提供如权利要求1所述的方法以及相应的系统和计算机程序,克服了现有技术的缺点,并提供了额外的优点。5.通过检测存储密钥的更改,程序可以确定存储密钥是否已被破坏并执行动作以例如识别不正确的程序更改存储密钥和/或程序错误地更改存储密钥。处理器内的安全性和性能都得到了改进。6.作为一个示例,提供通知包括基于确定存储密钥更改事件已经发生,经由中断提供存储密钥更改事件的通知。7.在一个示例中,检查包括检查存储密钥的一个或多个选定字段是否已在没有访问异常的情况下被更新。基于检查表明存储密钥的一个或多个选定字段已被更新且无访问异常,存储密钥更改事件已发生。8.在一个示例中,确定存储密钥更改事件是否已经发生还包括确定存储器块是否位于指定的存储区域内。基于检查表明存储密钥的一个或多个选定字段已经被更新并且存储器块位于指定的存储区域内,存储密钥更改事件已经发生。9.进一步地,在一个示例中,检查包括检查存储密钥的一个或多个选定字段是否已经在没有访问异常的情况下被更新,并且存储密钥更改事件基于检查表明存储密钥的一个或多个选定字段已被更新且无访问异常,并且该存储器块位于指定的存储区域内。10.作为示例,指定存储区域由在第一位置中指定的存储器的起始地址和在第二位置中指定的存储器的结束地址定义。例如,第一位置是选定的控制寄存器,而第二位置是另一个选定的控制寄存器。11.在一个示例中,结束地址环绕到起始地址,并且在指定存储区域的定义中使用用于起始地址和用于结束地址的选定数量的低阶位以包括多于一个存储器块。12.进一步地,在一个示例中,确定存储器块是否位于指定存储区域内包括确定存储器块的一个或多个存储器单元是否位于指定存储区域内。13.作为示例,一个或多个选定字段包括存储密钥的访问控制字段和/或存储密钥的获取保护字段。14.本文还描述和要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,还描述了与一个或多个方面相关的服务并且可以在本文中要求保护。15.通过在此描述的技术实现附加特征和优点。其他实施例和方面在本文中详细描述并且被认为是要求保护的方面的一部分。附图说明16.一个或多个方面在权利要求中被特别指出和明确要求保护。从以下结合附图进行的详细描述中,一个或多个方面的前述目的、特征和优点是显而易见的,其中:17.图1a描绘了结合并使用本发明一个或多个方面的计算环境的一个示例;18.图1b描绘了根据本发明一个或多个方面的图1a的处理器的进一步细节;19.图2描绘了结合并使用本发明一个或多个方面的计算环境的另一示例;20.图3描绘了根据本发明一个方面的存储密钥的一个示例;21.图4描绘了根据本发明一个方面的使用的存储密钥更改检测组件的进一步细节;22.图5描绘了根据本发明一个方面的与检测对存储密钥的更新相关联的处理的一个示例;23.图6a‑6b描绘了根据本发明一个方面的促进计算环境内的处理的一个示例;24.图7a描绘了结合并使用本发明一个或多个方面的计算环境的另一示例;25.图7b描绘了图7a的存储器的进一步细节;26.图8描绘了云计算环境的一个实施例;和27.图9描绘了抽象模型层的一个示例。具体实施方式28.根据本发明的一个方面,提供一种能力以促进计算环境内的处理。例如,提供检测用于保护计算环境的存储器块的存储密钥已被更改的能力。例如,该功能包括一个程序事件记录(per)事件中断,指示存储密钥已被更改。通过检测存储密钥的更改,程序可以确定存储密钥是否已被损坏并执行动作以例如识别更改存储密钥的不正确程序和/或错误地更改存储密钥的程序。作为一个示例,存储器块(这里也称为存储)是存储器页,例如,4k字节的存储器。在其他示例中,存储器块可以不是存储器页和/或存储器页可以不是4k字节。许多变化是可能的。29.结合并使用本发明一个或多个方面的计算环境的一个实施例参考图1a进行描述。计算环境100包括例如处理器102(例如,中央处理单元)、存储器104(例如,主存储器;也称为系统存储器、主存储器、中央存储器、存储器)和一个或多个输入/输出(i/o)设备和/或接口106,经由例如一个或多个总线108和/或其他连接彼此耦合。30.在一个示例中,处理器102基于z/architecture的硬件架构,并且是服务器的一部分,例如ibm服务器,由internationalbusinessmachinescorporation提供并且实现z/architecture硬件架构。在ibm出版物编号sa22‑7832‑11,第12版,2017年9月的题为“z/architecture操作原理”的出版物中描述了z/architecture硬件架构的一个实施例。然而,z/architecture硬件架构只是一个示例架构;其他架构和/或其他类型的计算环境可以包括和/或使用本发明的一个或多个方面。在一个示例中,处理器执行操作系统,例如操作系统。31.处理器102包括用于执行指令的多个功能组件。如图1b所示。这些功能组件例如包括:获取组件120,用于获取要执行的指令的指令;指令译码单元122,用于对取出的指令进行译码,得到译码后的指令的操作数;指令执行组件124,用于执行解码后的指令;如果需要,存储器访问组件126,用于访问用于指令执行的存储器;以及写回组件130,用于提供执行指令的结果。根据本发明的一个或多个方面,这些组件中的一个或多个可以包括用于存储密钥更改检测(或使用本发明一个或多个方面的其他处理)的一个或多个其他组件的至少一部分或有权访问该组件,如本文所述。一个或多个其他组件例如包括存储密钥更改检测组件(或其他组件)136。32.在一个示例中,存储器访问组件126使用一个或多个存储密钥128来确定请求访问一个或多个存储器块的指令是否被授权用于所请求的访问类型。在一个示例中,存储密钥例如与配置中可用的每个存储器块(例如,每个4k字节块)相关联。33.结合并使用本发明的一个或多个方面的计算环境的另一示例参考图2进行描述。在一个示例中,计算环境基于z/architecture硬件架构;然而,计算环境可能基于国际商业机器公司或其他公司提供的其他架构。34.参照图2,在一个示例中,计算环境包括中央电子复合体(cec)200。cec200包括多个组件,例如,存储器202(又名系统存储器、主存储器、主存储、中央存储、存储)耦合到一个或多个处理器(也称为中央处理单元(cpu))204和输入/输出子系统206。35.存储器202包括例如一个或多个逻辑分区208,管理逻辑分区的管理程序210,处理器固件212和相关联的存储密钥214(在此描述)。管理程序210的一个例子是处理器资源/系统管理器(pr/smtm)管理程序,由纽约阿芒克的国际商业机器公司提供。如本文所用,固件包括例如处理器的微代码。例如包括用于实现高级机器代码的硬件级指令和/或数据结构。在一个实施例中,包括例如通常作为微代码交付的专有代码,该微代码包括可信软件或特定于底层硬件的微代码并控制操作系统对系统硬件的访问。36.每个逻辑分区208都能够用作单独的系统。即,每个逻辑分区可以被独立地重置、运行诸如z/os操作系统的客户操作系统220或另一操作系统并且与不同的程序222一起操作。在逻辑分区中运行的操作系统或应用程序似乎可以访问全部且完整的系统,但实际上只有其中的一部分可用。37.存储器202耦合到处理器(例如,cpu)204,处理器是可以分配给逻辑分区的物理处理器资源。例如,逻辑分区208包括一个或多个逻辑处理器,每个逻辑处理器代表可以动态分配给逻辑分区的物理处理器资源204的全部或一部分。38.此外,存储器202耦合到i/o子系统206。i/o子系统206可以是中央电子复合体的一部分或与其分离,引导主存储器202与输入/输出控制单元230和耦合到中央电子复合体的输入/输出(i/o)设备240之间的信息流。39.可以使用多种类型的i/o设备。一种特定类型是数据存储设备250。数据存储设备250可以存储一个或多个程序252、一个或多个计算机可读程序指令254和/或数据等。计算机可读程序指令可以被配置为执行本发明各方面实施例的功能。40.作为一个示例,每个处理器204包括和/或有权访问存储密钥更改检测组件(或其他组件)260,该组件用于检测存储密钥的更改(和/或本发明一个或多个方面的其他操作)。在各种示例中,可能有一个或多个组件执行这些功能。许多变化是可能的。41.中央电子复合体200可以包括和/或耦合到可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,可以包括和/或耦合到不可移动、非易失性磁介质(通常称为“硬盘驱动器”)、用于读取和写入可移动、非易失性磁盘的磁盘驱动器(例如,“软盘”)和/或用于读取或写入可移动、非易失性光盘(例如cd‑rom、dvd‑rom或其他光学介质)的光盘驱动器。应当理解,其他硬件和/或软件组件可以与中央电子复合体200结合使用。示例包括但不限于:微代码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器和数据归档存储系统等。42.此外,中央电子复合体200可以与许多其他通用或专用计算系统环境或配置一起操作。可适用于中央电子复合体200的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机(pc)系统、服务器计算机系统、瘦客户端、胖客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统和包括任何上述系统或设备的分布式云计算环境等。43.尽管这里描述了计算环境的各种示例,但是本发明的一个或多个方面可以与多种类型的环境一起使用。此处提供的计算环境仅为示例。44.如上所述,存储密钥用于控制对存储器块的访问。在一个例子中,参考图3,存储密钥300包括以下字段:45.访问控制(acc)302:如果引用受到密钥控制保护,在存储信息以及从受保护的位置获取信息时则四个访问控制位,第0‑3位,例如在程序状态字(psw)中与四位访问密钥匹配。46.获取‑保护(f)304:如果引用受到密钥控制保护,则获取保护位控制密钥控制保护是否适用于获取类型引用:0表示只监控存储类型引用并且允许使用任何访问密钥获取;1表示密钥控制保护适用于获取和存储。指令的获取和操作数的获取之间没有区别。47.引用(r)306:引用位例如,每次在相应存储块中的位置被引用以用于存储或获取信息时通常被设置为1。48.变化(c)308:每次将信息存储在相应存储块中的位置时,将变化位设置为1。49.在一个实施例中,虽然引用和变化字段是存储密钥的一部分,但是如果它们被改变,例如,通过获取或存储操作隐式地改变,则没有检测到per存储密钥更改事件。50.为了便于检测不正确的程序改变存储密钥和/或损坏的存储密钥,根据本发明的一个方面,提供了一种检测存储密钥更改的能力。该功能例如包括使用存储密钥更改检测组件(例如,存储密钥更改检测组件136或存储密钥更改检测组件260)。根据本发明的一个方面,与存储密钥更改检测组件相关联的更多细节参考图4进行描述。51.如图4所示,在一个示例中,处理器400(例如,处理器102或处理器204)包括存储密钥更改检测组件402(例如,存储密钥更改检测组件136或存储密钥更改检测组件260),包括或可以访问程序事件记录组件(per)404。程序事件记录组件404用于检测某些事件,例如根据本发明的一个方面,存储密钥的更改,并提供此类事件的通知,允许基于此采取行动。这样的动作包括,例如,确定存储密钥更改是否被破坏,如果被破坏,则识别改变存储密钥的不正确程序和/或不正确地改变存储密钥的程序。基于此,可以纠正导致存储密钥损坏的程序和/或指令。此外,在一个示例中,程序可以基于接收通知来执行(例如自动地)一项或多项任务,例如提供警报、阻止程序的一部分执行等。52.程序事件记录组件404具有与其相关联的多个寄存器410,例如包括:53.控制寄存器9(420),包括例如以下字段:54.每事件掩码(per‑eventmasks)(em)422:用于指定识别哪些类型的事件。55.分支地址控制(b)424:用于指示成功的分支事件何时发生。56.事件抑制控制(es)426:用于指示对选择事件的通知的抑制。57.存储更改空间控制(s)428:用于指示指定地址空间内的存储更改事件。58.控制寄存器10(430)包括指定存储区域的起始地址。59.控制寄存器11(440)包括指定存储区域的结束地址。60.下面参照程序事件记录(per)的描述进一步详细描述每个控制寄存器,如针对z/architecture硬件架构的一个实施例所定义的。61.在本文的描述中,可以指示寄存器、其他位置和/或指令的特定位置、特定字段和/或特定大小的字段(例如,特定字节和/或位)。然而,可以提供其他位置、字段和/或大小。此外,虽然可以指定将位设置为特定值,例如1或0,但这仅是示例。在其他示例中,该位可以被设置为不同的值,例如相反的值或另一个值。许多变化是可能的。62.继续图4,作为示例,处理器400耦合到存储器450(例如,存储器104或存储器202),包括由per使用的数据。例如,存储器450包括程序状态字(psw)数据452和实际存储器位置150‑151(454),以及未示出的其他实际位置和/或数据。63.在一个示例中,存储位置454例如包括:用于指示per事件发生的per代码456;寻址和转换模式标识(atmid)字段458,用于指示per事件的原因;以及perasce标识(ai)字段460在特定实例中用于标识用于转换引起事件的引用的地址空间控制单元(asce)。存储位置454可以包括额外、更少和/或其他字段。此外,特定字段的使用可能取决于被检测事件的类型。例如,在一个实施例中,ai字段460不用于检测存储密钥更改事件,而是用于其他类型的事件。其他变化也是可能的。下面更详细地描述每个字段。64.在一个示例中,存储密钥更改检测组件(例如,组件402)使用per来检测存储密钥更改事件并向程序提供关于该事件的通知。参考图5描述了关于检测存储密钥更改事件的进一步细节。在一个示例中,处理由处理器(例如,处理器102、204或400)执行。作为特定示例,处理由处理器的硬件和/或固件执行。65.参考图5,在一个示例中,为了检测存储密钥更改事件,并且可能检测损坏的存储密钥,处理器确定存储密钥(例如,存储密钥300)的所选字段是否已被更新,查询500。作为示例,存储密钥可以经由指令集架构(isa)的一个或多个指令更新,包括例如设置存储密钥扩展(setstoragekeyextended)指令、执行帧管理功能(performframemanagementfunction)指令、测试块(testblock)指令和移动页面(movepage)指令,每个指令都是z/architecture硬件架构的一部分。这些说明只是示例;其他指令可用于更新存储密钥。66.在一个示例中,当这些指令中的一个或多个更新存储密钥的一个或多个选择字段时,(执行这些指令中的一个或多个的)程序经由per,例如,根据本发明的一方面的存储密钥更改事件,指示要识别事件。67.作为示例,选择字段是访问控制字段(例如,访问控制302)和获取保护字段(例如,获取保护304)。更新可以包括将所选字段更新为相同值或不同值。在该示例中,更新引用字段(例如,引用306)和变化字段(例如,变化308)而不更新访问控制字段和获取保护字段中的一个或多个不会导致存储密钥更改事件。68.如果所选字段(例如,访问控制和/或获取保护)被更新,则在一个实施例中,进一步确定是否存在访问异常,查询502。如果所选字段已被更新而无访问异常,则在一个实施例中,进一步询问与存储密钥相关联的存储器块(例如,4k字节块)是否在存储器的指定区域内(例如,由起始地址432和结束地址442定义),查询504。在另一个实施例中,对指定的存储器区域和/或访问异常的检查是可选的。69.如果所选字段在没有访问异常的情况下被更新并且相关联的存储器块位于指定区域内,则已检测到存储密钥更改事件,步骤506。在一个示例中,它是在处理器内执行的per工具做出确定并检测存储密钥更改事件。基于检测到存储密钥更改事件,提供程序中断,步骤508。在一个示例中,程序中断具有程序中断代码0x80。此外,在一个实施例中,在例如存储中的固定位置中提供附加信息以识别原因并向程序提供更多信息,如下所述,步骤510。70.返回查询500,如果所选字段没有被更新,或者如果已经发生访问异常,查询502,或者如果存储器块不位于指定区域内,则在一个例子中没有检测到存储密钥更改事件。71.如本文所述,在一个示例中,使用z/architecture硬件架构的程序事件记录(per)工具来执行存储密钥更改事件的检测。per提供了一种机制来检测和警告程序的选定事件,例如,根据本发明的一个方面,存储密钥更改事件。下面描述了程序事件记录工具的更多细节。为了完整性,根据本发明的一方面,描述了除了用于检测存储密钥更改事件并提供其通知的一个或多个方面之外但不需要的工具的方面。此外,尽管在此处描述的实施例中使用per来检测和提供存储密钥更改事件的通知,但是在其他实施例中,其他工具和/或机制可以用于检测和提供存储密钥更改事件的通知。72.程序事件记录(per)73.在一个实施例中,per用于帮助调试程序。例如,它允许程序收到以下类型的事件警报。74.·执行成功的分支指令。仅当分支目标位置位于指定的存储区域内时才提供事件发生的选项。在此进一步描述指定的存储区域。75.·从指定的存储区域获取指令。76.·更改指定存储区的内容。提供仅当存储区位于指定地址空间内时才发生事件的选项。77.·使用实际地址指令执行存储。78.·事务结束指令的执行。79.·基于例如正在安装的per零地址检测工具,执行使用由包含零的通用寄存器形成的操作数地址来访问存储的指令。80.·基于例如根据本发明的一个方面正在安装per存储密钥更改工具,执行更新指定存储区的存储密钥的设置存储密钥扩展指令、帧管理功能指令、移动页面指令或测试块指令。81.程序可以选择性地指定识别一种或多种以上类型的事件。关于per事件的信息通过例如程序中断(或其他机制)提供给程序,中断的原因在中断代码中标识。82.per指令获取(instruction‑fetching)无效83.作为示例,per‑3工具可以在实现z/architecture硬件架构的模型上可用。安装此功能后,控制寄存器9的第39位在为1时指定per指令获取事件强制无效。当控制寄存器9的第33位(指令获取per事件屏蔽位)也是1时,第39位对此有效。当第33位为0时,无法识别per指令获取事件,第39位无效。当未安装per‑3工具或第39位为0时,per指令获取事件不会强制无效。强制无效的per指令获取事件被称为per指令获取无效事件。不强制无效的per事件称为per基本事件。84.当安装了per‑3工具,并且bit39为1时,由per指令获取事件引起的中断发生在指令获取执行之前,指示per指令获取无效事件、没有其他per事件且无其他程序中断条件上报、指令执行无效。当未安装per‑3工具,或第39位为0时,不强制无效,指示per指令获取基本事件、其他per事件和其他程序中断条件可能并发上报、指令执行可以完成、终止、取消或取消。在没有其他条件的情况下,per指令获取基本事件引起的中断发生在指令获取或其操作单元执行完毕后。85.控制寄存器分配和地址空间控制单元86.用于控制per的信息例如驻留在控制寄存器9、10和11以及地址空间控制单元中。87.取决于模型,当任何或所有控制寄存器9、10或11包含非零值时,地址比较控制可以被禁用并且即使控制寄存器9至11转换回零也保持禁用。88.控制寄存器中的信息格式在一个例子中如下,参考图4。89.控制寄存器9(420)包括,例如:90.per事件掩码(em)422:第32‑39位指定识别哪些类型的事件。第32‑34和36位可用并控制成功的分支事件、指令获取基本事件和存储更改事件。根据本发明的一个方面,当安装per存储密钥更改工具时,也使用per事件掩码的第35位。当安装了per零地址检测工具时,将使用per事件掩码的第37位。安装per‑3工具时,使用per事件掩码的第39位。在esa/390兼容模式下,是否支持存储密钥更改、零地址检测、指令获取无效掩码(分别为第35、37和39位)是不可预测的。在一个示例中,这些位分配如下:91.第32位:成功分支事件92.第33位:指令获取事件93.第34位:存储更改事件94.第35位:存储密钥更改事件95.第36位:存储使用实际地址事件(第34位也应为1)96.第37位:零地址检测事件97.第38位:事务结束事件98.第39位:指令获取无效事件(第33位为1)99.第32‑34位和第36位,当为1时,指定对应类型的事件被识别。但是,当第34位也是1时,第36位对此有效。当第34位为1时,识别存储更改事件。当第34位和第36位为1时,存储更改事件和存储使用实际地址事件都被识别。当一个位为0时,对应的事件类型不被识别。当第34位为0时,不能识别存储更改事件和存储使用实际地址事件。100.当未安装per‑3工具时,忽略第39位。当第3位也为1时,第39位有效。当第33位为1且安装了per‑3工具且第39位为1时,将识别per指令获取无效事件。当第33位为1且第39位为0时(或未安装per‑3工具),则识别per指令获取基本事件。当第33位为0时,per指令获取基本事件和per指令获取无效事件均不被识别。101.当事务执行工具未被安装时,或者当该工具被安装并且位38为0时,事务结束事件不被识别。当安装了事务执行工具并且第38位为1时,事务结束事件被识别为最外层事务结束指令完成的结果。在esa/390兼容模式下,控制寄存器9的第38位被忽略。102.当未安装per存储密钥更改工具时,忽略第35位。当第35位为1并且安装了per存储密钥更改工具时,根据本发明的一个方面,例如,当以下任何指令执行并更新与位于指定区域内的4k字节存储块相关联的存储密钥的acc或f位:103.当安装了移动页面和设置密钥工具并且密钥功能控制(kfc)(通用寄存器0的第51‑53位)包含值4或5时,移动页面104.当sk(通用寄存器r1的第46位)为1时执行帧管理功能105.设置存储密钥扩展106.当模型的实现更新存储密钥时的测试块。107.除了per‑事件掩码422之外,控制寄存器9包括以下描述的各种控制。可以使用额外、更少和/或其他控件。108.分支地址控制(b)424:控制寄存器9的第40位为1时指定,成功的分支事件仅对于到达指定存储区域内的位置的分支发生。当第40位为零时,无论分支目标地址如何,都会发生成功的分支事件。109.事件抑制控制(es)426:当cpu在指令开始时处于事务执行模式时,控制寄存器9的第41位为1时指定,第32‑34、36、37和39位中的per事件掩码将被忽略并假定为包含0。除了下面提到的,当cpu在指令开始时不处于事务执行模式时,或者当寄存器的第41位为0时,所有per事件掩码都按定义运行。110.当(a)最外层事务开始指令被执行,(b)没有并发程序异常条件,以及(c)es控制为1时,用于tbegin指定的事务诊断块(tdb)的任何per存储更改或零地址检测事件和任何指令获取基本事件都被抑制;在这种情况下,不会抑制指令获取无效事件。在esa/390兼容模式下,事件抑制控制被忽略。111.存储更改空间控制(s)428:控制寄存器9的第42位为1时指定,存储更改事件作为仅在指定地址空间内的指定存储区域的引用的结果而发生。地址空间被指定为通过地址空间控制单元中的存储更改事件位发生存储更改事件的地址空间,该位用于转换对地址空间的引用。当dat(动态地址转换)无效时,第42位将被忽略。当dat无效或第42位为0时,存储更改事件不限于仅针对特定地址空间发生。112.控制寄存器10(430)例如包括:113.per起始地址432:控制寄存器10的第0‑63位为指定存储区的起始地址。在esa/390兼容模式下,per起始地址的第32位是否被视为0是不可预测的。114.控制寄存器11(440)例如包括:115.per结束地址442:控制寄存器11的第0‑63位为指定存储区的结束地址。在esa/390兼容模式下,per起始地址的第32位是否被视为0是不可预测的。116.地址空间控制单元(asce):117.当控制寄存器9中的存储更改空间控制为1时,地址空间控制单元的第56位为1时指定由地址空间控制单元定义的地址空间是可以发生存储更改事件所针对的地址空间。当地址空间控制单元用于执行存储操作数存储引用的动态地址转换时,检查asce的第56位。118.per操作119.在一个实施例中,per受psw(例如,psw452)的第1位、per掩码的控制。例如,当per掩码和特定per事件掩码位为1时,cpu为相应类型的事件启用;否则,被禁用。120.由于per基本事件的中断通常发生在负责该事件的指令的执行之后。事件的发生不影响指令的执行,指令可能完成、部分完成、终止、抑制或无效。但是,存储更改事件的识别导致从导致事件的字节开始存储不超过4k的字节,并且在完成一个操作单元时可能会发生零地址检测事件的识别,识别这些per事件可能导致可中断指令的部分完成。当在更新多个4k字节块的存储密钥的指令上检测到存储密钥更改事件时,在一个示例中,在为检测到事件的块设置存储密钥后立即中断该指令。121.当cpu在特定per事件发生时被禁用时,无论是通过psw中的per掩码还是通过控制寄存器9中的掩码,都无法识别该事件。122.对psw中的per掩码或控制寄存器9、10和11中的per控制字段的更改会影响从执行紧随其后的指令开始的per。因此,如果作为变化的结果,指令获取无效事件适用于紧随其后的指令,则该指令的执行将被无效并报告指令获取无效事件。123.对控制寄存器1、7或13中的地址空间控制单元中的存储更改事件位的变化也影响从紧随其后的指令的执行开始的per。可以在访问寄存器期间从主存储器或alb中的asn‑second‑table条目获得的地址空间控制单元中的存储更改事件位的变化不一定具有立即数,如果对per有任何影响。但是,在执行清除alb的清除alb或比较并交换和清除之后,per会立即受到影响。124.如果在执行将cpu从启用变为禁用该类型事件的指令期间发生per基本事件,则识别该per事件。125.per基本事件可以在指令的尝试执行中被识别,并且随后可以为实际执行重新获取指令、dat表条目和操作数。如果任何重新获取的字段被另一个cpu或在试验执行和实际执行之间的通道程序修改,则无法预测所指示的per事件是针对试验还是实际执行。126.原因识别127.per的程序中断将中断代码的第8位设置为1并将识别信息放置在实际存储位置150‑159中。当per事件是存储更改事件或零地址检测事件时,信息也存储在位置161。附加信息通过程序旧程序状态字(psw)和ilc中的指令地址提供(中断长度代码)。128.在一个示例中,位置150‑151(例如,图4的位置454)包括:129.per代码456:per事件的发生由位位置0‑7中的1指示。在一个实施例中,特定类型事件的per代码中的位位置如下:[0130][0131][0132]位置150的位位置2中的1和位位置4中的0指示存储改变事件,而位位置2和4中的1指示存储使用实际地址事件。当发生程序中断时,可以同时指示一种以上的per基本事件。然而,当同时识别存储更改事件和零地址检测事件时,仅指示存储更改事件。此外,如果存在另一个程序中断条件,则程序中断的中断代码可以指示per基本事件和另一个条件。[0133]当针对per指令获取无效事件发生程序中断时,per代码中的第1和第7位被设置为1。没有同时指示其他per事件。[0134]当事务执行工具被安装,并且对于事务事件发生程序中断时,第6位在per代码中被设置为1。如果指令获取基本事件与事务结束事件同时发生,则per代码中的第1位也设置为1。没有其他per事件与事务结束事件同时指示。[0135]零被存储在位置150‑151的位位置3中。未安装per零地址检测工具时,零存储在位位置5。未安装事务执行工具时,零存储在位位置6。未安装per‑3时,存储零在位位置7。[0136]寻址和转换模式识别(atmid)458:在程序中断期间,当指示per事件时,psw(例如,psw452)的第31、32、5、16和17位导致事件的指令的执行可以分别存储在实际位置150‑151的位位置8和10‑13中。如果存储了第31、32、5、16和17位,则在位置150‑151的第9位存储一位。如果第31、32、5、16和17位未存储,则零位存储在位置150‑151的位位置8‑13中。[0137]实际位置150‑151的第8‑13位被命名为寻址和转换模式标识(atmid)。第9位称为atmid有效性位。当第9位为零时,表示存储了无效的atmid(例如,全为零)。[0138]在一个实施例中,有效atmid的位的含义如下:[0139][0140][0141]例如,仅当per事件由以下指令之一引起时才存储有效的atmid:分支和保存和设置模式(bassm)、分支和设置权限(bsa)、分支和设置模式(bsm)、子空间群分支(bsg)、加载psw(lpws)、加载psw扩展(lpwse)、程序调用(pc)、程序返回(pr)、程序转移(pt)、带实例的程序转移(pti)、恢复程序(rp)、设置地址空间控制(sac)、设置地址空间控制快速(sacf)、设置寻址模型(sam24,sam31,sam64)、设置系统掩码(ssm)、然后存储及系统掩码(storethenandsystemmask)(stnsm),然后存储或(storethenorsystemmask)系统掩码(stosm)、管理程序调用(svc)和陷阱(trap2、trap4)。[0142]如果per事件是由任何其他指令引起的,则无法预测是否存储了有效的atmid。per指令获取无效事件掩码位的值不影响atmid字段的内容。[0143]perasce标识(ai)460:如果per代码包含存储更改事件的指示(例如,第2位是1,第4位是0)或零地址检测事件(例如,第5位是1),并且当psw第5位为1并且使用asce转换导致事件的引用时发生事件,位置150‑151的第14和15位被设置为标识地址空间控制单元(asce)用于翻译导致事件的引用,如下所示,在一个示例中:[0144][0145][0146]除上述之外,per工具例如包括:[0147]per地址:(在存储器中)位置152‑159的per地址字段包含用于获取负责识别的一个或多个per事件的指令的指令地址。在esa/390兼容模式下,位置152‑155的per地址字段包含指令地址的第33‑63位,用于获取负责识别的一个或多个per事件的指令。位置152的第0位存储为零。[0148]当指令是执行类型指令(执行或执行相对长)的目标时,用于获取执行类型指令的指令地址被放置在per地址字段中。[0149]per访问标识(paid):如果在per代码中指示存储更改事件或零地址检测事件,并且perasce标识(ai,位置150‑151的第14‑15位)包含01二进制,事件适用的地址空间的指示存储在位置161(实际存储器)。所使用的访问寄存器的编号存储在位置161的第4‑7位,零存储在第0‑3位。当perasce标识不包含01二进制时,位置161的内容是不可预测的。[0150]指令地址:程序旧psw中的指令地址是下一个将要执行的指令的地址,除非还指示了另一个程序条件,在这种情况下,指令地址是由由于那个条件结束的指令确定的地址。当识别到per指令获取无效事件时,程序旧psw中的指令地址就是负责该事件的指令的地址。这与存储在实际存储位置152‑159中的per地址字段中的地址相同。[0151]ilc:对于per指令无效事件,ilc为0。对于per基本事件,ilc表示per地址指定的指令长度,除非由加载(load)psw、加载psw扩展、程序返回或管理程序调用中断引起的psw的并发规范异常时,ilc设置为0。[0152]指示优先级[0153]当识别到per指令获取无效事件并且存在其他程序中断条件时,指示具有最高优先级的程序中断条件。[0154]当指示per指令获取无效事件时,不指示其他per事件。当未指示per指令获取无效事件时,则可识别并报告不止一个per基本事件。本节的其余部分适用于这些情况。[0155]当发生针对per的程序中断并且已经识别出一个以上的per基本事件时,在per代码中同时指示所有识别出的per事件。然而,当存储更改或存储使用实际地址事件与零地址检测事件同时被识别时,仅指示存储更改或存储使用实际地址事件。[0156]当针对多个存储操作数识别出零地址检测事件时,无法预测哪个操作数的asce标识和ar编号(如果适用)存储在位置150‑151和161中。[0157]在用于管理程序调用的指令获取基本事件的情况下,在管理程序调用中断之后立即发生程序中断。[0158]如果在执行一条指令期间识别到per基本事件,该指令还引入了具有早期识别的psw格式错误类型的新psw,则在程序终端的中断代码中同时指示规范异常和per。如果psw格式错误属于延迟识别类型,则中断代码中仅指示per。在这两种情况下,无效的psw被存储为程序旧psw。[0159]per基本事件的识别通常不影响指令执行的结束。但是,在以下情况下,可中断指令的执行不会正常完成:[0160]1、当指令因异步条件(i/o、外部、重启或可抑制机器检查条件)而被中断时,per事件的程序中断首先发生,其他中断随后发生(取决于新psw中的掩码位)以正常的优先级顺序。[0161]2、当停止功能被执行时,在cpu进入停止状态之前发生指示per事件的程序中断。[0162]3、当识别出任何程序异常时,同时指示为该指令执行识别的per事件。[0163]4、根据模型,在某些情况下,per事件的识别可能看起来导致指令过早中断,而没有程序异常的并发指示,没有任何异步条件的中断,并且没有cpu进入停止状态。特别地,存储更改事件的识别导致不超过4k字节被存储,从导致事件的字节开始,并且零地址检测事件的识别可能在操作单元完成时发生。[0164]在上述情况1和2中,如果唯一被识别的per事件是指令获取基本事件并且指令的另一个操作单元仍有待执行,则可以丢弃该事件,结果是不会发生程序中断。事件是否被丢弃是不可预测的。[0165]per指令获取无效事件的识别导致负责该事件的指令的执行被无效。[0166]存储区域指定[0167]在一个实施例中,三种类型的per事件——指令获取、存储更改和存储密钥更改——涉及存储区域的指定。成功的分支事件可能涉及此指定。存储区域从控制寄存器10中的起始地址所指定的位置开始,一直延伸到并包括控制寄存器11中的结束地址所指定的位置。该区域延伸到起始地址的右侧。[0168]每当从指定区域获取由指令地址指定的指令的第一个字节或目标或执行类型指令的第一个字节时(在应用任何地址转换之前),就会发生指令获取事件。[0169]当通过使用定义为逻辑或虚拟地址的操作数地址对指定区域进行存储访问时,发生存储更改事件。然而,当dat打开并且控制寄存器9中的存储更改空间控制为1时,存储区域位于地址空间控制单元中的存储更改事件位为1的地址空间内。对于使用定义为实际地址的操作数地址进行的存储访问,不会发生存储更改事件。[0170]当控制寄存器9中的分支地址控制为1时,当分支目标指令的第一个字节(由分支地址(在应用任何地址转换之前)指定)位于指定区域。[0171]当与更新的存储密钥相关联的4k字节块内的任何字节位于指定区域内时,存储密钥更改事件发生。在一个示例中,控制寄存器10和11的所有位,包括低位12位,都参与指定区域的确定。例如,假设cr10=0x0000000000123017和cr11=0x0000000000123016。如果定义忽略了控制寄存器的低12位,那么在一个示例中,指定区域中将只有地址0x000000000123000的单个4k字节块。[0172]此外,假设cr10=0x0000000000123001和cr11=0x0000000000123ff并进一步假设定义表明只有4k字节块的第一个字节必须位于指定区域内,然后,例如,sske寻址0x0000000000123000不会命中指定区域。[0173]在一个示例中,如果已知被破坏的存储密钥在该范围内,则可以将指定的存储区域设置为特定范围。或者,cr10可以设置为等于0x0000000000000000并且cr11可以设置为0xffffffffffffffff以在任何存储密钥被修改时检测per存储密钥更改事件。其他变化也是可能的。[0174]作为示例,地址是测试块的实际地址、执行帧管理功能和设置存储密钥扩展的实际或绝对地址、以及移动页面的逻辑地址。[0175]指定用于成功分支、指令获取、存储更改事件和存储密钥更改事件的地址集在地址264‑1处回绕;即地址0被认为是在地址264‑1之后。当起始地址小于结束地址时,该区域是连续的。当起始地址大于结束地址时,指定的位置集合包括从起始地址到地址264‑1的区域和从地址0到并包括结束地址的区域。当起始地址等于结束地址时,仅指定一个位置。[0176]成功分支、指令获取、存储更改和存储密钥更改事件的地址比较是使用64位地址执行的。这是在24位或31位寻址模式下通过将左侧的虚拟、逻辑或指令地址分别扩展为40或33个零,然后将其与起始地址和结束地址进行比较来实现的。[0177]示例编程注释:在一些模型中,地址范围检查的性能通过对tlb(翻译后备缓冲器)中每个页表条目的扩展来辅助。在这样的实现中,当成功的分支、指令获取或存储更改事件掩码为1或将这些per事件掩码中的任何一个设置为1时,更改控制寄存器10和11的内容可能会导致tlb被清除条目。即使cpu因per事件被禁用,也可能会出现这种情况。因此,在可能的情况下,程序应避免加载控制寄存器9、10或11。[0178]示例per事件例如包括:[0179]成功分支[0180]当控制寄存器9中的分支地址控制为0时,成功分支事件发生独立于分支目标地址。当分支地址控制为1时,仅当分支目标指令的第一个字节在控制寄存器10和11指定的存储区域中时,才会发生成功分支事件。[0181]受分支地址控制的影响,每当以下指令之一引起分支时,成功分支事件发生,例如:分支和链接(branchandlink)(bal,balr);分支并保存(branchandsave)(bas,basr);分支和保存设置模式(branchandsaveandsetmode)(bassm);分支和设置权限(branchandsetauthority)(bsa);分支和设置模式(branchandsetmode)(bsm);分支堆栈(branchandstack)(bakr);子空间组中的分支(branchinsubspacegroup)(bsg);条件间接分支(branchindirectoncondition)、条件分支(branchoncondition)(bc,bcr);分支计数(branchoncount)(bct、bctr、bctg、bctgr);高索引(index)分支(branchonindexhigh)(bxh,bxhg);低索引或相等分支(branchonindexloworequal)(bxle,bxleg);分支相对并保存(branchrelativeandsave);分支相对而保存长(branchrelativeandsavelong);分支相对条件(branchrelativeoncondition)(brc);分支相对条件长(branchrelativeonconditionlong)(brcl);分支相对计数(branchrelativeoncount)(brct);分支相对高计数(branchrelativeoncounthigh)(brcth);分支相对高索引(branchrelativeonindexhigh)(brxh,brxhg);分支相对低索引或相等(branchrelativeonindexloworequal)(brxle,brxlg);比较和分支(compareandbranch)(crb,cgrb);比较和分支相对(compareandbranchrelative)(crj,cgrj);比较立即和分支(compareimmediateandbranch)(cib,cgib);比较立即和分支相对(compareimmediateandbranchrelative)(cij,cgij);比较逻辑和分支(comparelogicalandbranch)(clrb、clgrb);比较逻辑和分支相对(comparelogicalandbranchrelative)(clrj,clrgj);比较逻辑立即和分支(comparelogicalimmediateandbranch)(clib、clgib);比较逻辑立即和分支相对(comparelogicalimmediateandbranchrelative)(clij,clgij);恢复程序(rp);和陷阱(trap2、trap4)。[0182]受分支地址控制的影响,只要以下指令之一导致分支,成功分支事件也会发生:程序调用(pc);程序返回(pr);程序转移(pt);和带有实例的程序转移(pti)。[0183]对于程序调用、程序返回、程序转移和带有实例的程序转移,分支目标地址被认为是由指令放置在psw中的新指令地址。[0184]当受保护的存储工具被启用时,成功的分支事件被识别为由以下任一指令引起的受保护的存储事件的结果:加载保护(lgg)和加载逻辑和移位保护(llgfsg)。[0185]当分支地址控制为1时,分支地址被认为是受保护的存储事件参数列表(gsepl)中的受保护的存储事件处理程序地址(gseha)字段的内容。[0186]如果per事件掩码的第32位为1并且psw中的per掩码为1,则成功分支事件导致per成功分支事件被识别。[0187]per成功分支事件通过将第0位或per代码设置为1来指示。[0188]存储更改[0189]每当cpu通过使用逻辑或虚拟地址对控制寄存器10和11指定的存储区域进行存储访问而没有访问异常时,就会发生存储更改事件。如果控制寄存器9中的存储更改空间控制为1,则仅当dat用于将引用转换为存储位置的地址空间控制单元中的存储更改事件位为1时,才会发生事件。[0190]每当cpu执行导致操作数的全部或部分被存储在指定存储区域内的指令时,存储的内容被认为已经被更改。每当出于指示的保护例外的目的而考虑进行存储时,就认为已经发生更改,除非通道程序对数据存储进行识别。即使存储的值与原始值相同,存储也构成per目的的更改。此外,tbegin指定的tdb的内容被认为已被最外层tbegin指令的执行更改,而不管tdb是否实际被中止的事务存储;对于内部tbegin指令的第一个操作数位置是否检测到per存储更改事件是不可预测的。[0191]不监控由cpu引用的隐含位置。这些位置包括psw和中断代码位置、程序中断事务诊断块、增强型监控异常计数器和由控制寄存器12指定的跟踪条目。然而,当信息通过指令显式存储在那里时,这些位置被监控。同样,监控不适用于通道程序的数据存储。链接堆栈中的隐含位置(由对链接堆栈进行操作的指令存储在其中)以及由监控器调用指令存储在其中的增强监控器计数数组条目都受到监控。[0192]仅当存储实际发生时,i/o指令才被认为更改第二操作数位置。[0193]存储更改不适用于其操作数被指定为具有实际地址或绝对地址的指令。因此,存储更改不适用于比较和替换dat表条目、使dat表条目无效(无效和清除操作)、使页表条目无效、页入、执行帧管理功能、重置参考位扩展、重置参考位多个,设置存储密钥扩展、使用实际地址存储、测试块和测试挂起中断(当有效地址为零时)。存储更改不适用于存储工具列表对实际位置200的存储,也不适用于通过导致跟踪发生的指令对跟踪表的存储。[0194]如果per事件掩码的第34位为1并且psw中的per掩码为1,则存储更改事件导致per存储更改事件被识别。在确定是否要识别per存储更改事件时,忽略per事件掩码的第36位。[0195]通过将per代码的第2位设置为1并且将per代码的第4位设置为0来指示每个存储更改事件。[0196]使用实际地址存储[0197]每当执行使用实际地址存储指令时,就会发生使用实际地址存储事件。[0198]使用实际地址存储事件与指定的存储区域之间没有关系。[0199]如果per事件掩码的第34和36位为1并且psw中的per掩码为1,则存储使用实际地址事件导致per存储使用实际地址事件被识别。[0200]per存储使用实际地址事件通过将per代码的第2和4位设置为1来指示。[0201]零地址检测[0202]当安装了per零地址检测工具时,每当cpu使用由包含零的通用寄存器或通用寄存器的子字段形成的有效操作数地址进行存储访问时,就会发生零地址检测事件。但是,在执行rx‑、rxe‑、rxf‑、rxy‑或vrx格式指令期间,仅当cpu使用在以下条件之一下形成的有效操作数地址进行存储访问时才会发生该事件:[0203]1、基址寄存器编号为零,变址寄存器编号非零,变址寄存器包含零。[0204]2、变址寄存器编号为零,基址寄存器编号非零,基址寄存器包含零。[0205]3、当基址寄存器编号和变址寄存器编号均非零时,无法预测以下情况中的哪一种导致该事件:[0206](a)基址寄存器包含零。[0207](b)基址寄存器和变址寄存器的内容之和为零。[0208]在vrv格式指令的执行过程中,如果cpu进行存储访问,则无法预测以下哪种或多种情况会导致事件发生:[0209]1、基址寄存器编号为零,并且第二操作数的索引元素的值为零。[0210]2、基址寄存器编号非零且基址寄存器包含零。[0211]3、基址寄存器的内容与索引元素的值之和为零。[0212]除非以下说明,每当使用该地址对存储进行获取、存储或更新引用时,都执行操作数地址的零地址检测,并且仅当操作数地址用于访问存储。[0213]除了条件间接分支(branchindirectoncondition),不对分支类型指令的分支地址进行零地址检测。对于条件间接分支,零地址检测是在第二个操作数地址上执行的,而不是在从第二个操作数中获取的分支地址上执行的。对于加载保护和加载逻辑和移位保护,在指令的第二个操作数地址上执行零地址检测,即使在识别出受保护的存储事件时这些被视为分支类型指令。[0214]也不对执行(execute)指令的目标指令地址和测试块指令的通用寄存器r2的内容进行零地址检测。[0215]对于压缩调用,将utf‑16转换为utf‑32,将utf‑16转换为utf‑8,将utf‑32转换为utf‑16,将utf‑32转换为utf‑8,将utf‑8转换为utf‑16、将utf‑8转换为utf‑32,当到达第一个操作数的末尾时,对于任何存储操作数是否识别到per零地址检测事件是不可预测的,但未到达第二个操作数的末尾。[0216]在指令执行开始时评估用于引起零地址检测事件的条件。如果在指令执行期间重新评估这些条件,则是不可预测的。[0217]除以下说明外,寄存器内容是否为零的确定取决于当前的寻址模式,如下所示:[0218]·在24位和31位寻址模式中,如果第32‑63位全为零,则认为寄存器包含零。[0219]·在64位寻址模式中,如果第0‑63位都是零,则认为寄存器包含零。[0220]对于比较和替换dat表条目(compareandreplacedattableentry),当通用寄存器r2的位位置59包含零时,如果第0‑52位全为零,则认为通用寄存器r2包含零;当通用寄存器r2的第59位为1时,如果第0‑51位全为零,则认为通用寄存器r2包含零。对于无效dat表条目(invalidatedattableentry),如果第0‑51位全为零,则通用寄存器r1被认为包含零;对于无效页表条目(invalidatepagetableentry),如果第0‑52位全为零,则认为通用寄存器r1包含零,而不管寻址模式。[0221]零地址检测事件:如果psw中的per掩码为1且per事件掩码的第37位为1,则零地址检测事件导致per零地址检测事件被识别。[0222]per零地址检测事件通过将per代码的第5位设置为1来指示。[0223]事务结束[0224]当cpu在最外层事务结束指令开始时处于事务执行模式时,在指令完成时发生事务结束事件。[0225]事务结束事件与指定的存储区域之间没有关系。[0226]如果per事件掩码的第38位为1并且psw中的per掩码为1,则事务结束事件导致per事务结束事件被识别。[0227]per事务结束事件通过将per代码的第6位设置为1来指示。[0228]当事务结束指令被执行并且cpu不处于事务执行模式时,事务结束事件不被识别。[0229]存储密钥更改[0230]根据本发明的一个方面,每当cpu更新与4k字节存储块相关联的存储密钥的acc或f位而没有访问异常时,就会发生存储密钥更改事件。在由控制寄存器10和11指定的存储区域内。更改r或c位不会导致此事件,除非它也更改了acc或f位。在一个示例中,即使新值与原始值相同,acc或f位的更新也被认为是出于per目的的更改。[0231]在其他实施例中,当cpu更新例如与4k字节存储块(无论指定的存储区域)。其他变化也是可能的。[0232]作为示例,如果与更新的存储密钥相关联的4k字节块位于指定区域内(或在另一实施例中,未指定指定区域),则四个指令可导致存储密钥更改事件:[0233]·设置存储密钥扩展的任何执行。当安装了条件sske工具时,mr和mc位中的一个或两个为1,并且不需要更新访问控制和获取保护位,如果这被认为是存储密钥更改时间则取决于模型。在访问控制和获取保护位被更新的情况下,例如只要相关联的4k字节存储块位于指定区域内,就会发生存储密钥更改事件。[0234]·当sk(通用寄存器r1的第46位)为1时执行帧管理功能。当安装了条件sske工具时,当mr或mc位为非零时的处理与上述设置存储密钥扩展指令相同。[0235]·当安装了移动页面和设置密钥功能并且密钥功能控制(kfc)(通用寄存器0的第51‑53位)包含值4或5时,移动页面。[0236]·测试块的任何执行,但在一个示例中,仅当模型的实现实际更新存储密钥时。[0237]如果例如per事件掩码的第35位是1并且psw中的per掩码是1,则存储密钥更改事件导致per存储密钥更改事件被识别。[0238]per存储密钥更改事件通过将per代码的第3位设置为1来指示。[0239]与其他中断条件同时发生的per事件的指示[0240]当报告per取指令无效事件时,不报告其他per事件和不报告其他程序中断条件。[0241]作为一个示例,以下规则管理由还导致程序异常、监控器事件、空间切换事件或管理程序调用中断的指令导致的per基本事件的指示。[0242]1、指令获取基本事件的指示不取决于指令的执行是完成、终止、抑制还是无效。但是,抑制和无效的特殊情况的示例如下:[0243]a、当指令由psw中的奇数指令地址指定时,不指示指令获取事件。[0244]b、当访问异常适用于psw指令地址指定的指令的第一个、第二个或第三个半字,并且安装了per‑3工具时,不会指示指令获取事件。但是,如果未安装per‑3工具,则无法预测是否指示指令获取事件。[0245]c、当(a)访问异常适用于执行类型指令的目标位置的第一个、第二个或第三个半字,或(b)执行(execute)的目标地址为奇数时,在一个示例中,以下情况适用:如果安装了per‑3工具,然后不为目标位置指示指令获取事件;对于执行型指令是否指示指令获取事件是不可预测的,包括per地址范围包括执行型指令及其目标的情况。如果未安装per‑3工具,则无法预测指令获取事件是针对执行型指令还是针对目标位置。[0246]2、当操作完成或部分完成时,指示事件,而不管是否也识别出任何程序异常、空间切换事件或监控器事件。[0247]3、成功分支,零地址检测;存储更改和使用实际地址的存储不用于操作,或者在指令可中断的情况下,对于被抑制或无效的操作单元。[0248]4、当指令的执行终止时,每当事件发生时指示存储更改或零地址检测。如果在指令的执行完成后事件会发生,模型可以指示该事件,即使更改结果字段的内容取决于操作数值。出于此定义的目的,那些允许终止(寻址、保护和数据)的异常的发生被认为导致终止,即使结果区域没有改变。[0249]5、当加载psw、加载psw扩展、程序返回、设置系统掩码、存储然后或系统掩码或管理程序调用导致per基本条件时,同时引入具有psw格式错误类型的新的psw,该psw格式错误在psw激活后立即识别时,中断代码识别per基本条件和规范异常。[0250]6、当加载psw、加载psw扩展、程序返回或管理程序调用导致per条件并同时引入具有psw格式错误类型的新psw,该psw格式错误被识别为执行的一部分下一条指令时,引入的psw将作为旧psw存储,而不会获取或执行下一条指令,也不会识别出规范异常。[0251]7、当最外面的事务开始指令导致per基本事件和并发程序异常时,事件抑制控制不适用。[0252]当在cpu处于事务执行模式时发生per事件时,事务被中止。[0253]示例编程说明例如包括:[0254]1、可中断指令比较和形成码字(compareandformcodeword)、比较管理程序逻辑(comparelogiclong)、比较直到子串相等(compareuntilsubstringequal)、压缩调用(compressioncall)、移动长(movelong)、测试块(testblock)和更新树(updatetree)的执行可以引起指令获取和零地址检测的事件。可中断指令的执行执行帧管理功能(当安装了增强型dat工具时,帧大小的代码指定了一个1m字节的帧),设置存储密钥扩展(当安装了增强型dat工具时,并且多块控制是其中之一)并且测试块可以引起指令获取事件。压缩调用、移动长和更新树的执行会导致指令获取和存储更改的事件。[0255]这种指令的中断可能导致per基本事件被指示不止一次。因此,在一个示例中,程序可以从per数据中去除冗余事件指示。在一个示例中,以下规则管理在执行这些指令期间适用事件的指示:[0256]a、指示指令获取基本事件,例如,每当指令获取执行时,无论是初始执行还是恢复,除非该事件是唯一的per事件,否则可能会被丢弃(未指示)需要说明的是,中断是由于异步中断条件或停止功能的执行,指令的一个操作单元仍有待执行。[0257]b、仅当数据已通过从最后一次启动开始并以中断前传输的最后一个字节结束的操作部分存储在指定的存储区域内时,才指示存储更改事件。对于过早中断,在恢复操作后是否会再次发生该事件没有提供特殊指示。当指定的存储区域为单字节位置时,在执行移动长或压缩调用时只能识别一次存储更改事件,但对于更新树可以多次识别。[0258]2、以下是程序要采取的一般动作的概要的一个示例,该动作是为了删除可中断指令的per数据中的per基本事件的多个条目,以便指令的每次完整执行只有一个条目得到:[0259]a、检查per地址是否等于旧psw中的指令地址,以及最后执行的指令是否可中断。[0260]b、如果两个条件都满足,则删除指令获取事件。[0261]c、如果两个条件都满足并且事件是存储更改,则如果剩余目标操作数的某些部分位于指定的存储区域内,则删除该事件。[0262]3、由加载psw(或加载psw扩展)指令或后续指令引起的per指令获取基本事件的指示的示例,结合由加载psw指令引入的条目psw格式错误或奇数指令地址。[0263]虽然这里描述了per工具的一个实施例,但其他实施例也是可能的。此外,可以使用其他工具或能力来提供本发明的一个或多个方面。可以进行许多更改和变化。[0264]本发明的一个或多个方面与计算机技术密不可分,并有助于计算机内的处理,提高其性能。存储密钥更改事件的检测使得能够检测到不正确的程序更改存储密钥和/或损坏的存储密钥,从而提高了计算环境内的存储器和处理的安全性。通过促进检测编程错误和纠正错误程序而无需执行许多指令来确定损坏的存储密钥,也提高了性能。[0265]参考图6a‑6b描述了促进计算环境内的处理的一个实施例的进一步细节,因为它涉及本发明的一个或多个方面。在一个示例中,处理器的硬件和/或固件用于执行下述处理。[0266]参考图6a,在一个实施例中,确定是否在计算环境的处理器内存储密钥更改事件已经发生(600)。该确定包括检查存储密钥的一个或多个选定字段是否已被更新(602)。存储密钥与存储器块相关联并控制对存储器块的访问(604)。在一个示例中,基于指示存储密钥的一个或多个选定字段已被更新的检查,存储密钥更改事件已经发生(606)。基于确定存储密钥更改事件已经发生,提供存储密钥更改事件的通知(608)。[0267]作为一个示例,提供通知包括基于确定存储密钥更改事件已经发生,经由中断提供存储密钥更改事件的通知(609)。[0268]在一个示例中,检查包括检查存储密钥的一个或多个选定字段是否已经在没有访问异常的情况下被更新(610)。基于指示存储密钥的一个或多个选定字段已被更新而没有访问异常的检查,存储密钥更改事件已经发生(612)。[0269]在一个示例中,确定存储密钥更改事件是否已经发生还包括确定存储器块是否位于指定的存储区域内(614)。基于指示存储密钥的一个或多个选定字段已经被更新并且存储器块位于指定存储区域内的检查,存储密钥更改事件已经发生(616)。[0270]此外,参考图6b,在一个示例中,检查包括检查存储密钥的一个或多个选定字段是否已在无访问异常的情况下被更新(620),并基于指示存储密钥的一个或多个选定字段已在无访问异常的情况下被更新并且存储器块位于指定存储区域内的检查而发生存储密钥更改事件(622)。[0271]作为示例,指定存储区域由在第一位置中指定的存储器的起始地址和在第二位置中指定的存储器的结束地址来定义(624)。例如,第一位置是选定的控制寄存器,而第二位置是另一个选定的控制寄存器(626)。[0272]在一个示例中,结束地址环绕到起始地址,并且在指定存储区域的定义中使用用于起始地址和用于结束地址的选定数量的低阶位以包括多于一个存储器块(628)。此外,在一个示例中,确定存储器块是否位于指定存储区域内包括确定存储器块的一个或多个存储器单元是否位于指定存储区域内(630)。[0273]作为示例,一个或多个选定字段包括存储密钥(632)的访问控制字段和/或存储密钥(634)的获取保护字段。[0274]其他变化和实施例是可能的。[0275]本发明的各方面可以被许多类型的计算环境使用。结合并使用本发明的一个或多个方面的计算环境的另一实施例参考图7a进行描述。在该示例中,计算环境10包括例如本地中央处理单元(cpu)12、存储器14和一个或多个输入/输出设备和/或接口16,它们通过例如一个或更多总线18和/或其他连接。作为示例,计算环境10可以包括由纽约阿芒克的国际商业机器(ibm)公司提供的处理器;由位于加利福尼亚州帕洛阿尔托的惠普(hp)公司提供的带有英特尔(intel)安腾(itanium)ii处理器的hpsuperdome;和/或其他基于国际商业机器公司、惠普(hp)公司、英特尔(intel)公司、甲骨文(oracle)公司或其他公司提供的架构的机器。ibm、z/architecture、ibmz、z/os、pr/sm和powerpc是国际商业机器(ibm)公司在至少一个司法管辖区的商标或注册商标。英特尔(intel)和安腾(itanium)是英特尔或其子公司在美国和其他国家/地区的商标或注册商标。[0276]本地中央处理单元12包括一个或多个本地寄存器20,例如一个或多个通用寄存器和/或在环境内的处理期间使用的一个或多个专用寄存器。这些寄存器包括代表任何特定时间点环境状态的信息。[0277]此外,本机中央处理单元12执行存储在存储器14中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器14中的仿真器代码22。该代码使得在一种架构中配置的计算环境能够模仿另一种架构。例如,仿真器代码22允许基于z/architecture硬件体系结构以外的体系结构的机器,例如powerpc处理器、hpsuperdome服务器或其他,模拟z/architecture硬件体系结构并执行基于z/architecture硬件架构开发的软件和指令。[0278]参考图7b描述了与仿真器代码22有关的进一步细节。存储在存储器14中的客户指令30包括被开发以在不同于本机cpu12的架构的架构中执行的软件指令(例如,与机器指令相关)。例如,客户指令30可能已被设计为在处理器上执行基于z/architecture硬件架构,而是在本机cpu12上进行仿真,例如可能是英特尔安腾ii处理器。在一个示例中,仿真器代码22包括指令获取例程32以从存储器14获得一个或多个客户指令30,并且可选地为获得的指令提供本地缓冲。它还包括指令翻译例程34,以确定已获得的客户指令的类型,并将客户指令翻译成一个或多个相应的本地指令36。该翻译包括,例如,识别将由客户执行的功能指令并选择本地指令来执行该功能。[0279]此外,仿真器代码22包括仿真控制例程40以使得本地指令被执行。仿真控制例程40可以使本机cpu12执行本机指令例程,该本机指令仿真一个或多个先前获得的客户指令,并且在这样的执行结束时,将控制返回到指令获取例程以仿真下一个客户指令的获得或一组客户指令。本机指令36的执行可以包括将数据从存储器14加载到寄存器中;将数据从寄存器存储回内存;或执行由翻译例程确定的某种类型的算术或逻辑运算。[0280]每个例程例如以软件实现,该软件存储在存储器中并由本地中央处理单元12执行。在其他示例中,一个或多个例程或操作以固件、硬件、软件或一些其组合。仿真处理器的寄存器可以使用本机cpu的寄存器20或通过使用存储器14中的位置来仿真。在实施例中,客户指令30、本机指令36和仿真器代码22可以驻留在相同的存储器中或者可以在不同的存储器设备之间分配。[0281]上述计算环境只是可以使用的计算环境的示例。可以使用其他环境,包括但不限于非分区环境、分区环境和/或模拟环境;实施例不限于任何一种环境。[0282]每个计算环境能够被配置为包括本发明的一个或多个方面。例如,根据本发明的一个或多个方面,每个都可以被配置为执行存储密钥更改检测处理。[0283]一个或多个方面可以涉及云计算。[0284]应当理解,虽然本公开包括关于云计算的详细描述,但是在此引用的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实现。[0285]云计算是一种服务交付模型,用于实现对可配置计算资源共享池(例如,网络、网络带宽、服务器、处理、内存、存储、应用程序、虚拟机和服务),可以通过最少的管理工作或与服务提供者的交互来快速提供和发布。该云模型可以包括至少五个特征、至少三个服务模型和至少四个部署模型。[0286]特性如下:[0287]按需自助服务:云消费者可以根据需要自动单方面提供计算能力,例如服务器时间和网络存储,而无需与服务提供者进行人工交互。[0288]广泛的网络访问:能力可通过网络获得并且通过促进异构瘦或胖客户端平台(例如,移动电话、膝上型电脑和pda)的使用的标准机制来访问。[0289]资源池:提供者的计算资源被池化以使用多租户模型为多个消费者服务,根据需求动态分配和重新分配不同的物理和虚拟资源。存在位置独立性,因为消费者通常无法控制或了解所提供资源的确切位置,但可能能够在更高的抽象级别(例如,国家、州或数据中心)指定位置。[0290]快速弹性:在某些情况下可以自动地快速且弹性地供应能力以快速向外扩展并快速释放以快速收缩。对于消费者而言,可用于供应的能力通常看起来是无限的并且可以在任何时间任何数量。[0291]测量的服务:云系统通过在适合服务类型(例如,存储、处理、带宽和活动用户帐户)的某种抽象级别上利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用情况,从而为所用服务的提供者和消费者提供透明度。[0292]服务模式如下:[0293]软件即服务(saas):提供给消费者的能力是使用在云基础设施上运行的提供商的应用程序。这些应用程序可通过瘦客户端界面(例如web浏览器(例如,基于web的电子邮件))从各种客户端设备访问。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统、存储,甚至单个应用程序功能,但有限的用户特定应用程序配置设置可能除外。[0294]平台即服务(paas):提供给消费者的能力是将消费者创建的或获取的应用程序部署到云基础设施上,该应用程序使用提供商支持的编程语言和工具创建。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统或存储,但可以控制部署的应用程序和可能的应用程序托管环境配置。[0295]基础设施即服务(iaas):提供给消费者的能力是提供处理、存储、网络和其他基本计算资源,消费者能够在其中部署和运行任意软件,其中可以包括操作系统和应用程序.消费者不管理或控制底层云基础设施,但可以控制操作系统、存储、部署的应用程序,以及可能对选定网络组件(例如主机防火墙)的有限控制。[0296]部署模型如下:[0297]私有云:云基础设施仅为组织运行。它可能由组织或第三方管理,可能存在于内部或外部。[0298]社区云:云基础设施由多个组织共享并支持具有共同关注点(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可能由组织或第三方管理,并且可能存在于内部或外部。[0299]公共云:云基础设施可供公众或大型行业团体使用,并由销售云服务的组织拥有。[0300]混合云:云基础架构是两个或多个云(私有、社区或公共)的组合,这些云仍然是独特的实体,但通过标准化或专有技术绑定在一起,使数据和应用程序具有可移植性(例如,云之间的负载平衡)。[0301]云计算环境是面向服务的,关注于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。[0302]现在参考图8,描绘了说明性云计算环境50。如图所示,云计算环境50包括一个或多个云计算节点52,云消费者所使用的本地计算设备例如个人数字助理(pda)或蜂窝电话54a、台式计算机54b、膝上型计算机54c、和/或汽车计算机系统54n可以通信。节点52可以相互通信。它们可以物理地或虚拟地分组(未示出)在一个或多个网络中,例如私有、社区、公共或混合云,如上文所述,或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为云消费者不需要在本地计算设备上维护资源的服务。可以理解,图8中所示的计算设备54a‑n的类型仅用于说明,并且计算节点52和云计算环境50可以通过任何类型的网络和/或网络可寻址与任何类型的计算机化设备通信连接(例如,使用网络浏览器)。[0303]现在参考图9,示出了由云计算环境50(图8)提供的一组功能抽象层。事先应理解,图9所示的组件、层和功能仅用于说明,本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:[0304]硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:大型机61;基于risc(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。[0305]虚拟化层70提供了一个抽象层,可以从该抽象层提供虚拟实体的以下示例:虚拟服务器71;虚拟存储72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;和虚拟客户端75。[0306]在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境中利用资源时提供成本跟踪,以及对这些资源的消耗进行计费或开票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及对数据和其他资源的保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,从而满足所需的服务级别。服务水平协议(sla)规划和实现85为根据sla预计未来需求的云计算资源提供预先安排和采购。[0307]工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:映射和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;交易处理95;和存储密钥更改检测处理96。[0308]本发明的方面可以是处于任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质(或介质)。[0309]计算机可读存储介质可以是有形设备,可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括以下:便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器唯一存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd‑rom)、数字多功能磁盘(dvd)、记忆棒、软盘、机械编码设备,例如穿孔卡或凹槽中记录有指令的凸起结构,以及前述的任何合适组合。此处使用的计算机可读存储介质不应被解释为瞬态信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,光脉冲通过光缆)或通过电线传输的电信号。[0310]这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者通过网络下载到外部计算机或外部存储设备,例如因特网、局域网、广域网和/或无线网络。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。[0311]用于执行本发明的操作的计算机可读程序指令可以是汇编器指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、用于集成电路,或以一种或多种编程语言的任意组合编写的源代码或目标代码,包括面向对象的编程语言,例如smalltalk、c 等,以及过程编程语言,例如“c”编程语言或类似的编程语言。计算机可读程序指令可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以个性化电子电路,以便执行本发明的方面。[0312]在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的方面。应当理解,流程图和/或框图的每个块,以及流程图和/或框图中的块的组合,可以由计算机可读程序指令来实现。[0313]这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生产机器,使得经由计算机的处理器执行的指令或其他可编程数据处理设备,创建用于实现在流程图和/或框图块中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制造物品,其包括实现流程图和/或框图块或多个块中指定的功能/动作的方面的指令。[0314]计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图块中指定的功能/动作。[0315]图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每一块可表示模块、段或指令的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实施方式中,块中标注的功能可以不按照图中标注的顺序发生。例如,根据所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者有时可以以相反的顺序执行这些块。还将注意到,框图和/或流程图说明的每个块,以及框图和/或流程图说明中的块的组合,可以通过基于专用硬件的系统来实现,这些系统执行指定的功能或动作或执行专用硬件和计算机指令的组合。[0316]除了上述之外,一个或多个方面可以由提供客户环境管理的服务提供商提供、提供、部署、管理、服务等。例如,服务提供商可以创建、维护、支持等为一个或多个客户执行一个或多个方面的计算机代码和/或计算机基础设施。作为回报,作为示例,服务提供商可以根据订阅和/或费用协议从客户那里接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方出售广告内容中接收付款。[0317]在一方面,可以部署应用程序以执行一个或多个实施例。作为一个示例,应用程序的部署包括提供可操作以执行一个或多个实施例的计算机基础设施。[0318]作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。[0319]作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括一种计算机可读介质,其中该计算机介质包括一个或多个实施例。结合计算机系统的代码能够执行一个或多个实施例。[0320]尽管上面描述了各种实施例,但这些仅仅是示例。例如,可以使用其他架构的计算环境来合并和使用一个或多个实施例。此外,可以使用不同的工具来检测存储密钥更改。许多变化是可能的。[0321]此外,可以受益并使用其他类型的计算环境。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦合到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器、大容量存储器和提供至少一些程序代码的临时存储以减少必须从大容量存储器中检索代码的次数的高速缓存存储器在执行过程中。[0322]输入/输出或i/o设备(包括但不限于键盘、显示器、指点设备、dasd、磁带、cd、dvd、拇指驱动器和其他存储介质等)可以耦合到系统直接或通过干预i/o控制器。网络适配器也可以耦合到系统,以使数据处理系统能够通过介入私有或公共网络与其他数据处理系统或远程打印机或存储设备耦合。调制解调器、电缆调制解调器和以太网卡只是一些可用的网络适配器类型。[0323]此处使用的术语仅用于描述特定实施例的目的,并不旨在进行限制。如本文所用,单数形式的“一个”、“这个”和“那个”也旨在包括复数形式,除非上下文另有明确指示。将进一步理解,术语“包含”和/或“包括”,当在本说明书中使用时,指定所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、组件和/或它们的组。[0324]以下权利要求中所有装置或步骤加功能元件的相应结构、材料、动作和等效物(如果有的话)旨在包括用于与其他要求保护的元件组合执行功能的任何结构、材料或动作正如特别声明的那样。已经出于说明和描述的目的呈现了一个或多个实施例的描述,但并不旨在穷举或限于所公开的形式。许多修改和变化对于本领域普通技术人员来说将是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有适合于预期的特定用途的各种修改的各种实施例。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜