用半虚拟化的管理程序提供全虚拟化的附属部件.pdf

上传人:1** 文档编号:1665400 上传时间:2018-07-03 格式:PDF 页数:49 大小:2.43MB
返回 下载 相关 举报
摘要
申请专利号:

CN201380052434.X

申请日:

2013.10.08

公开号:

CN104737138A

公开日:

2015.06.24

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 12/10申请日:20131008|||公开

IPC分类号:

G06F12/10; G06F9/44

主分类号:

G06F12/10

申请人:

国际商业机器公司

发明人:

M·K·格施温德

地址:

美国纽约

优先权:

13/646,773 2012.10.08 US

专利代理机构:

北京市中咨律师事务所11247

代理人:

于静; 张亚非

PDF下载: PDF下载
内容摘要

提供了具有半虚拟化管理程序(904)的支持不同类型的客户(902a,902b)的系统配置,包括使用单级别转换(902a)以及使用嵌套级别转换(902b)。当在嵌套级别转换期间发生地址转换错误时,由附属部件(950,1026)接收该错误的指示。该附属部件至少部分地代表该客户解决地址转换错误(1026)。

权利要求书

权利要求书
1.  一种便于客户内存地址转换的计算机程序产品,所述计算机程序产品 包括:
处理电路可读的计算机可读存储媒介并且由所述处理电路执行存储的 指令所实施的方法,该方法包括:
通过附属部件获取与客户内存地址相关的地址转换错误的指 示,所述附属部件与客户操作系统相隔离并且不相同,并运行在系统 配置的处理器之上,所述系统配置包括管理程序支持的客户操作系 统,所述管理程序是半虚拟化管理程序,所述半虚拟化管理程序被配 置使得与客户内存地址的主机转换相关的地址转换错误部分地由所述 客户管理系统管理;以及
基于获得的所述地址转换错误的指示,由所述附属部件向管理 程序提供地址转换信息以使所述客户内存地址的主机转换能成功完 成。

2.  权利要求1所述计算机程序产品,其中,所述管理程序支持使用单一 级别转换的第一类型客户以及使用嵌套级别转换的第二类型客户,所述客户操作系 统属于第二类型客户。

3.  权利要求1所述的计算机程序产品,其中,所述地址转换错误基于从 客户物理地址到主机物理地址的转换。

4.  权利要求3所述计算机程序产品,其中,所述客户物理地址作为在客 户级转换中的客户虚拟地址到客户物理地址的转换结果来提供。

5.  权利要求1所述计算机程序产品,其中,所述提供包括用地址转换信 息更新主机转换结构以解决(address)所述地址转换错误。

6.  权利要求5所述计算机程序产品,其中,所述方法进一步包括:由所 述附属部件获取配置信息以创建一个或多个用于更新所述主机转换结构的地址转换 结构。

7.  权利要求1所述计算机程序产品,其中,所述附属部件的执行具有管 理程序特权或操作系统特权中的一个。

8.  权利要求1所述计算机程序产品,其中,所述获取来自所述管理程序 或所述系统配置的硬件中的一个。

9.  权利要求1所述计算机程序产品,其中,所述附属部件是与所述客户 操作系统一起提供的。

10.  权利要求1所述计算机程序产品,其中,所述附属部件是与所述管理 程序一起提供的。

11.  一种便于客户内存地址转换的计算机系统,所述计算机系统包括:
内存;以及
与所述内存通信的处理器,其中所述计算机系统被配置实施方法,所 述方法包括:
通过附属部件获取与客户内存地址相关的地址转换错误的指 示,所述附属部件与客户操作系统相隔离并且不相同,并运行在系统 配置的处理器之上,所述系统配置包括管理程序支持的客户操作系 统,所述管理程序是半虚拟化管理程序,所述半虚拟化管理程序被配 置使得与客户内存地址的主机转换相关的地址转换错误部分地由所述 客户管理系统管理;以及
基于获得的所述地址转换错误的指示,由所述附属部件向管理 程序提供地址转换信息以使所述客户内存地址的主机转换能成功完 成。

12.  权利要求11所述计算机系统,其中,所述管理程序支持使用单一级 别转换的第一类型客户以及使用嵌套级别转换的第二类型客户,所述客户操作系统 属于第二类型客户。

13.  权利要求11所述的计算机系统,其中,所述地址转换错误基于从客 户物理地址到主机物理地址的转换。

14.  权利要求11所述计算机系统,其中,所述提供包括用地址转换信息 更新主机转换结构以解决(address)所述地址转换错误。

15.  权利要求11所述计算机系统,其中,所述附属部件的执行具有管理 程序特权或操作系统特权中的一个。

16.  权利要求11所述计算机系统,其中,所述获取来自所述管理程序或 所述系统配置的硬件中的一个。

17.  权利要求11所述计算机系统,其中,所述附属部件是与所述管理程 序一起提供的。

18.  一种便于客户内存地址转换的方法,所述方法包括:
处理电路可读的计算机可读存储媒介并且由所述处理电路执行存储的 指令所实施的方法,该方法包括:
通过附属部件获取与客户内存地址相关的地址转换错误的指 示,所述附属部件与客户操作系统相隔离并且不相同,并运行在系统 配置的处理器之上,所述系统配置包括管理程序支持的客户操作系 统,所述管理程序是半虚拟化管理程序,所述半虚拟化管理程序被配 置使得与客户内存地址的主机转换相关的地址转换错误部分地由所述 客户管理系统管理;以及
基于获得的所述地址转换错误的指示,由所述附属部件向管理 程序提供地址转换信息以使所述客户内存地址的主机转换能成功完 成。

19.  权利要求18所述的方法,其中,所述管理程序支持使用单一级别转 换的第一类型客户以及使用嵌套级别转换的第二类型客户,所述客户操作系统属于 第二类型客户。

20.  权利要求18所述的方法,其中,所述提供包括用地址转换信息更新 主机转换结构以解决(address)所述地址转换错误。

说明书

