CN101911025A - 带有取回保护的动态地址转换 - Google Patents
带有取回保护的动态地址转换 Download PDFInfo
- Publication number
- CN101911025A CN101911025A CN2009801019619A CN200980101961A CN101911025A CN 101911025 A CN101911025 A CN 101911025A CN 2009801019619 A CN2009801019619 A CN 2009801019619A CN 200980101961 A CN200980101961 A CN 200980101961A CN 101911025 A CN101911025 A CN 101911025A
- Authority
- CN
- China
- Prior art keywords
- address
- list item
- district
- virtual address
- storage
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
提供了一种增强的动态地址转换工具。在一个实施例中,首先获取要转换的虚拟地址,并且获取转换表层次结构的转换表的初始起始地址。根据所获取的初始起始地址,获取段表表项。所述段表表项被配置为包含格式控制字段和访问有效性字段。如果已启用所述格式控制字段和访问有效性字段,则所述段表表项还包含访问控制字段、取回保护字段以及段-帧绝对地址。仅当所述访问控制字段与程序状态字或所执行程序指令的操作数中的任意一个所提供的程序访问键匹配时,才允许存储操作。当与所述虚拟地址关联的程序访问键与所述段访问控制字段相同时,允许取回操作。
Description
技术领域
本发明一般地涉及用于在计算机系统中转换虚拟地址的系统和方法,更具体地说,涉及在具有动态地址转换工具的计算机系统中将虚拟地址转换成数据块的实地址或绝对地址的系统和方法,其中虚拟地址转换通过转换表层次结构实现。
背景技术
动态地址转换提供这样的能力:在任意时刻中断程序的执行,将程序及其数据记录到诸如直接存取存储设备之类的辅助存储装置中,并在以后将程序及其数据返回到其他主存储位置以恢复执行。程序及其数据在主存储装置和辅助存储装置之间的转移可逐步执行,并且可发生将信息返回到主存储装置以响应在执行需要时CPU访问该信息的尝试。这些功能可在不更改或不检查程序及其数据的情况下执行,它们不需要重新定位的程序中的任何显式编程约定,并且除了所涉及的时间延迟以外,不会干扰程序的执行。
借助操作系统的适当支持,可使用动态地址转换工具为用户提供一种其中存储装置似乎大于配置中可用的主存储装置的系统。此明显的主存储装置通常被称为虚拟存储装置,并且用于指定虚拟存储装置中的位置的地址通常被称为虚拟地址。用户的虚拟存储装置远大于配置中可用的主存储装置的大小并且一般在辅助存储装置中维护。虚拟存储装置被视为包括通常被称为页(也被称为段和区)的数据块。仅将虚拟存储装置的最近被引用的页分配为占用物理主存储装置的数据块。当用户引用的虚拟存储装置的页不在主存储装置中时,将调入这些页以替换主存储装置中引用次数较少的页。在某些情况下,虚拟存储装置被长期(或永久)分配给主存储装置而不考虑是否引用该存储装置。操作系统可在用户不知情的情况下执行存储装置页的调换。
程序使用地址(或虚拟地址)访问虚拟存储装置。程序可使用虚拟地址从虚拟存储装置取回指令或从虚拟存储装置加载数据或存储数据。与虚拟存储装置的范围关联的虚拟地址定义了地址空间。借助操作系统的适当支持,可使用动态地址转换工具提供若干地址空间。这些地址空间可用于提供用户间的隔离程度。此类支持可针对每个用户包含完全不同的地址空间,从而提供完全的隔离,或者可通过将每个地址空间的一部分映射到单独的公共存储区域来提供共享区域。另外,还提供了允许半特权程序访问多个此类地址空间的指令。
动态地址转换提供了来自多个不同地址空间的虚拟地址的转换。这些地址空间被称为主地址空间、二级地址空间以及存取寄存器指定的地址空间。特权程序还可导致访问起始地址空间。可针对CPU生成的指令和数据地址指定动态地址转换。
需要一种提供本领域迄今为止尚未了解的附加功能、能力和保护的增强的动态地址转换工具。
发明内容
提供了一种用于增强的动态地址转换工具的系统、方法和计算机程序产品,所述工具将虚拟地址转换成具有机器体系结构的计算机系统的主存储装置中的所需数据块的实地址或绝对地址,所述机器体系结构具有用于转换的转换表层次结构。可向实地址添加前缀以形成绝对地址。
在一个示例实施例中,获取要转换的虚拟地址以及所述转换表层次结构的转换表的初始起始地址。所述转换表包括区第一表(region first table)、区第二表、区第三表或段表。根据所获取的初始起始地址,从所述段表获取段表表项。所述段表表项被配置为包含格式控制字段。如果已启用增强的DAT工具以及所述格式控制字段,则判定是否已启用所述段表表项中的访问有效性字段。如果已启用所述访问有效性字段,则所述段表表项还包含访问控制字段、保护字段以及主存储装置中的大数据块的段-帧绝对地址。所述大数据块是大小至少为1MB的块。如果已启用所述访问控制字段,则仅当所述访问控制字段与程序状态字或者所执行程序指令的操作数所提供的程序访问键(program access key)匹配时,才允许到所需数据块的存储操作。仅当与所述虚拟地址关联的程序访问键与所述访问控制字段相同时,才允许从所需数据块执行取回操作。
在另一实施例中,如果已启用所述访问有效性字段,则响应于在所需存储块处尝试取回操作或存储操作并且段访问控制字段与程序访问控制字段不匹配,指示保护异常。
下面将结合示出的特定实施例对本发明进行描述。应该理解,本领域的技术人员可以在不偏离本发明的精神或范围的情况下做出各种更改和修改。
附图说明
附图连同下面的详细说明一起被结合到说明书中或构成说明书的一部分,用于全部根据本发明进一步示出各种实施例和解释各种原理和优点,在所述附图中,相同的标号在各个独立的视图之间表示相同或功能相似的元素,这些附图是:
图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示出了确定要应用于由转换后的虚拟地址寻址的所需数据块的DAT保护级别的一个实施例的流程图;
图10示出了从图8的节点822开始的流程图的后续过程,其确定要应用于由转换后的虚拟地址寻址的所需数据块的访问控制保护级别;
图11示出了从图8的节点822开始的流程图的后续过程,其确定要应用于由转换后的虚拟地址寻址的所需数据块的取回保护级别;
图12示出了从图8的节点822开始的流程图的后续过程,其中从段表表项获取更改记录忽略(override)字段;以及
图13示出了实地址和绝对地址之间的关系。
具体实施方式
应该理解,本申请的说明书中做出的陈述并非一定限制各种要求保护的发明中的任何发明。而且,某些陈述适用于某些发明特性,但不适用于其他发明特性。除非另外指出,否则在不失一般性的情况下,单数元素可以表示复数元素,并且反之亦然。
本领域中的技术人员很容易熟悉在计算环境中为存储装置寻址以及使用寄存器或地址字段中的位指示不同的状态以及针对这些状态执行操作。进而,本领域中的技术人员了解计算机程序领域并且了解计算机系统组件之间的工作方式和相互关系。
概述
提供了增强的动态地址转换(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的代表组件。也可以在计算机系统中使用其他组件布置,这在本领域中是公知的。
主计算环境优选地基于由位于纽约阿蒙克的国际商业机器公司所提供的Principles of Operation(操作原理,出版号:SA22-7832-05,第六版,2007年4月)中更全面地描述了其全部内容在此引入作为参考。基于的计算环境例如包括eServer和均由提供。
代表性主计算机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)
主实空间指定(R=1)
控制寄存器1的格式
主地址空间控制元素(PASCE)中的选定字段按如下方式进行分配:
主区表或段表起始地址:控制寄存器1中的主区表或段表指定的位0-51及右侧附加的12个0形成指定主区表或段表的开头的64位地址。无法预测此地址是实地址还是绝对地址。该表被称为主区表或段表,因为它用于在主地址空间中转换虚拟地址。
主实空间控制(R):如果控制寄存器1的位58为0,则所述寄存器包含区表或段表指定。如果位58为1,则所述寄存器包含实空间指定。当位58为1时,在转换对主地址空间的引用时,即使控制寄存器1中的令牌起始地址与转换后备缓冲器表项中的起始地址匹配,段表表项的转换后备缓冲器表示中的公共段位的1值也会阻止使用表项以及它所指定的转换后备缓冲器页表副本。
主指定类型控制(DT):当R为0时,控制寄存器1中的表指定类型由所述寄存器中的位60和61指定,如下所示:
位60
和61 指定类型
11 区第一表
10 区第二表
01 区第三表
00 段表
主指定类型(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)
控制寄存器7的格式
控制寄存器13
控制寄存器13包含起始地址空间控制元素(HASCE)。在一个实施例中,控制寄存器13具有以下两种格式之一,具体取决于寄存器中的实空间控制位(R):
起始区表或段表指定(R=0)
起始实空间指定(R=1)
控制寄存器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 PSW EXTENDED,或成功地结束初始程序加载序列将引入新的程序状态字。指令地址通过顺序指令执行来更新,并且由成功的分支进行替换。提供了对程序状态字的一部分执行操作的其他指令。
当更改程序状态字的指令中断或执行完成时,新的或修改后的程序状态字将变为活动(即,引入到当前程序状态字内的信息开始控制CPU)。与更改程序状态字的指令关联的程序事件记录(PER)在PER掩码的控制下发生中断,所述掩码在操作开始时生效。程序状态字的0-7位统称为系统掩码。在一个实施例中,程序状态字具有以下格式:
程序状态字格式
下面是对选定程序状态字字段功能的简要描述。
DAT模式(T):位5控制是否发生用于访问存储装置的逻辑和指令地址的隐式动态地址转换。当位5为0时,DAT处于关闭状态并且逻辑和指令地址被视为实地址。当位5为1时,DAT处于打开状态并且调用动态地址转换机制。
PSW键:位8-11形成CPU引用存储装置时使用的访问键。如果引用受到键控保护,则当存储信息或从具有取回保护的位置取回信息时,会将PSW键与存储键进行匹配。但是,对于MOVE TO PRIMARY、MOVE TO SCONDARY、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 TO PRIMARY的第一操作数地址和MOVE TO SCONDARY的第二操作数地址被视为主虚拟地址。
二级虚拟地址
二级虚拟地址是要通过二级地址空间控制元素(SASCE)转换的虚拟地址。在二级空间模式下,逻辑地址被视为二级虚拟地址。MOVE TO PRIMARY的第二操作数地址和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位量。在一个实施例中,前缀寄存器具有以下格式:
前缀寄存器的格式
在应用前缀时,取决于实地址的位0-50,通过使用以下规则之一将实地址变换成绝对地址:
如果地址的位0-50全部为0,则地址的位0-50被前缀的位0-50所替换。
如果地址的位0-50等于前缀的位0-50,则地址的位0-50被0所替换。
如果地址的位0-50不全部为0且不等于前缀的位0-50,则地址的位0-50保持不变。
只有提供给存储装置的地址才通过添加前缀进行变换。地址的源的内容保持不变。
即使在前缀寄存器包含的位全部为0(在此情况下实地址及其对应的绝对地址完全相同)时也将区分实地址和绝对地址。
图13示出了实地址和绝对地址之间的关系。
地址空间是连续的整数序列(虚拟地址);另外还包括特定的变换参数,所述参数允许将每个数字与存储装置中的字节位置关联。所述序列以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)。在一个实施例中,虚拟地址具有以下格式:
虚拟地址的格式
如其ASCE确定的,虚拟地址空间可以是包括一个区的2GB空间,也可以是包括最多8GB的区的最多16EB空间。应用到2GB地址空间的虚拟地址的RX部分必须全部为0,;否则,将识别到异常。虚拟地址的RX部分本身被分为三个字段。位0-10被称为区第一索引(RFX),位11-21被称为区第二索引(RSX),以及位22-32被称为区第三索引(RTX)。在一个实施例中,虚拟地址的位0-32具有以下格式:
虚拟地址的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)
区第二表表项(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的表指定类型以及迄今为止使用的表级别的数量;否则,将识别到转换规范异常。下表示出了表类型位:
位60
和61 区表级别
11 第一
10 第二
01 第三
区表表项的表类型位
区第二表长度、区第三表长度和段表长度(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)
段表表项的格式I
当应用增强的DAT并且STE格式控制为1时,在一个实施例中,从段表取回的表项具有以下格式:
段-表表项(T=00,FC=1)
段表表项的格式Ⅱ
段表表项中的选定字段按如下方式进行分配:
页表起始地址:当不应用增强的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的所有可能值的含义如下所示:
位60
和61 表级别
11 区第一
10 区第二
01 区第三
00 段
表类型位60、61
位60和61必须标识正确的表级别,其中要考虑作为在转换中使用的ASCE的表指定类型以及迄今为止使用的表级别的数量;否则,将识别到转换规范异常。段表表项的所有其他位位置均被保留以供将来可能扩展,并且应包含0;否则,将来程序可能无法兼容运行。当应用增强的DAT时,段表表项的保留位位置应包含0,即使表项无效也是如此。
页表表项
在一个实施例中,从页表取回的表项具有以下格式:
页表表项的格式
页表表项中的选定字段按如下方式进行分配:
页帧实地址(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的表指定类型以及要借助指定的表转换的虚拟地址部分两者,如下所示:
位60 通过表转换的虚
和61 指定类型 拟地址部分
11 区第一表 区第一索引
(位0-10)
10 区第二表 区第二索引
(位11-21)
01 区第三表 区第三索引
(位22-32)
00 段表 段索引
(位33-43)
借助指定表的转换
当位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保护应用到使用虚拟地址的所有存储型引用。
现在参考图9,其示出了从转换中使用的段表表项获取DAT保护位的一个实施例的流程图。
在902,获取要转换的虚拟地址。在904,获取在虚拟地址转换中使用的第一转换表的起始地址。在906,通过先前讨论的方式使用虚拟地址的一部分引用转换表中的表项。在908,从所获取的段帧绝对地址(SFAA)或页帧实地址(PFRA)生成实地址或绝对地址。
在910,从虚拟地址转换中使用的转换表的每个表项获取DAT保护(P)位。应该理解,DAT保护的有效级别是从转换中使用的每个表项获取的多个P位的逻辑“或”。在912,检查DAT保护位以判定由转换后的虚拟地址寻址的数据块是否已被DAT保护。在912,如果DAT保护(P)位为0,则在914允许执行到由转换后的虚拟地址寻址的数据块的存储操作。在912,如果DAT保护(P)位为1,则在916阻止执行到由转换后的虚拟地址寻址的数据块的存储操作。备选地,由DAT保护字段指示的保护级别应用到使用虚拟地址的所有存储型引用。如果启用了DAT保护字段,则在尝试存储到由转换后的虚拟地址寻址的所需数据块时,将指示保护异常状况。
键控保护
当键控保护应用到存储访问时,仅当存储键与存储访问请求所关联的访问键匹配时,才允许存储;当键匹配或者当存储键的取回保护位为0时,允许取回。当存储键的四个访问控制位与访问键相同或者当访问键为0时,则键被称为匹配。下表概述了保护操作。
保护操作概述
当CPU启动对存储装置的访问并且应用键控保护时,PSW键是访问键,但对于MOVE TO SECONDARY和MOVE WITH DESTINATION KEY的第一操作数,对于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所观察到的,由显式操纵存储键的指令(INSERT STORAGE KEY EXTENDED、INSERT VIRTUAL STORAGE KEY、RESET REFERENCE BIT EXTENDED以及SET STORAGE KEY EXTENDED)执行的存储键取回和存储在它们本身之间以及在存储操作数引用之间被排序,就像存储键访问本身分别是存储操作数取回和存储那样。
访问控制和取回保护(ACC/F)
可以进一步借助段表表项中提供的访问控制位和取回保护位来保护主存储装置或存储器中的数据块。
访问有效性(AV)和访问控制(ACC)
现在参考图10,其示出了确定要应用于由转换后的虚拟地址寻址的所需数据块的访问控制保护的流程图的一个实施例。
动态地址转换继续到其中已从转换中使用的段表取回段表表项的点,如图6中所述继续到节点616。地址转换如图8中所述继续到节点822,其中已获取存储装置或存储器中所需数据块的绝对地址。图10中的流程从节点822开始。
在1002,从段表表项获取访问有效性(AV)字段。在1004,判定是否启用段表表项中的访问有效性字段(AV=1)。如果访问有效性字段为0,则段表表项中的访问控制(ACC)字段无效。在1006,忽略访问控制字段的各位。如果启用了访问有效性字段,则访问控制字段有效。在1008,从段表表项获取访问控制字段的各位。在1010,将由段表表项中的ACC字段指示的访问控制保护级别应用到由转换后的虚拟地址寻址的所需数据块。
在另一实施例中,仅当访问控制字段与程序实体(例如程序状态字或所执行程序指令的操作数)所提供的访问键匹配时,才允许到所需数据块的存储操作。如果在所需数据块处尝试执行存储并且访问控制字段与访问键不匹配,则优选地指示保护异常。
在另一实施例中,如果启用了访问有效性字段,则当在所需数据块处尝试执行取回操作或存储操作并且段访问控制字段与程序访问控制字段不匹配时,将指示保护异常。
访问有效性(AV)和取回保护(F)
现在参考图11,其示出了确定要应用于由转换后的虚拟地址寻址的所需数据块的取回保护的流程图的一个实施例。
动态地址转换继续到其中已从转换中使用的段表取回段表表项的点,如图6中所述继续到节点616。地址转换如图8中所述继续到节点822,其中已获取存储装置或存储器中所需数据块的绝对地址。图11中的流程从节点822开始。
在1102,从段表表项获取访问有效性(AV)字段。在1104,判定是否启用段表表项中的访问有效性字段(AV=1)。如果在1104访问有效性字段为0,则在1106忽略取回保护位。如果在1104启用了访问有效性字段,则在1108从段表表项获取取回保护位。在1110,将由段表表项中的F字段指示的取回保护级别应用到由转换后的虚拟地址寻址的所需数据块。仅当取回保护字段与访问键匹配时,才允许从由转换后的虚拟地址寻址的数据块执行取回操作。访问键由程序状态字或所执行程序指令的操作数提供。仅当已禁用取回保护字段或者仅当已启用取回保护字段并且与虚拟地址关联的访问控制字段与访问键相同时,才允许从所需数据块执行取回操作。如果访问键为0,则允许从所需数据块执行取回。
在另一实施例中,如果程序访问键为0,则允许执行到所需存储块的存储操作以及从所需存储块执行取回操作。
在另一实施例中,如果启用了访问有效性字段和取回保护字段,则响应于从所需存储块尝试执行取回操作并且段访问控制字段与程序访问控制字段不匹配,将指示保护异常。
SET STORAGE KEY EXTENDED(SSKE)
可以借助SET STORAGE KEY EXTENDED(SSKE)指令设置存储键。在一个实施例中,SSKE指令具有以下格式:
SSKE指令的格式
由第一操作数寄存器中的值替换一个或多个4K字节块的存储键。当安装了条件型SSKE工具时,可以绕过键设置操作的特定功能。当未安装条件型SSKE工具,或者已安装条件型SSKE工具并且M3字段的MR和MC位均为0时,由来自通用寄存器R1的位替换通过通用寄存器R2的内容寻址的4K字节块的存储键。指令在不更改条件代码的情况下完成。
当安装了条件型SSKE工具并且MR位和MC位为1时,将由通用寄存器R2的内容寻址的存储键的访问控制位、取回保护位以及可选地引用位和更改位与通用寄存器R1中的对应位进行比较。如果所比较的位相同,则不对键进行更改;否则,由通用寄存器R1中的对应位替换键的选定位。将任何修改之前的存储键插入通用寄存器R1,并且由条件代码指示结果。
当安装了增强的DAT工具时,可以在多块控制(如下所述)的控制下,针对同一1MB块内的多个4K字节块的存储键重复上述操作。在一个实施例中,M3字段具有以下格式:
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字节块中的任何一个发生更改记录。
更改记录忽略不应用到实地址或绝对地址,也不应用到通过实空间指定转换的虚拟地址。
现在参考图12,其示出了从在虚拟地址的动态地址转换中使用的段表表项获取更改记录忽略字段的一个实施例的流程图。
动态地址转换继续到其中已从在转换中使用的段表取回段表表项的点,如图6中所述继续到节点616。地址转换如图8中所述继续到节点822,其中已获取存储装置或存储器中所需数据块的绝对地址。图12的流程从节点822开始。
在1210,从在转换中使用的段表表项获取更改记录忽略(CO)字段。更改记录忽略使能忽略存储键的更改位。在1212,判定针对通过转换后的虚拟地址寻址的所需数据块执行的访问是存储型操作还是取回型操作。如果访问是取回型访问,则在1213不发生更改位的设置并且不应用更改记录忽略。如果访问是存储型操作,则在1214判定是否启用段表表项中的更改记录忽略。如果在1214未启用更改记录忽略,则在1218将与所需块关联的存储键的更改位设为1。如果在1214启用了更改记录忽略,则在1216不设置关联的存储键的更改位。在1220,指示已修改所需数据块。
在另一实施例中,如果应用增强的DAT并且未启用STE中的格式控制,则从段表表项获取页表的起始地址。使用虚拟地址的页索引部分引用页表中的页表表项。从页表表项获取主存储装置中小数据块的页帧实地址以及页更改忽略字段。每个小数据块都具有包含更改位的关联存储键。小数据块的大小小于大数据块并包括4KB(4096字节)数据块。主存储装置中的所需实数据块的转换后地址包含页帧实地址和虚拟地址的字节索引部分的组合。判定对所需实数据块是执行存储型操作还是取回型操作。如果访问操作是取回型操作,则不应用更改记录忽略。如果访问是存储型操作,并且如果禁用与虚拟地址关联的更改记录忽略字段,则将与所需4K块关联的存储键的更改位设为1。将提供已修改所需4K块的指示。
在另一实施例中,如果启用了更改记录忽略字段,则无法预测与所需4K块关联的存储键的更改位。
商业实现
此处披露的eDAT工具以及其他格式、指令和属性的商业实现可以通过硬件实现,也可以由例如使用汇编语言的编程人员(如操作系统编程人员)实现。此类编程指令可存储在旨在在诸如System z server之类的计算环境中本机地执行,或备选地在执行其他体系结构的机器中本机地执行的存储介质中。所述指令可以在现有和未来的服务器中以及在其他机器或主机上进行仿真。它们可以在其中总体执行处于仿真模式的机器中执行。
本发明的一个或多个方面可同样适用于例如虚拟机仿真,其中一个或多个可分页实体(例如客户机)在一个或多个处理器上执行。作为一个实例,可分页客户机由“Syetem/370Extended Architecture(系统/370扩展体系结构,出版号: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,在此引入上述每个专利作为参考。许多其他教导进一步示出了各种仿真具有目标机器体系结构的指令集的方法。
其他变型和体系结构
此处所述的各种实施例仅作为示例。这些实施例具有多种不偏离本发明的精神的变型。可以通过软件、固件、硬件或它们的某种组合实现本发明的一种或多种功能。本发明的各方面对于许多类型的环境是有利的,其中包括具有多个区的其他环境以及非分区环境。进而,可以没有中央处理器复合体,但是仍存在多个耦合在一起的处理器。此处所述的各个方面可适用于单处理器环境。
尽管此处描述了特定环境,但再次地,可以在不偏离本发明的精神的情况下实现这些环境的多种变型。例如,如果对环境执行逻辑分区,则此环境中可包括更多或更少的逻辑分区。进而,可以存在多个耦合在一起的中央处理复合体。在不偏离本发明的精神的情况下只能做出某些变型。此外,其他变型是可能的。
尽管术语“页”用于指固定大小或预定大小的存储区域,但是页大小是可变的。类似地,块大小是可变的。可存在不同大小的块和/或页。页也可以等同于块。可以备选地使用其他结构或以其他方式在软件和/或硬件中实现其他结构。进而,在此处所述的示例中,存在许多变型,包括但不限于不同大小的字或地址;不同数量的位;不同顺序的位;更多、更少或不同的位;更多、更少或不同的字段;不同顺序的字段;不同大小的字段等。再次地,这些仅提供为示例。许多变型是可能的。
处理单元包括可分页实体,例如客户机、主机、其他处理器、仿真器、虚拟机和/或其他类似的结构。缓冲器包括存储装置和/或存储器区域,以及其他类型的数据结构,其中包括但不限于阵列或可分页实体。表也包括其他数据结构。指令可以引用其他寄存器。而且,页、段和/或区的大小可以不同于此处所述的大小。
本发明的一个或多个方面可以包括在具有例如计算机可用或机器可读介质的制品(例如,一个或多个计算机程序产品)中。所述介质中包含例如计算机可读程序代码装置或逻辑(例如,指令、代码、命令等)以提供或促进本发明的功能。所述制品可以包括为计算机系统的一部分或单独出售。此外,可提供可由机器读取的至少一个程序存储设备,所述程序存储设备包含至少一个可由所述机器执行以实现本发明的功能的指令程序。
此处描述的流程图是示例性的。所述的这些图形或步骤或操作可以具有多种不偏离本发明的精神的变型。例如,所述步骤可以按照其他顺序执行,也可以添加、删除或修改步骤。所有这些变型均被视为要求保护的发明的一部分。
尽管此处详细地描述和说明了本发明的实施例,但是对于本领域的技术人员显而易见的是,可以在不偏离本发明精神的情况下做出各种修改、添加、替换等,因此它们被视为在以下权利要求限定的发明范围之内。
权利要求书(按照条约第19条的修改)
1.一种用于保护具有转换表层次结构的计算机系统中的数据的方法,所述转换表用于将虚拟地址转换成主存储装置中的数据块的转换后的地址,所述方法包括:
获取要转换的虚拟地址;
获取所述转换表层次结构的转换表的初始起始地址,所述转换表层次结构包括段表;
根据所获取的初始起始地址,从所述段表获取段表表项,所述段表表项被配置为包含格式控制字段;
响应于已启用增强的DAT工具,判定是否已启用所述段表表项中的所述格式控制字段;以及
响应于已启用所述格式控制字段,执行以下操作:
判定是否已启用所述段表表项中的访问有效性字段,所述段表表项包括所述访问有效性字段、段访问控制字段、段取回保护字段以及主存储装置中的大数据块的段-帧绝对地址;
响应于已启用所述访问有效性字段,执行以下操作:
允许到所需存储块的存储,其中所述存储与所述虚拟地址关联,仅响应于所述段访问控制字段与程序状态字或所执行程序指令的操作数中的任意一个所提供的程序访问键匹配,才允许所述存储;以及
仅响应于a)已禁用所述段取回保护字段,或者b)已启用所述段取回保护字段并且与所述虚拟地址关联的所述程序访问键与所述段访问控制字段相同,才允许从所需数据块执行取回,其中所述取回与所述虚拟地址关联;以及
响应于未启用所述增强的DAT工具,执行以下操作:
从所述段表表项获取页表的起始地址并使用所述虚拟地址的页索引部分引用所述页表中的页表表项;以及
从所述页表表项获取主存储装置中的小数据块的页-帧实地址,所述小数据块的大小小于所述大数据块并包括4KB的数据块,所述小数据块与存储键关联,所述存储键包括存储访问控制字段和存储取回保护字段,其中主存储装置中的所需真实数据块的转换后的地址包括所述页-帧实地址与所述虚拟地址的字节-索引部分的组合。
2.如权利要求1中所述的方法,其中所述转换后的地址是实地址或绝对地址中的任意一个,其中向所述实地址添加前缀以形成所述绝对地址,其中所述转换表层次结构包括区第一表、区第二表、区第三表以及所述段表中的一个或多个,其中从所述段表获取所述段表表项包括A、B、C、D中的任意一个:
A)根据所获取的所述区第一表的初始起始地址,使用所述虚拟地址的第一索引部分引用所述区第一表中包含所述区第二表的起始地址的区第一表表项;根据所述区第二表的所述起始地址,使用所述虚拟地址的第二索引部分引用所述区第二表中包含所述区第三表的起始地址的区第二表表项;根据所述区第三表的所述起始地址,使用所述虚拟地址的第三索引部分引用所述区第三表中包含所述段表的起始地址的区第三表表项;以及根据所述段表的所述起始地址,使用所述虚拟地址的段索引部分引用所述段表中的段表表项;
B)根据所获取的所述区第二表的初始起始地址,使用所述虚拟地址的第二索引部分引用所述区第二表中包含所述区第三表的起始地址的所述区第二表表项;根据所述区第三表的所述起始地址,使用所述虚拟地址的第三索引部分引用所述区第三表中包含所述段表的起始地址的所述区第三表表项;以及根据所述段表的所述起始地址,使用所述虚拟地址的所述段索引部分引用所述段表中的所述段表表项;
C)根据所获取的所述区第三表的初始起始地址,使用所述虚拟地址的第三索引部分引用所述区第三表中包含所述段表的所述起始地址的所述区第三表表项;以及根据所述段表的所述起始地址,使用所述虚拟地址的所述段索引部分引用所述段表中的所述段表表项;以及
D)根据所获取的所述段表的初始起始地址,使用所述虚拟地址的所述段索引部分引用所述段表表项。
3.如权利要求2中所述的方法,其中响应于已启用所述增强的DAT工具以及未启用所述格式控制字段,执行以下操作:
从所述段表表项获取页表的起始地址并使用所述虚拟地址的页索引部分引用所述页表中的页表表项;
从所述页表表项获取主存储装置中的小数据块的页-帧实地址,所述小数据块的大小小于所述大数据块并包括4KB的数据块,所述小数据块与包括存储访问控制字段和存储取回保护字段的存储键关联,其中主存储装置中的所需真实数据块的转换后的地址包括所述页-帧实地址与所述虚拟地址的字节-索引部分的组合;
仅响应于所述程序访问控制字段与所述存储访问控制字段匹配,才允许到所需真实存储块的存储,其中所述存储与所述虚拟地址关联,所述程序访问字段由包括程序状态字或所执行程序指令的操作数中的任意一个的程序实体提供;以及
仅响应于a)已禁用所述存储取回保护字段,或者b)已启用所述存储取回保护字段并且与所述虚拟地址关联的程序访问键与所述存储访问控制字段相同,才允许从所需数据块执行取回,其中所述取回与所述虚拟地址关联,所述程序访问键由程序状态字或所执行程序指令的操作数中的任意一个提供。
4.如权利要求2中所述的方法,其中响应于未启用所述增强的DAT工具,执行以下操作:
从所述段表表项获取页表的起始地址并使用所述虚拟地址的页索引部分引用所述页表中的页表表项;
从所述页表表项获取主存储装置中的小数据块的页-帧实地址,所述小数据块的大小小于所述大数据块并包括与存储键关联的4KB的数据块,所述存储键包括存储访问控制字段和存储取回保护字段,其中主存储装置中的所需真实数据块的转换后的地址包括所述页-帧实地址与所述虚拟地址的字节-索引部分的组合;
仅响应于所述程序访问控制字段与所述存储访问控制字段匹配,才允许到所需真实存储块的存储,其中所述存储与所述虚拟地址关联;以及
仅响应于a)已禁用所述存储取回保护字段,或者b)已启用所述存储取回保护字段并且与所述虚拟地址关联的程序访问键与所述存储访问控制字段相同,才允许从所需数据块执行取回,其中所述取回与所述虚拟地址关联,所述程序访问键由程序状态字或所执行程序指令的操作数中的任意一个提供。
5.如权利要求1中所述的方法,其中响应于所述程序访问键为零,允许到所述所需存储块的存储以及从所述所需存储块的取回,其中所述存储和取回与所述虚拟地址关联。
6.如权利要求1中所述的方法,其中响应于已启用所述访问有效性字段和所述取回保护字段,并响应于尝试从所述所需存储块执行取回操作以及所述段访问控制字段与所述程序访问控制字段不匹配,指示保护异常,所述取回操作与所述虚拟地址关联。
7.如权利要求1中所述的方法,其中判定是否已启用所述访问有效性字段进一步包括:判定以下项中的任意一个:a)是否已禁用控制寄存器的存储-保护-忽略字段,或者b)是否已启用所述存储-保护-忽略字段但未启用所述段访问控制字段。
8.如权利要求1中所述的方法,还包括:
将在所述虚拟地址的所述转换中使用的信息存储在至少一个转换后备缓冲器中;以及
使用来自所述转换后备缓冲器的所存储的信息而不是所述转换表层次结构来执行后续虚拟地址到主存储装置中的所述数据块的所述绝对地址的后续转换。
9.如权利要求1中所述的方法,其中响应于所述转换不是机器体系结构所固有的,还包括:
标识用于仿真所述转换的预定软件例程,所述预定软件例程包括多个指令;以及
执行所述预定软件例程。
10.如权利要求1中所述的方法,其中所述大数据块包括大小至少为1MB的块。
11.一种系统,包括适于执行如任一上述方法权利要求中所述的方法的所有步骤的装置。
12.一种计算机程序,包括当所述计算机程序在计算机系统上执行时,用于执行如任一上述方法权利要求中所述的方法的所有步骤的指令。
Claims (12)
1.一种用于保护具有转换表层次结构的计算机系统中的数据的方法,所述转换表用于将虚拟地址转换成主存储装置中的数据块的转换后的地址,所述方法包括:
获取要转换的虚拟地址;
获取所述转换表层次结构的转换表的初始起始地址,所述转换表层次结构包括段表;
根据所获取的初始起始地址,从所述段表获取段表表项,所述段表表项被配置为包含格式控制字段;
响应于已启用增强的DAT工具,判定是否已启用所述段表表项中的所述格式控制字段;以及
响应于已启用所述格式控制字段,执行以下操作:
判定是否已启用所述段表表项中的访问有效性字段,所述段表表项包括所述访问有效性字段、段访问控制字段、段取回保护字段以及主存储装置中的大数据块的段-帧绝对地址;以及
响应于已启用所述访问有效性字段,执行以下操作:
允许到所需存储块的存储,其中所述存储与所述虚拟地址关联,仅响应于所述段访问控制字段与程序状态字或所执行程序指令的操作数中的任意一个所提供的程序访问键匹配,才允许所述存储;以及
仅响应于a)已禁用所述段取回保护字段,或者b)已启用所述段取回保护字段并且与所述虚拟地址关联的所述程序访问键与所述段访问控制字段相同,才允许从所需数据块执行取回,其中所述取回与所述虚拟地址关联。
2.如权利要求1中所述的方法,其中所述转换后的地址是实地址或绝对地址中的任意一个,其中向所述实地址添加前缀以形成所述绝对地址,其中所述转换表层次结构包括区第一表、区第二表、区第三表以及所述段表中的一个或多个,其中从所述段表获取所述段表表项包括A、B、C、D中的任意一个:
A)根据所获取的所述区第一表的初始起始地址,使用所述虚拟地址的第一索引部分引用所述区第一表中包含所述区第二表的起始地址的区第一表表项;根据所述区第二表的所述起始地址,使用所述虚拟地址的第二索引部分引用所述区第二表中包含所述区第三表的起始地址的区第二表表项;根据所述区第三表的所述起始地址,使用所述虚拟地址的第三索引部分引用所述区第三表中包含所述段表的起始地址的区第三表表项;以及根据所述段表的所述起始地址,使用所述虚拟地址的段索引部分引用所述段表中的段表表项;
B)根据所获取的所述区第二表的初始起始地址,使用所述虚拟地址的第二索引部分引用所述区第二表中包含所述区第三表的起始地址的所述区第二表表项;根据所述区第三表的所述起始地址,使用所述虚拟地址的第三索引部分引用所述区第三表中包含所述段表的起始地址的所述区第三表表项;以及根据所述段表的所述起始地址,使用所述虚拟地址的所述段索引部分引用所述段表中的所述段表表项;
C)根据所获取的所述区第三表的初始起始地址,使用所述虚拟地址的第三索引部分引用所述区第三表中包含所述段表的所述起始地址的所述区第三表表项;以及根据所述段表的所述起始地址,使用所述虚拟地址的所述段索引部分引用所述段表中的所述段表表项;以及
D)根据所获取的所述段表的初始起始地址,使用所述虚拟地址的所述段索引部分引用所述段表表项。
3.如权利要求2中所述的方法,其中响应于已启用所述增强的DAT工具以及未启用所述格式控制字段,执行以下操作:
从所述段表表项获取页表的起始地址并使用所述虚拟地址的页索引部分引用所述页表中的页表表项;
从所述页表表项获取主存储装置中的小数据块的页-帧实地址,所述小数据块的大小小于所述大数据块并包括4KB的数据块,所述小数据块与包括存储访问控制字段和存储取回保护字段的存储键关联,其中主存储装置中的所需真实数据块的转换后的地址包括所述页-帧实地址与所述虚拟地址的字节-索引部分的组合;
仅响应于所述程序访问控制字段与所述存储访问控制字段匹配,才允许到所需真实存储块的存储,其中所述存储与所述虚拟地址关联,所述程序访问字段由包括程序状态字或所执行程序指令的操作数中的任意一个的程序实体提供;以及
仅响应于a)已禁用所述存储取回保护字段,或者b)已启用所述存储取回保护字段并且与所述虚拟地址关联的程序访问键与所述存储访问控制字段相同,才允许从所需数据块执行取回,其中所述取回与所述虚拟地址关联,所述程序访问键由程序状态字或所执行程序指令的操作数中的任意一个提供。
4.如权利要求2中所述的方法,其中响应于未启用所述增强的DAT工具,执行以下操作:
从所述段表表项获取页表的起始地址并使用所述虚拟地址的页索引部分引用所述页表中的页表表项;
从所述页表表项获取主存储装置中的小数据块的页-帧实地址,所述小数据块的大小小于所述大数据块并包括与存储键关联的4KB的数据块,所述存储键包括存储访问控制字段和存储取回保护字段,其中主存储装置中的所需真实数据块的转换后的地址包括所述页-帧实地址与所述虚拟地址的字节-索引部分的组合;
仅响应于所述程序访问控制字段与所述存储访问控制字段匹配,才允许到所需真实存储块的存储,其中所述存储与所述虚拟地址关联;以及
仅响应于a)已禁用所述存储取回保护字段,或者b)已启用所述存储取回保护字段并且与所述虚拟地址关联的程序访问键与所述存储访问控制字段相同,才允许从所需数据块执行取回,其中所述取回与所述虚拟地址关联,所述程序访问键由程序状态字或所执行程序指令的操作数中的任意一个提供。
5.如权利要求1中所述的方法,其中响应于所述程序访问键为零,允许到所述所需存储块的存储以及从所述所需存储块的取回,其中所述存储和取回与所述虚拟地址关联。
6.如权利要求1中所述的方法,其中响应于已启用所述访问有效性字段和所述取回保护字段,并响应于尝试从所述所需存储块执行取回操作以及所述段访问控制字段与所述程序访问控制字段不匹配,指示保护异常,所述取回操作与所述虚拟地址关联。
7.如权利要求1中所述的方法,其中判定是否已启用所述访问有效性字段进一步包括:判定以下项中的任意一个:a)是否已禁用控制寄存器的存储-保护-忽略字段,或者b)是否已启用所述存储-保护-忽略字段但未启用所述段访问控制字段。
8.如权利要求1中所述的方法,还包括:
将在所述虚拟地址的所述转换中使用的信息存储在至少一个转换后备缓冲器中;以及
使用来自所述转换后备缓冲器的所存储的信息而不是所述转换表层次结构来执行后续虚拟地址到主存储装置中的所述数据块的所述绝对地址的后续转换。
9.如权利要求1中所述的方法,其中响应于所述转换不是机器体系结构所固有的,还包括:
标识用于仿真所述转换的预定软件例程,所述预定软件例程包括多个指令;以及
执行所述预定软件例程。
10.如权利要求1中所述的方法,其中所述大数据块包括大小至少为1MB的块。
11.一种系统,包括适于执行如任一上述方法权利要求中所述的方法的所有步骤的装置。
12.一种计算机程序,包括当所述计算机程序在计算机系统上执行时,用于执行如任一上述方法权利要求中所述的方法的所有步骤的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/972,688 | 2008-01-11 | ||
US11/972,688 US8677098B2 (en) | 2008-01-11 | 2008-01-11 | Dynamic address translation with fetch protection |
PCT/EP2009/050050 WO2009087133A1 (en) | 2008-01-11 | 2009-01-05 | Dynamic address translation with fetch protection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101911025A true CN101911025A (zh) | 2010-12-08 |
CN101911025B CN101911025B (zh) | 2012-11-07 |
Family
ID=40473424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980101961.9A Active CN101911025B (zh) | 2008-01-11 | 2009-01-05 | 带有取回保护的动态地址转换的方法和系统 |
Country Status (12)
Country | Link |
---|---|
US (6) | US8677098B2 (zh) |
EP (1) | EP2229632B1 (zh) |
JP (1) | JP5373817B2 (zh) |
KR (1) | KR101175615B1 (zh) |
CN (1) | CN101911025B (zh) |
CY (1) | CY1114228T1 (zh) |
DK (1) | DK2229632T3 (zh) |
ES (1) | ES2408189T3 (zh) |
PL (1) | PL2229632T3 (zh) |
PT (1) | PT2229632E (zh) |
SI (1) | SI2229632T1 (zh) |
WO (1) | WO2009087133A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557302A (zh) * | 2015-09-28 | 2017-04-05 | 瑞萨电子株式会社 | 数据处理器 |
CN106919517A (zh) * | 2015-12-28 | 2017-07-04 | 点序科技股份有限公司 | 闪存及其访问方法 |
CN110235109A (zh) * | 2017-01-19 | 2019-09-13 | 国际商业机器公司 | 在虚拟环境中存储/重新存储受保护存储控制 |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8151083B2 (en) | 2008-01-11 | 2012-04-03 | International Business Machines Corporation | Dynamic address translation with frame management |
US8677098B2 (en) | 2008-01-11 | 2014-03-18 | International Business Machines Corporation | Dynamic address translation with fetch protection |
US8041922B2 (en) * | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
US8037278B2 (en) | 2008-01-11 | 2011-10-11 | International Business Machines Corporation | Dynamic address translation with format control |
US8082405B2 (en) * | 2008-01-11 | 2011-12-20 | International Business Machines Corporation | Dynamic address translation with fetch protection |
US8019964B2 (en) | 2008-01-11 | 2011-09-13 | International Buisness Machines Corporation | Dynamic address translation with DAT 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 |
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 |
US8117417B2 (en) | 2008-01-11 | 2012-02-14 | International Business Machines Corporation | Dynamic address translation with change record override |
US8335906B2 (en) * | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
US8417916B2 (en) * | 2008-01-11 | 2013-04-09 | International Business Machines Corporation | Perform frame management function instruction for setting storage keys and clearing blocks of main storage |
US8086811B2 (en) | 2008-02-25 | 2011-12-27 | International Business Machines Corporation | Optimizations of a perform frame management function issued by pageable guests |
US8095773B2 (en) * | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
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 |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | 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 |
WO2015075673A1 (en) | 2013-11-21 | 2015-05-28 | Green Cache AB | Systems and methods for reducing first level cache energy by eliminating cache address tags |
US20150261693A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Dynamic storage key assignment |
US9582295B2 (en) | 2014-03-18 | 2017-02-28 | International Business Machines Corporation | Architectural mode configuration |
US9916185B2 (en) * | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
US10031849B2 (en) | 2014-05-29 | 2018-07-24 | Samsung Electronics Co., Ltd. | Tracking alternative cacheline placement locations in a cache hierarchy |
US10353826B2 (en) | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
US10467159B2 (en) | 2017-07-14 | 2019-11-05 | Arm Limited | Memory node controller |
US10534719B2 (en) | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
US10613989B2 (en) | 2017-07-14 | 2020-04-07 | Arm Limited | Fast address translation for virtual machines |
US10565126B2 (en) | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
US10592424B2 (en) | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
US10489304B2 (en) * | 2017-07-14 | 2019-11-26 | Arm Limited | Memory address translation |
CN110096457B (zh) * | 2018-01-31 | 2023-05-23 | 联发科技股份有限公司 | 硬件控制系统及硬件控制方法 |
US10884850B2 (en) | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
GB2578099B (en) * | 2018-10-15 | 2021-05-12 | Advanced Risc Mach Ltd | Memory access control |
US10838631B2 (en) * | 2019-02-25 | 2020-11-17 | International Business Machines Corporation | Detection of alteration of storage keys used to protect memory |
US10831480B2 (en) | 2019-02-25 | 2020-11-10 | International Business Machines Corporation | Move data and set storage key instruction |
US11151267B2 (en) | 2019-02-25 | 2021-10-19 | International Business Machines Corporation | Move data and set storage key based on key function control |
JP7238178B2 (ja) * | 2020-02-04 | 2023-03-13 | キオクシア株式会社 | メモリ装置及びメモリ装置を制御する方法 |
CN114070134B (zh) * | 2022-01-05 | 2022-05-06 | 山东汉德自动化控制设备有限公司 | 一种变频钻机电控装置及其控制方法 |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1984002784A1 (en) * | 1982-12-30 | 1984-07-19 | Ibm | Virtual memory address translation mechanism with controlled data persistence |
US4669043A (en) * | 1984-02-17 | 1987-05-26 | Signetics Corporation | Memory access controller |
US4972338A (en) | 1985-06-13 | 1990-11-20 | Intel Corporation | Memory management for microprocessor system |
JPS62208147A (ja) | 1986-03-10 | 1987-09-12 | Hitachi Ltd | 拡張アドレス変換装置 |
JP2635058B2 (ja) | 1987-11-11 | 1997-07-30 | 株式会社日立製作所 | アドレス変換方式 |
US5008811A (en) * | 1988-02-10 | 1991-04-16 | International Business Machines Corp. | Control mechanism for zero-origin data spaces |
US5058003A (en) | 1988-12-15 | 1991-10-15 | International Business Machines Corporation | Virtual storage dynamic address translation mechanism for multiple-sized pages |
US5617554A (en) | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
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 |
JPH1091597A (ja) | 1996-08-13 | 1998-04-10 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ装置におけるトークンにもとづく命令の直列化 |
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 |
US6415305B1 (en) | 1998-04-20 | 2002-07-02 | Microsoft Corporation | Method for displaying editable characters in a divided table cell |
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 |
JP2004328771A (ja) | 1999-02-05 | 2004-11-18 | Sony Corp | エンコーディング装置及び方法、デコーディング装置及び方法、並びに記録媒体 |
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 |
US6879989B2 (en) | 1999-08-16 | 2005-04-12 | International Business Machines Corporation | Modification system for supporting localized data changes in a mobile device |
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 |
US6981125B2 (en) | 2003-04-22 | 2005-12-27 | International Business Machines Corporation | Method and apparatus for managing shared virtual storage in an information handling system |
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 |
US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
EP1517504B1 (en) * | 2003-09-19 | 2007-01-24 | Sun Microsystems, Inc. | Method and apparatus for protocol processing in a computer system applying memory address translation |
US7234037B2 (en) | 2003-11-25 | 2007-06-19 | International Business Machines Corporation | Memory mapped Input/Output operations |
US7941799B2 (en) | 2004-05-27 | 2011-05-10 | International Business Machines Corporation | Interpreting I/O operation requests from pageable guests without host intervention |
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 |
GB2415578B (en) | 2004-06-23 | 2007-07-04 | Hewlett Packard Development Co | Restricting virus access to a network |
CN100377117C (zh) * | 2005-07-14 | 2008-03-26 | 中国科学院计算技术研究所 | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 |
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 | 株式会社東芝 | メモリ保護装置、メモリ保護システムおよびメモリ保護方法 |
US8417916B2 (en) | 2008-01-11 | 2013-04-09 | International Business Machines Corporation | Perform frame management function instruction for setting storage keys and clearing blocks of main storage |
US8335906B2 (en) | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
US8041922B2 (en) | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
US8117417B2 (en) | 2008-01-11 | 2012-02-14 | International Business Machines Corporation | Dynamic address translation with change record override |
US8677098B2 (en) | 2008-01-11 | 2014-03-18 | International Business Machines Corporation | Dynamic address translation with fetch protection |
US8151083B2 (en) | 2008-01-11 | 2012-04-03 | International Business Machines Corporation | Dynamic address translation with frame management |
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 |
US8037278B2 (en) | 2008-01-11 | 2011-10-11 | International Business Machines Corporation | Dynamic address translation with format control |
US8082405B2 (en) | 2008-01-11 | 2011-12-20 | 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 |
US8019964B2 (en) | 2008-01-11 | 2011-09-13 | International Buisness Machines Corporation | Dynamic address translation with DAT protection |
US8095773B2 (en) | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
-
2008
- 2008-01-11 US US11/972,688 patent/US8677098B2/en active Active
-
2009
- 2009-01-05 PL PL09700829T patent/PL2229632T3/pl unknown
- 2009-01-05 EP EP09700829.6A patent/EP2229632B1/en active Active
- 2009-01-05 JP JP2010541763A patent/JP5373817B2/ja active Active
- 2009-01-05 SI SI200930596T patent/SI2229632T1/sl unknown
- 2009-01-05 PT PT97008296T patent/PT2229632E/pt unknown
- 2009-01-05 KR KR1020107015298A patent/KR101175615B1/ko active IP Right Grant
- 2009-01-05 ES ES09700829T patent/ES2408189T3/es active Active
- 2009-01-05 WO PCT/EP2009/050050 patent/WO2009087133A1/en active Application Filing
- 2009-01-05 DK DK09700829.6T patent/DK2229632T3/da active
- 2009-01-05 CN CN200980101961.9A patent/CN101911025B/zh active Active
-
2013
- 2013-05-16 CY CY20131100390T patent/CY1114228T1/el unknown
- 2013-12-31 US US14/144,664 patent/US9021225B2/en active Active
-
2015
- 2015-02-27 US US14/634,020 patent/US9378128B2/en active Active
-
2016
- 2016-05-20 US US15/159,938 patent/US9934159B2/en active Active
-
2017
- 2017-12-04 US US15/830,160 patent/US10423539B2/en active Active
-
2019
- 2019-06-20 US US16/447,258 patent/US10977190B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557302A (zh) * | 2015-09-28 | 2017-04-05 | 瑞萨电子株式会社 | 数据处理器 |
CN106557302B (zh) * | 2015-09-28 | 2023-05-16 | 瑞萨电子株式会社 | 数据处理器 |
CN106919517A (zh) * | 2015-12-28 | 2017-07-04 | 点序科技股份有限公司 | 闪存及其访问方法 |
CN106919517B (zh) * | 2015-12-28 | 2021-01-26 | 点序科技股份有限公司 | 闪存及其访问方法 |
CN110235109A (zh) * | 2017-01-19 | 2019-09-13 | 国际商业机器公司 | 在虚拟环境中存储/重新存储受保护存储控制 |
CN110235109B (zh) * | 2017-01-19 | 2023-05-05 | 国际商业机器公司 | 在虚拟环境中存储/重新存储受保护存储控制 |
Also Published As
Publication number | Publication date |
---|---|
KR20100126269A (ko) | 2010-12-01 |
US20160267017A1 (en) | 2016-09-15 |
US20090182971A1 (en) | 2009-07-16 |
JP5373817B2 (ja) | 2013-12-18 |
KR101175615B1 (ko) | 2012-08-22 |
WO2009087133A1 (en) | 2009-07-16 |
US20190303301A1 (en) | 2019-10-03 |
US9378128B2 (en) | 2016-06-28 |
JP2011509470A (ja) | 2011-03-24 |
SI2229632T1 (sl) | 2013-06-28 |
US9021225B2 (en) | 2015-04-28 |
DK2229632T3 (da) | 2013-06-03 |
US20140115295A1 (en) | 2014-04-24 |
US9934159B2 (en) | 2018-04-03 |
WO2009087133A9 (en) | 2009-09-24 |
PT2229632E (pt) | 2013-05-28 |
CN101911025B (zh) | 2012-11-07 |
PL2229632T3 (pl) | 2013-08-30 |
ES2408189T3 (es) | 2013-06-18 |
CY1114228T1 (el) | 2016-08-31 |
EP2229632B1 (en) | 2013-04-10 |
US20150169437A1 (en) | 2015-06-18 |
US8677098B2 (en) | 2014-03-18 |
US10977190B2 (en) | 2021-04-13 |
US20180089103A1 (en) | 2018-03-29 |
US10423539B2 (en) | 2019-09-24 |
EP2229632A1 (en) | 2010-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101911025B (zh) | 带有取回保护的动态地址转换的方法和系统 | |
CN101911024B (zh) | 带有帧管理的动态地址转换 | |
CN101911022B (zh) | 具有格式控制的动态地址转换 | |
CN101960432B (zh) | 使用转换异常限定符的动态地址转换 | |
US9158711B2 (en) | Creating a program product or system for executing a perform frame management instruction | |
CN102906721B (zh) | 与访问地址空间并行地对地址空间调整大小 | |
KR101442429B1 (ko) | 프로세서의 펑션 쿼리를 위한 펑션 가상화 장치 | |
US11809870B2 (en) | Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor | |
DK2862089T3 (en) | COMPARISON AND REPLACEMENT OF DATE TABLE ENTRY | |
US8631216B2 (en) | Dynamic address translation with change record override | |
TWI771441B (zh) | 用於控制指令執行的設備與方法 | |
US20070271432A1 (en) | Facilitating use of storage access keys to access storage | |
TW201843584A (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 |