调节受保护存储设施的操作的加载和存储控制的制作方法

文档序号:18600958发布日期:2019-09-03 22:38阅读:175来源:国知局
调节受保护存储设施的操作的加载和存储控制的制作方法

一个或多个方面一般涉及计算环境内的处理,并且更特别地涉及改进该处理。



背景技术:

诸多现代编程语言(诸如,java和python)例如允许应用程序通过简单地参照数据对象而不强制跟踪或随后在不再需要存储器时释放存储器来对数据对象实例化。

作用中数据对象(即,由应用程序使用的数据对象)和非作用中数据对象(即,应用程序不再需要的数据对象)可混用于语言的存储器堆集中,从而导致分段的存储器空间。通常被称作存储回收或废弃项目收集的处理不仅将非作用中对象从存储器堆集移除,而且通过将作用中存储器对象联合到更紧凑存储器块中来重新定位作用中存储器对象。这允许将自由存储器组合为可用于供由应用程序随后使用的较大连续块中。

重新定位作用中数据对象的挑战仅是:其处于作用中,且可同时由除执行存储回收的中央处理单元外的其它中央处理单元参照。因此,为执行存储回收,暂停执行在进行存储回收时可能参照存储器的所有应用程序进程。取决于所需要的存储器重新定位的数量,这可导致应用程序的不可接受的延迟。



技术实现要素:

通过提供用于促进计算环境内的处理的计算机程序产品来克服现有技术的缺点且提供额外优点。计算机程序产品包括可由处理电路读取且存储用于执行方法的指令的存储介质。例如,方法包括获得用于执行与一个或多个受保护存储控制相关的动作的指令;以及执行指令以执行该动作。执行包括从位置获取与一个或多个受保护存储控制相关联的内容,以及使用该内容执行动作。一个或多个受保护存储控制用以控制用于保护存储器的部分的受保护存储设施的操作。

通过使用对受保护存储设施的控制操作的控制,促进计算环境内的某些任务的处理(诸如存储回收),从而改进计算环境的处理。

作为一个示例,一个或多个受保护存储控制包括用于指定要被保护的存储器的区域的指定寄存器、指示存储器的区域的一个或多个区段是否要被保护的掩码寄存器、以及用于指定受保护存储事件的一个或多个属性的位置的参数列表寄存器。

在一个示例中,动作包括加载,获取内容包括从存储器获取内容,并且执行动作包括将从存储器获取的内容加载到一个或多个受保护存储控制中。

作为示例,从存储器获取内容包括从存储器中的控制块获取内容。控制块包括例如受保护存储指定寄存器的内容、受保护存储区段掩码寄存器的内容、以及受保护存储事件参数列表地址寄存器的内容。

在又一示例中,动作包括存储,获取内容包括从一个或多个受保护存储控制获取内容,并且执行动作包括将从一个或多个受保护存储控制获取的内容存储到存储器中。在一个示例中,存储包括将内容存储在存储器的控制块中。

在一个实施例中,一个或多个受保护存储控制包括从一组寄存器中选择的至少一个寄存器,一组寄存器包括用于指定要被保护的存储器的区域的指定寄存器、指示存储器的区域的一个或多个区段是否要被保护的掩码寄存器、以及用于指定受保护存储事件的一个或多个属性的位置的参数列表地址寄存器。

作为一个特定示例,指令包括加载保护存储控制指令,其包括用以指定加载保护存储控制操作的操作码、以及用以定义地址的至少一个字段,该地址指定内容从其中加载到一个或多个受保护存储控制中的存储器中的位置。

作为又一示例,指令包括存储保护存储控制指令,其包括用以指定存储保护存储控制操作的操作码、以及用以定义地址的至少一个字段,地址指定一个或多个受保护存储控制的内容被存储到其中的存储器中的位置。

本文中还描述和要求与一个或多个方面相关的方法及系统。此外,本文中还描述且可要求与一个或多个方面相关的服务。

经由本文中所描述的技术实现附加特征和优点。其它实施例和方面在本文中经详细描述且被认为是所要求的方面的部分。

附图说明

在说明书的结尾的权利要求中,一个或多个方面作为示例被特别指出并且清楚地要求保护。通过以下结合附图的详细描述,一个或多个方面的前述内容、目的、特征及优点是显而易见的,在附图中:

图1a描绘了结合和使用本发明的一个或多个方面的计算环境的一个示例;

图1b描绘了根据本发明的方面的图1a的处理器的进一步细节;

图2a描绘了结合和使用本发明的一个或多个方面的计算环境的另一示例;

图2b描绘了图2a的存储器的进一步细节;

图3描绘了根据本发明的方面的受保护存储指定寄存器的一个示例;

图4描绘了根据本发明的方面的受保护存储特性、受保护存储原点和受保护存储区段大小之间的关系的一个示例;

图5描绘了根据本发明的方面的受保护存储区段掩码寄存器的一个示例;

图6a描绘了根据本发明的方面的受保护存储事件参数列表地址寄存器的一个示例;

图6b描绘了根据本发明的方面的受保护存储事件参数列表的一个示例;

图7描绘了根据本发明的方面的受保护存储控制块的一个示例;

图8描绘了根据本发明的方面的加载保护指令的一个实施例;

图9描绘了根据本发明的方面的加载逻辑和移位保护指令的一个示例;

图10描绘了根据本发明的方面的加载保护存储控制指令的一个示例;

图11描绘了根据本发明的方面的存储保护存储控制指令的一个示例;

图12描绘了根据本发明的方面的受保护存储事件的检测的一个示例;

图13a描绘了根据本发明的方面的机器检查扩展保存区域的格式的一个示例;

图13b描绘了根据本发明的方面的机器检查扩展保存区域指定寄存器的一个示例;

图13c描绘了根据本发明的方面的信号处理器参数寄存器的一个示例;以及

图14a至14b描绘了根据本发明的方面的与促进计算环境中的处理相关的方面的一个实施例。

具体实施方式

根据本发明的一个或多个方面,提供了促进在计算环境内执行某些任务(包括但不限于存储回收)的能力。该能力(被称作为受保护存储设施)设置表明受保护或防护的地址的范围(诸如要执行存储回收的地址的范围)的边界。当程序尝试访问由该边界限定的受保护区段中的地址时,发生受保护存储事件,从而防护边界内的地址。使用该设施促进计算环境内的处理并且改进效能。举例而言,使用该设施使得在计算环境中的一个或多个中央处理单元(cpu)上执行的应用能够继续执行同时在计算环境中的另一cpu上进行存储回收。应用可继续访问不受边界防护的地址。

作为示例,本发明的一个或多个方面提供以下中的一者或多者:使得应用能够设置并检查影响受保护存储设施的操作的控制;提供在检测到受保护存储事件时识别处理器属性的能力;加载以可变量移位并用于受保护存储检测的数据(例如,压缩指针);提供在事务性(transactional)执行期间受保护存储事件处理,包括处理由于受保护存储事件而中止的事务的中止及其影响。

参见图1a描述结合和使用本发明的一个或多个方面的计算环境的实施例。在一个示例中,计算环境基于由纽约州阿蒙克市的国际商业机器公司(internationalbusinessmachinescorporation)提供的z/架构(z/architecture)。z/架构的一个实施例在ibm公开案第sa22-7832-10号(2015年3月)“z/架构工作原理(z/architectureprinciplesofoperation)”中进行描述,其通过全文引用的方式并入本文。z/architecture是美国纽约州阿蒙克市国际商业机器公司的注册商标。

在另一示例中,计算环境基于由纽约州阿蒙克市国际商业机器公司提供的power架构。power架构的一个实施例在国际商业机器公司2015年4月9日的“powerisatm版本2.07b”中进行描述,其通过全文引用的方式并入本文。powerarchitecture是美国纽约州阿蒙克市国际商业机器公司的注册商标。

计算环境还可基于其它架构,包括但不限于英特尔x86架构。也存在其它示例。

如在图1a中所示,计算环境100包括例如计算机系统102,计算机系统102以通用计算设备的形式示出。计算机系统102可包括但不限于经由一个或多个总线和/或其它连接110彼此耦接的一个或多个处理器或处理单元104(例如,中央处理单元(cpu))、存储器106(作为示例,被称作为主存储或存储)、以及一个或多个输入/输出(i/o)接口108。

总线110表示任意多种类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或本地总线(使用各种总线架构中的任一者)。通过示例且非限制性地,此类架构包括工业标准架构(isa)、微通道架构(mca)、增强isa(eisa)、视频电子标准协会(vesa)本地总线、以及外围组件互连(pci)。

