CN101957775A - 用于支持多处理器虚拟机环境中的地址翻译的方法和装置 - Google Patents
用于支持多处理器虚拟机环境中的地址翻译的方法和装置 Download PDFInfo
- Publication number
- CN101957775A CN101957775A CN2010102289018A CN201010228901A CN101957775A CN 101957775 A CN101957775 A CN 101957775A CN 2010102289018 A CN2010102289018 A CN 2010102289018A CN 201010228901 A CN201010228901 A CN 201010228901A CN 101957775 A CN101957775 A CN 101957775A
- Authority
- CN
- China
- Prior art keywords
- subclauses
- clauses
- processor
- shadow
- hierarchy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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/45566—Nested virtual machines
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (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
在一个实施例中,一种方法包括:接收由于关于翻译后援缓冲器的特权级事件而导致的从虚拟机转移的第一处理器的控制,并且确定客户机翻译数据结构中的哪个条目被所述虚拟机修改过。基于从由虚拟机监视器维护的影子翻译数据结构提取的元数据以及与影子翻译数据结构中的条目相关联的属性来进行确定。元数据包括活动条目列表,该活动条目列表识别映射在形成所述客户机翻译数据结构时由客户机操作***使用的页的映射。所述方法还包括:将影子翻译数据结构中的与所述客户机翻译数据结构中的修改过的条目相对应的条目与所述客户机翻译数据结构中的所述修改过的条目进行同步,并且至少部分地基于与影子翻译数据结构中的对应的条目相关联的属性,确定将哪些条目保持在活动条目列表中,其中,所述属性识别所述多个处理器中的哪个处理器拥有活动条目列表中的每一个条目。
Description
技术领域
本发明的实施例总体上涉及虚拟机,并且更具体地涉及支持在虚拟机环境中的地址翻译。
背景技术
传统的虚拟机监视器(VMM)通常运行在计算机上并且向其它软件呈现一个或多个虚拟机的抽象。每个虚拟机可以用作一自包含平台,运行它自己的“客户机操作***”(即,由VMM支撑的操作***(OS))和其它软件,它们统称为客户机软件。客户机软件期望像在专用计算机上而不是在虚拟机上一样操作。也就是说,客户机软件期望控制各种事件并且访问硬件资源,例如物理存储器和存储器映射输入/输出(I/O)设备。例如,客户机软件期望保持对地址翻译操作的控制,并且能够分配物理存储器,提供针对客户机应用的防护以及在客户机应用之间的保护,使用各种分页技术等。但是,在虚拟机环境中,VMM应当能够对计算机的资源具有最终控制权,以提供针对虚拟机的防护以及在虚拟机之间的保护。
附图说明
在附图的图示中,通过例子而非通过限制的方式来说明本发明,并且其中,相同的附图标记是指类似的元素,其中:
图1说明了虚拟机环境的一个实施例,本发明可以在其中操作;
图2说明了根据本发明的一个实施例的、虚拟TLB的操作。
图3A和3B说明了根据本发明的两个备选实施例的、用于创建和维护影子PT分级结构的元数据的过程;
图4是用于同步客户机翻译数据结构和影子翻译数据结构的过程的一个实施例的流程图;
图5是用于维护影子翻译数据结构的元数据的过程的一个实施例的流程图;
图6是用于方便地址空间的改变的过程的一个实施例的流程图;
图7是用于针对指定地址同步两个翻译数据结构的条目的过程的一个实施例的流程图;
图8是用于从由VMM维护的影子PT分级结构的工作集合中移除影子PT分级结构的过程的一个实施例的流程图;
图9是用于将条目添加到影子PT分级结构的PD的过程的一个实施例的流程图;
图10是用于从影子PT分级结构的PD移除条目的过程的一个实施例的流程图;
图11是用于将条目添加到影子PT分级结构的PT的过程的一个实施例的流程图;
图12是用于从影子PT分级结构的PT移除条目的过程的一个实施例的流程图;
图13是用于监视影子PT分级结构的PTE的过程的一个实施例的流程图;
图14是用于从影子PT分级结构的PTE移除监视的过程的一个实施例的流程图;
图15是用于在多处理器***中维护影子PT分级结构的过程的一个实施例的流程图;
图16是用于在多处理器***中将处理器的工作集合与处理器的当前客户机状态进行同步的过程的一个实施例的流程图。
具体实施方式
描述了用于在多处理器虚拟机环境中支持地址翻译的方法和装置。在以下描述中,为了解释的目的,阐述了许多具体细节以提供对本发明的透彻理解。但是,对本领域技术技术人员显而易见的是,可以在没有这些具体细节的情况下,实现本发明。
以下的详细描述的一些部分被呈现为对计算机***的寄存器或存储器内的数据比特的操作的算法和符号表示。这些算法描述和表示是由数据处理领域的技术人员用于最有效地将他们的工作的实质传达给本领域的其它技术人员的手段。这里的算法一般被认为是导致期望的结果的自身一致的操作顺序。所述操作是那些需要对物理量进行物理操纵的操作。通常,虽然不是必须的,这些物理量采用电子或磁信号的形式,其能够被存储、转移、组合、比较并且以别的方式***作。已经证明,将这些信号称为比特、值、元素、符号、字符、项、数字等有时是方便的,这主要是因为它们是常见的用法。
但是,应当记住,所有这些以及类似的术语应与合适的物理量相关联,并且仅仅是应用到这些量的方便的标记。除非明确地声明,否则根据以下讨论显而易见的是,应该意识到,贯穿本发明的使用例如“处理”或“计算”或“运算”或“确定”等术语的讨论可以指计算机***或类似的电子计算设备的动作和处理过程,其对表示为计算机***的寄存器和存储器内的物理(电子)量的数据进行操纵,并将所述数据转换成类似地表示为计算机***存储器或寄存器或其它这种信息存储、传输或显示设备内的物理量的其它数据。
在实施例的以下详细的描述中,参照了附图,其通过举例说明的方式显示了其中可以实现本发明的具体实施例。在附图中,贯穿多个视图,相同的数字描述了基本上类似的部件。足够详细地描述了这些实施例,以使得本领域的技术人员能够实现本发明。可以使用其它实施例,并且可以在不脱离本发明的范围的情况下进行各种结构、逻辑和电子的改变。此外,应当理解,本发明的各个实施例虽然不同,但是并不必然互斥。例如,在一个实施例中描述的特定特征、结构或特性可能被包括在其它实施例内。所以,以下详细的描述不应当被理解为限制性的,并且仅由所附权利要求以及这些权利要求涵盖的等价物的全部范围来定义本发明的范围。
虽然以下示例可以在执行单元和逻辑电路的上下文中,描述为虚拟机环境中的地址翻译提供支持,但是可以通过软件的方式来实现本发明的其它实施例。例如,在一些实施例中,本发明可以被提供为计算机程序产品或软件,其可以包括机器或计算机可读介质,该介质上存储有指令,所述指令可被用于对计算机(或其它电子设备)进行编程以执行根据本发明的过程。在其它实施例中,可以由包含用于执行所述过程的硬连线逻辑的特定硬件部件,或者由编程的计算机部件与定制的硬件部件的任何组合来执行本发明的处理过程。
因此,机器可读介质可以包括用于存储或发送具有可由机器(例如,计算机)读取的形式的信息的任何装置,但是并不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、通过互联网、电的、光的、声的或其它形式的传播信号(例如,载波、红外信号、数字信号等)的传输等。
此外,设计可以经历各种阶段,从创建到模拟到制造。表示设计的数据可以用多种方式来表示设计。首先,正如在模拟中所使用的,可以使用硬件描述语言或其它的功能描述语言来表示硬件。此外,在设计过程的一些阶段,可以产生具有逻辑和/或晶体管门的电路级模型。此外,在一些阶段,大多数设计达到在硬件模型中表示各种设备的物理布局的数据级别。在使用了传统的半导体制造技术的情况下,表示硬件模型的数据可以是指明在用于产生集成电路的掩膜的不同掩膜层上存在还是缺少各种特征的数据。在设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。调制的或者以其它方式生成的用于发送这种信息的光波或电波、存储器或诸如盘片这样的磁或光存储可以是机器可读介质。这些介质中的任何介质可以“携带”或“指示”设计或软件信息。当指示或携带代码或设计的电载波被发送时,就执行电信号的复制、缓冲或重传来说,产生新的版本。因此,通信提供商或网络提供商可以复制体现了本发明的技术的制品(载波)。
图1说明了其中本发明可以工作的虚拟机环境100的一个实施例。在该实施例中,裸平台硬件116包括计算平台,其可能能够例如执行标准的操作***(OS)或虚拟机监视器(VMM),例如VMM 112。
通常用软件实现的VMM 112可以模拟裸机器接口并且将其导出到更高层的软件。这种更高层的软件可以包括标准的或实时的OS,可以是具有有限的操作***功能的高度精简的操作***,可以不包括传统的OS功能等。或者例如,VMM 112可以运行在另一个VMM内或运行在另一个VMM上。例如可以用硬件、软件、固件或各种技术的组合来实现VMM。
平台硬件116可以是个人计算机(PC)、大型机、手持设备、便携式计算机、机顶盒或任何其它计算***。平台硬件116包括处理器118、处理器119和存储器120。
处理器118和119可以是能够执行软件的任何类型的处理器,例如微处理器、数字信号处理器、微控制器等。处理器118和119可以是相同类型的或两种不同类型的独立的处理器,或者每一个可以是多核处理器的独立的执行核心。处理器118和119可以包括用于执行本发明的方法实施例的微代码、可编程逻辑或硬编码逻辑。虽然图1仅示出了两个这种处理器118和119,但是在***中可以存在多于两个的处理器。
存储器120可以是硬盘、软盘、随机存取存储器(RAM)(例如,动态RAM(DRAM)或静态RAM(SRAM))、只读存储器(ROM)、闪速存储器、上述设备的任何组合、或可由处理器118和119读取的任何其它类型的机器介质。存储器120可以存储指令和/或数据,以执行本发明的方法实施例。
VMM 112向其它软件(即,“客户机”软件)提供一个或多个虚拟机(VM)的抽象,其可以向各个客户机提供相同的或不同的抽象。图1示出了两个VM,即102和114。在每个VM上运行的客户机软件可以包括客户机OS(例如,客户机OS 104或106)和各种客户机软件应用108和110。客户机OS 104和106中的每一个希望访问在其上运行了所述客户机OS 104或106的VM 102和114内的物理资源(例如,处理器寄存器、存储器和I/O设备)并且希望执行其它功能。例如,客户机OS 104或106希望根据在VM 102和114中呈现的处理器和平台的架构来访问所有寄存器、高速缓存、结构、I/O设备、存储器等。可以由客户机软件访问的资源可以被分类为“特权级”或“非特权级”。对于特权级资源,VMM 112帮助提供客户机软件所期望的功能,同时保留对这些特权级资源的最终控制。非特权级资源不需要由VMM 112控制,并且可以由客户机软件直接访问。
此外,每个客户机OS希望处理各种故障事件,例如异常(例如,页故障、一般保护错误等)、中断(例如,硬件中断、软件中断),以及平台事件(例如,初始化(INIT)和***管理中断(SMI))。这些故障事件中的一些是“特权级的”,因为他们必须由VMM 112处理以确保VM 102和114的正确操作,并且用于针对客户机软件的防护以及在客户机软件之间的保护。
当特权级故障事件发生时或者当客户机软件尝试访问特权级资源时,控制可以被转移给VMM 112。控制从客户机软件到VMM 112的转移在本文中被称为VM退出。在帮助进行了资源访问或适当地处理了事件之后,VMM 112可以将控制返回给客户机软件。控制从VMM 112到客户机软件的转移被称为VM进入。
在一个实施例中,处理器118和/或119根据在虚拟机控制结构(VMCS)125中存储的数据来控制VM 102和114的操作。VMCS 125是一个结构,该结构可以包含客户机软件的状态、VMM 112的状态、指示VMM 112希望如何控制客户机软件的操作的执行控制信息、控制在VMM 112和VM之间的转变的信息等。处理器118和/或119从VMCS 125读取信息,以确定VM的执行环境并且约束其行为。在一个实施例中,VMCS存储在存储器120中。在一些实施例中,多个VMCS结构被用于支持多个VM。
在地址翻译操作期间,VM 102或114希望分配物理存储器,提供针对客户机软件应用(例如,应用108或110)的防护以及在客户机软件应用之间的保护,使用各种分页技术等。在非虚拟机环境中,OS所期望的地址翻译机制可以基于由处理器控制的翻译后援缓冲器(TLB)和翻译数据结构,例如页表(PT)分级结构,其由OS控制并且用于当允许分页时,将虚拟存储器地址翻译为物理存储器地址。处理器118和119分别包括TLB 122和123,以存储虚拟到物理存储器地址翻译。
IntelPentium4处理器的架构支持多种分页模式。最常使用的分页模式使用两级分级分页结构(本文中称为两级分级结构分页模式)来支持32比特线性地址空间。本发明的实施例并不限于该分页模式,而是可以被本领域的技术人员使用以虚拟化其它分页模式(例如,物理地址扩展(PAE)模式,Intel扩展存储器64技术(EM64T)模式等)和实现(例如,散列的页表)。在一个基于TLB的实施例中,将虚拟存储器地址翻译为物理存储器地址开始于使用虚拟地址的高位20比特(针对4KB页帧(page frame))或高位10比特(针对4MB的页帧)来搜索TLB。如果发现了匹配(TLB命中),那么将包含在TLB中的物理页帧的高位比特与虚拟地址的低位比特相结合以形成物理地址。TLB还包含与映射相关联的访问和许可属性。如果没有发现匹配(TLB未命中),那么处理器查询PT分级结构以确定虚拟到物理翻译,然后其被缓存在TLB中。PT分级结构中的条目可以包括一些属性,它们由处理器针对某些访问自动地设置。
如果PT分级结构被修改,如果在TLB中存在对应的地址翻译的话,则TLB可能变得与PT分级结构不一致。OS会希望能够通过向处理器发出指令来消除这种不一致。例如,在IntelPentium4的指令集架构(ISA)(本文中称为IA-32ISA)中,处理器允许软件通过发出INVLPG指令来使得在TLB中缓存的翻译无效。此外,OS会希望请求处理器完全地改变地址空间,其应导致从TLB中移除所有翻译。例如,在IA-32 ISA中,OS可以使用MOV指令或任务切换以请求处理器加载CR3(其包含PT分级结构的基地址),由此从TLB中移除所有翻译。根据模式和实现,不同层级的页表分级结构可以具有不同的名称。在两级分级结构分页模式中,存在两级分页结构。CR3寄存器指向页目录页的基地址。在页目录中的条目或者可以指明到大尺寸页(例如,4MB的超页(superpage)、2MB的超页、1GB的超页等)的映射,或者可以指明到页表的索引。页表继而可以包含到小尺寸页的映射。
如上所述,在虚拟机环境中,VMM 112应当能够具有对包括TLB的物理资源的最终控制权。本发明的实施例通过使用模拟处理器的物理TLB的功能的虚拟TLB,解决了在VM 102和114的希望和VMM 112的角色之间的冲突。
虚拟TLB包括物理TLB和由VMM 112控制的一组影子(shadow)PT分级结构。这组影子PT分级结构根据当前可能由VM 102或114使用的或可能不由VM 102或114使用的客户机PT分级结构导出其格式和内容。如果VM 102或114修改了客户机PT分级结构的内容,则该内容变得与影子PT分级结构的内容不一致。使用与由处理器在管理其物理TLB中所使用的技术类似的技术来消除在客户机PT分级结构和影子PT分级结构之间的不一致。这些技术中的一些迫使VM 102或114发出指示尝试操纵TLB的事件(例如,INVLPG、页故障、和加载CR3)。这些事件是特权级的,所以导致VM退出到VMM 112。然后,VMM评估事件并且如果需要的话,将所有维护的影子PT分级结构与当前的客户机状态相同步。我们将所维护的影子PT分级结构的集合称为工作集合。因为多个进程可以使用同一客户机页表,所以同一影子PT可能是多个客户机PT分级结构的一部分。对应的影子PT继而是多个影子PT分级结构的成员。
注意,由VMM执行的同步可以更新当前不在使用中的影子PT分级结构的影子页表或页目录条目。同样,可能需要对不是使用中的客户机PT分级结构的一部分的客户机页进行同步。
在一个实施例中,VMM 112包括地址翻译模块126,其负责在虚拟TLB(VTLB)数据存储124中为VM 102和114中的每一个创建并维护影子PT分级结构的工作集合。为VM 102或114的对应的活动进程(即,在不久的将来可能由VM 102或114启动的进程)维护影子PT分级结构的工作集合。利用IA32ISA,唯一明确地定义的客户机分级结构是通过当前使用的分页结构来定义的分级结构。在实践中,对于客户机进程和他们的地址空间来说存在大量的时间局部性。VMM可以使用启发式方法或明确的信息来确定活动进程的集合。
当VM 102或114启用针对VM 102或114的活动进程中的一个进程的客户机PT分级结构时,地址翻译模块126识别工作集合中的对应的影子PT分级结构,并且请求处理器加载其基地址。当可用时,地址翻译模块126可以之后重新使用存储在影子PT分级结构中的先前计算的映射。
如果VM 102或114激活了新进程,则地址翻译模块126从对应的客户机PT分级结构中导出新的影子PT分级结构,并且将其添加到工作集合。或者,如果VM 102或114停止现存的进程,则地址翻译模块126从工作集合中移除与客户机PT分级结构相对应的信息。
在一个实施例中,地址翻译模块126负责从每个新的影子PT分级结构中提取元数据,将所述元数据存储在VTLB数据存储124中,并且当修改了影子PT分级结构时,更新所述元数据。在一个实施例中,元数据包括PT矢量(PTV)、PD矢量(PDV)、活动PTE列表和活动PDE列表。
PTV和PDV跟踪用作PT和PD的客户机帧。在一个实施例中,该信息被编码在比特矢量中。可以通过页帧号(PFN)来索引PTV,其中,每个条目比特在对应的PFN是PT的情况下被设置。可以通过页帧号(PFN)来索引PDV,其中,每个条目比特在对应的PFN是PD的情况下被设置。
活动PTE列表是影子PT分级结构中的、指向保存了PT和PD的帧的PT条目(PTE)的列表。活动PDE列表识别在影子PT分级结构中的、指向包含了在活动PTE列表中识别的PT条目的PT的PD条目(PDE)。
在一个实施例中,活动PDE和PTE列表包含描述了映射是否是针对PD或PT帧的另外的元数据。
本领域的技术人员将理解,本发明的实施例可以使用各种数据结构,这些数据结构与本文描述的结构相比,可以具有或多或少的空间或时间效率。本领域的技术人员将意识到用于支持另外的分页模式的跟踪结构的扩展。例如,EM64T分页模式将64比特虚拟地址通过四级分级的分页结构映射到物理地址。在虚拟或物理地址空间中支持的实际的比特数量可能依赖于实现,并且在特定实现中可以少于64比特。正如下文更详细所讨论的,EM64T实现可能需要添加页映射级别4(PML4)页矢量和页目录指针(PDP)页矢量,以跟踪在EM64T分页结构中使用的另外的页表。同样地,本领域的技术人员将意识到,活动PTE列表将被扩展,以包括映射在分页结构内使用的任何页的条目(例如,用于EM64T的PML4或PDP页)。
在一个实施例中,维护活动PTE/PDE列表元数据,以跟踪通过页表映射的PD和PT帧的数量。当每页的映射的数量从0添加时,映射PT的PDE必须被添加到活动PDE列表,并且当映射的数量减少到0时,必须从活动PDE列表中移除映射该PT的PDE。
在一个实施例中,地址翻译模块126负责在需要同步时,将当前影子PT分级结构与当前客户机PT分级结构进行同步。地址翻译模块126通过确定客户机PT分级结构中的哪些条目最近已被修改并且随后相应地更新影子PT分级结构中的对应的条目,来执行同步。地址翻译模块126基于从影子PT分级结构中提取的元数据和与影子PT分级结构的条目相关联的属性,来确定客户机PT分级结构中的哪些条目最近已被修改。在一个实施例中,属性包括:与影子PT分级结构中的PD条目相关联的访问属性,以及与影子PT分级结构中的PT条目相关联的更新属性。
图2说明了根据本发明的一个实施例的、虚拟TLB 204的操作。虚拟TLB 204包括由影子PT分级结构206和物理TLB 208表示的影子翻译数据结构。影子PT分级结构206从由客户机PT分级结构202表示的客户机翻译数据结构中导出其结构和内容。在一个实施例中,VMM为VM的活动进程维护影子PT分级结构的工作集合。
在一个实施例中,当VM请求处理器启用不同的客户机PT分级结构时(例如,通过发出IA-32ISA中的“MOV to CR3”或者任务切换),控制转到VMM,其指示处理器加载与所请求的客户机PT分级结构202相对应的影子PT分级结构206的基地址214。在一些实施例中,使用相关的元数据和属性来将该影子PT分级结构206与客户机PT分级结构202同步,下文将更详细地描述。
在一个实施例中,虚拟TLB维护影子PD和PT的条目中的访问和更新属性。这些属性还被称为访问(A)比特和脏(D)比特。在一个实施例中,当由客户机软件第一次访问一页帧时,处理器在影子PT分级结构206中的对应的PT条目或PD条目中设置访问(A)属性。如果客户机软件试图写一页帧,则处理器在对应的影子PT条目中设置脏(D)属性。
允许客户机软件自由地修改客户机PT分级结构202,包括改变虚拟到物理映射、许可等。因此,影子PT分级结构206可能不总是与客户机PT分级结构202一致。当由于在分级202和206之间的不一致而产生问题时,将虚拟TLB 204视为物理TLB的客户机OS尝试通过请求处理器执行由相关的ISA定义的操作,来改变虚拟TLB 204。例如,在IA-32ISA中,这种操作包括INVLPG指令、CR3加载、分页激活(CR0.PG的修改)、全局分页的修改(CR4.PGE比特的切换)等。尝试修改虚拟TLB 204的操作被VMM配置为特权级的(例如,使用在VMCS中存储的对应的执行控制),所以导致VM退出到VMM。然后,VMM确定VM退出的原因,并且如果需要的话修改影子PT分级结构206的内容。例如,如果VM退出是由于应当由客户机OS处理的页故障而发生的(例如,由不被客户机PT分级结构202允许的访问所引起的页故障),则页故障被注入客户机OS以进行处理。或者,如果VM退出是因为分级结构202和206的条目之间的不一致性所引起的页故障(或任何其它操作,例如INVLPG)而发生的,则VMM可能需要移除陈旧的条目,添加新的条目,或修改现有的条目,下文将更详细地讨论。由客户机PT分级结构引起的页故障在本文被称为“真实的”页故障,而在直接使用客户机页表的情况下不会发生的页故障在本文被称为“诱发的”页故障。
图3A说明了根据本发明的一个实施例的、在两级分级结构页模式中创建并维护影子PT分级结构的元数据的过程。
参照图3A,说明了由不同字母(字母A到W)识别的多个物理页帧。一些客户机页帧可以包含PD(例如,帧A)。其它客户机页帧可以包含PT(例如,帧A、B、C和L)。分级结构302是客户机PT分级结构。
图3A示出了基于客户机PT分级结构302创建的影子PT分级结构304。在客户机PT分级结构302中的每个PD或PT包括影子PT分级结构304中对应的PD或PT。注意,一般而言,不是对于客户机PT中的每个页都需要影子页。一些实施例可以根据使用统计(例如,仅为已被使用的客户机PT页生成影子页)或者根据资源约束(例如,基于可用的存储器,仅维护一组影子页)来选择限制影子页。针对从同一物理帧导出的PD和PT表维护不同的影子表。例如,针对从同一物理帧314导出的PD 306和PT 308维护不同的表330和332。在影子PT分级结构304中的PD和PT条目包含针对客户机帧314到324的变换的映射。
在客户机PT分级结构302中,帧316和318被用作PT 310和312,并且帧314被用作PD 306和PT 308。在影子PT分级结构304下显示的页帧314至316中,该使用被说明为“PT”和“PD/PT”。
影子PT分级结构304与活动PTE列表342和活动PDE列表344相关联。在一个实施例中,活动PTE列表342识别在影子PT分级结构304中的、映射来自客户机PT分级结构302的PT和PD页帧的PT条目。特别地,活动PTE列表342识别PT 332中的映射页帧314至318的条目。在一个实施例中,活动PDE列表344识别影子PT分级结构中的、指向具有在活动PTE列表342中识别的条目的PT的PD条目。特别地,活动PDE列表344包括PD 330中的指向PT 332的条目。活动PTE列表342和活动PDE列表344是影子PT分级结构304的元数据的组成部分。
影子PT分级结构304与PT比特矢量(PTV)362和PD比特矢量(PDV)364相关联。在一个实施例中,PTV 362跟踪被用作PT的客户机页帧。特别地,PTV 362包括在客户机PT分级结构302中用作PT的页帧314至318。在一个实施例中,PDV 364跟踪被用作PD的客户机页帧。特别地,PDV 364包括在客户机PT分级结构302中被用作PD的页帧314。在一个实施例中,PTV 362和PDV 364表示工作集合中的所有影子PT分级结构,并且跟踪在工作集合中影子页被用于的功能(例如,如果没有为客户机PT分配影子页,那么PTV将不反映客户机PT页,即使它出现在客户机分页结构中)。
在一个实施例中,如果客户机OS将新的PT添加到客户机PT分级结构302,则VMM可以检测到该添加(例如,在与TLB操纵有关的下一个或后续的VM退出时),并且将对应的PT添加到影子PT分级结构304。例如,如果从帧319导出的新的PT 352被添加到客户机PT分级结构302,其具有针对新的帧354的映射,那么VMM可以将具有变换后的映射的对应的PT 360添加到影子PT分级结构304,并且更新元数据以反映该变化。特别地,VMM将PT 332中的映射帧319的条目添加到活动PTE列表342,并且将PD 330中的指向PT 360的条目添加到活动PDE列表344。此外,VMM将帧319添加到PTV 362,其跟踪用作PT的客户机帧(即,这里的帧319)。
图3B说明了根据本发明的一个实施例的、在EM64T分页模式中创建并维护影子PT分级结构的元数据的过程。
参照图3B,分页结构的基础是PML4页(例如,帧A)。在PML4页中的每一个条目可以索引PDP页(例如,帧B和C)。在PDP页中的每一个条目可以索引页目录(PD)页(例如,帧D或E),页目录(PD)页中每一个条目继而可以索引页表(PT)页中的页(例如,帧F、G、H或I)。
每个PML4、PDP、PD或PT页可以是4KB的尺寸。为了支持大于32比特的物理地址空间,可以相对于32比特分页模式添加条目尺寸。具体地说,每个页可以有512个条目,需要在每一级使用9比特的虚拟地址以选择合适的条目。如前所述,该选择器尺寸可以导致2MB而不是4MB的大的页尺寸。
在一个实施例中,在EM64T分页模式中的元数据的创建包括生成多个矢量、活动条目列表,以及多个活动目录列表。矢量包括:识别用作PML4页的帧的PML4V矢量、识别用作PDP页的帧的PDPV矢量、识别用作PD页的帧的PDV矢量,以及识别用作PT页的帧的PTV矢量。活动条目列表是包括映射PML4、PDP、PD或PT页的所有映射的活动PTE列表。活动目录列表包括识别索引较低级的结构的更高级的映射结构的列表,通过所述较低级的结构可以访问与影子结构相对应的客户机页。特别地,活动目录列表由活动PDE列表、活动PDPE列表,以及活动PML4E列表组成,其中,所述活动PDE列表包括索引包含活动PTE列表条目的页的那些PDE,所述活动PDPE列表包括索引包含活动PDE列表条目的PD的活动PDPE条目,所述活动PML4E列表包括映射包含活动PDPE列表中的元素的PDP的条目。
在一个实施例中,影子页表的同步开始于检查与使用的影子PT分级结构相关联的活动PML4E列表中的每一个条目。如果条目已被访问,则检查与所访问的PML4条目相对应的活动PDPE列表中的每一个元素,然后如上所述继续处理。
在替代实施例中,没有针对分级结构的一个或多个较高的级别来维护和/或处理活动列表。例如,在最上层的分页结构中仅建立单个条目的***中,针对分级结构中的每个级使用活动列表将导致该单个条目总是被访问,从而使得没有减少对于分级结构中的较低层级所需的处理的数量。为了调和该使用模型,可以替代地通过处理在分级结构中的较低层级的活动列表来开始同步。例如,在一个实施例中,活动PDPE列表元素可以首先被处理,随后处理与所使用的影子PT分级结构相关联的活动PDE列表元素或活动PTE列表元素。在一个实施例中,可以预先确定在同步时处理的初始的层。在另一个实施例中,可以通过对客户机的页表使用进行动态建模(dynamic profiling)来确定要被处理的初始层。
各种其它分页模式可以被用在本发明的实施例中。例如,IA-32支持一种另外的分页模式,其中32比特虚拟地址被映射到更大的物理地址。在这种另外的操作模式中,页表基址寄存器被配置为指向包含4个元素的PDP页。在该另外的操作模式中的条目尺寸和行为类似于以上针对64比特虚拟地址模式所描述的。由于该另外的模式不使用PML4页,所以不需要PML4V和活动PML4E列表。
图4是用于同步客户机翻译数据结构和影子翻译数据结构的过程400的一个实施例的流程图。可以由处理逻辑来执行该过程,所述处理逻辑可以包括硬件(例如,专用逻辑、可编程逻辑、微代码等)、软件(例如,运行在通用计算机***或专用机器上的软件)、或它们的组合。在一个实施例中,由图1的地址翻译模块126来执行该过程。
参照图4,过程400开始于处理逻辑接收由于与TLB的操纵有关的事件而引起的从VM转移的控制(处理框402)。这种事件的例子可以包括:改变当前地址空间的请求(例如,CR3加载)、为TLB中的特定的虚拟地址调整不一致的翻译的请求(例如,INVLPG)、页故障等。
在处理框404,处理逻辑确定与TLB的操纵有关的事件是否应当由VM处理。如果是的话(例如,事件是由客户机翻译数据结构中的问题映射所引起的页故障),则控制返回到VM以处理所述事件(处理框406)。如果不是的话,则处理逻辑确定事件是否与特定的问题地址相关联(处理框408)。
如果事件不需要由VM处理,则它可能与特定的问题地址相关联。这种事件的例子可以包括:由将问题地址作为操作数的INVLPG指令所引起的事件、由诱发的页故障所引起的事件(例如,关于特定映射的两个翻译数据结构之间的不一致所引起的页故障,需要虚拟化客户机翻译数据结构中的A/D比特所引起的页故障等)等。如果事件与特定的问题地址相关联,则处理逻辑针对该特定地址在影子翻译数据结构中进行校正(例如,移除针对该特定地址的陈旧的映射,或添加针对该特定地址的新映射),以符合客户机翻译数据结构(处理框410)。下文结合图7将更详细地讨论针对特定地址同步两个翻译数据结构的条目的过程的一个实施例。
如果事件没有与任何特定地址相关联(例如,事件是由VM改变地址空间的请求引起的,其清洗IA32中的所有TLB条目),则处理逻辑确定客户机翻译数据结构中的哪些条目已被修改(处理框412)。使用从影子翻译数据结构中提取的元数据和与影子翻译数据结构中的条目相关联的属性来进行确定(处理框412)。元数据包括针对影子翻译数据结构的各个层级的矢量和活动列表。针对影子翻译数据结构的特定层级的矢量识别在客户机翻译数据结构的该层级中被用作页的帧。活动列表包括活动条目列表和一个或多个活动目录列表。活动条目列表包括映射在形成客户机翻译数据结构时由客户机使用的页的映射。活动目录列表识别索引较低级的结构的更高级的映射结构,通过所述较低级的结构可以访问与影子分页结构相对应的客户机页。如上所述,在两级分级结构分页模式中,在一个实施例中,元数据包括矢量PTV和PDV、活动条目列表(PTE列表)和活动目录列表(PDE列表)。在EM64T分页模式中,元数据在一个实施例中包括矢量PTV、PDV、PDPV和PML4V、活动条目列表(PTE列表)和活动目录列表(活动PDE列表、活动PDPE列表和活动PML4E列表)。
下文将结合图6更详细地讨论使用元数据来识别客户机翻译数据结构的最近修改的条目的过程的一个实施例。
在处理框414,处理逻辑将影子翻译数据结构中的对应的条目与客户机翻译数据结构中的修改过的条目进行同步。因此,处理逻辑仅需同步被修改的条目,而无需重新产生影子翻译数据结构的全部内容。
在一个实施例中,额外的存储被用于维护一些上一次被同步过的客户机PD和/或PT内容。这允许VMM在不计算或查找额外的再定位或许可信息的情况下确定在哪进行了修改。
注意,对客户机页表的某些修改不需要对影子页表进行修改。例如,如果客户机PT包含随后被修改的没有存在的映射,那么不需要修改对应的影子PT。
图5-14说明了根据本发明的不同实施例的、用于使用两级分级结构分页模式支持虚拟机环境中的地址翻译的各种过程。可以由处理逻辑来执行这些过程,所述处理逻辑可以包括硬件(例如,专用逻辑、可编程逻辑、微代码等)、软件(例如,在通用计算机***或专用机器上运行的软件)或它们的组合。在一个实施例中,由图1的地址翻译模块126来执行这些过程中的每一个。
图5是用于维护诸如影子PT分级结构这样的影子翻译数据结构的元数据的过程500的一个实施例的流程图。
参照图5,过程500开始于处理逻辑为来自客户机PT分级结构的每个PD或PT页创建影子页(处理框502)。
在处理框504,处理逻辑跟踪在客户机PT分级结构中用作PD或PT的页帧。在一个实施例中,如果对应的PFN是在客户机PT分级结构中的PD,则处理逻辑在PDV中设置条目。类似地,如果对应的PFN是客户机PT分级结构中的PT,则处理逻辑在PTV中设置条目。
在处理框506,处理逻辑跟踪到任何动态随机访问存储器(DRAM)后备页的映射(以识别可以潜在地是PD或PT的页)。在一个实施例中,处理逻辑使用反向页表(IPT)和反向页目录(IPD)来跟踪到基于DRAM的页的映射。由数据页帧的PFN来索引IPT,其中,每个条目包含映射数据页帧的PTE的地址的列表。由页表的PFN来索引IPD,其中,每个条目包含将PFN索引为页表的PDE的地址的列表。
在一个实施例中,在处理框508,处理逻辑识别在客户机PT分级结构中的4MB的页,并且为每个4MB的页在影子PT分级结构中创建页表,以避免大的页映射,并且由此减少未来的同步时间。否则,4MB的页的更新将引起在4MB内的每个PD和PT页的同步。在一个实施例中,反向扩展表(IET)用于跟踪在客户机PT分级结构中的哪个PDE指向4MB的页。由PFN和属性比特来索引IET,其中,每个条目列出了指向分解的4MB的页的PDE。
在本发明的实施例中,可以由影子PFN的地址来索引IPD,以最小化所需的地址翻译步骤。
在IA32中,存储器类型信息(例如,高速缓存能力信息)可以被存储在映射页的PDE/PTE内的PAT比特中。该类型信息不在作为页表指针的PDE中获取。因此,如果两个4MB页用不同的PAT属性来映射同一区域,则将需要不同的页表来传送正确的PAT属性。对于每组属性使用不同的扩展表解决了该问题。
在处理框510,处理逻辑识别影子PT分级结构中的、映射在客户机PT分级结构中用作PD或PT的页的PTE,并且创建活动PTE列表。
在处理框512,处理逻辑识别在影子PT分级结构中的、指向具有在活动PTE列表中识别的PTE的PT的PDE,并且创建活动PDE列表。
随后,在处理框514,如果客户机OS修改了客户机PT分级结构的结构(例如,添加或移除了PD或PT),则处理逻辑相应地改变上述活动PTE和PDE列表。
图6是用于帮助改变地址空间的过程600的一个实施例的流程图。注意,在IA32中,相同的CR3值还可以被重新加载,以使得对陈旧的TLB映射进行冲洗。对于CR3的改变或CR3的重新加载采用类似的处理步骤。
参照图6,过程600开始于处理逻辑确定由于VM的启用不同客户机PT分级结构的请求而引起VM退出的发生(例如,通过发出CR3加载请求)(处理框602)。
在响应中,处理逻辑扫描在元数据的活动PDE列表中识别的、与当前使用中的影子PT分级结构相对应的所有活动PDE,以发现这些PDE中的哪些已被访问(访问属性被设置为访问值)(处理框604),然后初始化被访问的PDE的访问属性(处理框606)。在IA32中,非叶子页表不支持脏比特。如果访问比特是干净的,则没有读取或写入在4MB区域内的页,所以不会已经修改了任何客户机页表或页目录。但是,访问比特不区分读取和写入,所以已被访问的4MB区域应当被进一步处理,尽管可能没做任何修改。在支持用于非叶子页表的脏比特的架构中,替代地检查脏比特,并且仅需要进一步处理已被写过的区域。
接下来,针对每个访问过的PDE,处理逻辑扫描元数据的活动PTE列表中的、对应于访问过的活动PDE的所有影子PTE,以发现这些PTE中的哪些包括用于更新的页的映射(更新属性被设置为更新值)(处理框608)。
此外,对于每个更新过的页,处理逻辑将客户机PT分级结构中的PD/PT条目与在影子PT分级结构中的对应条目相比较(处理框610),并且改变影子PT分级结构的对应的条目,以符合客户机PT分级结构的修改的条目(例如,通过从影子PT分级结构中移除在客户机PT分级结构中不存在的PTE/PDE,通过向影子PT分级结构添加最近添加到客户机PT分级结构的新的PTE/PDE等)(处理框612)。注意,添加PDE可能需要分配并初始化另外的影子PT。这继而会需要对由地址翻译模块126所维护的各种元数据结构进行更新。
在处理框614,处理逻辑初始化被设置为更新值的更新属性。更新过的映射识别由客户机OS修改的页。
在处理框616,处理逻辑基于修改后的客户机页来同步影子映射,并且如果由于上述修改而需要的话,更新元数据。
在处理逻辑618,处理逻辑确定由VMM维护的工作集合是否包括与由VM请求的新客户机PD对应的影子PD。如果是的话,处理逻辑请求处理器加载该影子PT分级结构的基地址(处理框620)。如果不是的话,处理逻辑分配与所请求的客户机PT分级结构相对应的新的影子PT分级结构(处理框622),将新的影子PT分级结构的PD添加到PDV(处理框624),将每个有效的PDE添加到新的影子PT分级结构的PD(处理框626),配置活动PDE和PTE列表以监视映射该PD用于PD覆盖的PTE(处理框628),然后请求处理器加载该影子PT分级结构的基地址(处理框620)。下文将结合图13更详细地讨论用于监视PTE的过程的一个实施例。
图7是用于针对特定地址来同步两个翻译数据结构的条目的过程700的一个实施例的流程图。例如,可以作为由VM发出的INVLPG指令的结果或者作为诱发的页故障的结果,来执行过程700。
参照图7,过程700开始于处理逻辑确定影子PT分级结构中的针对特定地址的映射是否是陈旧的(即,存在不对应于客户机页表的当前内容的有效映射)(处理框702)。如果不是的话,则处理逻辑进行到处理框712。如果是的话,处理逻辑确定该陈旧的条目是否映射PD或PT页(处理框704)。如果该陈旧的条目不映射PD或PT页,则处理逻辑移除该陈旧的条目(处理框710)并且进行到处理框712。
如果陈旧的条目映射到PD或PT页,则处理逻辑进一步确定所映射的页是否已被更新(处理框706)。如果不是的话,则处理逻辑进行到处理框710。如果是的话,则处理逻辑更新、同步或移除修改的PD或PT影子(处理框708)并且进行到处理框710。在一个实施例中,页被标记以用于将来同步。
在处理框712,处理逻辑确定客户机PT分级结构是否包含针对特定地址的新的映射。如果不是的话,则过程700结束。如果是的话,则处理逻辑添加新的映射作为对应的PTE或PDE,并且如果需要的话,则创建影子页并且根据所述添加更新元数据(处理框714)。
图8是用于从VMM所维护的影子PT分级结构的工作集合中移除影子PT分级结构的过程800的一个实施例的流程图。
可以在检测到由VM停止对应的进程时,从工作集合中移除影子PT分级结构。可以基于由客户机VM对于当前地址空间的行为所提供的线索,使用为相关OS定义的启发式方法或使用一组检查来检测所述停止。如果VM支持OS或驱动器通过其向VMM通知停止的接口,则可以避免启发式方法。也可能由于资源约束而移除一影子PT分级结构,例如,因为用于影子结构的存储器的数量超过了目标阈值。
参照图8,处理逻辑开始于从影子PT分级结构中的PD移除每个有效PDE(处理框802)。
在处理框804,处理逻辑清除在PDV中的对应的条目。
在处理框806,处理逻辑解除PD页的分配,并且从PD翻译表(PDTT)移除翻译。PDTT用于跟踪页的地址和类型(例如,PD或PT)。由客户机PFN索引PDTT,其中,每个条目包含物理PFN和元数据。
在处理框808,处理逻辑从映射PD的PTE移除监视。下文将结合图14更详细地讨论用于从PTE移除监视的过程的一个实施例。
图9是用于将条目添加到影子PT分级结构的PD的过程900的一个实施例的流程图。为了说明,我们将考虑映射页表的存在的条目。
参照图9,处理逻辑开始于向IPD添加用于PDE的条目(处理框902)。
在处理框904,处理逻辑确定由该PDE映射的PT是否被设置在PTV中。如果是的话,则在PTTT中查找合适的影子PT(处理框916),创建新的影子PDE(处理框914)并且过程900结束。如果不是的话,则处理逻辑在PTV中设置对应的矢量(处理框906),分配影子页并且初始化翻译(处理框908),增加新的影子页表(处理框910),更新活动PTE/PDE列表和元数据以反映由当前客户机PDE用作页表的客户机页将要被监视(处理框912),并且添加新PDE,如果影子页表包含任何活动PTE列表元素的话,将其添加到活动PDE列表(处理框914)。下文将结合图13更详细地讨论用于监视PTE的过程的一个实施例。
图10是用于从影子PT分级结构的PD移除条目的过程1000的一个实施例的流程图。
参照图10,处理逻辑开始于从IPD PDE列表移除该PDE的条目(处理框1002)。如果PDE在活动PDE列表中,则活动PDE列表必须被更新。
在处理框1004,处理逻辑确定PDE是否是映射对应的PT的最后一个条目。如果不是的话,则过程1000结束。如果是的话,则处理逻辑清除在PTV中的该PT的条目(处理框1006),移除每个有效PTE(处理框1008),更新映射该PT用于PT覆盖的活动PTE/PDE列表(处理框1010),并且移除影子页翻译,并且释放用于存储PT影子页的存储器(处理框1010)。
图11是用于将条目添加到影子PT分级结构的PT的过程1100的一个实施例的流程图。
参照图11,处理逻辑开始于将针对该PTE的条目添加到IPT(处理框1102)。
在处理框1106,处理逻辑创建影子映射并且进行到处理框1108。
在处理框1108,处理逻辑确定在PDV或PTV中的对应的条目是否被设置。如果不是的话,则过程1100结束。如果是的话,则处理逻辑将该条目添加到活动PTE列表并且更新指示其是否映射PD和/或PT页的相关联的元数据(处理框1110)。如果刚创建的活动PTE条目是该页表的第一个条目,则必须查询IPD并且映射该页表页的每个PDE被添加到活动PDE列表。
图12是用于从影子PT分级结构的PT移除条目的过程1200的一个实施例的流程图。
参照图12,处理逻辑开始于确定该PTE是否映射在PDV或PTV中设置的页(处理框1202)。如果不是的话,则处理逻辑进行到处理框1206。如果是的话,处理逻辑从活动PTE列表移除PTE。如果这是在PT中的最后的活动PTE列表元素,则索引该PT的PDE被从活动PDE列表移除(处理框1204),并且进行到处理框1206。
在处理框1206,处理逻辑从IPT移除对应的条目。
图13是用于监视影子PT分级结构的PTE的过程1300的一个实施例的流程图。在图13中显示的步骤表示当监视器发现已被映射为数据页的页正被用作页目录或页表页时可能需要的处理。所以,该过程将由针对由PTE映射的页的状态改变来触发。
参照图13,处理逻辑开始于确定所述PTE是否在活动PTE列表中被识别(处理框1302)。如果是的话,则处理逻辑添加先前遗漏的覆盖(处理框1304)。通过被映射的页的状态改变来触发该流程。因为该PTE已经在活动PTE列表中,所以必然是以下情况:该PTE先前被用作PT或PD,并且现在也在另一个功能中使用。这种信息可以明确地与条目一起存储或者存储在相关的元数据中。如果PTE不在活动PTE列表中,则处理逻辑将PTE添加到活动PTE列表并且相应地更新元数据(处理框1306)。
接下来,在处理框1308,处理逻辑确定PTE是否是该PT的第一个活动PTE列表条目。如果不是的话,则过程1300结束。如果是的话,则处理逻辑向活动PDE列表添加映射该PT的条目(通过IPD所发现的)(处理框1310)。
图14是用于减少由影子PT分级结构的PTE提供的监视覆盖的过程1400的一个实施例的流程图。当从工作集合移除进程时,或者当用于索引页表的最后一个PDE被移除时,导致先前监视的页目录或页表页的状态的改变,这时可以调用该过程。
参考图14,处理逻辑开始于确定该PTE是否监视既是页表也是页目录页的页(处理框1402)。如果是的话,则处理逻辑减少覆盖水平,指示PTE现在监视一或者作为PT或者作为PD,但是不同时作为以上两者的页(处理框1404)。如果不是的话,则处理逻辑从活动PTE列表中移除PTE(处理框1406)。注意,如果PTE是针对一被跟踪其在单个功能中的使用的页的元素,则现在的情况必然是:所述页不再需要监视。
接下来,如果在PT中的最后一个活动PTE列表元素被移除(处理框1408),则处理逻辑从活动PDE列表移除映射该页表的对应的条目(通过IPD发现的)(处理框1410)。
如上所述,裸平台硬件116包括多个处理器,包括处理器118和119。图15是用于在多处理器***中维护影子PT分级结构的过程1500的一个实施例的流程图。替代中断***中的所有处理器,可以使用过程1500的实施例,以在多个处理器中的一个处理器上将影子PT分级结构与客户机PT分级结构进行同步。
在处理框1510,创建用于一个处理器(例如,处理器118)的影子PT分级结构的工作集合。针对处理器118的影子PT分级结构使用TLB 122来存储虚拟到物理地址翻译。在处理框1512,创建用于另一个处理器(例如,处理器119)的影子PT分级结构的工作集合。针对处理器119的影子PT分级结构使用TLB 123来存储虚拟到物理地址翻译。针对处理器118的工作集合可以不同于针对处理器119的工作集合,这是因为不同的VM可以运行在不同的处理器上,或者由于任何其它原因。但是,任何页帧、PT和PF可以被包括在针对多于一个处理器的工作集合中。所以,本发明的这个实施例使得在不中断另一个处理器的情况下,将影子PT分级结构与针对在一个处理器上运行的VM的客户机PT分级结构进行同步。在本发明的范围内,还可以创建用于任意数量的额外处理器的工作集合。
在该实施例中,在影子PT分级结构中维护的属性可以包括针对每个PT和PD条目的额外的字段或其它存储单元(“拥有者字段”)。拥有者字段可以用于存储值,以指示哪个处理器是每个条目的拥有者。
在处理框1514中,如上所述,例如通过如下操作来维护针对处理器118的工作集合:从每个新的影子PT分级结构中提取元数据,将所述元数据存储在VTLB数据存储124中,并且当影子PT分级结构被修改时更新元数据。元数据可以包括PT矢量(PTV)、PD矢量(PDV)、活动PTE列表、活动PDE列表,以及所希望的任何其它信息。在处理框1516中,如上所述,例如通过如下操作来维护针对处理器119的工作集合:从每个新影子PT分级结构提取元数据,将该元数据存储在VTLB数据存储124中,并且当影子PT分级结构被修改时更新元数据。元数据可以包括PT矢量(PTV)、PD矢量(PDV)、活动PTE列表、活动PDE列表,以及所希望的任何其它信息。虽然VTLB数据存储124在图1中显示为单个块,但是在本发明的范围内,用于任何数量的处理器的工作集合的元数据可以被存储在任意数量的不同的数据结构和/或存储器的区域中。例如,针对处理器118的工作集合的元数据和针对处理器119的工作集合的元数据可以被存储在两个不同的数据结构中。在本发明的范围内,还可以维护针对任意数量的额外处理器的工作集合。
在处理框1520,运行在处理器118上的客户机软件试图对其客户机PT分级结构中的一条目进行写入,这引起页故障。响应于该页故障,在处理框1522,在处理器118上发生VM退出,以将处理器118的控制从客户机软件转移到VMM 112。
在处理框1524,运行在处理器118上的VMM 112使得平台硬件116中的处理器119和任何其它处理器中断。在处理框1526,运行在处理器118上的VMM 112获得存储器锁以防止运行在任何其它处理器上的软件对VTLB数据存储124进行写入。
在处理框1530,VMM 112在针对处理器118的活动列表中创建与来自处理框1520的客户机PT分级结构中的条目相对应的条目,并且在处理框1532设置拥有者字段以指示处理器118是该条目的拥有者。在处理框1534,VMM 112在针对处理器119的活动列表中创建与来自处理框1520的客户机PT分级结构中的条目相对应的条目,并且在处理框1536设置拥有者字段以指示处理器118是该条目的拥有者。还可以创建在任意数量的额外的处理器的活动列表中的对应的条目,每个条目的拥有者字段被设置以指示处理器118是条目的拥有者。在处理框1538,VMM 112释放在处理框1526中获得的存储器锁。
在处理框1540,VMM 112为与来自处理框1520的客户机PT分级结构中的条目相对应的处理器118的影子条目设置脏比特,以指示客户机软件已经尝试对其PT分级结构中的那个条目进行写入。在处理框1542,发生VM进入,以将处理器118的控制从VMM 112转移给客户机软件。在处理框1544,客户机软件完成对其PT分级结构中的条目的写入。
在处理框1550,发生一事件,该事件是将针对处理器119的工作集合与处理器119上的当前客户机状态进行同步的触发事件。在处理框1552,响应于触发事件,发生VM退出,将处理器119的控制转移给VMM 112。
在处理框1554,例如根据在图16中说明的实施例,发生针对处理器119的工作集合与在处理器119上的当前客户机状态的同步。注意,本发明的实施例提供了在不中断处理器118或任何其它处理器的情况下,发生该同步。在同步之后,在处理框1556,发生VM进入以将处理器119的控制从VMM 112转移给客户机软件。在处理框1556中控制所转移到的客户机软件可以是任何客户机软件,不必是在处理框1520中运行在处理器118上的客户机软件。
在处理框1560,在处理框1518中运行在处理器118上的同一客户机软件,与在处理框1518中一样,对其客户机PT分级结构中的同一条目进行写入。注意,如果在处理框1540之后出现处理框1560,那么作为处理框1560的结果,不发生页故障,这是因为针对处理器118的对应影子条目的脏比特在处理框1540中被设置。
在处理框1570中,发生一事件,该事件是将针对处理器119的工作集合与处理器119上的当前客户机状态进行同步的触发事件。在处理框1572,响应于该触发事件,发生VM退出,将处理器119的控制转移给VMM 112。
在处理框1574,例如根据在图16中说明的实施例,发生针对处理器119的工作集合与在处理器119上的当前客户机状态的同步。注意,本发明的实施例使得在不中断处理器118或任何其它处理器的情况下,发生该同步。在同步之后,在处理框1576,发生VM进入以将处理器119的控制从VMM 112转移给客户机软件。在处理框1576中控制所转移到的客户机软件可以是任何客户机软件,不必是在处理框1528中运行在处理器118上的客户机软件,或者在处理框1556中处理器119的控制所转移到的客户机软件。
注意,尽管在另一个处理器上对脏条目进行写入(例如,在处理器118上的处理框1560)之前,可以在一处理器上发生同步(例如,在处理框1554中的处理器119的同步),第一处理器的稍后的同步(例如,在处理框1574中的处理器119的同步)也不会遗漏对该脏条目的写入,这是因为如果其它处理器的对应的影子条目是脏的,则第一同步不会移除由另一个处理器拥有的影子条目。
在处理框1580中,发生一事件,该事件是将针对处理器118的工作集合与处理器118上的当前客户机状态进行同步的触发事件。在处理框1582,响应于该触发事件,发生VM退出,将处理器118的控制转移给VMM 112。
在处理框1584,例如根据在图16中说明的实施例,发生针对处理器118的工作集合与在处理器118上的当前客户机状态的同步。注意,本发明的实施例使得在不中断处理器119或任何其它处理器的情况下,发生该同步。在同步之后,在处理框1586,发生VM进入以将处理器118的控制从VMM 112转移给客户机软件。在处理框1586中控制所转移到的客户机软件可以是任何客户机软件,不必是在处理框1520中运行在处理器118上的客户机软件,或者在处理框1556或处理框1576中处理器119的控制所转移到的客户机软件。
注意,如果在同步处理器119(例如,处理框1554)之后,发生在处理框1584中的处理器118的同步期间的脏比特的清除,则处理器119在其活动列表中保持所述条目,这是因为它对应于由另一个处理器拥有的脏条目;但是如果在同步处理器119(例如,处理框1574)之前,发生在处理框1584中的处理器118的同步期间的脏比特的清除,则处理器119可以从其活动列表中移除所述条目,这是因为由另一个处理器拥有的对应的条目不是脏的。
图16是用于将处理器的工作集合与多处理器***中的所述处理器的当前客户机状态进行同步的过程1600的一个实施例的流程图。
在处理框1610,针对处理器(“第一”处理器)的工作集合与第一处理器上的当前客户机状态的同步开始。注意,本发明的实施例使得在不中断平台中的任何其它处理器的情况下,发生该同步。
在处理框1620,检查所述第一处理器的影子PT分级结构中的、对应于来自处理框1518的条目的条目。如果在该影子条目中的拥有者字段指示所述第一处理器是所述条目的拥有者,则在处理框1630,可以从第一处理器的活动列表中移除该影子条目,并且在处理框1632,可以清除脏比特。但是,如果该影子条目中的拥有者字段指示另一个处理器是所述条目的拥有者,则在处理框1640,检查针对其它处理器的活动列表,以确定对应的脏条目是否存在于针对该处理器的活动列表中。
在处理框1640,如果对应的脏条目不存在于针对其它处理器的活动列表中,则在处理框1642,可以从针对所述第一处理器的活动列表中移除所述影子条目。但是,在处理框1640,如果对应的脏条目存在于针对其它处理器的活动列表中,则在处理框1644,将所述影子条目保持在针对所述第一处理器的活动列表中。
在处理框1650,第一处理器的工作集合与第一处理器上的当前客户机状态的同步继续到结束。
在本发明的范围内,可以按照不同的顺序,在省略所说明的框的情况下,在添加额外的框的情况下,或者在使用重排序的、省略的或额外的框的组合的情况下,来执行任何说明的方法实施例。例如,处理器的工作集合与在第一处理器上的当前客户机状态的同步可以包括比在图16中显示的更多的内容。
因此,已经描述了用于在多处理器虚拟机环境中支持地址翻译的方法和装置。应当理解,上述描述是说明性的而非限制性的。对于本领域的技术人员来说,在阅读并理解上述描述后,许多其它实施例将是显而易见的。所以,本发明的范围应当参照所附权利要求以及这些权利要求所涵盖的等价物的全部范围来确定。
Claims (20)
1.一种方法,包括:
接收由于有关翻译后援缓冲器的特权级事件而导致的从虚拟机转移的第一处理器的控制,其中,所述第一处理器是多个处理器中的一个;
基于从由虚拟机监视器维护的影子翻译数据结构提取的元数据以及与所述影子翻译数据结构中的条目相关联的属性,来确定客户机翻译数据结构中的哪些条目被所述虚拟机修改过,所述元数据包括活动条目列表,该活动条目列表识别映射在形成所述客户机翻译数据结构时由客户机操作***使用的页的映射;
将所述影子翻译数据结构中的与所述客户机翻译数据结构中的所述修改过的条目对应的条目,与所述客户机翻译数据结构中的所述修改过的条目进行同步;以及
至少部分地基于与所述影子翻译数据结构中的对应的条目相关联的属性,来确定将哪些条目保持在所述活动条目列表中,其中,所述属性识别所述多个处理器中的哪个处理器拥有所述活动条目列表中的每一个条目。
2.根据权利要求1所述的方法,还包括:
如果与所述影子翻译数据结构中的对应条目相关联的属性将所述多个处理器中的第二处理器识别为所述活动条目列表中的条目的拥有者,则在所述活动条目列表中保持所述条目。
3.根据权利要求1所述的方法,还包括:
如果与所述影子翻译数据结构中的对应条目相关联的属性将所述第一处理器识别为所述活动条目列表中的条目的拥有者,则从所述活动条目列表中移除所述条目。
4.根据权利要求1所述的方法,还包括:
确定所述多个处理器中的第二处理器是所述第一处理器的活动条目列表中的条目的拥有者;以及
在所述第二处理器的活动条目列表中查找对应的条目。
5.根据权利要求4所述的方法,还包括:
如果所述第二处理器的活动条目列表包括所述对应的条目,则在所述第一处理器的所述活动条目列表中保持所述条目。
6.根据权利要求4所述的方法,还包括:
如果在所述第二处理器的所述活动条目列表中没有发现对应的条目,则从所述第一处理器的所述活动条目列表中移除所述条目。
7.根据权利要求4所述的方法,还包括:
如果所述第二处理器的所述活动条目列表包括所述对应的条目,并且与所述对应的条目相关联的属性指示所述对应的条目是脏的,则在所述第一处理器的所述活动条目列表中保持所述条目。
8.根据权利要求4所述的方法,还包括:
如果所述第二处理器的所述活动条目列表包括所述对应的条目,并且与所述对应的条目相关联的属性指示所述对应的条目不是脏的,则从所述第一处理器的所述活动条目列表移除所述条目。
9.根据权利要求1所述的方法,其中,在不中断所述多个处理器中的任何其它处理器的情况下,在所述多个处理器中的所述第一处理器上执行所述同步。
10.一种方法,包括:
基于第一客户机页表(PT)分级结构来创建第一影子页表(PT)分级结构,其中,所述第一客户机PT分级结构由第一客户机操作***用于第一处理器上的地址翻译操作,
从所述第一影子PT分级结构导出第一元数据,以便随后确定所述第一客户机PT分级结构中的哪些在所述第一影子PT分级结构中表示的条目被修改过,所述第一元数据包括第一活动条目列表,该第一活动条目列表识别映射在形成所述第一客户机PT分级结构时由所述第一客户机操作***使用的页的映射;
基于第二客户机PT分级结构来创建第二影子PT分级结构,其中,所述第二客户机PT分级结构由第二客户机操作***用于第二处理器上的地址翻译操作,
从所述第二影子PT分级结构导出第二元数据,以便随后确定所述第二客户机PT分级结构中的哪些在所述第二影子PT分级结构中表示的条目被修改过,所述第二元数据包括第二活动条目列表,该第二活动条目列表识别映射在形成所述第二客户机PT分级结构时由所述第二客户机操作***使用的页的映射;以及
维护与所述第一活动条目列表和所述第二活动条目中的每一个条目相关联的属性,以指示所述第一处理器和所述第二处理器中的哪个处理器是所述条目的拥有者。
11.根据权利要求10所述的方法,还包括:
所述第一客户机操作***尝试修改所述第一客户机PT分级结构中的条目。
12.根据权利要求11所述的方法,还包括:
响应于所述第一客户机操作***尝试修改所述第一客户机PT分级结构中的条目,将一条目添加到所述第一活动条目列表。
13.根据权利要求12所述的方法,还包括:
设置与添加到所述第一活动条目列表的所述条目相关联的属性,以指示所述第一处理器拥有所述添加的条目。
14.根据权利要求13所述的方法,还包括:
设置与添加到所述第一活动条目列表的所述条目相关联的属性,以指示所述第一客户机PT分级结构中的对应的条目是脏的。
15.根据权利要求14所述的方法,还包括:
响应于所述第一客户机操作***尝试修改所述第一客户机PT分级结构中的条目,将一条目添加到所述第二活动条目列表。
16.根据权利要求15所述的方法,还包括:
设置与添加到所述第二活动条目列表的所述条目相关联的属性,以指示所述第一处理器拥有所述添加的条目。
17.一种装置包括:
第一处理器,包括:
第一虚拟化逻辑,用于支持在所述第一处理器上的第一虚拟机的操作,
第一存储单元,用于存储对第一影子地址翻译数据结构的第一索引,
其中,所述第一处理器用于维护第一活动条目列表,以用于将所述第一影子地址翻译数据结构与由所述第一虚拟机使用的第一客户机地址翻译数据结构进行同步;
第二处理器,包括:
第二虚拟化逻辑,用于支持在所述第二处理器上的第二虚拟机的操作,
第二存储单元,用于存储对第二影子地址翻译数据结构的第二索引,
其中,所述第二处理器用于维护第二活动条目列表,以用于将所述第二影子地址翻译数据结构与由所述第二虚拟机使用的第二客户机地址翻译数据结构进行同步;
其中,所述第一活动条目列表和所述第二活动条目列表中的每一个条目包括关于所述第一处理器和所述第二处理器中的哪个处理器是所述条目的拥有者的指示。
18.根据权利要求17所述的装置,其中,所述第一处理器用于在不中断所述第二处理器的情况下,将所述第一影子翻译数据结构与所述第一客户机地址翻译数据结构进行同步。
19.根据权利要求18所述的装置,其中,所述第一处理器用于通过至少部分地基于关于所述第一和所述第二处理器中的哪个处理器是每一个条目的拥有者的指示,来确定将哪些条目保持在所述第一活动条目列表中,从而在不中断所述第二处理器的情况下,将所述第一影子翻译数据结构与所述第一客户机地址翻译数据结构进行同步。
20.根据权利要求19所述的装置,其中,所述第一处理器用于通过在所述第二处理器是一条目的拥有者的情况下,在所述第一活动条目列表中保持所述条目,从而在不中断所述第二处理器的情况下,将所述第一影子翻译数据结构与所述第一客户机地址翻译数据结构进行同步。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/460,105 US20110016290A1 (en) | 2009-07-14 | 2009-07-14 | Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment |
US12/460,105 | 2009-07-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101957775A true CN101957775A (zh) | 2011-01-26 |
CN101957775B CN101957775B (zh) | 2016-12-14 |
Family
ID=
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081346A (zh) * | 2012-02-07 | 2014-10-01 | 英特尔公司 | 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备 |
CN105190552A (zh) * | 2013-03-14 | 2015-12-23 | 高通股份有限公司 | 执行多个管理程序的***和方法 |
US10621106B1 (en) | 2018-12-05 | 2020-04-14 | International Business Machines Corporation | Methods and systems for incorporating non-tree based address translation into a hierarchical translation lookaside buffer (TLB) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259732A1 (en) * | 2005-05-12 | 2006-11-16 | Microsoft Corporation | Enhanced shadow page table algorithms |
US7222221B1 (en) * | 2004-02-06 | 2007-05-22 | Vmware, Inc. | Maintaining coherency of derived data in a computer system |
CN101107593A (zh) * | 2005-01-28 | 2008-01-16 | 英特尔公司 | 支持虚拟机环境中的地址转换的方法及装置 |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7222221B1 (en) * | 2004-02-06 | 2007-05-22 | Vmware, Inc. | Maintaining coherency of derived data in a computer system |
CN101107593A (zh) * | 2005-01-28 | 2008-01-16 | 英特尔公司 | 支持虚拟机环境中的地址转换的方法及装置 |
US20060259732A1 (en) * | 2005-05-12 | 2006-11-16 | Microsoft Corporation | Enhanced shadow page table algorithms |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081346A (zh) * | 2012-02-07 | 2014-10-01 | 英特尔公司 | 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备 |
CN104081346B (zh) * | 2012-02-07 | 2018-02-27 | 英特尔公司 | 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备 |
CN105190552A (zh) * | 2013-03-14 | 2015-12-23 | 高通股份有限公司 | 执行多个管理程序的***和方法 |
CN105190552B (zh) * | 2013-03-14 | 2018-10-23 | 高通股份有限公司 | 执行多个管理程序的***和方法 |
US10621106B1 (en) | 2018-12-05 | 2020-04-14 | International Business Machines Corporation | Methods and systems for incorporating non-tree based address translation into a hierarchical translation lookaside buffer (TLB) |
US11221963B2 (en) | 2018-12-05 | 2022-01-11 | International Business Machines Corporation | Methods and systems for incorporating non-tree based address translation into a hierarchical translation lookaside buffer (TLB) |
Also Published As
Publication number | Publication date |
---|---|
EP2278463A1 (en) | 2011-01-26 |
US20110016290A1 (en) | 2011-01-20 |
JP2011023000A (ja) | 2011-02-03 |
JP5214670B2 (ja) | 2013-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101107593B (zh) | 支持虚拟机环境中的地址转换的方法及装置 | |
CN104081346B (zh) | 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备 | |
JP5214670B2 (ja) | マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置 | |
US6651132B1 (en) | System and method for emulating the operation of a translation look-aside buffer | |
US9928180B2 (en) | Synchronizing a translation lookaside buffer with page tables | |
CN101814056B (zh) | 将翻译后援缓冲器同步到扩充的分页表 | |
CN100501680C (zh) | 虚拟化虚拟机***中的物理存储器 | |
US8095771B2 (en) | Method and system for caching address translations from multiple address spaces in virtual machines | |
CN101681269B (zh) | 多虚拟化技术的自适应动态选择与应用 | |
CN102693188B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
CN104516833A (zh) | 用于多个顺序地址转换的合并的tlb结构 | |
Gandhi | Efficient memory virtualization | |
EP0220451B1 (en) | A cache coherence mechanism based on locking | |
CN101957775B (zh) | 用于支持多处理器虚拟机环境中的地址翻译的方法和装置 | |
Obando | Near-Memory Address Translation | |
Picorel Obando | Near-Memory Address Translation | |
Kwon | Designing Systems for Emerging Memory Technologies |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161214 Termination date: 20200714 |
|
CF01 | Termination of patent right due to non-payment of annual fee |