用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备的利记博彩app
【专利摘要】在一个实施例中,一种方法包含:创建用于多个处理器的第一处理器的阴影页面表层级的第一工作组;创建用于多个处理器的第二处理器的阴影页面表层级的第二工作组;保持修改的客户页面表的记录;以及将每个修改的客户页面表与第一工作组中的对应阴影页面表同步。对于修改的客户页面表记录中的每个修改的客户页面表,条目包含多个处理器中的哪些处理器具有含有到修改的客户页面表的可写参考的硬件转换后备缓冲器的指示。
【专利说明】用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备
【技术领域】
[0001]本发明的实施例一般涉及虚拟机,并且更确切地说,涉及支持虚拟机环境中的地址转换。
【背景技术】
[0002]常规虚拟机监视器(VMM)通常运行在计算机上,并向其它软件呈现一个或多个虚拟机的抽象。每个虚拟机可充当自含有平台,运行它自己的“客户操作系统”(即,由VMM托管的操作系统(OS))以及其它软件,统称为客户软件。客户软件期望操作为好像它运行在专用计算机上而不是虚拟机上。也就是说,客户软件期望控制各种事件,并存取硬件资源(诸如物理存储器和存储器映射的输入/输出(I/O)装置)。例如,客户软件期望维持对地址转换操作的控制权,并具有分配物理存储器、提供来自客户应用以及客户应用之间的保护、使用各种分页技术等能力。然而,在虚拟机环境中,VMM应该能够具有对计算机的资源的最终控制权,以提供来自虚拟机以及虚拟机之间的保护。
【专利附图】
【附图说明】
[0003]本发明在附图的视图中通过示例而非通过限制进行了图示,并且其中相似的附图标记指的是类似元素,并且附图中:
图1图示了本发明可操作的虚拟机环境的一个实施例; 图2图示了根据本发明一个实施例的虚拟TLB的操作;
图3A和3B图示了根据本发明的两个备选实施例创建和维持阴影PT层级的元数据的过程;
图4是用于同步客户转换数据结构与阴影转换数据结构的过程的一个实施例的流程图;
图5是用于维持阴影转换数据结构的元数据的过程的一个实施例的流程图;
图6是用于便于地址空间改变的过程的一个实施例的流程图;
图7是用于同步规定地址的两个转换数据结构的条目的过程的一个实施例的流程图;图8是用于从由VMM维持的阴影PT层级的工作组中移除阴影PT层级的过程的一个实施例的流程图;
图9是用于向阴影PT层级的ro添加条目的过程的一个实施例的流程图;
图?ο是用于从阴影PT层级的ro移除条目的过程的一个实施例的流程图;
图11是用于向阴影PT层级的PT添加条目的过程的一个实施例的流程图;
图12是用于从阴影PT层级的PT移除条目的过程的一个实施例的流程图;
图13是用于监视阴影PT层级的PTE的过程的一个实施例的流程图;
图14是用于从阴影PT层级的PTE移除监视的过程的一个实施例的流程图;以及图15是用于维持多处理器系统中阴影PT层级的过程的一个实施例的流程图; 图16是用于同步修改的客户页面表记录中的客户页面表与多处理器系统中的对应阴影页面表的过程的一个实施例的流程图。
【具体实施方式】
[0004]描述了一种用于支持多处理器虚拟机环境中地址转换的方法和设备。在如下描述中,为了说明目的,阐述了众多特定细节以便提供本发明的透彻理解。然而,本领域技术人员要明白,在没有这些特定细节的情况下也可实行本发明。
[0005]如下详细描述的某些部分在对计算机系统的寄存器或存储器内的数据位的操作的算法和符号表示方面呈现了。这些算法描述和表示是数据处理领域的技术人员最有效地将它们工作的实质传达给本领域技术人员所使用的手段。算法在此并且一般地被视为得到预期结果的操作的自身一致序列。这些操作是需要物理量的物理操控的那些操作。通常,不过不是必需的,这些量采取能够被存储、转移、组合、比较以及以其它方式操控的电信号或磁信号的形式。已经证明方便的是,有时主要是出于常见用法的原因,把这些信号称为位、值、元素、符号、字符、项、数字等。
[0006]然而,应该牢记的是,所有这些以及类似的术语都与适当的物理量关联,并且仅仅是应用于这些量的方便标签。除非特别声明,否则根据如下讨论显然的是,要认识到,在说明书通篇利用诸如“处理”或“计算”或“算出”或“确定”等术语的讨论可指的是计算机系统或类似电子计算装置的作用和过程,其将计算机系统的寄存器和存储器内表示为物理(电子)量的数据操控并变换成在计算机系统存储器或寄存器或其它此类信息存储、传送或显示装置内类似地表示为物理量的其它数据。
[0007]在实施例的如下详细描述中,参考附图,附图通过图示示出了可实行本发明的特定实施例。在附图中,相似的附图标记描述几个视图上的基本类似的组件。充分详细地描述了这些实施例以使本领域技术人员能够实行本发明。可利用其它实施例,并且可进行结构、逻辑和电气改变,而不脱离本发明的范围。而且,要理解到,本发明的各种实施例尽管不同但不一定相互排斥。例如,在一个实施例中包含的具体特征、结构或特性可包含在其它实施例内。因此,如下详细描述不要被视为限制意义,并且本发明的范围仅由所附权利要求书连同赋予此类权利要求书权利的等同物的全部范围定义。
[0008]尽管以下示例可描述在执行单元和逻辑电路的上下文中提供对于虚拟机环境中地址转换的支持,但本发明的其它实施例可通过软件实现。例如,在一些实施例中,本发明可提供为计算机程序产品或软件,其可包含机器或计算机可读介质,其上存储有可用于对计算机(或其它电子装置)编程以执行根据本发明的过程的指令。在其它实施例中,本发明的过程可由含有用于执行过程的硬连线逻辑的特定硬件组件执行,或由已编程计算机组件和定制硬件组件的任何组合执行。
[0009]从而,机器可读介质可包含用于存储或传送机器(例如计算机)可读形式的信息的任何机构,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、通过因特网的传送、电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)等。
[0010]进一步说,设计从创建到模拟到制造可经过各种阶段。表示设计的数据可用若干方式表示该设计。首先,这在模拟上是有用的,硬件可使用硬件描述语言或另一功能描述语言表示。附加地,在设计过程的某些阶段,可产生具有逻辑和/或晶体管门的电路级模型。而且,大多数设计在某一阶段达到用硬件模型表示各种器件物理布局的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是规定在用于产生集成电路的掩膜的不同掩膜层上各种特征的存在或缺乏的数据。在设计的任何表示中,数据可存储在任何形式的机器可读介质中。调制的或以其它方式生成的以传送此类信息的光波或电波、存储器或者磁或光存储装置(诸如盘)可以是机器可读介质。这些介质中的任何介质都可“携带”或“指示”设计或软件信息。当指示或携带代码或设计的电载波被传送到执行电信号的拷贝、缓冲、重传的程度时,做出新拷贝。从而,通信提供商或网络提供商可做出实施本发明技术的制品(载波)的拷贝。
[0011]图1图示了本发明可操作的虚拟机环境100的一个实施例。在此实施例中,裸平台硬件116包括计算平台,计算平台例如可能能够执行标准操作系统(OS)或虚拟机监视器(VMM),诸如 VMM 112。
[0012]通常用软件实现的VMM 112可仿真裸机接口并向更高级软件导出。此类更高级软件可包括标准或实时OS,可以是具有有限操作系统功能性的高度精简的操作环境,可以不包含传统OS设施等。备选地,例如,VMM 112可在另一 VMM内或上运行。VMM例如可以用硬件、软件、固件或各种技术的组合实现。
[0013]平台硬件116可以是个人计算机(PC)、主机、手持装置、便携式计算机、机顶盒或任何其它计算系统。平台硬件116包含处理器118、处理器119和存储器120。
[0014]处理器118和119可以是能够执行软件的任何类型处理器,诸如微处理器、数字信号处理器、微控制器等。处理器118和119可以是同一类型或两种不同类型的单独处理器,或者各自可以是多核处理器的单独执行核。处理器118和119可包含用于执行本发明方法实施例的执行的微代码、可编程逻辑或硬编码逻辑。尽管图1仅示出两个此类处理器118和119,但在系统中可能存在多于两个的处理器。
[0015]存储器120可以是硬盘、软盘、随机存取存储器(RAM)(例如动态RAM (DRAM)或静态RAM (SRAM))、只读存储器(ROM)、闪存、以上器件的组合、或者由处理器118和119可读的任何其它类型机器介质。存储器120可存储用于执行本发明方法实施例的执行的指令和
/或数据。
[0016]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控制,并且可由客户软件直接存取。
[0017]进一步说,每个客户OS期望处置各种故障事件,诸如异常(例如页面故障、通用保护故障等)、中断(例如硬件中断、软件中断)以及平台事件(例如初始化(INIT)和系统管理中断(SMI))。这些故障事件中的一些是“有特权的”,因为它们必须由VMM 112处置以确保VM 102和114的恰当操作,以及来自客户软件和客户软件之间的保护。
[0018]当有特权的故障事件发生或客户软件尝试存取有特权的资源时,控制权可被转移到VMM 112。控制权从客户软件转移到VMM 112在本文被称为VM退出。在实现资源存取或适当处置事件之后,VMM 112可将控制权返回到客户软件。控制权从VMM 112转移到客户软件被称为VM进入。
[0019]在一个实施例中,处理器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。
[0020]在地址转换操作期间,VM 102或104期望分配物理存储器,提供来自客户软件应用(例如应用108或110)以及客户软件应用之间的保护,使用各种各样的分页技术等。在非虚拟机环境中,由OS期望的地址转换机制可基于由处理器控制的转换后备缓冲器(TLB)以及由OS控制并用于当启用分页时将虚拟存储器地址转换成物理存储器地址的转换数据结构(诸如页面表(PT)层级)。处理器118和119分别包含用于存储虚拟到物理存储器地址转换的TLB 122和123。Intel? Pentium?4处理器的架构支持若干分页模式。最常用的分页模式支持使用两级层级分页结构(在本文中称为两级层级分页模式)的32位线性地址空间。
[0021]本发明的实施例不限于此分页模式,但反而可由本领域技术人员用于虚拟化其它分页模式(例如物理地址扩展(PAE)模式、Intel?扩展的存储器64技术(EM64T)模式等)和实现(例如散列的页面表)。在基于TLB的一个实施例中,将虚拟存储器地址转换成物理存储器地址开始于使用虚拟地址的上面20位(对于4KB页面帧)或上面10位(对于4MB页面帧)搜索TLB。如果发现匹配(TLB命中),则在TLB中含有的物理页面帧的上面位与虚拟地址的较低位结合以形成物理地址。TLB还含有与映射关联的存取和准许属性。如果没发现匹配(TLB未中),则处理器查阅PT层级以确定虚拟到物理转换,其然后在TLB中高速缓存。PT层级中的条目可包含由处理器对某些存取自动设置的一些属性。
[0022]如果修改PT层级,则TLB可变得与PT层级不一致,如果在TLB中存在对应地址转换的话。OS可期望能够通过向处理器发出指令来解决此类不一致。例如,在Intel? 64指令级架构(ISA)中,处理器允许软件通过发出INVLPG指令使在TLB中高速缓存的转换无效。此外,OS可能期望请求处理器完全改变地址空间,这应该导致从TLB中移除所有转换。例如,在Intel? 64 ISA中,OS可使用MOV指令或任务开关请求处理器加载CR3 (其含有PT层级的基地址),由此从TLB中移除所有转换。页面表层级的不同级基于模式和实现可具有不同名称。在两级层级分页模式中,存在两级分页结构。CR3寄存器指向页面目录页面底部。页面目录中的条目可规定到大尺寸页面(例如4MB超页面、2MB超页面、IGB超页面等)的映射或到页面表的参考。页面表又可含有到小尺寸页面的映射。
[0023]如上面所讨论的,在虚拟机环境中,VMM 112应该能够具有对物理资源(包含TLB)的最终控制权。本发明的实施例通过使用仿真处理器的物理TLB的功能性的虚拟TLB解决了运行在VM 102和114中的客户软件的期望与VMM 112的角色之间的冲突。
[0024]虚拟TLB包含由VMM 112控制的物理TLB和一组阴影PT层级。该组阴影PT层级从VM 102或114当前可使用或不适用的客户PT层级中导出其格式和内容。如果VM 102或114修改客户PT层级的内容,则此内容变得与阴影PT层级的内容不一致。客户PT层级与阴影PT层级之间的不一致性使用类似于在管理其物理TLB中处理器所采用技术的技术来解决。这些技术中的一些技术迫使VM 102或114发出指示尝试操控TLB的事件(例如TNVLPG、页面故障和加载CR3)。此类事件是有特权的,并且因此导致VM退出VMM 112。VMM然后评估该事件,并将所有维持的阴影PT层级与当前客户状态同步(如果需要的话)。我们会将该组维持的阴影PT层级称为工作组。因为多个过程可使用相同客户页面表,因此有可能同一阴影PT是多个客户PT层级的一部分。对应的阴影PT又将是多个阴影PT层级的成员。
[0025]要注意的是,由VMM执行的同步可更新当前不在使用的阴影PT层级的阴影页面表或页面目录条目。同样,可能需要与不是在使用的客户PT层级的一部分的客户页面同步。
[0026]在一个实施例中,VMM 112包含负责创建并维持虚拟TLB(VTLB)数据存储器124中每一个VM 102和114的阴影PT层级的工作组的地址转换模块126。对于VM 102或114的对应活动过程(即有可能在不久的将来由VM 102或114激活的过程),维持阴影PT层级的工作组。用Intel? 64 ISA,仅明确定义的客户层级是由当前使用的分页结构定义的层级。实际上,存在客户过程以及它们地址空间的高度时间局部性。VMM可采用启发信息或明确信息来确定一组活动过程。
[0027]当VM 102或114实现了 VM 102或114的其中一个活动过程的客户PT层级时,地址转换模块126标识工作组中的对应阴影PT层级,并请求处理器加载其基地址。当可应用时,地址转换模块126然后可再用存储在阴影PT层级中的之前计算的映射。
[0028]如果VM 102或114激活新过程,则地址转换模块126从对应的客户PT层级中导出新阴影PT层级,并将它加到工作组。备选地,如果VM 102或114去激活现有过程,则地址转换模块126从工作组中移除对应于客户PT层级的信息。
[0029]在一个实施例中,地址转换模块126负责从每个新阴影PT层级提取元数据,将元数据存储在VTLB数据存储器124中,并且当修改阴影PT层级时更新元数据。在一个实施例中,元数据包含PT向量(PTV)、ro向量(rov)、活动pte列表和活动pde列表。
[0030]PTV和PDV跟踪被用作PT和H)的客户帧。在一个实施例中,此信息被编码在位向量中。PTV可由页面帧号(PFN)索引,其中如果对应的PFN是PT,则设置每个条目。PDV可由页面帧号(PFN)索引,其中如果对应的PFN是H),则设置每个条目。
[0031]活动PTE列表是阴影PT层级中指向装有PT和ro的帧的PT条目(PTE)的列表。活动PDE列表标识阴影PT层级中指向含有在活动PTE列表中标识的PT条目的PT的H)条目(PDE)。在一个实施例中,活动PDE和PTE列表含有描述映射到H)帧还是PT帧的附加元数据。
[0032]本领域技术人员将理解,此发明的实施例可使用可能比本文描述的更多或更少空间或时间有效的各种数据结构。本领域技术人员还将认识到支持附加分页模式的跟踪结构的扩展。例如,EM64T分页模式通过四级层级分页结构将64位虚拟地址映射到物理地址。在虚拟或物理地址空间中支持的实际位数可以是实现相关的,并且在具体实现中可小于64位。这将在下面更详细讨论,EM64T实现可能需要添加页面映射级4(PML4)页面向量和页面目录指针(TOP)页面向量,以跟踪在EM64T分页结构中使用的附加页面表。同样,本领域技术人员将认识到,活动PTE列表将被扩展成包含映射在分页结构内使用的任何页面(例如用于EM64T的PML4或PDP页面)的条目。
[0033]在一个实施例中,维持活动PTE/PDE列表元数据,以跟踪通过页面表映射的H)和PT帧号。当每页面的映射数量从O递增时,则映射PT的PDE必须被添加到活动PDE列表,而当映射数量递减到O时,则映射此PT的PDE必须从活动PDE列表中移除。
[0034]在一个实施例中,当需要此类同步时,地址转换模块126负责同步当前阴影PT层级与当前客户PT层级。地址转换模块126通过确定客户PT层级中的哪些条目当前已经被修改了并且然后相应地更新阴影PT层级中的对应条目来执行同步。地址转换模块126基于从阴影PT层级中提取的元数据和与阴影PT层级条目关联的属性来确定客户PT层级中的哪些条目当前已经被修改了。在一个实施例中,属性包含与阴影PT层级中的ro条目关联的存取属性和与阴影PT层级中的PT条目关联的更新条目。
[0035]图2图示了根据本发明一个实施例的虚拟TLB 204的操作。虚拟TLB 204包含由阴影PT层级206和物理TLB 208表示的阴影转换数据结构。阴影PT层级206从由客户PT层级202表示的客户转换数据结构导出其结构和内容。在一个实施例中,VMM维持用于VM活动过程的阴影PT层级的工作组。在一个实施例中,当VM请求处理器实现不同客户PT层级(例如通过向Intel? 64 ISA中的CR3或任务开关发出MOV)时,控制权转变到VMM,VMM指令处理器加载对应于所请求的客户PT层级202的阴影PT层级206的基地址214。
[0036]在一些实施例中,使用相关元数据和属性,将此阴影PT层级206与客户PT层级202同步,这将在下面更详细讨论。
[0037]在一个实施例中,虚拟TLB在阴影H)和PT条目中维持存取和更新属性。这些属性也被称为存取的(A)位和脏(D)位。在一个实施例中,当客户软件第一次存取页面帧时,处理器在阴影PT层级206中的对应PT条目或H)条目中设置存取的(A)属性。如果客户软件尝试写页面帧,则处理器在对应的阴影PT条目中设置脏(D)属性。
[0038]允许客户软件自由地修改客户PT层级202,包含改变虚拟到物理映射准许等。相应地,阴影PT层级206可以不总是与客户PT层级202 —致。当问题起因于层级202与206之间的不一致时,将虚拟TLB 204视为物理TLB的客户OS尝试通过请求处理器执行由相关ISA定义的操作来改变虚拟TLB 204。例如,在Intel? 64 ISA中,此类操作包含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层级引起的页面故障在本文被称为“真实”页面故障,而直接使用客户页面表本不该发生的页面故障在本文称为“引发的”页面故障。
[0039]图3A图示了根据本发明一个实施例创建和维持用于两级层级分页模式中的阴影PT层级的元数据的过程。
[0040]参考图3A,图示了由不同字母(字母A至W)标识的若干物理页面帧。一些客户页面帧可含有ro(例如帧A)。其它客户页面帧可含有PT (例如帧A、B、C和L)。层级302是客户PT层级。
[0041]图3A示出了基于客户PT层级302创建的阴影PT层级304。客户PT层级302中的每个ro或PT包含阴影PT层级304中的对应ro或PT。要注意的是,一般而言,不是对于客户PT中的每个页面都需要阴影页面。一些实施例可选择成根据使用情况统计(例如仅生成已经使用的客户PT页面的阴影页面)或根据资源约束(例如基于可用存储器仅维持一组阴影页面)来限制阴影页面。对于从同一物理帧导出的ro和PT表,维持单独的阴影表。例如,对于从同一物理帧314中导出的PD 306和PT 308维持单独的表330和332。阴影PT层级304中的H)和PT条目含有用于客户帧314至324的变换的映射。
[0042]在客户PT层级302中,帧316和318被用作PT 310和312,并且帧314被用作H)306和PT 308。这种用法被图示为在阴影PT层级304下面示出的页面帧314至316中的“PT” 和 “PD/PT”。
[0043]阴影PT层级304与活动PTE列表342和活动PDE列表344关联。在一个实施例中,活动PTE列表342标识阴影PT层级304中映射来自客户PT层级302的PT和H)页面帧的PT条目。具体地说,活动PTE列表342标识PT 332中映射页面帧314至318的条目。在一个实施例中,活动PDE列表344标识阴影PT层级中指向具有在活动PTE列表342中标识的条目的PT的H)条目。具体地说,活动PDE列表344包含H) 330中指向PT 332的条目。活动PTE列表342和活动PDE列表344是阴影PT层级304的元数据的成分。
[0044]阴影PT层级304与PT位向量(PTV) 362和H)位向量(TOV) 364关联。在一个实施例中,PTV 362跟踪用作PT的客户页面帧。具体地说,PTV 362包含用作客户PT层级302中的PT的页面帧314至318。在一个实施例中,PDV 364跟踪用作H)的客户页面帧。具体地说,PDV 364包含用作客户PT层级302中的H)的页面帧314。在一个实施例中,PTV 362和rov 364表示工作组中的所有阴影PT层级,并且跟踪在工作组中采用的阴影页面的容量(例如,如果阴影页面尚未被分配用于客户PT,则PTV不会反应客户PT页面,即便它出现在客户分页结构中)。
[0045]在一个实施例中,如果客户OS向客户PT层级302添加新PT,则VMM可检测此添加(例如关于与TLB操控相关的下一或随后VM退出)并向阴影PT层级304添加对应PT。例如,如果从帧319中导出的新PT 352与新帧354的映射一起被添加到客户PT层级302,则VMM可将对应的PT 360与变换的映射一起添加到阴影PT层级304,并更新元数据以反映此改变。具体地说,VMM将映射PT 332中帧319的条目添加到活动PTE列表342,并将指向H)330中PT 360的条目添加到活动PDE列表344。还有,VMM将帧319添加到PTV 362,其跟踪用作PT的客户帧(即这里是帧319)。
[0046]图3B图示了根据本发明一个实施例创建和维持用于EM64T分页模式中阴影PT层级的元数据的过程。
[0047]参考图3B,分页结构的底部是PML4页面(例如帧A)。PML4页面中的每个条目可参考PDP页面(例如帧B和C)。PDP页面中的每个条目可参考页面目录(PD)页面(例如帧D或E),它的每个条目又可参考页面表(PT)页面(例如帧F、G、H或I)中的页面。
[0048]每个PML4、roP、ro或PT页面在尺寸上可以是4KB。为了支持大于32位的物理地址空间,条目尺寸可相对于32位分页模式增大。确切地说,每页面可能存在512个条目,要求在每级使用虚拟地址的9位来选择适当条目。此选择器尺寸可得到2MB的大页面尺寸,代替之前所描述的4MB。在此类层级中,在层级的其它级可支持各种大页面尺寸(例如在PDP条目中可规定IGB页面)。
[0049]在一个实施例中,在EM64T分页模式中创建元数据包含生成几个向量、活动条目列表和几个活动目录列表。向量包含标识用作PML4页面的帧的PML4V向量、标识用作I3DP页面的帧的I3DPV向量、标识用作ro页面的帧的rov向量以及标识用作PT页面的帧的ptv向量。活动条目列表是包含映射PML4、PDP, PD或PT页面的所有映射的活动PTE列表。活动目录列表包含标识参考通过其可存取对应于阴影结构的客户页面的较低级结构的较高级映射结构的列表。具体地说,活动目录列表由包含参考含有活动PTE列表条目的页面的那些PDE的活动PDE列表、包含参考含有活动PDE列表条目的H)的活动TOPE条目的活动PDPE列表以及包含映射含有活动I3DPE列表中元素的PDP的条目的活动PML4E列表组成。
[0050]在一个实施例中,同步阴影页面表开始于检查与使用的阴影PT层级关联的活动PML4E列表中的每个条目。如果条目已经被存取,则检查对应于存取的PML4条目的活动PDPE列表中的每个元素,并且然后处理继续之前所描述的。
[0051]在备选实施例中,对于层级的其中一个或多个上面级,不维持和/或处理活动列表。例如,在最上面的分页结构中仅填充单个条目的系统中,对于层级的每级都使用活动列表将引起总是存取此单个条目,由此允许在对于层级中的较低级所需的处理量上不减少。为了适应这个使用模型,同步相反可开始于处理层级中较低的活动列表。例如,在一个实施例中,活动roPE列表元素可首先被处理,跟着是活动PDE列表元素或与使用的阴影PT层级关联的活动PTE列表元素。在一个实施例中,在同步时处理的初始层可被预先确定。在另一实施例中,要处理的初始层可通过客户页面表使用情况的动态仿形来确定。
[0052]各种其它分页模式可与本发明的实施例一起使用。例如,Intel? 64 ISA支持32位虚拟地址被映射到更大物理地址的附加分页模式。在此附加操作模式中,页面表基地址寄存器配置成指向含有4个元素的PDP页面。此附加操作模式中的条目尺寸和行为类似于上面对于64位虚拟地址模式描述的尺寸和行为。因为此附加模式不利用PML4页面,因此不需要PML4V和活动PML4E列表。
[0053]图4是用于同步客户转换数据结构与阴影转换数据结构的过程400的一个实施例的流程图。该过程可由处理逻辑执行,处理逻辑可包括硬件(例如专用逻辑、可编程逻辑、微代码等)、软件(诸如在通用计算机系统或专用机器上运行的软件)或二者的组合。在一个实施例中,该过程由图1的地址转换模块126执行。
[0054]参考图4,过程400开始于处理逻辑接收由于有关TLB操控的事件而引起的从VM转变的控制权(处理块402)。此类事件的示例可包含改变当前地址空间的请求(例如CR3加载)、调整TLB中规定的虚拟地址的不一致转换的请求(例如INVLPG)、页面故障等。
[0055]在处理块404,处理逻辑确定有关TLB操控的事件是否应该由VM处置。如果是(例如,该事件是由客户转换数据结构中的有问题映射引起的页面故障),则控制权返回到VM以便处置该事件(处理块406)。如果否,则处理逻辑确定该事件是否与规定的有问题地址关联(处理块408)。
[0056]如果该事件不需要由VM处置,则它可与规定的有问题地址关联。此类事件的示例可包含由采取有问题的地址作为操作数的INVLPG指令引起的事件、由引发的页面故障(例如,源自于相对于特定映射在两个转换数据结构之间的不一致的页面故障、由需要虚拟化客户转换数据结构中的A/D位而引起的页面故障等)引起的事件等。如果该事件与规定的有问题地址关联,则处理逻辑校正用于规定的地址的阴影转换数据结构(例如,移除用于规定的地址的过期映射或添加用于规定的地址的新映射)以符合客户转换数据结构(处理块410)。下面结合图7更详细地讨论用于同步规定的地址的两个转换数据结构的条目的过程的一个实施例。
[0057]如果该事件不与任何特定地址关联(例如,该事件由改变地址空间的VM请求引起,其刷新了 Intel? 64 ISA中的所有TLB条目),则处理逻辑确定客户转换数据结构的哪些条目已经被修改(处理块412)。
[0058]使用从阴影转换数据结构提取的元数据和与阴影转换数据结构的条目关联的属性进行确定(处理块412)。元数据包含用于阴影转换数据结构的各种级的向量和活动列表。用于阴影转换数据结构的特定级的向量标识在客户转换数据结构的此级用作页面的帧。活动列表包含活动条目列表和一个或多个活动目录列表。活动条目列表包含在形成客户转换数据结构时由客户使用的页面的映射。活动目录列表标识参考通过其可存取对应于加阴影的分页结构的客户页面的较低级结构的较高级映射结构。如上面所讨论的,在两级层级分页模式中,在一个实施例中,元数据包含向量PTV和rov、活动条目列表(PTE列表)和活动目录列表(PDE列表)。在EM64T分页模式中,在一个实施例中,元数据包含向量PTV, rov、PDPV和PML4V、活动条目列表(PTE列表)以及活动目录列表(活动PDE列表、活动F1DPE列表和活动PML4E列表)。
[0059]下面结合图6更详细地讨论用于使用元数据标识客户转换数据结构的当前修改的条目的过程的一个实施例。
[0060]在处理块414,处理逻辑同步阴影转换数据结构中的对应条目与客户转换数据结构中的修改条目。相应地,处理逻辑仅需要同步被修改的条目,而不用重新填充阴影转换数据结构的整个内容。
[0061]在一个实施例中,额外存储装置用于维持一些客户ro和/或PT内容,因为它们最后同步。这准许VMM确定已经在哪里进行了修改,而无需算出或查找附加重新定位或准许信息。
[0062]要注意的是,对客户页面表的某些修改不需要对阴影页面表的修改。例如,如果客户PT含有随后修改的不存在映射,则不需要改变对应的阴影PT。在实施例中,同步可包含已经不存在、被修改成存在的条目的急切填充映射。
[0063]图5-14图示了根据本发明的不同实施例执行以支持使用两级层级分页模式的虚拟机环境中地址转换的各种过程。这些过程可由处理逻辑执行,处理逻辑可包括硬件(例如专用逻辑、可编程逻辑、微代码等)、软件(诸如在通用计算机系统或专用机器上运行的软件)或二者的组合。在一个实施例中,这些过程中的每个过程都由图1的地址转换模块126执行。
[0064]图5是用于维持阴影转换数据结构(诸如阴影PT层级)的元数据的过程500的一个实施例的流程图。
[0065]参考图5,过程500开始于处理逻辑根据客户PT层级创建每个H)或PT页面的阴影页面(处理块502)。
[0066]在处理块504,处理逻辑跟踪在客户PT层级中用作H)或PT的页面帧。在一个实施例中,如果对应的PFN是客户PT层级中的H),则处理逻辑在PDV中设置条目。类似地,如果对应的PFN是客户PT层级中的PT,则处理逻辑在PTV中设置条目。
[0067]在处理块506,处理逻辑跟踪到任何动态随机存取存储器(DRAM)支持的页面的映射(以标识潜在地可能是ro或PT的页面)。在一个实施例中,处理逻辑使用反向页面表(IPT)和反向页面目录(IPD)跟踪到基于DRAM的页面的映射。IPT由数据页面帧的PFN索弓丨,其中每个条目含有映射数据页面帧的PTE地址列表。Iro由页面表的PFN索引,其中每个条目含有作为页面表参考PFN的PDE地址列表。
[0068]在一个实施例中,在处理块508,处理逻辑标识客户PT层级中的4MB页面,并创建阴影PT层级中用于每个4MB页面的页面表,以避免大页面映射,并由此减少将来的同步时间。否则,4MB页面的更新将引起4MB内每一个H)和PT页面的同步。在一个实施例中,反向扩展表(IET)用于跟踪客户PT层级中的哪些PDE指向4MB页面。IET由PFN和属性位索弓I,其中每一个条目列出了指向分解的4MB页面的TOE。进行类似的处理以支持其它尺寸的大页面。在实施例中,仅当大页面将映射至少一个分页结构页面时,才用对应映射替换大页面。
[0069]在本发明的实施例中,Iro可由阴影PFN的地址索引,以最小化所需的地址转换步骤。
[0070]在Intel? 64 ISA中,存储器类型信息(例如高速缓存能力信息)可被存储在映射页面的roE/PTE内的PAT位中。此类型信息未在是页面表指针的TOE中捕获到。因此,如果两个4MB页面要映射具有不同PAT属性的相同区域,则将需要单独的页面表来传达正确的PAT属性。对于每组属性使用单独的扩展表来解决这个问题。
[0071]在处理块510,处理逻辑标识阴影PT层级中映射用作客户PT层级中ro或PT的页面的PTE,并创建活动PTE列表。
[0072]在处理块512,处理逻辑标识阴影PT层级中指向具有在活动PTE列表中标识的PTE的PT的TOE,并创建活动PDE列表。
[0073]随后,在处理块514,如果客户OS修改客户PT层级的结构(例如添加或移除H)或PT),则处理逻辑相应地改变上面的活动PTE和PDE列表。
[0074]图6是用于便于地址空间改变的过程600的一个实施例的流程图。要注意的是,在Intel? 64 ISA中,也可重新加载相同的CR3值以迫使刷新过期的TLB映射。对于CR3的改变或对于CR3重新加载,可采取类似处理步骤。
[0075]参考图6,过程600开始于处理逻辑确定VM退出由于VM实现不同客户PT层级的请求(例如通过发出CR3加载请求)而发生(处理块602)。
[0076]作为响应,处理逻辑扫描对应于在元数据的活动PDE列表中标识的当前在使用的阴影PT层级的所有活动PDE以发现这些PDE中的哪些已经被存取(具有设置成存取值的存取属性)(处理块604),并且然后初始化存取的TOE的存取属性(处理块606)。在Intel?64 ISA中,非叶分页面表不支持脏位。如果存取的位被清除,则4MB区域内的页面没有被读或写,因此不能修改任何客户页面表或页面目录。然而,存取的位在读与写之间没有区分,因此已经被存取的4MB区域应该被进一步处理,即便有可能什么也没被修改。在支持非叶页面表的脏位的架构中,替代地检查脏位,并且仅已经被写的区域需要进一步处理。在其它实施例中,使用代替A/D位去特权的监视方法,要同步的结构可通过客户存取上的故障来标识。
[0077]接下来,对于每个存取的TOE,处理逻辑扫描与元数据的活动PTE列表中的存取的活动PDE对应的所有阴影PTE,以发现这些PTE中的哪些包含对于更新的页面的映射(具有设置成更新值的更新属性)(处理块608)。
[0078]进一步说,对于每个更新的页面,处理逻辑比较客户PT层级中的ro/ρτ条目与阴影PT层级中的对应条目(处理块610),并改变阴影PT层级的对应条目以符合客户PT层级的修改条目(例如,通过从阴影PT层级中移除客户PT层级中缺少的PTE/roE,通过向阴影PT层级添加最近添加到客户PT层级的新PTE/PDE等)(处理块612)。要注意的是,添加PDE可能需要分配和初始化附加阴影PT。这又可能需要更新由地址转换模块126维持的各种元数据结构。
[0079]在处理块614,处理逻辑初始化被设置成更新值的更新属性。更新的映射标识由客户OS修改的页面。
[0080]在处理块616,处理逻辑基于修改的客户页面同步阴影映射,并且由于以上修改而更新元数据(如果需要的话)。
[0081]在处理逻辑618,处理逻辑确定由VMM维持的工作组是否包含对应于由VM请求的新客户ro的阴影ro。如果是,则处理逻辑请求处理器加载此阴影PT层级的基地址(处理块620)。如果否,则处理逻辑分配对应于所请求的客户PT层级的新阴影PT层级(处理块622),向PDV添加新阴影PT层级的ro (处理块624),向新阴影PT层级的H)添加每个有效PDE (处理块626),配置活动PDE和PTE以对于H)覆盖监视映射此H)的PTE (处理块628),并且然后请求处理器加载此阴影PT层级的基地址(处理块620)。下面结合图13更详细讨论用于监视PTE的过程的一个实施例。
[0082]图7是用于同步规定地址的两个转换数据结构的条目的过程700的一个实施例的流程图。可执行过程700,例如作为由VM发出的INVLPG指令的结果或作为引发的页面故障的结果。
[0083]参考图7,过程700开始于处理逻辑确定阴影PT层级中对于规定地址的映射是否过期(即,存在不对应于客户页面表当前内容的有效映射)(处理块702)。如果否,则处理逻辑继续处理块712。如果是,则处理逻辑确定过期条目映射H)页面还是PT页面(处理块704)。如果过期条目不映射ro或PT页面,则处理逻辑移除过期条目(处理块710)并继续进行处理块712。
[0084]如果过期条目的确映射ro或PT页面,则处理逻辑进一步确定是否更新映射的页面(处理块706)。如果否,则处理逻辑继续进行处理块710。如果是,则处理逻辑更新、同步或移除修改的ro或PT阴影(处理块708),并继续进行处理块710。在一个实施例中,页面被标记以便将来同步。
[0085]在处理块712,处理逻辑确定客户PT层级是否含有对于规定地址的新映射。如果否,则过程700结束。如果是,则处理逻辑添加新映射作为对应的PTE或TOE,并且如果必要的话,则创建阴影页面,并根据添加更新元数据(处理块714)。
[0086]图8是用于从由VMM维持的阴影PT层级的工作组中移除阴影PT层级的过程800的一个实施例的流程图。
[0087]在VM检测到对应过程的去激活后,可从工作组中移除阴影PT层级。可使用对于相关OS定义的启发式或采用一组检查,基于由客户VM的行为相对于当前地址空间提供的线索,检测去激活。如果VM支持通过其OS或驱动程序通知VMM去激活的接口,则可避免启发式。由于资源约束,例如因为用于阴影结构的存储量超过目标阈限,阴影PT层级也可被移除。
[0088]参考图8,处理逻辑开始于从阴影PT层级中的H)移除每个有效PDE (处理块802)。
[0089]在处理块804,处理逻辑清除PDV中的对应条目。
[0090]在处理块806,处理逻辑解除分配ro页面,并从ro转换表(pdtt)移除转换。pdtt用于跟踪页面的地址和类型(例如ro或PT)。roTT由客户pfn索引,其中每个条目含有物理PFN和元数据。
[0091]在处理块808,处理逻辑从映射ro的PTE中移除监视。下面结合图14更详细讨论用于从PTE移除监视的过程的一个实施例。
[0092]图9是用于向阴影PT层级的ro添加条目的过程900的一个实施例的流程图。为了图示,我们将考虑映射页面表的存在的条目。
[0093]参考图9,处理逻辑开始于向Iro添加TOE的条目(处理块902)。
[0094]在处理块904,处理逻辑确定在PTV中是否设置由这个PDE映射的PT。如果是,则在PTTT中查找适当阴影PT(处理块916),创建新阴影roE(处理块914)并且过程900结束。如果否,则处理逻辑在PTV中设置对应向量(处理块906),分配阴影页面,并初始化转换(处理块908),填充新阴影页面表(处理块910),更新活动PTE/PDE列表和元数据以反映要监视由当前客户PDE用作页面表的客户页面(处理块912),并添加新TOE,如果阴影页面表含有任何活动PTE列表元素,则将其添加到活动PDE列表(处理块914)。下面结合图13更详细讨论用于监视PTE的过程的一个实施例。
[0095]图10是用于从阴影PT层级的H)移除条目的过程1000的一个实施例的流程图。
[0096]参考图10,处理逻辑开始于从IPD PDE列表移除此PDE的条目(处理块1002)。如果PDE在活动PDE列表中,则必须更新活动PDE列表。
[0097]在处理块1004,处理逻辑确定PDE是否是映射对应PT的最后条目。如果否,则过程1000结束。如果是,则处理逻辑清除PTV中用于PT的条目(处理块1006),移除每个有效PTE (处理块1008),对于PT覆盖更新映射此PT的活动PTE/PDE (处理块1010),并移除阴影页面转换和释放用于存储PT阴影页面的存储器(处理块1010)。
[0098]图11是用于向阴影PT层级的PT添加条目的过程1100的一个实施例的流程图。
[0099]参考图11,处理逻辑开始于向IPT添加此PTE的条目(处理块1102)。
[0100]在处理块1106,处理逻辑创建阴影映射并继续进行处理块1108。
[0101]在处理块1108,处理逻辑确定是否设置PDV或PTV中的对应条目。如果否,则过程1100结束。如果是,处理逻辑将此条目添加到活动PTE列表,并更新指示它是否映射ro和/或PT页面的相关联元数据(处理块1110)。如果刚创建的活动PTE条目是这个页面表的第一条目,则Iro必须被查阅,并且映射此页面表页面的每个PDE必须被添加到活动PDE列表。
[0102]图12是用于从阴影PT层级的PT移除条目的过程1200的一个实施例的流程图。
[0103]参考图12,处理逻辑开始于确定此PTE是否映射在PDV或PTV中设置的页面(处理块1202)。如果否,则处理逻辑继续进行处理块1206。如果是,则处理逻辑从活动PTE列表中移除PTE。如果这是PT中的最后的活动PTE列表元素,则参考此PT的PDE从活动TOE列表中移除(处理块1204),并且继续进行处理块1206。
[0104]在处理块1206,处理逻辑从IPT中移除对应的条目。
[0105]图13是用于监视阴影PT层级的PTE的过程1300的一个实施例的流程图。图13中示出的步骤表示当监视器认识到已经被映射作为数据页面的页面被用作页面目录或页面表页面时所需的处理。这个过程因此将通过由PTE映射的页面的状况改变触发。
[0106]参考图13,处理逻辑开始于确定该PTE是否在活动PTE列表中标识了(处理块1302)。如果是,则处理逻辑添加之前失去的覆盖(处理块1304)。此流程通过映射的页面的状况改变来触发。由于这个PTE已经在活动PTE列表中了,因此它必须是由这个PTE映射的帧之前被用作PT或ro而现在也用在其它容量中的情况。此类信息可明确地与条目一起存储,或存储在关联的元数据中。如果PTE不在活动PTE列表中,则处理逻辑将PTE添加到活动PTE列表,并相应地更新元数据(处理块1306)。
[0107]接下来,在处理块1308,处理逻辑确定该PTE是否是此PT的第一活动PTE列表条目。如果否,则过程1300结束。如果是,则处理逻辑向活动PDE列表添加映射此PT(如通过Iro所发现的)的条目。
[0108]图14是用于减小由阴影PT层级的PTE提供的监视覆盖的过程1400的一个实施例的流程图。当从工作组中移除过程或移除参考页面表的最后TOE时,导致之前监视的页面目录或页面表页面的状况改变,可能调用此过程。
[0109]参考图14,处理逻辑开始于确定此PTE是否已经监视了既是页面表又是页面目录页面的页面(处理块1402)。如果是,则处理逻辑降低覆盖级,指示PTE现在监视作为PT或作为ro但不是二者的页面(处理块1404)。如果否,则处理逻辑从活动PTE列表中移除该PTE(处理块1406)。要注意的是,如果PTE是对于其在单个容量中的使用而跟踪的页面的元素,则它现在必须是页面不再需要监视的情况。
[0110]接下来,如果PT中的最后活动PTE列表元素被移除(处理块1408),则处理逻辑从活动PDE列表(如通过IB)所发现的)中移除映射此页面表的对应条目(处理块1410)。
[0111]如上面所讨论的,裸平台硬件116包括多个物理处理器,包含处理器118和119。在虚拟机环境内,每个物理处理器或物理处理器的任何组合可用于支持一个或多个虚拟处理器。当在多处理器系统中使用共享阴影页面表时,可出现几个一致性问题,这些问题必须被适当处置以便保全正确性。这些问题的主要源头是,对于每个物理处理器存在单独的硬件TLB。存在这样的情况:当阴影页面表在一个物理处理器上改变时,但一个或多个其它物理处理器在它们的硬件TLB中可含有老的不一致的映射,并且能够执行一些客户页面表的更新,而无需存储器虚拟化算法识别并跟踪此类修改的任何能力。为了解决此类问题,可发送IPI(处理器间中断)以同步其它物理处理器的TLB。在一些实现中,客户执行可在阴影页面表修改期间被中止,以简化状态跟踪和阴影页面表管理。
[0112]本发明的实施例可用于消除对于IPI的需要,随着虚拟处理器数量的增加,没有施加附加存储器开销。这可通过向监视器处理器添加跟踪数据来达成,监视器处理器仍可含有到阴影页面表页面的可写映射以及添加的同步相位,同时此类映射存在。
[0113]图15是用于维持多处理器系统中阴影PT层级的过程1500的一个实施例的流程图。在处理块1510中,创建用于一个处理器(例如处理器118)的阴影PT层级的工作组。用于处理器118的阴影PT层级使用TLB 122存储虚拟到物理地址转换。在处理块1512中,创建用于另一个处理器(例如处理器119)的阴影PT层级的工作组。用于处理器119的阴影PT层级使用TLB 123存储虚拟到物理地址转换。处理器118的工作组可不同于处理器119的工作组,因为不同的VM可运行在不同处理器上,或者由于任何其它原因。然而,在多于一个处理器的工作组中可包含任何页面帧,PT和PF。在本发明的范围内,还可创建用于任何数量的附加处理器的工作组。
[0114]在处理块1514中,创建修改的客户表记录。修改的客户表记录可以是在其中存储已经修改了客户页面表的记录的列表或任何类型数据结构。对于每个修改的客户页面表,保持处理器在处理器的硬件TLB中仍可含有到那个客户页面表的可写参考的记录。
[0115]例如,修改的客户页面表记录可包含用于每个修改的客户页面表的位向量,其中位向量中的一位用于系统中的每个处理器,其中每位可用于记录对应处理器的硬件TLB是否仍可含有到修改的客户页面表的可写参考。
[0116]在处理块1516中,处理器118的工作组如上面所描述的维持,例如通过从每个新阴影PT层级提取元数据,将元数据存储在VTLB数据存储器124中,并且当修改阴影PT层级时更新元数据。元数据可包含PT向量(PTV)、PD向量(rov)、活动PTE列表、活动PDE列表以及所需的任何其它信息。在处理块1518中,处理器119的工作组如上面所描述的维持,例如通过从每个新阴影PT层级提取元数据,将元数据存储在VTLB数据存储器124中,并且当修改阴影PT层级时更新元数据。元数据可包含PT向量(PTV)、PD向量(rov)、活动pte列表、活动PDE列表以及所需的任何其它信息。尽管VTLB数据存储器124在图1中被显示为单个块,但在本发明的范围内,用于任何数量处理器的工作组的元数据可被存储在任何数量的单独数据结构和/或存储器中。例如,用于处理器118的工作组的元数据和用于处理器119的工作组的元数据可被存储在两个单独数据结构中。在本发明的范围内,还可维持用于任何数量的附加处理器的工作组。
[0117]在处理块1520中,识别对客户页面表的修改。在处理块1522中,条目被添加到修改的客户页面表地址的修改的客户表记录,其中该条目指示系统中的每个处理器(包含处理器118和119)在其硬件TLB中可含有到客户页面表的可写参考。
[0118]在处理块1530中,创建新阴影页面表。在处理块1532中,条目被添加到新阴影页面表地址的修改的客户表记录,其中该条目指示系统中的每个处理器(包含处理器118和119)在其硬件TLB中可含有到客户页面表的可写参考。
[0119]在处理块1540,同步事件发生在系统中的任何处理器(例如处理器118)上。在处理块1542中,根据在图16中图示的过程1600,将修改的客户表记录中的每个客户页面表与对应的阴影页面表同步。在处理块1544中,VM退出发生在不同处理器(例如处理器119)上,导致刷新那个处理器的硬件TLB (例如TLB 123),并更新修改的客户表记录以指示TLB不再含有到客户页面表的任何可写参考。
[0120]图16是用于同步修改的客户页面表记录中的客户页面表与多处理器系统中的对应阴影页面表的过程1600的一个实施例的流程图。在处理块1610中,到所有阴影页面表中的客户页面表的所有可写参考被改变成只读。在处理块1612中,清除到处理器118的硬件TLB (例如TLB 122)中的客户页面表的参考(如果有的话)。处理块1612可发生在源自于识别出同步事件的VM退出期间,或者可由软件执行。作为处理块1612的结果,对处理器118上的客户页面表的任何将来写存取将引起页面故障异常,并且将识别和记录更新,如过程1500中的处理块1520中。在处理块1614中,更新修改的客户表记录以反映在它们的硬件TLB中不含有到客户页面表的可写参考的任何其它处理器。
[0121]在处理块1620中,确定客户页面表是否含有任何未处理的条目。如果它含有,则在处理块1622中,确定客户页面表中的条目是否与阴影页面表中的对应条目同步。如果否,则在处理块1624,使阴影页面表中的对应条目无效,例如改变成不存在状况。要指出的是,执行处理块1624,代替将阴影页面表条目的值改变成客户页面表条目的值,以阻止在系统中其它处理器上的不正确行为。
[0122]在处理块1630中,更新修改的客户表记录以指示处理器118在其硬件TLB中不含有到客户页面表的可写参考。在处理块1632中,确定任何其它处理器在其硬件TLB中是否含有到客户页面表的可写参考。如果否,则在处理块1634中,从修改的客户表记录中移除客户页面表的记录。要注意的是,客户页面表的同步发生在从修改的客户表记录中移除客户页面表之前,以确保同步发生在已经从系统中移除最后的可写映射之后。
[0123]在本发明的范围内,可按不同次序执行任何所图示的方法实施例,省略图示的框,添加附加框,或者重新记录、省略或附加框的组合。例如,处理器的工作组与第一处理器上的当前客户状态的同步可包含比在图16中示出的更多。
[0124]从而,已经描述了用于支持多处理器虚拟机环境中地址转换的方法和设备。要理解到,以上描述意图是说明性的,而非约束性的。在阅读和理解了以上描述后,许多其它实施例对于本领域技术人员将是显而易见的。因此,本发明的范围应该相对于所附权利要求书连同赋予此类权利要求书权利的等同物的完整范围来确定。
【权利要求】
1.一种方法,包括: 创建用于多个处理器中的第一处理器的阴影页面表层级的第一工作组; 创建用于所述多个处理器中的第二处理器的阴影页面表层级的第二工作组; 保持修改的客户页面表的记录,以及对于每个修改的客户页面表,所述多个处理器中的哪些处理器具有包含到所述修改的客户页面表的可写参考的硬件转换后备缓冲器的指示;以及 将每个修改的客户页面表与所述第一工作组中的对应阴影页面表同步。
2.如权利要求1所述的方法,进一步包括将每个修改的客户页面表与所述第二工作组中的对应阴影页面表同步。
3.如权利要求1所述的方法,其中执行将每个修改的客户页面表与所述第一工作组中的对应阴影页面表同步和将每个修改的客户页面表与所述第二工作组中的对应阴影页面表同步无需处理器间中断。
4.如权利要求1所述的方法,其中阴影页面表层级的所述第一工作组使用所述第一处理器中的第一硬件转换后备缓冲器存储虚拟到物理地址转换。
5.如权利要求 1所述的方法,其中阴影页面表层级的所述第二工作组使用所述第二处理器中的第二硬件转换后备缓冲器存储虚拟到物理地址转换。
6.如权利要求1所述的方法,其中修改的客户表记录中的所述记录包含用于每个修改的客户页面表的位向量,其中所述位向量中的一位用于所述多个处理器中的每个处理器,其中每个位将记录所述对应处理器的硬件转换后备缓冲器是否含有到所述修改的客户页面表的可写参考。
7.如权利要求1所述的方法,进一步包括:通过从每个新阴影页面表层级提取元数据、将所述元数据存储在虚拟转换后备缓冲器数据存储器中,并且在修改所述阴影页面表层级时更新所述元数据,来维持所述第一工作组和所述第二工作组。
8.如权利要求1所述的方法,进一步包括:识别对客户页面表的修改。
9.如权利要求8所述的方法,进一步包括:向所述修改的客户页面表的修改的客户表记录添加条目。
10.如权利要求10所述的方法,其中所述条目指示所述多个处理器中的每个处理器在其硬件转换后备缓冲器中含有到所述修改的客户页面表的可写参考。
11.如权利要求1所述的方法,进一步包括:创建新阴影页面表。
12.如权利要求11所述的方法,进一步包括:向所述新阴影页面表的所述修改的客户表记录添加条目。
13.如权利要求10所述的方法,其中所述条目指示所述多个处理器中的每个处理器在其硬件转换后备缓冲器中含有到对应于所述新阴影页面表的客户页面表的可写参考。
14.如权利要求4所述的方法,进一步包括:刷新所述第一硬件转换后备缓冲器。
15.如权利要求14所述的方法,进一步包括:更新所述修改的客户表记录以指示所述第一硬件转换后备缓冲器不含有到客户页面表的可写参考。
16.—种方法,包括: 将修改的客户表记录中的客户页面表与多处理器系统中的对应阴影页面表同步,包含:将到所有阴影页面表中的所述客户页面表的所有可写参考改变成只读;以及 清除第一处理器的第一硬件转换后备缓冲器中到所述客户页面表的参考。
17.如权利要求16所述的方法,进一步包括: 确定所述客户页面表包含未处理的条目; 确定所述未处理的条目与所述阴影页面表中的对应条目不同步;以及 使所述阴影页面表中的所述对应条目无效。
18.如权利要求16所述的方法,进一步包括:更新所述修改的客户表记录以指示所述第一硬件转换后备缓冲器不包含到所述客户页面表的可写参考。
19.如权利要求18所述的方法,进一步包括: 确定第二处理器中的第二硬件转换后备缓冲器是否不含有到所述客户页面表的可写参考;以及 从所述修改的客户表记录中移除所述客户页面表的记录。
20.—种系统,包括: 第一处理器,具有用于存储阴影页面表层级的第一工作组的虚拟到物理地址转换的第一硬件转换后备缓冲器;以及 第二处理器,具有用于存储阴影页面表层级的第二工作组的虚拟到物理地址转换的第二硬件转换后备缓冲器, 其中保持修改的客户页面表记录以便将每个修改的客户页面表与所述第一工作组和所述第二工作组中的对应阴影页面表同步,其中对于每个修改的客户页面表,所述第一物理转换后备缓冲器和所述第二转换后备缓冲器中的哪个含有到所述修改的客户页面表的可写参考的指示。
【文档编号】G06F9/52GK104081346SQ201280069252
【公开日】2014年10月1日 申请日期:2012年2月7日 优先权日:2012年2月7日
【发明者】A.罗本科, A.安德森 申请人:英特尔公司