重新映射引擎的有效利用 【技术领域】
本发明涉及在实现虚拟化的计算机平台中重新映射引擎转换。
背景技术
许多计算机平台使用虚拟化来更有效地管理资源和对资源区分优先级。输入/输出(I/O)设备也可从虚拟化中受益。Intel公司已经发布了用于直接I/O的虚拟化技术(VT-d)规范(2008年9月,修订版1.0),其中描述了在虚拟化的环境中利用直接存储器存取(DMA)使能的I/O设备的实现细节。
为了有效地将虚拟地址转换为接收自I/O设备的DMA请求和中断请求中的物理存储器地址,已经开发出执行转换的逻辑,称为重新映射引擎。给定的计算机平台可以有若干重新映射引擎。VT-d规范允许给定的I/O设备,诸如平台部件互联(PCI)或PCI-Express设备在单个重新映射引擎的范围内。设备到重新映射引擎的这种映射可在硬件设计时实现,并且是计算机平台的设计的特性。
映射I/O设备到单个重新映射引擎使得对于虚拟机监控器(VMM)或操作系统(OS)来说是不灵活的,并且可能导致性能下降。
【发明内容】
按照本发明的一个方面,提供一种设备,包括:重新映射引擎重新分配逻辑,用于监测正在由第一重新映射引擎转换的第一业务量;以及当所述第一业务量达到第一重新映射引擎业务量阈值级别时,将所述第一业务量的一部分转移给第二重新映射引擎来转换。
按照本发明的另一方面,提供一种系统,包括:第一设备和第二设备;第一重新映射引擎和第二重新映射引擎,每个重新映射引擎都耦合至所述第一设备和第二设备;以及重新映射引擎重新分配逻辑,耦合至所述第一重新映射引擎和第二重新映射引擎,所述重新映射引擎重新分配逻辑用于监测正在由第一重新映射引擎转换的第一业务量;以及当所述第一业务量达到第一重新映射引擎业务量阈值级别时,将所述第一业务量的一部分转移给第二重新映射引擎来转换。
按照本发明的又一方面,提供一种方法,包括:监测正在由第一重新映射引擎转换的第一业务量;以及当所述第一业务量达到第一重新映射引擎业务量阈值级别时,将所述第一业务量的一部分转移给第二重新映射引擎来转换。
【附图说明】
通过例子来说明本发明,本发明不限于附图,附图中类似的符号表明类似的部件,并且其中:
图1示出了重新分配重新映射引擎以在可用的重新映射引擎之间平衡总体重新映射负载的系统和设备的一个实施例。
图2是将I/O设备从一个重新映射引擎迁移到另一个重新映射引擎的过程的一个实施例的流程图。
【具体实施方式】
公开了重新分配重新映射引擎以在可用的重新映射引擎之间平衡总体重新映射负载的设备、系统和方法的实施例。在许多情况中,由于特定的所映射的I/O设备(通过DMA或中断请求)所请求的高转换量,计算机平台上的初始重新映射引擎可能变得压力较大。计算机平台内的逻辑可以注意到这种压力大的状况,并且找到当前没有压力的第二重新映射引擎。该逻辑可以将I/O设备迁移到没有压力的第二重新映射引擎以减轻初始重新映射引擎的负担。一旦迁移完成,所有需要转换的来自I/O设备的后续DMA和中断请求由第二重新映射引擎来转换。
以下描述及权利要求中提到所公开的技术的“一个实施例”或“实施例”意味着,结合实施例来描述的特定的特征、结构或特性包括在所公开的技术的至少一个实施例中。因此,在整个说明书中各个地方出现的用语“在一个实施例中”并不一定都指的是同一实施例。
在以下描述及权利要求中,术语“包括”和“包含”连同它们的派生词都可能被使用,并且要作为彼此的同义词来对待。另外,在以下描述及权利要求中,术语“耦合”和“连接”以及它们的派生词可能被使用。应当理解,这些术语并不要作为彼此的同义词。相反地,在具体实施例中,“连接”可用于表明两个或更多部件相互直接物理接触或电接触。“耦合”可意味着两个或更多部件直接物理接触或电接触。但是,“耦合”也可意味着两个或更多部件不是相互直接接触,但是仍然互相协作或互相影响。
图1示出重新分配重新映射引擎以在可用的重新映射引擎之间平衡总体重新映射负载的系统和设备的一个实施例。重新映射重新分配系统可以是包括一个或多个处理器的计算机平台(即计算机系统)地一部分。每个处理器可以具有一个或多个核。在不同的实施例中,处理器可以是Intel品牌的微处理器或其它品牌的微处理器。处理器并未在图1中示出。
系统包括物理系统存储器100。在一些实施例中,系统存储器100可以是一种动态随机存取存储器(DRAM)。例如,系统存储器可以是一种双倍数据速率(DDR)同步DRAM。在其它实施例中,系统存储器可以是如闪存之类的其它类型的存储器。
系统包括直接存储器存取(DMA)和中断重新映射逻辑102。诸如DMA和中断重新映射逻辑102之类的虚拟化重新映射逻辑,通过将诸如I/O设备1(104)和I/O设备2(106)之类的输入/输出(I/O)设备的DMA限制到预先分配的物理存储器区域,诸如用于I/O设备1(104)的域A(108)和用于I/O设备2(106)的域B(110),来保护系统存储器100的物理区域。重新映射逻辑也同样将I/O设备产生的中断限制到这些区域。DMA和中断重新映射逻辑102可位于系统中的处理器中、系统中的I/O复合体中或其它地方。I/O复合体可以是计算机系统内的与一个或多个处理器分离的集成电路。I/O复合体可包括一个或多个I/O主机控制器以促进处理器/存储器与系统中的一个或多个I/O设备,诸如I/O设备1(104)和I/O设备2(106)之间的信息交换。虽然在特定实施例中,DMA和中断重新映射逻辑102可以集成到I/O复合体中,但是I/O复合体的其它部分未在图1中示出。在一些实施例中,诸如在许多芯片上系统的实施例中,I/O复合体可以集成到处理器中,因此,在这些实施例中,如果DMA和中断重新映射逻辑102集成到I/O复合体中,则也会因此集成到处理器中。
在一些允许在计算机系统内的虚拟化环境的实施例中,DMA和中断重新映射逻辑102可通过虚拟机监控器(VMM)来编程。在其它实施例中,DMA和中断重新映射逻辑102可通过操作系统(OS)来编程。
在许多实施例中,I/O设备1(104)和I/O设备2(106)是可DMA的并且可中断的设备。在这些实施例中,DMA和中断重新映射逻辑102将来自I/O设备的每个到来的DMA请求和中断的地址转换为系统存储器100中正确的物理存储器地址。在许多实施例中,DMA和中断重新映射逻辑102基于VMM或OS提供的信息来检查是否许可访问转换的物理地址。
DMA和中断重新映射逻辑102使VMM或OS能创建多个DMA保护域,诸如用于I/O设备1(104)的域A(108)和用于I/O设备2(106)的域B(110)。每个保护域是包含主机物理存储器的子集的隔离的环境。DMA和中断重新映射逻辑102使VMM或OS能把一个或多个I/O设备分配到保护域。当任何给定的I/O设备试图获得对系统存储器100中的某个存储器位置的访问时,DMA和中断重新映射逻辑102查询重新映射页面表112以确定是否许可该I/O设备对该特定保护域的访问。如果I/O设备试图访问其被允许访问的范围以外的范围,DMA和中断重新映射逻辑102阻止访问并向VMM或OS报告错误。
在许多实施例中,存在两个或更多重新映射引擎,诸如集成在DMA和中断重新映射逻辑102中的重新映射引擎1(114)和重新映射引擎2(116)。每个重新映射引擎包括处理来自一个或多个I/O设备的DMA请求和中断流的逻辑。重新映射引擎一般开始被分配给特定的I/O设备。例如,重新映射引擎1(114)可被分配为处理从I/O设备1(104)接收的对域A(108)的DMA请求和中断,重新映射引擎2(116)可被分配为处理从I/O设备2(106)接收的对域B(110)的DMA请求和中断。
虽然最初可分配重新映射引擎为特定I/O设备将DMA请求和中断转换到物理地址,但是在许多实施例中,重新映射重新分配逻辑118可因所观察的工作量而动态地修改对于每个重新映射引擎的这些初始分配。在许多实施例中,DMA和中断重新映射逻辑102以及重新映射重新分配逻辑118都被用在利用了I/O虚拟化技术的计算机平台中。例如,I/O设备1(104)可能产生非常繁重的DMA请求工作量,而I/O设备2(106)处于休眠状态。来自I/O设备1(104)的繁重的DMA请求工作量可能使重新映射引擎1(114)的容量过载,这将导致对于来自I/O设备1(104)以及一个或多个也可能依赖于重新映射引擎1(114)的附加I/O设备(未图示)的请求的执行(即响应时间)的降级。在这个例子中,重新映射重新分配逻辑118可能注意到工作量的差异,并决定在重新映射引擎1(114)和另外的未使用的重新映射引擎2(116)之间平等地分配从I/O设备1(104)接收的DMA请求工作量。因此,重新映射引擎2(116)增加的容量将减轻对于重新映射引擎1(114)要求的工作量,并且可增加对于I/O设备1(104)的请求的响应度性能。
在另一例子中,可能刚好相反,其中,重新映射引擎2(116)因从I/O设备2(106)接收的DMA请求而过载,因此,重新映射重新分配逻辑118可将一部分接收到的工作分配给重新映射引擎1(114)。在又一例子中,初始分配到重新映射引擎1(114)的第三I/O设备(未图示)可能发送大量的中断业务量给重新映射引擎1(114)以进行转换。这个来自I/O设备3的中断业务量可能比来自I/O设备1和2组合的DMA和中断请求加起来的业务量还大。在这个例子中,重新映射重新分配逻辑118可以让重新映射引擎1(114)处理来自I/O设备3的即将到来的请求,但也可重新分配I/O设备1(104)给重新映射引擎2(116)。因此,重新映射引擎2(116)可能现在需要同时为I/O设备1和2转换即将到来的请求。
在许多DMA和中断业务量情况中,重新映射重新分配逻辑118可尝试将DMA请求从一个重新映射引擎重新分配给另一个重新映射引擎,以便在所有可用的重新映射引擎之中均衡接收到的工作量。在图1没有示出的许多实施例中,可存在包括总共不止两个重新映射引擎的重新映射引擎池。在这些实施例中,重新映射重新分配逻辑118可在池中的每个重新映射引擎之中再分配工作,以便在整个池之中公平地平衡DMA请求的总数。在一些实施例中,如果单个重新映射引擎、例如重新映射引擎1(114)正在执行所有的DMA请求工作,而工作量足够小以致于没有对该特定的重新映射引擎的容量造成负担,则重新映射重新分配逻辑118可以不重新分配一部分DMA请求工作量。因此,在一些实施例中,一般在给定的重新映射引擎的工作量已经达到重新映射引擎的请求的阈值级别时执行重新分配。再者,在许多实施例中,在利用I/O虚拟化技术的计算机平台中同时使用了DMA和中断重新映射逻辑102和重新映射重新分配逻辑118。
在许多实施例中,请求的阈值级别是在给定的时间周期中的请求的数量,它等于重新映射引擎在性能不下降时能够处理的极限。因为重新映射引擎接收请求的速率大于重新映射引擎能够转换请求的速率,DMA请求队列堵塞可能引起重新映射引擎性能的下降。重新映射重新分配逻辑118可利用多种不同方法其中之一来比较DMA请求的当前工作量与阈值级别。例如,在系统时钟周期中的请求比率可与阈值比率进行比较。监控逻辑可集成于重新映射重新分配逻辑118中,因为它接收来自I/O设备组的所有请求并分配每个请求给重新映射引擎。
在许多实施例中,DMA重新映射逻辑102为VMM或OS提供一个或多个控制寄存器,以启用或禁用重新映射重新分配逻辑118在重新映射引擎之间重新分配DMA请求工作量的能力。在许多实施例中,如果同一组I/O设备对于每一个重新映射引擎都是可用的,那么这些重新映射引擎可认为是等价的重新映射引擎。因此,一个重新映射引擎理论上能够为一组I/O设备执行DMA请求转换,而第二重新映射引擎是空闲的,相反也同样成立。如果I/O设备对于一个重新映射引擎是可访问的而对于另一个重新映射引擎却不是,就不可以认为这些重新映射引擎是等价的。等价的重新映射引擎允许重新映射重新分配逻辑118自由地将DMA请求工作量混合并与每一个等价的重新映射引擎相匹配。
当VMM或OS通过一个或多个控制寄存器使得重新映射引擎之间等价时,那么每一个重新映射引擎可以有效地使用同一组重新映射页面表112以及任何其它的重新映射相关的寄存器来参与DMA请求转换过程。在许多实施例中,一个或多个控制寄存器是位于系统存储器中的基于软件的寄存器,例如控制寄存器120A。在其它实施例中,一个或多个控制寄存器是物理上位于DMA重新映射逻辑102中的基于硬件的寄存器,例如控制寄存器120B。
在许多实施例中,DMA重新映射逻辑102可使用IntelVT-d规范中定义的对当前DRHD(DMA重新映射硬件单元定义)结构的扩展,向VMM或OS传达两个或更多重新映射引擎之间的等价关系。
每个重新映射引擎具有存储器中的DRHD结构。例如,DRHD结构可位于系统存储器100的重新映射页面表/结构112部分中。在其它实施例中,DRHD结构可位于系统存储器100内的另一位置中。每个重新映射引擎的DRHD结构包括等价于所讨论的重新映射引擎的重新映射引擎的阵列,此阵列称为“等价DRHD阵列”。此阵列是字段的集合并且定义在表1中。该阵列用于向VMM或OS传达这样的等价。必要时,要由VMM或OS来决定使用初始分配给给定I/O设备的重新映射引擎的备选重新映射引擎。
表1.等价DRHD阵列的结构布局。
等价阵列中的单元数量 间接指明这个总字段长度的16位字段 第一个等价单元的基地址 这是64位字段。请参见DRHD中的寄 存器基地址(VT-d规范的8.3节) 第n个等价单元的基地址 在第一字段中指明N
在一些实施例中,重新映射重新分配逻辑118可向VMM或OS报告每个重新映射引擎的DMA请求转换工作量,这将允许VMM或OS做出关于是否使能和利用备选重新映射引擎以减少初始重新映射引擎上的转换压力的决定。
DMA重新映射逻辑102也可传送关于与在重新映射引擎之间迁移重新映射页面表相关的每个重新映射引擎的能力的信息。具体地说,一旦VMM或OS做出将用于DMA和中断请求的映射条目从一个重新映射引擎迁移到另一个重新映射引擎的决定,则可能有基于软件的或基于硬件的页面表拷贝。
在一些实施例中,VMM或OS能够设置与新重新分配的I/O设备相关的页面表,然后将重新映射页面表从页面表的旧重新映射引擎存储器空间拷贝到页面表的新重新映射引擎存储器空间。在其它实施例中,DMA和中断重新映射逻辑102能够在重新映射引擎存储器空间之间默默地拷贝页面表。默默地拷贝这些页面表允许开销从VMM或OS软件级中移除,并且在较低硬件级完成。这可不必具有软件知识就能进行。
一旦页面表从旧重新映射引擎存储器空间拷贝(即迁移)到新重新映射引擎存储器空间,新的重新映射引擎是负责服务于来自所讨论的I/O设备的所有未来转换请求的重新映射引擎。旧的重新映射引擎不再负责该I/O设备,并且不再转换从该设备接收的DMA或中断请求。
图2是将I/O设备从一个重新映射引擎迁移到另一个重新映射引擎的过程的一个实施例的流程图。该过程由可以是硬件、软件或者硬件和软件这两者的组合的处理逻辑来执行。该过程从处理逻辑从I/O设备接收DMA或中断请求开始(处理块200)。
处理逻辑确定所分配以服务于请求的初始重新映射引擎是否在特定时间周期上已经达到它的请求的阈值级别(处理块202)。该确定可利用执行计数器、时间戳、算法和其它方法来确定该初始重新映射引擎当前是否有足够的转换请求,足以使引擎对每个请求的转换响应度恶化。
例如,VMM或OS能够直接地或通过重新映射重新分配逻辑108查询每个重新映射引擎上的重新映射转换压力的当前状态,轮询每个重新映射引擎。在另一个例子中,当重新映射引擎中的至少一个开始感到转换压力或对其转换资源的约束时,DMA和中断重新映射逻辑102可中断VMM或OS。在这两个例子中,DMA和中断重新映射逻辑102也可传送关于转换压力的确切性质的更详细的信息,包括引起转换压力的层级或确切的I/O设备。当确定是否将I/O设备的转换条目迁移到另一个等价的重新映射引擎时,VMM或OS可决定使用什么性能信息(如果有的话)。
返回到图2,如果没有达到请求的这个阈值级别,处理逻辑令初始重新映射引擎转换DMA或中断请求,并且该过程完成。
否则,如果已经达到请求的阈值级别,则处理逻辑确定一个或多个其它等价重新映射引擎中的哪一个是可用的,而且或者是当前未充分利用的,或者是根本没有使用的。这可包括确定在给定的后备重新映射引擎中是否有足够的额外容量以解决增加的设备业务量中涉及的增加的压力。
一旦发现可用的后备重新映射引擎,则处理逻辑将用于I/O设备的重新映射页面表从初始重新映射引擎迁移到后备重新映射引擎(处理块206)。一旦后备重新映射引擎已经接收到可用于重新映射的I/O设备的页面表,处理逻辑则将DMA或中断请求转给后备重新映射引擎(处理块208)并且该过程完成。
在许多实施例中,一旦处理逻辑已经核实了存在可用的等价重新映射引擎,则处理逻辑可对在硬件中的控制寄存器(图1,120B)编程以指示新的后备重新映射引擎应当被认为等价于初始重新映射引擎。
为了适应该寄存器编程,全局命令寄存器(当前定义于IntelVT-d规范中)中当前保留的字段可为此命令(例如称为使能等价重新映射引擎的命令)重新定义。出于该目的,新的重新映射引擎可通过另一个8字节寄存器来标识。表2示出为核实重新映射引擎之间的等价而实现对全局命令和状态寄存器进行的修改的例子。
表2.用于重新映射引擎等价的全局命令和状态寄存器位。
全局命令寄存器位21 若设置为1,新的等价重新映射引擎已经 被标识 若设置为0,任何现有的等价关系被移除 全局状态寄存器位21 在硬件完成命令的操作后,该位设置为1
VMM或OS能够使得属于重新映射引擎A的范围的所有当前设备等价,或者仅使得当前处于重新映射引擎A的范围内的特定的一组设备等价。如果不能执行等价,DMA和中断重新映射逻辑102可通过错误寄存器传达这个错误状态。
因此,公开了重新分配重新映射引擎以在可用的重新映射引擎之间平衡总体重新映射负载的设备、系统和方法的实施例。这些实施例已经参考其具体的示例性实施例进行了描述。对于受益于本公开的人员显而易见的是,可对这些实施例进行各种修改和变化而不脱离本文描述的实施例的广义精神和范围。因此,说明书和附图应当视为说明性的而不是限制性的。