存储器106可包括例如高速缓存120,诸如共享高速缓存,该高速缓存可被耦接到处理器104的本地高速缓存122。此外,存储器106可包括一个或多个程序或应用130、操作系统132、以及一个或多个计算机可读程序指令134。计算机可读程序指令134可被配置为执行本发明的方面的实施例的功能。

计算机系统102还可经由例如i/o接口108与一个或多个外部设备140、一个或多个网络接口142、和/或一个或多个数据存储设备144进行通信。示例性外部设备包括用户终端、磁带驱动、指向设备、显示器等。网络接口142使得计算机系统102能够与一个或多个网络(诸如,局域网(lan)、广域网(wan)和/或公用网络(例如,因特网))进行通信,提供与其它计算设备或系统的通信。

数据存储设备144可存储一个或多个程序146、一个或多个计算机可读程序指令148和/或数据等。计算机可读程序指令可被配置为执行本发明的方面的实施例的功能。

计算机系统102可包括和/或耦接到可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,计算机系统102可包括和/或耦接到不可移动、非易失性磁性介质(通常称为“硬盘驱动”)、用于从可移动非易失性磁盘(例如,“软盘”)读取及写入至可移动非易失性磁盘的磁盘驱动器,和/或用于从可移动非易失性光盘(诸如,cd-rom、dvd-rom或其它光学介质)读取或写入至可移动非易失性光盘的光盘驱动。应理解,其它硬件和/或软件组件可与计算机系统102结合使用。示例包括但不限于:微代码、设备驱动、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动、以及数据档案存储系统等。

计算机系统102可与众多其它通用或专用计算系统环境或配置一起操作。可适合于供计算机系统102使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机(pc)系统、服务器计算机系统、瘦客户机、厚客户机、手持型或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、主计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。

参见图1b描述关于处理器104的一个示例的进一步细节。处理器104包括用于执行指令的多个功能组件。此类功能组件包括例如用于提取要执行的指令的指令提取组件150、用于对所提取的指令进行解码并获得被解码的指令的操作数的指令解码单元152、用于执行被解码的指令的指令执行组件154、用于访问存储器以便视需要而进行指令执行的存储器存取组件156、以及用于提供所执行的指令的结果的写回组件160。根据本发明的方面,此类组件中的一个或多个可用于执行下文进一步描述的受保护存储设施的一个或多个指令166。

在一个实施例中,处理器104还包括供由功能组件中的一个或多个使用的一个或多个寄存器170。

参见图2a描述了结合和使用一个或多个方面的计算环境的另一实施例。在该示例中,计算环境200包括例如本机中央处理单元(cpu)202、存储器204、以及经由例如一个或多个总线208和/或其它连接彼此耦接的一个或多个输入/输出设备和/或接口206。作为示例,计算环境200可包括由纽约州阿蒙克市国际商业机器公司提供的powerpc处理器或pseries服务器;和/或基于由国际商业机器公司、英特尔公司或其它公司提供的架构的其它机器。

本机中央处理单元202包括一个或多个本机寄存器210,诸如在环境内处理期间所使用的一个或多个通用寄存器和/或一个或多个专用寄存器。此类寄存器包括表示任何特定时间点的环境的状态的信息。

此外,本机中央处理单元202执行存储在存储器204中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器204中的仿真器代码212。该代码使得在一个架构中配置的计算环境能够仿真另一架构。举例而言,仿真器器码212允许基于除z/架构之外的架构的机器(诸如,powerpc处理器、pseries服务器、或其它服务器或处理器)仿真z/架构并执行基于z/结构研发的软件和指令。

参见图2b描述与仿真器代码212有关的进一步细节。存储在存储器204中的访客指令250包括被研发为在除本机cpu202的架构外的架构中执行的软件指令(例如,与机器指令相关)。例如,访客指令250可能已被设计为在z/结构处理器上执行,但是替代地,在本机cpu202(其可以是例如英特尔处理器)上进行仿真。在一个示例中,仿真器代码212包括指令提取例程252以从存储器204获得一个或多个访客指令250,并且可选地为所获得的指令提供本地缓冲。仿真器代码212还包括指令转译例程254以确定已获得的访客指令的类型并将访客指令转译成一个或多个对应的本机指令256。该转译包括例如识别要由访客指令执行的功能并选择本机指令执行该功能。

此外,仿真器代码212包括仿真控制例程260以使本机指令被执行。仿真控制例程260可使本机cpu202执行仿真一个或多个先前获得的访客指令的本机指令的例程,并且在该执行结束时,将控制返回到指令提取例程以仿真下一访客指令或访客指令组的获取。本机指令256的执行可包括将数据从存储器204加载到寄存器中,将数据从寄存器存储回存储器,或者执行如由转译例程确定的某些类型的算术或逻辑运算。

例如,每个例程以软件实现,该软件存储在存储器中并由本机中央处理单元202执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或它们的一些组合来实现。仿真处理器的寄存器可使用本机cpu的寄存器210或通过使用存储器204中的位置来仿真。在实施例中,访客指令250、本机指令256和仿真器代码212可存在于同一存储器中或者可分配在不同的存储器设备中。

如本文中所使用的,固件包括例如处理器的微代码或毫代码(millicode)。例如,固件包括用于实现较高级机器代码的硬件级指令和/或数据结构。在一个实施例中,固件包括例如专有代码,该专有代码通常被传送作为包括针对基础硬件的受信任软件或微代码并且控制操作系统对系统硬件的访问的微代码。

所获得、转译以及执行的访客指令250例如是本文中描述的受保护存储设施的指令。具有一种架构(例如,z/架构)的指令从存储器中被提取、转译并表示为具有另一架构(例如,powerpc、pseries、英特尔等)的一系列本机指令256。此类本机指令然后被执行。

下文描述与受保护存储设施(包括与其相关联的指令)的一个实施例相关的细节。受保护存储设施提供机制,程序可通过该机制指定包括多个受保护存储区段(例如,0至64)的逻辑存储区域,并且可例如由实施存储回收技术的各种编程语言使用。例如,设施包括多个指令,诸如,例如加载保护(loadguarded,lgg)指令、加载逻辑和移位保护(loadlogicalandshiftguarded,llgfsg)指令、加载保护存储控制(loadguardedstoragecontrols,lgsc)指令、以及存储保护存储控制(storeguardedstoragecontrols,stgsc)指令,此类指令中的每一者在下文进一步描述。

在加载保护或加载逻辑和移位保护指令的选定操作数(诸如,第二操作数)没有指定受保护存储区域的受保护区段时,指令执行其定义的加载操作。然而,在指令的第二操作数指定受保护存储区域的受保护区段时,控制分支到具有对事件的原因的指示的受保护存储事件处理程序(handler)。当加载保护以及加载逻辑和移位保护指令能够生成受保护存储事件时,访问受保护存储的范围的其它指令不受设施影响且不生成该事件。在对由设施使用的各种寄存器的描述之后,下文进一步描述与受保护存储设施的指令相关的细节。

在一个实施例中,受保护存储设施由控制寄存器(例如,控制寄存器2)中的位(比特)以及由以下三种寄存器控制:受保护存储指定寄存器(gsd)、受保护存储区段掩码(gssm)寄存器、以及受保护存储事件参数列表地址(gsepla)寄存器。这三个寄存器的内容可分别由加载保护存储控制和存储保护存储控制指令加载及检查。下文描述此类寄存器中的每一者以及控制寄存器2的进一步细节。在描述中,描述针对特定位或字节的特定值。此类值和/或特定位和/或字节仅为示例。可使用其它值、位和/或字节。

在一个示例中,在受保护存储设施被安装时,控制寄存器2中的所选择的位(例如,位59)是受保护存储启用(gse)控制。在位59是0时,尝试执行加载保护存储控制(lgsc)和存储保护存储控制(stgsc)指令导致识别异常条件(例如,特别操作异常)。然而,在受保护存储启用控制为1时,受保护存储设施被认为是被启用的,并且允许对lgsc和stgsc指令的尝试执行,受制于下文所描述的其它限制。

在一个实施例中,加载保护与加载逻辑和移位保护指令的执行不受制于受保护存储启用控制。然而,在一个示例中,可仅当受保护存储启用控制为1时识别受保护存储事件。即,在一个示例中,当所选择的设施指示(例如,设施指示133)是例如1(指示受保护存储设施被安装在配置中)时,程序可使用加载保护以及加载逻辑和移位保护指令,而不管受保护存储启用控制如何。然而,在没有第一加载保护存储控制的情况下,受保护存储事件不被识别。因此,控制程序(例如,操作系统)将受保护存储启用控制设定为1,以便成功地执行加载保护存储控制指令,该加载保护存储控制指令加载保护存储控制。程序将检查受保护存储设施启用的操作系统提供的指示(gse)(而不是设施位133),以确定设施的全能力是否可用。

