CN101911024B - 带有帧管理的动态地址转换 - Google Patents

带有帧管理的动态地址转换 Download PDF

Info

Publication number
CN101911024B
CN101911024B CN2009801017401A CN200980101740A CN101911024B CN 101911024 B CN101911024 B CN 101911024B CN 2009801017401 A CN2009801017401 A CN 2009801017401A CN 200980101740 A CN200980101740 A CN 200980101740A CN 101911024 B CN101911024 B CN 101911024B
Authority
CN
China
Prior art keywords
address
storage
list item
data block
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2009801017401A
Other languages
English (en)
Other versions
CN101911024A (zh
Inventor
D·格雷纳
C·小盖尼
L·海勒
D·奥西谢克
T·什莱格尔
G·西格曼三世
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101911024A publication Critical patent/CN101911024A/zh
Application granted granted Critical
Publication of CN101911024B publication Critical patent/CN101911024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Machine Translation (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)

Abstract

披露了针对计算机系统的机器体系结构定义的设置键和清除帧管理功能。在一个实施例中,获取标识第一和第二通用寄存器的机器指令。从所述第一通用寄存器获取帧大小字段,所述帧大小字段指示存储帧是否为小数据块或大数据块中的一个。从所述第二通用寄存器获取要在其上执行所述指令的存储帧的操作数地址。如果所述存储帧是小数据块,则仅针对所述小数据块执行所述指令。如果所指示的存储帧是大数据块,则从所述第二通用寄存器获取所述大数据块内初始第一数据块的操作数地址。将针对从所述初始第一数据块开始的所有块执行帧管理指令。

Description

带有帧管理的动态地址转换
技术领域
本发明一般地涉及用于在计算机系统中转换虚拟地址的系统和方法,更具体地说,涉及在能够进行虚拟地址转换的计算机系统中执行帧管理功能的系统和方法。
背景技术
动态地址转换提供这样的能力:在任意时刻中断程序的执行,将程序及其数据记录到诸如直接存取存储设备之类的辅助存储装置中,并在以后将程序及其数据返回到其他主存储位置以恢复执行。程序及其数据在主存储装置和辅助存储装置之间的转移可逐步执行,并且可发生将信息返回到主存储装置以响应在执行需要时CPU访问该信息的尝试。这些功能可在不更改或不检查程序及其数据的情况下执行,它们不需要重新定位的程序中的任何显式编程约定,并且除了所涉及的时间延迟以外,不会干扰程序的执行。
借助操作系统的适当支持,可使用动态地址转换工具为用户提供一种其中存储装置似乎大于配置中可用的主存储装置的系统。此明显的主存储装置通常被称为虚拟存储装置,并且用于指定虚拟存储装置中的位置的地址通常被称为虚拟地址。用户的虚拟存储装置远大于配置中可用的主存储装置的大小并且一般在辅助存储装置中维护。虚拟存储装置被视为包括通常被称为页(也被称为段和区)的数据块。仅将虚拟存储装置的最近被引用的页分配为占用物理主存储装置的数据块。当用户引用的虚拟存储装置的页不在主存储装置中时,将调入这些页以替换主存储装置中引用次数较少的页。在某些情况下,虚拟存储装置被长期(或永久)分配给主存储装置而不考虑是否引用该存储装置。操作系统可在用户不知情的情况下执行存储装置页的调换。
程序使用地址(或虚拟地址)访问虚拟存储装置。程序可使用虚拟地址从虚拟存储装置取回指令或从虚拟存储装置加载数据或存储数据。与虚拟存储装置的范围关联的虚拟地址定义了地址空间。借助操作系统的适当支持,可使用动态地址转换工具提供若干地址空间。这些地址空间可用于提供用户间的隔离程度。此类支持可针对每个用户包含完全不同的地址空间,从而提供完全的隔离,或者可通过将每个地址空间的一部分映射到单独的公共存储区域来提供共享区域。另外,还提供了允许半特权程序访问多个此类地址空间的指令。
动态地址转换提供了来自多个不同地址空间的虚拟地址的转换。这些地址空间被称为主地址空间、二级地址空间以及存取寄存器指定的地址空间。特权程序还可导致访问起始地址空间。可针对CPU生成的指令和数据地址指定动态地址转换。
需要一种提供本领域迄今为止尚未了解的附加功能、能力和保护的增强的动态地址转换工具。
发明内容
提供了针对计算机系统的机器体系结构定义的设置键和清除帧管理功能,所述计算机系统具有用于将虚拟地址转换成主存储装置或存储器中的数据块的实地址或绝对地址的转换表层次结构。可向实地址添加前缀以形成绝对地址。
在一个示例实施例中,获取包含帧管理指令的操作码的机器指令,所述帧管理指令具有标识第一通用寄存器的第一字段和标识第二通用寄存器的第二字段。从所述第一通用寄存器获取帧管理字段,所述帧管理字段包含具有多个访问-保护位的键字段和块大小指示符字段。从所述第二通用寄存器获取要在其上执行所述机器指令的存储帧的操作数地址。所述操作数地址既可以是大数据块的绝对地址,也可以是小数据块的实地址。如果启用设置存储键功能,则与所确定的数据块关联的每个存储键的存储访问-保护位被设置为所述键字段的访问-保护位的值。如果启用清除功能,则通过将由所述操作数地址寻址的每个数据块的所有字节设置为0来清除每个数据块。
在另一实施例中,所述存储键具有存储保护位、存储引用位以及存储更改位。所述键字段具有取回保护位、引用位以及更改位。所述大数据块大于所述小数据块。对于所述小数据块,从所述第二通用寄存器获取所述小数据块的操作数地址,所述小数据块具有包含多个存储访问-保护位的存储键。所述键字段的所述访问保护-位被设置为所述存储键的所述存储访问-保护位。
下面将结合示出的特定实施例对本发明进行描述。应该理解,本领域的技术人员可以在不偏离本发明的精神或范围的情况下做出各种更改和修改。
附图说明
附图连同下面的详细说明一起被结合到说明书中或构成说明书的一部分,用于全部根据本发明进一步示出各种实施例和解释各种原理和优点,在所述附图中,相同的标号在各个独立的视图之间表示相同或功能相似的元素。通过结合附图进行下面详细的说明,此处披露的主题的上述及其他特性和优点将是显而易见的,这些附图是:
图1示出了其中执行增强的动态地址转换的主计算机系统的一个实施例;
图2提供了仿真具有主机体系结构的主计算机系统的示例仿真主计算机系统;
图3示出了如何使用程序状态字针对虚拟地址的动态地址转换确定有效ASCE的一个实施例;
图4示出了其中使用在图3中确定的有效ASCE来确定在虚拟地址转换中使用的转换表层次结构中的最高转换表的一个实施例;
图5A示出了使用转换表层次结构使虚拟地址被动态地址转换到段表级别的过程的一个实施例;
图5B示出了图5A中的动态地址转换的后续过程,其中段表表项(STE)格式控制(FC)为0;
图5C示出了图5A中的动态地址转换的后续过程,其中段表表项(STE)格式控制(FC)为1;
图6示出了增强的动态地址转换(eDAT)获取段表表项中的格式控制字段的一个实施例的流程图;
图7示出了从图6的节点614开始的流程图的后续过程;
图8示出了从图6的节点616开始的流程图的后续过程;
图9示出了其中已设置所指示的存储键的执行帧管理功能(PFMF)的一个实施例的流程图;
图10示出了其中已清除所指示的帧的执行帧管理功能(PFMF)的一个实施例的流程图。
具体实施方式
应该理解,本申请的说明书中做出的陈述并非一定限制各种要求保护的发明中的任何发明。而且,某些陈述适用于某些发明特性,但不适用于其他发明特性。除非另外指出,否则在不失一般性的情况下,单数元素可以表示复数元素,并且反之亦然。
本领域中的技术人员很容易熟悉在计算环境中为存储装置寻址以及使用寄存器或地址字段中的位指示不同的状态以及针对这些状态执行操作。进而,本领域中的技术人员了解计算机程序领域并且了解计算机系统组件之间的工作方式和相互关系。
概述
提供了增强的动态地址转换(DAT)工具的示例实施例。当安装并启用增强的DAT工具之后,DAT转换可产生由段表表项中的段表表项(STE)格式控制确定的页帧实地址或段帧绝对地址。如在此使用的,术语“应用增强的DAT”表示满足下面所有条件:1)已安装EDAT工具;2)已通过控制寄存器0(CR0)位40启用EDAT工具;以及3)借助DAT-表表项转换地址。
应用增强的DAT之后,可以在DAT过程中提供以下附加功能:
将DAT保护位添加到区表表项,提供与段表表项和页表表项中的DAT保护位类似的功能。
将STE格式控制添加到段表表项。当STE格式控制为0时,DAT按照当前定义的那样执行,除非页表表项中的更改记录忽略指示对于该页可绕过是否设置更改位。
当STE格式控制为1时,段表表项还包含以下内容:
段帧绝对地址(而非页表起始地址),其指定1MB块的绝对存储位置。
访问控制位和一个取回保护位,其可选地可代替段的单个存储键中的对应位而使用。
一个位,其确定段表表项中的访问控制位和取回保护位的有效性。
更改记录忽略,其指示在段的单个存储键中是否可绕过更改位设置。
主计算机系统
参考图1,示出了主计算机系统100的代表组件。也可以在计算机系统中使用其他组件布置,这在本领域中是公知的。
主计算环境优选地基于由位于纽约阿蒙克的国际商业机器公司
Figure BPA00001178541600051
所提供的
Figure BPA00001178541600052
Principles of Operation(
Figure BPA00001178541600053
操作原理,
Figure BPA00001178541600054
出版号:SA22-7832-05,第六版,2007年4月)中更全面地描述了
Figure BPA00001178541600055
其全部内容在此引入作为参考。基于
Figure BPA00001178541600056
的计算环境例如包括eServer和均由
Figure BPA00001178541600058
提供。
代表性主计算机100包括一个或多个CUP 101,其与主存储装置(计算机存储器102)通信以及与存储设备111和网络110的I/O接口通信以实现与其他计算机或存储区域网络(SAN)等通信。CPU可具有用于将程序地址(虚拟地址)转换为存储器的实地址的动态地址转换(DAT)工具(功能或单元)103。DAT工具通常包括用于对转换进行缓存的转换后备缓冲器107,这样,稍后对计算机存储器102的块的访问没有地址转换延迟。通常在计算机存储器102和处理器101之间使用高速缓存109。高速缓存109可具有层次结构,其中较大的高速缓存可用于多个CPU,而较小、较快(较低级别)的高速缓存位于较大的高速缓存和每个CPU之间。在某些实施方式中,将分割较低级别的高速缓存以针对指令取回和数据访问提供单独的低级别高速缓存。在一个实施例中,指令取回单元104通过高速缓存109从存储器102取回指令。所述指令在指令解码单元(106)中进行解码并被分派到(在某些实施例中,与其他指令一起被分派到)指令执行单元108。通常采用若干执行单元108,例如算术执行单元、浮点执行单元和分支指令执行单元。执行单元执行指令,根据需要访问指令指定的寄存器或存储器中的操作数。如果要从存储器102访问(加载或存储)操作数,则通常由加载存储单元105在被执行的指令的控制下处理访问。
在一个实施例中,本发明通过软件(有时称为许可内码(LIC)、固件、微代码、毫代码、微微代码等,它们均与本发明一致)实现。体现本发明的软件程序代码通常由计算机系统100中被称为CPU(中央处理单元)101的处理器从诸如CD-ROM驱动器、磁带或硬盘驱动器之类的长期存储介质111进行访问。所述软件程序代码可体现在诸如磁盘、硬盘驱动器或CD-ROM之类的各种已知介质上以便与数据处理系统一起使用。所述代码可通过此类介质分发,也可从计算机存储器102分发给用户,或通过网络110从某个计算机系统的存储装置分发给其他计算机系统以供此类其他系统的用户使用。
备选地,所述程序代码可以位于存储器102中,由处理器101使用处理器总线进行访问。此类程序代码包括控制各种计算机组件的功能及交互以及一个或多个应用程序的操作系统。程序代码一般从密集存储介质111分页到高速存储器102,在高速存储器102处,此类程序代码可由处理器101进行处理。将软件程序代码包含在存储器、物理介质中以及/或者通过网络分发软件代码的技术和方法是公知的,此处不做进一步讨论。当创建程序代码并将其存储在有形介质(包括但不限于电子存储器模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,通常被称为“计算机程序产品”。计算机程序产品介质一般可由优选地在计算机系统中的处理电路读取以便由所述处理电路进行处理。
在图2中,提供了仿真主机体系结构的主计算机系统100的示例仿真主计算机系统201。在仿真主计算机系统201中,主机处理器(CPU)208为仿真主机处理器(或虚拟主机处理器)并包括仿真处理器207,仿真处理器207具有的本机指令集体系结构不同于主计算机100的处理器101使用的指令集体系结构。仿真主计算机系统201包括可由仿真处理器207访问的存储器202。在示例实施例中,存储器202被划分成主计算机存储器102部分和仿真例程203部分(提供仿真的例程可为主机存储器的一部分)。根据主计算机体系结构,主计算机存储器102可供仿真的主计算机201的程序使用。仿真处理器207执行体系结构不同于被仿真的处理器208的架构指令集的本机指令(从仿真例程存储器203获取所述本地指令),并可通过使用在序列与访问/解码例程中获取的一个或多个指令来从主计算机存储器102中的程序访问主机指令以便执行,所述序列与访问/解码例程可解码所访问的主机指令(多个)以确定用于仿真所访问的主机指令的功能的本机指令执行例程。
其他针对主计算机系统100体系结构定义的工具可以由架构的工具例程进行仿真,其中包括诸如通用寄存器、控制寄存器、动态地址转换和I/O子系统支持以及处理器高速缓存之类的工具。仿真例程还可利用仿真处理器207中可提供的功能(例如通用寄存器和虚拟地址的动态转换)以提高自身的性能。还可提供专用硬件和卸载引擎来帮助处理器207仿真主计算机100的功能。
计算机处理器和寄存器
在一个实施例中,CPU的程序指令功能通过通信总线与多个寄存器进行通信。所述通信总线可以是CPU的内部总线,也可以是其外部总线。某些寄存器可以是只读的。其他硬件和/或软件也可以对CPU所访问的一个或多个寄存器执行读/写操作。指令操作码(opcode)确定在任意特定机器指令操作中使用哪种类型的寄存器。
通用寄存器
指令可以在16个通用寄存器中的一个或多个寄存器中指定信息。所述通用寄存器可用作地址算术中的基址寄存器和索引寄存器以及用作一般算术和逻辑操作中的累加器。每个寄存器都包含64个位位置。通用寄存器通过数字0-15来识别,并且由指令中的4位R字段指定。某些指令通过具有若干R字段来提供对多个通用寄存器的寻址。对于某些指令,将隐含使用特定的通用寄存器,而不是由指令的R字段显式地指定。
对于某些操作,将两个相邻通用寄存器的位32-63或位0-63相连,从而分别提供64位或128位格式。在这些操作中,程序必须指定偶数编号的寄存器,其包含最左侧的(高阶)32或64个位。下一较高编号的寄存器包含最右侧(低阶)的32或64个位。除了在一般算术和逻辑操作中用作累加器之外,16个通用寄存器中的15个通用寄存器还被用作地址生成中的基址寄存器和索引寄存器。在这些情况下,寄存器由指令中的4位B字段或X字段指定。B或X字段中的零值指定不应用任何基址或索引,因此,通用寄存器0不能被指定为包含基址或索引。
控制寄存器
控制寄存器提供程序状态字以外的控制信息的维护和操纵。CPU具有16个控制寄存器,每个控制寄存器都具有64个位位置。所述寄存器中的位位置被分配给系统中诸如程序事件记录之类的特定工具,并用于指定操作可以发生或用于提供工具所需的特殊信息。控制寄存器通过数字0-15来识别并且由指令LOAD CONTROL和STORE CONTROL中的4位R字段指定。可以通过这些指令寻址多个控制寄存器。
控制寄存器1
控制寄存器1包含主地址空间控制元素(PASCE)。在一个实施例中,控制寄存器1具有以下两种格式之一,具体取决于寄存器中的实空间控制位(R):
主区表或段表指定(R=0)
Figure BPA00001178541600091
主实空间指定(R=1)
Figure BPA00001178541600092
控制寄存器1的格式
主地址空间控制元素(PASCE)中的选定字段按如下方式进行分配:
主区表或段表起始地址:控制寄存器1中的主区表或段表指定的位0-51及右侧附加的12个0形成指定主区表或段表的开头的64位地址。无法预测此地址是实地址还是绝对地址。该表被称为主区表或段表,因为它用于在主地址空间中转换虚拟地址。
主实空间控制(R):如果控制寄存器1的位58为0,则所述寄存器包含区表或段表指定。如果位58为1,则所述寄存器包含实空间指定。当位58为1时,在转换对主地址空间的引用时,即使控制寄存器1中的令牌起始地址与转换后备缓冲器表项中的起始地址匹配,段表表项的转换后备缓冲器表示中的公共段位的1值也会阻止使用表项以及它所指定的转换后备缓冲器页表副本。
主指定类型控制(DT):当R为0时,控制寄存器1中的表指定类型由所述寄存器中的位60和61指定,如下所示:
Figure BPA00001178541600101
主指定类型(DT)控制位
当R为0时,在尝试使用PASCE转换虚拟地址(其中最左侧的一个位在地址的位位置0-10中)时,位60和61必须为二进制11。类似地,在最左侧的一个位在地址的位位置11-21中时,位60和61必须为二进制11或10,并且在最左侧的一个位在地址的位位置22-32中时,它们必须为二进制11、10或01。否则,将识别到ASCE-型异常。
主区表或段表长度(TL):控制寄存器1中的主区表指定或段表指定的位62和63以4,096字节为单位指定主区表或段表的长度,从而使区表或段表的长度以512个表项的倍数来变化。以4,096字节为单位的主区表或段表的长度大于TL值。长度字段的内容用于确定通过表转换的虚拟地址部分(RFX、RSX、RTX或SX)是否指定落入表中的表项。
主实空间令牌起始地址:控制寄存器1中的主实空间指定的位0-51以及右侧附加的12个0形成64位地址,该64位地址可以在形成和使用提供虚等于实(virtual equals real)转换以引用主地址空间的转换后备缓冲器表项中使用。尽管该地址仅用作令牌而不用于执行存储引用,但是其仍必须为有效地址;否则,当使用控制寄存器1的内容时,可能使用不正确的转换后备缓冲器表项。
将不分配并忽略控制寄存器1的以下位:当寄存器包含区表指定或段表指定时不分配并忽略位52、53和59,当寄存器包含实空间指定时不分配并忽略位52、53以及59-63。
控制寄存器7
控制寄存器7包含二级地址空间控制元素(SASCE)。在一个实施例中,控制寄存器7具有以下两种格式之一,具体取决于寄存器中的实空间控制位(R):
二级区表或段表指定(R=0)
二级实地址指定(R=1)
Figure BPA00001178541600112
控制寄存器7的格式
控制寄存器13
控制寄存器13包含起始地址空间控制元素(HASCE)。在一个实施例中,控制寄存器13具有以下两种格式之一,具体取决于寄存器中的实空间控制位(R):
起始区表或段表指定(R=0)
Figure BPA00001178541600121
起始实空间指定(R=1)
Figure BPA00001178541600122
控制寄存器13的格式
存取寄存器
CPU具有16个以0-15进行编号的存取寄存器。存取寄存器包括32个位位置,所述位位置包含对ASCE的间接指定。ASCE是动态地址转换(DAT)机制在转换对相应地址空间的引用时所使用的参数。当CPU处于被称为存取寄存器模式(由程序状态字中的位控制)的模式下时,用于指定存储操作数引用的逻辑地址的指令B字段将指定存取寄存器,并且DAT针对所做的引用使用由存取寄存器指定的ASCE。对于某些指令,将使用R字段,而非B字段。提供指令以加载和存储存取寄存器的内容以及将某个存取寄存器的内容移至另一存取寄存器。
存取寄存器1-15中的每个都指定任意地址空间,其中包括当前指令空间(主地址空间)。存取寄存器0指定主指令空间。当使用存取寄存器1-15之一指定地址空间时,CPU通过转换存取寄存器的内容来确定指定哪个地址空间。当使用存取寄存器0指定地址空间时,CPU将存取寄存器视为指定主指令空间,并且它不会检查存取寄存器的实际内容。因此,16个存取寄存器在任意时刻可以指定主指令空间以及最多15个其他空间。
程序状态字(PSW)
程序状态字包括指令地址、条件码以及其他用于控制指令排序及确定CPU状态的信息。活动的或执行控制的程序状态字被称为当前程序状态字。它管理当前执行的程序。
CPU具有中断功能,此功能允许CPU迅速切换到另一程序以响应异常状况和外部激励。当中断发生时,CPU针对特定的中断类别,将当前程序状态字置于被称为旧程序状态字位置的指定存储位置。CPU从第二指定存储位置取回新的程序状态字。此新的程序状态字确定下一要执行的程序。完成中断处理之后,处理中断的程序会重新加载旧程序状态字,使其重新成为当前程序状态字,以便继续被中断的程序。
存在六个中断类别:外部、I/O、机器检查、程序、重新启动以及系统管理程序调用。每个类别都具有在实际存储装置中永久指定的一对独特的旧程序状态字和新程序状态字位置。
当前程序状态字
CPU中的当前程序状态字包含执行当前活动的程序所需的信息。所述程序状态字的长度为128位,其中包括指令地址、条件码以及其他控制字段。一般而言,程序状态字用于控制指令排序以及用于保存和指示CPU中与当前执行的程序有关的多数状态。其他控制和状态信息包含在控制寄存器和永久指定的存储位置中。可通过加载新的程序状态字或部分程序状态字来更改CPU的状态。
通过存储当前程序状态字以保留CPU的状态,然后加载新的程序状态字,在CPU中断期间切换控制。执行LOAD PSW或LOAD PSWEXTENDED,或成功地结束初始程序加载序列将引入新的程序状态字。指令地址通过顺序指令执行来更新,并且由成功的分支进行替换。提供了对程序状态字的一部分执行操作的其他指令。
当更改程序状态字的指令中断或执行完成时,新的或修改后的程序状态字将变为活动(即,引入到当前程序状态字内的信息开始控制CPU)。与更改程序状态字的指令关联的程序事件记录(PER)在PER掩码的控制下发生中断,所述掩码在操作开始时生效。程序状态字的0-7位统称为系统掩码。在一个实施例中,程序状态字具有以下格式:
Figure BPA00001178541600141
程序状态字格式
下面是对选定程序状态字字段功能的简要描述。
DAT模式(T):位5控制是否发生用于访问存储装置的逻辑和指令地址的隐式动态地址转换。当位5为0时,DAT处于关闭状态并且逻辑和指令地址被视为实地址。当位5为1时,DAT处于打开状态并且调用动态地址转换机制。
PSW键:位8-11形成CPU引用存储装置时使用的访问键。如果引用受到键控保护,则当存储信息或从具有取回保护的位置取回信息时,会将PSW键与存储键进行匹配。但是,对于MOVE TO PRIMARY、MOVE TOSCONDARY、MOVE WITH KEY、MOVE WITH SOURCE KEY以及MOVE WITH DESTINATION KEY中的每个的操作数之一而言,将使用被指定为操作数的访问键而不是PSW键。
地址空间控制(AS):位16和17,它们与程序状态字位5一起控制转换模式。
条件码(CC):位18和19是两个条件码位。所述条件码被设为0、1、2或3,具体取决于在执行特定指令时获取的结果。多数算术和逻辑运算以及某些其他运算都设置条件码。指令BRANCH ON CONDITION可以将条件码值中的任何选择的值指定为分支准则。
指令地址:程序状态字的位64-127为指令地址。该地址指定要执行的下一指令的最左侧字节的位置,除非CPU处于等待状态(程序状态字的位14为1)。
地址类型和格式
为了寻址主存储装置,将识别三种基本类型的地址:绝对地址、实地址和虚拟地址。根据在存储访问期间施加于地址的变换来区分所述地址。地址转换将虚拟地址转换成实地址。通过添加前缀将实地址转换成绝对地址。除了三种基本地址类型以外,还定义了附加类型,这些附加类型被视为三种基本类型中的一个或另一个,具体取决于指令和当前模式。
绝对地址
绝对地址是分配给主存储位置的地址。绝对地址用于存储访问,不需要对其执行任何变换。配置中的通道子系统以及所有CPU通过使用相同的绝对地址来访问共享主存储位置。通常为可用的主存储装置分配从0开始的连续绝对地址,以及在整数界限上以完整的4KB数据块分配地址。当尝试在未被分配给物理位置的块中使用绝对地址时,会识别到异常。在某些模型上,可提供存储重新配置控制,它允许操作者更改绝对地址与物理位置之间的对应关系。但是,在任意时刻,一个物理位置都不与一个以上的绝对地址关联。包括根据字节位置的绝对地址排序的字节位置的存储装置被称为绝对存储装置。
实地址
实地址标识实存储装置中的位置。当使用实地址访问主存储装置时,借助添加前缀来转换实地址以形成绝对地址。对于配置中的每个CPU,任何时刻都存在一个实地址到绝对地址映射。当CPU使用实地址访问主存储装置时,可通过添加前缀将此实地址转换成绝对地址。由CPU的前缀寄存器中的值定义特定的变换。包括根据字节位置的实地址排序的字节位置的存储装置被称为实存储装置。
虚拟地址
虚拟地址标识虚拟存储装置中的位置。当使用虚拟地址访问主存储装置时,会借助动态地址转换将虚拟地址转换成需要添加前缀以形成绝对地址的实地址,或直接转换为绝对地址。
主虚拟地址
主虚拟地址是要通过主地址空间控制元素(PASCE)转换的虚拟地址。在主空间模式下,逻辑地址被视为主虚拟地址。在主空间模式下、二级空间模式下或存取寄存器模式下,指令地址被视为主虚拟地址。MOVE TOPRIMARY的第一操作数地址和MOVE TO SCONDARY的第二操作数地址被视为主虚拟地址。
二级虚拟地址
二级虚拟地址是要通过二级地址空间控制元素(SASCE)转换的虚拟地址。在二级空间模式下,逻辑地址被视为二级虚拟地址。MOVE TOPRIMARY的第二操作数地址和MOVE TO SCONDARY的第一操作数地址被视为二级虚拟地址。
AR指定的虚拟地址
AR指定的虚拟地址是要通过存取寄存器指定的地址空间控制元素转换的虚拟地址。在存取寄存器模式下,逻辑地址被视为AR指定的地址。
起始虚拟地址
起始虚拟地址是要通过起始地址空间控制元素(HASCE)转换的虚拟地址。在起始空间模式下,逻辑地址和指令地址被视为起始虚拟地址。
指令地址
用于从存储装置取回指令的地址被称为指令地址。指令地址在实模式下被视为实地址,在主空间模式下、二级空间模式下或存取寄存器模式下被视为主虚拟地址,以及在起始空间模式下被视为起始虚拟地址。当前程序状态字中的指令地址和EXECUTE的目标地址为指令地址。
有效地址
在某些情况下,使用术语“有效地址”非常方便。有效地址是通过动态地址转换或添加前缀执行任何变换之前存在的地址。有效地址可以在寄存器内直接指定,也可以通过地址算术得出。地址算术是对基址和位移执行加法或对基址、索引和位移执行加法。
添加前缀
添加前缀提供了这样的能力:对于每个CPU,将实地址范围0-8191分配给绝对存储装置中的不同块,从而允许共享主存储装置的一个以上CPU在干扰最小,尤其是在处理中断的情况下并行运行。添加前缀使范围0-8191内的实地址以一对一的方式对应于通过CPU的前缀寄存器的位位置0-50中的值所标识的8KB绝对地址块(前缀区域),并使通过所述前缀寄存器中的值标识的实地址块以一对一的方式对应于绝对地址0-8191。其余的实地址与对应的绝对地址相同,该变换允许每个CPU访问所有主存储装置,包括第一8KB字节以及由其他CPU的前缀寄存器指定的位置。
所述前缀是前缀寄存器的位位置0-50中包含的51位量。在一个实施例中,前缀寄存器具有以下格式:
Figure BPA00001178541600181
前缀寄存器的格式
在应用前缀时,取决于实地址的位0-50,通过使用以下规则之一将实地址变换成绝对地址:
如果地址的位0-50全部为0,则地址的位0-50被前缀的位0-50所替换。
如果地址的位0-50等于前缀的位0-50,则地址的位0-50被0所替换。
如果地址的位0-50不全部为0且不等于前缀的位0-50,则地址的位0-50保持不变。
只有提供给存储装置的地址才通过添加前缀进行变换。地址的源的内容保持不变。
即使在前缀寄存器包含的位全部为0(在此情况下实地址及其对应的绝对地址完全相同)时也将区分实地址和绝对地址。
下图示出了实地址和绝对地址之间的关系:
地址空间是连续的整数序列(虚拟地址);另外还包括特定的变换参数,所述参数允许将每个数字与存储装置中的字节位置关联。所述序列以0开始,从左到右进行排列。
当CPU使用虚拟地址访问主存储装置时,首先通过动态地址转换(DAT)将虚拟地址转换成实地址或绝对地址。可进一步向实地址添加前缀以形成绝对地址。DAT可使用区第一表、区第二表、区第三表、段表以及页表作为变换参数。特定地址空间的最高级别表的指定(起始地址和长度)被称为地址空间控制元素(ASCE),需要找到该元素以供控制寄存器中的DAT使用或者由存取寄存器指定该元素。备选地,地址空间的ASCE可以是实空间指定,后者指示DAT不使用任何表并且仅通过将虚拟地址视为实地址来转换虚拟地址。
DAT在不同的时间使用不同的控制寄存器中的ASCE或使用由存取寄存器指定的ASCE。此选择由当前程序状态字中指定的转换模式确定。可提供四种转换模式:主空间模式、二级空间模式、存取寄存器模式以及起始空间模式。可根据转换模式寻址不同的地址空间。
在CPU处于主空间模式或二级空间模式中的任何时刻,CPU可以转换属于两个地址空间(即,主地址空间和二级地址空间)的虚拟地址。在CPU处于存取寄存器模式中的任何时刻,它可以转换最多16个地址空间(即,主地址空间和最多15个AR指定的地址空间)的虚拟地址。在CPU处于起始空间模式中的任何时刻,它可以转换起始地址空间的虚拟地址。
这样标识主地址空间是因为其包括主虚拟地址,通过主地址空间控制元素(PASCE)转换所述主虚拟地址。类似地,二级地址空间包括通过二级地址空间控制元素(SASCE)转换的二级虚拟地址。AR指定的地址空间包括通过存取寄存器指定的地址空间控制元素(AR指定的ASCE)转换的AR指定的虚拟地址,以及起始地址空间包括通过起始地址空间控制元素(HASCE)转换的起始虚拟地址。主ASCE和二级ASCE分别位于控制寄存器1和7中。AR指定的ASCE可在控制寄存器1和7中,或者在被称为ASN第二表表项的表表项中。HASCE在控制寄存器13中。
动态地址转换
动态地址转换是将虚拟地址(例如,在存储引用期间)转换成对应的主存储器地址(所述实施例中的实地址或绝对地址)的过程。所述虚拟地址可以是主虚拟地址、二级虚拟地址、存取寄存器指定的虚拟地址或起始虚拟地址。这些地址分别通过PASCE、SASCE、AR指定的ASCE或HASCE进行转换。选择适当的ASCE之后,对于所有四种虚拟地址类型而言,转换过程都是相同的。
寻址转换模式
有效地址是通过动态地址转换或添加前缀执行任意变换之前存在的地址(虚拟地址)。程序状态字中控制动态地址转换的三个位分别为位5(DAT模式位)、位16和17(地址空间控制位)。当DAT模式位为0时,DAT处于关闭状态,CPU处于实模式下。当DAT模式位为1时,DAT处于打开状态,CPU处于由地址空间控制位指定的转换模式下:二进制00指定主空间模式、二进制01指定存取寄存器模式,二进制10指定二级空间模式,以及二进制11指定起始空间模式。下面将示出各种模式以及在每种模式下对地址的处理。
转换模式
程序状态字是一个128位字,其一部分提供了2个指示寻址模式的位。在一个实施例中,位31是扩展寻址模式(EA)位并且位32是基本寻址模式(BA)位。这两个位指示地址的大小。这两个位中每个位的状态都以二进制(1或0)表示。如果EA位为0且BA位为0,则指示24位寻址。如果指示24位寻址,则64位字(64位实体一般称为双字)的位40-63是地址所在的位。当指令地址占据128位实体(四倍长字)的第二个64位时,程序状态字中的位位置如下所示。在24位模式下,指令地址位于程序状态字的位104-127中。在31位模式下,指令地址位于程序状态字的位97-127中。在64位模式下,指令地址位于程序状态字的位64-127中。如果EA位为0且BA位为1,则指示31位寻址。相应的64位字包含位于位位置33-63中的31位地址。如果EA位为1且BA位为1,则64位字的位0-63(全部64位)包含地址。否则,将指示异常情况。一旦获取了寻址模式,就需要确定ASCE。
地址空间控制元素(ASCE)
现在参考图3,其中示出了如何使用程序状态字针对虚拟地址的动态地址转换确定有效的地址空间控制元素(ASCE)的一个实施例。ASCE可以例如指定2GB(G=230)的地址空间。或者,可以例如指定4TB(T=240)、8PB(P=250)或16EB(E=260)的地址空间。或者,其可以指定实空间指定。实空间指定使虚拟地址被视为存储装置中的实地址而不引用一个或多个地址转换表。
程序状态字300包含转换(T)位302和地址空间(AS)位304。在306,如果转换(T)位为0,则地址为实地址326。在308,如果地址空间(AS)等于0(二进制00),则该虚拟地址的有效ASCE为主地址空间控制元素(PASCE)310。在312,如果地址空间(AS)等于1(二进制01),则有效ASCE为存取寄存器指定的地址空间控制元素314。在316,如果地址空间(AS)等于2(二进制10),则有效ASCE为二级地址空间控制元素(SASCE)318。否则,地址空间(AS)等于3(二进制11)并且有效ASCE为起始地址空间控制元素(HASCE)322。
选择有效ASCE之后,动态地址转换过程优选地对于所有四种虚拟地址类型均相同。
段表指定或区表指定将使转换通过操作系统在实或绝对存储装置中建立的表来执行。实空间指定将使虚拟地址简单地被视为实地址而不使用存储装置中的表。
在使用段表指定或区表指定进行转换的过程中,将识别三种类型的信息单位:区、段和页。区是从2GB边界开始的跨2GB的顺序虚拟地址块。段是从1MB边界开始的跨1MB的顺序虚拟地址块。页是从4KB边界开始的跨4KB的顺序虚拟地址块。
虚拟地址格式
虚拟地址转换可涉及引用转换表层次结构的多个转换表以获取实地址或绝对地址。可以进一步对实地址执行添加前缀操作以形成绝对地址。虚拟地址包含对转换表层次结构中的转换表内的表项的索引。因此,虚拟地址被分为四个主要字段。位0-32被称为区索引(RX),位33-43被称为段索引(SX),位44-51被称为页索引(PX),以及位52-63被称为字节索引(BX)。在一个实施例中,虚拟地址具有以下格式:
Figure BPA00001178541600231
虚拟地址的格式
如其ASCE确定的,虚拟地址空间可以是包括一个区的2GB空间,也可以是包括最多8GB的区的最多16EB空间。应用到2GB地址空间的虚拟地址的RX部分必须全部为0,;否则,将识别到异常。虚拟地址的RX部分本身被分为三个字段。位0-10被称为区第一索引(RFX),位11-21被称为区第二索引(RSX),以及位22-32被称为区第三索引(RTX)。在一个实施例中,虚拟地址的位0-32具有以下格式:
Figure BPA00001178541600232
Figure BPA00001178541600241
虚拟地址的RX的格式
其中RTX为最左侧有效部分(42位地址)的虚拟地址能够寻址4TB(2048个区),其中RTX为最左侧有效部分(53位地址)的虚拟地址能够寻址8PB(4,193,044个区),并且其中RTX为最左侧有效部分(64位地址)的虚拟地址能够寻址16EB(8,589,934,592个区)。
其中RX为0的虚拟地址可以通过以下两种转换表转换为实地址:段表和页表。启用EDAT工具之后,可以仅使用段表完成所述转换。RFX可以为非零,在这种情况下,需要区第一表、区第二表和区第三表。如果RFX为0,但是RSX为非零,则需要区第二表和区第三表。如果RFX和RSX为0,但是RTX为非零,则需要区第三表。
如果地址空间的ASCE未指定转换对地址空间的引用时所需的最高级别的表(从区第一表开始,然后继续向下到段表),将识别到异常。
虚拟地址的动态转换
现在参考图4,示出了其中使用在图3中确定的有效ASCE来确定在虚拟地址转换中使用的转换表层次结构中的第一转换表的一个实施例。
在一个实施例中,控制寄存器1(CR1)包含PASCE。控制寄存器7(CR7)包含SASCE。控制寄存器13(CR13)包含HASCE,以及由存取寄存器转换(ART)过程得到的地址空间第二表表项(ASTE)包含存取寄存器指定的地址空间控制元素。将从这些位置之一选择有效ASCE400。
有效ASCE 400的第一部分包含表起始地址402,表起始地址402包含指定区第一表、区第二表、区第三表或段表的起始地址。向表起始地址(位0...51)附加12个二进制0以形成在虚拟地址转换中使用的转换表层次结构中的最高转换表的64位起始地址。有效ASCE 400还包含实空间控制(R)位404和DT位406。如果实空间控制(R)位为0,则DT位由选择器408解码以确定哪个特定的起始地址是表起始地址402。如果DT位等于3(二进制11),则表起始地址402指定区第一表410。如果DT位等于2(二进制10),则表起始地址402指定区第二表412。如果DT位等于1(二进制01),则表起始地址402指定区第三表414。否则,如果DT位等于0(二进制00),则表起始地址402指定段表416。
区第一表、区第二表或区第三表有时简称为区表。类似地,区第一表指定、区第二表指定或区第三表指定有时被称为区表指定。区表、段表和页表反映实存储装置的当前指定。页是用于分配虚拟存储装置的术语。实存储装置以固定块的形式进行分配。即使被分配给一组顺序虚拟地址,页在实存储装置中也无需相邻。
当转换中使用的ASCE是区第一表指定时,转换过程包含多级查找,所述查找例如使用区第一表、区第二表、区第三表、段表以及可选地使用页表。这些表驻留在实存储装置或绝对存储装置中。当ASCE为区第二表指定、区第三表指定或段表指定时,将忽略级别在指定级别以上的表中的查找,并且忽略更高级表本身。
现在参考图5A,示出了使用转换表层次结构执行虚拟地址的动态地址转换的一个实施例。
图4的有效ASCE 400包含指定类型(DT)位406。如果ASCE的实空间控制(R)404位为0,则DT位由选择器408解码以确定表起始地址402指定哪个起始地址。如果实空间控制(R)位为1,则动态地址转换如图5B中的节点D 564处所示那样发生。
如果选择器408中的DT位等于3(二进制11),则转换表层次结构中指定的第一表为区第一表。在502,将表起始地址402与虚拟地址的区第一索引(RFX)508部分进行算术相加以引用区第一表中的区第一表表项506。表起始地址(在右侧附加12个0,或乘以4096)与索引乘以8的乘积(或右侧附加三个0的索引)进行相加。区第一表表项包含转换中使用的转换表层次结构中的下一低级表的区第二表起始地址504。区第一表的下一低级表为区第二表。如果区第一表表项的无效(I)位等于1,则区第一表表项无效,并且不能在转换中使用。将指示异常状况。
如果选择器408中的DT位等于2(二进制10),则转换表层次结构中指定的第一表为区第二表。在510,将表起始地址402与虚拟地址的区第二索引(RSX)516部分进行算术相加以引用区第二表中的区第二表表项514。表起始地址(在右侧附加12个0,或乘以4096)与索引乘以8的乘积(或右侧附加三个0的索引)进行相加。区第二表表项包含转换中使用的转换表层次结构中的下一低级表的区第三表起始地址512。区第二表的下一低级表为区第三表。如果区第二表表项的无效(I)位等于1,则区第二表表项无效,并且将指示异常状况。
如果选择器408中的DT位等于1(二进制01),则转换表层次结构中指定的第一表为区第三表。在518,将表起始地址402与虚拟地址的区第三索引(RTX)524部分进行算术相加以引用区第三表中的区第三表表项522。表起始地址(在右侧附加12个0,或乘以4096)与索引乘以8的乘积(或右侧附加三个0的索引)进行相加。区第三表表项包含转换中使用的转换表层次结构中的下一低级表的段表起始地址520。区第三表的下一低级表为段表。如果区第三表表项的无效(I)位等于1,则区第三表表项无效,并且将指示异常状况。
如果选择器408中的DT位等于0(二进制00),则转换表层次结构中指定的第一表为段表。在526,将表起始地址402与虚拟地址的段索引(SX)532部分进行算术相加以引用段表中的段表表项530。表起始地址(在右侧附加12个0,或乘以4096)与索引乘以8的乘积(或右侧附加三个0的索引)进行相加。段表表项包含在528处示出的页表的起始地址或段帧绝对地址(SFAA)。如果段表表项的无效(I)位等于1,则段表表项无效,并且将指示异常状况。
在538,检查段表的STE格式控制(FC)位。如果STE格式控制为1,则段表表项530包含段帧绝对地址(SFAA)552并且参考图5C中的节点562继续动态地址转换。否则,从段表获取的段表表项包含页表起始地址并且参考图5B中的节点560继续动态地址转换。
现在参考图5B。如果段表表项中的STE格式控制为0,则从段表获取的段表表项包含转换表层次结构中的下一低级表的起始地址。段表的下一低级表为页表。在538,将从图5A的段表表项530获取的页表起始地址528与虚拟地址的页索引(PX)534部分进行算术相加以引用页表中的页表表项542。页表表项包含页帧实地址(PFRA)546。当在548处将页帧实地址的最左侧位与虚拟地址的字节索引(BX)536部分连接时,将获得64位实地址550。可以进一步对实64位地址执行添加前缀操作以形成绝对地址。转换后的虚拟地址引用主存储装置或存储器中所需的4KB(4096字节)数据块。
优选地,在将虚拟地址动态转换为存储器地址时使用的信息随同与虚拟地址关联的存储块地址一起存储在转换后备缓冲器表项标签中。后续存储访问可通过将ASCE信息和虚拟地址信息与转换后备缓冲器标签进行比较来迅速转换虚拟地址。如果发现所述标签为虚拟地址的标签,则可使用存储块的转换后备缓冲器地址,而不是执行对所涉及的每个转换表的缓慢顺序访问。在一个实施例中,页帧实地址(PFRA)与包含例如ASCE以及虚拟地址的RX、SX和PX部分的标签一起存储在转换后备缓冲器544的表项中。此后,从转换后备缓冲器中存储的信息得到对该虚拟地址的后续转换。
现在参考图5C。如果段表表项530中的STE格式控制为1,则段表表项包含段帧绝对地址(SFAA)552。当在554,将段帧绝对地址的最左侧位与虚拟地址的页索引534部分和字节索引536部分连接时,将获得64位绝对地址556。转换后的虚拟地址引用主存储装置或存储器中所需的大数据块。大数据块的大小至少为1MB(1,048,576字节)。
在一个实施例中,段帧绝对地址(SFAA)与虚拟地址的RX和SX部分一起存储在转换后备缓冲器544中。此后,从转换后备缓冲器中存储的信息得到对该虚拟地址的后续转换。
转换表表项格式
下面将示出在转换中使用的转换表层次结构中的各种转换表表项的实施例。
区表表项
术语“区表表项”表示区第一表表项、区第二表表项或区第三表表项。从区第一表、区第二表和区第三表取回的表项具有下面的格式。包含表项的表的级别(第一、第二或第三)通过表项中的表类型(TT)位来标识。
在一个实施例中,区第一表表项、区第二表表项和区第三表表项的格式如下:
区第一表表项(TT=11)
Figure BPA00001178541600281
区第二表表项(TT=10)
区第三表表项(TT=01)
区表表项的格式
区第二表起始地址、区第三表起始地址和段表起始地址:区第一表表项包含区第二表起始地址。区第二表表项包含区第三表起始地址。区第三表表项包含段表起始地址。以下描述适用于这三个表起始地址中的每一个。表项的位0-51以及在右侧附加的12个0形成指定下一低级表的开头的64位地址。
DAT保护位(P):当应用增强的DAT时,位54被视为与在转换中使用的每个后续区表表项、段表表项以及页表表项(当适用时)中的DAT保护位进行“或”操作。因此,当此位为1时,DAT保护应用到由区表表项指定的整个区或多个区。当未安装增强的DAT工具,或者已安装此工具但增强的DAT启用控制为0时,将忽略区表表项的位54。
区第二表偏移、区第三表偏移和段表偏移(TF):区第一表表项包含区第二表偏移。区第二表表项包含区第三表偏移。区第三表表项包含段表偏移。以下描述适用于三个表偏移中的每一个。表项的位56和57指定下一低级表的在该表开头处缺少的部分的长度,即,所述位指定实际存在于下一低级表中的第一表项的位置。所述位以4,096字节为单位指定缺少部分的长度,从而使缺少部分的长度可以以512个表项的倍数变化。以4,096字节为单位表示的缺少部分的长度等于TF值。使用偏移字段以及长度字段(位62和63)的内容确定要通过下一低级表转换的虚拟地址部分(RSX、RTX或SX)是否指定实际存在于该表中的表项。
区无效位(I):区第一表表项或区第二表表项中的位58控制与该表项关联的一组区是否可用。区第三表表项中的位58控制与该表项关联的单个区是否可用。当位58为0时,将使用区表表项进行地址转换。当此位为1时,表项无法用于转换。
表类型位(TT):区第一表表项、区第二表表项和区第三表表项的位60和61按如下方式标识包含表项的表的级别:位60和61必须标识正确的表级别,其中要考虑作为在转换中使用的ASCE的表指定类型以及迄今为止使用的表级别的数量;否则,将识别到转换规范异常。下表示出了表类型位:
区表表项的表类型位
区第二表长度、区第三表长度和段表长度(TL):区第一表表项包含区第二表长度。区第二表表项包含区第三表长度。区第三表表项包含段表长度。以下描述适用于三个表长度中的每一个。表项的位62和63指定以4,096字节为单位表示的下一低级表的长度,从而使表长度以512个表项的倍数变化。以4,096字节为单位表示的下一低级表的长度大于TL值。使用长度字段以及偏移字段(位56和57)的内容确定要通过下一低级表转换的虚拟地址部分(RSX、RTX或SX)是否指定实际存在于表中的表项。区表表项的所有其他位位置均被保留以供将来可能扩展并且应包含0;否则,将来程序可能无法兼容运行。当应用增强的DAT时,即使表项无效,区表表项的保留位位置也应包含0。
段表表项
当不应用增强的DAT,或者应用增强的DAT但段表表项的STE格式控制(位53)为0时,在一个实施例中,从段表取回的表项具有以下格式:
段表表项(T=00,FC=0)
Figure BPA00001178541600311
段表表项的格式I
当应用增强的DAT并且STE格式控制为1时,在一个实施例中,从段表取回的表项具有以下格式:
段表表项(T=00,FC=1)
段表表项的格式II
段表表项中的选定字段按如下方式进行分配:
页表起始地址:当不应用增强的DAT,或者应用增强的DAT但段表表项的STE格式控制(位53)为0时,位0-52以及在右侧附加的11个0形成指定页表的开头的64位地址。无法预测此地址是实地址还是绝对地址。
段帧绝对地址(SFAA):当应用增强的DAT并且STE格式控制为1时,表项的位0-43以及在右侧附加的20个0形成段的64位绝对地址。
ACCF有效性控制(AV):当应用增强的DAT并且STE格式控制为1时,位47是访问控制位和取回保护位(ACCF)有效性控制。当AV控制为0时,将忽略段表表项的位48-52。当AV控制为1时,将按下文所述使用位48-52。
访问控制位(ACC):当应用增强的DAT,STE格式控制为1并且AV控制为1时,段表表项的位48-51包含访问控制位,这些控制位可用于应用到地址的任何键控访问检查。
取回保护位(F):当应用增强的DAT,STE格式控制为1并且AV控制为1时,段表表项的位52包含取回保护位,此保护位可用于应用到地址的任何键控访问检查。
STE格式控制(FC):当应用增强的DAT时,位53是段表表项的格式控制,如下所示:
当FC位为0时,表项的位0-52形成页表起始地址,而位55被保留。
当FC位为1时,表项的位0-43形成段帧绝对地址,位47是ACCF有效性控制,位48-51是访问控制位,位52是取回保护位,而位55是更改记录忽略。当不应用增强的DAT时,将忽略位53。
DAT保护位(P):位54,当为1时,指示DAT保护应用到整个段。
当不应用增强的DAT时,位54被视为与在转换中使用的页表表项中的DAT保护位进行“或”操作。
当应用增强的DAT时,在转换中使用的任何和全部区表表项中的DAT保护位被视为与段表表项中的DAT保护位进行“或”操作;当STE格式控制为0时,STE中的DAT保护位还被视为与页表表项中的DAT保护位进行“或”操作。
更改记录忽略(CO):当应用增强的DAT并且STE格式控制为1时,段表表项的位55是段的更改记录忽略。当不应用增强的DAT,或者应用增强的DAT但STE格式控制为0时,将忽略段表表项的位55。
段无效位(I):位58控制与段表表项关联的段是否可用。
当此位为0时,将使用段表表项进行地址转换。
当此位为1时,段表表项无法用于转换。
公共段位(C):位59控制段表表项的转换后备缓冲器副本的使用。当不应用增强的DAT,或者当应用增强的DAT但格式控制为0时,位59还控制由段表表项指定的页表的转换后备缓冲器副本的使用。
0标识专用段;在此情况下,段表表项及其指定的任何页表仅可与指定段表表项所在的段表的段表起始地址结合使用。
1标识公共段;在此情况下,段表表项及其指定的任何页表可以继续用于转换与段索引对应的地址,即使指定了其他段表也是如此。
但是,如果在转换中使用的ASCE内的专用空间控制(位55)为1,或者如果此ASCE是实空间指定,则公共段的段表表项和任何页表的转换后备缓冲器副本不可用。当所使用的ASCE中的专用空间控制为1时,如果在转换过程中从存储装置取回段表表项,则公共段位必须为0。否则,将识别到转换规范异常。
表类型位(TT):段表表项的位60和61是用于标识包含该表项的表的级别的二进制00。区表表项或段表表项中的位60和61的所有可能值的含义如下所示:
Figure BPA00001178541600331
Figure BPA00001178541600341
表类型位60、61
位60和61必须标识正确的表级别,其中要考虑作为在转换中使用的ASCE的表指定类型以及迄今为止使用的表级别的数量;否则,将识别到转换规范异常。段表表项的所有其他位位置均被保留以供将来可能扩展,并且应包含0;否则,将来程序可能无法兼容运行。当应用增强的DAT时,段表表项的保留位位置应包含0,即使表项无效也是如此。
页表表项
在一个实施例中,从页表取回的表项具有以下格式:
Figure BPA00001178541600342
页表表项的格式
页表表项中的选定字段按如下方式进行分配:
页帧实地址(PFRA):位0-51提供实存储地址的最左侧位。将这些位与右侧的虚拟地址的12位字节索引字段连接时,将获得64位实地址。
页无效位(I):位53控制与页表表项关联的页是否可用。当此位为0时,将使用页表表项进行地址转换。当此位为1时,页表表项无法用于转换。
DAT保护位(P):位54控制是否可以在页中进行存储访问。此保护机制是除了键控保护和低地址保护机制以外的机制。此位对取回访问没有影响。如果此位为0,则允许存储到页,但受以下附加约束限制:
DAT保护位在转换中使用的段表表项中为0。
当应用增强的DAT时,DAT保护位在转换中使用的所有区表表项中为0。
其他保护机制
如果此位为1,则不允许存储。如果不存在较高优先级异常状况,则当DAT保护位为1时,尝试存储将导致识别到保护异常。当确定DAT保护是否应用到页时,段表表项中的DAT保护位被视为与位54进行“或”操作。如果应用增强的DAT,则当确定是否应用DAT保护时,在转换中使用的任何区表表项中的DAT保护位也被视为与位54进行“或”操作。
更改记录忽略(CO):当不应用增强的DAT时,页表表项的位55必须包含0;否则,将作为执行使用此表项进行地址转换的指令的一部分而识别到转换规范异常。当应用增强的DAT并且STE格式控制为0时,页表表项的位55是页的更改记录忽略。
表项的位位置52必须包含0;否则,将作为执行使用此表项进行地址转换的指令的一部分而识别到转换规范异常。位位置56-63未被分配并被忽略。
动态转换的另一实施例
此部分描述在使用虚拟地址访问主存储装置之前隐式执行的转换过程。
虚拟地址的转换由程序状态字中的DAT模式位和地址空间控制位控制,以及由控制寄存器1、7和13中的ASCE及存取寄存器所指定的ASCE控制。当在转换中使用的ASCE是区第一表指定时,通过区第一表、区第二表、区第三表、段表以及页表执行转换,所有这些表都位于实存储装置或绝对存储装置中。当ASCE是较低级类型的表指定(区第二表指定、区第三表指定或段表指定)时,仅通过以指定级别开始的表级别执行转换,并且如果为非零,则需要使用较高级表的虚拟地址位必须全部为0;否则,将识别到ASCE型异常。当ASCE是实空间指定时,虚拟地址被视为实地址,并且不使用实存储装置或绝对存储装置中的表项。
用于特定地址转换的ASCE被称为有效ASCE。相应地,当转换主虚拟地址时,使用控制寄存器1的内容作为有效ASCE。类似地,对于二级虚拟地址,使用控制寄存器7的内容;对于AR指定的虚拟地址,使用由存取寄存器指定的ASCE;以及对于起始虚拟地址,使用控制寄存器13的内容。
当有效ASCE中的实空间控制为0时,ASCE中的指定类型指定表指定类型:区第一表、区第二表、区第三表或段表。根据指定中的表长度字段检查虚拟地址的对应部分(区第一索引、区第二索引、区第三索引或段索引),并将其添加到指定中的起始地址以便在已指定表中选择表项。如果指定中的表长度字段确定所选表项在其表之外,或者如果所选表项中的I位为1,则取决于由指定所指出的表级别,将识别到区第一转换、区第二转换、区第三转换或段转换异常。如果所选表项中的表类型位未指示预期的表级别,将识别到转换规范异常。
通过有效ASCE选择的表项指定要使用的下一低级表。如果当前表是区第一表、区第二表或区第三表,则根据当前表项中的表偏移字段和表长度字段检查虚拟地址的下一部分(分别为区第二索引、区第三索引或段索引),并将其添加到表项中的起始地址以选择下一低级表中的表项。如果当前表项中的表偏移字段和表长度字段确定下一表中的所选表项在其表之外,或者如果所选表项中的I位为1,则取决于下一表的级别,将识别到区第二转换、区第三转换或段转换异常。如果所选表项中的表类型位未指示预期的表级别,将识别到转换规范异常。
继续借助连续表级别处理虚拟地址的各部分,直到已选择段表表项。段表表项包含应用到指定段中所有页的页保护位。
将虚拟地址的页索引部分添加到段表表项中的页表起始地址,以便选择页表中的表项。如果页表表项中的I位为1,将识别到页转换异常。页表表项包含表示虚拟地址转换的实地址的最左侧位,并且包含仅应用到由页表表项指定的页的页保护位。
虚拟地址的字节索引字段不作改变地用作实地址的最右侧位位置。
为了消除与引用实存储装置或绝对存储装置中的转换表关联的延迟,从表取回的信息通常还放置在特殊缓冲区(即转换后备缓冲器)中,并且可以使用转换后备缓冲器中记录的信息执行涉及相同表项的后续转换。转换后备缓冲器还可以记录与实空间指定相关的虚等于实转换。
在地址转换过程中,每当为了从区表、段表或页表取回表项而对实存储装置或绝对存储装置进行访问时,将不应用键控保护。
在ASCE指定的表中查找
有效ASCE的DT控制(位60-61)指定ASCE的表指定类型以及要借助指定的表转换的虚拟地址部分两者,如下所示:
Figure BPA00001178541600371
借助指定表的转换
当位60和61具有二进制值11时,使用虚拟地址的区第一索引部分以及ASCE中包含的区第一表起始地址从区第一表中选择表项。通过向区第一表指定的位0-51的右侧附加12个0,并添加最右侧附加3个0而最左侧附加50个0的区第一索引,获得实存储装置或绝对存储装置中的区第一表表项的64位地址。作为区第一表查找过程的一部分,将虚拟地址的位0和1(它们是区第一索引的位0和1)与区第一表指定的表长度(位62和63)进行比较,以确定寻址的表项是否在区第一表内。如果表长度字段中的值小于虚拟地址的对应位位置中的值,将识别到区第一转换异常。如果在转换中使用转换后备缓冲器中的区第一表表项的等价表项,则可以省略与表长度进行的比较。从区第一表取回的表项指定对应区第二表的开头以及指定其偏移和长度。
当ASCE的位60和61具有二进制值10时,使用虚拟地址的区第二索引部分以及ASCE中包含的区第二表起始地址从区第二表中选择表项。将虚拟地址的位11和12(它们是区第二索引的位0和1)与ASCE中的表长度进行比较。如果表长度字段中的值小于虚拟地址的对应位位置中的值,将识别到区第二转换异常。如果在转换中使用转换后备缓冲器中的区第二表表项的等价表项,则可以省略与表长度进行的比较。否则,区第二表查找过程与区第一表查找过程相同;从区第二表取回的表项指定对应的区第三表的开头并指定其偏移和长度。
当ASCE的位60和61具有二进制值01时,使用虚拟地址的区第三索引部分以及ASCE中包含的区第三表起始地址从区第三表中选择表项。将虚拟地址的位22和23(它们是区第三索引的位0和1)与ASCE中的表长度进行比较。如果表长度字段中的值小于虚拟地址的对应位位置中的值,将识别到区第三转换异常。否则,区第三表查找过程与区第一表查找过程相同,包括检查区第三表表项中的表类型位。从区第三表取回的表项指定对应的段表的开头并指定其偏移和长度。
当ASCE的位60和61具有二进制值00时,使用虚拟地址的段索引部分以及ASCE中包含的段表起始地址从段表中选择表项。将虚拟地址的位33和34(它们是段索引的位0和1)与ASCE中的表长度进行比较。如果表长度字段中的值小于虚拟地址的对应位位置中的值,将识别到段转换异常。如果在转换中使用转换后备缓冲器中的段表表项的等价表项,则可以省略与表长度进行的比较。否则,段表查找过程与区第一表查找过程相同,包括检查段表表项中的表类型位。处理如下所示:
当不应用增强的DAT,或者应用增强的DAT但STE格式控制为0时,从段表取回的表项指定对应页表的开头,并且按照下面“页表查找”中所述继续处理。
当应用增强的DAT并且STE格式控制为1时,从段表取回的表项包含段帧绝对地址的最左侧位。如果在转换中使用的任何区表表项中或在段表表项中DAT保护位均为1,并且针对其执行转换的存储引用为存储,将识别到保护异常。
在由区表表项指定的表中查找
当有效ASCE是区表指定时,按照上一部分中所述选择区表表项。然后,使用所选表项的内容以及虚拟地址的下一索引部分在下一低级表中选择表项,此下一低级表可以是另一区表或段表。当借助ASCE选择的表表项是区第一表表项时,使用虚拟地址的区第二索引部分以及区第一表表项中包含的区第二表起始地址从区第二表中选择表项。通过向区第一表表项的位0-51的右侧附加12个0,并添加最右侧附加3个0而最左侧附加50个0的区第二索引,获得实存储装置或绝对存储装置中的区第二表表项的64位地址。
当形成区第二表表项、区第三表表项或段表表项的地址时,无法预测是在添加表索引值之前向较高级别表表项中包含的相应表起始地址添加前缀(如果有),还是向通过添加表起始地址和表索引值形成的表表项地址添加前缀。
作为区第二表查找过程的一部分,将虚拟地址的位11和12(它们是区第二索引的位0和1)与区第一表表项的表偏移(位56和57)进行比较,并与区第一表表项的表长度(位62和63)进行比较,以确定寻址的表项是否在区第二表内。如果表偏移字段中的值大于虚拟地址的对应位位置中的值,或者如果表长度字段中的值小于虚拟地址的对应位位置中的值,将识别到区第二转换异常。
区第二表指定对应的区第三表的开头并指定其偏移和长度。
当借助ASCE选择的表表项是区第二表表项时,或者如果已借助区第一表表项的内容选择区第二表表项,则使用虚拟地址的区第三索引部分以及区第二表表项中包含的区第三表起始地址从区第三表中选择表项。将虚拟地址的位22和23(它们是区第三索引的位0和1)与区第二表表项中的表偏移和表长度进行比较。如果表偏移大于位22和23,或者如果表长度小于位22和23,将识别到区第三转换异常。否则,区第三表查找过程与区第二表查找过程相同。从区第三表取回的表项指定对应的段表的开头并指定其偏移和长度。
当借助ASCE选择的表表项是区第三表表项时,或者如果已借助区第二表表项的内容选择区第三表表项,则使用虚拟地址的段索引部分以及区第三表表项中包含的段表起始地址从段表中选择表项。将虚拟地址的位33和34(它们是段索引的位0和1)与区第三表表项中的表偏移和表长度进行比较。如果表偏移大于位33和34,或者如果表长度小于位33和34,将识别到段转换异常。如果(1)ASCE中的专用空间控制(位55)为1以及(2)从段表取回的表项中的公共段位(位59)为1,将识别到转换规范异常。否则,段表查找过程与区第二表查找过程相同。处理如下所示:
当不应用增强的DAT,或者应用增强的DAT但STE格式控制为0时,从段表取回的表项指定对应页表的开头,并且按照下面“页表查找”中所述继续处理。
当应用增强的DAT并且STE格式控制为1时,从段表取回的表项包含段帧绝对地址的最左侧位。如果在转换中使用的任何区表表项中或在段表表项中DAT保护位均为1,并且针对其执行转换的存储引用为存储,将识别到保护异常。
页表查找
当不应用增强的DAT,或者应用增强的DAT但STE格式控制为0时,使用虚拟地址的页索引部分以及段表表项中包含的页表起始地址从页表中选择表项。
通过向页表起始地址的右侧附加11个0,并添加最右侧附加3个0而最左侧附加53个0的页索引,获得实存储装置或绝对存储装置中的页表表项的64位地址。不会发生位位置0的进位输出。
从页表取回的表项指示页的可用性,并且包含页帧实地址的最左侧位。将检查页无效位(位53)以确定对应页是否可用。如果此位为1,将识别到页转换异常。如果位位置52包含1,将识别到转换规范异常。当不应用增强的DAT,或者应用增强的DAT并且STE格式控制为0时,如果位位置55包含1,也将识别到转换规范异常。如果在转换中使用的段表表项中、在页表表项中DAT保护位为1,或者当在转换过程中使用的任何区表表项中应用增强的DAT,并且针对其执行转换的存储引用为存储时,将识别到保护异常。
实地址和绝对地址的形成
当有效ASCE是实空间指定时,直接将虚拟地址的位0-63用作实存储装置地址。可以进一步向实地址添加前缀以形成绝对地址。当有效ASCE不是实空间指定并且在转换过程中未遇到异常时,适用以下情况:
当不应用增强的DAT,或者应用增强的DAT但STE格式控制为0时,从页表表项获取页帧实地址。将页帧实地址和虚拟地址的字节索引部分连接,并且页帧实地址形成最左侧部分。结果是与虚拟地址对应的实存储装置地址。可以进一步向实地址添加前缀以形成绝对地址。
当应用增强的DAT并且STE格式控制为1时,从左到右分别将段帧绝对地址以及虚拟地址的页索引和字节索引部分连接,以形成与虚拟地址对应的绝对地址。
转换过程中的异常识别
无效地址和无效格式可导致在转换过程中识别到异常。当表表项中包含的信息用于转换并且被发现不正确时,将识别到异常。
现在参考图6,其示出了到从段表表项获取格式控制字段时的动态地址转换的一个实施例的流程图。
在602,获取要转换的虚拟地址。在604,获取在虚拟地址转换中使用的最高转换表的起始地址。在转换中使用的第一转换表的起始地址取决于ASCE和DT位。在606,使用虚拟地址的一部分引用转换表中的适当表表项。在608,如果从转换表取回的表项不是段表表项,则尚未引用转换表层次结构中的段表。在这种情况下,在610,从所述表表项获取转换表层次结构中的下一低级表的起始地址。使用虚拟地址的适当部分引用在转换中使用的下一低级表中的对应表表项。
例如,如果要在转换中使用的第一转换表的表起始地址是区第一表,则使用虚拟地址的RFX部分引用区第一表内的区第一表表项。如果表起始地址是区第二表,则使用虚拟地址的RSX部分引用区第二表内的区第二表表项。如果表起始地址是区第三表,则使用虚拟地址的RTX部分引用区第三表内的区第三表表项。如果表起始地址是段表,则使用虚拟地址的SX部分引用段表内的段表表项。将一直引用连续的表,直到取回段表表项为止。
一旦已取回段表表项,在612,检查段表表项(STE)格式控制位以判定是否针对此特定虚拟地址启用了格式控制。如果STE格式控制为0,则根据节点614发生动态地址转换。如果STE格式控制为1,则根据节点616发生动态地址转换。
动态地址转换(STE格式控制为0)
现在参考图7,其示出了当STE格式控制为0时从图6的节点614继续的流程图。
在710,从段表表项获取页表的起始地址。在712,使用虚拟地址的PX部分引用页表中的页表表项。在714,从页表表项获取页帧实地址(PFRA)。从页表表项获取无效(I)位。在716,如果无效(I)位为1,则在718无法使用此页表表项继续虚拟地址转换,因为此表项已被标记为无效。使用此页表表项的进一步虚拟地址转换将停止(722)。在716,如果无效(I)位为0,则在720将页帧实地址(PFRA)与虚拟地址的BX部分组合以生成实地址。可以进一步对实地址执行添加前缀操作以形成绝对地址。在724,使用实地址访问由转换后的虚拟地址寻址的数据块。
动态地址转换(STE格式控制为1)
现在参考图8,其示出了从图6的节点616继续的流程图。
在810,从段表表项的一部分获取段帧绝对地址(SFAA)。从段表表项获取无效(I)位。在812,如果无效(I)位为1,则在814,无法使用此段表表项进行进一步虚拟地址转换,因为此表项已被标记为无效。在一个实施例中,向请求转换的程序实体返回异常代码。使用此段表表项的此虚拟地址的进一步转换将停止(818)。
在812,如果无效(I)位为0,则在816,将段帧绝对地址(SFAA)与虚拟地址的PX和BX部分组合以生成指向主存储装置中或存储器中的所需大数据块的绝对地址。在820,访问由转换后的虚拟地址寻址的所需大数据块。
在每个表表项处,检查无效位以确定所获取的表表项的有效性。在此将进一步讨论保护通过转换后的虚拟地址寻址的数据块的其他转换保护机制。
在另一实施例中,从转换表表项获取限制信息。所述限制信息用于将访问限于虚拟地址范围的限定部分。此后,仅对于地址范围的限定部分才允许访问由转换后的地址寻址的所需大数据块。所述限制信息是表偏移或表长度中的任意一个。
在另一实施例中,在虚拟地址转换中使用的信息被存储在至少一个转换后备缓冲器中。使用转换后备缓冲器中存储的信息而不是转换表层次结构来执行后续虚拟地址到主存储装置中数据块的绝对地址的后续转换。
在另一实施例中,如果转换不是机器体系结构所固有的,则标识预定软件例程以仿真转换。所述预定软件例程包含多个指令。将执行所述预定软件例程。
寻址后的数据块的保护
如此处所述,使用增强的DAT工具转换虚拟地址之后,可以对由转换后的虚拟地址寻址的主存储装置或存储器中的所需数据块执行其他保护机制。
DAT保护
DAT保护功能通过使用每个页表表项和段表表项以及(当安装了增强的DAT工具时)每个区表表项中的DAT保护位来控制对虚拟存储装置的访问。它可防止不正确的存储。
页表表项的DAT保护位(位54)控制是否允许存储到对应的4KB页。当此位为0时,允许取回和存储两者;当此位为1时,仅允许取回。当尝试存储到被保护页时,此页的内容保持不变,将取消操作单元或指令执行,并发生程序保护中断。
段表表项的DAT保护位(位54)控制是否允许存储到对应的1MB段,如下所示:
当不应用增强的DAT,或者应用增强的DAT并且STE格式控制为0时,段表表项的DAT保护位被视为与由段表表项指定的页表中每个表项的DAT保护位位置进行“或”。因此,当段表表项DAT保护位为1时,效果就像DAT保护位在指定页表中的每个表项内都为1那样。
当应用增强的DAT并且STE格式控制为1时,段表表项的DAT保护位控制是否允许存储到对应的1MB段。当此位为0时,允许取回和存储两者;当此位为1时,仅允许取回。当尝试存储到被保护段时,此段的内容保持不变,将取消操作单元或指令执行,并发生程序保护中断。
当应用增强的DAT时,区表表项的DAT保护位控制是否允许存储到对应的区(多个)。区表表项中的DAT保护位被视为与在转换中使用的任何后续区表表项和段表表项的DAT保护位位置进行“或”。当STE格式控制位为0时,DAT保护位进一步传播到页表表项。
DAT保护应用到使用虚拟地址的所有存储型引用。
键控保护
当键控保护应用到存储访问时,仅当存储键与存储访问请求所关联的访问键匹配时,才允许存储;当键匹配或者当存储键的取回保护位为0时,允许取回。当存储键的四个访问控制位与访问键相同或者当访问键为0时,则键被称为匹配。下表概述了保护操作。
Figure BPA00001178541600451
保护操作概述
当CPU启动对存储装置的访问并且应用键控保护时,PSW键是访问键,但对于MOVE TO SECONDARY和MOVE WITH DESTINATIONKEY的第一操作数,对于MOVE TO PRIMARY、MOVE WITH KEY和MOVE WITH SOURCE KEY的第二操作数以及对于MOVE PAGE的第一或第二操作数,访问键在通用寄存器中指定。PSW键占用当前程序状态字的位位置8-11。
当由于键控保护而禁止CPU访问时,指令执行被终止,并发生程序保护异常中断。但是,可以取消操作单元或指令执行。
存储键
存储键与配置中可用的存储装置的每个4KB块关联。存储键不是可寻址的存储装置的一部分。在一个实施例中,存储键具有以下格式:
存储键格式
存储键中的位位置按如下方式进行分配:
访问控制位(ACC):如果引用受到键控保护,则当存储信息以及从具有取回保护的位置取回信息时,需要将四个访问控制位与四位访问键进行匹配。
取回保护位(F):如果引用受到键控保护,则取回保护位控制是否将键控保护应用到取回型引用:0指示仅监视存储型引用并允许具有任何访问键的取回;1指示键控保护同时应用到取回和存储。
引用位(R):引用位通常在每次引用对应存储块中的位置以存储或取回信息时被设为1。
更改位(C):更改位在每次将信息存储到对应存储块中的位置时被设为1。
当应用增强的DAT时,以下附加条件生效:
当STE格式控制(FC,在转换中使用的段表表项的位53)为0时,在转换中使用的页表表项的位55是页的更改记录忽略(CO)。当页表表项中的CO位为1时,无法针对到页的任何存储操作预测更改记录。
当段表表项中的格式控制位(FC)为1时,应用以下内容:
段表表项的位位置47包含ACCF有效性控制。ACCF有效性控制确定STE中的访问控制位和取回保护位的有效性。当ACCF有效性控制为0时,键控保护针对与地址对应的4K字节块使用存储键中的访问控制位和取回保护位。
当ACCF有效性控制为1时,段表表项的位位置48-52包含段的访问控制位和取回保护位。在确定对存储操作数的可访问性时,对于组成段的4K字节块,无法预测是检查STE的位48-52,还是检查单个存储键的位0-4。
段表表项的位55是段的更改记录忽略(CO)。当段表表项中的CO位为1时,无法预测是否针对到段的任何存储操作设置更改位。
存储键访问
对存储键的引用的处理方式如下:
每当引用存储装置并且对所述引用应用键控保护时,四个访问控制位和与存储位置关联的取回保护位被同时检查并该检查与引用所述存储位置同时。当(1)不应用增强的DAT,(2)应用增强的DAT但借助其中STE格式控制为0的段表表项访问存储装置,或(3)应用增强的DAT,借助其中STE格式控制为1的段表表项访问存储装置,但ACCF有效性控制为0,则对于4K字节块,访问控制位和取回保护位位于存储键的位0-4中。当应用增强的DAT并且借助其中STE格式控制和ACCF有效性控制均为1的段表表项访问存储装置时,无法预测是存储键的位0-4还是段表表项的位48-52提供访问控制位和取回保护位。此外,当段表表项提供访问控制位和取回保护位时,可以使用来自转换后备缓冲器的缓冲的副本。
当应用增强的DAT,并且(a)在由DAT使用的页表表项中,STE格式控制为0而更改记录忽略为1或(b)在由DAT使用的段表表项中,STE格式控制为1而更改记录忽略为1时,无法预测在执行存储操作时,CPU是否设置更改位。更改记录忽略可缓冲在PTE或STE的转换后备缓冲器副本中。
当未安装条件型SSKE特性时,SET STORAGE KEY EXTENDED指令导致在存储键中同时设置所有7个位。当安装了条件型SSKE特性时,SET STORAGE KEY EXTENDED指令可用于根据程序指定的准则设置全部或部分存储键。
INSERT STORAGE KEY EXTENDED指令针对4K字节块提供存储键的位0-6的一致映像。类似地,指令INSERT VIRTUAL STORAGE KEY和TEST PROTECTION提供访问控制位和取回保护位的一致映像。
指令RESET REFERENCE BIT EXTENDED仅修改引用位。存储键的所有其他位保持不变。同时检查引用位和更改位以设置条件代码。
由引用位提供的引用记录不一定准确。但是,在大多数情况下,引用记录大致与相关的存储引用一致。可以在未发生存储时设置更改位。
如其他CPU所观察到的,由显式操纵存储键的指令(INSERTSTORAGE KEY EXTENDED、INSERT VIRTUAL STORAGE KEY、RESET REFERENCE BIT EXTENDED以及SET STORAGE KEYEXTENDED)执行的存储键取回和存储在它们本身之间以及在存储操作数引用之间被排序,就像存储键访问本身分别是存储操作数取回和存储那样。
SET STORAGE KEY EXTENDED(SSKE)
可以借助SET STORAGE KEY EXTENDED(SSKE)指令设置存储键。在一个实施例中,SSKE指令具有以下格式:
SSKE  R1,R2[,M2]    [RRF]
Figure BPA00001178541600491
SSKE指令的格式
由第一操作数寄存器中的值替换一个或多个4K字节块的存储键。当安装了条件型SSKE工具时,可以绕过键设置操作的特定功能。当未安装条件型SSKE工具,或者已安装条件型SSKE工具并且M3字段的MR和MC位均为0时,由来自通用寄存器R1的位替换通过通用寄存器R2的内容寻址的4K字节块的存储键。指令在不更改条件代码的情况下完成。
当安装了条件型SSKE工具并且MR位和MC位为1时,将由通用寄存器R2的内容寻址的存储键的访问控制位、取回保护位以及可选地引用位和更改位与通用寄存器R1中的对应位进行比较。如果所比较的位相同,则不对键进行更改;否则,由通用寄存器R1中的对应位替换键的选定位。将任何修改之前的存储键插入通用寄存器R1,并且由条件代码指示结果。
当安装了增强的DAT工具时,可以在多块控制(如下所述)的控制下,针对同一1MB块内的多个4K字节块的存储键重复上述操作。在一个实施例中,M3字段具有以下格式:
Figure BPA00001178541600492
M3字段的格式
M3字段的位定义如下:
保留:位0被保留。
引用位更新掩码(MR):MR位(M3字段的位1)控制是否可以绕过对存储键中引用位的更新,如下所述。
更改位更新掩码(MC):MC位(M3字段的位2)控制是否可以绕过对存储键中更改位的更新,如下所述。
多块控制(MB):MB位(M3字段的位3)控制是否可以设置存储装置的多个4K字节块的存储键,如“在多个4K字节块中设置存储键”中所述。
当未安装增强的DAT工具时,M3字段的位位置3被保留。当安装了条件型SSKE工具时,按以下方式处理:
当MR位和MC位(M3字段的位1和2)均为0时,指令如同未安装条件型SSKE工具那样完成。由来自通用寄存器R1的位替换通过通用寄存器R2的内容寻址的4K字节块的存储键,并且指令在不更改条件代码的情况下完成。
当MR位和MC位为1时,按以下方式处理:
在任何修改之前,将通过通用寄存器R2寻址的4K字节块的存储键的内容放置在通用寄存器R1的位位置48-54中,并且将通用寄存器R1的位55设为0。寄存器的位0-47和56-63保持不变。如果当取回存储键时检测到无效的检查块代码(CBC),则(a)由通用寄存器R1的位56-62替换4K字节块的整个存储键,(b)无法预测通用寄存器R1的位位置48-55的内容,以及(c)指令通过设置条件代码3完成。
将指定的4K字节块的存储键的访问控制位和取回保护位与通用寄存器R1的位56-60中的对应字段进行比较。如果相应字段不同,则由来自通用寄存器R1的位替换4K字节块的整个存储键,并且指令通过设置条件代码1完成。当存储键中的访问控制位和取回保护位与通用寄存器R1中的相应位相同时,将按以下方式继续处理。
当MR位和MC位均为1时,指令通过设置条件代码0完成。在这种情况下存储键保持不变。
当MR位为0并且MC位为1时,将指定的4K字节块的存储键的引用位与通用寄存器R1的位61进行比较。如果位相同,则指令通过设置条件代码0完成。在这种情况下存储键保持不变。如果位不同,则(a)由通用寄存器R1中的位替换指定的4K字节块的整个存储键,并且指令通过设置条件代码1完成;或(b)由通用寄存器R1的位61替换存储键的引用位,键的更改位无法预测,并且指令通过设置条件代码2完成。无法预测是设置条件代码1还是2。
当MC位为0并且MR位为1时,将指定的4K字节块的存储键的更改位与通用寄存器R1的位62进行比较。如果位相同,则指令通过设置条件代码0完成。在这种情况下存储键保持不变。如果位不同,则(a)由通用寄存器R1中的位替换指定的4K字节块的整个存储键,并且指令通过设置条件代码1完成;或(b)由通用寄存器R1的位62替换存储键的更改位,键的引用位无法预测,并且指令通过设置条件代码2完成。无法预测是设置条件代码1还是2。
当未安装增强的DAT工具,或者已安装此工具但多块控制为0时,通用寄存器R2包含实地址。当安装增强的DAT工具并且多块控制为1时,通用寄存器R2包含绝对地址。在24位寻址模式下,通用寄存器R2的位40-51指定实存储装置或绝对存储装置中的4K字节块,并且忽略寄存器的位0-39和52-63。在31位寻址模式下,通用寄存器R2的位33-51指定实存储装置或绝对存储装置中的4K字节块,并且忽略寄存器的位0-32和52-63。在64位寻址模式下,通用寄存器R2的位0-51指定实存储装置或绝对存储装置中的4K字节块,并且忽略寄存器的位52-63。由于是实地址或绝对地址,因此指定存储块的地址不进行动态地址转换。对存储键的引用不会出现保护异常。
从通用寄存器R1的位位置56-62获取新的7位存储键值或其选定位。忽略寄存器的位位置0-55和63的内容。当安装了条件型SSKE工具并且MR位和MC位均为1时,位位置63应包含0;否则,将来程序可能无法兼容运行。
在操作开始之前执行串行化和检查点同步功能并且在操作完成之后再次执行此功能,只是当安装了条件型SSKE工具并且结果条件代码为0时,无法预测是否在操作完成之后执行串行化和检查点同步功能。对于在此指令设置键之前或之后由任何CPU或通道程序完成的对指定4K字节块的任何存储访问,也分别在此指令的执行之前或之后,完成此块的存储键中的引用位和更改位到1的关联设置。
在多个4K字节块中设置存储键
当未安装增强型DAT工具,或者已安装此工具但多块控制为0时,设置单个4K字节块的存储键,如上所述。当已安装增强型DAT工具并且多块控制为1时,可以设置1MB块内的多个4K字节块的存储键,从由第二操作数地址指定的块开始,并向右继续到每个连续的块,直到下一1MB的界限。在这种情况下,SET STORAGE KEY EXTENDED可中断,并且按以下方式处理:
当发生中断(不同于终止之后的中断)时,通用寄存器R2已被更新,因此指令在重新执行时将在中断点继续。如果MR位和/或MC位为1,则条件代码无法预测;否则,条件代码不变。
当指令在不中断的情况下完成时,通用寄存器R2已被更新到下一1MB的界限。如果MR位和/或MC位为1,则设置条件代码3;否则,条件代码不变。
对于上述两种情况之一,当MR位和/或MC位为1时,通用寄存器R1的位48-55无法预测。
当发生多块处理并且R1字段和R2字段指定同一寄存器时,将第二操作数地址放在此寄存器中。当在24位或31位寻址模式下发生多块处理时,将通用寄存器R2的位位置32-63中不是地址一部分的最左边的位设为0;寄存器的位0-31不变。
结果条件代码:
当未安装条件型SSKE工具,或者M3字段的MR位和MC位均为0时,条件代码保持不变。当安装了条件型SSKE工具并且MR位和/或MC位为1时,条件代码设置如下:
0-未设置存储键
1-设置整个存储键
2-设置部分存储键
3-设置整个存储键;通用寄存器R1的位48-55无法预测。
程序异常:
寻址(由通用寄存器R2指定的地址)
特权操作
更改记录
更改记录提供有关在主存储装置中替换页时必须将哪些页保存到辅助存储装置中的信息。更改记录使用存储键的更改位(位6)。每当存储访问导致对应存储块的内容被更改,以及(a)不应用增强的DAT或(b)应用增强的DAT并且满足以下两种条件之一时,将更改位设为1:
DAT所使用的段表表项中的STE格式控制为0,并且DAT所使用的页表表项中的更改记录忽略(CO)为0。
DAT所使用的段表表项中的STE格式控制为1,并且DAT所使用的段表表项中的更改记录忽略(CO)为0。
不更改存储装置内容的存储访问可以将更改位设为1,也可以不设为1。如果禁止访问,则对于进行的存储尝试,不将更改位设为1。具体而言:
对于CPU,每当存储访问存在访问异常,或者每当存在优先级高于存储访问的访问异常优先级的异常时,将禁止存储访问。
对于通道子系统,每当存储访问存在键控保护违反时,将禁止存储访问。
更改记录始终处于活动状态并且针对所有对存储装置的存储访问发生,包括由任何CPU(当由在此所述的更改记录忽略取消时除外)、任何操作者工具或通道子系统执行的存储访问。它针对机器所进行的隐式引用(例如作为中断一部分的那些引用)发生。
对于以下指令的操作数不发生更改记录,因为这些指令直接修改存储键而不修改存储位置:
RESET REFERENCE BIT EXTENDED
SET STORAGE KEY EXTENDED(更改位设为指定值)。
当CPU重试时,不必将已从0更改为1的更改位恢复为0。
更改记录忽略(CO)
每当存储访问导致对应存储块的内容更改时,存储键的更改位被设为1。不更改存储装置内容的存储访问可以将更改位设为1,也可以不设为1。如果禁止访问,则对于进行的存储尝试,不将更改位设为1。更改记录忽略允许绕过存储键的更改位的设置。
当应用增强的DAT并且通过DAT表表项转换虚拟地址时,在段表表项和页表表项两者的位55中提供更改记录忽略(CO)。当段表表项的STE格式控制(FC)位53为0时,应用页表表项中的更改记录忽略。当PTE中的更改记录忽略为0时,针对到4K字节块的存储操作发生更改记录。当更改记录忽略为1时,无法预测是否针对到4K字节块的存储操作发生更改记录。当STE格式控制为1时,应用STE中的更改记录忽略。当STE中的更改记录忽略为0时,针对到段的256个4K字节块中任何一个的存储操作发生更改记录。当STE中的更改记录忽略为1时,无法预测是否针对段的256个4K字节块中的任何一个发生更改记录。
更改记录忽略不应用到实地址或绝对地址,也不应用到通过实空间指定转换的虚拟地址。
执行帧管理功能(PFMF)
Figure BPA00001178541600541
PFMF指令的格式
在第一操作数寄存器的控制下,针对由第二操作数地址指定的存储帧执行帧管理功能。通用寄存器R1的内容如下所示:
帧管理功能指示:
通用寄存器R1的位位置44-47包含帧管理功能指示(FMFI),如下所示:
设置键控制(SK):位46控制是否从通用寄存器R1的位56-62设置帧中每个4K字节块的存储键。当SK控制为0时,不设置键;当SK控制为1时,设置键。
清除帧控制(CF):位47控制是否将帧设为0。当CF控制为0时,不执行清除操作。当CF控制为1时,将帧清零。
使用指示(UI):通用寄存器R1的位位置48包含使用指示(UI)。当位48为0时,它指示程序不预计帧的最近使用。当位48为1时,它指示程序预计帧的近期使用。
帧大小代码(FSC):通用寄存器R1的位49-51包含帧大小代码(FSC),如下所示:
帧大小代码的含义
引用位更新掩码(MR):当通用寄存器R1的设置键控制(位46)为1时,通用寄存器R1的位53控制是否可以绕过对存储键中引用位的更新,如下所述。
更改位更新掩码(MC):当通用寄存器R1的设置键控制(位46)为1时,通用寄存器R1的位54控制是否可以绕过对存储键中更改位的更新。
对MR位和MC位的处理与对SET STORAGE KEY EXTENDED指令的M3字段的对应位的处理相同,只是不使用先前键的内容更新通用寄存器R1,并且条件代码不变。
键:当通用寄存器R1的设置键控制(位46)为1时,寄存器的位56-62包含要针对帧中每个4K字节块设置的存储键,包括分别位于位位置56-59、60、61以及62中的访问保护位、取回保护位、引用位以及更改位。
通用寄存器R2包含要在其上执行帧管理功能的存储帧的实地址或绝对地址。当帧大小代码指定4K字节块时,第二操作数地址是实地址;当帧大小代码指定1M字节块时,第二操作数地址是绝对地址。对通用寄存器R2中地址的处理取决于寻址模式。在24位寻址模式下,寄存器的位位置40-51的内容以及最右侧附加的12个0是地址,并且忽略寄存器中的位0-39和52-63。在31位寻址模式下,寄存器的位位置33-51的内容以及最右侧附加的12个0是地址,并且忽略寄存器中的位0-32和52-63。在64位寻址模式下,寄存器的位位置0-51的内容以及最右侧附加的12个0是地址,并且忽略寄存器中的位52-63。
下面示出了刚描述的寄存器的内容。
Figure BPA00001178541600561
执行帧管理功能的寄存器内容
当帧大小代码为0时,针对由第二操作数指定的4K字节帧执行指定的帧管理功能。在这种情况下不修改通用寄存器R2。
当帧大小代码为1时,针对1M字节帧内一个或多个4K字节块执行指定的帧管理功能,从由第二操作数地址指定的块开始,并向右继续到每个连续的块,直到下一1M字节边界。
在这种情况下,可中断执行帧管理功能,并且按以下方式处理:
当发生中断(不同于终止之后的中断)时,通用寄存器R2中的第二操作数地址由已处理的4K字节块的数量更新,因此指令在重新执行时将在中断点继续。
当指令在不中断的情况下完成时,通用寄存器R2中的第二操作数地址被更新为下一1M字节边界。
在24位或31位寻址模式下,当帧大小代码为1时,将通用寄存器R2的位位置32-63中不是地址一部分的最左侧位设为0;寄存器的位0-31不变。
当清除帧控制为1时,第二操作数内的对主存储装置的引用不一定是单个访问引用,并且不一定如其他CPU和通道程序所观察的那样按从左到右的方向执行。不对清除操作应用键控保护。
当存储键控制为1时,针对每个4K字节块的操作类似于针对SSKE所述的操作,只是当设置多个块的键时,条件代码以及通用寄存器R1的内容不变。在操作开始之前以及操作完成之后,执行串行化和检查点同步功能,只是当要设置的所有存储键的7个位与通用寄存器R1的位56-62相同,或者当MR位和MC位允许所有存储键保持不变时,无法预测是否在操作完成之后执行串行化和检查点同步操作。当相应控制均为1时,无法预测先执行清除帧操作还是设置键操作。假设其他CPU或通道子系统没有对存储装置执行其他访问,则当MR和MC均为0时,指令的最终结果反映包括指定R值和C值的指定键值。
特殊条件
对于以下任一条件,将识别到规范异常并取消操作:
通用寄存器R1的位32-45、52、55或63不为0。
帧大小代码指定保留值。
条件代码:代码保持不变。
执行帧管理功能(PFMF)-存储键
现在参考图9,其示出了其中根据指令设置关联的存储键的执行帧管理功能的流程图的一个实施例。
在910,获取针对机器体系结构定义的机器指令。所述机器指令包含帧管理指令的操作码。所述机器指令具有标识第一通用寄存器的第一字段和标识第二通用寄存器的第二字段。在912,从第二通用寄存器获取主存储装置或存储器中大数据块内的初始第一数据块的地址。在914,从第一通用寄存器获取帧管理信息。所述帧管理信息具有包含第一组访问保护位的键字段。对于大数据块,从第二通用寄存器获取大数据块的初始第一数据块的第二操作数地址。大数据块具有多个小数据块。每个小数据块具有包含存储访问保护位的对应存储键。在916,对于大数据块,将键字段的访问保护位设为与大数据块关联的每个键的存储访问保护位。对于小数据块,从第二通用寄存器获取初始第一小数据块的操作数地址。每个数据块具有对应的存储键。所述存储键具有存储访问保护位。将访问保护位设为小数据块的存储键的存储访问保护位。
执行帧管理功能(PFMF)-清除帧
现在参考图10,其示出了其中清除所指示的帧的执行帧管理功能的一个实施例的流程图。
在1010,获取针对机器体系结构定义的机器指令。所述机器指令包含帧管理指令的操作码。所述机器指令具有标识第一通用寄存器的第一字段和标识第二通用寄存器的第二字段。在1012,从第一通用寄存器获取具有帧大小字段的清除帧信息。在1014,判定帧大小字段所指示的存储帧是存储器中小数据块的存储帧还是存储器中大数据块的存储帧。在1016,从第二通用寄存器获取要在其上执行所述机器指令的存储帧的第二操作数地址。第二操作数地址是存储器中小数据块的实地址或存储器中大数据块的绝对地址。在1018,如果所指示的存储帧是小数据块,则通过将小数据块的所有字节设为0来清除小数据块。如果所指示的存储帧是大数据块,则从第二通用寄存器获取大数据块的初始第一数据块的操作数地址。大数据块具有第一多个小数据块。在1020,从初始第一数据块开始,通过将所有数据字节设为0来清除每个小数据块。
在帧管理功能的另一实施例中,从所述机器指令的字段或第一通用寄存器的字段获取块大小指示。根据块大小指示,判定所寻址的操作数是大数据块的操作数还是小数据块的操作数。操作数地址是大数据块的绝对地址或小数据块的实地址。向实地址添加前缀以确定绝对地址。对于大数据块,将下一数据块的地址保存到第二通用寄存器中。下一数据块是在第一数据块之后的数据块。通过遇到大数据块的边界或响应于程序中断事件而确定下一数据块的地址。
在帧管理功能的再一实施例中,帧管理字段具有引用控制字段和更改控制字段。键字段具有取回-保护位、更改位和引用位。存储键具有存储取回-保护位、存储引用位和存储更改位。如果未启用引用控制字段和更改控制字段,则将键字段的取回-保护位、引用位和更改位设为关联存储键的对应存储取回-保护位、存储引用位和存储更改位。如果已启用引用控制字段或更改控制字段,并且键字段的访问-保护位与存储键的存储访问-保护位不同或者保护位与存储保护位不同,则将键字段的取回-保护位、引用位和更改位设为每个关联存储装置的对应存储取回-保护位、存储引用位和存储更改位。
在另一实施例中,如果所述机器指令不是处理器的机器指令体系结构所固有的,则解释所述机器指令以标识预定软件例程以便仿真所述机器指令的操作。所述预定软件例程包含多个指令。将执行所述预定软件例程。
商业实现
尽管此处提及了
Figure BPA00001178541600601
Figure BPA00001178541600602
但是本发明的一个或多个方面可同样适用于其他采用可分页实体或类似结构的机器体系结构和/或计算环境。
此处披露的eDAT工具以及其他格式、指令和属性的商业实现可以通过硬件实现,也可以由例如使用汇编语言的编程人员(如操作系统编程人员)实现。此类编程指令可存储在旨在在诸如
Figure BPA00001178541600603
System z server之类的计算环境中本机地执行,或备选地在执行其他体系结构的机器中本机地执行的存储介质中。所述指令可以在现有和未来的
Figure BPA00001178541600604
服务器中以及在其他机器或主机上进行仿真。它们可以在其中总体执行处于仿真模式的机器中执行。
本发明的一个或多个方面可同样适用于例如虚拟机仿真,其中一个或多个可分页实体(例如客户机)在一个或多个处理器上执行。作为一个实例,可分页客户机由“Syetem/370 Extended Architecture(系统/370扩展体系结构,
Figure BPA00001178541600607
出版号:SA22-7095,1985,其全部内容在此引入作为参考)”中描述的Start Interpretive Execution(SIE)体系结构定义。
在仿真模式中,解码被仿真的特定指令,然后执行子例程以便如子例程或驱动程序中那样实现各个指令,或者使用其他某种技术提供特定硬件的驱动程序,本领域的技术人员在理解了此处的说明之后便可理解此技术。各种软件和硬件仿真技术在多个美国专利中进行了描述,这些专利包括:5,551,013、5,574,873、5,790,825、6,009,261、6,308,255和6,463,582,在此引入上述每个专利作为参考。许多其他教导进一步示出了各种仿真具有目标机器体系结构的指令集的方法。
其他变型和体系结构
此处所述的各种实施例仅作为示例。这些实施例具有多种不偏离本发明的精神的变型。可以通过软件、固件、硬件或它们的某种组合实现本发明的一种或多种功能。本发明的各方面对于许多类型的环境是有利的,其中包括具有多个区的其他环境以及非分区环境。进而,可以没有中央处理器复合体,但是仍存在多个耦合在一起的处理器。此处所述的各个方面可适用于单处理器环境。
尽管此处描述了特定环境,但再次地,可以在不偏离本发明的精神的情况下实现这些环境的多种变型。例如,如果对环境执行逻辑分区,则此环境中可包括更多或更少的逻辑分区。进而,可以存在多个耦合在一起的中央处理复合体。在不偏离本发明的精神的情况下只能做出某些变型。此外,其他变型是可能的。
尽管术语“页”用于指固定大小或预定大小的存储区域,但是页大小是可变的。类似地,块大小是可变的。可存在不同大小的块和/或页。页也可以等同于块。可以备选地使用其他结构或以其他方式在软件和/或硬件中实现其他结构。进而,在此处所述的示例中,存在许多变型,包括但不限于不同大小的字或地址;不同数量的位;不同顺序的位;更多、更少或不同的位;更多、更少或不同的字段;不同顺序的字段;不同大小的字段等。再次地,这些仅提供为示例。许多变型是可能的。
处理单元包括可分页实体,例如客户机、主机、其他处理器、仿真器、虚拟机和/或其他类似的结构。缓冲器包括存储装置和/或存储器区域,以及其他类型的数据结构,其中包括但不限于阵列或可分页实体。表也包括其他数据结构。指令可以引用其他寄存器。而且,页、段和/或区的大小可以不同于此处所述的大小。
本发明的一个或多个方面可以包括在具有例如计算机可用或机器可读介质的制品(例如,一个或多个计算机程序产品)中。所述介质中包含例如计算机可读程序代码装置或逻辑(例如,指令、代码、命令等)以提供或促进本发明的功能。所述制品可以包括为计算机系统的一部分或单独出售。此外,可提供可由机器读取的至少一个程序存储设备,所述程序存储设备包含至少一个可由所述机器执行以实现本发明的功能的指令程序。
此处描述的流程图是示例性的。所述的这些图形或步骤或操作可以具有多种不偏离本发明的精神的变型。例如,所述步骤可以按照其他顺序执行,也可以添加、删除或修改步骤。所有这些变型均被视为要求保护的发明的一部分。
尽管此处详细地描述和说明了本发明的实施例,但是对于本领域的技术人员显而易见的是,可以在不偏离本发明精神的情况下做出各种修改、添加、替换等,因此它们被视为在以下权利要求限定的发明范围之内。

Claims (11)

1.一种用于在处理器中执行帧管理功能的方法,所述处理器能够将虚拟地址转换成计算机系统内的主存储装置中的数据块的地址,所述计算机系统具有机器体系结构,所述机器体系结构包含用于转换所述虚拟地址的转换表层次结构,针对所述机器体系结构定义所述帧管理功能,所述方法包括:
获取包含设置存储键和清除指令的操作码的机器指令;以及
执行所述机器指令,所述执行包括以下操作:
获取具有包含多个访问-保护位的键字段,和包含块大小指示符字段的帧管理字段;
获取存储帧的操作数地址,所述操作数地址上要执行所述机器指令,所述操作数地址是大数据块地址和小数据块地址中的一个;
响应于启用设置存储键功能,将与所确定的数据块关联的每个所述存储键的存储访问-保护位设置为所述键字段的所述访问-保护位的值;以及
响应于启用清除功能,通过将由所述操作数地址寻址的每个数据块的所有字节设置为0来清除每个数据块。
2.如权利要求1中所述的方法,其中所述执行还包括:标识第一通用寄存器的第一字段和标识第二通用寄存器的第二字段;从所述第一通用寄存器获取所述具有包含多个访问-保护位的键字段和块大小指示符字段的帧管理字段;从所述第二通用寄存器获取要在其上执行机器指令的存储帧的操作数地址,其中所述操作数地址是大数据块的绝对地址和小数据块的实地址中的一个;以及向所述实地址添加前缀。
3.如权利要求2中所述的方法,其中所述存储键进一步包括存储保护位、存储引用位以及存储更改位,并且其中所述键字段进一步包括取回-保护位、引用位以及更改位,并且其中所述大数据块大于所述小数据块,对于所述小数据块,进一步包括:
从所述第二通用寄存器获取所述小数据块的操作数地址,所述小数据块具有包含多个存储访问-保护位的所述存储键。
4.如权利要求3中所述的方法,其中对于所述大数据块,所述方法进一步包括:
将下一数据块的地址保存在所述第二通用寄存器中,所述下一数据块是紧跟所述大数据块的数据块。
5.如权利要求1中所述的方法,其中所述帧管理字段进一步包括设置存储键指示符和清除存储指示符,所述方法进一步包括,如果启用所述设置存储键指示符,则启用所述设置存储键功能,如果未启用所述设置存储键指示符,则不启用所述设置存储键功能,如果启用所述清除存储指示符,则启用所述清除功能,以及如果未启用所述清除存储指示符,则不启用所述清除功能。
6.如权利要求1中所述的方法,其中所述机器指令不是所述处理器的机器指令体系结构所固有的,还包括:
解释所述机器指令以标识用于仿真所述机器指令的操作的预定软件例程,所述预定软件例程包括多个指令;以及
执行所述预定软件例程。
7.一种用于在处理器中执行帧管理功能的系统,所述处理器能够将虚拟地址转换成计算机系统内的主存储装置中的数据块的地址,所述计算机系统具有机器体系结构,所述机器体系结构包含用于转换所述虚拟地址的转换表层次结构,针对所述机器体系结构定义所述帧管理功能,所述系统包括:
获取包含设置存储键和清除指令的操作码的机器指令的装置;以及
执行所述机器指令的装置,所述执行所述机器指令的装置进一步包括:
获取具有包含多个访问-保护位的键字段,和包含块大小指示符字段的帧管理字段的装置;
获取存储帧的操作数地址的装置,所述操作数地址上要执行所述机器指令,所述操作数地址是大数据块地址和小数据块地址中的一个;
响应于启用设置存储键功能,将与所确定的数据块关联的每个所述存储键的存储访问-保护位设置为所述键字段的所述访问-保护位的值的装置;以及
响应于启用清除功能,通过将由所述操作数地址寻址的每个数据块的所有字节设置为0来清除每个数据块的装置。
8.如权利要求7中所述的系统,其中所述执行所述机器指令的装置还包括用于标识第一通用寄存器的第一字段和标识第二通用寄存器的第二字段的装置,所述获取具有包含多个访问-保护位的键字段和包含块大小指示符字段的帧管理字段的装置是用于从所述第一通用寄存器获取所述具有包含多个访问-保护位的键字段和块大小指示符字段的帧管理字段的装置,并且其中所述获取存储帧的操作数地址的装置是用于从所述第二通用寄存器获取存储帧的操作数地址的装置,其中所述操作数地址是大数据块的绝对地址和小数据块的实地址中的一个,所述执行所述机器指令的装置还包括用于向所述实地址添加前缀的装置。
9.如权利要求8中所述的系统,其中所述存储键进一步包括存储保护位、存储引用位以及存储更改位,并且其中所述键字段进一步包括取回-保护位、引用位以及更改位,并且其中所述大数据块大于所述小数据块,对于所述小数据块,所述系统进一步包括:
从所述第二通用寄存器获取所述小数据块的操作数地址的装置,所述小数据块具有包含多个存储访问-保护位的所述存储键。
10.如权利要求9中所述的系统,其中对于所述大数据块,进一步包括:
将下一数据块的地址保存在所述第二通用寄存器中的装置,所述下一数据块是紧跟所述大数据块的数据块。
11.如权利要求7中所述的系统,其中所述帧管理字段进一步包括设置存储键指示符和清除存储指示符,其中系统进一步包括,如果启用所述设置存储键指示符,则启用所述设置存储键功能的装置,如果未启用所述设置存储键指示符,则不启用所述设置存储键功能的装置,如果启用所述清除存储指示符,则启用所述清除功能的装置,以及如果未启用所述清除存储指示符,则不启用所述清除功能的装置。
CN2009801017401A 2008-01-11 2009-01-05 带有帧管理的动态地址转换 Active CN101911024B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/972,725 US8417916B2 (en) 2008-01-11 2008-01-11 Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US11/972,725 2008-01-11
PCT/EP2009/050051 WO2009087134A1 (en) 2008-01-11 2009-01-05 Dynamic address translation with frame management

Publications (2)

Publication Number Publication Date
CN101911024A CN101911024A (zh) 2010-12-08
CN101911024B true CN101911024B (zh) 2012-11-14

Family

ID=40428033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801017401A Active CN101911024B (zh) 2008-01-11 2009-01-05 带有帧管理的动态地址转换

Country Status (16)

Country Link
US (1) US8417916B2 (zh)
EP (1) EP2229631B1 (zh)
JP (1) JP4815539B2 (zh)
KR (1) KR101310412B1 (zh)
CN (1) CN101911024B (zh)
AT (1) ATE551653T1 (zh)
BR (1) BRPI0906426B1 (zh)
CA (1) CA2701086C (zh)
CY (1) CY1112694T1 (zh)
DK (1) DK2229631T3 (zh)
ES (1) ES2381428T3 (zh)
IL (1) IL206847A (zh)
PL (1) PL2229631T3 (zh)
PT (1) PT2229631E (zh)
SI (1) SI2229631T1 (zh)
WO (1) WO2009087134A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8806179B2 (en) 2009-12-15 2014-08-12 International Business Machines Corporation Non-quiescing key setting facility
JP4915756B2 (ja) * 2009-12-16 2012-04-11 インターナショナル・ビジネス・マシーンズ・コーポレーション アドレス変換を高速化する方法及びシステム
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
DE102013216885A1 (de) 2013-08-26 2015-02-26 Volkswagen Aktiengesellschaft Fahrzeugsitz mit einer Massageeinrichtung und mindestens einer Heizeinrichtung zur Umsetzung einer "Hot-Stone"-Massagefunktion"
US9996349B2 (en) * 2015-01-27 2018-06-12 International Business Machines Corporation Clearing specified blocks of main storage
CN109478139B (zh) * 2016-08-13 2024-01-23 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
US11500665B2 (en) * 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
CN110837372B (zh) * 2019-11-04 2021-01-26 贵阳动视云科技有限公司 汇编代码清除混淆的方法、装置、介质及设备
CN112965724B (zh) * 2021-03-22 2024-06-07 中国信息安全测评中心 一种固件的装载基址范围的确定方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1254424A (zh) * 1997-04-30 2000-05-24 Arm有限公司 存储器访问保护
CN1392980A (zh) * 2000-09-27 2003-01-22 格姆普拉斯公司 防止对存储器中指令的不正当使用

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JP2635058B2 (ja) 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
US5058003A (en) 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
US5237668A (en) 1989-10-20 1993-08-17 International Business Machines Corporation Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
JPH0715667B2 (ja) 1992-02-14 1995-02-22 株式会社日立製作所 データ処理装置
JP3137747B2 (ja) 1992-07-09 2001-02-26 株式会社リコー 昇華型熱転写用受像シート
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
DE10002120B4 (de) 1999-02-13 2006-04-20 International Business Machines Corp. Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
US7069412B2 (en) 1999-02-17 2006-06-27 Elbrus International Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
US6574706B2 (en) 2001-02-28 2003-06-03 International Business Machines Corporation Managing unvirtualized data pages in real storage
US6985951B2 (en) 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7299243B2 (en) 2001-09-19 2007-11-20 Bmc Software, Inc. System and method for controlling free space distribution by key range within a database
US7120746B2 (en) 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7703097B2 (en) 2002-11-15 2010-04-20 International Business Machines Corporation Auto-commit processing in an IMS batch application
US7020761B2 (en) 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US6996698B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7234037B2 (en) 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US8214622B2 (en) 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
US7941799B2 (en) 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
US8387049B2 (en) 2005-07-15 2013-02-26 International Business Machines Corporation Facilitating processing within computing environments supporting pageable guests
US7464249B2 (en) 2005-07-26 2008-12-09 International Business Machines Corporation System and method for alias mapping of address space
JP4469783B2 (ja) 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
JP5073417B2 (ja) 2007-08-27 2012-11-14 株式会社ディスコ チャックテーブル
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8335906B2 (en) 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8082405B2 (en) 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1254424A (zh) * 1997-04-30 2000-05-24 Arm有限公司 存储器访问保护
CN1392980A (zh) * 2000-09-27 2003-01-22 格姆普拉斯公司 防止对存储器中指令的不正当使用

Also Published As

Publication number Publication date
ES2381428T3 (es) 2012-05-28
CN101911024A (zh) 2010-12-08
US20090187724A1 (en) 2009-07-23
DK2229631T3 (da) 2012-05-07
PT2229631E (pt) 2012-05-11
CA2701086A1 (en) 2009-07-16
KR101310412B1 (ko) 2013-09-23
KR20100101616A (ko) 2010-09-17
IL206847A (en) 2013-07-31
CA2701086C (en) 2017-09-19
EP2229631B1 (en) 2012-03-28
BRPI0906426A2 (pt) 2016-10-11
WO2009087134A1 (en) 2009-07-16
CY1112694T1 (el) 2016-02-10
BRPI0906426B1 (pt) 2020-12-01
SI2229631T1 (sl) 2012-05-31
IL206847A0 (en) 2010-12-30
PL2229631T3 (pl) 2012-11-30
JP4815539B2 (ja) 2011-11-16
EP2229631A1 (en) 2010-09-22
US8417916B2 (en) 2013-04-09
ATE551653T1 (de) 2012-04-15
JP2011509471A (ja) 2011-03-24

Similar Documents

Publication Publication Date Title
CN101911024B (zh) 带有帧管理的动态地址转换
CN101911025B (zh) 带有取回保护的动态地址转换的方法和系统
CN101911022B (zh) 具有格式控制的动态地址转换
CN101960432B (zh) 使用转换异常限定符的动态地址转换
CN100363908C (zh) 无效存储器及清除缓冲区表项的方法和系统
CN101911015B (zh) 通过处理器指令减少对计算机体系结构依赖性的方法及装置
CN102906721B (zh) 与访问地址空间并行地对地址空间调整大小
US20190303151A1 (en) Performing an operation absent host intervention
US9158711B2 (en) Creating a program product or system for executing a perform frame management instruction
KR101442429B1 (ko) 프로세서의 펑션 쿼리를 위한 펑션 가상화 장치
CN109074322B (zh) 用于对能力元数据执行操作的装置和方法
US10430188B2 (en) Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction
CN102906719B (zh) 输入/输出地址到存储器地址的转换
US20210255867A1 (en) Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
CN101911016B (zh) 计算机系统和操作计算机的方法
US11119778B2 (en) Apparatus and method for controlling execution of instructions
US20070271432A1 (en) Facilitating use of storage access keys to access storage
CN101911014A (zh) 旋转然后插入所选比特的工具以及由此的指令

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant