用于具有定向 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) ;虚拟机监视器 (VMM), 所述虚拟机监视器经由所述处理器来执行, 以:
控制所述 VM 对所述存储器和所述处理器的访问 ;
发出热页面交换 (HPS) 请求, 所述 HPS 请求包括由所述 VM 和指派给所述 VM 的装 置中的至少一个使用的虚拟地址、 映射到所述虚拟地址的第一存储器页面位置、 以及第二 存储器页面位置, 以及
在所述 HPS 请求完成以前, 阻塞所述 VM 到所述虚拟地址的访问 ; 以及
DMA 重新映射单元 (DRU), 可操作地耦合到所述处理器和所述存储器, 以:
接收和校验所述 HPS 请求,
将所述第一存储器页面位置的内容复制到所述第二存储器页面位置 ;
将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位 置, 以及
阻塞到正被重新映射的存储器的地址的 DMA 请求。
按照本发明的另一方面, 提供一种方法, 包括 :
从虚拟机监视器 (VMM) 接收和校验热页面交换 (HPS) 请求, 所述 HPS 请求包括由 至少一个虚拟机 (VM) 使用的虚拟地址、 映射到所述虚拟地址的第一存储器页面位置、 以及 第二存储器页面位置 ;
在所述 HPS 请求完成以前阻塞到正被重新映射的存储器的地址的 DMA 请求 ;
将所述第一存储器页面位置的内容复制到所述第二存储器页面位置 ; 以及
将所述虚拟地址从所述第一存储器页面位置重新映射到所述第二存储器页面位 置。
按照本发明的另一方面, 提供一种设备, 包括 :
第一逻辑, 所述第一逻辑接收和校验热页面交换 (HPS), 所述 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 可包括存储器的若干单元, 例如多个 DIMM。 “热拆卸” 或 “热交换” 存 储器的能力包含在 DIMM 使用中将其拆卸。热交换存储器包含例如将 ( 要掉电 / 移动的 ) 第一 DIMM 中包括的 ( 至少 ) 一个使用中的页面的内容移到 ( 将不会掉电 / 移动的 ) 第二
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 请求的流程图。本文所示的流程图提供各种过程动作的序列的示例。虽然以特定序列 或顺序示出, 但是除非载明, 否则能够修改动作的顺序。 因此, 所示实现应当仅理解为示例,
所示过程能够以不同顺序执行, 并且一些动作可并行执行。另外, 在本发明的各种实施例 中, 能够省略一个或多个动作 ; 因此, 并非在每一个实现中都要求全部动作。其它过程流是 可能的。
过程 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)、 磁盘存储介质、 光存储介质、 闪存装置等 )。 内容 可以是直接可执行的 (“目标” 或者 “可执行” 形式 )、 源代码或差代码 (“增量” 或 “补丁” 代码 )。计算机可读存储介质也可包括能够从其中下载内容的存储装置或数据库。计算机 可读介质也可包括在销售或交付时使内容存储于其中的装置或产品。因此, 交付具有已存 储内容的装置或者提供用于通过通信介质下载的内容可理解为提供具有本文所描述的这 种内容的制造产品。