如上文所指示,除了受保护存储设施启用控制(例如,控制寄存器2的位59)外,受保护存储设施使用多个寄存器,包括受保护存储指定(gsd)寄存器,其是定义受保护存储区域的属性的64位寄存器。

参见图3描述受保护存储指定寄存器(gsd)的一个实施例。在一个示例中,受保护存储指定寄存器300包括以下字段:

·受保护存储原点(gso)302:该字段指定可使受保护存储保护被应用的存储的块的地址。受保护存储区域的位置由gsd寄存器的最左位指定。在一个实施例中,最左位的数量由寄存器的位58至63中的受保护存储特性(gsc)的值确定。受保护存储指定寄存器的位位置(bitposition)0至(63-gsc)(采用二进制0在右侧填补在位位置(64-gsc)至63中)形成受保护存储区域的最左字节的64位逻辑地址。其它实施例可使用不同的指定受保护存储区域的原点的机制。

在一个实施例中,当gsc大于25时,位位置(64-gsc)至38被保留并且包含0;此外,受保护存储事件检测的结果不可预测。在一个实施例中,gsd寄存器的位位置39至52和56至57被保留并且包含0;此外,程序可能未来不能兼容地操作。其它实施例可能允许不同范围的gsc值,伴有gso的大小的对应改变。

·受保护加载移位(gls)304:在一个实施例中,受保护存储指定寄存器的位53-55包含3位无符号二进制整数,其用于形成加载逻辑和移位保护指令的中间结果。在一个实施例中,有效gls值是0至4,值5至7被保留并且可能产生不可预期的移位量。

其它实施例可提供更广泛范围的gls值,其允许对象在各种边界(诸如半字、字、双字、四字等)上对准(align)。

·受保护存储特性(gsc)306:在一个实施例中,受保护存储指定寄存器的位位置58至63包含6位无符号二进制整数,其被视为2的幂。有效gsc值为例如25至56;值0至24和57至63被保留并且可产生不可预测的受保护存储事件检测。在一个示例中,gsc指示以下:

·受保护存储原点的对准。gsc值25指示32兆字节对准,值26指示64兆字节对准,等等。

·受保护存储区段大小。gsc值25指示512千字节区段,值26指示1兆字节区段,等等。其它实施例可允许不同的指定gsc的机制,伴有对受保护存储原点和受保护存储区段大小的指定的对应改变。

图4中示出受保护存储特性、受保护存储原点和受保护存储区段大小之间的关系。在图4中,g是千兆字节(230),gsc是受保护存储特性,gsd是受保护存储指定,gso是受保护存储原点,m是兆字节(220),p是拍字节(250),以及t是兆兆字节(240)。

除了受保护存储指定寄存器外,受保护存储设施包括受保护存储区段掩码寄存器,参见图5描述受保护存储区段掩码寄存器的一个实施例。在一个示例中,受保护存储区段掩码(gssm)寄存器500是64位寄存器,并且每位502对应于受保护存储区域内的64个受保护存储区段中的一者。例如,寄存器的位0对应于最左区段,并且位63对应于最右区段。每一位(被称作区段保护位)通过加载保护(lgg)与加载逻辑和移位保护(llgfsg)指令控制对受保护存储区域的相应区段的访问,如下文描述。

在gssm寄存器的所有64位为0时,不识别受保护存储事件。在其它实施例中,gssm寄存器500可具有与不同数量的保护区段对应的不同数量的位,和/或一位可用于表示多于一个保护区段。多种变化是可能的。

受保护存储设施的第三寄存器是受保护存储事件参数列表地址(gsepla)寄存器,其示例在图6a中进行描述。如所示出的,受保护存储事件参数列表地址寄存器600包括例如64位地址602,其用于在识别到受保护存储事件时定位受保护存储事件参数列表(gsepl)。在一个实施例中,当cpu不处于存取寄存器模式时,gsepla是逻辑地址;当cpu处于存取寄存器模式时,gsepla是主要虚拟地址。

当识别到受保护存储事件时,使用64位gsepla来访问gsepl,而不管cpu的当前寻址模式。使用当前转译模式访问gsepl,此外在cpu处于存取寄存器模式时使用主要地址空间访问gsepl。

在一个示例中,在识别到受保护存储事件时,将各种信息放置到gsepl中,并且将控制传递到gse处理程序。使用gsepl,处理程序例程可影响对象的重新定位,因此调整其指针。

参见图6b描述了受保护存储事件参数列表的一个示例。在检测到受保护存储事件时,将受保护存储事件参数列表的字段(除受保护存储事件处理程序地址外)存储到受保护存储事件参数列表中。

参见图6b,在一个示例中,受保护存储事件参数列表610的内容包括:

保留:gsepl的字节0和4至7被保留,并且在一个示例中在识别到受保护存储事件时被设定为0。

受保护存储事件寻址模式(gseam)612:在识别到受保护存储事件时,gsepl的字节1包含cpu的寻址模式的指示,如下:

保留:gseam的位0至5被保留并且被存储为0。

扩展寻址模式(e)614:gseam的位6包含扩展寻址模式位,例如,程序状态字的位31。程序状态字是执行状态寄存器和程序计数器的功能的控制寄存器。程序状态字包含用于适当程序执行的信息,包括但不限于条件代码、指令地址和其它信息,如本文所描述。

基本寻址模式(b)616:gseam的位7包含基本寻址模式位,例如,程序状态字的位32。

位6和7在识别到受保护存储事件时被设定为例如psw的位31和32(即,在一个实施例中,在位31和32由事务中止psw替换之前,下文所描述)。

受保护存储事件原因指示(gseci)620:gsepl的字节2包含受保护存储事件原因指示。在一个示例中,gseci进行如下编码:

事务性执行模式指示(tx)622:在gseci的位0是0时,当识别到受保护存储事件时cpu不处于事务性执行模式。在gseci的位0是1时,当识别到受保护存储事件时cpu处于事务性执行模式。

cpu可处于非事务性执行模式或事务性执行模式,并且若处于事务性执行模式,则cpu可处于受约束事务性执行模式或处于非受约束事务性执行模式。cpu根据事务开始指令进入事务性执行模式并且根据事务结束指令或指令的中止而离开事务性执行模式。事务开始指令可以是非受约束事务性执行模式的事务开始(tbegin)指令或受约束事务性执行模式的事务开始约束(tbeginc)指令。在事务开始指令是受约束事务性执行模式时,cpu进入受约束事务性执行模式,其受制于多种限制(例如,可用通用指令的子集、可执行有限数量的指令、可访问有限数量的存储操作数位置、和/或事务被限制到单嵌套级(nestinglevel))。在非受约束事务性执行模式(简称为事务性执行模式)中,不应用对受约束事务性执行模式的限制。

在一个实施例中,在tbegin指令的执行期间,当嵌套深度初始为0(事务可被嵌入)时,事务中止程序状态字(psw)被设定为当前程序状态字(psw)的内容,并且事务中止psw的指令地址指定下一顺序指令(即,在最外部tbegin后的指令)。在teginc指令的执行期间,在嵌套深度初始为0时,事务中止psw被设定为当前psw的内容,除事务中止psw的指令地址指定tbeginc指令(而不是在tbeginc之后的下一顺序指令)外。

当事务中止时,各种状态信息可保存在事务诊断块(tdb)中。

受约束事务性执行模式指示(cx)624:在gseci的位1是0时,cpu在识别到受保护存储事件时不处于受约束事务性执行模式。在gseci的位1是1时,cpu在识别到受保护存储事件时处于受约束事务性执行模式。gseci的位1在位0为1时有意义。

保留:gseci的位2至6被保留,并且在一个示例中在识别到受保护存储事件时被设定为0。

指令原因(in)626:gseci的位7指示引发受保护存储事件的指令。在位7是0时,事件归因于加载保护指令的执行。在位7是1时,事件归因于加载逻辑和移位保护指令的执行。其它原因可类似地通过使用一个以上的位指示。

受保护存储事件存取信息(gseai)630:作为示例,gsepl的字节3包含描述以下cpu属性的信息:

保留:gseai的位0被保留,并且在一个示例中在识别到受保护存储事件时被设定为0。

dat模式(t)632:gseai的位1指示当前动态地址转译(dat)模式(即,t位是psw位5的复本)。

地址空间指示(as)634:gseai的位2至3指示当前地址空间控制(即,as字段是psw的位16至17的复本)。as字段在dat被启用时(即,当t位是1时)有意义;此外,as字段是不可预测的。

