CN104737138A - 用半虚拟化的管理程序提供全虚拟化的附属部件 - Google Patents
用半虚拟化的管理程序提供全虚拟化的附属部件 Download PDFInfo
- Publication number
- CN104737138A CN104737138A CN201380052434.XA CN201380052434A CN104737138A CN 104737138 A CN104737138 A CN 104737138A CN 201380052434 A CN201380052434 A CN 201380052434A CN 104737138 A CN104737138 A CN 104737138A
- Authority
- CN
- China
- Prior art keywords
- address
- client
- supervisory routine
- conversion
- appurtenances
- 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
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/109—Address translation 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/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/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
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
提供了具有半虚拟化管理程序(904)的支持不同类型的客户(902a,902b)的系统配置,包括使用单级别转换(902a)以及使用嵌套级别转换(902b)。当在嵌套级别转换期间发生地址转换错误时,由附属部件(950,1026)接收该错误的指示。该附属部件至少部分地代表该客户解决地址转换错误(1026)。
Description
本发明要求美国专利申请(申请序列号: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中找到的物理内存页的地址存储在TLB254中,使得对相同EA页面的进一步访问将会在TLB 254中“命中”,从而避免PTE搜索。通过处理器提供的页表起始地址(origin address)来定位页表。
现参看图3以及图4A-4B,描述关于段旁视缓冲(segment lookasidebuffer)以及页表的进一步细节。首先参看图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条目,就会引起自动检验(machinecheck)。
如此处所描述的,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,9thEdition,August 2010),以及英特尔安腾架构软件开发者指南第二卷:系统架构,文档编号:245318-005(Intel Itanium Architecture SoftwareDeveloper’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-specificationexception)作为采用那个条目进行地址转换的指令的执行的一部分。当采用增强的DAT并且段表条目(STE)格式控制位是0时,该页表条目的位55是该页面的改变-记录覆盖(change-recording override)。
在进一步示例中,地址转换是Power ISA的基数转换(radixtranslation),页表条目包括图6B所描述的下列字段。该页表条目的格式中至少包括一些与采用哈希技术获取的Power ISA页表条目字段相似的字段。在一个例子中,页表条目650包括:
根据一个方面,为系统配置提供不同类型的地址转换结构,用于转换地址。举例说明,一类型采用了层级数据结构(例如,根结构(radixstructure)),另一类型则采用了哈希数据结构。也可使用其它类型和/或不同类型的结构,例如包括层级结构与哈希结构的混合,或例如偏移结构(offset structure)。此外,在一个例子中,用于特定转换的转换结构的类型是可以选择的。
参看图7A,描述从多个用于转换地址的转换机制中进行选择的逻辑过程的一个实施例。在这个例子中,环境是具有由一个主机(例如,包括主机操作系统和/或管理程序的主机)所支持的一个或多个客户(例如,在分区内执行的客户操作系统)的虚拟化环境,并且,正被转换的地址是相对于主机物理地址(也被称为主机实地址)的(基于有效地址获得的)客户虚拟地址。在一个实施例中,是使用所述环境的硬件(例如,MMU)来实施图7A所示的逻辑过程,除非另有说明。在另一个实施例中,使用硬件和/或固件实施该逻辑过程。举例而言,此处所应用的固件包括,微码、毫码和/或处理器的宏代码。例如,它包括硬件级别指令和/或用于实施较高级机器代码的数据结构。在一个实施例中,举例来说,它还包括通常作为微码所交付的专有代码,专有代码包括可信的软件或者特定于底层硬件的微码,并控制操作系统对系统硬件的访问。
现参看图7A,首先,步骤700,分区内的硬件(例如,虚拟环境内的处理器的存储器管理单元MMU)接收内存访问请求,该内存访问请求包括对一个有效地址的内存地址转换请求。举例而言,内存地址请求可以是:用于加载(load)/存储的内存操作,指令中的内存操作数(memoryoperand),在取指令期间将要被访问的指令地址,载入的实地址,或者预取指令。
步骤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 faultaddress)(例如,客户物理地址)。进而,步骤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,为该第二分区创建配置。同样,可以分配和配置其它分区。
在一个进一步的实施例中,通过管理程序调用在分区分派时(partitiondispatch 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(hashpage 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 radixtranslation 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 translationmechanism)的例子。即,基数被用于客户转换以及主机转换。
现参看图12,基数转换机制之上的基数包括基数客户结构1202以及基数主机结构1204。基数转换结构1202类似于图11中的基数结构1102并且包括多数个基数结构,包括4级PD 1202a,3级PD 1202b,2级PD1202c,以及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级PD1202b中,如上面所描述的,使用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)之上的基数(radixon hash page table)的转换机制,其中,通过基数结构进行客户转换,通过哈希页表结构进行主机转换。参考图13描述哈希页表之上基数(radix onhash 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)个比特被用于索引至PD1304a中以获取相关的内容。如这些转换的每一个中的那样,检查所选择的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级PD1504c以及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的实地址。转换继续进行,当定位到PT1504d的选定的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控制器联结至系统。网络适配器也可被耦连到系统,以便使得所述数据处理系统能够通过介于其间的专用或公共网络耦连到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡仅仅是少数几个可用类型的网络适配器。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围与精神。选择和描述实施例是为了最佳地解释本发明的各个方面和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明的各种实施例。
Claims (20)
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)所述地址转换错误。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/646,773 US9355040B2 (en) | 2012-10-08 | 2012-10-08 | Adjunct component to provide full virtualization using paravirtualized hypervisors |
US13/646,773 | 2012-10-08 | ||
PCT/US2013/063783 WO2014058820A1 (en) | 2012-10-08 | 2013-10-08 | Adjunct component to provide full virtualization using paravirtualized hypervisors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104737138A true CN104737138A (zh) | 2015-06-24 |
CN104737138B CN104737138B (zh) | 2018-01-12 |
Family
ID=50433679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380052434.XA Active CN104737138B (zh) | 2012-10-08 | 2013-10-08 | 用半虚拟化的管理程序提供全虚拟化的附属部件 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9355040B2 (zh) |
CN (1) | CN104737138B (zh) |
WO (1) | WO2014058820A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105282226A (zh) * | 2015-09-01 | 2016-01-27 | 浙江省通信产业服务有限公司 | 一种基于以太网的控制系统通信方法 |
CN106371898A (zh) * | 2015-07-23 | 2017-02-01 | Arm 有限公司 | 事件队列管理 |
US9715469B1 (en) | 2016-10-21 | 2017-07-25 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9720863B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9720862B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9740647B1 (en) | 2016-10-21 | 2017-08-22 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9760512B1 (en) | 2016-10-21 | 2017-09-12 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9785451B1 (en) | 2016-10-21 | 2017-10-10 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US10002018B2 (en) | 2016-02-23 | 2018-06-19 | International Business Machines Corporation | Migrating single root I/O virtualization adapter configurations in a computing system |
US10025584B2 (en) | 2016-02-29 | 2018-07-17 | International Business Machines Corporation | Firmware management of SR-IOV adapters |
US10042720B2 (en) | 2016-02-22 | 2018-08-07 | International Business Machines Corporation | Live partition mobility with I/O migration |
US10042723B2 (en) | 2016-02-23 | 2018-08-07 | International Business Machines Corporation | Failover of a virtual function exposed by an SR-IOV adapter |
CN111367831A (zh) * | 2020-03-26 | 2020-07-03 | 超验信息科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
US9355040B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
GB2536200B (en) * | 2015-03-02 | 2021-08-18 | Advanced Risc Mach Ltd | Memory management |
GB2536199B (en) | 2015-03-02 | 2021-07-28 | Advanced Risc Mach Ltd | Memory management |
US9836410B2 (en) * | 2015-04-15 | 2017-12-05 | Qualcomm Incorporated | Burst translation look-aside buffer |
CN110362509B (zh) * | 2018-04-10 | 2024-04-12 | 北京忆恒创源科技股份有限公司 | 统一地址转换方法与统一地址空间 |
US11281607B2 (en) | 2020-01-30 | 2022-03-22 | Red Hat, Inc. | Paravirtualized cluster mode for legacy APICs |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070101099A1 (en) * | 2005-10-27 | 2007-05-03 | Makiko Shinohara | Virtual machine control method and virtual machine system |
US20100058358A1 (en) * | 2008-08-27 | 2010-03-04 | International Business Machines Corporation | Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities |
CN101971146A (zh) * | 2007-09-07 | 2011-02-09 | 甲骨文国际公司 | 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 |
CN102906702A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 对适配器的地址空间的访客端访问 |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4456954A (en) | 1981-06-15 | 1984-06-26 | International Business Machines Corporation | Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations |
US4680700A (en) | 1983-12-07 | 1987-07-14 | International Business Machines Corporation | Virtual memory address translation mechanism with combined hash address table and inverted page table |
JPS61148551A (ja) | 1984-12-24 | 1986-07-07 | Hitachi Ltd | アドレス変換方式 |
US5226168A (en) | 1989-04-25 | 1993-07-06 | Seiko Epson Corporation | Semiconductor memory configured to emulate floppy and hard disk magnetic storage based upon a determined storage capacity of the semiconductor memory |
EP0690386A1 (en) | 1994-04-04 | 1996-01-03 | International Business Machines Corporation | Address translator and method of operation |
JP3451595B2 (ja) | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US5809563A (en) | 1996-11-12 | 1998-09-15 | Institute For The Development Of Emerging Architectures, Llc | Method and apparatus utilizing a region based page table walk bit |
US6393544B1 (en) | 1999-10-31 | 2002-05-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for calculating a page table index from a virtual address |
US6671791B1 (en) | 2001-06-15 | 2003-12-30 | Advanced Micro Devices, Inc. | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms |
US7089377B1 (en) | 2002-09-06 | 2006-08-08 | Vmware, Inc. | Virtualization system for computers with a region-based memory architecture |
US6895491B2 (en) | 2002-09-26 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
US7111145B1 (en) | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US20040210588A1 (en) | 2003-04-18 | 2004-10-21 | Simkins Mark B. | Methods and apparatus for address lookup |
JP2005242757A (ja) | 2004-02-27 | 2005-09-08 | Hitachi Ltd | ストレージシステム |
US7937700B1 (en) | 2004-05-11 | 2011-05-03 | Advanced Micro Devices, Inc. | System, processor, and method for incremental state save/restore on world switch in a virtual machine environment |
US7167970B2 (en) | 2004-05-24 | 2007-01-23 | Sun Microsystems, Inc. | Translating loads for accelerating virtualized partition |
US8843727B2 (en) | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US7444493B2 (en) | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US7395405B2 (en) | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
US7428626B2 (en) | 2005-03-08 | 2008-09-23 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
US8099730B2 (en) | 2006-03-30 | 2012-01-17 | Intel Corporation | Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses |
US7752417B2 (en) | 2006-06-05 | 2010-07-06 | Oracle America, Inc. | Dynamic selection of memory virtualization techniques |
US7827381B2 (en) | 2006-06-05 | 2010-11-02 | Oracle America, Inc. | Hybrid techniques for memory virtualization in a computer system |
US7822941B2 (en) | 2006-06-05 | 2010-10-26 | Oracle America, Inc. | Function-based virtual-to-physical address translation |
US7734890B2 (en) | 2006-10-06 | 2010-06-08 | Okralabs Llc | Method and system for using a distributable virtual address space |
US20080104362A1 (en) | 2006-10-25 | 2008-05-01 | Buros William M | Method and System for Performance-Driven Memory Page Size Promotion |
US7685401B2 (en) | 2006-12-27 | 2010-03-23 | Intel Corporation | Guest to host address translation for devices to access memory in a partitioned system |
US8239657B2 (en) | 2007-02-07 | 2012-08-07 | Qualcomm Incorporated | Address translation method and apparatus |
US8078827B2 (en) | 2007-07-05 | 2011-12-13 | International Business Machines Corporation | Method and apparatus for caching of page translations for virtual machines |
US8219988B2 (en) | 2007-08-02 | 2012-07-10 | International Business Machines Corporation | Partition adjunct for data processing system |
US8645974B2 (en) | 2007-08-02 | 2014-02-04 | International Business Machines Corporation | Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device |
US8966219B2 (en) | 2007-10-30 | 2015-02-24 | International Business Machines Corporation | Address translation through an intermediate address space |
US8560806B2 (en) | 2007-12-31 | 2013-10-15 | Intel Corporation | Using a multiple stage memory address translation structure to manage protected micro-contexts |
US8103851B2 (en) | 2008-01-11 | 2012-01-24 | International Business Machines Corporation | Dynamic address translation with translation table entry format control for indentifying format of the translation table entry |
US8041923B2 (en) | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Load page table entry address instruction execution based on an address translation format control field |
US8074045B2 (en) | 2008-05-30 | 2011-12-06 | Vmware, Inc. | Virtualization with fortuitously sized shadow page tables |
US8316211B2 (en) | 2008-06-30 | 2012-11-20 | Intel Corporation | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts |
US8301863B2 (en) | 2008-11-17 | 2012-10-30 | International Business Machines Corporation | Recursive logical partition real memory map |
US8135937B2 (en) | 2008-11-17 | 2012-03-13 | International Business Machines Corporation | Logical partition memory |
US20100180276A1 (en) | 2009-01-15 | 2010-07-15 | Jiva Azeem S | Application partitioning across a virtualized environment |
US8443156B2 (en) | 2009-03-27 | 2013-05-14 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
US8332365B2 (en) | 2009-03-31 | 2012-12-11 | Amazon Technologies, Inc. | Cloning and recovery of data volumes |
US8386747B2 (en) | 2009-06-11 | 2013-02-26 | Freescale Semiconductor, Inc. | Processor and method for dynamic and selective alteration of address translation |
US20110016290A1 (en) | 2009-07-14 | 2011-01-20 | Arie Chobotaro | Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment |
US8285968B2 (en) | 2009-09-29 | 2012-10-09 | International Business Machines Corporation | Performing memory accesses while omitting unnecessary address translations |
US20110153909A1 (en) | 2009-12-22 | 2011-06-23 | Yao Zu Dong | Efficient Nested Virtualization |
US8489789B2 (en) | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
US8244978B2 (en) | 2010-02-17 | 2012-08-14 | Advanced Micro Devices, Inc. | IOMMU architected TLB support |
US8887227B2 (en) | 2010-03-23 | 2014-11-11 | Citrix Systems, Inc. | Network policy implementation for a multi-virtual machine appliance within a virtualization environtment |
US8745307B2 (en) | 2010-05-13 | 2014-06-03 | International Business Machines Corporation | Multiple page size segment encoding |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US8650337B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
US20140108701A1 (en) | 2010-07-16 | 2014-04-17 | Memory Technologies Llc | Memory protection unit in a virtual processing environment |
US8495318B2 (en) | 2010-07-26 | 2013-07-23 | International Business Machines Corporation | Memory page management in a tiered memory system |
US8789042B2 (en) | 2010-09-27 | 2014-07-22 | Mips Technologies, Inc. | Microprocessor system for virtual machine execution |
US8364932B2 (en) | 2010-10-29 | 2013-01-29 | Vmware, Inc. | System and method to prioritize large memory page allocation in virtualized systems |
US8839240B2 (en) | 2010-11-29 | 2014-09-16 | International Business Machines Corporation | Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device |
US9606936B2 (en) | 2010-12-16 | 2017-03-28 | Advanced Micro Devices, Inc. | Generalized control registers |
US9218343B2 (en) | 2010-12-20 | 2015-12-22 | International Business Machines Corporation | Partition file system for virtual machine memory management |
US8537706B2 (en) | 2011-01-11 | 2013-09-17 | International Business Machines Corporation | Preserving traffic class priority QoS with self-virtualizing input/output device |
US8825981B2 (en) | 2011-01-25 | 2014-09-02 | International Business Machines Corporation | Allocating addressable memory regions to an adapter |
CN103597451B (zh) | 2011-03-31 | 2017-06-13 | 英特尔公司 | 用于高可用性的存储器镜像和冗余生成 |
US9767039B2 (en) | 2011-07-18 | 2017-09-19 | Vmware, Inc. | Increasing granularity of dirty bit information in hardware assisted memory management systems |
US9047090B2 (en) | 2012-08-07 | 2015-06-02 | Qualcomm Incorporated | Methods, systems and devices for hybrid memory management |
US9355040B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
-
2012
- 2012-10-08 US US13/646,773 patent/US9355040B2/en active Active
-
2013
- 2013-03-07 US US13/789,101 patent/US9430398B2/en not_active Expired - Fee Related
- 2013-10-08 WO PCT/US2013/063783 patent/WO2014058820A1/en active Application Filing
- 2013-10-08 CN CN201380052434.XA patent/CN104737138B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070101099A1 (en) * | 2005-10-27 | 2007-05-03 | Makiko Shinohara | Virtual machine control method and virtual machine system |
CN101971146A (zh) * | 2007-09-07 | 2011-02-09 | 甲骨文国际公司 | 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 |
US20100058358A1 (en) * | 2008-08-27 | 2010-03-04 | International Business Machines Corporation | Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities |
CN102906702A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 对适配器的地址空间的访客端访问 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371898A (zh) * | 2015-07-23 | 2017-02-01 | Arm 有限公司 | 事件队列管理 |
CN105282226A (zh) * | 2015-09-01 | 2016-01-27 | 浙江省通信产业服务有限公司 | 一种基于以太网的控制系统通信方法 |
US10761949B2 (en) | 2016-02-22 | 2020-09-01 | International Business Machines Corporation | Live partition mobility with I/O migration |
US10042720B2 (en) | 2016-02-22 | 2018-08-07 | International Business Machines Corporation | Live partition mobility with I/O migration |
US10002018B2 (en) | 2016-02-23 | 2018-06-19 | International Business Machines Corporation | Migrating single root I/O virtualization adapter configurations in a computing system |
US10691561B2 (en) | 2016-02-23 | 2020-06-23 | International Business Machines Corporation | Failover of a virtual function exposed by an SR-IOV adapter |
US10042723B2 (en) | 2016-02-23 | 2018-08-07 | International Business Machines Corporation | Failover of a virtual function exposed by an SR-IOV adapter |
US10025584B2 (en) | 2016-02-29 | 2018-07-17 | International Business Machines Corporation | Firmware management of SR-IOV adapters |
US9740647B1 (en) | 2016-10-21 | 2017-08-22 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9875060B1 (en) | 2016-10-21 | 2018-01-23 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9892070B1 (en) | 2016-10-21 | 2018-02-13 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9916267B1 (en) | 2016-10-21 | 2018-03-13 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9830171B1 (en) | 2016-10-21 | 2017-11-28 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9785451B1 (en) | 2016-10-21 | 2017-10-10 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9760512B1 (en) | 2016-10-21 | 2017-09-12 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9720862B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US10209918B2 (en) | 2016-10-21 | 2019-02-19 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US10417150B2 (en) | 2016-10-21 | 2019-09-17 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9720863B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9715469B1 (en) | 2016-10-21 | 2017-07-25 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
CN111367831A (zh) * | 2020-03-26 | 2020-07-03 | 超验信息科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
US9430398B2 (en) | 2016-08-30 |
WO2014058820A1 (en) | 2014-04-17 |
CN104737138B (zh) | 2018-01-12 |
US20140101360A1 (en) | 2014-04-10 |
US20140101406A1 (en) | 2014-04-10 |
US9355040B2 (en) | 2016-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104737138A (zh) | 用半虚拟化的管理程序提供全虚拟化的附属部件 | |
US9665499B2 (en) | System supporting multiple partitions with differing translation formats | |
US10452559B2 (en) | Increasing granularity of dirty bit information in hardware assisted memory management systems | |
CN102906719B (zh) | 输入/输出地址到存储器地址的转换 | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
CN102473139B (zh) | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 | |
CN102906721B (zh) | 与访问地址空间并行地对地址空间调整大小 | |
US9329850B2 (en) | Relocation of instructions that use relative addressing | |
CN102906692B (zh) | 修改适配器功能参数的指令的方法和系统 | |
CN104516833A (zh) | 用于多个顺序地址转换的合并的tlb结构 | |
US9355033B2 (en) | Supporting multiple types of guests by a hypervisor | |
US20150278105A1 (en) | Transparent code patching including updating of address translation structures | |
US10255069B2 (en) | Cleared memory indicator | |
CN104516830A (zh) | 多阶段地址转换中的转换旁路 | |
CN111316248B (zh) | 促进对存储器局部域信息的访问 | |
CN102460400A (zh) | 基于管理程序的本地和远程虚拟内存页面管理 | |
CN102906716A (zh) | 依据适配器的多个地址空间 | |
CN109074316A (zh) | 页面错误解决方案 | |
WO2014058776A1 (en) | Selectable address translation mechanisms within a partition | |
US10740248B2 (en) | Methods and systems for predicting virtual address | |
US10691604B2 (en) | Minimizing cache latencies using set predictors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |