CN101911022B - 具有格式控制的动态地址转换 - Google Patents
具有格式控制的动态地址转换 Download PDFInfo
- Publication number
- CN101911022B CN101911022B CN200980102001.4A CN200980102001A CN101911022B CN 101911022 B CN101911022 B CN 101911022B CN 200980102001 A CN200980102001 A CN 200980102001A CN 101911022 B CN101911022 B CN 101911022B
- Authority
- CN
- China
- Prior art keywords
- address
- conversion
- district
- virtual address
- access
- 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
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/1009—Address translation using page tables, e.g. page table structures
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/652—Page size control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及具有格式控制的动态地址转换。提供了一种增强型动态地址转换设备。在一个实施例中,获取要进行转换的虚拟地址和转换表层级结构转换表的最初的起始地址。所述虚拟地址的索引部分被用于引用转换表中的项。如果格式控制字段被启用,则从转换表项获取主存储中的大的数据块的帧地址。所述大的数据块是大小至少为1M字节的块。然后,所述帧地址与所述虚拟地址的偏移部分结合以形成主存储中的大的数据块内的期望数据块的转换地址。然后,存取由所述转换地址寻址的期望的大的数据块。
Description
技术领域
本发明一般涉及用于转换计算机***中的虚拟地址的***和方法,更具体地涉及将计算机***中的数据块的虚拟地址转换为实地址或绝对地址的***和方法,该计算机***具有其中通过转换表层级结构发生虚拟地址转换的动态地址转换设备。
背景技术
动态地址转换提供了如下的能力:在任意时刻中断程序执行、在诸如直接存取存储设备的辅助存储中记录它及其数据、并在随后的时间将程序和数据返回到不同的主存储位置以便重新执行。将程序及其数据在主存储和辅助存储之间转换可以零碎(piecemeal)进行,将信息返回到主存储可响应于CPU(中央处理单元)需要执行它时对其试图存取而发生。这些功能可以不改变或不检验程序及其数据而执行,不需要在重定位的程序中有任何明确的程序设计约定,并且除涉及时间延迟外不干扰程序执行。
利用操作***的适当支持,动态地址转换设备可被用来向用户提供一种***,其中存储看上去比在配置中可用的主存储大。这种明显的主存储通常被称为虚拟存储,用来标识虚拟存储中的位置的地址通常被称为虚拟地址。用户的虚拟存储可以远远超过主存储的大小,该主存储在配置中可用且通常是维持在辅助存储中。虚拟存储被认为是由通常称作页(也被称为段和区)的数据块组成。只有最近被称作虚拟存储的页被分配占据物理主存储的块。当用户引用未在主存储中出现的虚拟存储的页时,它们被带入以替换主存储中较小可能需要的页(pace)。在某些情况下,虚拟存储被分配给主存储达一长段时间(或永久性地),而不论所述存储是否被引用。存储的调换(swapping)页可以在用户不知晓的情况下由操作***执行。
程序使用地址(或虚拟地址)来存取虚拟存储。所述程序可使用虚拟地址从虚拟存储提取(fetch)指令或加载数据或存储来自虚拟存储的数据。与虚拟存储范围相关联的虚拟地址定义了一个地址空间。在操作***的适当支持下,动态地址转换设备可用于提供多个地址空间。这些地址空间可以被用来提供用户之间的隔离度。这种支持可以包括对每个用户完全不同的地址空间,从而提供了完全的隔离,或者可通过将每个地址空间的一部分映射到单一的公共存储区来提供共享区。还有,提供了允许半特许程序存取多于一个这种地址空间的指令。
动态地址转换提供了来自多个不同的地址空间的虚拟地址的转换。这些地址空间被称作主地址空间、二次地址空间和存取寄存器指定的地址空间。特许程序也可导致初始地址空间(home address space)被存取。动态地址转换可以被指定由CPU生成的指令和数据地址。
所需要的是提供现有技术迄今未知的额外的功能、能力和保护的增强型动态地址转换设备。
发明内容
提供了用于将计算机***的主存储中的期望数据块的虚拟地址转换成实地址或绝对地址的增强型动态地址转换设备的***、方法和计算机程序产品,该计算机***具有带有用于转换的转换表层级结构的机器架构。实地址可以受到加前缀而形成绝对地址。
在一个实施例中,首先获取要进行转换的虚拟地址和获取转换表层级结构转换表的最初的起始地址。所述虚拟地址的索引部分被用于引用转换表中的项。确定在转换表项中的格式控制字段(field)是否被启用。如果格式控制字段被启用,则从转换表项获取主存储中的大的数据块的帧地址。所述大的数据块包括大小至少为1M字节的块。然后,所述帧地址与所述虚拟地址的偏移部分结合以形成主存储中的大的数据块内的期望数据块的转换地址。然后,存取由所述转换地址寻址的期望的大的数据块。在另一实施例中,从转换表项获取无效的表项(entry)字段。如果相应的无效表项字段被启用,则异常动作开始。
在另一实施例中,从转换表项获取限制信息。所述限制信息用于限制对所述大的块的限制部分的存取。对由转换地址寻址的期望的大的数据块的存取随后被允许仅对数据块的受限制部分进行存取。
下面将结合某些例示的实施例描述本发明。应该理解,本领域的技术人员可进行各种变更和修改,而不背离本发明的精神或范围。
附图说明
在附图中,各视图中的相似的附图标记是指功能相同或类似的部件,各视图连同以下的详细说明被并入和形成本说明书的一部分,用于进一步例示各实施例并解释根据本发明的各种原理和全部优势。
图1例示了其中增强型动态地址被执行转换的主机计算机***的实施例;
图2提供了一个仿***机架构的主机计算机***的仿***机计算机***的例子;
图3例示了程序状态字是如何被用来为虚拟地址的动态地址转换确定有效ASCE的一个实施例;
图4例示了其中将在图3中确定的有效ASCE用于确定在虚拟地址转换中使用的转换表层级结构中的最高转换表的一个实施例;
图5A例示了使用转换表层级结构到段表级进行虚拟地址的动态地址转换的过程的一个实施例;
图5B例示了其中的段表项(STE)格式控制(FC)为0的图5A的动态地址转换的继续;
图5C例示了其中的段表项(STE)格式控制(FC)为1的图5A的动态地址转换的继续;
图6例示了增强型动态地址转换(eDAT)以获取段表项中的格式控制字段的一个实施例的流程图;
图7例示了从图6的节点614的流程图的继续;
图8例示了从图6的节点616的流程图的继续;
图9例示了确定要被应用到由转换的虚拟地址寻址的期望的数据块的DAT保护级的实施例的流程图;
图10例示了从图8的节点822的流程图的继续,其确定要被应用到由转换的虚拟地址寻址的期望的数据块的存取控制保护级别;
图11例示了从图8的节点822的流程图的继续,其确定要被应用到由转换的虚拟地址寻址的期望的数据块的提取保护级;
图12例示了从图8的节点822的流程图的继续,其中从一个段表项获取改变记录重写字段(change recording override field);和
图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时,该段表项还包括以下内容:
段帧绝对地址(而不是页表起始),指定1兆字节块的绝对存储位置。
存取控制位和提取保护位,可以选择性地替换段的各存储密钥中的相应位来使用。
确定段表项中的存取控制位和提取保护位的有效性的位。
改变记录重写,指示是否在段的各存储密钥中可绕过改变位。
主机计算机***
参考图1,绘出了主机计算机***100的代表性组件。组件的其它布置也可以实施在计算机***中,这是本领域所公知的。
主机计算机环境优选基于纽约州阿蒙克(Armonk)的国际商业机器公司所提供的 在(2007年4月)出版物编号SA22-7832-05第六版的《Principles of Operation》中有更完全的描述,这里通过引用将其整体并入。基于的计算环境包括例如eServer和二者皆由提供。
代表性的主机计算机100包括与主存储(计算机存储器102)和I/O接口通信的一个或多个CPU 101,该I/O接口到存储设备111和网络110,用于与其它的计算机或存储区网络(SAN)等通信。CPU可具有动态地址转换(DAT)设备(功能或单元)103用于将程序地址(虚拟地址)转换到存储器的实地址。DAT设备通常包括用于缓存转换的转换后备缓冲器(translation lookaside buffer)107,以便对计算机存储器102的块的较后的存取不需要地址转换迟滞。通常是在计算机存储器102和处理器101之间采用缓存109。缓存109可以是层级结构,具有可为多于一个CPU所用的大的缓存以及在大缓存和每一个CPU之间的更小、更快的(低级)缓存。在一些实现(实施方式)中,较低级的缓存被分割(split)以为指令提取和数据访问提供单独的低级缓存。在一个实施例中,由指令提取单元104通过缓存109从存储器102提取指令。该指令在指令解码单元(106)中解码,并被分派(在一些实施例中,和其它指令一起)到指令执行单元108。通常采用几个执行单元108,例如算术执行单元、浮点执行单元和分支指令执行单元。指令由执行单元执行,根据需要从指令指定的寄存器或存储器存取操作数。如果从存储器(内存)(memory)102存取(加载或存储)操作数,则负载存储单元105通常在正执行的指令的控制下处理存取。
在一个实施例中,本发明可由软件(有时称为授权内码(LIC)、固件、微码(micro-code)、毫码(milli-code)、微微码(pico-code)等,其中任何一个与本发明一致)实现。实施本发明的软件程序代码通常是由计算机***100的处理器(也称作CPU(中央处理单元))101从诸如CD-ROM驱动器、磁带驱动器或硬盘驱动器的长期储存介质111存取。软件程序代码可以在与数据处理***一起使用的多种已知介质中的任一个上实施,例如软盘、硬盘驱动器或CD-ROM。可以在这种介质上分发代码,或者可以分发给用户,通过网络110从计算机存储器102或计算机***的存储分发到其它计算机***,以便由这种其它***的用户使用。
可替换地,程序代码可以在存储器102上实施,并由处理器101使用处理器总线存取。这种程序代码包括控制各计算机部件和一个或多个应用程序的功能和相互作用(交互)的操作***。程序代码通常是从高密度存储介质111分页到高速存储器102,在那里可用于由处理器101处理。在存储器中、在物理介质上实施软件程序代码和/或通过网络分发软件代码的技术和方法是众所周知的,在这里不做进一步的讨论。当在有形介质(包括但不限于电子存储器模块(RAM)、快闪存储器、光盘(CD)、DVD、磁带等)上创建和存储程序代码时,它往往被称为“计算机程序产品”。计算机程序产品介质通常是由优选在计算机***中的处理电路可读,用于由处理电路执行。
在图2中,提供了仿***机架构的主机计算机***100的仿真的主机计算机***201的一个例子。在仿真的主机计算机***201中,主处理器(CPU)208是仿真的主处理器(或虚拟主机处理器),包括具有与主机计算机100的处理器101所用的指令集架构不同的原生指令集架构的仿真处理器207。仿真的主机计算机***201具有可由仿真处理器207存取的存储器202。在这个示例的实施例中,存储器207分区(partition)为主机计算机存储器102部分和仿真例程203部分(提供仿真的例程可以是主机存储器的一部分)。根据主机计算机架构,主机计算机存储器102对仿***机计算机201的程序可用。仿真处理器207执行架构的架构指令集的原生指令而不是仿真处理器208的原生指令、从仿真例程存储器203获取的原生指令,并可以通过采用序列与存取/解码例程中获取的一个或多个指令,存取用于执行来自主机计算机存储器102中的程序的主机指令,该例程解码所存取的主机指令以确定用于仿真存取的主机指令的功能的原生指令执行例程。
为主机计算机***100架构定义的其它设备(设施)可以用架构的设备(设施)例程来仿真,例如,包括诸如通用目的寄存器、控制寄存器、动态地址转换和I/O子***支持和处理器缓存等设备。仿真例程还可以利用在仿真处理器207中可用的功能(诸如通用寄存器和虚拟地址的动态转换)来改善仿真例程的性能。也可以提供特殊的硬件和减负载引擎(Off Load Engine)来协助处理器207仿***机计算机100的功能。
计算机处理器和寄存器
在一个实施例中,CPU的程序指令功能通过通信总线与多个寄存器通信。通信总线可以是在CPU的内部或外部。一些寄存器可以是只读的。其它硬件和/或软件还可以读/写可以由CPU存取(访问)的一个或多个寄存器。指令操作代码(或运算码)(opcode)确定将在任何特定的机器指令操作中使用的寄存器的类型。
通用寄存器
指令可以标识(指定)(designate)一个或多个16通用寄存器中的信息。通用寄存器可用作地址算术中的基址寄存器和索引寄存器并作为通用算术和逻辑操作中的累加器。每个寄存器包括64位位置。通用寄存器由数字0-15识别(标识)(identify),并由指令中的4位R字段标识。一些指令通过有几个R字段来提供寻址(address)多个通用寄存器。对于一些指令,使用一个具体的通用寄存器是由指令的R字段暗示而不是明确标识的。
对于某些操作,两个相邻的通用寄存器的位32-63或位0-63耦合,分别提供了64-位或128位的格式。在这些操作中,程序必须标识包括最左边(高序位)32或64位的偶数编号的寄存器。下一个更高编号的寄存器包括了最右边(低序位)的32或64位。除了它们在通用算术和逻辑操作中用作累加器之外,16个通用寄存器中的15个还被用作地址生成中的基址寄存器和索引寄存器。在这种情况下,寄存器被指令中的4位B字段或X字段标识。B或X字段中的0值指定不施加基址或索引,因此,通用寄存器0不能被标识为包括基址或索引。
控制寄存器
控制寄存器提供在程序状态字之外维护和操作控制信息。CPU有16个控制寄存器,每一个控制寄存器有64位位置。寄存器中的位位置被分配给***中的诸如程序事件记录的特定设备,并被用于指定操作能够进行或供给设备所需的特别信息。控制寄存器由数字0-15识别,由指令LOAD CONTROL和STORE CONTROL中的四位R字段来标识。多个控制寄存器能够由这些指令来寻址。
控制寄存器1
控制寄存器1包括主地址空间控制单元(PASCE)。在一个实施例中,根据寄存器中的实空间控制位(R),控制寄存器1具有如下的两种格式之一:
主区-表或
段-表标识(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。否则,认定(recognize)ASCE类型异常(exception)。
主区表或段表长度(TL):控制寄存器1中主区表标识或段表标识的位62或63以4,096字节单元指定主区表或段表的长度,从而使主区表或段表的长度是可以以512的倍数项而可变。以4,096字节单元的主区表或段表的长度比TL值多1。长度字段的内容被用来证实(establish)要通过所述表转换的虚拟地址(RFX、RSX、RTX或SX)是否标识落在所述表中的项。
主实空间标示起始:控制寄存器1中的主实空间标识的位0-51在右边加12个0形成一个64位地址,可用于形成和使用提供虚拟的等同实转换以引用主地址空间的转换后备缓冲器项。虽然这个地址只是用作一个标示而不用于执行存储引用,但它仍须是有效地址;否则,当控制寄存器1的内容被使用时,不正确的转换后备缓冲器项可能会被使用。
控制寄存器1的以下位未被分配并被忽略:位52、53和59,如果寄存器包括区表标识或段表标识;和位52、53和59-63,如果寄存器包括实空间标识。
控制寄存器7
控制寄存器7包括二级地址空间控制单元(SASCE)。在一个实施例中,依据寄存器中的实空间控制位(R),控制寄存器7有以下两种格式之一:
二级区-表或
段-表标识(R=0)
二级实空间标识(R=1)
控制寄存器7的格式
控制寄存器13
控制寄存器13包括初始(Home)地址空间控制单元(HASCE)。在一个实施例中,依据寄存器中的实空间控制位(R),控制寄存器13有以下两种格式之一:
初始区-表或
段-表标识(R=0)
初始实空间标识(R=1)
控制寄存器13的格式
存取寄存器
CPU有16个编号为0-15的存取寄存器。存取寄存器包括含有ASCE的间接规范(specification)的32位位置。ASCE是动态地址转换(DAT)机制用来将引用转换到相应的地址空间的一个参数。当CPU处于称作存取寄存器模式(由程序状态字中的位控制)的模式时,用于为存储操作数引用指定逻辑地址的指令B字段标识存取寄存器,并且存取寄存器指定的ASCE由DAT使用以进行引用。对于一些指令,使用R字段而不是B字段。提供指令来加载和存储存取寄存器的内容,并将一个存取寄存器的内容移到另一个存取寄存器。
存取寄存器1-15中的每一个都能标识任何地址空间,包括当前指令空间(主地址空间)。存取寄存器0标识主指令空间。当寄存器1-15中的一个被用来标识一个地址空间时,CPU确定哪个地址空间是通过转换存取寄存器的内容来标识。当存取寄存器0被用于标识地址空间时,CPU将存取寄存器处理成标识主指令空间,并且它不检查存取寄存器的实际内容。因此,16个存取寄存器能够在任何一个时间标识主指令空间和最多15个其它空间。
程序状态字(PSW)
程序状态字包括指令地址、状态码和用来控制指令排序(sequencing)和确定CPU的状态的其它信息。活动或控制程序状态字被称作当前程序状态字。它管理正在执行的程序。
CPU具有中断功能,它允许CPU响应于异常条件和外部刺激而快速切换到另一个程序。当中断发生时,CPU为该特定类别的中断将当前程序状态字放在称作旧程序状态字位置的分配的存储位置。CPU从第二个分配的存储位置提取一个新的程序状态字。这个新的程序状态字确定要执行的下一个程序。当它已经完成处理中断时,处理中断的程序可能会重新加载旧程序状态字,使其再次成为当前程序状态字,以便中断的程序能够继续。
有6类中断:外部、I/O、机器检查、程序、重新启动和监督(supervisor)调用。每个类有在实存储中永久分配的不同的一对旧程序状态字和新程序状态字位置。
当前程序状态字
CPU中的当前程序状态字包括执行当前活动程序所需的信息。程序状态字是128位长,包括指令地址、状态码和其它控制字段。一般地,程序状态字是用来控制指令排序并保持和指示与当前正在执行的程序有关的CPU的很多状态。额外的控制和状态信息包括在控制寄存器和永久分配的存储位置中。CPU的状态可以通过加载新的程序状态字或程序状态字的一部分而改变。
通过存储当前的程序状态字以保存CPU的状态、然后加载新的程序状态字,在CPU中断期间切换控制。LOAD PSW或LOAD PSWEXTENDED的执行或成功结束最初程序加载顺序(sequence)引入新的程序状态字。指令地址通过顺序指令执行而更新,为成功的分支所替代。提供了在一部分程序状态字上操作的其它指令。
当中断或执行改变程序状态字的指令完成时,新的或修改的程序状态字变为活动(即,引入当前程序状态字的信息对CPU承担控制)。对于与改变程序状态字的指令相关的程序事件记录(PER)的中断在PER掩码(mask)的控制下发生,PER掩码在操作开始时有效。程序状态字的位0-7统称为***掩码。在一个实施例中,程序状态字具有如下的格式:
程序状态字的格式
下面是选择的程序状态字字段的功能的简要概述。
DAT模式(T):位5控制用于存取存储的隐含的逻辑和指令地址的动态地址转换是否发生。当位5是0时,DAT是关闭的,逻辑和指令地址被处理成实地址。当位5是1时,DAT是开通的,调用动态地址转换机制。
PSW密钥:位8-11形成CPU用于存储引用的存取密钥。如果引用受密钥控制的保护,当存储信息或当信息从提取受保护的位置提取时,PSW密钥与存储密钥匹配。但是,对于MOVE TO PRIMARY、MOVE TO SECONDARY、MOVE WITH KEY、MOVE WITHSOURCE 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开始的分配的连续的绝对地址,地址被以整个4K字节块分配在整数边界上。当试图使用还没有被分配物理位置的块中的绝对地址时,被认定异常。在某些模型上,可提供允许操作者改变绝对地址和物理位置之间的对应的存储重构控制。但是,在任何一个时间,物理位置并不与多于一个的绝对地址相关联。由根据其绝对地址排序的字节位置构成的存储被称为绝对存储。
实地址
实地址识别实存储中的位置。当使用实地址存取主存储时,它通过加前缀(prefix)而转换为形成绝对地址。在任何时间,对配置中的每一个CPU,有从实地址到绝对地址的映射。当CPU使用实地址来存取主存储时,该实地址可能会被加前缀而转换为绝对地址。特别的转换由CPU的前缀寄存器中的值定义。由根据其实地址排序的字节位置构成的存储被称为实存储。
虚拟地址
虚拟地址识别虚拟存储中的位置。当使用虚拟地址来存取主存储时,该虚拟地址通过动态地址转换被转换为或者受到加前缀而形成绝对地址的实地址或者直接转换为绝对地址。
主虚拟地址
主虚拟地址是通过主地址空间控制单元(PASCE)转换的虚拟地址。当处于主空间模式时,逻辑地址被处理成主虚拟地址。当处于主空间模式、二级空间模式或存取寄存器模式时,指令地址被处理成主虚拟地址。MOVE TO PRIMARY的第一个操作数地址和MOVE TOSECONDARY的第二个操作数地址被处理成主虚拟地址。
二级虚拟地址
二级虚拟地址是通过二级地址空间控制单元(SASCE)转换的虚拟地址。当处于二级空间模式时,逻辑地址被处理成二级虚拟地址。MOVE TO PRIMARY的第二个操作数地址和MOVE TOSECONDARY的第一个操作数地址被处理成二级虚拟地址。
AR标识的虚拟地址
AR标识的虚拟地址是通过存取寄存器指定的地址空间控制单元转换的虚拟地址。在处于存取寄存器模式时,逻辑地址被处理成AR标识的虚拟地址。
初始(home)虚拟地址
初始虚拟地址是通过初始地址空间控制单元(HASCE)转换的虚拟地址。在处于初始空间模式时,逻辑地址和指令地址都被处理成初始虚拟地址。
指令地址
用于从存储提取指令的地址被称作指令地址。
指令地址在实模式下被处理成实地址,在主空间模式、二级空间模式或存取寄存器模式下被处理成主虚拟地址,在初始空间模式中被处理成初始虚拟地址。在当前程序状态字中的指令地址和EXECUTE的目标地址是指令地址。
有效地址
在某些状况下,可以方便地使用术语“有效地址”。有效地址是在用动态地址转换或加前缀进行任何的转换之前存在的地址。有效的地址可以在寄存器中直接指定,或者可以从地址算术中产生。地址算术是基址和位移的相加或基址、索引和位移的相加。
加前缀
加前缀提供了为每一个CPU将实地址范围0-8191分配到绝对存储的不同的块中的能力,因此允许多于一个CPU共享主存以便以最小的干扰来同时运行,特别是在中断处理过程中。加前缀导致范围0-8191中的实地址一一对应到由CPU的前缀寄存器的位位置0-50中的值识别的8K字节的绝对地址的块(前缀区)和由前缀寄存器中的值识别的实地址块一一对应到绝对地址0-8191。其余的实地址与相应的绝对地址相同。这种转换允许每一个CPU存取所有的主存储,包括第一个8K字节和由其它CPU的前缀寄存器标识的位置。
前缀是包含在前缀寄存器的位位置0-50中的51位的数量。在一个实施例中,前缀寄存器具有如下的格式:
前缀寄存器的格式
当应用加前缀时,依据实地址的位0-50,通过使用下述规则之一,实地址被转变(transform)为绝对地址:
如果全为零,地址的位0-50用前缀的位0-50代替。
如果等于前缀的位0-50,地址的位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后,转换过程对所有的四种类型的虚拟地址是相同的。
地址转换模式
有效地址是在由动态地址转换或加前缀进行任何的转换之前存在的地址(虚拟地址)。程序状态字中的控制动态地址转换的3个位是位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位字的位40-63(64位的实体通常被称为双字)是地址所在的位置。在指令地址占据了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位字的全部64位的位0-63包括地址。否则,指示异常情况。一旦获取寻址模式,需要确定ASCE。
地址空间控制单元(ASCE)
现在参考图3,其中例示了程序状态字是如何用来为虚拟地址的动态地址转换确定有效地址空间控制单元(ASCE)的一个实施例。例如ASCE可以指定2G(G=230)字节的地址空间。或者,它可指定例如4T(T=240)字节、8P(P=250)字节或16E(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之后,动态地址转换的过程优选是对所有四种类型的虚拟地址都相同。
段表标识或区表标识通过由操作***在实或绝对存储中建立的表导致转换被执行。实空间标识引起虚拟空间被简单处理成实地址而不使用存储中的表。
在转换过程中,当使用段表标识或区表标识时,三种类型的信息单元得以认定-区、段和页。区是跨越2G字节和始自2G字节的边界的连续虚拟地址块。段是跨越1兆字节和始自1兆字节的边界的顺序虚拟地址块。页是跨越4K字节和始自4K字节的边界的连续虚拟地址块。
虚拟地址格式
虚拟地址转换可涉及引用转换表层级结构的多个转换表以获取实地址或绝对地址。实地址会进一步受到加前缀操作以形成绝对地址。虚拟地址包括转换表层级结构中的转换表的项的索引。相应地,虚拟地址分为四个主要字段。位0-32被称作区索引(RX),位33-43被称作段索引(SX),位44-51被称作页索引(PX),位52-63被称作字节索引(BX)。在一个实施例中,虚拟地址具有如下格式:
虚拟地址的格式
如ASCE所确定的,虚拟地址空间可以是由一个区组成的2G字节的空间,或者它可以是由高达8G区组成的高达16E字节的空间。应用到2G字节的地址空间的虚拟地址的RX部分必须全部为零;否则,认定有异常。虚拟地址的RX部分自身划分为三个字段。位0-10被称作区第一索引(RFX),位11-21被称作区第二索引(RSX),位22-32被称作区第三索引(RTX)。在一个实施例中,虚拟地址的位0-32有如下格式:
虚拟地址的RX的格式
其中RTX是最左边的有效部分(42位地址)的虚拟地址能够寻址4T字节(2048个区),其中RSX是最左边的有效(significant)部分(53位地址)的虚拟地址能够寻址8P字节(4193044个区),其中RFX是最左边的有效部分(64位地址)的虚拟地址能够寻址16E字节(8,589,934,592个区)。
其中RX为零的虚拟地址可通过两个转换表:段表和页表来转化实地址。随着EDAT设备被启用,转换可只用段表来完成。RFX可以不为零,在这种情况下需要区第一表、区第二表和区第三表。如果RFX为零但RSX不为零,需要区第二表和区第三表。如果RFX和RSX为零但RTX不为零,需要区第三表。
如果用于地址空间的ASCE不标识将引用转换到地址空间所需要的最高的表(始于区第一表并向下继续到段表),认定异常情况。
虚拟地址的动态转换
现在参考图4,例示了其中在图3中确定的有效ASCE被用于确定在虚拟地址转换中使用的转换表层级结构中的第一转换表的一个实施例。
在一个实施例中,控制寄存器1(CR1)包括PASCE。控制寄存器7(CR7)包括SASCE。控制寄存器13(CR13)包括HASCE,并且由存取寄存器转换(ART)进程导出(derive)的地址空间第二表项(ASTE)包括存取寄存器指定的地址空间控制单元。有效ASCE 400是从这些位置之一选择的。
有效ASCE 400的第一部分包括表起始402,表起始402包括标识或者区第一表、区第二表、区第三表或者段表的起始地址。所述表起始(位0..51)被加12个二进制零以形成在虚拟地址转换中使用的转换表层级结构中的最高转换表的64位起始地址。有效ASCE 400还包括实空间控制(R)位404和DT位406。如果实空间控制(R)位为零,则选择器408解码DT位以确定哪一个特定的起始地址是表起始402。如果DT位等于3(二进制11),表起始402标识区第一表410。如果DT位等于2(二进制10),表起始402标识区第二表412。如果DT位等于1(二进制01),表起始402标识区第三表414。否则,如果DT位等于零(二进制00),表起始402标识段表416。
区第一表、区第二表或区第三表有时简称为区表。类似地,区第一表标识、区第二表标识或区第三表标识有时称为区表标识。区、段和页表反映实存储的当前分配。页是用于虚拟存储分配的术语。实存储配给在固定块中。即便被分配给一组顺序的虚拟地址,页也不需要在实存储中相邻。
当用于转换的ASCE是区第一表标识时,转换过程包括使用例如区第一表、区第二表、区第三表、段表和可选的页表的多级查找。这些表驻留在实或绝对存储中。当ASCE是区第二表标识时,区第三表标识、段表标识、在高于标识级的级别的表中的查找被省略,较高级的表本身也被省略。
现在参考图5A,其例示了使用转换表层级结构进行虚拟地址的动态地址转换的一个实施例。
图4的有效ASCE 400包括标识类型(DT)位406。如果ASCE的实空间控制(R)404位为零,则选择器408解码DT位以确定表起始402标识了哪一个起始地址。如果实空间控制(R)位是1,则如图5B所示,在节点D 564发生动态地址转换。
如果选择器408中的DT位等于3(二进制11),则转换表层级结构中的标识的第一个表是区第一表。表起始402在502与虚拟地址的区第一索引(RFX)508部分算术相加以引用区第一表中的区第一表项506。所述地址表起始(在右边加12个0或乘以4096)被加到索引与8的乘积(或索引右侧加3个0)。所述区第一表项包括到在转换中使用的转换表层级结构中的下一较低级的表的区第二表起始504。区第一表的下一较低级的表是区第二表。如果区第一表项的无效(I)位等于1,则区第一表项是无效的,并且不能在转换中使用。指示异常情况。
如果选择器408中的DT位等于2(二进制10),则转换表层级结构中的标识的第一个表是区第二表。表起始402在510与虚拟地址的区第二索引(RSX)516部分算术相加以引用区第二表中的区第二表项514。表起始(在右边加12个0或乘以4096)被加到索引与8的乘积(或索引右侧加3个0)。所述区第二表项包括到在转换中使用的转换表层级结构中的下一较低级的表的区第三表起始512。区第二表的下一较低级的表是区第三表。如果区第二表项的无效(I)位等于1,则区第二表项是无效的,并指示异常情况。
如果选择器408中的DT位等于1(二进制01),则转换表层级结构中的标识的第一个表是区第三表。表起始402在518与虚拟地址的区第三索引(RTX)524部分算术相加以引用区第三表中的区第三表项522。表起始(在右边加12个0或乘以4096)被加到索引与8的乘积(或索引右侧加3个0)。所述区第三表项包括到在转换中使用的转换表层级结构中的下一较低级的表的段表起始520。区第三表的下一较低级的表是段表。如果区第三表项的无效(I)位等于1,则区第三表项是无效的,并指示异常情况。
如果选择器408中的DT位等于0(二进制00),则转换表层级结构中的标识的第一个表是段表。表起始402在526与虚拟地址的段索引(SX)532部分算术相加以索引段表中的段表项530。表起始(在右边加12个0或乘以4096)被加到索引与8的乘积(或索引右侧加3个0)。所述段表项包括或在528所示的到页表的起始地址或段帧绝对地址(SFAA)。如果段表项的无效(I)位等于1,则段表项是无效的,并指示异常情况。
在538,检查段表的STE格式控制(FC)位。如果STE格式控制是1,则段表项530包括段帧绝对地址(SFAA)552,并且动态地址转换继续引用图5C中的节点562。否则,从段表获取的段表项包括页表起始地址,并且动态地址转换继续引用图5B中的节点560。
现在参考图5B。如果在段表项中的STE格式控制为0,则从段表中获得的段表项包括到转换表层级结构中的下一较低级的表的起始地址。段表的下一较低级的表是页表。从图5A的段表项530获取的页表起始528在538与虚拟地址的页索引(PX)534部分算术相加以引用页表中的页表项542。页表项包括页帧实地址(PFRA)546。当页帧实地址的最左边的位在548与虚拟地址的字节索引(BX)536部分连结时,获取64位的实地址550。该64位实地址可以进一步受到加前缀操作以形成绝对地址。转换的虚拟地址引用在主存储或存储器中的期望的4K字节(4096字节)的数据块。
优选地,在将虚拟地址动态转换到存储器地址中所用的信息与和虚拟地址关联的存储器块的地址一起被存储在转换后备缓冲器项标签(tag)中。随后的存储存取能够通过比较ASCE信息和虚拟地址信息与虚拟地址转换后备缓冲器标签而快速转换虚拟地址。如果标签被发现是虚拟地址的,则能够使用存储器块的转换后备缓冲器地址而不执行对涉及的每一个转换表的缓慢顺序存取。在一个实施例中,页帧实地址(PFRA)和由例如ASCE以及虚拟地址的RX、SX和PX部分组成的标签一起存储在转换后备缓冲器544的项中。这个虚拟地址的随后的转换之后从转换后备缓冲器中存储的信息导出(derive)。
现在参考图5C。如果在段表项530中的STE格式控制是1,则段表项包括段帧绝对地址(SFAA)552。当段帧绝对地址的最左边的位在554与虚拟地址的页索引534部分和字节索引536部分连结时,获取64位的绝对地址556。转换的虚拟地址引用在主存储或存储器中的期望的大的数据块。大的数据块大小至少为1M字节(1,048,576字节)。
在一个实施例中,段帧绝对地址(SFAA)以及虚拟地址的RX和SX部分被存储在转换后备缓冲器544中。这个虚拟地址的随后的转换之后从转换后备缓冲器中存储的信息导出。
转换表项格式
在转换中使用的转换表层级结构中的各种转换表项的实施例如下所示。
区表项
术语“区表项”是指区第一表项、区第二表项或区第三表项。从区第一表、区第二表或区第三表提取的项具有如下格式。包括项的表的级(1、2或3)由项中的表类型(TT)位识别。
在一个实施例中,区第一表项、区第二表项和区第三表项的格式如下所示:
区第一表项(TT=11)
区第二表项(TT=10)
区第三表项(TT=01)
区表项的格式
区第二表起始、区第三表起始及段表起始:区第一表项包括区第二表起始。区第二表项包括区第三表起始。区第三表项包括段表起始。下面的说明适用于这三个表起始中的每一个。项的位0-51具有在右侧加的12个零,形成标识下一较低级的表的开始的64位地址。
DAT保护位(P):当增强型DAT应用时,位54被处理成与每一个随后的在转换中使用的区表项、段表项和适用时的页表项中的DAT保护位进行OR或操作。因此,当该位为1时,DAT保护应用于整个区或由区表项指定的区。当增强型DAT设备未安装时或当设备已安装但增强型DAT启用控制为0时,区表项的位54将被忽略。
区第二表偏移、区第三表偏移及段表偏移(TF):区第一表项包括区第二表偏移。区第二表项包括区第三表偏移。区第三表项包括段表偏移。下面的说明适用于这三个表偏移中的每一个。项的位56和57指定在表的开始处丢失的下一较低级的表的部分的长度,即,这些位指定实际存在于下一较低级表中的第一项的位置。所述位以4096个字节为单位指定丢失部分的长度,从而使丢失部分的长度512的倍数项可变。以4096个字节为单位的丢失部分的长度等于TF值。偏移字段的内容结合长度字段、位62和63,被用于证实通过下一较低级表转换的虚拟地址的部分(RSX、RTX或SX)是否标识在表中实际存在的项。
区无效位(I):区第一表项或区第二表项中的位58控制是否与该项相关联的区集(set)是可用的。区第三表项中的位58控制是否与该项相关联的单区是可用的。当位58是0时,地址转换通过使用区表项进行。当该位是1时,不能将该项用于转换。
表类型位(TT):区第一表项、区第二表项和区第三表项中的位60和61识别包括项的表的级别如下:考虑到是转换中正在使用的ASCE的表标识的类型和至此已使用的表级数目,位60和61必须识别正确的表级;否则,认定转换规范(specification)异常。下表显示了表类型位:
位60和61 区-表级
11 第一
10 第二
01 第三
用于区表项的表类型位
区第二表长度、区第三表长度和段表长度(TL):区第一表项包括区第二表长度。区第二表项包括区第三表长度。区第三表项包括段表长度。下面的说明适用于这三个表长度中的每一个。项的位62和63以4096个字节为单位指定下一较低级的表的长度,从而使得表的长度以512的倍数项可变。以4096个字节为单位的下一较低级的表的长度比TF值多1。长度字段的内容结合偏移字段、位56和57,被用于证实通过下一低级表转换的虚拟地址的一部分(RSX、RTX或SX)是否标识在表中实际存在的项。区表项的所有其它位位置保留给可能的将来扩展并应包含零;否则,该程序可能将来不会兼容操作。当增强型DAT应用时,区表项的保留位位置应该包含零,即使该表项是无效的。
段表项
当增强型DAT不应用时或当增强型DAT应用且STE格式控制、段表项的位53为零时,在一个实施例中,从段表提取的项具有如下格式:
段-表项(T=00,FC=0)
段表项的格式I
当增强型DAT应用且STE格式控制是1时,在一个实施例中,从段表提取的项具有如下格式:
段-表项(T-00,FC=1)
段表项的格式II
在段表项中的选择的区分配如下:
页表起始:当增强型DAT不应用或增强型DAT应用但STE格式控制、段表项的位53为零时,位0-52右侧加11个零形成标识页表开始的64位地址。不可预知,该地址是实地址还是绝对地址。
段帧绝对地址(SFAA):当增强型DAT应用和STE格式控制是1时,在项的位0-43右侧加20个零,形成段的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保护位进行OR或操作。
当增强型DAT应用时,转换中使用的任何区和所有的区表项中的DAT保护位被处理成与段表项中的DAT保护位进行OR或操作;当STE格式控制为0时,在STE中的DAT保护位被进一步处理成与页表项中的DAT保护位进行OR或操作。
改变记录重写(CO):当增强型DAT应用和STE格式控制是1时,段表项的位55是改变记录重写。当增强型DAT不应用或增强型DAT适用但STE格式控制为0时,段表项的位55被忽略。
段无效位(I):位58控制是否与段表项关联的段是可用的。
当该位为0时,地址转换通过使用段表项进行。
当该位为1时,段表项不能用于转换。
公共段位(C):位59控制段表项的转换后备缓冲器的使用。当增强型DAT不应用时或当增强型DAT应用但格式控制为零时,位59还控制段表项标识的页表的转换后备缓冲器副本的使用。
零识别秘密(private)段;在这种情况下,段表项和它标识的任何页表只可以与标识段表项驻留的段表的段表起始关联使用。
1标识公共段;在这种情况下,段表项和它标识的任何页表可继续用于转换对应于段索引的地址,即便指定了不同的段表。
然而,如果秘密空间控制、位55在转换中使用的ASCE中是1或如果ASCE是实空间标识,则段表项的转换后备缓冲器副本和公共段的任何页表不能使用。当秘密空间控制在使用的ASCE中为1时,如果段表项是在转换期间从存储提取,则公共段位必须为0。否则,认定转换规范异常。
表类型位(TT):段表项的位60和61是二进制00以识别含有项的表的级。在区表项或段表项中的位60和61的所有可能值的含义如下:
位60
和61 表级
11 区第一
10 区第二
01 区第三
00 段
表类型位60、61
考虑到转换中正在使用的ASCE的表标识的类型和至此已使用的表级数目,位60和61必须识别正确的表级;否则,认定转换规范异常。段表项的所有其它位位置保留用于将来可能的扩展并应包含零;否则,该程序将来不会兼容操作。当增强型DAT应用时,段表项的保留位位置应该包含零,即使该表项是无效的。
页表项
在一个实施例中,从页表提取的项具有如下格式:
页表项的格式
在页表项中的选择字段分配如下:
页帧实地址(PFRA):位0-51提供实存储地址最左边的位。当这些位在右侧与虚拟地址的12位字节的索引字段连结(concatenate)时,获取64位的实地址。
页无效位(I):位53控制是否与页表项相关联的页是可用的。当该位是0时,地址转换通过使用页表项进行。当该位是1时,该页表项不能用于转换。
DAT保护位(P):位54控制是否可以在页内进行存储存取。这种保护机制是在密钥控制的保护和低地址保护机制之外的。该位对提取存取没有影响。如果该位为0,允许向页存储,但受如下的额外的约束:
在转换中使用的段表项中,DAT保护位为零。
当增强型DAT应用时,在转换中使用的所有区表项中,DAT保护位都为零。
其它保护机制
如果该位为1,不允许存储。如果没有更高优先异常状况存在,在DAT保护位为1时试图存储导致认定保护异常。当确定DAT保护是否应用于该页时,段表项中的DAT保护位被处理成与位54进行OR或操作。当增强型DAT应用时,当确定DAT保护是否应用时,在转换中使用的任何区表项中的DAT保护位也被处理成与位54进行OR或操作。
改变记录重写(CO):当增强型DAT不应用时,页表项的位55必须包括零;否则,作为使用该项进行地址转换执行指令的一部分,认定转换规范异常。当增强型DAT适用和STE格式控制为0时,页表项的位55是页的改变记录重写。
项的位位置52必须包括零;否则,作为使用该项进行地址转换执行指令的一部分,认定转换规范异常。位位置56-63不被分配和被忽略。
动态转换的另一个实施例
本节介绍一种在使用虚拟地址存取主存储之前隐含执行的转换过程。
虚拟地址转换是受程序状态字中的DAT模式位和地址空间控制位以及控制寄存器1、7和13中的ASCE控制和由存取寄存器指定的。当转换中使用的ASCE是区第一表标识时,通过都贮存在实或绝对存储中的区第一表、区第二表、区第三表、段表和页表执行转换。当ASCE是较低级类型的表标识(区第二表标识、区第三表标识或段表标识)时,转换只通过以标识的级开始的表级进行,并且虚拟地址位如果不为0,会需要使用更高单个或多个级表的虚拟地址位必须全为0,否则,认定ASCE类型异常。当ASCE是实空间标识时,虚拟地址被处理成实地址,并且不使用在实或绝对存储中的表项。
用于特定地址转换的ASCE被称作有效ASCE。相应地,当主虚拟地址被转换时,控制寄存器1的内容被用作有效ASCE。类似地,对于二级虚拟地址,使用控制寄存器7的内容;对于AR指定的虚拟地址,使用存取寄存器指定的ASCE;对于初始虚拟地址,使用控制寄存器13的内容。
当在有效ASCE中的实空间控制为0时,在ASCE中的标识类型指定表标识类型:区第一表、区第二表、区第三表或段表。虚拟地址的相应的部分(区第一索引、区第二索引、区第三索引或段索引)与标识中的表长度字段核查(check),它被加到标识中的起始以选择在指定表中的项。如果选择的项在其表之外,如标识中的表长度字段所确定的,或者如果所选择的项中的I位为1,则依据标识所指定的表级,认定区第一转换、区第二转换、区第三转换或段转换异常。如果选择的项中的表类型位没有指示预期的表级,认定转换规范异常。
通过有效ASCE选择的表项标识要使用的下一较低级的表。如果当前表是区第一表、区第二表或区第三表,那么虚拟地址的下一部分(分别为区第二索引、区第三索引或段索引)与当前表项中的表偏移和表长度字段进行核查,它被加到项中的起始以选择在下一较低级表中的项。如果在下一表中的选择的项在其表之外,如当前表项中的表偏移和表长度字段所确定的,或者如果选择的项中的I位为1,则依据下一表的级,识别区第二转换、区第三转换或段转换异常。如果在选择的项中的表类型位没有指示预期的表级,认定转换规范异常。
通过连续的表级处理虚拟地址的部分继续进行,直到段表项已被选择为止。段表项包括应用于指定段的所有页的页保护位。
虚拟地址的页索引部分被加到段表项中的页表起始,以选择页表中的项。如果页表项中的I位为1,认定页转换异常。页表项包括表示虚拟地址转换的实地址的最左边的位,并且它包括仅应用于由页表项指定的页的页保护位。
虚拟地址的字节索引字段未改变地用作实地址的最右边的位位置。
为了消除与参考实或绝对存储中的转换表相关联的延迟,通常也将从表提取的信息放在一个特别的缓冲区、转换后备缓冲器中,并且涉及相同的表项的随后的转换可通过使用记录在转换后备缓冲器中的信息来执行。转换后备缓冲器也可以记录与实空间标识相关的虚拟等同的实转换。
每当在地址转换期间出于从区表、段表或页表提取项的目的存取实或绝对存储时,密钥控制的保护不应用。
ASCE标识的表中的查找
DT控制、有效ASCE的位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不适用时,或当增强型DAT适用并且STE格式控制为0时,如果位位置55包含1,则也认定转换规范异常。如果在转换所使用的段表项中,在页表项中,或在转换期间使用的任何区表项中(当增强型DAT应用时),DAT保护位为1,以及如果为其执行转换的存储引用是存储,则认定保护异常。
实地址与绝对地址的形成
当有效ASCE是实空间标识时,虚拟地址的位0-63直接用作实存储地址。实地址可能进一步受到加前缀,而形成绝对地址。当有效ASCE不是实空间标识和在转换过程中没有遇到异常情况时,下述状况应用:
当增强型DAT不应用时,或当增强型DAT应用但STE格式控制为0时,从页表项获取页帧实地址。将页帧实地址和虚拟地址的字节索引部分连结,该页帧实地址形成最左边的部分。该结果是对应于虚拟地址的实存储地址。实地址可能进一步受到加前缀,而形成绝对地址。
当增强型DAT应用并且STE格式控制为1时,段帧绝对地址以及虚拟地址的页索引和字节索引部分分别从左到右连结,而形成对应于虚拟地址的绝对地址。
转换期间的异常认定
无效地址和无效格式能导致在转换过程期间认定出异常。当表项中包含的信息用于转换且发现其不正确时,认定存在异常。
现在参考图6,例示了到从段表项获取格式控制字段的点的动态地址转换的一个实施例的流程图。
在602,获取要转换的虚拟地址。在604,获取在虚拟地址转换中使用的最高转换表的起始地址。在转换中使用的第一转换表的起始地址取决于ASCE和DT位。在606,使用虚拟地址的一部分来引用转换表中的合适表项。如果在608处从转换表提取的项不是段表项,那么在转换表的层级结构中的段表尚未被引用。在这种情况下,在610,从表项中获取转换表层级结构中的下一较低级表的起始地址(origin)。使用虚拟地址的适当部分来引用转换中所使用的下一较低级表中的对应表项。
例如,如果将在转换中使用的第一转换表的表起始地址是区第一表,则使用虚拟地址的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)对是否允许存储到对应的4K字节的页进行控制。当该位为0时,提取和存储都被允许;当该位为1时,只允许提取。当试图存储到受保护的页时,该页的内容保持不变,指令的操作单元或执行单元受抑制,并且保护的程序中断发生。
段表项的DAT保护位(位54)对是否允许存储到对应的1M字节的段进行控制,具体如下:
当增强型DAT不应用时,或当增强型DAT应用并且STE格式控制为0时,段表项的DAT保护位被处理成进行OR或操作,进入段表项标识的页表中的每一个项的DAT保护位位置。因此,当段表项DAT保护位为1时,其效果如同是所标识的页表中的每个项中的DAT保护位都是1。
当增强型DAT应用并且STE格式控制为1时,段表项的DAT保护位对是否允许存储到对应的1M字节的段进行控制。当该位为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时,允许提取。当存储密钥的4个存取控制位等于存取密钥时或当存取密钥为0时,视为这些密钥匹配。保护动作概述如下。
保护动作的概述
当CPU开始对存储进行存取并且密钥控制保护应用时,PSW密钥就是存取密钥,除非在通用寄存器中指定了针对MOVE TOSECONDARY和MOVE WITH DESTINATION KEY的第一操作数的存取密钥、针对MOVE TO PRIMARY、MOVE WITH KEY和MOVE WITH SOURCE KEY的第二操作数的存取密钥以及针对MOVE PAGE的第一操作数或第二操作数的存取密钥。PSW密钥占据当前程序状态字的位8-11。
当CPU存取因为密钥控制式保护的原因被禁止时,该指令的执行会终止,并且保护异常的程序中断发生。然而,指令的操作单元或执行单元可能被抑制。
存储密钥
一个存储密钥与所述配置中可用的每个4K字节的存储块相关联。存储密钥不是地址存储的一部分。在一个实施例中,存储密钥的格式如下:
存储密钥的格式
存储密钥中的位位置的分配如下:
存取控制位(ACC):如果引用受到密钥控制式保护,那么当存储信息时以及当从受到提取保护的位置提取信息时,4位存取控制位与4位存取密钥匹配。
提取保护位(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)STE格式控制为0并且DAT所用页表项中的改变记录重写为1;或者(b)STE格式控制为1并且DAT所用段表项中的改变记录重写为1时,在执行存储操作时CPU是否设置了改变位是不可预知的。改变记录重写可以缓存在PTE或STE的转换后备缓冲器副本中。
当条件性SSKE特征没有安装时,指令“SET STORAGE KEYEXTENDED”致使所有的7位都同时设置在存储密钥中。当条件性SSKE特征安装时,指令“SET STORAGE KEY EXTENDED”可用于基于程序指定的标准来设置全部或部分存储密钥。
指令“INSERT STORAGE KEY EXTENDED”提供了4K字节块的存储密钥的位0-6的一致性图像(consistent image)。类似地,指令“INSERT VIRTUAL STORAGE KEY”和“TESTPROTECTION”提供存取控制位和提取保护位的一致性图像。
指令“RESET REFERENCE BIT EXTENDED”只修改引用位。存储密钥的所有其它位保持不变。同时地检查引用位和改变位以便设置状态码。
引用位所提供的引用记录未必准确。然而,在大多情况下,引用记录与关联的存储引用近似一致。在没有存储发生的情况下,可设置改变位。
如其它CPU所观测到的,因对存储密钥进行显性操作的指令(INSERT STORAGE KEY EXTENDED、INSERT VIRTUALSTORAGE KEY、RESET REFERENCE BIT EXTENDED和SETSTORAGE 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,则允许进行到期望的存储器块的存储操作以及从期望的存储器块的提取操作。还在另一实施例中,如果启用了存取有效性字段和提取保护字段,则响应于试图从期望的存储块进行提取操作并且段存取控制字段与程序存取控制字段不匹配,会指示保护异常。
设置存储密钥扩展(SSKE)
存储密钥可以通过SET STORAGE KEY EXTENDED(SSKE)指令来设置。在一个实施例中,SSKE指令具有如下格式:
SSKE指令的格式
一个或多个4K字节块的存储密钥由第一操作数寄存器中的值替换。当条件性SSKE设备安装时,密钥设置操作的某些功能会被绕过。当条件性SSKE设备未安装时,或当条件性SSKE设备安装并且M3字段的MR和MC位都为0时,通用寄存器R2的内容所寻址的4K字节块的存储密钥由来自通用寄存器R1的位替换。该指令在不改变状态码的情况下完成。
当条件性SSKE设备安装并且MR和MC位中的一个或两个为1时,将通用寄存器R2的内容所寻址的存储密钥的存取控制位、提取保护位以及可选的引用位和改变位与通用寄存器R2中的相应位进行比较。如果比较的位是相等的,不对密钥进行改变;否则,密钥的选择位由通用寄存器R1中的相应位替换。将进行任何修改之前的密钥***到通用寄存器R1中,并且结果由状态码指示。
当增强型DAT设备安装时,如下所述,可针对受多块控制的控制的同一1MB块内的多个4K字节块的存储密钥重复进行上述操作。在一个实施例中,M3字段有如下格式:
M3字段的格式
M3字段的位定义如下:
保留位:保留位0。
引用位更新掩码(MR):如下所述,MR位、M3字段的位1控制是否可绕过存储密钥中的引用位的更新。
改变位更新掩码(MC):如下所述,MC位、M3字段的位2控制是否可绕过存储密钥中的改变位的更新。
多块控制(MB):如在多个4K字节块中设置存储密钥中所述的,MB位、M3字段的位3控制是否可以设置多个4K字节存储块的存储密钥。
当增强型DAT设备未安装时,M3字段的位位置3保留。当条件性SSKE设备安装时,处理如下:
当MR和MC位以及M3字段的位1和2都为0时,指令完成,如同条件性SSKE设备没安装。通用寄存器R2的内容所寻址的4K字节块的存储密钥由来自通用寄存器R1的位所替换(替代),并且指令在不改变状态码的情况下完成。
当MR和MC位中的一个或两个为1时,处理如下:
在任何修改之前,通用寄存器R2所寻址的4K字节块的存储密钥的内容放置在通用寄存器R1中的位位置48-54中,通用寄存器R1的位55设置为0。该寄存器的位0-47和56-63保持不变。如果提取存储密钥时检测到无效检查块码(CBC),则(a)4K字节块的整个存储密钥由通用寄存器R1的位56-62替换,(b)通用寄存器Rl的位位置48-55的内容是不可预知的,并且(c)指令通过设置状态码3来完成。
所标识的4K字节块的存储密钥的存取控制位和提取保护位与通用寄存器Rl的位56-60中的相应字段进行比较。如果各个字段不相等,那么4K字节块的整个存储密钥由来自通用寄存器Rl的位替换,指令通过设置状态码1来完成。当存储密钥中的存取控制位和提取保护位等于通用寄存器Rl中的相应位时,处理继续进行,如下所述。
当MR和MC位都为1时,指令通过设置状态码0来完成。在这种情况下,存储密钥保持不变。
当MR为0和MC为1时,将用于标识的4K字节块的存储密钥的引用位与通用寄存器R1的位61进行比较。如果位是相等的,那么指令通过设置状态码0来完成。在这种情况下,存储密钥保持不变。如果位不相等,那么,或者(a)用于标识的4K字节块的整个存储密钥被通用寄存器Rl中的位替换,指令通过设置状态码1来完成;或者(b)用于存储密钥的引用位被通用寄存器Rl的位61替换,密钥的改变位是不可预知的,指令通过设置状态码2来完成。不可预知,是否设置了状态码1或2。
当MC位为0且和MR位为1时,将用于标识的4K字节块的存储密钥的改变位与通用寄存器R1的位62进行比较。如果位是相等的,那么指令通过设置状态码0来完成。在这种情况下,存储密钥保持不变。如果位不相等,那么,或者(a)所标识的4K字节块的整个存储密钥由通用寄存器Rl中的位替换,指令通过设置状态码1来完成;或者(b)存储密钥的改变位由通用寄存器Rl的位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被忽略。因为它是实或绝对地址,所以标识存储块的地址不会受到动态地址转换。对存储密钥的引用不会受到保护异常。
新的7位存储密钥值或其选定(选择的)位从通用寄存器R1的位位置56-62获取。寄存器的位位置0-55和63的内容被忽略。当条件性SSKE设备安装以及MR和MC位中的一个或两个为1时,位位置63应该包含0;否则,该程序将来不会兼容操作。
系列化和检点同步的功能在操作开始前执行,并在操作完成后再次执行,除了条件性SSKE设备安装并且所产生的状态码为0时,不可预知,在操作完成后是否执行系列化和检点同步的功能。对于任何CPU或通道程序在由该指令设置密钥之前或之后完成的到标识的4K字节块的任何存储存取,为块在存储密钥中将引用位和改变位相关设置为1也是分别在这个指令执行之前或之后完成的。
在多个4K字节块中设置存储密钥
当增强型DAT设备未安装时,或当该设备安装但多块控制为0零时,如上所述,用于单个4K字节块的存储密钥被设置。当增强型DAT设备安装并且多块控制为1时,可对1M字节块内部的多个4K字节块的存储密钥进行设置,从由第二个操作数地址指定的块开始,继续向右进行,每一个接续的块直至下一个1M字节的边界。在这种情况下,SET STORAGE KEY EXTENDED是可中断的,并且处理如下:
当发生中断(终止之后的中断除外)时,通用寄存器R2已经更新,使得指令在重新执行时从中断点重新开始。如果MR或MC位中的一个或两个为1,状态码是不可预知的;否则,状态码不变。
当指令在不中断的情况下完成时,通用寄存器R2已经更新到下一个1M字节的边界。如果MR或MC位中的一个或两个为1,状态码3被设置;否则,状态码不变。
在上述两种情况的任一情况中,当MR或MC位中的一个或两个为1时,通用寄存器R1中的位48-55是不可预知的。
当发生多块处理并且Rl、R2字段标识同一个寄存器时,第二操作数地址放置在寄存器中。当多块处理发生在24位或31位寻址模式下时,最左边的位(不是通用寄存器R2的位位置32-63中的地址的一部分)被设置为0;寄存器的位0-31不变。
所得到的状态码:
当条件性SSKE设备未安装时,或当M3字段的MR和MC位都为0时,状态码保持不变。当条件性SSKE设备安装且MR和MC位中的一个或两个为1时,状态码被如下设置:
0-存储密钥未被设置
1-整个存储密钥被设置
2-部分存储密钥被设置
3-整个存储密钥被设置;通用寄存器Rl的位48-55是不可预知的。
程序异常:
寻址(由通用寄存器R2指定的地址)
特许操作。
改变记录
改变记录提供关于在主存储中更换页时哪些页必须存放在辅助存储中的信息。改变记录使用存储密钥的改变位(位6)。每当存储存取导致相应的存储块的内容改变,并且或者(a)增强型DAT不应用或者(b)增强型DAT应用并且下述之一为真时,改变位被设为1:
DAT使用的段表项中的STE格式控制为0,且DAT使用的页表项中的改变记录重写(CO)为0。
DAT使用的段表项中的STE格式控制为1且DAT使用的段表项中的改变记录重写(CO)为0。
不改变存储内容的存储存取可以或可以不将改变位设置为1。如果存取被禁止,不会为试图存储而将改变位设为1。特别是:
对于CPU,每当对该存取存在存取异常时,或每当存在优先级高于该存取的存取异常优先级的异常时,存储存取被禁止。
对于通道子***,每当该存取存在密钥控制的保护违犯时,存储存取被禁止。
改变记录总是活动的,对储存器的所有存储存取都发生,包括由任何CPU(除在如本文所述被改变记录重写抑制时以外)、任何操作设备或通道子***做出的存储存取。改变记录因机器所作出的隐含引用而发生,例如作为中断的一部分的隐含引用。
改变记录不因下列指令的操作数而发生,因为它们不改变存储地址而直接改变存储密钥:
RESET REFERENCE BIT EXTENDED
SET STORAGE KEY EXTENDED(改变位被设置为指定值)
在CPU重试时,已经从0改为1的改变位未必恢复到0。
改变记录重写(CO)
每当存储存取导致相应存储块的内容改变时,存储密钥的改变位被设置为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中的格式控制没有启用,则从段表项获取页表的起始。虚拟地址的页索引部分被用于引用页表中的页表项。从页表项获取主存储器中的小数据块的页帧实地址和页改变重写字段。每个小的数据块都有一个含有改变位的相关联的存储密钥。小的数据块的大小比大的数据块小,并且由4K字节(4096个字节)的数据块组成。主存储器中的期望实数据块的转换地址包括页帧实地址和虚拟字节索引部分的组合。作出关于对期望的实数据块进行的是存储类型的操作还是提取类型的操作的确定。如果存取操作是提取类型的操作,那么改变记录重写不应用。如果存取是存储类型的操作,那么,在与虚拟地址相关联的改变记录重写字段被禁止的情况下,与期望的4K块相关联的存储密钥的改变位被设置为1。还提供了期望的4K块已被修改的指示。
在另一实施例中,如果启用改变记录重写字段,则与期望的4K数据块相关联的存储密钥的改变位不可预知。
商业的实现
本文公开的eDAT设备和其它格式、指令和属性的商业实现可以由硬件来实现,或可通过诸如由编程人员(例如操作***编程人员)用(例如)汇编语言写的操作***程序的来实现。可将这种编程指令存储在存储介质上,用于在(诸如)System z服务器的计算环境中以原生方式执行,或者可选地在执行其它架构的机器中执行。这些指令能够在现有和将来的服务器和其它机器或大型机上进行仿真。它们可以在其中执行通常处于仿真模式的机器上执行。
本发明的一个或多个方面也同样适用于(例如)虚拟机仿真,其中一个或多个分页实体(例如,客机(guest))在一个或多个处理器上执行。作为一个例子,分页客机由如下出版物中定义:出版物No.SA22-7095(1985)《System/370 Extended Architecture》中描述的开始解释性执行(Start Interpretive Execution(SIE))架构,该出版物通过整体引用并入本文。
在仿真模式中,对正处于仿真的具体指令解码,并例如在子程序或驱动器中执行子例程以便实现各指令,或使用一些其它技术来为具体硬件提供驱动器,如本发明技术人员在理解了本发明说明之后的能力范围之内。各种软件和硬件仿真技术在许多美国专利中都有所描述,其中包括:5,551,013、5,574,873、5,790,825、6,009,261、6,308,255以及6,463,582,上述每个专利通过引用并入本文。其它的许多教示进一步例示了实现为目标机构造的指令集的仿真的多种方式。
其它的变化和架构
本文所述的各种实施例只是例子。这些实施例可以有多种变化而不背离本发明的精神。
本发明的一个或多个性能可以以软件、固件、硬件或其一些组合来实现。本发明的各方面有利于各种类型的环境,包括具有多个区的其它环境和非分区环境。此外,可以没有中央处理器复合体,但可以有连在一起的多个处理器。本发明的各个方面也适用于单处理器环境。
虽然本文中描述了特定的环境,但同样地,可以对环境进行许多变化,而不背离本发明的精神。例如,如果环境是逻辑分区的,那么环境中所包含的逻辑分区可多可少。此外,可以将多个中央处理复合体连一起。这些只不过是不背离本发明精神的变化中的一部分。此外,还可能存在其它变化。
虽然术语“页”是用来指固定大小或预定义大小的存储区,但页的大小能够改变。类似地,块的大小能够改变。可以存在不同大小的块和/或页。一个页可以等于一个块。可选地,可使用其它结构或另外可以通过软件和/或硬件来实现其它结构。此外,在本文所述的例子中,可以有多种变化,这些变化包括但不限于:不同大小的字或地址;不同数量的位;不同顺序的位;更多、更少或不同的位;更多、更少或不同的字段;不同顺序的字段;不同大小的字段等等。同样地,这些只是提供作为例子。可能存在多种变化。
处理单元包括诸如客机、主机、其它处理器、仿真器,虚拟机和/或其它类似构造的可分页实体。缓冲器包括存储区和/或内存区(memory)以及不同类型的数据结构,包括但不限于数组或分页实体。表还可以包括其它数据结构。指令可以引用其它寄存器。此外,页、段和/或区变化的大小可以是不同于本文所述的大小。
本发明的一个或多个方面可以包含在具有(例如)计算机可用介质或机器可读介质的制造品(例如,一个或多个计算机程序产品)中。所述介质中实施了(例如)计算机可读程序代码装置或逻辑(例如指令、代码和命令等),以提供和促进本发明的功能。制造品可被包括作为计算机***的一部分或单独出售。另外,可以提供至少一个程序存储设备,该程序存储设备可由实施至少一个指令程序的机器读取,该至少一个指令程序可由执行本发明功能的机器来执行。
本文描绘的流程图是例示性的。可以对这些描述的图示或步骤或操作进行许多变化,而不背离本发明的精神。例如,步骤可以以不同的顺序执行,或者可对步骤进行添加、删除或修改。所有这些变化都视为本发明要求保护的一部分。
虽然在这里已经详细描绘和说明了其中的实施例,但显然相关领域的技术人员可作出各种修改、添加和替换等,而不背离本发明精神,并因此,这些被视为在如下权利要求书定义的本发明的范围内。
Claims (12)
1.一种用于将计算机***的主存储中的数据块的虚拟地址转换成转换地址的方法,所述计算机***具有用于转换所述虚拟地址的转换表层级结构机器架构,所述方法包括:
获取要进行转换的虚拟地址;
获取所述转换表层级结构的一转换表的起始地址;
使用所述虚拟地址的索引部分来引用所述转换表中的项;
确定所述转换表项中的格式控制字段是否被启用;和
响应所述格式控制字段被启用,执行:
从所述转换表项获取主存储中的大的数据块的帧地址;
将所述帧地址与所述虚拟地址的偏移部分结合以形成所述主存储中的所述大的数据块中的期望的数据块的所述转换的绝对地址,其中所述期望的数据块包括数据的一个或多个字节;和
存取由所述转换地址寻址的所期望的大的数据块;
从所述转换表项获取用于限制对所述大的数据块的限制部分的存取的限制信息;和
将对所述转换地址寻址的所述期望的大的数据块的存取限制为仅存取所述大的数据块的所述限制部分;
其中响应所述格式控制字段不被启用,执行:
从所述转换表项获取所述转换表层级结构的另一个表的起始地址;
使用所述虚拟地址的索引部分来引用所述另一个表中的项,从所述另一个表项获取主存储中的小的数据块的小的帧地址,所述小的数据块比所述大的数据块小;
将所述小的帧的实地址与所述虚拟地址的偏移部分结合以形成主存储中的所期望的小数据块的转换的实地址,所述转换的实地址受到加前缀操作以形成绝对地址;和
存取由所述转换地址寻址的主存储中的所述期望的小数据 块。
2.根据权利要求1的方法,其中所述限制信息包括表偏移或表长度中的任何一个。
3.根据权利要求1的方法,其中,转换表层级结构包括以下中的一个或多个:具有用于定位区第二表的区第一表项的区第一表、具有用于定位区第三表的区第二表项的区第二表、具有用于定位段表的区第三表项的区第三表和具有段表项的段表,所述方法还包括:
以所述转换表层级结构预定的转换表开始,按顺序检索转换表层级结构转换表项中的一个或多个,直至具有被启用格式控制字段的转换表项被找到,其中具有转换表项的转换表的转换表起始地址是所述转换表层级结构的一转换表的获得的起始地址。
4.根据权利要求1的方法,还包括:
将所述虚拟地址的所述转换中使用的信息存储在至少一个转换后备缓冲器中;和
使用来自所述转换后备缓冲器的存储的信息而不是所述转换表层级结构来执行主存储中的所述数据块的随后的虚拟地址到绝对地址的随后的转换。
5.根据权利要求1的方法,还包括,响应于所述虚拟地址转换不是原生于所述机器架构,则:
识别用于仿真所述虚拟地址转换的预定的软件例程,所述预定的软件例程包括多个指令;和
执行所述预定的软件例程。
6.根据权利要求1的方法,其中所述大的数据块包括大小至少为1兆字节的块。
7.一种用于将计算机***的主存储中的数据块的虚拟地址转换成转换地址的装置,所述计算机***具有用于转换所述虚拟地址的转换表层级结构机器架构,所述装置包括:
用于获取要进行转换的虚拟地址的部件;
用于获取所述转换表层级结构的一转换表的起始地址的部件;
用于使用所述虚拟地址的索引部分来引用所述转换表中的项的部件;
用于确定所述转换表项中的格式控制字段是否被启用的部件;和
用于响应所述格式控制字段被启用的部件包括:
用于从所述转换表项获取主存储中的大的数据块的帧地址的部件;
用于将所述帧地址与所述虚拟地址的偏移部分结合以形成所述主存储中的所述大的数据块中的期望的数据块的所述转换的绝对地址的部件,其中所述期望的数据块包括数据的一个或多个字节;和
用于存取由所述转换地址寻址的所期望的大的数据块的部件;
用于从所述转换表项获取用于限制对所述大的数据块的限制部分的存取的限制信息的部件;和
用于将对所述转换地址寻址的所述期望的大的数据块的存取限制为仅存取所述大的数据块的所述限制部分的部件;
用于响应所述格式控制字段不被启用的部件包括:
用于从所述转换表项获取所述转换表层级结构的另一个表的起始地址的部件;
用于使用所述虚拟地址的索引部分来引用所述另一个表中的项,从所述另一个表项获取主存储中的小的数据块的小的帧地址的部件,所述小的数据块比所述大的数据块小;
用于将所述小的帧的实地址与所述虚拟地址的偏移部分结合以形成主存储中的所期望的小数据块的转换的实地址的部件,
所述转换的实地址受到加前缀操作以形成绝对地址;和
用于存取由所述转换地址寻址的主存储中的所述期望的小数据块的部件。
8.根据权利要求7的装置,其中所述限制信息包括表偏移或表长度中的任何一个。
9.根据权利要求7的装置,其中,转换表层级结构包括以下中的一个或多个:具有用于定位区第二表的区第一表项的区第一表、具有用于定位区第三表的区第二表项的区第二表、具有用于定位段表的区第三表项的区第三表和具有段表项的段表,所述装置还包括:
用于以所述转换表层级结构预定的转换表开始,按顺序检索转换表层级结构转换表项中的一个或多个,直至具有被启用格式控制字段的转换表项被找到的部件,其中具有转换表项的转换表的转换表起始地址是所述转换表层级结构的一转换表的获得的起始地址。
10.根据权利要求7的装置,还包括:
用于将所述虚拟地址的所述转换中使用的信息存储在至少一个转换后备缓冲器中的部件;和
用于使用来自所述转换后备缓冲器的存储的信息而不是所述转换表层级结构来执行主存储中的所述数据块的随后的虚拟地址到绝对地址的随后的转换的部件。
11.根据权利要求7的装置,还包括,用于响应于所述虚拟地址转换不是原生于所述机器架构,则:
用于识别用于仿真所述虚拟地址转换的预定的软件例程的部件,所述预定的软件例程包括多个指令;和
用于执行所述预定的软件例程的部件。
12.根据权利要求7的装置,其中所述大的数据块包括大小至少 为1兆字节的块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/972,706 US8037278B2 (en) | 2008-01-11 | 2008-01-11 | Dynamic address translation with format control |
US11/972,706 | 2008-01-11 | ||
PCT/EP2009/050049 WO2009087132A1 (en) | 2008-01-11 | 2009-01-05 | Dynamic address translation with format control |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101911022A CN101911022A (zh) | 2010-12-08 |
CN101911022B true CN101911022B (zh) | 2012-10-10 |
Family
ID=40481750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980102001.4A Active CN101911022B (zh) | 2008-01-11 | 2009-01-05 | 具有格式控制的动态地址转换 |
Country Status (12)
Country | Link |
---|---|
US (1) | US8037278B2 (zh) |
EP (1) | EP2229630B1 (zh) |
JP (1) | JP5602638B2 (zh) |
KR (1) | KR101419578B1 (zh) |
CN (1) | CN101911022B (zh) |
CY (1) | CY1113979T1 (zh) |
DK (1) | DK2229630T3 (zh) |
ES (1) | ES2406056T3 (zh) |
PL (1) | PL2229630T3 (zh) |
PT (1) | PT2229630E (zh) |
SI (1) | SI2229630T1 (zh) |
WO (1) | WO2009087132A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037278B2 (en) | 2008-01-11 | 2011-10-11 | International Business Machines Corporation | Dynamic address translation with format control |
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 |
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 |
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 |
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 |
US8335906B2 (en) * | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
US8677098B2 (en) | 2008-01-11 | 2014-03-18 | 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 |
US8041922B2 (en) * | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
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 |
US8239667B2 (en) * | 2008-11-13 | 2012-08-07 | Intel Corporation | Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory |
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 |
US9753860B2 (en) | 2012-06-14 | 2017-09-05 | International Business Machines Corporation | Page table entry consolidation |
US9092359B2 (en) | 2012-06-14 | 2015-07-28 | International Business Machines Corporation | Identification and consolidation of page table entries |
US9811472B2 (en) | 2012-06-14 | 2017-11-07 | International Business Machines Corporation | Radix table translation of memory |
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 |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9626288B2 (en) * | 2013-08-14 | 2017-04-18 | Skyera, Llc | Address translation for a non-volatile memory storage device |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9514058B2 (en) * | 2014-12-22 | 2016-12-06 | Texas Instruments Incorporated | Local page translation and permissions storage for the page window in program memory controller |
EP3274824B1 (en) | 2015-03-27 | 2021-03-17 | Intel Corporation | Efficient address translation |
US9658792B2 (en) * | 2015-06-11 | 2017-05-23 | International Business Machines Corporation | Reserving a storage area and building page frame table entries |
US11379371B2 (en) | 2019-11-07 | 2022-07-05 | Research & Business Foundation Sungkyunkwan University | Method and system with improved memory input and output speed |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4992936A (en) * | 1987-11-11 | 1991-02-12 | Hitachi, Ltd. | Address translation method and apparatus therefor |
US5008811A (en) * | 1988-02-10 | 1991-04-16 | International Business Machines Corp. | Control mechanism for zero-origin data spaces |
US5617554A (en) * | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JPS6417137A (en) * | 1987-07-13 | 1989-01-20 | Nippon Telegraph & Telephone | Control system for large-capacity page |
US5058003A (en) | 1988-12-15 | 1991-10-15 | International Business Machines Corporation | Virtual storage dynamic address translation mechanism for multiple-sized pages |
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 |
JPH10301848A (ja) * | 1997-04-28 | 1998-11-13 | Hitachi Ltd | 多重ページサイズを有する仮想記憶装置 |
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 |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | 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 |
US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US7020761B2 (en) | 2003-05-12 | 2006-03-28 | International Business Machines Corporation | Blocking processing restrictions based on page indices |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US7530067B2 (en) | 2003-05-12 | 2009-05-05 | International Business Machines Corporation | Filtering processor requests based on identifiers |
DE60311462T2 (de) | 2003-09-19 | 2008-01-03 | Sun Microsystems, Inc., Santa Clara | Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen |
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 |
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 | 株式会社東芝 | メモリ保護装置、メモリ保護システムおよびメモリ保護方法 |
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 |
US8117417B2 (en) | 2008-01-11 | 2012-02-14 | International Business Machines Corporation | Dynamic address translation with change record override |
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 |
US8335906B2 (en) | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
US8677098B2 (en) | 2008-01-11 | 2014-03-18 | International Business Machines Corporation | Dynamic address translation with fetch protection |
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 |
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 |
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 |
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,706 patent/US8037278B2/en active Active
-
2009
- 2009-01-05 SI SI200930587T patent/SI2229630T1/sl unknown
- 2009-01-05 JP JP2010541762A patent/JP5602638B2/ja active Active
- 2009-01-05 DK DK09700213.3T patent/DK2229630T3/da active
- 2009-01-05 EP EP09700213A patent/EP2229630B1/en active Active
- 2009-01-05 CN CN200980102001.4A patent/CN101911022B/zh active Active
- 2009-01-05 KR KR1020107015300A patent/KR101419578B1/ko active IP Right Grant
- 2009-01-05 WO PCT/EP2009/050049 patent/WO2009087132A1/en active Application Filing
- 2009-01-05 PL PL09700213T patent/PL2229630T3/pl unknown
- 2009-01-05 ES ES09700213T patent/ES2406056T3/es active Active
- 2009-01-05 PT PT97002133T patent/PT2229630E/pt unknown
-
2013
- 2013-05-02 CY CY20131100366T patent/CY1113979T1/el unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4992936A (en) * | 1987-11-11 | 1991-02-12 | Hitachi, Ltd. | Address translation method and apparatus therefor |
US5008811A (en) * | 1988-02-10 | 1991-04-16 | International Business Machines Corp. | Control mechanism for zero-origin data spaces |
US5617554A (en) * | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
Also Published As
Publication number | Publication date |
---|---|
JP2011509469A (ja) | 2011-03-24 |
SI2229630T1 (sl) | 2013-06-28 |
CY1113979T1 (el) | 2016-07-27 |
DK2229630T3 (da) | 2013-05-06 |
KR20100095629A (ko) | 2010-08-31 |
PL2229630T3 (pl) | 2013-07-31 |
EP2229630B1 (en) | 2013-04-03 |
WO2009087132A1 (en) | 2009-07-16 |
ES2406056T3 (es) | 2013-06-05 |
US8037278B2 (en) | 2011-10-11 |
JP5602638B2 (ja) | 2014-10-08 |
EP2229630A1 (en) | 2010-09-22 |
KR101419578B1 (ko) | 2014-07-25 |
US20090182964A1 (en) | 2009-07-16 |
CN101911022A (zh) | 2010-12-08 |
PT2229630E (pt) | 2013-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101911022B (zh) | 具有格式控制的动态地址转换 | |
CN101911025B (zh) | 带有取回保护的动态地址转换的方法和*** | |
CN101911024B (zh) | 带有帧管理的动态地址转换 | |
CN101960432B (zh) | 使用转换异常限定符的动态地址转换 | |
US9158711B2 (en) | Creating a program product or system for executing a perform frame management instruction | |
CN101952807B (zh) | 管理计算环境的多个可分页客户端对存储装置的使用 | |
CN100363908C (zh) | 无效存储器及清除缓冲区表项的方法和*** | |
US9244856B2 (en) | Dynamic address translation with translation table entry format control for identifying format of the translation table entry | |
US9003134B2 (en) | Emulation of a dynamic address translation with change record override on a machine of another architecture | |
US8335906B2 (en) | Perform frame management function instruction for clearing blocks of main storage | |
JP2019516181A (ja) | ケイパビリティ・メタデータに対する操作を実施するための装置及び方法 | |
WO2009087135A1 (en) | Dynamic address translation with dat protection | |
TW201843584A (zh) | 用於管理能力使用的設備與方法 | |
US11397541B2 (en) | Controlling guard tag checking in memory accesses | |
JP7369720B2 (ja) | アクションをトリガするための装置及び方法 | |
WO2024094956A1 (en) | Region identifier based on instruction fetch address |
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 |