说明书用半虚拟化的管理程序提供全虚拟化的附属部件
本发明要求美国专利申请(申请序列号:13/646,773)的优先权,该美 国专利申请题目为“用了半虚拟化管理程序提供全虚拟化的附属部件”,于 2012年8月提交至美国专利商标局,其内容通过引用被全部纳入本文。
背景技术
一个或多个方面总的来说涉及了计算环境的内存,特别涉及了便于内存 访问。
系统配置包括用于存储应用以及数据的物理内存。物理内存数量固定, 经常不足以支撑用户的需求。因此,为了提供额外的内存,或者至少在表象 上额外的内存,使用了一种被称为虚拟内存的内存管理技术。虚拟内存采用 了虚拟寻址(virtual addressing)技术,提供了比主内存的物理规模看起来 大得多的地址范围。
为了访问包括虚拟内存的系统配置中的主内存,要求内存访问包括有效 地址(effective address)。有效地址被转换成用于访问物理内存的实地址 (real address)。
采用地址转换技术实施转换。有几种地址转换技术可供使用。例如,在 由国际商业机器公司提供的PowerPC系统中,通过选择与有效地址相关的 有效段识别符(ESID)表条目,并且使用该条目通过哈希算法定位一组页 表条目,通过所找到的页表条目,将有效地址被转换为对应的实地址。在进 一步的例子中,是在同样由国际商业机器公司提供的z/Architechture中,通 过分层结构的转换表(a hierarchy of translation tables)将有效地址转换为对 应的实地址。通过用有效地址的一部分对转换表建立索引,以便能找到分层 结构中的下一个转换表的地址,直到获得实地址(或绝对地址)。两种地址 转换技术对各自的操作系统各有优点。
发明内容
通过部署便于客户(guest)内存地址的转换的计算机程序产品,克服了现 有技术的缺点,还提供了额外的优点。所述计算机程序产品包括处理电路可 读的计算机可读存储媒介并且由所述处理电路执行存储的指令所实施的方 法,举例来说,该方法包括:通过附属部件获取与该客户内存地址相关的地 址转换错误的指示,所述附属部件与客户操作系统相隔离并且不相同,并运 行在系统配置的处理器之上,所述系统配置包括管理程序支持的客户操作系 统,所述管理程序是半虚拟化管理程序,所述半虚拟化管理程序被配置使得 与客户内存地址的主机(host)转换相关的地址转换错误的一部分由所述客户 操作系统管理;以及基于获得的所述地址转换错误的指示,由所述附属部件 向管理程序提供地址转换信息,以使所述客户内存地址的主机转换能够成功 完成。
再次,还描述了与一个或多个方面相关的方法和系统,并对其要求了权 利。进一步的,还描述了与一个或多个方面相关的服务,在此可能对其要求 权利。
再次,通过所描述的技术实现了额外的特征以及优势。其他实施例以及 方面在这里做了详细描述,并被认为是所要求权利的一部分。
附图说明
特别指出了一个或多个方面,举例来说,还在说明书结尾部分的权利要 求中明确的要求了权利。在以下结合了附图的详细描述中,前述内容和一个 或多个方面的事项、物体、特征、以及优势是明显的,其中的附图包括:
图1A描述了计算环境的一个示例;
图1B描述了计算环境的另一示例;
图2A示出了采用哈希页表技术的映射到物理内存的虚拟内存的高级 别视图的示例;
图2B示出了生成虚拟地址的技术的示例;
图2C描述了哈希页表转换结构的一个例子;
图3描述了段旁视缓冲(segment lookaside buffer)的例子,包括段旁视 缓存条目的示例字段;
图4A描述了页表的一个示例;
图4B描述了页表条目的一个示例;
图5A描述了层级转换机制的一个示例;
图5B描述了标引(indexing)高级别转换表的一个示例;
图6A描述了z/Architecture的页表条目的一个示例;
图6B描述了Power ISA架构的页表条目的一个示例;
图7A描述了选择转换机制的逻辑过程(logic)的一个示例;
图7B描述了由管理程序实施的用于处理地址转换产生的错误的逻辑 过程的一个实施例;
图8A描述了初始化分区的逻辑过程的一个实施例;
图8B描述了分派分区(dispatch a partition)的逻辑过程的一个实施 例;
图8C描述了转换一个配置并分派的分区中地址的逻辑过程的实施 例;
图9A描述了支持异构客户的管理程序的一个例子;
图9B描述了使用附属部件便利管理地址转换错误的管理程序的一个 实施例;
图10A描述了用于管理地址转换错误的半虚拟化逻辑过程的一个实 施例;
图10B描述了使用附属部件便利管理地址转换错误管理的一个实施 例;
图10C描述了管理地址错误的一个实施例的进一步细节;
图11描述了基数转换机制的一个实施例;
图12描述了基数上的基数的转换机制的一个例子;
图13描述了哈希页表上的基数的转换机制的一个例子;
图14描述了使用一种类型转换结构指向另一类型转换结构以实施地 址转换的一个例子;
图15描述了偏移上的基数的转换机制的一个实施例;
图16描述了哈希页表转换机制的一个例子;
图17描述了动态地址转换(DAT)机制的一个例子;
图18描述了采用一个或多个方面的计算机程序产品的一个实施例。
具体实施方式
在一个方面,提供一个系统配置,其有不同类型的可用的转换结构,用 于将内存地址从一种格式(例如,有效地址,特别是与其相关的虚拟地址) 转换到另一种格式(例如,实地址)。在一个系统配置中,能够同时支持多 个地址转换结构格式(例如,多页表格式,比如哈希页表以及层级页表)。
进而,在一个方面,提供一个系统配置,其包括多个分区以及与其关联 的不同转换机制。例如,一个分区具有与其关联的用于将客户虚拟地址转换 到主机物理地址的单级别转换机制,另一分区具有用于将客户虚拟地址转换 到主机物理地址的嵌套级别转换机制。单个管理程序(hypervisor)支持不 同的转换机制以及分区。管理程序例如是半虚拟化(paravirtualized)的管理 程序。因此,在一个方面,在单级别转换机制中的与地址转换关联的错误至 少在部分上由客户操作系统管理。然而,对于那些使用嵌套级别转换的分 区,还提供了全虚拟化。通过全虚拟化,客户操作系统不介入由主机级转换 导致的地址转换错误的管理。为了通过半虚拟化管理程序支持全虚拟化,提 供了便于解决由主机级转换导致的地址转换错误的附属部件。正如此处所使 用的,附属部件是一种帮手部件,一般以辅助模式连接、增加或耦合至一个 实体,并不限于任何具体的附属结构。
不同架构的计算环境都可以采纳和使用本文所提供的一个或多个方面。 例如,由国际商业机器公司所提供的基于PowerPC架构的环境可以包括一 个或多个方面,其他架构的计算环境—例如由国际商业机器公司提供的 z/Architecture—也一样。PowerPC架构的环境还被称为Power ISA,2007 年7月23日的Power ISATM说明书的第2.06版的修订版B中有描述,这里 全文引用该文献作为参考,z/Architecture的描述见于2010年8月公开的 z/Architecture-操作准则(公开号SA22-7932-08,第九版)这里全文引用该 文献作为参考。
现参考图1A对体现以及使用一个或多个方面的计算环境的示例进行描 述。在一个例子中,计算环境100包括处理器(中央处理单元-CPU)102, 包括至少一个内存管理单元(MMU)/旁视转换缓冲(TLB)部分104以及 高速缓冲106。处理器102可通信地耦合至具有高速缓冲110的内存部分, 以及输入/输出(I/O)部分112。I/O部分112可通信地耦合至外部I/O装置 114,外部I/O装置例如可以包括数据输入装置,传感器和/或输出装置,例 如显示器。
内存管理单元104被用于管理内存部分108,包括通过提供地址转换便 利于访问内存。为了改善地址转换,内存管理单元采用旁视转换缓冲 (TLB)。TLB是先前已转换地址的高速缓冲。因此,当接收到包括将要转 换的地址的内存访问请求时,首先检查TLB。如果该地址及其转换在TLB 之内,就没必要进行转换。否则,采用任何转换技术中的一个转换所接收到 的地址。
图1B描述了体现和使用本发明一个或多个方面的计算环境的进一步实 施例。在该实施例中,计算环境150包括服务器152,举例而言,服务器包 括一个或多个虚拟机154,一个或多个中央处理器(例如,中央处理单元) 156,至少一个管理程序158,以及输入/输出子系统160。内存162中包括 虚拟机以及管理程序。
在该实施例中,每个虚拟机能够托管(hosting)一个客户操作系统168并 且可以执行一个或多个应用程序170。运行在虚拟机中的操作系统或应用程 序看起来可以访问整个系统,但实际上,只有系统的一部分可供访问。
中央处理器156(例如中央处理单元)是可分配给一个虚拟机的物理处 理器资源。例如,虚拟机154包括一个或多个逻辑处理器,每个逻辑处理器 代表物理处理器的全部或能够被动态分配给该虚拟机的一个份额。通过管理 程序158管理虚拟机154,例如由国际商业机器公司提供的PowerVW。
中央处理器156,例如CPU102,包括至少一个MMU/TLB部分以及至 少一个高速缓冲。
输入/输出(I/O)子系统160在装置以及内存(在此处还被称为主内存或 主存储)之间指引信息流。输入/输出子系统160耦合至系统,因为它可以 是系统的一部分或与系统相分离。I/O子系统减轻了中央处理器直接与耦合 至系统的I/O装置间的通信任务负担,允许I/O处理与数据处理同时进行。
参考图2A描述了每个系统所使用的物理内存(例如内存108或内存 162)以及对其访问的进一步细节。正如所知的,物理内存具有明确的大 小,为了使物理内存看起来比实际大小的更大,要采用虚拟内存。图2A示 出了映射到物理内存203(例如内存108,162)的虚拟内存201的高级视图 的示例。在这个示例中,通过用于查找页表条目(PTEs)的哈希页表 (HPT)技术205从虚拟内存映射到实际内存,例如Power ISA中所采用 的。在这个示例中,程序仅仅使用虚拟内存的A和B部分(sections)。虚拟 内存的每个段(segment)映射到通过有效段ID(ESID)(包括用于B的 ESIDs以及用于A的ESIDs)标识的段ID(SID)条目207。程序所使用的 “有效地址”204选择一个SID条目,SID条目包括该ESID值,以及虚拟段 ID(VSID)214值。VSID值表示要被哈希算法205用来查找该哈希页表的 虚拟地址的高阶位(high-order bits)。基于VSID的哈希值被用来查找一个 页表条目(PTE)。该页表条目包括物理内存203的一个页的地址213。
图2B示出了生成用于哈希的虚拟地址时所采用的技术的示例。就这点 而言,在处理器的内存管理单元中例如接收到了有效地址204。有效地址 204包括有效段标识(ESID)字段206,页面字段208,以及字节偏移字段 210。ESID字段用于定位段旁视缓冲(SLB)212中的一个条目,其中, SLB是近来被访问的段ID条目的高速缓存。特别的是,SLB被检索以寻找 具有有效地址204的ESID 206的值的条目。正如下面所描述的,具有 ESID206的条目包括关联的虚拟段标识(VSID)214,以及其它信息。关联 的VSID被用来生成虚拟地址202,所述虚拟地址包括:VSID 214;以及来 自有效地址的页208和字节210。虚拟地址202被用于获取用来访问内存系 统中的物理内存的实地址。在本公开中,术语物理内存、实内存、系统内存 以及绝对内存被可替换的用来指代处理器可访问的主存储。
图2C示出了Power ISA所使用的哈希页表(HPT)转换结构的示例。 有效地址(EA)204的ESID部分206被用于在SLB 212中定位一个条目。 该条目包括VSID字段214。VSID字段214的值以及EA 204的一部分 (页,字节)被哈希为哈希值,用于在哈希页表(HPT)250中定位页表条 目(PTE)组252。搜索PTE组252的页表条目253,以定位相应的PTE, 该相应的PTE具有与VSID的最高有效部分(most significant-portion)的值 相匹配的字段。当发现相应的PTE时,使用PTE中物理内存页的地址(例 如,实地址)访问物理内存。为提高性能,一旦找到一个PTE条目,就将 EA 204的页部分208以及在PTE中找到的物理内存页的地址存储在TLB 254中,使得对相同EA页面的进一步访问将会在TLB 254中“命中”,从而 避免PTE搜索。通过处理器提供的页表起始地址(origin address)来定位页 表。
现参看图3以及图4A-4B,描述关于段旁视缓冲(segment lookaside  buffer)以及页表的进一步细节。首先参看图3,段旁视缓冲(SLB)212指 定了有效段IDs(ESIDs)与虚拟段IDs(VSIDs)之间的映射。SLB中SLB 条目(SLBE)的数目是取决于实现的,在一个示例中,包括至少32个条 目。在一个示例中,段旁视缓冲212包括多个SLB条目300,并且每个 SLB条目300将一个ESID 302映射至一个VSID 308。在一个示例中, SLBE300包括下列字段:
有效段ID(ESID)302(位0-35);
条目有效指示符(V)304(位36),指示条目是否有效(V=1)或无 效(V=0);
段大小选择器(B)306(位37-38),其具有以下含义,在一个示例 中:0b00–256兆字节(MB)(s=28),0b01–1太字节(TB)(s=40), 0b10–256TB(s=48),以及0b11–保留;
虚拟段ID(VSID)308(位39-88);
管理程序(享有特权的)状态存储键(Ks)310(位89);
问题状态存储键(Kp)312(位90);
指示符(N)314(位91):若N=1,非执行段;
虚拟页大小选择器位0(L)316(位92);
类指示符(C)318(位93);
虚拟页大小选择器位1:2(LP)322(位95-96);以及
基数(Radix)段指示符(RS)326(位99),在一个示例中,用0表 示禁能,用1表示使能。当RS=1时,将用于哈希页表搜索的虚拟地址的最 低S(编码在SLBEB中)位设置为零。
在一个实施例中,不能从非执行(N=1)段执行指令。段可以包含多种 页面大小的混合。L以及LP位指定了段能够包含的基础虚拟页面大小。在 一个示例中,SLBLψLP编码如下所示:
编码         基础页大小
0b000        4KB
0b101        64KB
附加值       2b字节,其中b>12并且b在编码值之中可能不                     同。
其中“附加值”是取决于具体实施的,就如同相应的基础虚拟页大小。在给定实施所 不支持的值被保留在该实施中。
基础虚拟页大小还被称为基础页大小,是段的最小虚拟页大小。基础虚 拟页大小是2b字节。通过PTELψLP来指定实际虚拟页大小(还被称为实际页 大小或虚拟页大小)。
类字段(Class field)与SLB无效条目(SLBIE)以及SLB全部无效 (SLBIA)指令联合使用。类(class)指的是一组SLB条目和特定于实施 的旁视信息,以便仅仅位于某一组的条目需要被无效,而其它组的则可被保 存。分配至一个从一个SLB条目的旁视条目导出的实施特定的旁视的类 值,要匹配该SLB条目的类值。分配给一个不是从一个SLB条目(例如实 模式地址转换)的旁视条目导出的实施特定旁视的类值是0。
软件要保证SLB包含至多一个转换给定指令的有效地址的条目。如果 试图创建违反这个要求的SLB条目,就会引起自动检验(machine  check)。
如此处所描述的,SLB的至少一个字段用于访问页表,特别是一个特 定的页表条目。现参考图4A-4B描述页表以及页表条目相关的进一步信 息。在这个示例中,页表及其对应的条目是用于Power ISA架构的;但是, 也可将其它页表以及条目用于其它架构。
首先参看图4A,页表400包括一个或多个页表条目402。举一个例子 来说,页表400是哈希页表(HPT),哈希页表是指定了虚拟页号(VPN) 与实际页号(RPN)之间映射关系的大小可变大小的数据结构,例如,其中 实际页的实际页号是该实际页的第一字节的地址的0:47比特位。哈希页表 大小可以是大小以2n字节计的任何大小,其中18≤n≤46。哈希页表将要在 具有存储控制属性的存储中被定位,存储控制属性用于对其的隐式 (implicit)访问。在一个实施例中,开始地址是其大小的倍数,除非该实施 方式支持一个服务器。不严格的页表对准目录,在这种情况下,举一个例子 而言,它的开始地址是218字节的倍数。
在一个示例中,哈希页表包含页表条目组(PTEGs)。例如,一个页表 条目组包括:八个每个具有16字节的页表条目;每个页表条目组因此具有 128字节的长度。PTEGs是搜索页表的入口点。
现参考图4B描述页表条目的进一步细节。每个页表条目402将一个虚 拟号映射至一个实际页号。举Power ISA架构为例,一个页表条目包括以 下:


