CN102804143A - 中断虚拟化 - Google Patents
中断虚拟化 Download PDFInfo
- Publication number
- CN102804143A CN102804143A CN2011800146794A CN201180014679A CN102804143A CN 102804143 A CN102804143 A CN 102804143A CN 2011800146794 A CN2011800146794 A CN 2011800146794A CN 201180014679 A CN201180014679 A CN 201180014679A CN 102804143 A CN102804143 A CN 102804143A
- Authority
- CN
- China
- Prior art keywords
- client
- processor
- interrupt
- interruption
- virtual processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
在实施方案中,设备中断管理器可配置成从分配给客户的设备接收中断。设备中断管理器可配置成发送定向到系统存储器中的存储器位置的操作以为客户内的虚拟处理器记录中断,其中中断被传送到目标虚拟处理器。在实施方案中,虚拟机管理器可配置成探测到对于当前不正在执行的虚拟处理器,中断由设备中断管理器记录。虚拟机管理器可配置成调度用于在硬件处理器上执行的虚拟处理器,或可响应于中断而优先考虑用于调度的虚拟处理器。
Description
背景
发明领域
本发明涉及处理器和虚拟化,且更具体地涉及将中断传送给虚拟机客户。
相关技术的描述
虚拟化为了各种不同的目的而用在计算机系统中。例如,虚拟化可用于执行“容器”中的特许软件以防止特许软件直接访问至少一些物理机状态和/或对至少一些物理机状态产生改变而不首先被允许通过控制虚拟机的虚拟机管理器(VMM)来这么做。这样的容器可防止“出错的(buggy)”或恶意软件在物理机上造成问题。此外,虚拟化可用于在同一物理机上同时执行两个或多个特许程序。可防止特许程序彼此干扰,因为对物理机的访问被控制。特许程序可包括操作系统,并且还可包括预期具有硬件的完全控制的其它软件,软件在该硬件上执行。在另一实例中,虚拟化可用于在与特许程序所预期的硬件不同的硬件上执行特许程序。
通常,处理器或计算机系统的虚拟化可包括给一个或多个特许程序提供对虚拟机(上面提到的容器)的访问,特许程序对该虚拟机有完全的控制,但物理机的控制由VMM保持。虚拟机可包括处理器(或多个处理器)、存储器、和特许程序预期在它正执行的机器中找到的各种外围设备。虚拟机元件可至少暂时由VMM分配给虚拟机的硬件实现,和/或可以用软件来仿真。每个特许程序(和在一些情况下相关的软件,例如在操作系统上执行的应用)可在本文称为客户。虚拟化可以用软件(例如,上面提到的VMM)实现,而没有在物理机中的任何特定的硬件虚拟化支持,VMM及其虚拟机在该物理机上执行。然而,如果一些硬件支持被提供,则虚拟化可被简化和/或实行更高的性能。
可对虚拟化产生的一个问题是中断传送的时延。如上所述,外围设备可被分配来由虚拟机使用(以充当在虚拟机中的虚拟外围设备)。这样的外围设备可产生由虚拟机中的软件处理的中断。在非虚拟化环境中,中断处理时延可能相对短。在虚拟化环境中,中断通常由VMM拦截、由VMM处理、并由VMM使用某种软件机制传送到目标虚拟机。然而,中断处理时延可以比未虚拟化的环境明显更大(例如大约更长100倍)。除了外围设备产生的中断(更简洁地,在本文是“设备中断”)以外,处理器还可产生处理器间中断(IPI)。在虚拟机中,IPI可在虚拟处理器(或vCPU)和虚拟机中的另一vCPU之间产生。vCPU是被定义为包括在给定客户的虚拟机中的处理器。在客户中有至少一个vCPU,但对多处理客户可以有多个vCPU。
概述
在一个实施方案中,设备中断管理器可配置成从分配给客户的设备(或从分配给客户的支持虚拟功能的设备)接收中断。设备中断管理器可配置成发送定向到系统存储器中的存储器位置的操作以为客户内的虚拟处理器记录中断,其中中断将被传送到目标虚拟处理器。在一个实现中,设备中断管理器可包括在输入/输出(I/O)存储器管理单元(IOMMU)中。
在实施方案中,虚拟机管理器可配置成探测由设备中断管理器为目前不正在执行的虚拟处理器记录的中断。虚拟机管理器可配置成调度用于在硬件处理器上执行的虚拟处理器,或可响应于中断而优先考虑用于调度的虚拟处理器。
附图简述
下面的详细描述参考现在被简要描述的附图。
图1是实现虚拟化的计算机系统的一个实施方案的方框图。
图2是图1所示的主机硬件的一个实施方案的方框图。
图3是示出被传送到客户的中断的一个实施方案的方框图。
图4是示出虚拟机控制块(VMCB)的一个实施方案的方框图。
图5是示出在客户APIC状态数据结构中的客户APIC状态条目的一个实施方案的方框图。
图6是示出为中断找出客户APIC状态条目的一个实施方案的方框图。
图7是示出的图2所示的响应于接收到来自设备的中断的设备中断管理器的一个实施方案的操作的流程图。
图8是示出图2所示的响应于虚拟机运行(VMRUN)指令的处理器的一个实施方案的操作的流程图。
图9是示出图2所示的响应于虚拟机退出(VMExit)的处理器的一个实施方案的操作的流程图。
图10是示出图2所示的响应于对在处理器上执行的客户探测到中断的处理器的一个实施方案的操作的流程图。
图11是示出图2所示的响应于一般指令的处理器的一个实施方案的操作的流程图。
图12是示出VMM初始化客户的一个实施方案的流程图。
图13是示出VMM在客户的执行期间提供客户支持的一个实施方案的流程图。
图14是示出VMM删除客户的一个实施方案的流程图。
图15是存储VMM和/或微代码的一个实施方案的计算机可读存储介质的一个实施方案的方框图。
图16是示出用于将客户中断控制消息传送到处理器中的客户中断控制单元的模型特定寄存器(MSR)的一个实施方案的方框图。
虽然本发明容许各种修改和可选的形式,但是其特定的实施方案作为例子在附图中示出,并将在本文被详细描述。然而应理解,附图和对其的详细描述并没有被规定为将本发明限制到所公开的特定形式,而相反,本发明涵盖落在如所附权利要求所限定的本发明的精神和范围内的所有修改、等效和可选形式。本文使用的标题仅为了组织目的,且并不意指用于限制本描述的范围。如在整个申请中使用的,词“可以”在许可的意义(即,意味着有可能)上而不是强制的意义(即,意味着必须)上使用。类似地,词“include(包括)”、“including(包括)”和“includes(包括)”意指包括但不限于。
各种单元、电路或其它部件可被描述为“配置成”执行一个或多个任务。在这样的背景下,“配置成”是通常意指“具有在操作期间执行一个或多个任务的电路”的结构的广泛陈述。因此,单元/电路/部件可配置成执行任务,即使单元/电路/部件当前不运行。通常,形成相应于“配置成”的结构的电路可包括实现操作的硬件电路。类似地,为了描述中的方便,各种单元/电路/部件可被描述为执行一个或多个任务。这样的描述应被解释为包括短语“配置成”。在一些情况下,配置成执行一个或多个任务的电路可包括可执行来实现操作的存储器存储程序指令。存储器可包括易失性存储器例如静态或动态随机存储器和/或非易失性存储器例如光盘或磁盘存储器、闪存、可编程只读存储器等。详述配置成执行一个或多个任务的单元/电流/部件并不明确地援引35U.S.C.§112,对该单元/电路/部件的第六段的解释。
实施方案的详细描述
在一个实施方案中,计算机系统包括VMM和在虚拟机中执行的一个或多个客户。外围设备可分配给客户(例如,以作为客户的虚拟机中的相应虚拟外围设备来操作)。可选地,外围设备可支持虚拟功能,且虚拟功能可分配给客户。外围设备可产生待传送给客户的设备中断。设备中断管理器可配置成探测到设备中断被定向在客户处(与被定向在VMM或VMM执行的主机软件(如果有的话)处的主机中断相反)。更具体地,设备中断管理器可配置成探测中断以在客户的虚拟机内的哪个vCPU为目标。设备中断管理器可配置成在客户中断控制器数据结构中记录中断。如果目标vCPU目前正在计算机系统中的硬件处理器上执行,那么硬件处理器可探测客户中断,并可重定向客户/vCPU以服务于中断。
例如,设备中断管理器可将消息发送到硬件处理器以指示新的客户中断已被记录在数据结构中。响应于该消息,硬件处理器可读取客户中断数据结构并优先考虑该中断与记录在数据结构中的其它未决的中断(如果有的话)。基于优先考虑,硬件处理器可传送中断或等待完成一个或多个较高优先级中断和/或较高优先级过程。在另一实例中,硬件处理器可配置成在相应的客户vCPU的执行期间监控客户中断数据结构(或在客户中断数据结构内的区域),以探测到中断已被记录在数据结构中。响应于探测到对数据结构的更新,硬件处理器可读取数据结构并传送中断,如上所述。
在一个实施方案中,硬件处理器可包括配置成为客户中断实现上述操作的处理器部分的客户中断控制单元。此外,客户中断控制单元可确保对vCPU的中断控制器的客户访问通过客户中断数据结构而不是通过可耦合到硬件处理器的主机中断控制器来处理。也就是说,客户中的中断控制器访问可转换成客户中断数据结构内的存储器访问。因此,客户中断控制单元可参与虚拟化和仿真客户中断控制单元。在一个实施方案中,客户中断控制单元可至少部分地以微代码实现。微代码可以是存储在处理器内的非易失性存储器中的、由处理器电路响应于探测到经由微代码例程实现的某些指令或其它操作而调用的指令。微代码可因此被分派来在处理器中执行以执行所实现的操作。在一些实施方案中,客户中断控制单元可以主要用微代码实现。在其它实施方案中,客户中断控制单元可用硬件实现。
对vCPU中断处理器的客户访问可包括读/写中断控制器中的寄存器。在一个实施方案中,写中断控制器中的一个或多个寄存器可触发IPI。处理器中的客户中断控制单元可响应于引起IPI的在客户中的写而向目标vCPU发起IPI。客户IPI可包括更新与目标vCPU相关的数据结构以记录IPI。通常,IPI可以是由处理器或更具体地由在处理器上执行的软件提供的中断。IPI可以以系统中的一个或多个处理器(有时包括纯源化处理器)为目标。因此,IPI可以是在一个处理器上执行的软件中断在另一处理器上执行的软件的机制。IPI可用于在不同处理器上执行的线程之间传递消息,以将最初定向在一个处理器的中断传递到另一处理器。
中断可以处理器或vCPU为目标,如果该中断将由与处理器/vCPU相关的中断控制器接收。处理器/vCPU可以不必处理中断,但可以是用于处理中断并可参与确定哪些处理器/vCPU将处理中断的候选物。中断可以明确指定其目标(例如,使用物理或逻辑ID),或可以是以所有处理器/vCPU为目标的广播中断。通常,如果与目标处理器相关的中断控制器记录了中断用于传送到处理器的中断,则中断可被称为接受的。也就是说,在接受之后的某个时间点,中断将被传送到处理器。中断该处理器以服务于中断可被称为传送中断。vCPU和/或相应的虚拟中断控制器和/或这对部件可在本文被更简洁地称为客户内的中断的目的地。目的地可最终是将服务于中断的vCPU,但相应的虚拟中断控制器也可被视为目的地,因为它与相应的处理器相关,并记录该中断。
计算机系统可包括至少一个主机中断控制器。主机中断控制器可管理将由主机(例如,在虚拟化环境中的虚拟机管理器或VMM和/或VMM可在一些实施方案例如主机OS中运行的其它软件)服务的中断。这样的中断可包括例如来自计算机系统中的未分配到在系统上执行的客户的设备的中断,VMM不希望暴露于客户的系统级中断,等等。上述客户中断操作可用于管理将由客户服务的中断(客户中断)。客户中断可包括例如由被分配到客户的设备发出以为客户的虚拟机提供该设备的功能的中断,或从一个vCPU分发到客户内的另一vCPU的IPI。
在一个实施方案中,本文所述的客户中断操作可导致对客户中断的减小的时延。例如,在一些实施方案中,传送客户设备中断的时延可类似于传送主机设备中断的时延。客户中断时延可大致与主机中断时延、某个数量级的时延等相同。
在一个实施方案中,客户中断管理的相当大的一部分可在硬件处理器中实现。在一些实施方案中,通过在系统的一个部分中找出大部分操作,可简化该实现。因此,在一些实施方案中,该实现可能更可能是正确的,可以更快地完成,等等。
虚拟化概述
图1示出实现虚拟化的计算机系统5的一个实施方案的方框图。在图1的实施方案中,示出多个客户10A-10N。客户10A包括客户操作系统(OS)12和在客户OS 12上运行的一个或多个应用14A-14N。客户10N包括特许代码16。客户10A-10N由虚拟机管理器(VMM)18管理。VMM 18和客户10-10N在主机硬件20上执行,主机硬件20可包括物理硬件,物理硬件包括在计算机系统5中。在一个实施方案中,VMM 18可维持一组虚拟机控制块(VMCB)22。对每个客户10A-10N可以有一个VMCB 22。在一个实施方案中,对每个客户10A-10N中的每个vCPU可以有一个VMCB 22。虽然VMCB 22对图1的图示被示为VMM 18的部分,但是VMCB 22可存储在存储器中和/或非易失性介质例如主机硬件20中的磁盘驱动器上。
主机硬件20通常包括包含在计算机系统5中的硬件。在各种实施方案中,主机硬件20可包括一个或多个处理器、存储器、外围设备和用于耦合前面的部件的其它电路。例如,个人计算机(PC)型系统可包括北桥,其耦合处理器、存储器、使用接口例如PCI Express接口的图形设备。此外,北桥可耦合到外围总线例如外围部件接口(PCI)总线,各种外围部件可直接或间接耦合到该外围总线。也可包括耦合到PCI总线的南桥,以提供时延功能和/或耦合到时延硬件。在其它实施方案中,其它电路可用于链接各种硬件部件。例如,HyperTransportTM(HT)链路可用于链接节点,其中每个节点可包括一个或多个处理器、主机桥和存储器控制器。每个代码也可包括北桥。主机桥可用于经由HT链路以菊花链方式耦合到外围设备。可选地,很多部件可包括在单个设备例如集成一个或多个处理器、北桥功能和图形设备的单个设备上。可使用任何期望的电路/主机硬件结构。
VMM 18可配置成为客户10A-10N中的每个提供虚拟化,并可控制客户10A-10N对主机硬件20的访问。VMM 18也可负责调度用于在主机硬件20上执行的客户10A-10N(且更具体地,在客户内的vCPU,如果多于一个的vCPU被包括)。VMM 18可配置成使用在主机硬件20中提供的对虚拟化的硬件支持。例如,处理器可提供对虚拟化的硬件支持,包括拦截事件并使客户退出到VMM 18用于处理的硬件。处理器中的设备中断管理器和/或客户中断控制单元也可以是被提供来支持虚拟化的硬件。
在一些实施方案中,VMM 18可被实现为在主机硬件20上执行并为客户10A-10N提供虚拟化的“瘦”独立软件程序。这样的VMM实现有时可被称为“超级监督器”。在其它实施方案中,VMM 18可集成到主机OS中并在主机OS上执行。在这样的实施方案中,VMM18可依赖于主机OS,包括主机OS中的任何驱动器,由系统BIOS提供的平台系统管理模式(SMM)代码,等等。因此,主机OS部件(和各种低级部件例如平台SMM代码)直接在主机硬件20上执行,且不被VMM 18虚拟化。在一个实施方案中,VMM 18和主机OS(如果被包括)可一起被称为主机。通常,主机可包括在使用期间在主机硬件20的直接控制中的任何代码。例如,主机可以是VMM 18、结合主机OS的VMM 18、或仅仅主机OS(例如,在非虚拟化环境中)。
在各种实施方案中,VMM 18可支持全虚拟化、半虚拟化或两者。此外,在一些实施方案中,VMM 18可同时执行被半虚拟化的客户以及被全虚拟化的客户。
使用全虚拟化,客户10A-10N不知道虚拟化正出现。每个客户10A-10N可具有在其虚拟机中的连续的基于零的存储器,且VMM 18可使用阴影页表或嵌套页表来控制对主机物理地址空间的访问。阴影页表可从客户虚拟地址重映射到主机物理地址(实际上将客户10A-10N中的存储器管理软件所分配的客户“物理地址”重映射到主机物理地址),而嵌套页表可接收客户物理地址作为输入并映射到主机物理地址。对每个客户10A-10N使用阴影页表或嵌套页表,VMM18可确保客户不访问主机硬件20中的其它客户的物理存储器。
使用半虚拟化,客户10A-10N可以至少部分地是VM感知的。这样的客户10A-10N可与VMM 18协商存储页,并因此将客户物理地址重映射到主机物理地址可能是不需要的。在一个实施方案中,在半虚拟化中,可允许客户10A-10N直接与主机硬件20中的外围设备交互作用。在任何给定的时间,外围设备可以被客户或客户10A-10N“拥有”。在一个实施方案中,例如外围设备可被映射到具有目前拥有该外围设备的一个或多个客户10A-10N的保护域中。只有拥有外围设备的客户可与其直接相互作用。还可能有防止保护域中的设备读/写被分配给在另一保护域中的客户的页的保护机制。可选地,外围设备可支持虚拟功能,客户可拥有该虚拟功能或客户可与该虚拟功能交互作用。
如前所述,VMM 18可对每个客户10A-10N和/或客户中的每个vCPU维持VMCB 22。VMCB 22通常可包括存储在存储区中的数据结构,存储区可由VMM 18为相应的客户10A-10N分配。在一个实施方案中,VMCB 22可包括存储器的页,虽然其它实施方案可使用更大或更小的存储区和/或可使用在其它介质上的存储器例如非易失性存储器。在一个实施方案中,VMCB 22可包括客户的处理器状态,其可在客户被调度来执行时被装入主机硬件20中的处理器中,并可在客户存在时被存储回到VMCB 22(由于完成其安排的时间或由于处理器对客户存在探测到的一次或多次拦截)。在一些实施方案中,只有处理器状态的一部分经由将控制传送到相应于VMCB 22的客户的指令(虚拟机运行(VMRUN)指令)被装入,而其它期望的状态可由VMM 18在执行VMRUN指令之前被装入。类似地,在这样的实施方案中,只有处理器状态的一部分可在客户退出时由处理器存储到VMCB 22,且VMM 18可负责按需要存储任何额外的状态。在其它实施方案中,VMCB 22可包括到另一存储区的指针,处理器状态被存储在该存储区。此外,在一个实施方案中,可定义两个或多个退出机制。在一个实施方案中,所存储的状态的量和被装入的状态的位置可根据哪个退出机制被选择来变化。
在一个实施方案中,VMM 18还可具有被分配来存储相应于VMM 18的处理器状态的存储区。当VMRUN被执行时,相应于VMM18的处理器状态可保存在区域中。当客户退出到VMM 18时,来自该区域的处理器状态可从该区域重新装入以允许VMM 18继续执行。在一个实施方案中,例如处理器可实现寄存器(例如,模型特定寄存器或MSR)以存储VMM 18的保存区的地址。
此外,VMCB 22可包括识别对用户启用的拦截事件的拦截配置和用于使客户退出的机制,如果所启用的拦截事件被探测到。在一个实施方案中,拦截配置可包括一组拦截指示,对处理器支持的每个拦截事件有一个指示。拦截指示可指示处理器是否拦截相应的事件(或以另一方式考虑,拦截是否被启用)。如本文使用的,事件在客户中被“拦截”,如果事件应在客户中出现,则使客户退出用于处理事件。在一个实施方案中,拦截配置可包括指示两个退出机制中的哪个被使用的第二组指示。其它实施方案可定义多于两个的退出机制。在另一实施方案中,拦截配置可包括:一组拦截指示,每个拦截事件一个指示,其指示第一退出机制是否应用于该事件;以及第二组拦截指示,每个拦截事件一个指示,其指示第二退出机制是否应用于该事件。
通常,退出机制可定义由处理器执行来使客户执行退出(通常以可重新启动的方式)并开始执行另一代码的操作。在一个实施方案中,一种退出机制可包括保存少量的处理器状态和Minivisor的装入状态。Minivisor可在客户物理地址空间中执行,并可执行相对简单的拦截处理。另一退出机制可退出到VMM,保存较大量的处理器状态和装入VMM的处理器状态。因此,拦截事件可由不同的指令代码处理,取决于事件。此外,相对简单的拦截处理可通过可能花费较少的时间来执行的“较轻重量”退出机制来处理,这可在一些实施方案中提高性能。在“较重重量”机制用于退出时,更复杂的处理可在VMM中执行。因此,在这个实施方案中,VMM 18可配置处理器以拦截VMM 18不希望客户10A-10N在内部处理的那些事件,且也可配置退出机制要使用的处理器。事件可包括指令(也就是说,拦截指令,而不是执行它)、中断、例外和/或可能出现在客户执行期间的任何其它期望的事件。
在一个实施方案中,VMCB 22还可包括其它控制位,其可使处理器在装入VMCB 22时执行某些行动。例如,控制位可包括将TLB淹没在处理器中的指示。其它控制位可为客户指定执行环境(例如,中断处理模式、客户的地址空间标识符等)。还有其它位可用于传递描述客户为什么退出的退出代码等。
通常,“客户”可包括将被虚拟化来用于在计算机系统5中执行的任何一个或多个软件程序。客户可包括在特许模式中执行且因此预期具有对它正执行的计算机系统的完全控制的至少一些代码。如前所述,客户10A是客户(包括客户OS 12)的例子。客户OS 12可以是任何OS,例如从微软公司(Redmond,WA)可得到的Windows OS、任何UNIX型操作系统例如Linux、来自IBM公司(Armonk,NY)的AIX、来自太阳微系统公司(Santa Clara,CA)的Solaris、来自Hewlett-Packard公司(Palo Alto,CA)的HP-UX等中的任一个。客户10N是包括非OS特许代码16的客户的例子。
注意,字母“N”在本文中以参考数字10N被使用时意指通常指示带有参考数字的任何数量的元件(例如,任何数量的客户10A-10N,包括一个客户)。此外,使用字母“N”(例如,10N和14N)的不同的参考数字并没有被规定为指示相似数量的不同元件被提供(例如,客户10A-10N的数量可不同于用户14A-14N的数量),除非另外说明。
主机硬件和中断虚拟化
现在转到图2,示出了说明主机硬件20的一个实施方案的方框图。在所示实施方案中,主机硬件20包括多个处理器30A-30B、相应的高级可编程中断控制器(APIC)32A-32B、桥36(其包括存储器控制器42和进一步包括设备中断管理器38的输入/输出(I/O)存储器管理单元(IOMMU)40)、多个接口电路(IF)44A-44C、存储器接口电路(MIF)46、可包括I/O APIC(在下文中为IOAPIC)50的任选的桥48、外围设备52A-52B(其中一些可包括IOAPIC例如IOAPIC 54)和存储器56。处理器30A-30B耦合到桥36和如图2所示的相应的APIC32A-32B。APIC 32A-32B耦合到桥36,其耦合到接口电路44A-44C和存储器接口电路46。存储器接口电路46耦合到存储器56,且接口电路44A耦合到桥48,桥48耦合到外围设备52A-52B。
在所示实施方案中,每个处理器30A-30B具有相关的APIC32A-32B。在这个实施方案中,拦截可根据英特尔公司(Santa Clara,CA)所描述的APIC规范在主机硬件20中传递。见例如Intel 64和IA-32Architectures Software Developer's Manual,Volume 3A:SystemProgramming Guide,Part 1,Chapter 10(December 2009),其在本文通过引用被全部并入。在该规范中,每个处理器具有接收中断(从处理器本身、从其它处理器、从内部APIC中断源和从与外围设备相关的IOAPIC)的相关局部APIC。局部APIC优先考虑未决的中断,并将中断发送到处理器,如果它是比在处理器上在进行中的另一中断更高的优先级和/或如果它是比处理器的当前任务更高的优先级。APIC规范将在本文用作例子,但在其它实施方案中可使用任何中断管理规范。
在图2的实施方案中,APIC 32A-32B可以是用于处理器的主机中断的局部APIC(也就是说,将由主机处理的中断)。另一方面,客户中断的局部中断控制器可以不被例示为硬件APIC。替代地,客户APIC(或更简洁地,gAPIC)可以经由硬件支持和VMM 18被仿真。具体地,每个gAPIC可具有其存储在gAPIC状态数据结构58中的状态。gAPIC数据结构58可对在计算机系统5中活动的每个客户中的每个vCPU包括gAPIC状态条目。在一个实施方案中,gAPIC状态条目可以是对相应的gAPIC状态的数据的页。在这样的实施方案中,gAPIC状态数据结构58可仅仅是页的集合。这些页不需要在存储器系统中位于彼此附近,或具有除了存储对各种gAPIC的gAPIC状态数据以外的与彼此的任何其它关系。其它实施方案可使用更大或更小的gAPIC状态条目和/或其它数据结构。客户可以在处理器上是活动的,如果客户当前正在该处理器上执行(例如,为客户在处理器上执行VMRUN指令,且没有出现客户退出),或如果客户已退出且VMM 18正执行,但客户被预期再次在处理器上被执行。
当VMM 18在处理器30A-30B上调度客户/vCPU时,VMM 18可将指针从vCPU的VMCB 22装入处理器30A-30B中(且更具体地,处理器中的客户中断控制单元34A-34B中)。指针可将相应的gAPIC状态条目定位在gAPIC状态数据结构58中。因此,客户中断控制单元34A-34B可找出vCPU的gAPIC状态,并可探测到中断由设备中断管理器38记录。在一个实施方案中,处理器30A-30B可实现客户中断传送机制。例如,处理器30A-30B可包括可使用客户中断(例如,中断请求、中断矢量等)编程的一个或多个寄存器。虚拟中断可在逻辑上与真实中断源(例如,到处理器30A-30B的输入引脚)组合以中断在处理器30A-30B上执行的软件。处理器30A-30B可执行由中断矢量指定的中断处理程序以服务于中断。其它实施方案可实现其它客户中断传送机制。
在一个实施方案中,设备中断管理器38可配置成更新以客户为目标的设备中断的客户中断状态,并将主机中断传送到相应的APIC32A-32B。具体地,在一个实施方案中,设备中断管理器38可配置成将在桥36中接收的每个客户中断记录在gAPIC状态数据结构58中。响应于接收到客户中断,设备中断管理器38可配置成为中断所定向的客户/vCPU更新gAPIC状态数据结构58中的gAPIC状态。在一个实施方案中,设备中断管理器38可配置成更新gAPIC状态,而与客户是否是活动的无关。对于具有多于一个目标的多播和广播,设备中断管理器38可配置成为每个中断目的地更新gAPIC状态数据结构58中的gAPIC状态。可选地,设备中断管理器38可配置成对这些多个目的地中断依赖于VMM 18。设备中断管理器38可配置成在这样的实施方案中将中断记录到VMM 18可访问的存储器位置中,并可配置成告知VMM 18来处理该消息。
设备中断管理器38可使用在图2中存储在存储器中的所示的设备表62、中断重映射表64和APIC ID表60为来自外围设备的设备中断确定目标处理器或vCPU。具体地,设备中断管理器38可配置成响应于包括在来自IOAPIC 50和54的设备中断请求中的信息来访问设备表62和中断重映射表64。设备表62可包括每个外围设备52A-52B的条目(并可包括外围设备的多个条目,在外围设备耦合到的外围接口上包括多于一个的标识符)。给定外围设备的设备表条目可包括中断重映射表64的指针,并且还可包括APIC ID表60之一的至少一个APIC IC表指针。APIC ID表60可包括在客户中的每个APICID的条目,并可存储到相应于具有该APIC ID的vCPU/gAPIC的gAPIC状态条目的指针。中断重映射表64可用于来自其原始目的地的中断和/或中断矢量重定向到新的目的地和/或中断矢量。因此,中断重映射表64可包括中断的目的地ID。目的地ID是APIC ID,并可用作由来自设备表62的APIC ID表指针指示的APIC ID表60中的索引,以对客户中断找出待更新的gAPIC状态条目。基于来自中断重映射表64的中断矢量,设备中断管理器可记录在所识别的gAPIC状态条目中的中断。中断重映射表64也可包括设备是否被分配到客户或主机的指示。如果设备被分配给主机,中断是待传送到APIC32A-32B的主机中断,且gAPIC状态数据结构58可以不被更新。下面进一步讨论表60、62和64的一个实施方案的额外细节。
虽然在所示实施方案中gAPIC状态数据结构58被示为存储在存储器56中,但是在一些实施方案中部分可由设备中断管理器38和/或桥36可访问的高速缓冲存储器缓存。此外或可选地,一个或多个gAPIC状态条目的专用存储器可在桥36中实现。
在APIC中断机制中,每个处理器(通过其本地APIC)可具有物理APIC ID和逻辑APIC ID。物理APIC ID存储在APIC ID寄存器中。物理APIC ID在一对一的基础上与物理传送模式中断所指示的物理APIC ID匹配。逻辑APIC ID存储在本地APIC中的逻辑目的地寄存器中。逻辑APIC ID具有群集ID和本地APIC ID,其中本地APIC ID一般是独热位矢量。逻辑传送模式中断可包括在APIC ID的矢量部分中的任何设置位,以将中断传送到群集中的一个或多个本地APIC。因此,匹配逻辑APIC ID可包括比较群集ID以及探测与在本地APIC中的独热位矢量的设置位在同一位置处的本地APIC ID。以另一种方式考虑,在逻辑传送模式中断中的本地APIC ID矢量可以与本地APIC的APIC ID矢量进行逻辑与运算,且如果结果是非零且群集ID匹配,则本地APIC是逻辑中断的目标。逻辑APIC ID可在本文更简洁地称为逻辑ID,且类似地,物理APIC ID可在本文更简洁地称为物理ID。与中断相关的给定ID(逻辑或物理)可被称为中断的目的ID。中断的相应传送模式可将中断的目的ID识别为逻辑的或物理的。
APIC ID表60可包括在给定客户中的逻辑APIC ID的逻辑APICID表和在给定客户中的物理APIC ID的物理APIC ID。APIC ID表可将APIC ID映射到gAPIC状态指针,如前所述。在一个实施方案中,逻辑APIC ID表可将逻辑ID映射到物理ID,物理ID可通过物理ID表映射到gAPIC状态指针。其它实施方案也可直接从逻辑ID映射到gAPIC状态指针。
在一个实施方案中,APIC ID表60可包括vCPU是否目前正在运行的指示。如果vCPU正在运行,则中断可由执行vCPU的处理器30A-30B探测到(例如,通过监控记录新的中断的对更新的gAPIC状态条目,或经由来自设备中断管理器38的消息)。因此,中断可传送到运行的客户。然而,如果客户没有正在运行(或是不活动的),则中断可在传送时被延迟。在一个实施方案中,IOMMU可记录中断。VMM 18可探测记录中的中断,并可优先考虑用于调度的目标vCPU。vCPU可以正在运行,如果它目前在硬件处理器上正在执行中。
给定处理器30A-30B的APIC 32A-32B可具有到处理器的任何接口。例如,可使用在本地APIC及其相应的处理器之间的任何接口。每个APIC可配置成独立地告知处理器中断正被传送以用于服务。如果处理器正执行客户,且APIC告知中断,则处理器可配置成使客户退出到VMM 18以处理主机中断。如果处理器不正在执行客户,则处理器可配置成中断主机执行,并响应于由APIC告知的中断而分支到主机中断处理程序。
APIC 32A-32B耦合到桥36以接收中断。任何接口可用于将中断传输到APIC 32A-32B。例如,可使用为APIC中断传输实现的任何接口。在一个实施方案中,用于将其它操作传递到处理器30A-30B/从处理器30A-30B传递其它操作的相同的通信机制(例如由处理器30A-30B发起的存储器读/写操作、用于缓存一致性维护的探针等)可用于传输中断消息。以另一种方式考虑,APIC 32A-32B的耦合可与处理器30A-30B到桥36的耦合一起被共享。可选地,处理器30A-30B可具有到桥36的分离的路径,例如如果APIC 32A-32D使用APIC“3写接口”。中断消息可以是在识别正被传输的中断和中断的目的地的任何接口上的任何通信。例如,中断可具有相关的中断矢量,且中断矢量可以是中断消息的部分。中断消息也可包括目的地ID(例如,逻辑或物理APIC ID)。
客户中断控制单元34A-34B可配置成探测被记录到相应的gAPIC状态条目的客户中断,并可传送中断,如上所述。此外,客户中断控制单元34A-34B可探测在客户/vCPU执行期间处理器30A-30B对其自己的gAPIC的访问,并可转换对gAPIC状态条目中的存储器读/写的访问,而不是对APIC 32A-32B的访问。在一些实施方案中,客户中断控制单元34A-34B也可实现gAPIC的某种仿真。例如,可实现具有明显的性能影响的操作。对于不由客户中断控制单元34A-34B实现的仿真,客户中断控制单元34A-34B可使客户退出用于在VMM 18中的仿真。一些访问可能不需要仿真(例如,大部分读没有影响,除了读数据以外,所以除读取来自gAPIC状态条目的数据以外不需要仿真)。在APIC中不产生任何副效应的写也可通过更新gAPIC状态条目中的相应位置来完成。
在一个实施方案中,在客户中断控制单元34A-34B中仿真的操作可包括在客户内的IPI的发起、对任务优先级寄存器(TPR)的访问、以及对中断结束(EOI)寄存器的访问。其它实施方案可在客户中断控制单元34A-34B中实现操作的不同子集。如前所述,在一些实施方案中,客户中断控制单元34A-34B可主要以微代码实现。因此,在客户执行期间,对gAPIC的访问可能引起微代码执行。此外,通过设备中断管理器38对gAPIC状态条目的更新(对于正在处理器上执行的vCPU)可引起微代码执行。对于退出到VMM 18的指令,该退出可在指令收回之后(即,更新对用于写的gAPIC状态条目完成,或从gAPIC状态条目读取的数据被写到目标寄存器用于读)或在指令收回之前。在收回指令之后发起VMExit可被称为俘获。在一些情况下,相应的指令如果被允许收回则可能引起无法修复的改变。因此,可以不允许这样的指令在VMExit之前收回,这称为使指令出错。
IOMMU 40包括设备中断管理器38,如上所述。此外,IOMMU40可配置成对I/O发起的存储器操作执行虚拟到物理地址映射(例如,从外围设备52A-52B或代表外围设备52A-52B通过DMA控制器获得的存储器读/写操作)。作为转换操作的部分,IOMMU 40可配置成访问设备表62和任选地中断重定向表64。每个外围设备52A-52B的设备表条目可包括用于转换存储器读/写操作(未示出)的存储器地址的I/O页表的页表指针。
存储器控制器42可耦合成接收由处理器30A-30B发出的存储器操作(例如,指令取回、装入/存储数据访问、用于转换的处理器页表访问等)、来自设备中断管理器38的存储器操作(例如,以读/更新gAPIC状态数据结构58和/或访问表60、62和64)、IOMMU 40(例如,以访问I/O页表、设备表62和中断重映射表64)、以及从中断电路44A-44C接收的存储器操作(在一些实施方案中)。存储器控制器42可配置成对存储器操作排序,并与存储器56通信以执行存储器操作。存储器接口电路46可执行对存储器56的物理级访问。
存储器56可包括任何类型的存储器。例如,存储器56可包括动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)、包括DDRSDRAM的移动版本(mDDR3等)和/或低功率版本(LPDDR2等)的双数据率(DDR、DDR2、DDR3等)SDRAM、RAMBUS DRAM、静态RAM等。存储器56可包括包含多个存储器芯片的一个或多个存储器模块,例如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。
除了在本实施方案中包括设备中断管理器38、IOMMU 40和存储器控制器42以外,桥36还可包括其它通信功能以在处理器30A-30B、APIC 32A-32B和耦合到接口电路44A-44D的设备之间进行通信。例如,在所示实施方案中,另一桥48可耦合到接口电路44A,并可配置成在接口电路44A所使用的协议和外围设备52A-52B所使用的协议之间桥接通信。在一个实施方案中,接口电路44A-44C可例如实现上面提到的HT接口,且桥48可从HT桥接到另一接口例如PCI Express(PCIe)接口。外围设备52A-52B在这样的实施方案中可以是PCIe设备。桥48还可配置成桥接到其它接口,或另一接口可耦合到桥48以桥接到其它接口。可使用任何一个或多个外围接口。此外,外围设备52A-52B可包括配置成直接耦合到HT接口的HT外围设备。这样的外围设备可能不需要桥48。
在一个实施方案中,桥48和/或一个或多个外围设备52A-52B可包括IOAPIC(图2中的50和54)。IOAPIC可负责从外围设备接收中断请求,并形成中断消息以将中断请求发送到APIC 32A-32B和设备中断管理器38(用于记录在存储器中的gAPIC状态数据结构58中)。
如上所述,在一个实施方案中,接口电路44A-44C可配置成在HT接口上通信。接口电路44A-44C可配置成使用HT与外围设备/桥进行通信。此外,在一些实施方案中,接口电路44A-44C可配置成使用处理器、APIC等耦合到其它节点。在这样的实施方案中,桥36除了前面描述的电路以外还可包括一致性管理电路。
处理器30A-30B可实现任何指令集体系结构,并可配置成执行在指令集体系结构中定义的指令。处理器30A-30B可包括任何微体系结构,例如超流水线体系结构、超标量体系结构和/或其组合、按顺序或不按顺序执行、推测执行等。处理器30A-30B按需要可以或可以不实现微编码技术。
外围设备52A-52B可包括任何类型的外围设备。外围设备52A-52B可包括存储设备例如磁盘、固态盘或光盘驱动器、非易失性存储器设备例如闪存等。外围设备52A-52B可包括I/O设备例如用户I/O设备(键盘、鼠标、显示器、语音输入等)、联网设备、外部接口设备例如通用串行总线(USB)或防火墙等。
在所示实施方案中,处理器30A-30B、桥36、APIC 32A-32B、接口电路44A-44C和存储器接口电路46可集成到单个半导体衬底上作为集成电路66。其它实施方案可按需要实现不同量的集成和分立电路。注意,虽然不同数量的部件例如处理器、APIC、接口电路、外围设备、桥等在图2中示出,其它实施方案可按需要实现一个或多个每个部件的任何数量。
在其它实施方案中,IOMMU 40和设备中断管理器38的位置可变化。例如,一个或两个IOMMU 40和设备中断管理器38可以在桥48中,在外围设备52A-52B中,在耦合到桥的另一桥中,等等。
在所示实施方案中,每个APIC 32A-32B与如图2所示的特定处理器30A-30B相关。因此,在本实施方案中,给定的中断控制器专用于相应的处理器30A-30B。更具体地,在图2中,APIC 32A专用于处理器30A;而APIC 32B专用于处理器30B。中断控制器可将中断以任何方式告知到其相应的处理器。通常,告知可指示中断是需要的。告知可包括中断矢量,或中断矢量可由在中断被传送之后执行的软件读取。在一个实施方案中,传送中断可以指告知处理器和处理器接受中断。服务于中断可以指执行与中断矢量相关的中断服务例程,以执行中断设备所需的操作。
现在转到图3,示出了对一个实施方案说明从外围设备到gAPIC的中断的进展并且也说明客户内的IPI的方框图。在所示实施方案中,外围设备52A确定中断是期望的。外围设备52A(见图2)内的IOAPIC54可为外围设备52A产生中断消息。具体地,IOAPIC 54可产生相应于期望中断的中断矢量(例如,基于外围设备52A所需要的服务,如果外围设备52A实现多种功能则告知中断的特定功能,等等)。类似地,IOAPIC 50可为不实现自己的IOAPIC的外围设备例如外围设备52B产生中断消息。中断矢量是中断通信的部分,并可用于识别中断源,优先考虑中断,等等。在一些情况下,中断矢量可被IOMMU40重映射,所以中断矢量在图3中被示为“原始矢量”。外围设备52A可将中断消息发送到IOMMU 40(箭头A)。在本实施方案中,中断可以用消息告知中断(MSI)的形式被发送,例如,如在PCIe规范中规定的。其它实施方案可用任何期望的方式发送中断。通常,该发送可识别中断、其传送模式(例如,逻辑或物理的)、以及中断的目的地ID(DestID)。
IOMMU 40可接收MSI。MSI包括外围设备的标识符。例如,实现PCI编程模型的接口可识别具有总线号和在该总线上的设备号的每个设备(允许多个PCI接口以分层和/或并行的形式存在于系统中)。设备可具有多种“功能”,其可以是在物理设备上的分开的虚拟设备,或设备上的操作的划分。标识符也可包括功能号。因此,在这个实施方案中,标识符可以称为总线-设备-功能或BDF。IOMMU 40(且更具体地,在本实施方案中是设备中断管理器38)可使用BDF编索引到设备表62中(箭头B),并可识别相应于外围设备52A的设备标条目。该条目可包括APIC ID表指针(箭头C)。在本实施方案中,设备表条目还可包括可识别相应于设备的中断重映射表64的中断重映射表指针(IRTP)(箭头C1)。中断重映射表64由原始中断矢量编索引,并可为中断提供输出矢量和目的地ID(DestID,例如逻辑或物理APICID)(箭头C2)。此外,客户/主机指示可以被输出(G/H)。在一个实施方案中,G/H指示可以是一个位,其在置位时指示中断将被客户服务并在清零时指示中断将被主机服务。其它实施方案可使用置位和清零状态的相反意义,或可使用对指示的其它编码。
如果G/H指示表示主机,设备中断管理器38可将中断消息发送到APIC 32A-32B,且中断可根据APIC规范被处理(箭头F)。另一方面,如果G/H指示表示客户,设备中断管理器38可使用目的地ID作为物理APIC ID表60A(其是由设备表62提供的APIC ID表指针所指向的表)内的索引(箭头D)。物理APIC ID表60A可输出识别待更新的gAPIC状态条目的gAPIC状态指针。设备中断管理器38可将中断写到gAPIC状态(gAPIC状态更新,图3中的箭头E)。物理APIC ID表60A也可为vCPU提供Is_Running(IR)指示。如果vCPU正在运行,则中断可相当快地被传送。如果vCPU不正在运行,则设备中断管理器38可为VMM 18记录中断,VMM 18可调度vCPU来处理中断。
所示实施方案只访问具有目的地ID的物理APIC ID表60A。因此,在所示实施方案中,客户中断的目的地ID可以是物理APIC ID。当对设备表62、中断映射表64等编程时,逻辑APIC ID可由VMM 18转换到物理APIC ID。在其它实施方案中,逻辑APIC ID和物理APICID都可被支持,且给定客户的逻辑APIC ID表和物理APIC ID表都可按需要用于找出gAPIC状态指针。
在一个实施方案中,gAPIC状态包括中断请求寄存器(IRR),其包括每个中断矢量的位。为了记录中断,相应于中断矢量的位可以被设置在IRR中。gAPIC状态中的IRR可能从多于一个的源更新。因此,可以使更新成为原子的,以防止状态的损失。具体地,更新可以是原子OR,其与存储器中的IRR内的设置位进行OR运算。原子操作可以是有效地作为单位而执行的操作,即使操作被实现为多个步骤。试图访问正被原子地更新的位置的观察者在原子更新之前或原子更新之后接收值,但可以不接收中间值。试图更新正被原子地更新的位置的观察者在原子更新之前或原子更新之后但不在原子操作期间执行其更新。虽然本实施方案可实现原子OR,其它实施方案可实现更一般的原子更新操作。例如,原子更新可包括识别应不被修改的目标的位的AND掩码,和识别哪些位将被进行OR运算的OR掩码。其它实现也是可能的。例如,可使用比较和交换实现,其中来自存储器位置的原始值被读取,且比较和交换操作对照原始值与新值进行OR运算来执行。如果比较失败,则过程可重复(读取新的原始值,以及执行比较和交换)。如果需要,补偿和/或超时机制可用于退出循环。
在一个实施方案中,处理器30A-30B(且更具体地,客户中断控制单元34A-34B)可监控对相应于在处理器上执行的vCPU(如果有的话)的gAPIC状态条目的更新。具体地,处理器可每个监控gAPIC状态条目的(包括IRR位)的区域,其中gAPIC状态条目相应于处理器正执行的vCPU。该区域在本文被称为“观看区”。观看区可以用各种方式建立。例如,处理器30A-30B可包括高速缓冲存储器,并可配置成维持高速缓冲存储器和存储器之间的一致性。作为一致性机制的部分,可向处理器30A-30B通知存储在高速缓冲存储器中的数据的更新。处理器30A-30B可因此通过将该区域读到高速缓冲存储器中来建立观看区。例如,在一个实施方案中,2个缓存块可覆盖该区域。在一些实施方案中,可能必须确保缓存块保持在高速缓冲存储器中。例如,一些实施方案可过滤一致性探针,其被已知在处理器的高速缓冲存储器中遗漏。在这样的实施方案中,确保观看区块保持在高速缓冲存储器中可确保相应于观看区更新的探针不被过滤。
各种机制可用于确保观看区块保持在处理器的高速缓冲存储器中。例如,处理器可实现缓存锁定以将块锁在高速缓冲存储器中。可选地,处理器可迫使块在高速缓冲存储器所实现的缓存替换算法中保持“最近被最多地使用”。另一方面,可能不是必须确保观看区块保持在处理器的高速缓冲存储器中,例如,如果一致性探针未被过滤。在这样的实施方案中,处理器可将区域的地址仅仅存储在寄存器中并比较该地址与探针。
如果对于在处理器30A-30B上正在运行的vCPU,gAPIC状态更新出现到gAPIC状态条目,则相应的处理器可探测对观看区的更新(箭头G2)。在相应的处理器中的客户中断控制单元34A-34B可读取更新的IRR,并可优先考虑未决的中断且如果新的中断是较高的优先级则获取它。
在另一实施方案中,观看区可以不被使用,且设备中断管理器38可替代地将客户中断控制消息发送到APIC 32A-32B(或直接到处理器30A-30B)(箭头G1)。客户中断控制消息可与主机中断消息和IPI区分开,并因此可被转发到客户中断控制单元34A-34B以通知它们客户中断已被请求。例如,客户中断控制消息可使用以前未定义的中断消息编码,将它与使用现有的中断消息编码的主机中断消息和IPI区分开。其它实施方案可实现观看区和客户中断控制消息。
在一个实施方案中,客户中断控制消息可通过模型特定寄存器(MSR)接口被传送到客户中断控制单元34A-34B。MSR可能是客户中断控制单元34A-34B可访问的(例如,微代码可访问的,如果客户中断控制单元34A-34B部分地或全部以微代码实现)。MSR也可以是在处理器30A-30B上执行的特许代码可访问的。然而,可保护MSR免受非特许的访问,包括客户访问。APIC 32A-32B可使用与用于IPI将中断传送到MSR所使用的类似的接口,除了MSR被写以外,而不是将IPI传送到中断软件。MSR的更新可以使客户中断控制单元34A-34B激活客户中断传送。例如,在以微代码实现客户中断控制单元34A-34B的实施方案中,MSR的更新可导致处理用于传送到客户的中断的微代码例程的执行。虽然在一个实施方案中可使用MSR接口,但是其它实施方案可使用允许客户中断控制消息被传送到客户中断控制单元34A-34B的任何机制。这样的机制可被称为“门铃”机制。
除了设备中断以外,在处理器上执行的客户vCPU可将IPI发到在同一虚拟机中的其它vCPU。在本实施方案中,当在vCPU上执行的软件更新中断命令寄存器(ICR)时,IPI被发出。中断命令寄存器可包括高和低(ICRH和ICRL)部分,且IPI可响应于写到ICRL寄存器而被发起。该机制可以与x1APIC编码和x2APIC编码兼容。执行IPI的源vCPU的处理器的客户中断控制单元34A-34B可探测写到ICRL寄存器,并可使用IPI的目的地ID来识别在APIC ID表60中的gAPIC状态指针(箭头a)。IPI的目的地ID可以是逻辑的或物理的,且客户中断控制单元34A-34B可使用逻辑和/或物理APIC ID表60,如对目的地ID适当的。使用gAPIC状态指针,客户中断控制单元34A-34B可更新在gAPIC状态数据结构(箭头b)中的gAPIC中的目标vCPU的gAPIC状态条目。客户中断控制单元34A-34B也可配置成将客户中断控制消息传递到正执行目标vCPU的处理器30A-30B的客户中断控制单元34A-34B(箭头c)。更具体地,在一个实施方案中,发送IPI的客户中断控制消息可通过APIC 32A-32B被路由。可选地,实现观看区的实施方案可使用观看区探测来探测更新。其它实施方案可实现发起IPI的其它机制。客户中断控制单元34A-34B可探测机制,并可相应地更新目标vCPU的gAPIC状态。此外,如果APIC ID表60指示目标vCPU不正在运行,则来自源处理器的客户中断控制单元可使VMExit允许VMM 18调度目标vCPU。
在一个实施方案中,为了将中断的客户中断控制消息发送到正确的处理器30A-30B,APIC ID表60中的IR位可以是识别处理器正执行相应的vCPU的场(或可能有指示vCPU是否正在运行的位和识别处理器的场)。该场可用于识别客户中断控制消息的目标。
现在转到图4,示出了VMCB 22的一个实施方案的方框图。在所示实施方案中,VMCB 22包括gAPIC状态指针场70、物理APIC ID表指针场72、逻辑APIC ID表指针场74和其它虚拟机数据76。gAPIC状态指针70可找出相应于存储器56中的客户/vCPU的gAPIC状态条目。gAPIC状态指针70可被装入处理器30A-30B中作为VMRUN指令的部分,并可由客户中断控制单元34A-34B使用来找出vCPU的gAPIC状态。物理APIC ID指针场72和逻辑APIC ID表指针场74可分别存储对客户的物理APIC ID表指针和逻辑APIC ID表指针。其它VM数据76可包括装入/存储在VMRUN和VMExit上的各种其它处理器状态。
现在转到图5,示出了gAPIC状态条目90的一个实施方案的方框图。图5中的图示可以是状态的逻辑视图。存储器中的状态的实际布置可变化。在一个实施方案中,状态的布置可以是按状态在APIC中被寻址的顺序。也就是说,每个寄存器可具有离APIC的基本地址的偏移,且在每个寄存器的gAPIC状态条目90中的状态的相应副本可以在离gAPIC状态条目90的基本地址的相同偏移处。
gAPIC状态条目90可包括APIC状态的完整副本。不是所有状态都在图5中示出。然而,示出了IRR、正在服务寄存器(ISR)、触发模式寄存器(TMR)和ICRH以及ICRL寄存器、任务优先级寄存器(TPR)和中断结束(EOI)寄存器连同其它APIC状态。其它APIC状态可在所示状态内交错(例如,根据在APIC地址地图中的每个寄存器的偏移)。此外,如图5所示的状态的顺序可以不是如存储在存储器中的状态的顺序。
IRR寄存器记录已发送到gAPIC的中断请求。IRR中的中断请求的位置相应于中断矢量。IRR可跟踪“固定的”中断。其它中断类型可包括非屏蔽中断(NMI)、系统管理中断(SMI)、传统外部中断(extINT)等。这些中断可以作为其它APIC状态的部分被处理。在一个实施方案中,中断请求也可包括每个中断的触发模式(级别或边缘)。TMR可存储哪个触发模式应用于中断的指示。例如,边缘触发的中断可由TMR中的二进制0表示,且所触发的级别可由二进制1表示。在其它实施方案中,只有边缘触发的中断可在gAPIC中被支持,且TMR可被消除。
对于固定的中断,客户中断控制单元34A可配置成优先考虑中断请求和正在服务中断以确定中断请求是否应被传送到处理器。通常,如果最高优先级中断请求是比最高优先级正在服务中断高的优先级(其中中断是正在服务,如果处理器中断其软件执行以执行相应于中断的中断处理程序),客户中断控制单元34A可配置成传送所请求的中断。此外,TPR可由软件编程来建立由vCPU接受的最低优先级级别的中断。客户中断控制单元34A可配置成传送最高优先级请求,如果它是比最高优先级正在服务中断高的优先级,且如果它是比在TPR中指示的优先级高的优先级。
当vCPU获取中断时,处理器可使用中断确认命令对gAPIC作出响应。客户中断控制单元34A可配置成从IRR 70移除最高优先级中断请求,并将中断记录为ISR中正在服务。相应于ISR中的中断的正在服务指示的位置可相应于中断的中断矢量。处理器30A可执行中断服务例程(或多个例程)以服务于中断。中断服务例程可终止于对gAPIC的中断结束(EOI)命令以告知中断服务完成。客户中断控制单元34A可配置成响应于EOI命令而从ISR移除最高优先级正在服务中断。当执行EOI命令时,微代码可使ISR位#N清零(其中N是最高优先级正在服务中断)。如果TMR的位#N被设置,则微代码可VMExit以允许VMM 18仿真级别敏感中断行为。在其它实施方案中,更新ISR可由VMM 18管理。
如上所述,IRR、ISR和TMR中的每个包括相应于由gAPIC支持的每个中断矢量的位置。在所示实施方案中,矢量0到255被支持。中断矢量号也可指示其与其它中断的相对优先级(例如,较高的矢量号是比较低的矢量号高的优先级,在其它实施方案中反之亦然)。对于每个中断矢量,IRR存储指示中断是否在中断矢量处被请求的中断请求位。例如,该指示可以是当置位时指示请求而当清零时指示无请求的位。类似地,对于每个中断矢量,ISR存储指示中断是否对该中断矢量是正在服务的正在服务位(例如,当置位时指示正在服务中断而在清零时指示无正在服务中断)。对于每个中断矢量,TMR存储触发模式。对于IRR、ISR和TMR中的每个,在寄存器中的位的位置等于相应于中断的中断矢量号。注意,虽然256个中断矢量在所示实施方案中被支持,或多或少的中断矢量和/或或多或少的优先级级别组可在其它实施方案中被支持。其它APIC状态可包括内部产生的中断、定时器、本地矢量表等。
在一个实施方案中,在gAPIC状态条目90中的IRR、ISR和/或TMR的位可以不被布置为每字节8位。为了便于容易寻址到特定的IRR、ISR或TMR位,位可以用存储在更分散的方式存储(例如,每字节两位、每字节一位等)。
接着转到图6,示出了设备表62、中断重映射表64和APIC ID表60A-60B并使用这些表找出gAPIC状态条目90的一个实施方案的方框图。
对于设备中断,提供中断的外围设备的总线/设备/功能(BDF)可用作设备表62内的索引。设备表62的基本地址可存储在IOMMU 40中,且可能每个计算机系统5有一个设备表62(或每IOMMU 40一个设备表52,如果多个IOMMU包括在系统中)。响应于BDF而选择的设备表条目包括中断重映射表指针(IRTP),其是中断重映射表64的基本地址。在一个实施方案中,在系统5中可能每客户有一个中断重映射表64。此外,设备表条目可包括APIC ID表指针(AIDTP),其可以是物理APIC ID表60A的基本地址。在其它实施方案中,可对设备中断支持逻辑APIC ID,且在设备表62中可能有两个AIDTP场(一个针对逻辑APIC ID表60B,而另一个针对APIC ID表60A)。在一个实施方案中,在计算机系统5中每客户可能有一个逻辑APIC ID表60B和一个物理APIC ID表60A。
在中断重定向表64内的索引是中断的中断标识符。中断标识符可包括中断矢量,并且还可包括物理或逻辑的传送模式(Delmode)。选定的条目可包括新的矢量和目的地ID(DestID)。此外,选定的条目可包括上面提到的客户/主机(G/H)场。
目的地ID可以是物理APIC ID表60A内的索引,且选定的条目可包括gAPIC状态条目90的gAPIC状态指针。此外,选定的条目可包括vCPU的IR指示。
对于IPI,目标vCPU可由逻辑APIC ID或物理APIC ID识别。对于物理APIC ID,ID可用作物理APIC ID表60A内的索引(其地址从VMCB装入客户中断控制单元34A-34B中)。可因此对物理IPI访问gAPIC状态指针和IR场。
如果IPI具有逻辑APIC ID,则逻辑APIC ID可用作逻辑APIC ID表60B内的索引。逻辑APIC ID的最高有效部分可识别群集。因此,表被细分成群集,每个群集可包括该群集的每个逻辑成员的一个或多个条目。群集中的成员的数量可根据模式而变化(例如,x1APIC平坦模式可包括每群集高达八个成员;x1APIC群集模式可包括每群集四个成员;以及x2APIC模式可包括高达十六个群集成员。逻辑APIC ID表60B可依尺寸排列以处理任何模式,所以在这个实施方案中每个群集细分可包括16个成员。
如图6所示,逻辑APIC ID表60B中的每个条目可将相应的群集成员映射到该群集成员的物理APIC ID。从逻辑APIC ID表60B输出的物理APIC ID可用作物理APIC ID表60A内的索引,物理APICID表60A可为vCPU提供gAPIC状态指针和IR场。
接着转到图7,示出了说明设备中断管理器38响应于从外围设备接收到中断消息的一个实施方案的操作的流程图。虽然为了容易理解以特定的顺序示出块,但可使用其它顺序。可在设备中断管理器38中的组合逻辑中并行地执行块。块、块的组合和/或流程图可在多个时钟周期内管道化。通常,设备中断管理器38可配置成实现图7所示的操作。
设备中断管理器38可响应于BDF和从外围设备接收的中断信息来访问设备表62和中断重映射表64。设备中断管理器38可从中断重映射表64接收G/H指示,且如果中断是针对主机(决策块100,“是”分支),则设备中断管理器38可具有(可能重映射的)目的地ID和矢量的中断消息发送到APIC 32A-32B(块108)。
如果设备中断是针对根据G/H指示的客户(决策块100,“否”分支),则设备中断管理器38可为客户/vCPU纪录在gAPIC状态条目中的中断。在支持设备中断的逻辑APIC ID的一些实施方案中,设备中断管理器38可通过逻辑APCI ID表60B将逻辑APIC ID转换成物理APIC ID(块102)。
设备中断管理器38可配置成使用来自设备表62的AIDTP和设备中断的物理APIC ID来确定来自物理APIC ID表60A的gAPIC状态条目指针(块110)。设备中断管理器38可配置成设置相应于在gAPIC状态条目90中表示的IRR中的中断矢量的位(块112)。此外,设备中断管理器38可使用来自物理APIC ID表60A的IR指示来确定由中断定向的vCPU是否正在运行(决策块104)。如果vCPU不正在运行(决策块104,“否”分支),则设备中断管理器38可例如在事件队列中记录VMM 18的日志消息(块106)。VMM 18可随后处理日志消息以调度vCPU。其它实施方案可用其它方式为未运行的vCPU传递中断的接收。如果vCPU正在运行(决策块104,“是”分支),则正在运行vCPU的处理器30A-30B中的客户中断控制单元34A-34B可使用观看区机制来探测IRR位的更新(块112)。在另一实施方案中,设备中断管理器38可将客户中断控制消息发送到处理器30A-30B以指示客户中断的接收(块116)。
物理中断可以是广播或单个目的地。如果物理中断是广播(决策块114,“是”分支),则设备中断管理器38可配置成对客户的虚拟机中的每个目的地(例如每个vCPU)重复块110、112、104、106和116。可选地,可由设备中断管理器38通过将中断记录在VMM 18(例如事件队列)可访问的数据结构中来处理被广播的物理中断。设备中断管理器38也可配置成告知VMM 18(例如,引起从处理器30A-30B之一上的虚拟机退出)以告知VMM 18该事件。可选地,设备中断管理器38可仅周期性地告知VMM 18(例如一旦每N毫秒和/或在事件队列中的高水印处),且VMM 18也可周期性地检查事件队列以比告知可能支持的更快地服务于任何事件。在一个实施方案中,事件队列可由IOMMU 40而不是设备中断管理器38管理。可对多播逻辑中断实现类似的机制,对在中断的逻辑APIC ID的矢量部分中的每个目的地重复块102、110、112、104、106和116。
图8-11是示出处理器30A-30B(且更具体地,客户中断控制单元34A-34B)响应于计算机系统5中的各种指令和/或其它事件的一个实施方案的操作。客户中断控制单元34A-34B可配置成实现在每个流程图中示出的操作。如前所述,客户中断控制单元34A-34B的一些或全部可用微代码实现。在这样的实施方案中,客户中断控制单元34A-34B可配置成通过为在处理器中的执行分派微代码而实现操作。虽然为了容易理解在流程图中以特定的顺序示出了块,可使用其它顺序。可在客户中断控制单元34A-34B中的组合逻辑中并行地执行块。块、块的组合和/或流程图作为整体可在多个时钟循环中管道化。
图8对一个实施方案示出处理器30A-30B中的客户中断控制单元34A-34B响应于执行VMRUN指令的处理器的操作。客户中断控制单元可为处理器中的APIC访问实现俘获/故障操作(块120)。处理器硬件可配置成在这个实施方案中为vCPU将APIC访问转换成对gAPIC状态条目90的存储器访问,或APIC访问可用微代码实现。如果需要,很多gAPIC访问可在收回时被俘获以允许VMM仿真任何副效应。然而,一些操作可执行对gAPIC状态的不可恢复的改变,且这样的访问可能发生故障,并在VMM中被执行。在一个实施方案中,客户中断状态可被重新评估(例如,以探测在vCPU不正在运行的时间期间的中断的传送)。图10的操作可被实现为例如VMRUN指令的部分。
如果观看区操作被实现,则客户中断控制单元可实现在gAPIC状态条目90中的IRR位上的观看区(块122)。例如,客户中断控制单元可使用来自VMCB 22的gAPIC状态条目指针来读取覆盖高速缓冲存储器内的IRR位的gAPIC状态条目90中的一个或多个缓存块,并可开始监控对缓存块的更新。其它实施方案可实现客户中断控制操作以告知对vCPU接收到客户中断,且观看区可以不被实现。
处理器可执行响应于VMRUN指令而执行的各种其它处理(块124)。例如,从VMCB 22装入的各种处理器状态可被装入,处理器状态可保存到VMM状态保存区,等等。在一些实施方案中,块124的操作可在块120和122之前、之后和/或与块120和122交错地出现。
图9对一个实施方案示出响应于来自客户的VMExit的操作。客户中断控制单元可对APIC访问禁止俘获/错误行为(块126)。此外,如果观看区操作用于探测对vCPU接收的中断,则观看区可被禁用(块128),且处理器可继续其它VMExit处理(例如,将状态保存到VMCB22,恢复VMM 18状态,等等)(块130)。在一些实施方案中,块130的操作可在块126和128之前、之后和/或与块126和128交错地出现。
现在转到图10,示出了说明客户中断控制单元响应于处理器在处理器上执行的vCPU探测到客户中断的一个实施方案的操作的流程图。客户中断可用各种方式被探测到:在观看区中探测更新;接收客户中断控制消息;等等。
客户中断控制单元可对vCPU从gAPIC状态条目90读取IRR和ISR数据内容(块132)。如果客户TPR不在处理器中实现,则TPR也可被读取。客户中断控制单元可比较在IRR中记录的对vCPU中的当前传送的中断和当前TPR不正在服务的最高优先级中断(块134)。如果最高优先级中断是比TPR和最高优先级正在服务中断高的优先级(决策136,“是”分支),则客户中断控制单元可将新的较高优先级中断传送到vCPU(块138)。在各种实施方案中,用于将中断注入客户中的机制可变化。如前所述,处理器可包括用于使客户中断排队以在执行期间中断客户的硬件。在这样的实施方案中,客户中断控制单元可给硬件装入对较高优先级中断的信息。
对于以微代码实现图10的操作的客户中断控制单元的实施方案,客户中断的探测可能引起对微代码的俘获。在这种情况下,俘获可能不直接与被俘获的指令有关。然而,俘获可允许微代码执行并采用中断。微代码可被执行以响应于俘获而实现图10所示的操作。
图11是示出用于在包括客户中断控制单元的处理器上的vCPU中进行指令执行的客户中断控制单元的一个实施方案的操作的流程图。如果指令不是APIC访问(决策块140,“否”分支)或是APIC访问(决策块140,“是”路径),且处理器不正在执行客户(即,处理器正执行主机—决策块142,“否”分支),则客户中断控制单元可以不采取行动,且指令可被正常执行(块144)。在这个背景中,正常执行可以指在没有来自客户中断控制单元的干扰的情况下的执行。指令仍可经由客户中的拦截配置而被拦截,可经历例外等。
如果指令是APIC访问(决策块140,“是”分支)并在客户执行中(决策块142,“是”分支),则客户中断控制单元可确定是否访问是加速访问(决策块146)。加速访问可以是由客户中断控制单元实现的访问,包括可由访问引起的任何副效应。在一个实施方案中,可用微代码实现访问,包括任何副效应。如果访问不是加速访问,则客户中断控制单元可执行对gAPIC状态条目的访问,如果指令被俘获(无故障)(块148)。如前所述,大部分指令可被俘获。有错误的指令可以是如果被允许收回则引起不可恢复的状态变化的指令。例如,写到IRR、ISR和任选地TMR可能是错误的,因为中断状态可能被这些指令盖写。此外,在一个实施方案中,对当前计数寄存器的访问可能对仿真是错误的,因为当前计数寄存器是根据应用于集成电路66的时钟操作的自由运行计数器。虚拟化的开销可能在计数器中是可探测的,如果它没有被仿真。其它访问可被俘获。其它实施方案可产生被俘获和有错误的指令的不同描绘。
如果VMM 18仿真操作的一个或多个副效应(决策块150,“是”分支),则客户中断控制单元可VMExit到VMM 18(块152)。一些访问可能没有副效应(例如,大部分读操作)。写操作和一些读操作可能有副效应(例如,预期响应于写的APIC的操作),且这些副效应可在VMM 18中被仿真。在这种背景下,副效应可以是除了更新状态(对于写)或目标寄存器(对于读)以外的任何操作。如果没有被VMM 18仿真的副效应(决策块150,“否”分支),则对指令的操作可以是完整的。
如果访问被加速(决策块146,“是”分支),则客户中断控制单元可以读或写在相应于由指令访问的寄存器的gAPIC状态条目中的位置(块154)。被加速的这组访问可从一个实施方案到另一实施方案变化。通常,可能频繁地出现和/或否则可能是性能关键的访问可以是对加速的候选。在一个实施方案中,对ICRL(其可引起IPI)、TPR和EOI寄存器的访问可被加速。如果访问是对TPR或EOI,或访问是对ICRL但不引起IPI(决策块156,“否”分支),则客户中断控制单元可实现任何其它副效应(如果有的话),且指令可被完成(块158)。如果指令引起IPI(决策块156,“是”分支),则客户中断控制单元可使用APIC ID表60来将IPI的目的地ID转换到目标vCPU的gAPIC状态指针(块160)。逻辑APIC ID表60B和物理APIC ID表60A的基本地址可从VMCB 22得到,并可当在处理器上执行的vCPU被调用时装入处理器中。客户中断控制单元可以写在gAPIC状态中的IRR以记录IPI(块162)。如果客户中断控制消息用于传达中断已被记录且目标vCPU正在运行,则客户中断控制单元可将客户中断控制消息发送到目标处理器(块164)。如果目标vCPU不正在运行(决策块166,“否”分支),则处理器可VMExit以允许VMM 18调度目标vCPU(块168)。
类似于上面关于图7对广播物理中断的讨论,如果IPI被广播(物理的)或具有多个目标(逻辑的),则客户中断控制单元可通过更新多个gAPIC状态条目来支持多个目标或可对多目标IPI退出到VMM 18。
图16是示出可用于将客户中断控制消息(和客户IPI)传送到处理器30A中的客户中断控制单元38A的MSR接口的一个实施方案的方框图。图16中示出的是客户中断控制单元38A和MSR单元212(这两者都是处理器30A的部分)、特许代码210和APIC 32A。客户中断控制单元38A耦合到MSR单元212,其包括MSR 214。MSR 214可存储客户中断有效(GIV)位。其它中断相关的数据也可存储在MSR214中。MSR单元212耦合到APIC 32A。
因此,APIC 32A可接收客户中断控制消息,并可配置成发送对MSR 214的更新。该更新可以设置GIV位。响应于所设置的GIV位,客户中断控制单元38A可处理所接收的客户中断(例如,如图10所示)。GIV位的设置可以使客户中断控制单元38A中的电路发起客户中断的处理。可选地,GIV位的设置可使来自客户中断控制单元38A的微代码的发出发起客户中断的处理。
如前所述,特许代码210可访问MSR单元212(包括MSR 214)。特许代码210可包括VMM 18以及可在处理器30A上执行的其它特许代码(例如,主机OS代码等)。然而,非特许代码和客户代码可以不访问MSR 214。
图12-14是示出VMM 18使用前述硬件来支持客户中断虚拟化的一个实施方案的高级操作的流程图。由VMM 18实现的很多其它操作没有在这些流程图中示出,且那些不同的其它操作的部分可与所示操作交错和/或可在所示操作之前和/或之后被执行。虽然为了容易理解在流程图中以特定的顺序示出块,但可使用其它顺序。VMM 18可包括指令,其在被执行时实现流程图中所示的操作。
图12是示出在用于在计算机系统5上执行的客户的初始化期间VMM 18的操作的一个实施方案。也就是说,初始化可包括在计算机系统5上执行客户之前创建描述客户的虚拟机的数据结构。VMM 18可为客户中的每个vCPU建立gAPIC状态(块170)。建立gAPIC状态可例如包括分配状态的页和插入状态的初始值。初始值可例如相应于APIC的重置状态。
VMM 18可为客户建立APIC ID表60,基于每个vCPU的APICID将gAPIC状态条目指针映射到客户的所分配的页(块172)。VMM18也可初始化IR指示以指示不运行。对于可分配给客户的任何外围设备,VMM 18可使用中断重映射表64和物理APIC ID表60B的指针来对设备表62编程。VMM 18可为客户对中断重映射表64编程并设置G/H位以指示客户(块174)。
图13是示出VMM 18在初始化完成之后为中断虚拟化支持客户的操作的一个实施方案的流程图。如果VMM 18调度用于执行的客户或解调度客户的vCPU(决策块176,“是”分支),则VMM 18可更新物理APIC ID表60A的条目中的IR字段,该条目相应于该vCPU以指示运行(调度的客户)或不正在运行(解调度的客户)(块178)。如果对APIC访问探测到VMExit(决策块180,“是”分支),则VMM 18可基于gAPIC状态来仿真APIC访问(块182)。如果VMM 18探测到指示中断(其以不正在运行的vCPU为目标)已被接收到的来自IOMMU 40的日志条目(决策块184,“是”分支),VMM 18可优先考虑用于调度来处理中断的目标vCPU(块186)。
图14是示出VMM 18删除来自系统的客户的一个实施方案的操作的流程图。VMM 18可更新设备表62和中断重映射表64以移除任何外围设备的客户分配(块188)。VMM 18也可删除客户的gAPIC状态条目90和APIC ID表60(块190)。
接着转到图15,示出了计算机可读存储介质200的方框图。一般来说,计算机可读存储介质可包括在用于向计算机提供指令和/或数据期间由计算机可访问的任何存储器介质。例如,计算机可读存储介质可包括存储介质例如磁性或光学介质,例如磁盘(固定或可移动)、磁带、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、HDDVD和/或蓝光盘。存储介质还可包括经由外围接口例如通用串行总线(USB)接口或任何其它接口可访问的易失性或非易示性存储介质例如RAM(例如,同步动态RAM(SDRAM)、RambusDRAM(RDRAM)、静态RAM(SRAM)等)、ROM、闪存、非易失性存储器(例如闪存)等。存储介质可包括微机电系统(MEMS)以及经由通信介质例如网络和/或无线链路可访问的存储介质。图15中的计算机可读存储介质200可存储VMM 18,其可实现在图12-14的流程图中示出的操作的全部或一部分和/或在本描述中被分配给VMM 18的任何其它功能。计算机可读存储介质200可存储微代码202或其它指令和/或数据(例如,Verilog或某种其它硬件描述语言),其可为以微代码实现的客户中断控制单元34A的部分实现在图8-13的流程图中所示的操作的全部或一部分和/或在本描述中分配给微代码的任何其它功能。通常,计算机可读存储介质200可存储指令的任何集合,指令在被执行时实现图8-13中示出的流程图的一部分或全部。在一些实现中,在本文对处理器30A(以及更具体地,客户中断控制单元34A)描述的操作的一部分或全部可在硬件中实现,且类似地,IOMMU40(且更具体地,设备中断管理器38)可在硬件中实现。计算机可读存储介质200可存储这样的硬件的任何期望的表示。例如,该表示可以是以高级设计语言(HDL)例如Verilog或VHDL的硬件功能的行为级描述或寄存器传输级(RTL)描述。该描述可由合成工具读取,合成工具可合成该描述以产生包括来自合成库的门的列表的网络表。网络表包括也代表包括系统10的硬件的功能的一组门。网络表可接着被放置和路由以产生描述待应用于掩码的几何形状的数据集。掩码可接着在各种半导体制造步骤中用于产生相应于系统10的一个或多个半导体电路。可选地,在计算机可访问存储介质300上的表示按需要可以是网络表(有或没有合成库)或数据集。指令可用于通过例如掩码工作的产生来配置电路制造设施,当被这样配置时,制造设施适合于产生集成电路,其实现在图8-13的流程图中描述的操作的一部分或全部和/或在本文对处理器30A、客户中断控制单元34A、IOMMU 40和/或设备中断管理器38描述的操作的一部分或全部。载体介质可包括计算机可访问存储介质以及传输介质例如有线或无线传输。
一旦上面的公开被充分认识到,很多变化和修改就将对本领域技术人员变得明显。意图是下面的权利要求被解释为包括所有这样的变化和修改。
Claims (20)
1.一种配置成从分配给客户的设备接收中断的设备中断管理器,其中所述设备中断管理器配置成在存储器位置上发送用于记录中断的操作,其中所述存储器位置与所述客户内的虚拟处理器相关,其中所述中断以所述虚拟处理器为目标。
2.如权利要求1所述的设备中断管理器,还配置成响应于一个或多个表来识别相应于所述虚拟处理器的所述存储器位置,其中在所述一个或多个表中的条目响应于与所述中断相关的中断控制器标识符而被选择。
3.如权利要求2所述的设备中断管理器,其中所述中断控制器标识符是物理中断控制器标识符。
4.如权利要求2所述的设备中断管理器,还配置成将所述设备发送的中断矢量重映射到用于识别所述一个或多个表中的所述条目的所述中断控制器标识符。
5.如权利要求2所述的设备中断管理器,还配置成响应于在所述条目中的指示来确定所述虚拟处理器是否在硬件处理器上是活动的,且其中所述设备中断管理器配置成响应于探测到所述虚拟处理器在所述硬件处理器上是活动的而发送指向所述硬件处理器的中断消息。
6.如权利要求5所述的设备中断管理器,还配置成响应于探测到所述虚拟处理器不正在所述硬件处理器上运行而将写操作发送到系统存储器以记录调度所述虚拟处理器的请求。
7.一种方法,包括:
设备中断管理器在存储器位置上记录中断,其中所述存储器位置与虚拟处理器相关,所述虚拟处理器与所述设备所分配到的客户相关,其中所述中断以所述虚拟处理器为目标。
8.如权利要求7所述的方法,还包括:
所述设备中断管理器选择在被编程为将中断控制器标识符映射到虚拟处理器的一个或多个表中的条目,其中所述设备中断管理器选择所述条目是响应于与所述中断相关的中断控制器标识符;以及
所述设备中断管理器经由存储在所述条目中的地址来识别所述存储器位置。
9.如权利要求8所述的方法,其中所述中断控制器标识符是物理中断控制器标识符。
10.如权利要求8所述的方法,还包括所述设备中断管理器将所述设备发送的中断矢量重映射到用于识别所述条目的所述中断控制器标识符。
11.如权利要求8所述的方法,还包括:
所述设备中断管理器响应于存储在所述条目中的数据而确定所述虚拟处理器在硬件处理器上是活动的;以及
所述设备中断管理器响应于探测到所述虚拟处理器在所述硬件处理器上是活动的而发送指向所述硬件处理器的中断消息。
12.如权利要求8所述的方法,还包括:
所述设备中断管理器响应于存储在所述条目中的数据而确定所述虚拟处理器在硬件处理器上不是活动的;以及
所述设备中断管理器响应于探测到所述虚拟处理器在所述硬件处理器上不是活动的而将写操作发送到所述系统存储器以记录调度所述虚拟处理器的请求。
13.一种包括数据结构的计算机可读存储介质,所述数据结构由在计算机系统上可执行的程序操作,所述程序在所述数据结构上操作以执行制造包括所述数据结构所描述的电路的集成电路的过程的一部分,在所述数据结构中描述的所述电路包括配置成从分配给客户的设备接收中断的设备中断管理器,其中所述设备中断管理器配置成在存储器位置上发送用于记录所述中断的操作,其中所述存储器位置与所述客户内的虚拟处理器相关,其中所述中断以所述虚拟处理器为目标。
14.如权利要求13所述的计算机可读存储介质,其中所述设备中断管理器还配置成响应于一个或多个表而识别相应于所述虚拟处理器的所述存储器位置,其中在所述一个或多个表中的条目响应于与所述中断相关的中断控制器标识符而被选择。
15.如权利要求13所述的计算机可读存储介质,其中所述设备中断管理器还配置成确定所述虚拟处理器是否被分配给用于执行的硬件处理器,且其中所述设备中断管理器配置成响应于探测到所述虚拟处理器被分配给所述硬件处理器而发送指向所述硬件处理器的中断消息。
16.一种存储多个指令的计算机可读存储介质,当所述指令在计算机上被执行时:
探测到中断被记录在相应于虚拟机中的虚拟处理器的存储器位置上,所述中断由分配给所述虚拟机的设备提供;以及
响应于所述中断对所述虚拟处理器被记录而调度用于在所述计算机中的硬件处理器上执行的所述虚拟处理器,以便服务于所述中断。
17.如权利要求16所述的计算机可读存储介质,其中在被执行时探测到中断被记录的所述指令包括在被执行时读取存储在所述计算机中探测的事件日志的另一存储器位置的指令,其中所述事件日志由所述计算机系统中的设备中断管理器更新,其中所述设备中断管理器配置成接收所述中断并确定所述中断被定向在所述虚拟处理器。
18.如权利要求17所述的计算机可读存储介质,其中在被执行时调度所述虚拟处理器的所述指令包括在被执行时更新一个或多个表以指示所述虚拟处理器是活动的指令,所述一个或多个表将中断映射到虚拟处理器。
19.如权利要求18所述的计算机可读存储介质,还包括存储在被执行时解调度所述虚拟处理器并更新所述一个或多个表以指示所述虚拟处理器是不活动的指令。
20.如权利要求19所述的计算机可读存储介质,还包括存储在被执行时当设备被分配给客户时管理在所述一个或多个表中的所述数据的指令。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US30193710P | 2010-02-05 | 2010-02-05 | |
US61/301,937 | 2010-02-05 | ||
US12/961,186 US8489789B2 (en) | 2010-02-05 | 2010-12-06 | Interrupt virtualization |
US12/961,186 | 2010-12-06 | ||
PCT/US2011/023942 WO2011097588A2 (en) | 2010-02-05 | 2011-02-07 | Interrupt virtualization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102804143A true CN102804143A (zh) | 2012-11-28 |
Family
ID=44354565
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180013152XA Pending CN102792272A (zh) | 2010-02-05 | 2011-02-07 | 配置成虚拟化客户本地中断控制器的处理器 |
CN2011800146794A Pending CN102804143A (zh) | 2010-02-05 | 2011-02-07 | 中断虚拟化 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180013152XA Pending CN102792272A (zh) | 2010-02-05 | 2011-02-07 | 配置成虚拟化客户本地中断控制器的处理器 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8489789B2 (zh) |
EP (2) | EP2531919A2 (zh) |
JP (2) | JP2013519169A (zh) |
KR (2) | KR20130035996A (zh) |
CN (2) | CN102792272A (zh) |
WO (2) | WO2011097589A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559087A (zh) * | 2013-10-31 | 2014-02-05 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
CN104303154A (zh) * | 2012-06-20 | 2015-01-21 | 英特尔公司 | 监视由虚拟机的资源使用 |
US9697031B2 (en) | 2013-10-31 | 2017-07-04 | Huawei Technologies Co., Ltd. | Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register |
CN113157624A (zh) * | 2021-04-21 | 2021-07-23 | 科东(广州)软件科技有限公司 | 一种串口通信方法、装置、设备及存储介质 |
CN113439267A (zh) * | 2019-02-14 | 2021-09-24 | 国际商业机器公司 | 具有应变方案的定向中断虚拟化 |
Families Citing this family (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
JP5440419B2 (ja) * | 2010-06-29 | 2014-03-12 | 富士通セミコンダクター株式会社 | 情報処理システム |
US8495217B2 (en) * | 2010-09-30 | 2013-07-23 | International Business Machines Corporation | Mechanism for preventing client partition crashes by removing processing resources from the client logical partition when an NPIV server goes down |
US20120166172A1 (en) * | 2010-12-23 | 2012-06-28 | Fleming Bruce L | Providing legacy computing compatibility |
US8578080B2 (en) * | 2011-07-01 | 2013-11-05 | Intel Corporation | Secure handling of interrupted events utilizing a virtual interrupt definition table |
US8631181B2 (en) * | 2011-09-26 | 2014-01-14 | Oracle International Corporation | Validating message-signaled interrupts by tracking interrupt vectors assigned to devices |
US8910158B2 (en) * | 2011-12-14 | 2014-12-09 | Intel Corporation | Virtualizing interrupt priority and delivery |
US8656079B2 (en) * | 2011-12-19 | 2014-02-18 | Advanced Micro Devices, Inc. | Method and apparatus for remapping interrupt types |
US9552313B2 (en) * | 2011-12-28 | 2017-01-24 | Intel Corporation | Delivering real time interrupts with an advanced programmable interrupt controller |
US9038084B2 (en) | 2012-02-23 | 2015-05-19 | International Business Machines Corporation | Managing utilization of physical processors of a shared processor pool in a virtualized processor environment |
ES2802173T3 (es) * | 2012-03-29 | 2021-01-15 | Hitachi Ltd | Método de planificación de ordenador virtual |
US9229884B2 (en) | 2012-04-30 | 2016-01-05 | Freescale Semiconductor, Inc. | Virtualized instruction extensions for system partitioning |
US9152587B2 (en) | 2012-05-31 | 2015-10-06 | Freescale Semiconductor, Inc. | Virtualized interrupt delay mechanism |
CN102750178B (zh) * | 2012-06-08 | 2015-04-29 | 华为技术有限公司 | 通信设备硬件资源的虚拟化管理方法及相关装置 |
JP5933356B2 (ja) * | 2012-06-12 | 2016-06-08 | ルネサスエレクトロニクス株式会社 | コンピュータシステム |
US9436626B2 (en) * | 2012-08-09 | 2016-09-06 | Freescale Semiconductor, Inc. | Processor interrupt interface with interrupt partitioning and virtualization enhancements |
US9442870B2 (en) * | 2012-08-09 | 2016-09-13 | Freescale Semiconductor, Inc. | Interrupt priority management using partition-based priority blocking processor registers |
US9424199B2 (en) * | 2012-08-29 | 2016-08-23 | Advanced Micro Devices, Inc. | Virtual input/output memory management unit within a guest virtual machine |
US8806104B2 (en) | 2012-09-25 | 2014-08-12 | Intel Corporation | Enabling virtualization of a processor resource |
US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9355040B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9009368B2 (en) | 2012-10-23 | 2015-04-14 | Advanced Micro Devices, Inc. | Interrupt latency performance counters |
US10078603B2 (en) * | 2012-11-30 | 2018-09-18 | Red Hat Israel, Ltd. | MSI events using dynamic memory monitoring |
US9075789B2 (en) * | 2012-12-11 | 2015-07-07 | General Dynamics C4 Systems, Inc. | Methods and apparatus for interleaving priorities of a plurality of virtual processors |
US20140201416A1 (en) * | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9235538B2 (en) * | 2013-02-07 | 2016-01-12 | Red Hat Israel, Ltd. | Injecting interrupts in virtualized computer systems |
US10331589B2 (en) * | 2013-02-13 | 2019-06-25 | Red Hat Israel, Ltd. | Storing interrupt location for fast interrupt register access in hypervisors |
US9329880B2 (en) | 2013-02-13 | 2016-05-03 | Red Hat Israel, Ltd. | Counter for fast interrupt register access in hypervisors |
US9830286B2 (en) | 2013-02-14 | 2017-11-28 | Red Hat Israel, Ltd. | Event signaling in virtualized systems |
US9378162B2 (en) | 2013-05-21 | 2016-06-28 | Arm Limited | Handling and routing interrupts to virtual processors |
CN104239238B (zh) * | 2013-06-21 | 2018-01-19 | 格芯公司 | 用于管理转换旁视缓冲的方法和装置 |
US9015374B2 (en) | 2013-07-09 | 2015-04-21 | Advanced Micro Devices, Inc. | Virtual interrupt filter |
JP6029550B2 (ja) * | 2013-07-19 | 2016-11-24 | 株式会社日立製作所 | 計算機の制御方法及び計算機 |
GB2517493A (en) * | 2013-08-23 | 2015-02-25 | Advanced Risc Mach Ltd | Handling access attributes for data accesses |
WO2015031279A1 (en) | 2013-08-26 | 2015-03-05 | Vmware, Inc. | Pass-through network interface controller configured to support latency sensitive virtual machines |
US9355050B2 (en) | 2013-11-05 | 2016-05-31 | Qualcomm Incorporated | Secure, fast and normal virtual interrupt direct assignment in a virtualized interrupt controller in a mobile system-on-chip |
US9465760B2 (en) * | 2013-11-18 | 2016-10-11 | Futurewei Technologies, Inc. | Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters |
EP3089033B1 (en) * | 2013-12-27 | 2020-10-07 | Hitachi, Ltd. | Realtime hypervisor with priority interrupt support |
JP6157719B2 (ja) * | 2014-03-07 | 2017-07-05 | 株式会社日立製作所 | 計算機 |
WO2015159359A1 (ja) * | 2014-04-15 | 2015-10-22 | 株式会社日立製作所 | 物理計算機 |
US9507740B2 (en) | 2014-06-10 | 2016-11-29 | Oracle International Corporation | Aggregation of interrupts using event queues |
US9396142B2 (en) * | 2014-06-10 | 2016-07-19 | Oracle International Corporation | Virtualizing input/output interrupts |
KR101847518B1 (ko) | 2014-06-20 | 2018-05-28 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 가상화 플랫폼에 의한 중단을 처리하는 및 관련 장치 |
US9665509B2 (en) * | 2014-08-20 | 2017-05-30 | Xilinx, Inc. | Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system |
US9697154B2 (en) * | 2014-08-20 | 2017-07-04 | Red Hat Israel, Ltd. | Managing message signaled interrupts in virtualized computer systems |
WO2016092667A1 (ja) * | 2014-12-11 | 2016-06-16 | 株式会社日立製作所 | 計算機及び割込み制御方法 |
US9772870B2 (en) * | 2015-01-29 | 2017-09-26 | Red Hat Israel, Ltd. | Delivering interrupts to virtual machines executing privileged virtual machine functions |
GB2541133B (en) * | 2015-06-16 | 2018-01-03 | Nordic Semiconductor Asa | Interrupt generating unit |
EP3118740B1 (en) | 2015-07-15 | 2021-09-08 | Huawei Technologies Co., Ltd. | Device and method for hardware virtualization support |
US9779043B2 (en) * | 2015-11-16 | 2017-10-03 | International Business Machines Corporation | Techniques for handling queued interrupts in a data processing system |
US10846117B1 (en) * | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
US20170206091A1 (en) * | 2016-01-20 | 2017-07-20 | International Business Machines Corporation | Sharing ownership of an input/output device with an existing partition |
US10042720B2 (en) | 2016-02-22 | 2018-08-07 | International Business Machines Corporation | Live partition mobility with I/O migration |
US10042723B2 (en) | 2016-02-23 | 2018-08-07 | International Business Machines Corporation | Failover of a virtual function exposed by an SR-IOV adapter |
US10002018B2 (en) | 2016-02-23 | 2018-06-19 | International Business Machines Corporation | Migrating single root I/O virtualization adapter configurations in a computing system |
US10025584B2 (en) | 2016-02-29 | 2018-07-17 | International Business Machines Corporation | Firmware management of SR-IOV adapters |
US10671419B2 (en) * | 2016-02-29 | 2020-06-02 | Red Hat Israel, Ltd. | Multiple input-output memory management units with fine grained device scopes for virtual machines |
US20210026950A1 (en) * | 2016-03-07 | 2021-01-28 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
KR102509986B1 (ko) | 2016-03-28 | 2023-03-14 | 삼성전자주식회사 | 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법 |
US10956345B2 (en) * | 2016-04-01 | 2021-03-23 | Intel Corporation | Enhanced directed system management interrupt mechanism |
US10180854B2 (en) * | 2016-09-28 | 2019-01-15 | Intel Corporation | Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine |
US9720862B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9720863B1 (en) | 2016-10-21 | 2017-08-01 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9715469B1 (en) * | 2016-10-21 | 2017-07-25 | International Business Machines Corporation | Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9740647B1 (en) | 2016-10-21 | 2017-08-22 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US9760512B1 (en) | 2016-10-21 | 2017-09-12 | International Business Machines Corporation | Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system |
US9785451B1 (en) | 2016-10-21 | 2017-10-10 | International Business Machines Corporation | Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system |
US10635479B2 (en) * | 2016-12-19 | 2020-04-28 | Bitdefender IPR Management Ltd. | Event filtering for virtual machine security applications |
US11200183B2 (en) | 2017-03-31 | 2021-12-14 | Intel Corporation | Scalable interrupt virtualization for input/output devices |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
CN109144679B (zh) | 2017-06-27 | 2022-03-29 | 华为技术有限公司 | 中断请求的处理方法、装置及虚拟化设备 |
TWI621946B (zh) * | 2017-06-28 | 2018-04-21 | 緯創資通股份有限公司 | 排程方法、PCIe控制器及其相關電子系統 |
US11036541B2 (en) * | 2017-09-19 | 2021-06-15 | Microsoft Technology Licensing, Llc | Interrupt management for a hypervisor |
JP2019114097A (ja) | 2017-12-25 | 2019-07-11 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
CN108123850B (zh) * | 2017-12-25 | 2020-04-24 | 上海交通大学 | 针对中断持有者抢占问题的综合调度方法及装置 |
CN108334282B (zh) * | 2017-12-28 | 2021-07-09 | 宁德时代新能源科技股份有限公司 | 汽车电子控制单元的程序文件下载方法和装置 |
WO2019127191A1 (zh) * | 2017-12-28 | 2019-07-04 | 深圳前海达闼云端智能科技有限公司 | 一种多操作系统共享文件系统的方法、装置和电子设备 |
GB2571922B (en) * | 2018-03-05 | 2020-03-25 | Advanced Risc Mach Ltd | External exception handling |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
EP3924822A4 (en) | 2019-02-14 | 2022-11-23 | International Business Machines Corporation | DIRECTED INTERRUPT VIRTUALIZATION WITH CLOCK FLAG |
JP7482882B2 (ja) | 2019-02-14 | 2024-05-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチレベルの仮想化のための有向割り込み方法、システム、プログラム |
EP3924819A1 (en) * | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
WO2020164935A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
EP3924817A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt virtualization |
US11204796B2 (en) * | 2019-04-11 | 2021-12-21 | International Business Machines Corporation | Dynamic assignment of interrupts based on input/output metrics |
US10949243B2 (en) | 2019-04-26 | 2021-03-16 | Red Hat, Inc. | Reducing IPI overhead with CPU overcommit support via IPI broadcast |
US11194611B2 (en) | 2019-07-29 | 2021-12-07 | International Business Machines Corporation | Dynamic assignment of interrupts based on input/output metrics |
US11042495B2 (en) | 2019-09-20 | 2021-06-22 | Advanced Micro Devices, Inc. | Providing interrupts from an input-output memory management unit to guest operating systems |
US11842227B2 (en) * | 2019-10-10 | 2023-12-12 | Advanced Micro Devices, Inc. | Hypervisor secure event handling at a processor |
US10922253B1 (en) * | 2019-10-22 | 2021-02-16 | Vmware, Inc. | Implementing interrupt remapping via input/output memory management unit faults |
US11281607B2 (en) | 2020-01-30 | 2022-03-22 | Red Hat, Inc. | Paravirtualized cluster mode for legacy APICs |
CN114077379B (zh) * | 2020-08-19 | 2024-03-26 | 华为技术有限公司 | 一种计算机设备、异常处理的方法以及中断处理的方法 |
CN112084128B (zh) * | 2020-09-09 | 2023-01-17 | 中国航空工业集团公司雷华电子技术研究所 | 消息中断通信方法、计算机设备和存储介质 |
US11989144B2 (en) | 2021-07-30 | 2024-05-21 | Advanced Micro Devices, Inc. | Centralized interrupt handling for chiplet processing units |
US11755512B2 (en) * | 2021-08-17 | 2023-09-12 | Red Hat, Inc. | Managing inter-processor interrupts in virtualized computer systems |
US11550745B1 (en) | 2021-09-21 | 2023-01-10 | Apple Inc. | Remapping techniques for message signaled interrupts |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205272A1 (en) * | 2003-03-31 | 2004-10-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7209994B1 (en) * | 2004-05-11 | 2007-04-24 | Advanced Micro Devices, Inc. | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests |
US20070157197A1 (en) * | 2005-12-30 | 2007-07-05 | Gilbert Neiger | Delivering interrupts directly to a virtual processor |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222215A (en) * | 1991-08-29 | 1993-06-22 | International Business Machines Corporation | Cpu expansive gradation of i/o interruption subclass recognition |
US5689713A (en) | 1995-03-31 | 1997-11-18 | Sun Microsystems, Inc. | Method and apparatus for interrupt communication in a packet-switched computer system |
US5892970A (en) * | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | Multiprocessing system configured to perform efficient block copy operations |
US6977908B2 (en) * | 2000-08-25 | 2005-12-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for discovering computer systems in a distributed multi-system cluster |
US6622193B1 (en) * | 2000-11-16 | 2003-09-16 | Sun Microsystems, Inc. | Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system |
US7054975B2 (en) | 2001-08-10 | 2006-05-30 | Koninklijke Philips Electronics N.V. | Interrupt generation in a bus system |
US6961806B1 (en) * | 2001-12-10 | 2005-11-01 | Vmware, Inc. | System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems |
US6799231B2 (en) * | 2002-10-22 | 2004-09-28 | Asix Electronics Corp. | Virtual I/O device coupled to memory controller |
US20040117532A1 (en) * | 2002-12-11 | 2004-06-17 | Bennett Steven M. | Mechanism for controlling external interrupts in a virtual machine system |
US7281075B2 (en) * | 2003-04-24 | 2007-10-09 | International Business Machines Corporation | Virtualization of a global interrupt queue |
US7130949B2 (en) * | 2003-05-12 | 2006-10-31 | International Business Machines Corporation | Managing input/output interruptions in non-dedicated interruption hardware environments |
US7222203B2 (en) | 2003-12-08 | 2007-05-22 | Intel Corporation | Interrupt redirection for virtual partitioning |
US7467381B2 (en) * | 2003-12-16 | 2008-12-16 | Intel Corporation | Resource partitioning and direct access utilizing hardware support for virtualization |
US20050228921A1 (en) | 2004-03-31 | 2005-10-13 | Prashant Sethi | Sharing of interrupts between operating entities |
US7937700B1 (en) * | 2004-05-11 | 2011-05-03 | Advanced Micro Devices, Inc. | System, processor, and method for incremental state save/restore on world switch in a virtual machine environment |
US7444493B2 (en) | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US7689747B2 (en) * | 2005-03-28 | 2010-03-30 | Microsoft Corporation | Systems and methods for an augmented interrupt controller and synthetic interrupt sources |
US7552236B2 (en) | 2005-07-14 | 2009-06-23 | International Business Machines Corporation | Routing interrupts in a multi-node system |
US7522236B2 (en) * | 2005-09-23 | 2009-04-21 | Apple Inc. | Cosmetically uniform reflective border area in a transflective display |
US7945908B1 (en) * | 2006-03-31 | 2011-05-17 | Vmware, Inc. | Method and system for improving the accuracy of timing and process accounting within virtual machines |
CN100472451C (zh) * | 2006-04-20 | 2009-03-25 | 联想(北京)有限公司 | 一种虚拟机系统及其硬件设备访问方法 |
US7945905B2 (en) | 2006-06-02 | 2011-05-17 | Accenture Global Services Limited | Quality inspector tool |
CN100547571C (zh) * | 2006-08-29 | 2009-10-07 | 联想(北京)有限公司 | 一种虚拟机系统及其硬件设备中断处理方法 |
US7873770B2 (en) * | 2006-11-13 | 2011-01-18 | Globalfoundries Inc. | Filtering and remapping interrupts |
US20080162762A1 (en) * | 2006-12-29 | 2008-07-03 | Gilbert Neiger | Interrupt remapping based on requestor identification |
CN100568181C (zh) * | 2007-06-22 | 2009-12-09 | 浙江大学 | 基于处理器虚拟化技术的虚拟机系统及其实现方法 |
US8453143B2 (en) | 2007-09-19 | 2013-05-28 | Vmware, Inc. | Reducing the latency of virtual interrupt delivery in virtual machines |
JP2009134565A (ja) | 2007-11-30 | 2009-06-18 | Hitachi Ltd | 仮想計算機システム及び仮想計算機システムの制御方法 |
US8195867B2 (en) * | 2008-06-06 | 2012-06-05 | International Business Machines Corporation | Controlled shut-down of partitions within a shared memory partition data processing system |
GB2462258B (en) * | 2008-07-28 | 2012-02-08 | Advanced Risc Mach Ltd | Interrupt control for virtual processing apparatus |
US8234432B2 (en) | 2009-01-26 | 2012-07-31 | Advanced Micro Devices, Inc. | Memory structure to store interrupt state for inactive guests |
US20110107328A1 (en) | 2009-11-02 | 2011-05-05 | Advanced Micro Devices, Inc. | Virtual machine device and methods thereof |
US8566492B2 (en) | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
-
2010
- 2010-12-06 US US12/961,186 patent/US8489789B2/en active Active
- 2010-12-06 US US12/961,189 patent/US20110197004A1/en not_active Abandoned
-
2011
- 2011-02-07 CN CN201180013152XA patent/CN102792272A/zh active Pending
- 2011-02-07 JP JP2012552139A patent/JP2013519169A/ja not_active Withdrawn
- 2011-02-07 KR KR1020127023264A patent/KR20130035996A/ko not_active Application Discontinuation
- 2011-02-07 CN CN2011800146794A patent/CN102804143A/zh active Pending
- 2011-02-07 KR KR1020127023265A patent/KR20120131175A/ko not_active Application Discontinuation
- 2011-02-07 EP EP11712698A patent/EP2531919A2/en not_active Ceased
- 2011-02-07 JP JP2012552140A patent/JP2013519170A/ja not_active Withdrawn
- 2011-02-07 WO PCT/US2011/023943 patent/WO2011097589A2/en active Application Filing
- 2011-02-07 WO PCT/US2011/023942 patent/WO2011097588A2/en active Application Filing
- 2011-02-07 EP EP11710911A patent/EP2531918A2/en not_active Withdrawn
-
2013
- 2013-06-13 US US13/916,647 patent/US8706941B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205272A1 (en) * | 2003-03-31 | 2004-10-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7209994B1 (en) * | 2004-05-11 | 2007-04-24 | Advanced Micro Devices, Inc. | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests |
US20070157197A1 (en) * | 2005-12-30 | 2007-07-05 | Gilbert Neiger | Delivering interrupts directly to a virtual processor |
CN101004726A (zh) * | 2005-12-30 | 2007-07-25 | 英特尔公司 | 直接传送中断到虚拟处理器 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104303154A (zh) * | 2012-06-20 | 2015-01-21 | 英特尔公司 | 监视由虚拟机的资源使用 |
CN104303154B (zh) * | 2012-06-20 | 2017-08-04 | 英特尔公司 | 监视由虚拟机的资源使用 |
CN103559087A (zh) * | 2013-10-31 | 2014-02-05 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
US9697031B2 (en) | 2013-10-31 | 2017-07-04 | Huawei Technologies Co., Ltd. | Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register |
CN103559087B (zh) * | 2013-10-31 | 2017-11-28 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
CN113439267A (zh) * | 2019-02-14 | 2021-09-24 | 国际商业机器公司 | 具有应变方案的定向中断虚拟化 |
CN113157624A (zh) * | 2021-04-21 | 2021-07-23 | 科东(广州)软件科技有限公司 | 一种串口通信方法、装置、设备及存储介质 |
CN113157624B (zh) * | 2021-04-21 | 2021-12-07 | 科东(广州)软件科技有限公司 | 一种串口通信方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2013519169A (ja) | 2013-05-23 |
KR20120131175A (ko) | 2012-12-04 |
JP2013519170A (ja) | 2013-05-23 |
KR20130035996A (ko) | 2013-04-09 |
US8489789B2 (en) | 2013-07-16 |
US20130275638A1 (en) | 2013-10-17 |
US20110197004A1 (en) | 2011-08-11 |
WO2011097589A3 (en) | 2011-09-29 |
CN102792272A (zh) | 2012-11-21 |
WO2011097588A2 (en) | 2011-08-11 |
EP2531919A2 (en) | 2012-12-12 |
EP2531918A2 (en) | 2012-12-12 |
WO2011097588A3 (en) | 2011-09-29 |
US8706941B2 (en) | 2014-04-22 |
WO2011097589A2 (en) | 2011-08-11 |
US20110197003A1 (en) | 2011-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102804143A (zh) | 中断虚拟化 | |
CN102341783B (zh) | 用于各个处理器的辅助中断虚拟化的访客中断控制器 | |
CN101364189B (zh) | 在操作系统协助下实现运行时间处理器迁移的方法和装置 | |
US8938737B2 (en) | Delivering interrupts directly to a virtual processor | |
CN100514297C (zh) | 为与虚拟机监控程序相关联的定时器提供支持 | |
US7707341B1 (en) | Virtualizing an interrupt controller | |
US7209994B1 (en) | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests | |
CN103500137A (zh) | 虚拟化性能计数器 | |
CN102207896A (zh) | 虚拟机崩溃文件生成技术 | |
CN102754076A (zh) | 用于在虚拟化环境中处理i/o操作的方法和设备 | |
CN102597972A (zh) | 虚拟计算机系统、区域管理方法及程序 | |
Grinberg et al. | Architectural virtualization extensions: A systems perspective |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121128 |