存取寄存器数目(ar)636:在cpu处于存取寄存器模式时,gseai的位4至7指示由引发事件的lgg或llgfsg指令所使用的存取寄存器数量(即,ar字段是lgg或llgfsg指令的b2字段的复本)。在cpu不处于存取寄存器模式时,ar字段是不可预测的。

受保护存储事件处理程序地址(gseha)640:gsepl的字节8至15包含受保护存储事件处理程序地址。gseha字段的内容被视为受制于程序状态字(psw)中的当前寻址模式的分支地址。在识别到受保护存储事件时,gseha字段形成用于完成加载保护或加载逻辑和移位保护指令的执行的分支地址。

psw中的指令地址由gesha的内容替换。

受保护存储事件处理程序地址在执行加载保护存储控制指令期间由程序指定。

受保护存储事件被认为是程序事件记录(per)成功分支事件。如果per在例如psw中被启用,并且per分支地址控制在例如控制寄存器9中为1,则gseha是与例如控制寄存器10及11比较的值。

受保护存储事件指令地址(gseia)650:gsepl的字节16至23包含受保护存储事件指令地址。在识别到受保护存储事件时,将引发该事件的指令的地址存储到gseia字段中。作为示例,放置在gseia中的地址是加载保护或加载逻辑和移位保护指令的地址,或者其目标是加载保护或加载逻辑和移位保护指令的执行类型指令的地址。

gseia字段的存储在检测到事件时受制于当前寻址模式。在24位寻址模式中,gseia的位0至39被设定成0。在31位寻址模式中,gseia的位0至32被设定成0。

受保护存储事件操作数地址(gseoa)660:gsepl的字节24至31包含受保护存储事件操作数地址。在识别受保护存储事件时,将引发该事件的加载保护或加载逻辑和移位保护指令的第二操作数地址存储到gseoa字段中。

gseoa字段的存储受制于在检测到事件时的当前寻址模式。在24位寻址模式中,gseoa的位0至39被设定为0。在31位寻址模式中,gseoa的位0至32被设定为0。

如果事务性执行由于受保护存储事件的识别而被中止,gseoa字段包含在事务性执行期间形成的操作数地址。即使操作数地址是使用在事务性执行期间改变的一个或多个通用寄存器而形成的,并且不管寄存器在事务性执行中止时是否被复原,上述情形仍为真。

受保护存储事件中间结果(gseir)670:gsepl的字节32至39包含受保护存储事件中间结果。当识别到受保护存储事件时,将由加载保护或加载逻辑和移位保护指令形成的中间结果存储到gseir字段中。

如果事务性执行由于受保护存储事件的识别被中止,则gseir字段包含在cpu已离开事务性执行模式之后(例如,在事务中止之后)由第二操作数位置形成的中间结果。

受保护存储事件转回地址(gsera)680:gsepl的字节40至47包含受保护存储事件转回地址。

当识别到受保护存储事件同时cpu处于事务性执行模式时,将事务中止psw的指令地址放置到gsera中。在约束事务性执行模式中,指令地址(即,gsera)指定tbeginc指令。在非约束事务性执行模式中,指令地址(即,gsera)指定在tbeginc指令之后的指令。

当识别到受保护存储事件同时cpu不处于事务性执行模式时,gsera的内容与gseia相同。

在加载保护或加载逻辑和移位保护指令的执行期间,如果识别到受保护存储事件则访问gsepl。在识别受保护存储事件时,可对gsepl的任何字段进行多次访问。

在受保护存储事件处理期间对gsepl的访问被视为副作用访问。存储类型访问异常针对包括gseha字段和被保留字段的gsepl的任何字节而识别。如果识别到除寻址外的访问异常同时访问gsepl时,副作用访问指示(在例如真实位置168至175处的转译异常标识的位54)被设定为1,并且引发受保护存储事件的加载保护或加载逻辑和移位保护指令无效。

在dat开启时,使用当前地址空间控制(asc)模式访问gsepl,除在cpu处于存取寄存器模式时外;在cpu处于存取寄存器模式中时,在主要地址空间中访问gsepl。

三个受保护存储寄存器可分别通过加载保护存储控制指令和存储保护存储控制指令来设定和检查。此类指令中的每一者的存储操作数是例如32字节受保护存储控制块(gscb),并且受保护存储寄存器的内容占据块的最后三个八字节字段,如图7所示。

如所描绘,在一个示例中,受保护存储控制块(gscb)700包括受保护存储指定寄存器的内容702、受保护存储区段掩码寄存器的内容704,以及gse参数列表地址寄存器的内容706。

当gscb在双字边界上对准时,cpu对三个定义字段中的每一者的访问是块并行的。

针对加载保护存储控制指令,在一个示例中,gscb的所保留的位位置包含0;此外,程序可能在未来不能兼容地操作。

针对存储保护存储控制指令,被加载有非0值的所保留的位位置可以或可以不被存储为0,并且gsd寄存器的gls和gsc字段的被保留的值可以或可以不被校正为模型依赖值。

在替代实施例中,gsepl中所描述的值中的一个或多个可被替代为保持在附加寄存器中,包括在gscb中,以及通过加载保护存储控制与存储保护存储控制指令而加载和存储。还存在其它示例。

在一个实施例中,期望的使用是程序不在受保护存储控制的建立与受保护存储事件的识别之间切换asc模式。如果程序切换asc模式,则在一个示例中,gsepl将被映射到建立该asc的空间与识别受保护存储事件的空间两者的共同地址。如果在存取寄存器模式中识别到受保护存储事件,受保护存储事件处理程序程序可能需要检查gseai字段以确定用以访问受保护存储操作数的适当的alet(访问列表项目令牌)。

此外,当非受约束事务由于受保护存储事件而被中止时,来自事务中止psw的寻址模式变得有效。在受保护存储事件时有效的寻址模式可通过检查gse参数列表中的gseam字段来确定。

在一个实施例中,寻址模式不由受约束事务改变;因此,在一个实施例中,如果受约束事务由于受保护存储事件中止,则寻址模式必须与在执行tbeginc指令时相同。

下文描述了受保护存储设施的指令中的每一者的其它细节,包括例如,加载保护、加载逻辑和移位保护、加载保护存储控制以及存储保护存储控制。每一指令可以是硬件/软件接口处的单架构机器指令。此外,每一指令可包括多个字段。在一个实施例中,指令的字段是分开的并且彼此独立。然而,在另一实施例中,可组合多于一个字段。此外,与指令的字段相关联的下标数表示字段应用所在的操作数。例如,具有下标1的任何字段与第一操作数相关联,具有下标2的任何字段与第二操作数相关联,等等。

参见图8描述加载保护(lgg)指令的一个示例。加载保护指令800包括例如用于指定加载保护操作的操作码(opcode)字段802a、802b;寄存器字段(r1)804;索引字段(x2)806;基本字段(b2)808;以及位移字段,位移字段包括第一位移(dl2)字段810a和第二位移(dh2)字段810b。第二位移字段和第一位移字段的内容经连接以提供位移,在一个示例中该位移被视为20位带符号二进制整数。

在x2806和b2808字段指定除寄存器0外的通用寄存器时,将相应的寄存器的内容填加到位移,以将地址提供在包括第二操作数的存储中。第二操作数是例如存储中的双字。在一个示例中,如果第二操作数地址不是双字边界,则识别到规格异常并抑制操作。

在加载保护指令的操作中,形成64位中间结果,如下:

例如,在24位寻址模式中,中间结果由40个二进制0与第二操作数的位40至63的串连形成。在31位寻址模式中,中间结果由33个二进制0与第二操作数的位33至63的串连形成。在64位寻址模式中,中间结果由全部第二操作数形成。

在启用受保护存储设施时,例如,中间结果用于受保护存储事件检测。如果识别到受保护存储事件,则不修改通用寄存器r1,并且完成指令,如下文进一步所描述。

当不启用受保护存储设施或者设施被启用但未识别到受保护存储事件时,将64位中间结果放置在通用寄存器r1中,并且指令完成。

在识别到受保护存储事件时,访问受保护存储事件参数列表(gsepl)。存储类型访问应用于整个gsepl。条件代码保持不改变。

如上文所指示,除加载保护指令外,根据本发明的一方面,受保护存储设施包括加载逻辑和移位保护指令。加载逻辑和移位保护指令是单指令(例如,单架构硬件指令),其加载来自存储的指令,使数据移位移位量以获得移位值,使用移位值获得中间结果,以及使用中间结果执行受保护存储检测。