由国际商业公司提供的2010年7月23日的Power ISATM说明书的第 2.06版修订版B中所描述的关于页表以及页表条目的实施方式的进一步细 节,通过引用被全部包含在本文中。
使用哈希页表转换地址仅仅是转换技术的一个示例。其它地址转换方 案,包括那些使用层级转换表,在下文以及以下的出版物中进行描述:2010 年8月的z/Architecture-操作准则,公开号SA22-7932-08,第九版 (z/Architecture–Principles of Operation,Publication No.SA22-7932-08,9th Edition,August 2010),以及英特尔安腾架构软件开发者指南第二卷:系统 架构,文档编号:245318-005(Intel Itanium Architecture Software  Developer’s Manual Volume 2:System Architecture,Document Number: 245318-005),每个出版物都通过引用被全部纳入本文。在一个示例中,对 z/Architecture来说,层级结构的表被称作动态地址转换(DAT)表;对 Power ISA来说,这些表被称作基数表(radix tables)。
现参看图5A描述层级结构的转换表转换机制的一个示例。在这个例子 中,转换表504被提供用于转换虚拟内存502的地址,但在这个例子中,只 有A和B区域(regions)要被用于实地址。举例来说,用控制寄存器 (CR3)506提供层级转换表504(hierarchical translation tables)的最高次 序的转换表的起始地址。使用有效地址508索引至层级转换表504中的每个 表中以确定下一个表的起始地址,直到定位到例如一个具有物理内存510的 一个页面的地址的页表条目(PTE)。在一个例子中,转换机制是DAT, 有效地址是具有多个用于索引至转换表的索引的虚拟地址。
在图5B示出的一个例子中,是通过有效地址508的高位部分508a来 “索引”该层级结构中的最高级层次转换表以定位表1条目512a,表1条 目512a被用于定位下一个转换表(表2)。也就是说,条目512a包括表2 的起始地址(origin address)。同样的,有效地址508的下一部分508b用于 索引至表2之中以找到表2条目512b,表2条目512b具有表3的起始地 址。有效地址508的下一部分508c用于索引至表3之中以找到表3条目 512c,表3条目512c具有页表514a的起始地址。有效地址508的下一部分 508d用于索引至页表514a之中以找到页表条目512d,页表条目512d具有 物理内存页面516的地址。在一个实施例中,转换表层级的起始可包括表选 择器字段,用于确定该起始是用于转换表层级的哪一个。因此,该转换可以 只需要该层级的一个子集(其中有效地址被限制为包括预定数目的值为零的 最高有效位)。采用较少表将会比采用较多表转换得更快。
通过遍历层级页表(hierarchical page tables)所定位到的页表条目包括 各种信息,该各种信息包括用于访问物理内存的实地址的至少一部分。页表 条目中所包括的格式以及信息依赖于系统配置的架构和/或转换的特定类 型。
在一个例子中,地址转换是z/Architecture中的DAT转换,如图6A所 描述的,页表条目600包括以下:
页面帧实地址(PFRA)(602):位0-51提供了实存储地址的最左侧的 多个位。当这些位与位于右侧的虚拟地址的12比特字节索引字段串联在 一起时,就提供了一个64位的实地址。
页面有效位604(I):位53控制与页表条目关联的页面是否可用。当 该位为0时,该页表条目被用于处理地址转换。当该位为1时,该页表 条目不会被用于转换。
DAT-保护位(P)606:位54控制了在页面内能否进行存储访问。这个 保护机制是除了键控制保护(key-controlled-protection)以及低地址保护 (low-address-protection)机制之外的机制。这个位对于取(fetch)访问 没有影响;以及
改变-记录覆盖(CO)608:当没有应用增强的DAT时,页表条目的位 55要包含0;否则,识别出一个转换说明异常(translation-specification  exception)作为采用那个条目进行地址转换的指令的执行的一部分。当 采用增强的DAT并且段表条目(STE)格式控制位是0时,该页表条目 的位55是该页面的改变-记录覆盖(change-recording override)。
在进一步示例中,地址转换是Power ISA的基数转换(radix  translation),页表条目包括图6B所描述的下列字段。该页表条目的格式中 至少包括一些与采用哈希技术获取的Power ISA页表条目字段相似的字段。 在一个例子中,页表条目650包括:


