专利名称:用于具有定向i/o的虚拟机的热交换有源存储器的制作方法
技术领域:
本发明的实施例一般涉及系统存储器管理,并且更具体地涉及指派到虚拟机的系统存储器的管理。
背景技术:
包括虚拟机(VM)的系统允许共享下层(underlying)物理机器及其资源。提供到 VM的虚拟化的软件层称作虚拟机监视器(VMM)或管理器。VMM充当VM的主机。VMM为VM 上执行的系统软件(例如操作系统软件和应用软件)提供物理机器的抽象。VMM还能够保留对处理器资源、物理存储器、中断管理和数据I/O的选择性控制。I/O虚拟化描述了单个物理I/O单元由不止一个VM来共享的能力。现有技术解决方案经由软件模块来实现I/O虚拟化。因此,到VM存储器页面的所有访问都从CPU发起, 并且由此引起显著处理开销。此外,这种类型的虚拟化不允许指派到VM的装置直接经由直接存储器访问(DMA)执行存储器操作。其它现有技术解决方案经由又称作定向I/O的硬件逻辑来实现I/O虚拟化。在这些解决方案中,装置的DMA请求被限制到(通过VMM)指派到拥有该装置的VM的存储器域和存储器区。这些硬件现有技术解决方案之一可描述为DMA重新映射硬件一即,定位在具有DMA能力的外围设备与系统的物理存储器之间的硬件单元。未修改的驱动程序可在VM 中无缝运行,VM将对指派到该VM的I/O资源具有完全的特权;但是,由于DMA保护在芯片组级实施,因此对于指派到该VM的I/O装置,阻止到虚拟机自有的物理页面外部的物理存储器的访问。一些高级计算机服务器存储器特征要求“热拆卸”或“热交换”存储器的能力(例如在使用DIMM时将其拆卸)。热交换存储器包括将(至少)一个使用中的页面的内容移到另一个页面,而不打断正进行的执行。如果I/O虚拟化经由软件模块来完成,则热交换存储器在现有技术中是可能的。 在这种情况下,在页面内容正在被交换时,VMM冻结各自的VM以阻止竞争访问。在建立新映射后,将VM解冻,并且随后的存储器访问将重新定向到新映射的页面。但是,没有热交换具有允许定向I/O的I/O虚拟化的VM的页面的能力。这部分地归因于VMM能够冻结VM执行、但对指派到所述VM的装置没有控制力的事实。这些指派的装置能够在任何时间,甚至当那个页面的热交换正在进行时,向VM页面发出DMA请求。这种竞争情况是危险的,因为它可引起旧页面与新页面之间的不一致。
发明内容
按照本发明的一个方面,提供一种系统,包括存储器;处理器;经由所述处理器来执行的虚拟机(VM);
4
虚拟机监视器(VMM),所述虚拟机监视器经由所述处理器来执行,以控制所述VM对所述存储器和所述处理器的访问;发出热页面交换(HPS)请求,所述HPS请求包括由所述VM和指派给所述VM的装置中的至少一个使用的虚拟地址、映射到所述虚拟地址的第一存储器页面位置、以及第二存储器页面位置,以及在所述HPS请求完成以前,阻塞所述VM到所述虚拟地址的访问;以及DMA重新映射单元(DRU),可操作地耦合到所述处理器和所述存储器,以接收和校验所述HPS请求,将所述第一存储器页面位置的内容复制到所述第二存储器页面位置;将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位置,以及阻塞到正被重新映射的存储器的地址的DMA请求。按照本发明的另一方面,提供一种方法,包括从虚拟机监视器(VMM)接收和校验热页面交换(HPQ请求,所述HPS请求包括由至少一个虚拟机(VM)使用的虚拟地址、映射到所述虚拟地址的第一存储器页面位置、以及
第二存储器页面位置;在所述HPS请求完成以前阻塞到正被重新映射的存储器的地址的DMA请求;将所述第一存储器页面位置的内容复制到所述第二存储器页面位置;以及将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位置。按照本发明的另一方面,提供一种设备,包括第一逻辑,所述第一逻辑接收和校验热页面交换(HPQ,所述HPS请求包括虚拟地址、映射到由至少一个虚拟机(VM)使用的所述虚拟地址的第一存储器页面位置、以及第二存储器页面位置;装置接口,所述装置接口接收DMA请求,所述装置接口在所述HPS请求完成以前阻塞到正被重新映射的存储器的地址的DMA请求;以及第二逻辑,所述第二逻辑将所述第一存储器页面位置的内容复制到所述第二存储器页面位置,以及将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位置。
以下描述包括对附图的讨论,附图具有作为本发明实施例的实现示例给出的图解。应当作为示例而不是限定来理解附图。如本文所使用的,对一个或多个“实施例”的引用将被理解为描述本发明的至少一个实现中包含的具体特征、结构或特性。因此,本文中出现的诸如“在一个实施例中”或“在备选实施例中”的短语描述了本发明的各种实施例和实现,并且不一定都指同一个实施例。然而,它们也并不一定是相互排斥的。图1是利用本发明实施例的系统的框图。图2是DMA重新映射单元的实施例的框图。图3是根据本发明实施例处理热页面交换请求的流程图。
图4示出使热页面交换操作期间需要阻塞的DMA请求的数量为最少的示例过程。下面是某些细节和实现的描述,包括可描绘下文所述实施例的部分或全部的附图的描述,以及讨论本文呈现的发明概念的其它潜在实施例或实现。下面提供本发明的实施例的概述,之后是参照附图的更详细描述。
具体实施例方式本发明的实施例涉及用于具有定向I/O的VM的增强DMA功能性。本发明的实施例虑及以无竞争和有效率的方式进行的有源存储器单元(例如,页面)的热交换。本发明的示例实施例描述处于芯片组级的增强DMA重新映射单元(DRU)。增强DRU 单元与VMM结合工作。DRU包括接受来自VMM的页面交换请求的接口。一旦接收到请求, DRU执行页面交换,同时(至少部分地)阻塞定向到待交换页面的DMA请求。本发明的实施例可包含在利用要求存储器热交换能力的特征的系统和服务器中。 所述特征包括例如可靠性、可用性和可服务性(RAS),诸如离线状态的存储器低功率模式 (其中切断到DIMM的电力以省电),以及当可用存储器资源改变时将跨节点VM页面重新组织为单个节点的不均勻存储器访问(NUMA)节点亲合力。这些特征要求将一个使用中的页面的内容热交换到另一个页面而不打断正进行的执行的能力。图1是利用本发明实施例的系统的框图。系统100可包含在系统服务器、台式计算机装置、移动计算机装置或者利用处理器和系统存储器的任何其它任意装置中。如图1的示例实施例中所示,系统100包括系统存储器110、处理器120、系统装置 130-139(例如,外部盘驱动器、I/O装置)、以及存储器控制器150。在这个实施例中,装置 130-139是具有DMA能力的装置。系统100可进一步包括VMM 170,以便管理VM 160,包括向VM 160分配存储器的部分(即,页面)。VM 160可包含运行各种应用的客户操作系统(即,客户软件)。VM 160 和VMM 170都可经由处理器120执行。VMM 170可进一步管理装置130-139,并且向VM 160指派所述装置中的至少一个。 在这个示例实施例中,将装置130、131和139指派给VM 160。要理解,在备选实施例中,系统可包括多个VM,并且可以任何组合将系统装置指派给各VM。提供客户软件的存储器地址范围,即客户物理地址(GPA)范围,可能与机器物理地址(MPA)范围不同。具有DMA能力的装置130、131和139使用MPA向/从物理存储器位置传递数据。但是,在这个实施例中,VM 160的客户软件(即,客户OS)包括控制装置130、 131和139的装置驱动程序,并且因而提供GPA范围而不是MPA范围。DRU 155用来进行所要求的地址转换。由于GPA由VMM 170提供,所以GPA范围必须转换成MPA范围。在一个实施例中,VMM170采用GPA到MPA转换信息对DRU编程,使得DMA重新映射硬件能够执行必要的转换。这个转换信息在本文中称作DMA重新映射页面表(DRPT)。使用DRPT,来自装置的数据这时能够直接传递到适当的存储器地址,而不是经过中间软件仿真层。存储器110可包括存储器的若干单元,例如多个DMM。“热拆卸”或“热交换”存储器的能力包含在DIMM使用中将其拆卸。热交换存储器包含例如将(要掉电/移动的) 第一 DMM中包括的(至少)一个使用中的页面的内容移到(将不会掉电/移动的)第二DIMM中包括的另一个页面,而不打断正进行的执行。以这种方式交换页面的操作在本文中称作热页面交换(HPS)。在页面交换期间,重要的是没有对该页面进行访问。VMM 170能够冻结VM 160的执行,因而阻止VM 160访问待交换页面。VMM170备选地能够只冻结到待交换页面的VM访问。然而,关于各装置可发出的DMA请求,VMM 170对装置130、131和139没有控制力。有可能修改用于装置130、131和139中的每个的VM 160中的装置驱动程序,以便抢先冻结指派的装置。在开始页面交换操作之前,VMM 170可经由VM 160向修改的装置驱动程序发送冻结请求。修改的装置驱动程序然后可用信号通知开始热交换操作是安全的。 一旦热交换完成,则VMM 170可向修改的装置驱动程序发送解冻请求。但是,这个解决方案由于若干原因而不理想。冻结/解冻(即,停止/重新开始)装置的命令是费时的操作。要求不确定的等待时间以确保处理完用于各装置的所有正进行的DMA请求,并且要求进一步的时间以等待各装置进入静止状态。这能够进一步对I/O吞吐量发生影响并影响系统性能。这个附加等待时间可进一步阻止硬件优化。更重要的是,由于公知的维护和分发考虑,避免对现有驱动程序的修改是更好的。因此,本发明的实施例包括增强DRU单元155,以便从装置130-139接收DMA请求并向存储器控制器150转发所述请求。DRU单元155还处理由VMM 170发出的热页面交换请求。通过从VMM170去除热交换执行并因而使VMM不再必须消除竞争情况,装置DMA请求以更有效方式受控。图2是根据本发明的实施例的DRU 155的框图。DRU 155包括热页面交换命令接口(HPSCI) 200,系统VMM能够通过HPSCI 200把HPS请求通知给DRU。由VMM生成的HPS请求可包括指示待更新的目标客户页面帧号(GPFN)、由目标 GPFN映射的原始机器页面帧号(MPFN)、将由目标GPFN映射的新MPFN的信息,以及为HPS 请求指示错误和完成信息的状态字段。GPFN可备选地称作“虚拟地址”。要理解,原始MPFN 和新MPFN包含在系统存储器110中。HPSCI 200对HPS请求执行各种有效性检查。例如,HPSCI 200可确保目标GPFN 的映射与原始MPFN —致,或者所请求的交换是否因为没有将存储器指派给发出VM而无法完成。在HPS请求生效后,热页面交换代理(HPSA) 210可执行页面交换。HPSA 210从原始MPFN读出内容,然后写到新MPFN。在一个实施例中,这些存储器访问请求与正进行的装置DMA请求交织。一旦存储器复制结束,HPSA 210然后改变DRPT,以便反映目标GPFN到新 MPFN的最近映射。HPSA 210可进一步使内部DMA重新映射TLB无效,以避免执行HPS之后陈旧的映射条目。DRU 155还包括接受和满足用于系统装置的DMA请求的装置接口 220。因此,DRU 155对装置DMA请求具有控制力(与VMM相反),并且能够在必要时阻塞到正被交换的页面的DMA请求。上述HPSCI可以同步或异步方式植入。图3是根据本发明实施例的HPSCI处理 HPS请求的流程图。本文所示的流程图提供各种过程动作的序列的示例。虽然以特定序列或顺序示出,但是除非载明,否则能够修改动作的顺序。因此,所示实现应当仅理解为示例,
7所示过程能够以不同顺序执行,并且一些动作可并行执行。另外,在本发明的各种实施例中,能够省略一个或多个动作;因此,并非在每一个实现中都要求全部动作。其它过程流是可能的。过程300开始于VMM接收命令以执行HPS请求,310。这个HPS请求可以是向VMM 发出的处理器指令。VMM响应于接收所述命令而锁定DRPT,以免其它命令修改DRPT,320。VMM将诸如目标GPFN、原始MPFN和新MPFN的必要热交换信息编译到HPS请求中, 330。VMM向DRU的HPSCI发送HPS请求,同时还阻塞VM访问相应的GPFN,340。在这个实施例中,还阻塞VMM接收其它HPS请求。然后,HPSCI将校验HPS请求并且将其转发给HPSA,350。在HPS操作期间应当阻塞到原始MPFN的访问。如上所述,阻塞VM访问原始MPFN(经由相应的GPFN)。还必须阻塞装置经由DMA请求来访问原始MPFN。这种阻塞经由DRU来做到,360。然后,通过将原始MPFN的内容交换到新MPFN来满足HPS请求,365。HPSA还修改 DRPT,并清洗DMA重新映射TLB 370。HPSA通知HPSCI已经满足了该HPS请求,并且HPSCI 将这个通知进一步送到VMM,380。DRU不阻塞来自系统装置的DMA请求,390。VMM不阻塞 VM,并且对DRPT解锁,395。在备选实施例中,HPSCI以异步方式来实现。在这个实施例中,在热交换操作期间没有阻塞VMM接收其它HPS请求。在这个实施例中,VMM能够继续将其它HPS请求排队,并且HPSCI可并行处理这些排队的请求。在一个实施例中,VMM设置可服务的并行请求的数目的阈值。在上述示例实施例中,阻止装置在主机交换过程中发出DMA请求。这些DMA请求可保存在DRU处或各装置上的某个内部缓冲区中,并且可仅当重新建立新映射时处理这些 DMA请求。如果在热交换操作期间发出太多DMA请求,则这个实施例具有缓冲区溢出的风险,并且整体性能可能受到负面影响。图4示出使HPS操作期间被阻塞的DMA请求的数量为最少的示例过程。如上所述, 为了热交换使用中的页面,旧页面的全部内容必须复制到新页面。这个复制过程必须确保新页面包括最近的内容。在一些系统中,即使阻塞了拥有系统装置的VM,仍然存在从这些装置发出的DMA 访问(即,写操作)。此外,虽然客户软件通常以页面为单位(即,4Kb)来管理存储器,但是存储器控制器经常以高速缓存行为单位(即,64字节)来接受到存储器DIMM的突发访问。因此,将旧页面复制到新页面引起数十个“高速缓存行”副本-例如,如果将热交换一个页面,则存在对那个操作出现的64个“高速缓存行”大小的写。虽然在整个页面复制结束以前阻塞装置DMA请求更容易,但是它添加了等待时间和装置内部缓冲区溢出的风险。过程400示出以交织方式处理HPS操作和DMA请求,因此允许装置在大多数情况下访问交换中的页面。在这个实施例中,内部计数器用来在HPS操作期间跟踪哪个“高速缓存行”当前正在被复制。因此,当DRU接收装置DMA请求时410,DRU确定与内部计数器关联的所请求的存储器的位置,420。如果DMA请求是针对比内部计数器更小的“高速缓存行”,430,则这指示存储器的这个特定部分已经被交换,因此DMA目标地址将改变并且改为针对新的“高速缓存行”位置(即,新MFPN),435。然后,允许更新的DMA请求,445。如果DMA请求是针对比内部计数器更大的“高速缓存行”,440,则这指示存储器的这个特定部分尚未被交换,因此允许到原始“高速缓存行”位置(即,原始MFPN)的DMA请求仍然是安全的,445。如果DMA请求是针对与内部计数器相等的“高速缓存行”,则这指示存储器的这个特定部分当前正被交换,并且因此必须阻塞这个DMA请求,以防止竞争情况或存储器不一致,450。在一个实施例中,DRU单元等待当前“高速缓存行”被交换,460,然后更新到新 MPFN的(这时不阻塞的)DMA请求的目标地址(即,操作435)。然后允许更新的DMA请求, 445。将理解的是,图4的示例过程减少了在HPS操作期间需要阻塞的DMA请求的数目。本文所述的以上称作过程、服务器或工具的各种组件可以是用于执行所描述功能的部件。本文所描述的各个组件包括软件或硬件或者它们的组合。组件能够实现为软件模块、硬件模块、特殊目的硬件(例如专用硬件、ASIC、DSP等)、嵌入式控制器、硬连线电路等等。软件内容(例如数据、指令、配置)可经由包括计算机可读存储介质的制造产品来提供, 计算机可读存储介质提供表示能够被执行的指令的内容。内容可使计算机执行本文所描述的各种功能/操作。计算机可读存储介质包括以计算机(例如计算装置、电子系统等)可访问形式来提供(即,存储和/或传送)信息的任何机制,诸如可记录/不可记录介质(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存装置等)。内容可以是直接可执行的(“目标”或者“可执行”形式)、源代码或差代码(“增量”或“补丁” 代码)。计算机可读存储介质也可包括能够从其中下载内容的存储装置或数据库。计算机可读介质也可包括在销售或交付时使内容存储于其中的装置或产品。因此,交付具有已存储内容的装置或者提供用于通过通信介质下载的内容可理解为提供具有本文所描述的这种内容的制造产品。
权利要求
1.一种系统,包括 存储器;处理器;经由所述处理器来执行的虚拟机(VM);虚拟机监视器(VMM),所述虚拟机监视器经由所述处理器来执行,以 控制所述VM对所述存储器和所述处理器的访问;发出热页面交换(HPS)请求,所述HPS请求包括由所述VM和指派给所述VM的装置中的至少一个使用的虚拟地址、映射到所述虚拟地址的第一存储器页面位置、以及第二存储器页面位置,以及在所述HPS请求完成以前,阻塞所述VM到所述虚拟地址的访问;以及 DMA重新映射单元(DRU),可操作地耦合到所述处理器和所述存储器,以 接收和校验所述HPS请求,将所述第一存储器页面位置的内容复制到所述第二存储器页面位置; 将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位置,以及阻塞到正被重新映射的存储器的地址的DMA请求。
2.如权利要求1所述的系统,所述DRU还在所述HPS请求被满足以前阻塞所有DMA请求。
3.如权利要求1所述的系统,所述DRU还在所述HPS请求被满足以前阻塞到所述第一存储器页面位置的所有DMA请求。
4.如权利要求1所述的系统,所述DRU还如果DMA请求的存储器的地址已经被重新映射,则基于所述第二存储器页面位置满足 DMA请求;以及如果DMA请求的存储器的地址还必须被重新映射,则基于所述第一存储器页面位置满足DMA请求。
5.如权利要求1所述的系统,所述VMM还在所述HPS请求完成以前阻塞附加HPS请求。
6.如权利要求1所述的系统,所述VMM还将附加HPS请求排队,所述DRU与所述HPS请求并行地处理附加HPS请求。
7.如权利要求1所述的系统,所述HPS请求使能以下操作中的至少一个 切断到所述第一存储器页面位置的电力,以及所述第一存储器页面位置的存储器重新组织。
8.一种方法,包括从虚拟机监视器(VMM)接收和校验热页面交换(HPQ请求,所述HPS请求包括由至少一个虚拟机(VM)使用的虚拟地址、映射到所述虚拟地址的第一存储器页面位置、以及第二存储器页面位置;在所述HPS请求完成以前阻塞到正被重新映射的存储器的地址的DMA请求; 将所述第一存储器页面位置的内容复制到所述第二存储器页面位置;以及将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位置。
9.如权利要求8所述的方法,还包括在所述HPS请求被满足以前阻塞所有DMA请求。
10.如权利要求8所述的方法,还包括如果DMA请求的存储器的地址已经被重新映射,则基于所述第二存储器页面位置满足 DMA请求;以及如果DMA请求的存储器的地址还必须被重新映射,则基于所述第一存储器页面位置满足DMA请求。
11.如权利要求8所述的方法,还包括在所述HPS请求完成以前阻塞附加HPS请求。
12.如权利要求8所述的方法,还包括与所述HPS请求并行地处理附加HPS请求。
13.如权利要求8所述的方法,还包括切断到所述第一存储器页面位置的电力。
14.如权利要求8所述的方法,还包括重新组织所述第一存储器页面位置的存储器。
15.一种设备,包括第一逻辑,所述第一逻辑接收和校验热页面交换(HPQ,所述HPS请求包括虚拟地址、 映射到由至少一个虚拟机(VM)使用的所述虚拟地址的第一存储器页面位置、以及第二存储器页面位置;装置接口,所述装置接口接收DMA请求,所述装置接口在所述HPS请求完成以前阻塞到正被重新映射的存储器的地址的DMA请求;以及第二逻辑,所述第二逻辑将所述第一存储器页面位置的内容复制到所述第二存储器页面位置,以及将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位置。
16.如权利要求15所述的设备,所述装置接口还在所述HPS请求被满足以前阻塞所有 DMA请求。
17.如权利要求15所述的设备,所述装置接口还如果DMA请求的存储器的地址已经被重新映射,则基于所述第二存储器页面位置满足 DMA请求;以及如果DMA请求的存储器的地址还必须被重新映射,则基于所述第一存储器页面位置满足DMA请求。
18.如权利要求15所述的设备,所述第一逻辑还与所述HPS请求并行地处理附加HPS请求。
19.如权利要求15所述的设备,所述HPS请求使能以下操作中的至少一个 切断到所述第一存储器页面位置的电力,以及所述第一存储器页面位置的存储器重新组织。
全文摘要
本发明名称为“用于具有定向I/O的虚拟机的热交换有源存储器”。本发明的实施例描述一种从虚拟机监视器(VMM)接收热页面交换(HPS)请求的DMA重新映射单元(DRU),该HPS请求包括由至少一个虚拟机(VM)使用的、映射到第一存储器页面位置的虚拟地址,以及第二存储器页面位置。DRU还在HPS请求被满足以前,阻塞到正被重新映射的存储器的地址的DMA请求,将第一存储器页面位置的内容复制到第二存储器页面位置,以及将虚拟地址从第一存储器页面位置重新映射到第二存储器页面位置。
文档编号G06F13/28GK102346683SQ201110089878
公开日2012年2月8日 申请日期2011年3月31日 优先权日2010年3月31日
发明者K·田 申请人:英特尔公司