在一个特定示例中,数据是32位值,其向左移位受保护存储指定寄存器中指定的多个位位置以形成例如中间64位值。针对寻址模式调整64位值;即,在24位寻址模式中,位0至39被设定为0;在31位寻址模式中,位0至32被设定为0;以及在64位寻址模式中,值不改变。比较中间值的所选择的位与受保护存储原点(在gsd寄存器中),并且使用中间值的其它所选择的位来索引受保护存储区段掩码(gssm)寄存器中的位。如果该比较相等且被索引的gssm位为1,则检测到受保护存储事件。此外,指令将中间值简单地加载到寄存器中。

参见图9描述加载逻辑和移位保护(llgfsg)指令的一个示例。加载逻辑和移位保护指令900包括例如用于指定加载逻辑和移位保护操作的操作码字段902a、902b;寄存器字段(r1)904;索引字段(x2)906;基本字段(b2)908;以及位移字段,位移字段包括第一位移(dl2)字段910a和第二位移(dh2)字段910b。第二位移字段和第一位移字段的内容连接以提供位移,在一个示例中该位移被视为20位带符号二进制整数。

在x2906和b2908字段指定除寄存器0外的通用寄存器时,将相应的寄存器的内容填加到位移以将地址提供在包括第二操作数的存储中。第二操作数例如是存储中的字。在一个示例中,如果第二操作数地址不在字边界上,则识别到规格异常并抑制操作。

在加载逻辑和移位保护指令的操作中,形成64位中间结果,如下:

在受保护存储设施被启用(例如,通过控制寄存器2的位59)时,使用受保护加载移位值(gls,在受保护存储指定寄存器的位53至55中)形成中间结果。在受保护存储设施未被启用时,gls值被假定为0。

例如,在24位寻址模式中,中间结果由40个二进制0、第二操作数的位(8+gls)至31和gls二进制0(即,等于0的gls的数目)的串连形成。在31位寻址模式中,中间结果由33个二进制0、第二操作数的位(1+gls)至31和gls二进制0的串连形成。在64位寻址模式中,中间结果由(32-gls)二进制0、整个32位第二操作数和gls二进制0的串连形成。

在启用受保护存储设施时,例如,中间结果用于受保护存储事件检测。如果识别到受保护存储事件,则不修改通用寄存器r1,并且完成指令,如下文进一步所描述。

当不启用受保护存储设施或者设施被启用但未识别到受保护存储事件时,将64位中间结果放置在通用寄存器r1中,并且指令完成。

在识别到受保护存储事件时,访问受保护存储事件参数列表(gsepl)。存储类型访问应用于整个gsepl。条件代码保持不改变。

在执行加载保护指令或加载逻辑和移位保护指令的情况下,可能存在以下程序异常:访问(提取、第二操作数;在识别到受保护存储事件时,提取和存储,gsepl字段);操作(受保护存储设施未被安装),和规格。

执行加载保护指令与加载逻辑和移位保护指令中的每一者的优先级如下:

1.-7.具有与通常情况的程序中断条件的优先级相同的优先级的异常。

8.对存储中的第二操作数的访问异常。

9.在未识别到受保护存储事件的情况下完成。

10.针对受保护存储事件参数列表的副作用访问异常。

11.在识别到受保护存储事件的情况下完成。

加载逻辑和移位保护指令可用于加载有时被称作为压缩指针的指针,其中指针地址的一些数量的最右位在存储中不存在并被假定为0。例如,各种语言(诸如java)可将关于其应用的数据对象分配在整个存储边界上(即,在2的幂数的边界上)。例如,可将对象分配在字(4字节)、双字(8字节)或四字(16字节)边界上。在将对象分配在该边界上时,对象的地址的一些数量的最右位为0。为了编程效率,使用32位指针来表示此类对象的指针可以是有利的,但这将可寻址能力的范围限制到4千兆字节(或者,在z/架构的情况下,其使用31位地址,可寻址能力的范围限制到2千兆字节),甚至在以64位寻址模式执行时。

由于已知该对象的一些数量的最右位(在整个边界上对准)为0,因此可通过将指针向右移位多个期望的0位,从指针的存储器内表示中省略这些位。这允许将对应数量的最左位加到存储中的指针,因此允许指针寻址比使用非移位版本可能更大的存储量。例如,如果已知指针指示双字,则通过使指针向右移位三位,可寻址能力的范围可在左侧扩展3位,因此允许32位指针寻址存储器的高达32千兆字节(如与使用非移位指针可寻址的4千兆字节相反)。此外,在指针被加载以便由cpu的存储器子系统使用时,其向左移位3位以形成35位指针。

假定编程模型使用相同格式的压缩指针(即,压缩指针均向右移位相同数量个位),执行加载和移位操作的指令不需要具有指定移位量的操作数。而是,这可以是不频繁加载的相对静态值(例如,在调度任务时)。在一个实施例中,压缩指针被移位的位的数量在受保护存储指定(gsd)寄存器的受保护加载移位(gls)字段中被指定。在另一实施例中,移位量可在指令的操作数中被指定。其它变化也是可能的。

在受保护存储设施被安装在配置中时,可执行加载保护(lgg)指令以及加载逻辑和移位保护(llgfsg)指令,而不管受保护存储启用控制的内容(例如,控制寄存器2的位59)。然而,受保护存储事件可被识别为在(a)gse控制为1,以及(b)受保护存储选择掩码为非0时执行lgg或llgfsg的结果。在gse控制不为1的情况下,受保护存储选择掩码将不被加载。

在受保护存储选择掩码(gssm)的全部64位均是0时受保护存储事件不被识别。程序可通过(a)不加载保护存储控制(在此情况下gssm将包含其0的重置状态)或(b)将0加载到gssm中来确保受保护存储事件不被识别。

参见图10描述加载保护存储控制(lgsc)指令的一个示例。加载保护存储控制指令将控制受保护存储事件的操作的参数提供至cpu,并且将描述在受保护存储事件时的cpu的状态的信息提供至程序。

参见图10,加载保护存储控制指令1000包括用于指定加载保护存储控制操作的操作码字段1002a、1002b;寄存器字段(r1)1004;索引字段(x2)1006;基本字段(b2)1008;以及位移字段,位移字段包括第一位移(dl2)字段1010a和第二位移(dh2)字段1010b。第二位移字段和第一位移字段的内容连接以提供位移,在一个示例中该位移被视为20位带符号二进制整数。

在x21006及b21008字段指定除寄存器0外的通用寄存器时,将相应的寄存器的内容加到位移,以将地址提供在包括第二操作数的存储中。

在操作中,将在第二操作数地址处的受保护存储控制块(gscb)的内容加载到三个受保护存储寄存器中。图7中示出受保护存储控制块(gscb)的格式。指令的r1字段被保留且应包含0;此外,程序可能未来不能兼容地操作。

针对gscb的全部32字节识别访问异常。

如果所加载的gsd寄存器的gls或gsc字段包含无效值,或者如果寄存器的所保留的位位置不包含0,则结果是不可预测的。如果第二操作数在所保留的位位置中包含(a)无效gls或gsc值,或(b)非0值,则cpu是否采用正确值替换无效值或非0值是模型依赖的。此外,该正确值随后是否被存储保护存储控制指令存储是不可预测的。

在受保护存储启用控制(例如,控制寄存器2的位59)为0时,识别到特别操作异常并且抑制操作。

条件代码保持不改变,并且可存在以下程序异常:访问(提取,第二操作数)、操作(如果未安装受保护存储设施)、特别操作、和事务约束。

如果gsd寄存器的gsc字段包含无效值,则不发生受保护存储事件或者可能检测到错误的受保护存储事件。

如果gsd寄存器的gls字段包含无效值,则由加载逻辑和移位保护指令所使用的中间结果可由被移位不可预测数量的位的第二操作数的不可预测范围的位形成。

参见图11描述存储保护存储控制指令的一个示例。存储保护存储控制指令1100包括例如用于指定存储保护存储控制操作的操作码字段1102a、1102b;寄存器字段(r1)1104;索引字段(x2)1106;基本字段(b2)1108;以及位移字段,位移字段包括第一位移(dl2)字段1110a和第二位移(dh2)字段1110b。第二位移字段和第一位移字段的内容连接以提供位移,在一个示例中该位移被视为20位带符号二进制整数。

在x21106及b21108字段指定除寄存器0外的通用寄存器时,将相应的寄存器的内容填加到位移以将地址提供在包括第二操作数的存储中。

在操作中,将三个受保护存储寄存器的内容存储在第二操作数位置。第二操作数具有受保护存储控制块(gscb)的格式,如图7所示。在一个实施例中,将0存储在gscb的前八个字节中。

访问异常针对gscb的全部32字节被识别。

指令的r1字段被保留并且应包含0;此外,程序可能在未来不能兼容地操作。

如果受保护存储启用控制(例如,控制寄存器2的位59)为0,则识别到特别操作异常并且抑制指令。