根据一个方面,为系统配置提供不同类型的地址转换结构,用于转换地 址。举例说明,一类型采用了层级数据结构(例如,根结构(radix  structure)),另一类型则采用了哈希数据结构。也可使用其它类型和/或不 同类型的结构,例如包括层级结构与哈希结构的混合,或例如偏移结构 (offset structure)。此外,在一个例子中,用于特定转换的转换结构的类型 是可以选择的。
参看图7A,描述从多个用于转换地址的转换机制中进行选择的逻辑过 程的一个实施例。在这个例子中,环境是具有由一个主机(例如,包括主机 操作系统和/或管理程序的主机)所支持的一个或多个客户(例如,在分区 内执行的客户操作系统)的虚拟化环境,并且,正被转换的地址是相对于主 机物理地址(也被称为主机实地址)的(基于有效地址获得的)客户虚拟地 址。在一个实施例中,是使用所述环境的硬件(例如,MMU)来实施图7A 所示的逻辑过程,除非另有说明。在另一个实施例中,使用硬件和/或固件 实施该逻辑过程。举例而言,此处所应用的固件包括,微码、毫码和/或处 理器的宏代码。例如,它包括硬件级别指令和/或用于实施较高级机器代码 的数据结构。在一个实施例中,举例来说,它还包括通常作为微码所交付的 专有代码,专有代码包括可信的软件或者特定于底层硬件的微码,并控制操 作系统对系统硬件的访问。
现参看图7A,首先,步骤700,分区内的硬件(例如,虚拟环境内的 处理器的存储器管理单元MMU)接收内存访问请求,该内存访问请求包括 对一个有效地址的内存地址转换请求。举例而言,内存地址请求可以是:用 于加载(load)/存储的内存操作,指令中的内存操作数(memory  operand),在取指令期间将要被访问的指令地址,载入的实地址,或者预 取指令。
步骤702,基于转换请求中的有效地址,在分区内采用选定的转换格式 将获得的客户虚拟地址转换为客户物理地址(GPA),转换格式例如是基数 转换(radix translation)。判断步骤704,判断是否发生了基于从客户虚拟 地址到客户物理地址的转换事件。步骤706,如果已发生转换事件,则根据 导致错误的转换对应于指令还是对应于数据存取,使用指令存储中断 (ISI)或数据存储中断(DSI)将那个转换事件从硬件提供给操作系统。但 是,如果没有转换事件时,客户虚拟地址已经被转换为客户物理地址。
然后是判断步骤708,判断将要选择用于将客户物理地址转换为主机物 理地址的转换类型。在这里的一个例子中,所选择的是层级转换机制(例 如,基数)或者是哈希页表转换机制;然而,在其它示例中,还可选择其它 类型的转换机制,例如偏移机制(offset mechanism)或其它类型。在一个 实施例中,转换机制的选择取决于配置该系统用于转换的管理程序的类型, 以及该管理程序的偏好(preference),和/或该选择可基于内存的条件。例 如,如果主机内存没有多少碎片,具有大页面,就可选择基数或其它层次转 换机制;对于严重碎片化的主机内存来说,可以选择哈希页表转换机制;对 于静态分区,可选择偏移转换机制。其它选择标准也是可能的。
进而,在一个实施例中,可在不同级别的转换中进行选择,例如包括: 从客户虚拟转换到客户物理转换,和/或从客户物理转换到主机物理转换, 每个转换都独立于其它转换。即,在一个级别(例如,客户级别)的特定结 构的选择对在另一级别(例如,主机级别)的选择没有影响。
在一个实施例中,在进行该选择之后并且在接收到转换请求之前,由系 统的管理程序(hypervisor)通过在一个或多个控制寄存器、其它寄存器、 或内存中设置一个或多个标识符来配置该选择。在另一个例子中,例如是在 转换的时候由管理程序或操作系统动态地做出该选择并将其提供给硬件或固 件。
步骤708之后,步骤710,如果为主机转换选择了基数(或者其他层级 的)转换,就采用基数(或者其它层级结构的)转换将客户物理地址转换为 主机物理地址。然而,步骤712,如果已经选择了哈希页表转换,则采用哈 希页表转换将客户物理地址转换为主机物理地址。尽管并未在这个特例中示 出,还可选择其它转换机制。
判断步骤714,如果转换事件在客户物理地址转换为主机物理地址期间 发生,则步骤716,通过主机指令存储中断(HISI)/主机数据存储中断 (HDSI)将那个事件向管理程序指明,其中,指定了客户物理地址。如果 还未指明转换事件,则客户物理地址已经转换为主机物理地址,并且该主机 物理地址可用于内存访问。
如果管理程序通过HISI或者HDSI被中断,则管理程序实施特定的处 理,先参考图7B描述该处理的一个例子。首先,步骤760,管理程序接收 HISI/HDSI。此后,判断步骤762,在一个实施例中,确定基数客户转换是 否使能。在一个例子中,通过控制寄存器或其它寄存器中的指示符确定。步 骤764,如果未使能基数客户转换,则按照现有的方式为HPT内存转换实 施HPT事件处理。例如,管理程序重新载入HPT。进一步的,步骤766, 重新启动引起HISI/HDSI的指令的执行。
现回到判断步骤762,在一个实施例中,如果使能基数客户转换,则步 骤768,通过操作系统从硬件获取要被转换的分区故障地址(partition fault  address)(例如,客户物理地址)。进而,步骤770,由内存映射中获取那 个地址的转换条目以载入(load)主机转换表。步骤722,将所获取的转换 条目安置于主机转换表中(在一个进一步的实施例中,例如是HPT或基数 radix),以及步骤774,重新启动引起HISI/HDSI的指令的执行。
例如,在一个实施例中,采用HPT结构实施主机转换。继步骤768, 根据该实施例,步骤770,由内存映射获取那个地址的转换条目以载入所述 HPT。根据另一个实施例并且在另一个执行中,在安置转换条目之前,已经 被页出(paged out)的主机物理页被页入(paged in)。步骤772,所获得 的转换条目被安置在HPT,以及步骤774,重新启动引起HISI/HDSI的指令 的执行。在另一个实施例中,通过基数结构实施主机转换。根据这个实施 例,继续到步骤768,为基数表处理转换故障,例如,步骤770,从内存映 射中获取那个地址的转换条目以载入该基数表。根据另一个实施例并且在另 一个执行中,在安置转换条目之前,已经被页出(paged out)的主机物理页 被页入(paged in)。步骤772,所获得的转换条目被安置在HPT,以及步 骤774,重新启动引起HISI/HDSI的指令的执行。
在一个实施例中,由单一中央处理器单元架构支持的客户/主机系统配 置的多个分区可被配置为采用不同的地址转换格式(例如,不同的客户格 式)。例如,一个客户被配置为采用层级转换格式(例如,基数)进行客户 转换,而另一个客户被配置为采用哈希转换格式进行客户转换。进而,客户 可采用不同的主机转换格式。例如,一个客户可采用单一级别的转换,因 而,主机转换采用同样的用于客户转换的转换格式。例如,使用哈希转换格 式将客户虚拟地址转换为主机物理地址。进而,另一个客户可采用嵌套级别 的转换,因而,一个格式(例如,基数)可被用于将客户虚拟地址转换为客 户物理地址,另一个格式或同样的格式(例如,哈希,偏移,基数)会被用 于将客户物理地址转换为主机物理地址。在一个例子中,这两个客户由相同 的管理程序来支持。
现参看图8A-8C描述为了地址转换来配置分区的实施例的进一步细 节。参看图8A,首先,步骤800,例如通过管理程序分配第一分区。这包 括为该分区在中央处理单元留出内存,以及留出操作系统和/或该分区的应 用将要使用的系统资源。此后,步骤802,为第一分区创建配置,例如包括 在配置表中指示由分区使用的用于主机级别转换(例如,基数,哈希等等) 的地址转换格式的类型,和/或分区的类型(例如,单级别或嵌套级别转 换)。这个配置表还可包括客户级别转换所使用的转换格式。在一个进一步 的实施例中,分区包括多个部分,每个部分分配了一个地址转换机制。该分 配给一个部分的地址转换机制是可选择的并且对每个部分来说可以相同或不 同。这些分配包括在一个或多个配置表中。
对于第二分区以及任何其他将要分配的分区,重复以上流程。如图所 示,步骤804,分配第二分区,并且,步骤806,为该第二分区创建配置。 同样,可以分配和配置其它分区。
在一个进一步的实施例中,通过管理程序调用在分区分派时(partition  dispatch time)选择分区类型和/或转换机制,下面会进行描述。进而,可以 使用管理程序调用改变分区类型或所选择的转换机制。
此后,参看图8B对分派一个或多个分区进行描述。即,为分区提供在 其中执行该分区的时间片。因此,在一个实施例中,步骤830,在一个特定 时刻,选定的分区被分派(dispatched)。例如,向该分区分配系统资源以使得 它的操作系统和应用能运行。进而,步骤832,访问该分区的配置表,以及 步骤834,例如,将从配置表获得的该分区的配置信息存储在用于地址转换 的一个或多个CPU配置寄存器或内存结构中。对于每个将要被分派的 (dispatched)分区执行该流程。
继配置以及分派分区之后,可为该分区提供地址转换。例如,如图8C 所示,在一个例子中,步骤850,生成分区地址。例如,采用SLB(例如, 在单级别转换机制中)生成客户虚拟地址,或者采用客户转换结构(例如, 基数)由客户虚拟地址(例如,在嵌套级别转换机制中)生成客户物理地 址。步骤852,然后,访问分区配置信息以获得用于将客户地址转换为主机 物理地址的主机转换技术以及参数。步骤854,通过所指示的技术以及所检 索的参数转换所生成的虚拟地址以获得主机物理地址。步骤856,用这个地 址访问内存。
在一个实施例中,单一的管理程序支持多个分区,该管理程序能够支持 半虚拟化(paravirtualized)的分区,以及全虚拟化的分区。如本文所用的, 半虚拟化的分区是一种通过操作系统与管理程序沟通来处理由主机级别转换 所导致的地址转换错误的分区。即,客户更新主机的地址转换表;不过,有 些信息(例如,由系统使用的用以存储一个页面的主机物理地址)会丢失, 要由管理程序提供。相比之下,在全虚拟化的分区中,客户操作系统不知道 主机级别转换。操作系统不接受错误指示,并且不管理这样的与主机转换相 对应的错误。术语“全(fully)”用在此处仅为了与“半虚拟化”相区分。特别 的,在一个分区中,一个系统对于地址转换来说可以是全虚拟化的,但对于 其他系统方面(例如I/O操作)则不是。
在一个实施例中,通过单个管理程序支持半虚拟化的分区以及全虚拟化 的分区,其中,半虚拟化的分区采用单级别转换将客户虚拟地址转换为主机 物理地址,在全虚拟化分区中采用嵌套级别转换,在嵌套级别转换中将客户 虚拟地址转换为客户物理地址,然后将该客户物理地址转换为主机物理地 址。该管理程序是一种在本文中称为半虚拟化管理程序的特殊类型,但也支 持全虚拟化(例如,在一个实施例中不必修改管理程序)。下面会参考图 9A-9B对其进行描述。
首先参看图9A,所示的系统配置900具有运行在系统硬件906上的管 理程序904所支持的异构客户902a、902b。在这个例子中,管理程序是半 虚拟化的管理程序,其中,举例而言,客户902a能够与管理程序904沟通 以将来自客户虚拟地址(GVA)的一个地址转换为主机物理地址。也就是 说,客户管理至少部分地与正被转换的地址相关的地址空间。例如,如果在 主机地址转换期间有地址转换错误(亦称,丢失(miss)),就(例如由管 理程序、固件或硬件)通知操作系统(例如,AIX),该操作系统在主机地 址转换表中插入丢失(missing)的条目,不过,有些信息会丢失,要由管 理程序填入。在一个例子中,客户902a的地址转换表是哈希页表908(hash  page table,HPT)。
此外,管理程序904还支持客户902b。然而,不像客户902a,客户 902b使用多级(亦称嵌套)转换,其中,首先在分区中将客户虚拟地址转 换为客户物理地址(例如采用基数转换),然后在主机级别转换期间使用诸 如基数转换、哈希页表转换等将该客户物理地址转换为主机物理地址 (HPA)。但在这种情形下,客户不知道管理程序并且也不与管理程序沟 通。在这种情形的一个方面,该客户在关于主机转换操作方面并不知道该管 理程序,并且在关于主机转换方面也不与管理程序沟通,但可在其它特性 (例如I/O)方面知道该管理程序。
因而,在一个实施例中,为了使得管理程序也支持客户902b,采用了 图9B中所示的附属部件950(adjunct component)。该附属部件允许管理程 序904继续作为半虚拟化管理程序,但如客户902b所需地支持全虚拟化。 由于客户902b不知道主机提供的转换,但该管理程序依赖于其它实体(例 如操作系统)来处理丢失(miss),假如在将客户物理地址转换为主机物理 地址时发生了丢失,就为该分区提供一个指示,但是,接收该指示并(例如 代表操作系统)处理该丢失的,是附属部件。在一个例子中,附属部件950 采用系统HCALL,HENTER 954来更新该主机转换表。附属部件950获取 配置信息,用于创建将要用来更新该主机转换表的结构。
关于处理地址翻译错误的多种机制的进一步细节会参考图10A-10C进 行描述。首先参看图10A,描述采用半虚拟化管理程序管理地址转换的逻辑 的一个实施例。在一个实施例中,利用分区半虚拟化接口,由客户确定在主 机转换表中的位置以及保护属性(protection attribute)。这些属性包括,诸 如,客户虚拟地址,分段大小(segment size),页面大小,Ks,Kp,pp,Key 等等。例如,转换被装入具有HCALL接口的HPT中。HENTER加入客户 虚拟地址进行主机物理地址转换,HREMOVE移除这样的转换。
参看图10A,首先,步骤1000,从客户虚拟地址到主机物理地址的转 换引起主机转换表(例如HPT)中的丢失(miss)。步骤1002,例如通过 管理程序指令存储中断(HISI)/管理程序数据存储中断(HDSI)从硬件或 固件提供指示事件。步骤1004,在一个实施例中,管理程序将该丢失分派 至该分区(例如,客户操作系统),以及步骤1004,该分区采用诸如被称 为HENTER的HCALL,,更新该转换结构。此后,步骤1008,继续该指 令的执行,,然后处理结束。在一个实施例中,直接发送该指示事件至该分 区而没有管理程序的干涉,将步骤1002与步骤1004合并为单个步骤,可选 的,在硬件中实施。在给分区的指示事件的一个方面,该指示事件是ISI或 DSI异常。
参看图10B,描述采用全虚拟化附属部件来处理丢失的逻辑过程的一个 实施例。首先,步骤1020,附属部件接收配置信息,例如内存大小以及与 该内存相关的地址。步骤1022,该附属部件初始化用于记录客户物理地址 到主机内存映射的表。此外,步骤1024,该附属部件立即或按需地分配内 存。然后,步骤1026,假如该附属部件接收到针对某个主机转换表的丢失 指示,则它处理该丢失指示。
参考图10C,描述处理丢失指示相关的进一步细节。首先,步骤 1050,该附属部件接收该丢失指示。举例来说,该系统配置的异常逻辑接收 HISI/HDSI异常,并将该异常引导至该附属部件(而不是操作系统)。步骤 1052,该附属部件查找该映射表以确定要安装在主机转换结构中的条目。判 断步骤1054,如果没有找到该条目,则到步骤1056,指示一个错误。否则 到步骤1058,使用HENTER将该转换装入该主机转换结构。步骤1060,将 控制转移给操作系统,然后继续指令的处理。
下面,参考图11-13,描述关于不同类型转换结构的进一步细节,该不 同类型的转换结构包括层级转换结构(hierarchical translation structure),例 如基数转换结构及其变形,例如,基数转换结构之上的基数(radix on radix  translation structure)(即:客户转换使用基数表,同时,主机转换使用基数 表),以及在哈希页表(HPT)转换结构之上的基数(即:客户转换使用基 数表,连同着主机转换使用HPT表)。
首先参看图11,描述采用基数转换将虚拟地址转换为物理地址的逻辑 过程的实施例。如图所示,举例来说,存储在寄存器110中的基数表起始 (radix table origin)指示了基数转换结构1102的开始。基数转换结构 1102,也被称为基数页表(RTAB),例如是层级的、大小可变的数据结 构,用于指定虚拟页号与实际页号之间的映射,虚拟页号与虚拟实际号之间 的映射,或者虚拟实际页号与虚拟页号之间的映射,其中,实际页的实际页 号例如是该实际页第一字节的地址的0-44比特位。位于存储器中的RTAB 具有存储控制属性,用于对其进行的隐式访问。在一个例子中,该起始地址 与4K边界对齐。在一个实施例中,该RTAB包括一系列的512个条目的 表。
在一个例子中,基数转换结构1102例如包括多数个基数结构,包括4 级页目录(PD)1102a,3级页目录1102b,2级页目录1102c,以及1级页 表(PT)1102d。每个页目录以及页表包括多数个条目,此处分别称为页目 录条目(PDEs)以及页表条目(PTEs)。(一个条目的L字段指示是否有 用于转换的额外条目)。在这个例子中,用从有效地址的分段偏移1112生 成的页号1110索引至该结构中。
举一例而言,为了索引至基数结构1102中,页号1110的前X(例如 9)个比特用作基数表起始1100所指向的PD 1102a中的偏移。PD 1102a中 选定PDE的内容提供了PD 1102b的地址,并且,页号1110的接下来的X 个比特被用于索引至PD 1102b中以获得PD 1102c的地址。进而,页码 1110的接下来的X个比特被用于访问PD 1102c的选定的PDE以获得页表 1102d的地址。页码1110的接下来的X个比特被用于访问PT 1102d的选定 的PDE。PT 1102d的PTE的输出结合段偏移1112的字节部分1114,创建 了物理地址1116,亦称实地址。
上面描述了用基数转换将虚拟地址转换为物理地址的实施例。然而,在 虚拟地址是客户虚拟地址的情形下,需要采用额外的处理将每个客户地址转 换为相应的主机地址。参考图12对这个逻辑过程的一个实施例进行描述, 图12示出了基数转换机制之上的基数(radix on radix translation  mechanism)的例子。即,基数被用于客户转换以及主机转换。
现参看图12,基数转换机制之上的基数包括基数客户结构1202以及基 数主机结构1204。基数转换结构1202类似于图11中的基数结构1102并且 包括多数个基数结构,包括4级PD 1202a,3级PD 1202b,2级PD 1202c,以及1级PT 1202d,其中每个都包括多个条目。相似的,基数主机 结构1204也包括多数个包括了4级PD,3级PD,2级PD以及1级PT的 基数结构,并且每个基数结构都包括多个PDEs或PTEs。通过基数主机结 构转换客户页表指针1200(也被称为客户4级表的虚拟实地址),以提供 客户转换结构1202的客户4级表的实地址。例如,正如上面参考图11所描 述的,4级表的虚拟实地址的比特位被用于获取4级PD 1202a的实地址。 举个例子,虚拟实地址1200的前X(例如9)个比特被用于索引至结构 1204的4级PD以获取结构1204的3级PD的地址。虚拟实地址1200的接 下来的X个比特被用于索引至结构1204的3级PD以获取结构1204的2级 PD的地址。虚拟实地址1200的接下来的X个比特被用于索引至结构1204 的2级PD以获取结构1204的1级PT的地址,以及虚拟实地址1200的接 下来的X个比特被用于索引至结构1204的1级PT以获取4级PD1202a的 实地址。
然后,在客户结构1202中,将要被转换的有效地址(未示出)的第一 组X(例如9)个比特被用于索引至4级PD 1202a中以获得3级PD 1202b 的虚拟实地址。通过使用基数主机结构,这个虚拟地址被转换到3级PD 1202b中,如上面所描述的,使用3级PD的虚拟实地址的比特索引至基数 主机结构1204之中。该有效地址的第二组X个比特被用于索引至PD 1202b 中以获取2级PD 1202c的虚拟实地址。然后,使用主机结构1204转换那个 地址以获取2级PD 1202c的实地址。该有效地址的第三组X个比特被用于 索引至PD 1202c中以获取PT 1202d的虚拟实地址。该有效地址的接下来的 X个比特被用于索引至PT 1202d中以获取虚拟实地址。采用基数主机结构 1204转换该虚拟实地址,以及,那个转换的输出并结合该有效地址的字节 偏移就是主机物理地址1206。在一个例子中,使用这种方式的转换时,在 最差的情况下需要24次读取以转换一个地址。
除了上面所述的机制,还提供了哈希页表(HPT)之上的基数(radix  on hash page table)的转换机制,其中,通过基数结构进行客户转换,通过 哈希页表结构进行主机转换。参考图13描述哈希页表之上基数(radix on  hash page table)转换的例子。参看图13,客户页表指针1300(还被称为4 级表(1304a)的虚拟实地址)被输入到主机哈希页表1302中,用以将地址 1300转换为客户基数转换结构1304的4级PD 1304a的实地址。类似于上面 描述的基数结构,基数转换结构1304包括多数个基数转换结构,例如包 括,4级PD 1304a,3级PD 1304b,2级PD 1304c,以及1级PT 1304d,在 这个例子中,从HPT1302中获取被称为4级页目录(PD)的4级结构 1304a的实地址。
要被转换的有效地址的第一组X(例如9)个比特被用于索引至PD 1304a中以获取相关的内容。如这些转换的每一个中的那样,检查所选择的 PD 1004a的4级页面目录条目的内容,以看看是否有需要检索的额外级别 (例如,是L=0),并且如果是这样的话,PD 1304b的虚拟实地址被用于 哈希到HPT 1302中去。基于以上,获取了3级PD结构1304b的实地址。 有效地址的接下来的X个比特被用于索引至PD 1304b中并且该访问提供了 2级结构1304c的虚拟实地址。在哈希结构1302中使用虚拟地址以获取结构 1304c的实地址。有效地址的接下来的X个比特被用于索引至PD 1304c中 以获取1级PT 1304d的虚拟实地址,1级PT 1304d被用于访问该HPT。 HPT访问输出是1级表1304d的实地址,其被用于获取另一个虚拟实地址。 由于这隐含的表明L=1并且页表中所有级别都已被耗尽,这是基数结构的 最后的表,所以,这个条目是页表条目。有效地址的接下来的X个比特被 用于索引至页表中以提供客户物理地址。该客户物理地址被用于访问哈希 表。哈希表的输入结合该有效地址的字节偏移提供了与该正被转换的有效地 址相对应的主机物理地址1306。
在一个实施例中,用哈希表获取客户页表指针(例如,客户页表指针 1300;又叫做层级结构表中第一个表的虚拟实地址)。这会参考图14进行 描述。如图所示,在这个例子中,如果SLBERS=1(1400),在哈希PTE检 索期间发现的PTE(1402)是用于指向能够通过非管理程序代码操作的层级 页表1404的间接PTE。在这个例子中,层级页表例如是由Power ISA架构 连同该哈希页表一起所使用的基数页表。通过RTABORG替代该哈希页表 条目(在哈希转换期间定位)中的ARPN以及LP字段,RTABORG是基数 页表的虚拟实地址。在一个例子中,基数页表于是被用于获取将要被访问的 物理内存的虚拟实地址(亦称,客户物理地址)。在一个实施例中,然后, 通过诸如哈希机制(例如参看图13)或基数机制(例如参看图12)将该虚 拟实地址转换为主机物理地址。
更具体的,如果指示器指定将要使用多种类型的转换格式来将请求的有 效地址转换为实地址(i.e.,SLBERS=1),那么处理就会继续从SLBE获取 VSID。该VSID用来在一个类型的表(例如,哈希表)中定位条目以获取 另一类型表(例如,层级表,例如基数表)的根。特别的,在一个例子中, VSID被用来创建用于索引至HPT中以获得该RTABORG的正则地址 (canonical address)。正则地址是为一个段中的多个页所创建的地址。也 就是说,一个特定的段包括共享相同基数表的多个页。因此,用于索引至 HPT中的地址对所有那些页是相同的。为了创建该正则地址,所有共享相 同基数表的地址的低次序地址位被归零(以及在一个实施例中加上一个合适 的常量)。例如,基于有效地址所获取的虚拟地址包括VSID,页以及字节 偏移。VSID被用于(可选的,连同该变量)创建该正则地址。该正则地址 被用来索引至该HPT中以获得基数表(例如,在转换中所使用的层级表中 第一个表的虚拟实地址)的起始。
除了在上文中描述的转换机制,或者作为上文中描述的转换机制的替 代,也可采用其它转换机制。另一类转换机制的例子是偏移机制上的基数 (radix on offset mechanism),其中,基数客户转换机制与基于实模式基 (real mode base)以及实模式界限(real mode limit)的主机转换连同在一 起使用,会参看图15对其一个例子进行描述。
在这个例子中,通过使用实模式偏移寄存器(RMOR)、实模式界限选 择器(RMLS)1502以及基数结构1504实施转换。如前面所描述的,基数 结构1504在这个例子中包括:4级PD 1504a,3级PD 1504b,2级PD 1504c以及1级PT1504d,其中每个都包括多个PDEs或PTEs。通过使用实 模式偏移寄存器(RMOR)值以及实模式界限选择器(RMLS),客户页表 指针1500(亦称,PD 1504a的虚拟实地址)被转换为PD 1504a的实地址。 该RMOP与地址1500相加并将相加的结果与RMLS相比较。在这个例子 中,如果它比界限小,则该相加结果被用于访问基数表1504的PD 1504a。 基数表被走遍,正如此处所描述的(例如,使用有效地址的第一组X(例如 9)个比特),以从PD 1504a中所选择的PDE获得PD 1504b的虚拟实地 址。再次会用到基(base)以及界限(limit),但这次是与PD 1504b的虚 拟实地址一起使用以获得PD 1504b的实地址。转换继续进行,当定位到PT 1504d的选定的PTE时,获得客户物理地址,采用主机结构1502转换该客 户物理地址以获得一地址,当将该地址与有效地址的字节偏移串联在一起时 就提供了将在转换中所使用的主机物理地址。
上面的细节描述是在配置中包括多种类型的转换结构的多个方面。在一 个实施例中,关于可以用哪种转换机制将有效地址转换为主机实地址是可选 择的。然而,如果系统配置不支持这样的特性或者如果支持那样的特性以及 传统的转换技术(legacy translation techniques),那么就提供传统的转换。
参看图16描述采用哈希页表的传统转换技术的一个实施例的逻辑过 程。首先,步骤1600,接收到包括有效地址的地址请求。步骤1602,用该 有效地址生成虚拟地址。举例来说,使用ESID定位包括VSID的SLBE。 通过VSID与有效地址的页字节的合并,提供要被转换的虚拟地址。从而, 通过采用地址置换(address substitution)(此处也称为分段)并且不使用分 页支持,创建了虚拟地址。此后,判断步骤1604,判断是否具有SLB地址 生成事件。例如,当查找ESID时在SLB中是否存在丢失(miss)?步骤 1606,如果不是,则采用传统的HPT转换将该虚拟地址转换为实地址。判 断步骤1608,判断是否具有转换事件。如果没有HPT转换事件,处理结 束,并且该实地址能被用于访问内存。
现返回到判断步骤1608,如果有HPT转换事件,步骤1610,则利用例 如ISI/DSI或HISI/HDSI,将该转换事件指定给操作系统或管理程序两者中 的任一个。步骤1612,实施HPT事件处理,包括可选地进行分页。步骤 1614,操作系统或管理程序重新启动指令,以及,流程回到步骤1600。
现返回判断步骤1604,如果有SLB生成事件,则步骤1620,将SLB 事件指示给操作系统。进而,步骤1622,实施SLB事件处理,例如包括重 新载入该SLB(不包括分页)。步骤1624,操作系统重新启动指令,以 及,处理继续到步骤1600。
参看图17,描述用于转换内存地址的一个进一步的传统技术。该技术 采用了层级转换机制。首先是步骤1700,接收到地址请求。步骤1702,举 例来说,采用DAT转换转换该地址,这与本文所描述的层级转换相似。使 用DAT转换的一个示例性架构是z/Architecture,这在IBM出版的标题为 “z/Architecture-操作准则”(出版号SA22-7932-08,第9版,2010年8月)中 有所描述,在本文中通过引用将其全文纳入本申请。此后是判断步骤 1704,确定是否有DAT转换事件,例如丢失(miss)。如果没有,则步骤 1706,该地址被转换为物理地址,并且处理完成。
然而,判断步骤1704,如果有DAT转换事件,则步骤1710,该转换事 件被指示给操作系统或管理程序两者中的任一个。步骤1712,在操作系统 或管理程序中实施DAT事件处理;可选的,实施分页。进而,步骤1714, 操作系统或管理程序重新启动指令,以及,处理继续到步骤1700。
以上所详细描述的是一种配置(configuration),该配置包括多种类型 转换结构用来将有效地址转换为实地址。尽管已经描述了转换机制的例子, 也可采用额外的和/或不同的机制。进而,在一个实施例中,所提供的客户/ 主机中的多个分区具有与其相关的不同的转换机制。例如,一个分区具有与 其相关的用于将客户虚拟地址转换为主机物理地址的单级别转换机制,并 且,另一个分区具有与其相关的用于将客户虚拟地址转换为主机物理地址的 嵌套级别转换机制。此外,在一个实施例中,支持单级别转换的操作系统可 采用诸如SLB先从有效地址生成客户虚拟地址。但在进一步的实施例中, 可用处理器标识符或地址空间标识符进一步制定客户虚拟地址。
在一个实施例中,对于嵌套级别转换分区,管理程序使用哈希页表或另 外的主机转换架构创建具有线性转换地址空间的分区。一个分区的主机表输 入的范围是从0x0000到0xMAXX。一旦在客户中实施了从客户虚拟地址到 客户物理地址的第一级转换,这个转换就被用做第二级别转换。在一个实施 例中,分区不用HENTER/HREMOVE来管理替换或更新主机表。反而,当 主机表中的条目需要被更新/替换时,管理程序就透明地管理对主机表中主 机表条目的替换或更新。对于每个相对于主机物理地址范围的客户物理地 址,管理程序维护到主机物理地址的映射。当发生主机表丢失(miss)时, 管理程序透明地加载主机转换表。
此外,在一个方面,提供一个配置使得半虚拟化管理程序支持不同类型 的分区,包括那些希望该管理程序提供全虚拟化(例如,使用嵌套转换的分 区)以及那些使用半虚拟化(例如,使用但级别转换的分区)的分区。提供 了附属部件,用于安装全虚拟化分区所需要的线性地址空间。它被打包为一 个与管理程序相沟通的部件,以安装虚拟分区所需要的转换。实际的代码可 与管理程序、分区固件、或操作系统包含在一起,但是就程序逻辑而言,从 管理程序和/或操作系统角度却是相隔离的、不同的。在实施例中,附属部 件可以以管理程序和操作系统两者中的任何一个的优先级运行。如果与管理 程序封装在一起,尽管与其相分隔,它仍然具有足够的安全可信性,因此, 当将控制转移给附属部件时,需要进行的安全检查较少。
在一个例子中,通过分配分区内存(例如,采用HPTs,或其他主机转 换架构),创建了线性转换地址空间。一个分区的地址范围输入的范围是从 0x0000到0xMAXX。一旦在客户中实施了从客户虚拟地址到客户物理地址 的第一级转换,这个转换就被用做第二级别转换。响应于转换缺失 (translation misses),附属部件用HENTER来预安装(pre-install)转换或 安装转换。当HPT(或其它结构)中的条目需要被更新/替换时,附属部件 就透明地管理HPT(或其它结构)的替换。对于每个客户地址范围,该附 属部件维护到主机物理地址的映射。当发生HPT(或其它)缺失时,附属 部件以对操作系统透明的方式载入HPT(或其它结构)以方便支持全虚拟 化,管理程序使用能与管理程序或能与分区包含在一起的附属部件,并且, 该附属部件代表该管理程序以及该信任分区处理错误。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机 程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬 件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬 件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此 外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中 的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代 码。
可使用一个或多个计算机可读介质的任何组合。计算机可读介质可以 是计算机可读信号介质或者计算机可读存储介质。计算机可读信号介质可 以包括其中体现计算机可读程序代码的传播的数据信号,例如,在基带中或 者作为载波的一部分。这种传播的数据信号可以采用多种形式,包括—— 但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的 信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算 机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使 用或者与其结合使用的程序。
计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、 红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读 存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电 连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器 (ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁 盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适 的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有 形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使 用。
现在参考图18,在一个例子中,计算机程序产品1800包括,例如,一 个或多个非暂时计算机可读存储介质1802,在其上存储有计算机可读的程 序代码装置或逻辑1804,以提供并方便本发明的一个或多个方面。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述 介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组 合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明一个或 多个方面操作的计算机程序代码,所述程序设计语言包括面向对象的程序设 计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言— 诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机 上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在 用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上 执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络— —包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接 到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的 流程图和/或框图描述本发明的一个或多个方面。应当理解,流程图和/或框 图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序 指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它 可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令 通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图 中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处 理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质 中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操 作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或 其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一 系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程 装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操 作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和 计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或 框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、 程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指 令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以 不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并 行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也 要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方 框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现, 或者可以用专用硬件与计算机指令的组合来实现。
除了上述,本发明的一个或多个方面可由服务提供商提供、许诺 (offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例 如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施, 其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可 例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提 供商可从向一个或多个第三方销售广告内容接受付费。
在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应 用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本 发明的一个或多个方面。
作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读 代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个 或多个方面。
作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机 可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计 算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行 本发明的一个或多个方面。
虽然上面描述了多种实施例,但这些只是示例。例如,其他体系结构 的计算环境的可以包含并使用本发明的一个或多个方面。此外,也可使用 其他类型的转换结构,使得其他类型的环境可在一个或多个方面获益。此 外,该结构可能有不同的字段和/或不同的大小的字段。此外,对于每个级 别和/或每个结构,用于索引至结构的位的数目可以相同或不同。而且,一 个或多个方面可有关于I/O。可能会有许多变化。
此外,其他类型的计算环境可以从一个或多个方面获益。作为例子,环 境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如 指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真 (例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中, 仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿 真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真 模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单 个指令或操作。
在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取 单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指 令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行 单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将 数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运 算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作 被实现为仿真器软件中的一个或多个子例程。
此外,使用了适于存储和/或执行程序代码的数据处理系统,包含至少 一个通过系统总线直接或间接耦合至存储器元件的处理器。存储器元件例 如包括在实际执行程序代码时所采用的本地存储器、大容量贮存器以及提供 至少某个程序代码的临时贮存以便减少在执行期间必须从大容量贮存器取回 代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括,但不限于,键盘,显示器,指示设备, DASD,磁带,CD,DVD,拇指驱动器(thumb drives)和其他存储器介质 等)可以在直接或通过中间I/O控制器联结至系统。网络适配器也可被耦 连到系统,以便使得所述数据处理系统能够通过介于其间的专用或公共网络 耦连到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调 制解调器和以太网卡仅仅是少数几个可用类型的网络适配器。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在 此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非 上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和 /或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但 不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组 件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操 作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求 保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是 为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。 许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范 围与精神。选择和描述实施例是为了最佳地解释本发明的各个方面和实际应 用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改 的各种实施例理解本发明的各种实施例。

用半虚拟化的管理程序提供全虚拟化的附属部件.pdf_第1页
第1页 / 共49页
用半虚拟化的管理程序提供全虚拟化的附属部件.pdf_第2页
第2页 / 共49页
用半虚拟化的管理程序提供全虚拟化的附属部件.pdf_第3页
第3页 / 共49页
点击查看更多>>
资源描述

《用半虚拟化的管理程序提供全虚拟化的附属部件.pdf》由会员分享,可在线阅读,更多相关《用半虚拟化的管理程序提供全虚拟化的附属部件.pdf(49页珍藏版)》请在专利查询网上搜索。

提供了具有半虚拟化管理程序(904)的支持不同类型的客户(902a,902b)的系统配置,包括使用单级别转换(902a)以及使用嵌套级别转换(902b)。当在嵌套级别转换期间发生地址转换错误时,由附属部件(950,1026)接收该错误的指示。该附属部件至少部分地代表该客户解决地址转换错误(1026)。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1