条件代码保持不改变,并且可存在以下程序异常:访问(存储,第二操作数)、操作(如果未安装受保护存储设施)、特别操作、和事务约束。

针对指令中的每一者,尽管描述各种字段和寄存器,但本发明的一个或多个方面可使用其它、附加或更少字段或寄存器,或其它大小的字段和寄存器等。多种变化是可能的。例如,可使用隐式寄存器替代指令的显式指定的寄存器或字段。此外,其它变化也是可能的。

可将上文所描述的指令和/或寄存器中的一个或多个用于受保护存储事件检测,该受保护存储事件检测用于检测受保护存储事件。如图12所示,在一个实施例中,受保护存储事件检测1200使用例如由加载保护(lgg)指令或加载逻辑和移位保护(llgfsg)指令的中间结果1202形成的两个值,包括例如受保护存储操作数比较数(gsoc)1204和受保护存储掩码索引(gsmx)1206。

受保护存储操作数比较数(gsoc)1204由加载保护指令或加载逻辑和移位保护指令的中间结果形成。例如,gsoc包括中间结果的位位置0至(63-gsc),包含(其中gsc为受保护存储指定寄存器的例如位位置58至63中的受保护存储特性)。

gsoc与gsd寄存器1214的对应的位位置中的受保护存储原点1212(gso)进行比较1210,gsd寄存器1214还包括受保护存储特性1216。在gsoc不等于gso时,不识别受保护存储事件,并且通过将中间结果放置到通用寄存器r1中来完成加载保护或加载逻辑和移位保护指令的执行。

在gsoc等于gso1220时,在gsoc的右侧的中间结果的六个位形成无符号二进制整数,其被称作受保护存储掩码索引(gsmx)。检查1222与gsmx对应的受保护存储区段掩码(gssm)寄存器1226的区段保护位(g)1224。如果区段保护位为0,则受保护存储事件不被识别,并且通过将中间结果放置到通用寄存器r1中来完成加载保护或加载逻辑和移位保护指令的执行。然而,如果区段保护位为1,则识别1228受保护存储事件。

作为示例,在(a)受保护存储设施未被启用(通过例如控制寄存器2的位59)或者(b)受保护存储区段掩码(gssm)寄存器的所有位位置包含0时,不执行受保护存储事件检测。

在一个实施例中,受保护存储控制可经由机器检查被采集或经由信号处理器(sigp)在地址操作处存储附加状态。例如,当在cpu上发生机器检查时,将cpu的架构寄存器上下文记录在存储中。架构寄存器上下文中的大部分(包括程序状态字(psw)、通用寄存器、存取寄存器、控制寄存器、浮点寄存器、浮点控制寄存器、时钟比较器、cpu定时器、tod(当日时间)可编程寄存器、中断事件地址寄存器和前缀寄存器)被存储到真实存储的更下两个块中指定的存储位置中(即,到前缀区域中)。此外,架构被扩展以包括与前缀区域不连续以保存附加信息的机器检查扩展保存区域(mcesa),包括根据本发明的一方面的受保护存储寄存器。

如图13a中所示,在一个示例中,机器检查扩展保存区域1300包括指示所保存的信息的内容1304。在一个示例中,在1302处示出内容的位移,并且所存储的扩展保存区域的量基于1306处所示的长度特性(lc)。

在一个示例中,内容1304包括受保护存储寄存器的内容,包括受保护存储指定寄存器的内容1306、受保护存储区段掩码寄存器的内容1308以及受保护存储事件参数列表寄存器的内容1310。在一个示例中,受保护存储寄存器以与受保护存储控制块的格式相同的格式存储。

机器检查扩展保存区域的位置1024至1055的内容的有效性由例如受保护存储寄存器有效性位(例如,存储在例如真实位置232至239处的机器检查中断码(mcic)的位36)指示。当该位为1时,指示这些位置的内容反映在中断处受保护存储寄存器的正确状态。

机器检查扩展保存区域由机器检查扩展保存区域指定(mcesad)来指定,其示例在图13b中进行描绘。机器检查扩展保存区域指定1350包括例如用于指示机器检查扩展保存区域的原点的机器检查扩展保存区域原点(mcesao)1352,以及表示mcesa的大小和对准的长度特性(lc)1354。

在一个示例中,长度特性为2的幂数,且长度特性的效应包括例如:

·当未安装受保护存储设施时,或当安装设施但lc字段为0时,假定机器检查扩展保存区域的大小为1024个字节。这确保受保护存储设施的不知道的较旧软件的兼容操作。

·当安装受保护存储设施且lc字段为例如从1至9的任何值时,将其假定为错误,且整个mcesao被视为如同其包含0(即,不存储任何mcesa)。

·当安装受保护存储设施且lc字段包含大于或等于例如10的值时,mcesa的大小和对准是2lc个字节。在此情况下,mcesad的位0至63-lc形成机器检查扩展保存区域原点(mcesao)。mcesao与附加在右侧的lc位的0形成机器检查扩展保存区域的64位地址。

类似于机器检查扩展保存区域,当安装受保护存储设施时,用于采集cpu的选定寄存器的内容的例如信号处理器(sigp)指令的参数寄存器被扩展以包括附加状态信息。如图13c所示,用于以地址顺序的存储附加状态的sigp参数寄存器1380包括用于指示附加区域的原点的附加状态区域原点1382,表示附加状态区域的大小和对准的长度特性(lc)1384。

在一个示例中,当安装受保护存储设施时,如果指定被保留的lc值,或者如果参数寄存器中的任何被保留的位位置为非0,则sigp顺序不被经寻址的cpu接受,在由sigp指令的r1字段指定的状态寄存器中指示无效参数位(例如,位55),并且指令由设定条件代码1完成。

下文描述关于与受保护存储事件相关联的处理的进一步细节。一些处理取决于处理器的执行模式。例如,处理器可处于非事务性执行模式或事务性执行模式。此外,若处于事务性模式,其可处于非受约束事务性模式或受约束事务性模式,且处理可取决于处于非受约束事务性模式或受约束事务性模式。参见z/架构对某些细节进行描述;然而,一个或多个方面也适用于其它架构。z/架构仅为一个示例。

当识别到受保护存储事件同时cpu处于事务性执行模式时,发生以下:

1.采用例如中止码19中止事务。若事务诊断块(tdb)地址无效,或者若tdb地址有效且可访问,作为示例,在事务中止psw中设定条件代码2。若tdb地址有效,但tdb不可访问,则作为示例,在事务中止psw中设定条件代码1。

2.取决于模型,可重新取得加载保护指令或加载逻辑和移位指令的第二操作数,以确定受保护存储事件状态是否仍存在。

·重新取得第二操作数且受保护存储事件状态不再存在时,正常事务中止处理由加载事务中止psw结束。在此状况下不发生受保护存储事件处理。

·在第二操作数未被重新取得时,或在重新提取第二操作数且受保护存储事件状态持续时,发生受保护存储事件处理,如本文中所描述(替代加载事务中止psw;即,在无受保护存储设施的情况下,在事务性执行被中止时,控制被传递至由事务中止psw指定的指令。针对非受约束事务,这是在开始事务性执行的最外部tbegin指令之后的指令。通常,这将控制传递至事务中止处理程序,该事务中止处理程序可能变更程序状态以使事务性执行的随后尝试成功。针对受约束事务,事务中止psw指定tbeginc指令。因此,在无来自中止处理程序的任何介入的情况下重新驱动事务)。当在事务性执行期间识别gse时,事务被中止。重新驱动事务而不解析gse将不是无有用的。因此,在事务中止之后将控制传递至gse处理程序,并且gse处理程序管理该事件,如本文中所描述。

在此情况下,tx位在gseci字段中被设定,并且若cpu处于受约束事务性执行模式,则cx位也被设定。

在发生受保护存储事件时,gse指令地址(gseia)包含引发事件的lgg或llgfsg指令的地址。通常,程序可在解析gse之后分支返回至该地址,且尝试继续访问原先引发该事件的对象。然而,在事务性执行(tx)模式中,事务被受保护存储事件中止,且分支返回至lgg/llgfsg指令不适当,这是因为在gse之前的事务中的其它指令将已被丢弃。因此,根据本发明的方面,基于由于gse所致的中止,处理包括例如在事务中止之后分支到gse处理程序以解析gse;将指示提供至其中cpu处于事务性模式的gse处理程序;以及提供初始引发gse的事务的tbegin/tbeginc指令的地址,使得gse处理程序可重新驱动事务。

不管在识别受保护存储事件时cpu是否处于事务性执行模式,使用受保护存储事件参数列表地址(gsepla)寄存器来定位受保护存储事件参数列表(gsepl)。gsepla寄存器的内容为64位地址,且使用地址的64个位而不管当前寻址模式如何。使用当前转译模式访问gsepl,此外在cpu处于存取寄存器模式时外使用主要地址空间访问gsepl。

如果在访问gsepl时识别到访问异常,处理如下:

·发生程序中断。

·若cpu不处于事务性执行模式,则程序旧psw中的指令地址被设定如下:

-若异常条件导致空值,则指令地址指向导致受保护存储事件的指令(即,lgg或llgfsg的地址,或其目标为lgg或llgfsg的执行类型指令的地址,作为示例)。

-若异常条件导致抑制或终止,则指令地址指向在引发受保护存储事件的指令之后的下一顺序指令。

若cpu处于事务性执行模式,将事务中止psw放置到程序旧psw中。

·针对除寻址外的所有访问异常条件,副作用访问指示(例如,真实位置168至175处的转译执行识别(teid)的位54)被设定为1。(teid不针对寻址异常而存储。)

·下文描述的其它受保护存储事件处理在不可访问gsepl时不发生。

若gsepl可访问,则使用gsepl的字段执行以下动作:

·gsepl的字节0和4至7被设定为0。

·将寻址模式的指示放置到受保护存储事件寻址模式(gseam,gsepl的字节1)中,如下:

-gseam的位0至5被设定为0。

-gseam的位6和7在识别到受保护存储事件时被设定为psw的位31和32。

·将事件的原因的指示放置到受保护存储事件原因指示字段(gseci,gsepl的字节2)中,如下:

-若在识别到受保护存储事件时cpu处于事务性执行模式,gseci的位0被设定为1;此外,字节2的位0被设定为0。

-若在识别到受保护存储事件时cpu处于受约束事务性执行模式,则gseci的位1被设定为1;此外,gseci的位1被设定为0。

-gseci的位2至6被设定为0。

-gseci的位7被设定以指定引发受保护存储事件的指令。作为示例,值0意指事件由lgg指令引发,值1意指事件由llgfsg指令引发。

·将pswdat的指示、寻址模式和地址空间控制放置到受保护存储事件存取指示字段(gseai,gsepl的字节3)中,如下:

-gseai的位0被保留且被设定至0。

-当前转译模式(psw的位5)放置到gseai的位1中。

-若dat开启,将psw的位16至17放置到gseai的位2至3中。若dat关闭,gseai的位2至3是不可预测的。

-若cpu处于存取寄存器模式,将对应于引发事件的lgg或llgfsg指令的b2字段的存取寄存器数量放置到gseai的位4至7中。若cpu不处于ar模式,gseai的位4至7是不可预测的。

·psw中的指令地址被替换为受保护存储事件处理程序地址字段(gseha,gsepl的字节8至15)的内容。gseha字段被视为分支地址。当前寻址模式不改变。

·将引发受保护存储事件的指令的地址放置到受保护存储事件指令地址字段(gseia,gsepl的字节16至23)。作为示例,放置在gseia中的地址是lgg或llgfsg指令的地址,或其目标为lgg或llgfsg的执行类型指令的地址。gseia还被放置到中断事件地址寄存器中。

·将lgg或llgfsg指令的第二操作数地址放置到受保护存储事件操作数地址(gseoa,gsepl的字节24至31)中。若事务性执行由于受保护存储事件的识别而被中止,gseoa字段包含在事务性执行期间形成的操作数地址。

·将lgg或llgfsg指令的中间结果放置到受保护存储事件中间结果字段(gseir,gsepl的字节32至39)中。若事务性执行由于受保护存储事件的识别而中止,则使用受保护存储操作数地址(gseoa)字段形成gseir字段。然而,若在事务性执行期间识别到受保护存储事件,gseir包含被事务处理提取的值或者包含在事务被中止之后提取的值是模型依赖的。

·gse中间地址(即,由lgg或llgfsg加载的指针)在事务已被中止之后形成。在一个实施例中,若lgg/llgfsg的操作数在事务期间被事务处理变更,则gseia将不示出此类改变。

·若在识别到受保护存储事件时cpu处于事务性执行模式,则将事务中止psw的指令地址放置到受保护存储事件返回地址字段(gsera,gsepl的字节40至47)。若cpu处于约束事务性执行模式,则gsera指定tbeginc(事务开始约束)指令。若cpu处于非约束事务性执行模式,则gsera指定在tbegin(事务开始)指令之后的指令。在gse处理之后,处理程序可分支到该地址以重试事务。

若在识别到受保护存储事件时cpu不处于事务性执行模式,则gsera字段的内容与gseia字段的内容相同。

最终,lgg或llgfsg指令被视为完成而无需改变通用寄存器r1。

如本文中所描述,实施存储联合技术(被称作存储回收或废弃项目收集)的编程语言可从受保护存储设施中获益。在该编程模型中,对程序对象的参照通过首先加载针对对象的指针来执行。加载保护以及加载逻辑受保护和移位指令提供程序可用其将指针加载到对象并确定指针是否可使用的方式。若未识别任何受保护存储事件(gse),则可使用指针来参照对象。然而,若识别gse,则其可指示当前指针指定正被重组的存储位置,在该情况下对象可已被重新定位在别处。gse处理程序例程可然后修改指针以指定对象的新位置,并且然后分支到由gseia指定的位置以继续正常程序执行。

响应于在cpu处于事务性执行模式时识别gse,程序的gse处理程序可尝试校正引发事件的状态(即,更新lgg或llgfsg的操作数),并然后通过分支到由gsera指定的位置而重新执行事务。若非约束事务性执行被中止,程序在分支到gsera之前将条件代码设定为2或3,这相应地取决于引发事件的状态是否被校正。若约束事务性执行被中止,则程序不分支到由gsera指定的位置,除非引发事件的状态已被校正;此外,可产生程序回路。

为确保受保护存储事件中间结果(gseir)字段的可靠内容,在事务性执行模式中执行的程序将在其修改随后在同一事务中执行的加载保护指令的第二操作数位置的情况下使用非事务存储指令(其执行非事务存储访问)。

类似于变更psw指令地址的其它指令,在psw指令地址(从gseha字段加载)在受保护存储事件之后为奇数的情况下识别规格异常。

在gse处理期间,cpu可在尝试更新受保护存储事件参数列表(gsepl)时识别访问异常。此访问异常可完全无害,例如,由于gsepl由操作系统暂时分页移出至辅助存储。假定操作系统补救异常,操作系统将加载程序旧psw以继续中断程序的执行。

若在访问gsepl时识别访问异常且cpu不处于事务性执行模式,则程序旧psw的指令地址将被如下设定,在一个示例中:

·若异常导致空值,则作为示例,指令地址将指向引发gse的lgg或llgfsg指令(或其操作数为lgg或llgfsg的执行类型指令)。

·若异常导致抑制或终止,则指令地址将指向在引发抑制或终止异常的gse的指令之后的下一顺序指令。

若在访问gsepl时识别访问异常且cpu处于非约束事务性执行模式,则程序旧psw将指定在最外tbegin之后的指令;若cpu处于约束事务性执行模式,则程序旧psw将指定tbeginc指令。

若cpu处于非受约束事务性执行模式且tdb(事务诊断块)被存储,则中止码19指示事务性执行由于gse而中止。然而,事务中止处理程序例程不能假定中止码19需要指示gse处理程序例程已校正gse的引发原因(由于在访问gsepl时的可能的访问异常条件)。在此情景中,中止处理程序例程可重新多次执行事务,以允许一个或多个转译异常的操作系统解析且允许gse处理程序校正gse的引发原因。

上文描述受保护存储设施,包括用于加载和存储调制受保护存储设施的操作的控制的指令,用于促进计算环境内的处理。本发明的一个或多个方面与计算机技术紧密相关且促进计算机内的处理,改进其性能。

参考图14a至图14b描述与促进计算环境中的处理相关的本发明的方面的一个实施例。参考图14a,在一个示例中,获取用以执行与一个或多个受保护存储控制相关的动作的指令(1400),以及执行指令(1402)。例如,执行包括从位置获取与一个或多个受保护存储控制相关联的内容(1404)。一个或多个受保护存储控制用以控制用于保护存储器的部分的受保护存储设施的操作(1406)。使用该内容执行动作(1408)。

一个或多个受保护存储控制可包括例如用于指定要被保护的存储器的区域的指定寄存器、指示存储器的区域的一个或多个区段是否要被保护的掩码寄存器,以及用以指定受保护存储事件的一个或多个属性的位置的参数列表寄存器(1410)。

在一个示例中,动作包括加载,获取内容包括从存储器获取内容,并且执行动作包括将从存储器获取的内容加载到一个或多个受保护存储控制中(1420)。从存储器获取内容包括例如从存储器中的控制块获取内容(1422)。在一个示例中,控制块包括受保护存储指定寄存器的内容、受保护存储区段掩码寄存器的内容,以及受保护存储事件参数列表地址寄存器的内容(1424)。此外,在一个示例中,一个或多个受保护存储控制包括从一组寄存器中选择的至少一个寄存器,一组寄存器包括:用于指定要被保护的存储器的区域的指定寄存器、指示存储器的区域的一个或多个区段是否要被保护的掩码寄存器、以及用以指定受保护存储事件的一个或多个属性的位置的参数列表地址寄存器(1426)。

在又一示例中,参考图14b,动作包括存储,获取内容包括从一个或多个受保护存储控制获取内容,并且执行动作包括将从一个或多个受保护存储控制获取的内容存储到存储器中(1430)。在此该示例中,存储包括将内容存储在存储器中的控制块中(1432)。此外,在一个示例中,一个或多个受保护存储控制包括从一组寄存器中选择的至少一个寄存器,一组寄存器包括:用于指定要被保护的存储器的区域的指定寄存器、指示存储器的区域的一个或多个区段是否要被保护的掩码寄存器、以及用以指定受保护存储事件的一个或多个属性的位置的参数列表地址寄存器(1434)。

在一个特定示例,指令包括加载保护存储控制指令,其包括用以指定加载保护存储控制操作的操作码、以及用以定义地址的至少一个字段,该地址指定内容从其中加载到一个或多个受保护存储控制中的存储器中的位置(1436)。

在另一示例中,指令包括存储保护存储控制指令,其包括用以指定存储保护存储控制操作的操作码、以及用以定义地址的至少一个字段,该地址指定一个或多个受保护存储控制的内容被存储到其中的存储器中的所在位置(1438)。

许多变化是可能的。

本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个(或多个)计算机可读存储介质,其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。

计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字通用光盘(dvd)、记忆棒、软盘、机械编码设备(诸如在其上记录有指令的打孔卡或凹槽内凸起结构)、以及前述的任何合适的组合。如在此使用的计算机可读存储介质不应被解释为暂态信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。

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

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种编程语言(包括诸如smalltalk、c++等的面向对象的编程语言,以及诸如“c”编程语言或类似的编程语言的过程编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立的软件包执行、部分地在用户的计算机上且部分地在远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,使用因特网服务提供商经由因特网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化定制电子电路以执行计算机可读程序指令,以便执行本发明的各方面。

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

这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以生产机器,使得经由计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现流程图和/或框图的一个框或多个框中指定的功能/动作的部件。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读程序指令可以指示计算机、可编程数据处理装置和/或其它设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个框或多个框中指定的功能/动作的各方面的指令。

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

附图中的流程图和框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示模块、程序段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所标注的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上并行地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件系统来实现。

除了上述之外,可以由提供客户环境管理的服务提供商提供、给予、部署、管理、服务一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以例如根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容来接收付款。

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

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

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

尽管以上描述了各种实施例,但这些仅是示例。例如,具有其它体系结构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的指令、指令格式、指令字段和/或指令值。许多变化是可能的。

此外,其它类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦接到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器,大容量存储和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少执行期间必须从大容量存储重新取回代码的次数。

输入/输出或i/o设备(包括但不限于键盘,显示器,指示设备,dasd,磁带,cd,dvd,拇指驱动器和其它存储介质等)可以直接耦接到系统或通过介入i/o控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。

本文使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。

以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。

权利要求书(按照条约第19条的修改)

1.一种用于促进计算环境中的处理的计算机程序产品,所述计算机程序产品包括:

计算机可读存储介质,其能够由处理电路读取并且存储用于执行包括以下步骤的方法的指令:

获取用于执行与一个或多个受保护存储控制相关的动作的指令;以及

执行所述指令以执行所述动作,所述执行包括:

从位置获取与所述一个或多个受保护存储控制相关联的内容,所述一个或多个受保护存储控制用以控制用于保护存储器的部分的受保护存储设施的操作,并且其中所述一个或多个受保护存储控制包括用于指定要被保护的存储器的区域的指定寄存器、指示所述存储器的区域的一个或多个区段是否要被保护的掩码寄存器、以及用于指定受保护存储事件的一个或多个属性的位置的参数列表地址寄存器,其中所述受保护存储事件是在程序尝试访问受保护区段中的地址时发生的事件,从而保护所述受保护区段内的所述地址;以及

使用所述内容执行所述动作,其中所述动作包括加载或存储,其中基于所述动作是所述加载,所述获取所述内容包括从存储器获取所述内容,并且所述执行所述动作包括将从存储器获取的所述内容加载到所述一个或多个受保护存储控制中,以及基于所述动作是所述存储,所述获取所述内容包括从所述一个或多个受保护存储控制获取所述内容,并且所述执行所述动作包括将从所述一个或多个受保护存储控制获取的所述内容存储到存储器中。

2.根据权利要求1所述的计算机程序产品,其中,所述从存储器获取所述内容包括从存储器中的控制块获取所述内容。

3.根据权利要求2所述的计算机程序产品,其中,所述控制块包括受保护存储指定寄存器的内容、受保护存储区段掩码寄存器的内容、以及受保护存储事件参数列表地址寄存器的内容。

4.根据权利要求1所述的计算机程序产品,其中,所述存储包括将所述内容存储在存储器的控制块中。

5.根据权利要求1所述的计算机程序产品,其中,所述指令包括加载保护存储控制指令,其包括用于指定加载保护存储控制操作的操作码、以及用于定义地址的至少一个字段,所述地址指定内容从其中加载到所述一个或多个受保护存储控制中的存储器中的位置。

6.根据权利要求1所述的计算机程序产品,其中,所述指令包括存储保护存储控制指令,其包括用于指定存储保护存储控制操作的操作码、以及用于定义地址的至少一个字段,所述地址指定所述一个或多个受保护存储控制的内容被存储到其中的存储器中的位置。

7.一种用于促进计算环境中的处理的计算机系统,所述计算机系统包括:

存储器;以及

处理器,其与所述存储器通信,其中所述计算机系统被配置为执行方法,所述方法包括:

获取用于执行与一个或多个受保护存储控制相关的动作的指令;以及

执行所述指令以执行所述动作,所述执行包括:

从位置获取与所述一个或多个受保护存储控制相关联的内容,所述一个或多个受保护存储控制用以控制用于保护存储器的部分的受保护存储设施的操作,并且其中所述一个或多个受保护存储控制包括用于指定要被保护的存储器的区域的指定寄存器、指示所述存储器的区域的一个或多个区段是否要被保护的掩码寄存器、以及用于指定受保护存储事件的一个或多个属性的位置的参数列表地址寄存器,其中所述受保护存储事件是在程序尝试访问受保护区段中的地址时发生的事件,从而保护所述受保护区段内的所述地址;以及

使用所述内容执行所述动作,其中所述动作包括加载或存储,其中基于所述动作是是所述加载,所述获取所述内容包括从存储器获取所述内容,并且所述执行所述动作包括将从存储器获取的所述内容加载到所述一个或多个受保护存储控制中,以及基于所述动作是是所述存储,所述获取所述内容包括从所述一个或多个受保护存储控制获取所述内容,并且所述执行所述动作包括将从所述一个或多个受保护存储控制获取的所述内容存储到存储器中。

8.一种促进计算环境中的处理的计算机实现的方法,所述计算机实现的方法包括:

获取用于执行与一个或多个受保护存储控制相关的动作的指令;以及

由至少一个处理器,执行所述指令以执行所述动作,所述执行包括:

从位置获取与所述一个或多个受保护存储控制相关联的内容,所述一个或多个受保护存储控制用以控制用于保护存储器的部分的受保护存储设施的操作,并且其中所述一个或多个受保护存储控制包括用于指定要被保护的存储器的区域的指定寄存器、指示所述存储器的区域的一个或多个区段是否要被保护的掩码寄存器、以及用于指定受保护存储事件的一个或多个属性的位置的参数列表地址寄存器,其中所述受保护存储事件是在程序尝试访问受保护区段中的地址时发生的事件,从而保护所述受保护区段内的所述地址;以及

使用所述内容执行所述动作,其中所述动作包括加载或存储,其中基于所述动作是所述加载,所述获取所述内容包括从存储器获取所述内容,并且所述执行所述动作包括将从存储器获取的所述内容加载到所述一个或多个受保护存储控制中,以及基于所述动作是所述存储,所述获取所述内容包括从所述一个或多个受保护存储控制获取所述内容,并且所述执行所述动作包括将从所述一个或多个受保护存储控制获取的所述内容存储到存储器中。

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