CN102341783A - 用于各个处理器的辅助中断虚拟化的访客中断控制器 - Google Patents
用于各个处理器的辅助中断虚拟化的访客中断控制器 Download PDFInfo
- Publication number
- CN102341783A CN102341783A CN2010800098423A CN201080009842A CN102341783A CN 102341783 A CN102341783 A CN 102341783A CN 2010800098423 A CN2010800098423 A CN 2010800098423A CN 201080009842 A CN201080009842 A CN 201080009842A CN 102341783 A CN102341783 A CN 102341783A
- Authority
- CN
- China
- Prior art keywords
- visitor
- interrupt
- interruption
- processor
- interruptable controller
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (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)
- Slot Machines And Peripheral Devices (AREA)
- Storage Device Security (AREA)
Abstract
在一实施方式中,系统包括处理器、与该处理器耦合的第一中断控制器和第二中断控制器。该第一中断控制器被配置为用信号通知处理器中断以对接收第一中断消息作出响应,该第一中断消息传送指向系统中的主机的第一中断。第二中断控制器被配置为用信号通知处理器中断以对接收第二中断消息作出响应,该第二中断消息传送指向访客的第二中断,该访客由主机控制并且在处理器上可执行。
Description
技术领域
本发明涉及处理器和虚拟化,尤其涉及至虚拟机访客(guest)的传送中断。
背景技术
出于各种不同的目的,虚拟化已经被应用在计算机系统中。例如,虚拟化可以被用来在“容器”中执行特权软件(privilegedsoftware)以防止特权软件未经控制虚拟机的虚拟机管理器(VMM)许可就直接存取和/或改变至少一些物理机状态。这样的容器能够防止“有臭虫的(buggy)”或恶意的软件在物理机上产生问题。除此之外,利用虚拟化可以允许两个或两个以上的特权程序在同一个物理机上并发执行。由于控制了对物理机的访问,因此可以防止特权程序彼此干扰。特权程序可以包括操作系统,也可以包括其他当其在硬件上执行时能够对硬件实现完全控制的软件。在另一实施例中,可利用虚拟化以在不同于特权程序所预期的硬件上执行该特权程序。
通常地,处理器或计算机系统的虚拟化可以包括提供一个或多个对虚拟机(上面提到的容器)进行存取的特权程序,且该特权程序能够完全控制虚拟机,但是物理机的控制被VMM保留。上述虚拟机可以包括一个处理器(或多个处理器)、存储器以及特权程序预期在虚拟机中找到并能在其上执行特权程序的各种外围设备。虚拟机的元件可由VMM分配给(至少临时地分配给)虚拟机的硬件来实现,和/或由软件仿真来实现。每一个特权程序(以及某些情况下的相关软件,诸如在操作系统上执行的应用)此处可以被称作访客。虚拟化可以以软件(例如上面提到的VMM)实现,而不需要在其上执行VMM及其虚拟机的物理机中的任何具体的硬件虚拟化支持。然而,如果提供一些硬件支持,那么虚拟化就可以简化和/或达到更高的性能。
虚拟化所引发的一个问题是中断传送的等待时间(latency)。如上所述,外围设备可以被虚拟机分配使用(来作为虚拟机中的虚拟外围设备)。这样的外围设备能够生成有待虚拟机中的软件来处理的中断。在非虚拟化环境中,中断处理的等待时间相对较短。在虚拟化环境中,利用某种软件机制,中断通常可被VMM拦截、处理并传送给目标虚拟机。但是中断处理的等待时间会显著变长(例如,大约增加了100倍)。
发明内容
在一实施方式中,系统包括处理器、与该处理器耦合的第一中断控制器和第二中断控制器。该第一中断控制器被配置为用信号通知处理器中断以对接收第一中断消息作出响应,该第一中断消息传送指向系统中的主机的第一中断。第二中断控制器被配置为用信号通知处理器中断以对接收第二中断消息作出响应,该第二中断消息传送指向访客的第二中断,该访客由主机控制并且在处理器上可执行。
附图说明
下面参照附图来详细描述本发明,现在先简要说明附图。
图1是实行虚拟化的计算机系统的一实施方式的方块图。
图2是图1所示的主机硬件的一实施方式的方块图。
图3是说明被传送给访客的中断的一实施方式的方块图。
图4是说明访客高级可编程中断控制器(APIC)的一实施方式的方框图。
图5是说明访客APIC状态数据结构中的访客APIC状态条目(entry)的一实施方式的方块图。
图6是说明图2所示的访客中断管理器对接收指向访客的中断作出响应的一实施方式的操作流程图。
图7是说明访客APIC对接收中断消息作出响应的一实施方式的操作流程图。
图8是说明虚拟机监视器将访客APIC状态由一个访客改变为另一个访客的一实施方式的操作流程图。
图9是说明在访客APIC状态条目中排列中断状态的一实施方式的方块图。
图10是说明为中断定位访客APIC状态条目的一实施方式的方块图。
图11是说明为中断定位访客APIC状态条目的另一实施方式的方块图。
图12是说明为中断定位访客APIC状态条目的又一实施方式的方块图。
图13是说明为中断定位访客APIC状态条目的再一实施方式的方块图。
图14是图1所示的主机硬件的另一实施方式的方块图。
图15是存储VMM一实施方式的计算机可存取存储介质的一实施方式的方块图。
本发明的具体实施方式通过附图中的实施例示出并在本文中进行详细描述,同时本发明允许种种修正和替代形式。但应该明白的是,此处的附图及相关的详细描述并不试图将本发明限定在所公开的特定形式上,相反地,本发明应涵盖由所附权利要求书所定义的所有落于本发明精神与范围内的修正、等同方式与替代形式。此处使用的标题仅用于组织目的而不意味着限制说明书的范围。本申请中所使用的“可/可以”用来表示许可的意思(也就是具有可能性)而不是强制的意思(也就是必须)。同样的,“包括/包含”意味着包括在其中,但不是仅限于包括在其中的内容。
各种元件、电路或者其他组件可以被描述为“被配置为/用于(configured to)”执行一个或多个任务。在这样的上下文中,“被配置为/用于”是对通常意味着在操作过程中“具有电路系统”来执行一个或多个任务的结构的广义描述。同样地,上述元件/电路/组件可被配置为/用于执行任务即使是在该元件/电路/组件当前未打开时。通常来说,符合“被配置为/用于”的结构的电路系统可包括硬件电路来执行所述操作。类似的,为了便于描述,各种元件/电路/组件可被描述为执行一个或多个任务。这样的描述应该被解释为包括短语“被配置为/用于”。列举被配置为/用于执行一个或多个任务的元件/电路/组件并不特别意指使用35U.S.C.§112第6段中对元件/电路/组件的解释。
具体实施方式
在一实施方式中,计算机系统包括至少一个主机中断控制器和至少一个访客中断控制器。主机中断控制器可管理由主机(例如,虚拟化环境中的虚拟机管理器(VMM))带来的中断。这样的中断可包括诸如从计算机系统中的未被分配给执行于该系统上的访客的设备而来的中断、VMM不希望暴露给访客的系统级中断,等等。访客中断控制器可管理由访客带来的中断。这样的中断可包括诸如由分配给访客以提供访客的虚拟机中的设备之功能性(functionality)的设备所分发的中断。
该系统中的硬件可发送中断给主机中断控制器或访客中断控制器。可选地,中断也可以被发送给上述两个中断控制器,并且其中一个中断控制器可接收该中断,具体由哪个接收基于该中断是主机中断还是访客中断。每一个中断控制器都可与处理器耦合并且都可与处理器通信以传送中断。在一些实施方式中,提供访客中断控制器以传送中断到访客可以使得访客中断的传送具有与主机中断大致相等的等待时间。
在一实施方式中,访客中断控制器可以是主机中断控制器的复本(duplicate)。也就是说,访客中断控制器与主机中断控制器可包含相同的硬件。在另一实施方式中,访客中断控制器可以仅重复(duplicate)一部分的主机中断控制器。与主机中断控制器不同的部分可以经由VMM拦截及仿真被VMM虚拟化。
虚拟化概述
图1示出了实行虚拟化的计算机系统5的一实施方式的方块图。在图1的实施方式中,出现了多个访客10A-10N。访客10A包括访客操作系统(OS)12和一个或多个运行在访客操作系统上的应用14A-14N。访客10N包括特权代码16。访客10A-10N由虚拟机管理器(VMM)18来管理。VMM 18和访客10A-10N在主机硬件20上执行,该主机硬件20可以包括包含于计算机系统5中的物理硬件。在一实施方式中,VMM 18可保有一组虚拟机控制块(VMCB)22。每一个访客10A-10N都可对应一个VMCB 22。尽管图1中VMCB 22是作为VMM 18的一部分来图示的,但是所述VMCB 22可被存储在存储器和/或非易失性介质中,例如主机硬件20中的磁盘驱动器。
主机硬件20通常包括包含在计算机系统5中的所有硬件。在各种实施方式中,主机硬件20可以包括一个或多个处理器、存储器、外围设备以及其他用以耦接前述组件的电路。特别是,主机硬件20可包括一个或多个主机中断控制器、一个或多个访客中断控制器和/或一个或多个访客中断管理器。例如,个人计算机(PC)式的系统可包含耦接处理器的北桥、存储器以及使用高级图形端口(AGP)接口的图形设备。此外,北桥可耦接到诸如外设组件接口(PCI)总线的外设总线,各种外设组件可直接或间接地耦接至外设总线。该PC式系统也可以包括耦接至PCI总线的南桥,以提供传统(legacy)功能性和/或耦接至传统(legacy)硬件。在各种实施方式中,访客中断管理器可在北桥、南桥或者在上述接口之一上面的设备中实施。主机中断控制器和访客中断控制器可实施于每一个处理器中,或者在一组处理器之间共享。在其他实施方式中,其他电路可用于连接各种硬件组件。例如,可使用超级传输(HT)链接来连接节点,每一个节点都可包括一个或多个处理器、主桥以及存储控制器。每一个节点也可包括可以包含有访客中断管理器和/或主机中断控制器及访客中断控制器的北桥。此外,主桥可包含访客中断管理器和/或主机中断控制器及访客中断控制器。该主桥可被用来以菊花链(daisy chain)的形式经由HT链接耦接至外围设备。任何期望的电路系统/主机硬件结构均可被使用。
VMM 18可用于为每一个访客10A-10N提供虚拟化并且可以控制访客10A-10N对主机硬件20的访问。VMM 18也可负责调度访客10A-10N以在主机硬件20上执行。VMM 18可用于将主机硬件20中提供的硬件支持用于虚拟化。例如,处理器可为虚拟化提供硬件支持,包括用以拦截事件并将访客退出到VMM 18以进行处理的硬件。访客中断管理器和/或访客中断控制器也可以是配备来支持虚拟化的硬件。
在一些实施方式中,VMM 18可以作为在主机硬件20上实施的并且为访客10A-10N提供虚拟化的“薄(thin)”的独立软件程序来执行。这样的VMM实施方式有时可被称为“管理程序(hypervisor)”。在其他实施方式中,VMM 18可被集成到主机OS中或者执行于主机OS上。在这样的实施方式中,VMM 18可依赖主机OS,包括该主机OS中的任何驱动器、由系统BIOS提供的平台系统管理模式(SMM)代码等等。因此,主机OS组件(以及诸如平台SMM代码的各种较低层级的组件)直接执行于主机硬件20上且未被VMM 18虚拟化。在一实施方式中,VMM 18和主机OS(如果包括的话)可合起来称为主机。通常来说,主机可包括在使用过程中直接控制主机硬件20的任何代码。例如,主机可以是VMM18、结合主机OS的VMM 18或者单单是主机OS(例如在非虚拟化环境中)。
在各种实施方式中,VMM 18可支持全虚拟化、半虚拟化或者两者都支持。另外,在一些实施方式中,VMM 18可并发地执行半虚拟化的访客和全虚拟化的访客。
全虚拟化时,访客10A-10N不知道虚拟化正在发生。每一个访客10A-10N可在其虚拟机中具有相邻的零基(zero based)存储器,并且VMM 18可使用影子页表或嵌套页表来控制对主机物理地址空间的访问。影子页表可从访客虚拟地址重新映射到主机物理地址(有效地将访客10A-10N中的存储器管理软件所分配的访客“物理地址”重新映射到主机物理地址),而嵌套页表则可接收访客物理地址作为输入并映射到主机物理地址。通过对每一个访客10A-10N使用影子页表或嵌套页表,VMM 18可以确保访客不会访问主机硬件20中的其他访客的物理存储器。
半虚拟化时,访客10A-10N可以至少部分地感知虚拟机。这样的访客10A-10N可与VMM 18协商存储页面,因此可以不需要将访客物理地址重新映射到主机物理地址。在半虚拟化的一实施方式中,可允许访客10A-10N直接与主机硬件20中的外围设备交互。在任何给定的时间,外围设备可被访客10A-10N中的一个或多个所“拥有”。例如,在一实施方式中,外围设备可通过一个或多个当前拥有此外围设备的访客10A-10N被映射到保护域中。只有拥有外围设备的访客可直接与之交互。还可以有保护机制来防止保护域中的设备读/写分配给其他保护域中的访客的页面。
如前所述,VMM 18可以为每一个访客10A-10N保留一个VMCB 22。所述VMCB 22通常可包括存储在由VMM 18为相应的访客10A-10N分配的存储区域中的数据结构。在一实施方式中,VMCB 22可包含存储页,尽管其他实施方式可以利用更大或更小的存储区域和/或在其他介质上的存储器(例如非易失性存储器)。在一实施方式中,VMCB 22可包括访客的处理器状态,当调度该访客来执行时,该状态可被载入主机硬件20的处理器中,而当该访客退出时(要么由于其预定时间的结束,要么由于处理器检测的用于退出访客的一个或多个拦截),该状态可被存回VMCB 22。在一些实施方式中,仅一部分的处理器状态经由将控制转移给对应于该VMCB 22的访客的指令(“虚拟机运行(VMRUN)”指令)进行载入,其他的期望状态可在执行该VMRUN指令前由VMM 18载入。同样地,在这样的实施方式中,仅一部分的处理器状态可在访客退出时由该处理器存储至VMCB 22,且VMM 18可在需要时负责存储任何其他状态。在其他实施方式中,VMCB 22可以包括指向存储处理器状态的另一存储区域的指针。另外,在一实施方式中,可以定义两种或两种以上的退出机制。在一实施方式中,所存储的状态的数量以及载入状态的位置可以根据所选择的退出机制而变。
在一实施方式中,VMM 18也可具有被分配来存储对应于该VMM 18的处理器状态的存储器的区域。当执行VMRUN时,对应于所述VMM 18的处理器状态可被保存在该区域中。当访客退出到VMM 18时,该区域中的处理器状态可重新从该区域载入以让VMM 18继续执行。例如,在一实施方式中,处理器可具备寄存器(例如模式特定寄存器(MSR))以存储VMM 18保存区的地址。
此外,该VMCB 22可包括用以识别使能访客的拦截事件的拦截配置,以及如果检测到使能的拦截事件时用于退出访客的机制。在一实施方式中,拦截配置可包括一组拦截指示,其中每一个拦截指示用来指示处理器支持的每一个拦截事件。拦截指示可指示处理器是否要拦截相应事件(或者,从另一角度来看,该拦截是否可用)。如本文中所使用的,如果该处理器退出访客以处理事件,其中该事件应该发生在该访客中,则该事件在该访客内被“拦截”。在一实施方式中,拦截配置可包括第二组指示以指示使用两个退出机制中的哪一个。其他实施方式也可定义多于两个的退出机制。在另一实施方式中,拦截配置可包括一组拦截指示,每个事件一个指示,指示第一退出机制是否应用于该事件;以及第二组拦截指示,每个事件一个指示,指示第二退出机制是否应用于该事件。
通常来说,退出机制可定义由处理器进行的退出访客执行的操作(一般是以重新启动的方式),并且开始执行其他代码。在一实施方式中,退出机制可包括存储少量的处理器状态并为微程序(Minivisor)载入状态。该微程序可在访客物理地址空间内执行并执行相对简单的拦截处理。另一退出机制可退出至该VMM,保存大量的处理器状态并载入VMM的处理器状态。因此,拦截事件可根据该事件由不同的指令代码来处理。此外,相对简单的拦截处理可通过耗费较少时间执行的“较轻权重(lighter weight)”退出机制来处理,在一些实施方式中这样的处理能够提高性能。在使用“较重权重(heavier weight)”机制以退出之后,可在该VMM中执行较复杂的处理。因此,在本实施方式中,该VMM 18可配置处理器去拦截那些VMM 18不希望访客10A-10N在内部处理的事件,也可以配置处理器使用哪种退出机制。事件可包含指令(即,拦截指令而不是执行该指令)、中断、异常和/或在访客执行过程中可能发生的其他事件。
在一实施方式中,该VMCB 22可进一步包括其他控制位,所述控制位可使得处理器在载入该VMCB 22时执行某些动作。例如,控制位可包括刷新(flush)处理器中的TLB的指示。其他控制位可为访客指定其执行的环境(例如,中断处理模式,访客的地址空间标识符,等等)。还有一些其他控制位可用来传送描述访客为何退出的退出码,等等。
通常来说,一个“访客”可包括任意一个或多个将被虚拟化以在计算机系统5中执行的软件程序。一个访客可包括至少一些执行在特权模式中的代码,并且因此希望可以完全控制执行该访客的计算机系统。如前所述,访客10A是一个包含有访客OS 12的实施例。所述访客OS 12可以是任何OS,诸如微软公司(Redmond,WA)的任何Windows OS、任何UNIX类型的操作系统(例如Linux)、IBM公司(Armonk,NY)的AIX、太阳微系统公司(Santa Clara,CA)的Solaris、惠普公司(Palo Alto,CA)的HP-UX,等等。访客10N是包含有非操作系统特权代码16的访客实施例。
需要注意的是字母“N”,当此处使用诸如10N的参考数字时,一般是指带有参考数字的元件编号(例如,访客10A-10N中的任何编号均包括一个访客)。此外,使用字母“N”的不同参考数字(例如,10N和14N)并不意指不同的元件具有相同的数量(例如,访客10A-10N的数量与应用14A-14N的数量不同),除非另有说明。
主机硬件
现在翻到图2,该图是说明主机硬件20的一实施方式的方块图。在所示的实施方式中,主机硬件20包括多个处理器30A-30B、各自的主机高级可编程中断控制器(hAPIC)32A-32B、各自的访客APIC(gAPIC)34A-34B以及可选的附加gAPIC 34C-34D、桥36(其包括访客中断管理器38、输入/输出(I/O)存储管理单元(IOMMU)40以及存储器控制器42)、多个接口电路(IF)44A-44C、存储器接口电路(MIF)46、可选的桥48(其可包括IOAPIC 50)、外围设备52A-52B(其中一些可包含诸如所述IOAPIC 54的IOAPIC)以及存储器56。处理器30A-30B与桥36耦接并与图2所示的各自的hAPIC 32A-32B和gAPIC 34A-34D耦接。该hAPIC32A-32B和gAPIC 34A-34D与桥36耦接,该桥36与接口电路44A-44C和存储器接口电路46耦接。该存储器接口电路46与存储器56耦接,接口电路44A与桥48耦接,桥48与外围设备52A-52B耦接。
在所示的实施方式中,每一个处理器30A-30B具有相关的hAPIC 32A-32B以及至少一个相关的gAPIC 34A-34D。在一实施方式中,可根据由Intel公司(Santa Clara,CA)制定的APIC规范在主机硬件20中传送中断。在上述规范中,每一个处理器具有相关的能够接收中断的本地APIC(中断都来自所述处理器自身、其他处理器、内部APIC中断源以及与外围设备设备相关的IOAPIC)。本地APIC对未决的中断按照优先级进行排列,并且如果一个中断的优先级高于处理器中正在执行的另一中断的优先级和/或该中断的优先级高于处理器当前任务的优先级,则将该中断传送到处理器。
在图2的实施方式中,hAPIC 32A-32B可以是针对处理器的主机中断的本地APIC(即,中断由主机处理)并且gAPIC 36A-36D可以是针对处理器的访客中断的本地APIC(即,中断由在各自的处理器30A-30B上处于活动状态的访客来执行)。如果访客当前正在处理器上执行(例如,VMRUN指令已经在对访客的处理器上被执行并且访客退出还未发生),或者如果访客已经退出且VMM 18正在执行,但是期待该访客再次在该处理器上被执行,则该访客在该处理器中是活动的。
当VMM 18调度处理器30A-30B上的访客时,VMM 18可载入处理器30A-30B的gAPIC 34A-34D及其对应于访客的gAPIC状态。尤其是,给定的访客可以具有多个虚拟CPU(vCPU)。该VMM 18可调度访客的vCPU以在处理器30A-30B上执行,并且可载入gAPIC 34A-34D以及该访客虚拟机中的vCPU的中断状态。此外,任何指向访客(以及vCPU)的中断都可由gAPIC 34A-34D来捕获,所述访客在活动状态时被信号通知中断。如上述所述,gAPIC34A-34D可根据的APIC规范来中断访客。
给定处理器30A-30B的hAPIC 32A-32B和gAPIC 34A-34D可具有到处理器的任何接口。例如,应用在本地APIC和他们各自的处理器之间的接口可是任何接口。每一个APIC可用来独立地用信号通知处理器中断将要被传送过来以供服务。如果处理器正在执行访客并且用信号通知了访客中断,处理器可用来中断访客代码并且开始执行访客虚拟机中的正确的中断句柄(handler)。这样的话,在一实施方式中,传送访客中断与传送主机中断可具有同样的等待时间。如果所述处理器正在执行访客并且该hAPIC用信号通知了中断,则处理器可用来退出访客到VMM 18以处理主机中断。如果处理器未在执行访客,则由gAPIC用信号通知的中断可被处理器屏蔽直到该访客被再次执行。如果处理器未在执行访客并且hAPIC用信号通知了中断,则处理器可用于中断主机执行并且分行到该主机中断句柄。
在一实施方式中,每一个处理器30A-30B可包括不止一个gAPIC 34A-34D。每一个gAPIC 34A-34D可存储对应于不同访客/vCPU的APIC状态。在这样的实施方式中,当用信号通知访客中断给处理器时,每一个gAPIC 34A-34D可用来标识其所对应的访客(或者处理器30A-30B可具有内部寄存器用来标识当前被分配给每一个gAPIC 34A-34D的访客)。如果一个不同的访客当前正在执行,则处理器可屏蔽该访客中断,其与当VMM 18未在执行时屏蔽该访客中断相类似。可选地,当相应的访客被调度时,每一个gAPIC34A-34D可以包括可被VMM 18设置为活动状态的主动指示,并且当相应的访客处于活动状态时,所述gAPIC 34A-34D可用来仅通知自身的访客中断。随着时间的推移,当多个访客被调度以在处理器上执行时,每一个处理器30A-30B包括多于一个的gAPIC 34A-34可减少gAPIC状态变化的数量。例如,如果每一个处理器30A-30B具有N个gAPIC 34A-34D(其中N是大于0的整数),在gAPIC状态需要为任何一个访客保存之前,多达N个不同的访客可被调度来执行。在实现每一个处理器30A-30B具有多于一个的gAPIC34A-34D的一些实施方式中,该gAPIC 34A-34D可包括附加状态来确保该中断消息可被正确地接受和/或记录(log)。例如,该gAPIC34A-34D可包括“当前运行”的指示用来标识相应的虚拟机当前是否运行在相应的处理器30A-30B上(相对于因VMM的执行而暂停或者于另一虚拟机正在执行时的暂停)。如果当前运行标识表明该虚拟机正在运行,则gAPIC可接受该中断消息。如果当前运行标识表明该虚拟机未在运行,则gAPIC可用信号通知不接受该中断。可选地,gAPIC可包括附加指示用来标识该gAPIC是否用信号通知不接受中断。在这样的实施方式中,该gAPIC可用信号通知中断,即使当前运行标识指出当前未运行,并且不接受(not-accepted)标识指示该gAPIC用信号通知不被接受的中断。这样的功能可用来检测针对未运行访客的中断是否被接收,这可用来调度该中断所指向的访客。
gAPIC 34A-34D可包括包含在hAPIC 32A-32B中的至少部分硬件,也可包括其所有硬件(例如,可以是hAPIC 32A-32B的复本)。除了APIC状态之外,gAPIC 34A-34D还可用访客标识符(ID)编程以确定gAPIC 34A-34D被分配给哪一个访客。如果所述访客包括多个vCPU,那么物理APIC ID和逻辑APIC ID可标识该访客内部的vCPU。在一实施方式中,访客ID可以与由IOMMU 40支持的外围设备的域ID相同。可选地,访客ID可以是被单独管理的资源。在另一个例子中,VMM 18可分配访客ID给访客并可确保gAPIC 34A-34D针对每个访客而进行恰当地编程。vCPU和/或gAPIC和/或这两者在此处可更简洁地被称为访客中的中断的目的地。目的地最终可以是为中断服务的vCPU,但是由于gAPIC与相应的处理器相关并且也记录中断,因此相应的gAPIC也可被看作是目的地。
该gAPIC 34A-34D和hAPIC 32A-32B被耦接到桥36上以接收中断。可使用任意的接口来传送中断到gAPIC 34A-34D和hAPIC 32A-32B。例如,可使用任意的为APIC中断传送而设置的接口。在一实施方式中,可使用与用来传送其他操作给处理器30A-30B/从处理器30A-30B传送其他操作(诸如由处理器30A-30B发起的存储器读/写操作、缓存一致性维护的探测,等等)的相同的传送机制来传送中断消息。从另一角度看,可将gAPIC 34A-34D与hAPIC 32A-32B的耦接与处理器30A-30B到桥36的耦接共享。可选地,处理器30A-30B可具有到桥36的独立路径,比如在gAPIC34A-34D和hAPIC 32A-32B采用APIC“3线接口”时。中断消息可以是在任意接口上识别正被传送的中断和中断目的地的任意通信。例如,中断可具有相关的中断向量,且该中断向量可以是中断消息的一部分。中断消息也可以包括访客ID和目的地ID(例如,逻辑APIC ID或物理APIC ID)。
该hAPIC 32A-32B可与本地APIC相同。例如,由于该hAPIC为主机中断所使用,因此该hAPIC 32A-32B不包括用于访客识别的额外硬件。可选地,hAPIC 32A-32B可包括额外的硬件但是该额外的硬件可被编程以表明该hAPIC 32A-32B是用于主机中断的。被桥36传送到hAPIC 32A-32B和gAPIC 34A-34D的中断消息可识别访客中断以及与之相对的主机中断,并可包括访客中断的访客ID(或者可使用预留的访客ID,诸如零或全二进制以指示主机中断)。hAPIC 32A-32B可用于接受被标识为主机中断的中断(如果主机中断的物理APIC ID或逻辑APIC ID与相应的hAPIC ID相匹配),并且gAPIC 34A-34D可用于接受其各自访客的访客中断(如果访客ID相匹配,以及如果访客中断的物理APIC ID或者逻辑APIC ID与相应的gAPIC ID相匹配)。
当gAPIC 34A-34D可为活动访客管理中断时,一些访客可以是非活动的(或者可具有被访客中断指向的非活动的vCPU)。在一实施方式中,访客中断管理器38可用于为非活动的访客维持访客中断状态并确保活动访客的gAPIC接收它们的中断。
尤其是,在一实施方式中,访客中断管理器38可利用分布式中断传送方案,其中该访客中断管理器38可用于记录桥36中所接收的每一个访客中断,也可用于传送该访客中断到每一个gAPIC34A-34D。如果gAPIC 34A-34D接受该中断,那么访客中断所指向的访客是活动的。如果没有gAPIC 34A-34D接受该中断,那么该访客中断所指向的访客是非活动的。
在所示的实施方式中,访客中断管理器38可用于为访客维持gAPIC的状态,所述访客被定义于系统5的存储器56中的gAPIC状态数据结构58中。该gAPIC状态数据结构58可包括在系统5中所定义的每一个gAPIC的gAPIC状态条目(例如,该系统中每一个访客10A-10N的每一个vCPU的一个条目)。如果gAPIC与系统中活动或非活动的访客相关联的话,则gAPIC可被定义在该系统中。据此,该访客中断管理器38可被配置为为中断所指向的访客/vCPU更新gAPIC状态数据结构58中的gAPIC状态以对接受访客中断作出响应。在一实施方式中,访客中断管理器38可用于更新gAPIC状态而不管访客是否是活动的。为了组播和广播具有多于一个目标的中断,访客中断管理器38可用于为每一个中断目的地更新gAPIC状态数据结构中的gAPIC状态。可选地,访客中断管理器38可被配置为为这些多目的地中断而依赖VMM 18。在这样的实施方式中,访客中断管理器38可用于在VMM 18可存取的存储位置中记录该中断,且可用于用信号通知VMM 18去处理该消息。
在一些实施方式中,该访客中断管理器38可用于直接定位gAPIC状态数据结构58中的gAPIC状态条目以响应访客中断消息中的访客ID和/或其他信息。在其他实施方式中,为了提供gAPIC状态数据结构58中的灵活性和/或为了节省存储器空间,访客中断管理器38可被配置为采用gAPIC状态映射表60来定位gAPIC状态数据结构58中的gAPIC状态条目。gAPIC状态数据结构58和映射表60(对某些实施方式)的不同实施方式被图示于图10-13中并在下面进行更为详细的讨论。据此,访客中断管理器38可用于通过gAPIC状态映射表60来定位gAPIC状态条目并且用于更新该gAPIC状态条目以记录该中断以响应访客中断。
在一实施方式中,gAPIC状态数据结构58可存储gAPIC状态的子集。该子集可以是被硬件20(例如访客中断管理器38与IOMMU 40的联合)追踪的gAPIC状态。更特别的是,该子集可以gAPIC状态的一部分,其中当相应的访客是非活动的时,该部分gAPIC状态可随之改变。例如,在一实施方式中,当相应的访客是非活动的时,外围设备52A-52B可用信号通知中断,这将导致相应的中断请求被gAPIC捕获。该中断请求可在gAPIC状态数据结构58中被追踪。其他gAPIC状态可通过处理器追踪服务中的中断、处理器的任务优先级,等等。只有当访客处于活动状态时,这些值才可以改变。在一实施方式中,当访客处于非活动状态时不可改变的gAPIC状态可由VMM 18追踪,其利用在图2中显示为VMM管理gAPIC状态数据结构68的一个或多个其他数据结构来进行追踪。在该系统中,VMM 18可在VMM管理的状态68和作为部分的激活访客与关闭访客的gAPIC 34A-34D之间传送状态。
虽然gAPIC状态映射表60和gAPIC状态数据结构58在所示的实施方式中都显示为存储在存储器56中,但其中之一者或两者的部分可被访客中断管理器38和/或桥36可存取的缓存存储起来。此外或可替换的,一个或多个gAPIC状态条目的专用存储器可被实现在桥36中。该专用存储器可存储一组可被快速转入和转出gAPIC 34A-34D的“快速”gAPIC状态。而其他的gAPIC状态则可在存储器56中以较慢的速度来存取。在一些实施方式中,该快速gAPIC状态开关可由访客中断管理器38操纵而较慢的gAPIC状态开关则可由VMM 18操纵。
在APIC中断机制中,每一个处理器(通过其本地APIC)可具有物理APIC ID和逻辑APIC ID。物理APIC ID存储在APIC ID寄存器中。物理APIC ID在一对一的基础上与由物理传送模式中断所指示的物理APIC ID相匹配。逻辑APIC ID作为逻辑目的地寄存器被存储在本地APIC中。逻辑APIC ID具有簇ID和本地APIC ID,其中本地APIC ID是独热(one-hot)向量。逻辑传送模式中断可包括独热向量中的任意置位(set bit)以传送中断到簇中的一个或多个本地APIC。据此,逻辑APIC ID的匹配可包括簇ID的比较以及本地APID ID向量中的置位的检测,该置位与本地APIC中独热向量的置位具有相同的位置。从另一个角度看,在逻辑传送模式中断中的本地APIC ID向量可与本地APIC的本地APIC ID向量进行逻辑与操作(AND),并且如果结果为非零且簇ID能够匹配,则本地APIC是逻辑中断的目标。此处的逻辑APIC ID可更简洁地被称为逻辑ID,类似的,物理APIC ID可更简洁的被称为物理ID。与中断相关的给定ID(物理的或逻辑的)可被称为中断的目的地ID。中断的相应传送模式可识别中断的目的地ID。
gAPIC 34A-34D也可以支持物理传送和逻辑传送两种模式。除了根据上面突显的模式在中断消息中匹配APIC ID之外,gAPIC 34A-34D可将中断消息中的访客ID匹配到gAPIC中的访客ID。
IOMMU 40可用于对I/O启动的存储操作(例如,源自外围设备52A-52B的存储器读/写操作或由代表外围设备52A-52B的DMA控制器执行的存储器读/写操作)执行虚拟地址至物理地址的映射。作为转换操作的一部分,IOMMU 40可用于存取设备表62且可选地存取访问中断重定向表64。设备表62可包括对每一个外围设备52A-52B的条目(并可包括一个外围设备的多个条目,该条目包括与外围设备耦接的外围设备接口上的不止一个标识符)。设备表62可包括用于转换存储器读/写操作(未图示)的存储地址的指向I/O页表的页表指针并可包括指向中断重定向表64的指针。在一些实施方式中,设备表62可以为分配给访客的外围设备存储访客ID。在一实施方式中,访客ID可以与IOMMU 40中用于设备访问保护的域ID相同。可选地,访客ID可被独立分配。在一实施方式中,设备表62也可存储指向gAPIC状态映射表60(如果使用的话)的指针,或者指向gAPIC状态数据结构58的指针。在另一实施方式中,访客ID和/或指向表60/数据结构58的指针可被存储在中断重定向表64中。该中断重定向表64可用于将中断从其初始的目的地和/或中断向量重定向到新的目的地和/或中断向量。为了简化本发明的其他部分,将采用这样一种实施方式,在此实施方式中,访客ID是来自设备表62的域ID且指向映射表60和/或gAPIC状态数据结构58的指针被存储在设备表62中。然而,本发明剩余部分的实施方式通常可按照上述讨论的内容进行修正。
在其他实施方式中,可以不提供访客中断管理器38。例如,可能存在这样的配置,如果在访客从一个处理器30A-30B转移到另一个时由VMM 18更新设备表62和/或中断重定向表64,以及如果处理器30A-30B专用于代表非活动访客接收中断(以按期望更新存储器56中的gAPIC状态数据结构58和/或为中断服务),则不需要访客中断管理器38。
存储器控制器42可以被耦合以接收由处理器30A-30B发出的存储操作(例如,提取指令、存取载入/存储数据、存取用于转换的处理器页表,等等)、来自访客中断管理器38的存储操作(例如,读取/更新gAPIC状态数据结构58和/或gAPIC状态映射表60)、来自IOMMU 40的存储操作(例如,访问I/O页表、设备表62以及中断重定向表64),以及接收来自接口电路44A-44C的存储操作(在某些实施方式中)。存储器控制器42可用于对存储操作进行排序并与存储器56通信以执行存储器操作。存储器接口电路46可执行到存储器56的物理层访问。
存储器56可包括任何类型的存储器。例如,存储器56可包括诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM)以及双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUSDRAM、静态RAM,等等。存储器56可包括一个或多个包含有多存储芯片的存储模块,诸如单列直插式存储模块(SIMM)、双列直插式存储模块(DIMM),等等。
在此实施方式中,除了包括访客中断管理器38、IOMMU 40以及存储器控制器42之外,桥36也可包括其他通信功能以在处理器30A-30B、hAPIC 32A-32B、gAPIC 34A-34D以及耦接到接口电路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可负责接收来自外围设备的中断请求并形成中断消息以传送中断请求给hAPIC32A-32B和中断管理器38(用于到gAPIC 34A-34D的传送和/或记录在存储器中的gAPIC状态数据结构58中)。
如上所述,在一实施方式中,接口电路44A-44C可用于HT接口上的通信。该接口电路44A-44C可用于通过HT与外围设备/桥进行通信。此外,在一些实施方式中,接口电路44A-44C可用于耦接到其他具有处理器、hAPIC和gAPIC等的节点。在这样的实施方式中,桥36可包括除了之前描述的电路系统之外的一致性管理电路系统(coherence management circuitry)。
处理器30A-30B可实施任意指令集架构,并可用于执行定义在指令集架构中的指令。处理器30A-30B可包括任意微架构,诸如超流水线架构、超标量架构和/或二者的结合;按顺序或不按顺序的执行;预测的执行;等等。根据需要,处理器30A-30B可以实施或不实施微编码技术。
外围设备52A-52B可包括任意类型的外围设备。外围设备52A-52B可包括存储设备,比如磁盘驱动器、固态磁盘驱动器、光盘驱动器或者诸如闪存之类的非易失性存储设备,等等。外围设备52A-52B可包括I/O设备,比如用户I/O设备(键盘、鼠标、显示器、语音输入等等)、网络设备、诸如通用串行总线(USB)或火线的外部接口设备,等等。
在所示的实施方式中,处理器30A-30B、桥36、hAPIC32A-32B、gAPIC 34A-34D、接口电路44A-44C以及存储器接口电路46可被集成在一个单独的半导体基底上以形成集成电路66。其他实施方式可根据需要设置不同数量的集成电路系统和离散电路系统。值得注意的是,尽管图2示出了不同数量的组件,诸如处理器、hAPIC、gAPIC、接口电路、外围设备、桥,等等,但其他实施方式也可根据需要设置任何数量的一个或多个上述每一个组件。
在其他实施方式中,IOMMU 40的位置和访客中断管理器38的位置是可变的。例如,其中一个或所有两个可位于桥48中、外围设备52A-52B中、耦接到该桥的另一个桥中,等等。
在所示的实施方式中,每一个gAPIC 34A-34D和每一个hAPIC 32A-32B与图2所示的特定处理器30A-30B相关联。这样,给定的中断控制器可专用于该实施方式中相应的处理器30A-30B。更具体地,在图2中,hAPIC 32A、gAPIC 34A和34C专用于处理器30A,hAPIC 32B、gAPIC 34B和34D专用于处理器30B。中断控制器可以用任何方式将中断用信号通知给其相应的处理器。通常来说,该通知可表示需要中断。该通知可包括中断向量,或者中断向量可被中断传送之后执行的软件读取。在一实施方式中,传送中断可以指用信号通知处理器以及处理器接受该中断。为中断服务可以指执行与中断向量相关的中断服务程序以执行中断设备所需要的操作。
现在翻到图3,图3所示为在一实施方式中,中断从外围设备进到gAPIC的方块图。类似于图3,来自其他处理器的中断(内处理利器中断(IPI))可也被传送到访客中断管理器38且可从那一点向前进行处理。可选地,从初始化IPI的处理器接收IPI的gAPIC可传送更新到访客中断管理器38(来更新接收访客的gAPIC状态,如果访客是非活动的)并且也可传送IPI(包括访客ID)到其他gAPIC。
在所示的实施方式中,外围设备52A确定需要中断。外围设备52A中的IOAPIC 54(参见图2)可生成响应外围设备52A的操作的中断消息。特别是,IOAPIC 54可生成对应于预期中断(例如,基于外围设备52A所需要的服务、用信号通知中断的特定功能(如果外围设备52A执行多种功能),等等)的中断向量。中断向量是中断通信的一部分,且可通过软件被用于识别中断源、区分中断的优先顺序,等等。在一些实施例中,中断向量可由IOMMU 40重新映射,这样该中断向量在图3中可标示为“初始向量”。外围设备52A可将中断消息传送到IOMMU 40A(箭头A)。在此实施方式中,中断可按照消息通知中断(Message-Signalled Interrupt,MSI)的方式来传送,例如在PCIe规范中所定义的。在其他实施方式中,中断可以以任意的期望方式来传送。通常来说,传送设备可识别中断、中断的传送模式(例如,逻辑的或物理的)以及中断的目的地ID(DestID)。
IOMMU 40可接收MSI。MSI包括外围设备的标识符。例如,实施PCI编程模型的接口可利用总线号以及在该总线上的设备号识别每一个设备(允许多个PCI接口以分层形式和/或并行形式存在于系统中)。设备可具有多种“功能”,其可以是物理设备上的独立虚拟设备,或者是设备上的操作分区。标识符还可包括功能号。这样,在此实施方式中,标识符可被称为总线设备功能(BDF)。IOMMU 40可利用BDF来索引设备表62(箭头B),并可识别对应于外围设备52A的设备表条目。在一些实施方式中,该条目可包括访客ID和指向gAPIC状态映射表60或gAPIC状态数据结构58的指针(箭头C)。在此实施方式中,设备表条目也可包括中断重定向表指针(IRTP),该指针可确定对应于设备的中断重定向表64(箭头C1)。中断重定向表64可被初始中断向量来索引,并可为该中断提供输出向量和目的地ID(DestID,例如,逻辑APIC ID或物理APIC ID)(箭头C2)。
在图3所示的实施例中,MSI被重新映射到向量42和访客ID 99。该重新映射可包括添加该访客ID,在使用中断重定向表64的情况下,该向量也可被改变。否则,在该中断消息中提供来自MSI的初始中断向量。描绘了使用中断向量42和访客ID 99的特定实施例的图3中的要点在图中被括在方括号中,例如[]。
IOMMU 40可传送包括访客ID(例如,在这个实施例中是99)的中断消息到访客中断管理器38。中断消息也可包括中断向量(例如,在这个实施例中是42)和目的地ID。中断消息还可包括指向gAPIC状态映射表60或gAPIC状态数据结构58的指针(箭头D)。
在具有gAPIC状态映射表60的实施方式中,访客中断管理器38可利用诸如访客ID和/或目的地ID的指针以及潜在的其他信息来定位gAPIC状态映射表60中的gAPIC状态指针(箭头E1,以及如箭头E2所示的到访客中断管理器38的返回指针)。gAPIC状态指针可确定gAPIC状态数据结构58中的gAPIC状态条目,并且访客中断管理器38可利用该gAPIC状态指针来执行gAPIC状态数据结构58中的gAPIC状态更新(箭头E)。在这个实施例中,gAPIC状态更新可设定对应于向量42的中断请求寄存器中的位。中断请求寄存器(IRR)参照图4在下面进行更为详细的描述。
在一实施方式中,gAPIC状态58的更新是原子的。例如,访客中断管理器38可生成原子或运算(OR)事务,该事务原子地将正在设置的中断请求位或运算到gAPIC状态条目中的中断请求寄存器的当前状态中。一个原子操作可以是作为一个单位来有效执行的操作,即使该操作由多个步骤完成。试图访问被原子地更新的位置的观察者(observer)要么接收原子更新之前的值,要么接收更新之后的值,但不会接收中间的值。试图更新被原子地更新的位置的观察者要么在该原子操作之前执行其更新,要么在之后执行其更新,但不会在操作过程中进行更新。尽管此实施方式可执行原子或运算,其他实施方式也可执行更加通用的原子更新操作。例如,原子更新可包括识别不会被修改的目标的位的与屏蔽(ANDmask),以及识别会被进行或运算的位的或屏蔽(OR mask)。其他实施方式也是可能的。例如,可使用比较和交换实现,其中来自存储位置的初始值被读取并且执行比较和交换操作以用经过或运算得到的新值替代初始值。如果比较操作失败,该过程可被重复(读取新的初始值,然后执行比较和交换)。如果需要,可使用后退和/或暂停机制来退出循环。
访客中断管理器38也可向gAPIC 34A-34D广播包括中断向量、访客ID和目的地ID的中断消息(箭头F)。gAPIC中的一个(图3中的gAPIC 34A)可具有访客ID 99以及与目的地ID相匹配的逻辑APIC ID或物理APIC ID,因此gAPIC 34A可用确认信号(Ack)来响应中断消息,该确认信号表示gAPIC 34A已经接受该中断消息(箭头G)。在该实施例中,gAPIC 34A也可更新其中断请求寄存器以设置对应于向量42的位。如果该中断的优先级比任何当前正在进行的中断(如果有的话)和/或处理器的任务的优先级都要高的话,则gAPIC 34A也可将该中断用信号通知处理器30A。其他gAPIC 34B-34D也可响应广播的中断消息,但是由于它们不是该中断的目标,因此它们不会发出确认接受的信号(箭头H)。对逻辑中断而言,如果其确定有多个目标的话,则可能有不止一个确认信号。
使用上述机制,访客中断管理器38不需要知道哪一个gAPIC 34A-34D被分配给了哪一个访客。其他实施方式也是可预期的,其中访客中断管理器38追踪哪个gAPIC 34A-34D被分配给了哪个访客以及哪个访客仅传送中断到目标gAPIC。访客中断管理器38可自动追踪gAPIC,或者每次一个gAPIC被重新分配给另一个访客时由VMM 18进行编程。在这样的实施方式中,访客中断管理器38可仅传送中断消息到目标gAPIC。
到hAPIC 32A-32B的中断的传送可按照常用的APIC方式进行。特别地,在一实施方式中,中断可能未由访客中断管理器38操作在其上,但在其他方面可与图3中的操作相同。
需要注意的是,尽管访客中断管理器38在此处图示为一个方块,但实现访客中断管理器38的电路系统可以是分布式的。例如,在一实施方式中,接收指针、可选择地处理gAPIC状态映射表60并生成gAPIC状态数据结构58的更新的那部分访客中断管理器38可被包括在IOMMU 40中,因此该IOMMU 40为gAPIC状态数据结构58和被传送到gAPIC 34A-34D的中断消息传送原子的或运算。访客中断管理器38在一个或多个物理位置中的任何实现方式均可采用。
现在翻到图4,该图示出了gAPIC 34A的一实施方式的方块图。其他的gAPIC 34B-34D可以类似。在图4的实施方式中,gAPIC 34A包括中断请求寄存器(IRR)70、中断服务寄存器(ISR)72、触发模式寄存器(TMR)74、任务优先级寄存器(TPR)76、控制单元78、物理ID寄存器80、逻辑ID寄存器82、访客ID寄存器84以及其他可选的APIC状态86。控制单元78与IRR 70、ISR72、TMR 74、TPR 76、物理ID寄存器80、逻辑ID寄存器82、访客ID寄存器84和其他APIC状态86相耦合。此外,控制单元78与访客中断管理器38耦合而通信以接收中断,并与处理器接口相耦合以与处理器30A通信。
为了对从访客中断管理器38接收中断消息作出响应,如果该中断指向与gAPIC 34A相应的访客,则控制单元78可用于将该中断写入IRR 70中。IRR中的中断请求的位置与中断向量相对应。IRR可追踪“固定的(fixed)”中断。其他中断类型可包括不可屏蔽中断(NMI)、系统管理中断(SMI)、传统外部中断(extINT)等等。这些中断可被作为其他APIC状态86的一部分处理。
在一实施方式中,中断消息也可为每一个中断包括一个触发模式(电平的或边缘的)。TMR 74可存储哪一个触发模式应用于该中断的指示。例如,边缘触发中断可由TMR 74中的二进制0来表示而电平触发中断则可由二进制1来表示。在其他实施方式中,在gAPIC 34A中仅支持边缘触发中断,则可除去TMR 74(及其在gAPIC状态数据结构58中的复本))。在另一实施方式中,可重新使用TMR 74以允许VMM 18记录虚拟的电平敏感中断。VMM 18可在TMR 74中设置多个位以指示如下情况,如果处理器30A用信号通知中断的结束以作相应的中断向量,则处理器30A退出到该VMM 18。
对于固定中断,gAPIC 34A可用于对中断请求以及服务中(in-service)中断的优先级进行排序以判断中断请求是否应被传送给处理器。通常来说,如果最高优先级中断请求的优先级高于服务中中断的最高优先级(其中如果处理器已中断其软件执行来处理与一中断对应的中断句柄,则该中断为服务中中断),控制单元78可用于将所请求的中断传送给处理器30A。此外,TPR 76可被软件编程以建立处理器30A所接受的中断的最低优先级。如果最高优先级中断请求的优先级高于服务中中断的最高优先级并且高于TPR 76中所指明的优先级,则控制单元78可用于传送该最高优先级中断请求。
当处理器30A接收到该中断时,该处理器可用中断确认命令响应gAPIC 34A。控制单元78可用于从IRR 70中移出最高优先级中断请求并且将该中断作为服务中中断记录在ISR 72中。相应于该ISR中的中断的服务中指示的位置可对应于该中断的中断向量。处理器30A可执行中断服务程序来为该中断服务。中断服务程序可利用给gAPIC的结束中断(EOI)命令来结束以用信号通知该中断服务完成。控制单元78可用于从ISR 72中移出该最高优先级的服务中中断以响应该EOI命令。
每一个IRR 70、ISR 72和T MR 74都包括与gAPIC 34A支持的每一个中断向量相对应的位置。在所示的实施方式中,支持从0到255的向量。中断向量号也可指示其与其他中断的相对优先级(例如,在其他实施方式中,较高向量号的优先级高于较低向量号优先级,反之亦然)。对每一个中断向量而言,IRR 70存储的中断请求位指示在该中断向量处是否有中断被请求。例如,该指示可以是指示当设置时有请求以及当清空时没有请求的位。类似的,对每一个中断向量而言,ISR 72存储的服务中(in-service)位为该中断向量指示是否有中断在服务中(例如,当设置时表示有服务中中断,当清空时表示无服务中中断)。对每一个中断向量而言,TMR 74存储触发模式。对每一个IRR 70、ISR 72和TMR 74而言,寄存器中的位位置等同于与中断相应的中断向量号。
在所示的实施方式中,中断被逻辑地分配到组中,这些组都被指定优先级等级以确定未决的中断请求是否被传送给处理器。例如,将优先级等级0分配给中断向量0到15,将优先级等级1分配给中断向量16到31,等等,直到将优先级等级15分配给中断向量244到255。在此实施方式中,提高优先级等级的号码表示更高的优先级等级。控制单元78可计算请求的优先级等级,如果是最高优先级等级,则IRR 70中至少有一个中断请求处于未决状态。控制单元78也可计算服务中的优先级等级,如果是最高优先级等级,则ISR 72中至少有一个中断被指示为在服务中。如果请求的优先级等级超过了服务中的优先级等级并且也超过了TPR 76中所表明的优先级等级,则控制单元78可传送该中断。应该注意的是,尽管在所示的实施方式中256个中断向量由16个优先级等级组别来支持,然而在其他实施方式中也可以采用更多或更少的中断向量和/或更多或更少的优先级等级组别。
物理ID寄存器80和逻辑ID寄存器82可分别存储分配给gAPIC 34A的物理APIC ID和逻辑APIC ID。访客ID寄存器84可存储分配给gAPIC 34A的访客ID。据此,如果中断的访客ID与访客ID寄存器84中的访客ID相匹配,或者物理中断中的APIC ID与物理ID寄存器80中的物理ID相匹配,亦或者逻辑中断中的APICID与逻辑ID寄存器82中的逻辑ID相匹配,则控制单元78可用于接受来自访客中断管理器38的中断。
其他APIC状态86可包括内部生成的中断、计时器、本地向量表等等。在各种实施方式中,一些或所有的其他APIC状态86可被包括在gAPIC 34A中或通过到VMM 18的拦截以及该状态的VMM 18仿真虚拟化。
除了不包含访客ID寄存器外,hAPIC 32A-32B可以与gAPIC 34A类似。可选地,hAPIC 32A-32B和gAPIC 34A-34D可以是具有相同硬件的例子(如果gAPIC 34A-34D实现所有的APIC状态),并且访客ID寄存器可包含指示该访客ID是否有效的使能位,或者访客ID寄存器可被编程为调0以指示hAPIC。
现在翻到图5,该图示出了gAPIC状态条目90的一实施方式和VMM管理的gAPIC状态条目92的一实施方式的方块图。图5中所示的是状态的逻辑视图。在存储器中,状态的实际排列可按照图9、12或13中的一些实施方式而进行变化。
通常来说,gAPIC状态条目90可包括至少如下的gAPIC状态,当对应于该gAPIC状态的访客是非活动的时,该gAPIC状态是可变的。在当前的实施方式中,外围设备可将中断用信号通知访客,这可改变IRR的状态。但是,ISR状态仅当访客中的vCPU接受该中断时才可改变,当访客是非活动时,ISR状态不会发生改变。类似的,可以通过vCPU来改变TPR,并且当访客是非活动时,TPR不改变。VMM 18可在VMM 18管理的gAPIC状态条目92中管理这些状态的存储和恢复。
相应地,对类似于图4的APIC 34A的一实施方式而言,gAPIC状态条目90可包含IRR 70的状态。VMM管理的gAPIC状态条目92可包括ISR 72、TMR 74、TPR 76以及其他各种APIC状态86的状态。VMM管理的gAPIC状态条目92也可存储访客ID、逻辑ID以及物理ID,或者这些内容在选择的条目92中是固有的(也就是说,VMM 18可使用这些值来从数据结构68中选择条目92)。
现在翻到图6,该图示出了响应接收来自IOMMU 40的访客中断消息的访客中断管理器38的一实施方式的操作流程图。尽管为了便于理解而将方块按特定顺序显示,但其他顺序也可以使用。可按照访客中断管理器38中的组合逻辑并行地执行各个方块。方块、方块组合和/或流程图在多个时钟周期期间以流水线方式处理。通常来说,访客中断管理器38可用于执行如图6所示的操作。
在一些实施方式中,中断消息的处理根据该中断是逻辑的还是物理的可变(也就是说,根据中断的传送模式是逻辑的还是物理的)。例如,在图11的实施方式中,逻辑中断和物理中断读取不同的表。在图12和13中,逻辑表和物理表在存储器中可以是相邻的,但是可对基址指针增加偏移以定位逻辑中断的逻辑表而物理中断则不需要增加任何偏移。据此,访客中断管理器38可用于确定中断是逻辑的还是物理的(判定框100)。其他实施方式不可基于传送模式而变换,于是判定框100可以除去(且下面要讨论的广播或多个目的地的检查可被并入一个检查中)。
如果中断是逻辑的(判定框100,“是”支路),访客中断管理器38可用于确定从逻辑中断到gAPIC状态数据结构58中相应的gAPIC状态条目90的映射(方块102)。不同的实施方式可执行不同的映射,如图10-13所示,因此上述的确定是可变的。访客中断管理器38可用于设置对应于中断向量的位,该中断向量位于表示在gAPIC状态条目90中的IRR中(方块104)。逻辑中断可具有多个目的地(例如,在簇中的目的地是位向量,其可以具有多于一个的置位)。如果逻辑中断包含多个目的地(判定框106,“是”支路),则访客中断管理器38可用于为每一个附加的目的地重复方块102和104。可选地,在图12的实施方式中,逻辑目的地位向量在一个操作中可被写入gAPIC状态条目中,如下详述。访客中断管理器38可用于传送中断消息到gAPIC 34A-34D(方块108)。
如果中断是物理的(判定框100,“否”支路),访客中断管理器38可用于确定从物理中断到gAPIC状态数据结构58中相应的gAPIC状态条目90的映射(方块110)。不同的实施方式可执行不同的映射,如图10-13所示,因此上述的确定是可变的。访客中断管理器38可用于设置对应于中断向量的位,该中断向量位于表示在gAPIC状态条目90中的IRR中(方块112)。物理中断可以是广播的或者是单一的目的地。如果物理中断是广播的(判定框114,“是”支路),则访客中断管理器38可用于为访客虚拟机(例如,每一个vCPU)中的每一个目的地重复方块110和112。可选地,在图12的实施方式中,该广播可在一个操作中被记录在gAPIC状态条目中,如下详述。访客中断管理器可用于传送中断消息到gAPIC34A-34D(方块108)。
被表示在gAPIC状态条目90中的IRR中的位的设置可作为原子的或运算操作来执行,其中该置位被或运算到该存储位置中的其他IRR位中。原子或运算操作的实际执行情况是可以变化,从锁定的读/修改/写操作到定义来执行或运算的专用电路系统作为一个操作。如上所述,在其他实施方式中可执行比较和交换操作。
在另一实施方式中,具有多于一个目的地的逻辑中断和被广播的物理中断可由访客中断管理器38通过在VMM 18可存取的数据结构中记录该中断来处理(例如,事件队列)。访客中断管理器38可也用于用信号通知VMM 18(例如,引起从处理器30A-30B之一上的虚拟机退出)来将事件通知给VMM 18。可选地,访客中断管理器38可仅周期性地用信号通知VMM 18(例如,每N毫秒一次和/或在事件队列中处于高水位时),并且VMM 18也可周期性地检查事件队列以比可支持的信号通知更快地为任一事件服务。在一实施方式中,事件队列可由IOMMU 40而不是访客中断管理器38来管理。
现在翻到图7,该图所示为说明gAPIC 34A-34D对接收来自访客中断管理器38的中断消息的作出响应的一实施方式的操作流程图。尽管为了便于理解而将方块按照特定顺序显示,但其他顺序也可以使用。可按照gAPIC中的组合逻辑并行地执行各个方块。方块、方块组合和/或流程图在多个时钟周期期间以流水线方式处理。通常来说,gAPIC可用于执行如图7所示的操作。
在一实施方式中,通过设置gAPIC的访客ID(参见图4,在访客ID寄存器84中)为0可使得该gAPIC非激活。因此,为了对接收中断消息作出响应,如果该gAPIC的访客ID为0(判定框120,“是”支路),则该gAPIC是非活动的并且不可处理中断。其他实施方式可通过其他方式(例如,在寄存器中的活动位)来使得gAPIC非激活并且判定框120可根据gAPIC的活动/非活动状态的检查来相应地进行修改。
如果gAPIC的访客ID不为0,则该gAPIC可被配置为既比较该访客ID和接收到的中断的访客ID,又比较接收到的目的地ID和分别位于寄存器80与82中的逻辑ID和物理ID(参见图4)。如果gAPIC的访客ID与接收到的访客ID不匹配(判定框122,“否”支路),则该gAPIC当前被分配给不同的访客并且该gAPIC因而不再被该中断指向。该gAPIC可被配置为用中断的非确认信号进行响应(方块124)。该非确认信号可表示该gAPIC已经接收到该中断但是已经确定该中断不是相应的处理器所指向的,因此该中断未被接受。类似的,如果gAPIC的访客ID与接收到的访客ID相匹配,但是该中断是逻辑的并且与该gAPIC的逻辑ID不匹配或者该中断是物理的、单目的地的并且与该gAPIC的物理ID不匹配(判定框126和128,“否”支路),则该gAPIC可被配置为用中断的非确认信号进行响应(方块124)。
匹配逻辑中断通常包括比较逻辑ID的簇ID部分的相同之处,并且检测gAPIC逻辑ID寄存器中的置位也被设置在从该中断接收的逻辑ID的目的地部分中。如果有不止一个逻辑目的地的话,则该中断逻辑ID的目的地部分中的其他位也可被设置。物理ID可被比较相同之处,除了广播的物理中断可被看作只要访客ID匹配就匹配。
如果中断是逻辑的并且与逻辑ID相匹配(判定框126,“是”支路)或者中断是物理的并且与物理ID相匹配或者中断是广播的(判定框128,“是”支路),则该gAPIC可用于用表示该gAPIC正在接受该中断的确认信号来响应访客中断管理器38以报告给相应的处理器30A-30B(方块130)。该gAPIC也可用于更新IRR寄存器70、设置对应于中断消息中的中断向量的中断请求位(方块132)。该gAPIC可用于重新评估与任何服务中中断和/或任务优先级寄存器有关的中断的优先级(方块134),并可用于基于重新评估的结果将中断用信号通知给处理器(方块136)。也就是说,如果该中断的优先级高于服务中中断和任务优先级寄存器的优先级的话,则该gAPIC可被配置为用信号通知该中断。
现在翻到图8,该图示出了一个流程图以说明VMM 18将gAPIC状态从一个访客改变到另一个访客的一实施方式的操作。也就是说,图8的流程图可表示将gAPIC 34A-34D从一个访客/vCPU重新分配给其他访客或者同一访客中的其他vCPU。尽管为了便于理解,方块以特定的顺序来显示,但也可以用其他顺序。通常来说,VMM 18可包括一些指令,当这些指令在系统5上执行时可实现图8所示的操作。
VMM 18可确定相应于“旧访客”(来自gAPIC的被关闭的访客)的位于gAPIC状态数据结构58中的gAPIC状态条目90的位置(方块140)。gAPIC状态条目90中的数据被认为是“过时的”,因为它可能已经被gAPIC修改过。例如,IRR位可以已被重置以对传送中断到相应的处理器作出响应。据此,VMM 18可将gAPIC状态条目90中的IRR调0(方块142)。VMM 18可清空访客ID寄存器84、逻辑ID寄存器82以及物理ID寄存器80(方块144)。由于访客ID、逻辑ID和物理ID不会与任何中断消息相匹配,因此清空操作可阻止gAPCI接受任何额外的中断。在寄存器80-84被清空(方块144)之后、IRR状态被写入gAPIC状态条目90之前,中断可能已经被传送。据此,为了防止中断状态的丢失,VMM 18可原子地将IRR状态从IRR 70或运算(OR)到gAPIC状态条目90中(方块146)。VMM 18也可将其他gAPIC状态写入与旧访客相关的VMM管理的gAPIC状态条目92中(方块148)。
VMM 18可清空gAPIC的IRR、ISR和TMR寄存器70、72和74以移除旧访客的中断状态(方块150)。VMM 18可将分配给gAPIC的访客的新访客ID、逻辑ID以及物理ID各自写入到访客ID寄存器84、逻辑ID寄存器82和物理ID寄存器80(方块152)。一旦方块152被执行,则gAPIC可开始接受访客中断。VMM 18可为“新访客”(在gAPIC中激活的访客)确定gAPIC状态条目90(方块154),并可从gAPIC状态条目90中读取IRR状态(方块156)。既然对寄存器80-84的编程可使得gAPIC开始接受中断,因此可能的情况是gAPIC已经接受IRR中的中断,该中断在VMM 18读取gAPIC状态条目90之后被记录于该条目中。据此,VMM 18可原子将IRR状态或运算到IRR寄存器70中。也就是说,gAPIC可支持IRR寄存器70上的原子或运算操作(方块158)。VMM 18可从VMM管理的gAPIC状态条目92中为新的访客读取其他状态(方块160)并可将状态写入gAPIC中(方块162)。值得注意的是,方块160和162也可在方块150之后的任意其他点执行。
通常来说,方块140-148可表示关闭来自gAPIC的访客的操作,同时方块150-162通常可表示激活gAPIC中的访客的操作。据此,如图8中的水平虚线所示,如果VMM 18仅希望关闭gAPIC中的访客,则水平虚线以上的方块可被执行。如果VMM仅希望激活gAPIC中的访客,则水平虚线以下的方块可被执行。
现在翻到图9,图中所示的方块图说明在一实施方式中在gAPIC状态条目90中的gAPIC状态的示例性排列170。在图9的实施方式中,IRR的每一个位都被存储在不同字节中。例如,图9中的IRR位0(IRR 0)被存储在存储器中一组连续字节的字节0中;IRR 1被存储在字节1中;等等,直到IRR 255被存储在字节255中。尽管字节中的任何位位置(bit position)均可使用,但在所示的实施方式中IRR位被存储在字节的0位处。在所示的实施方式中,字节中的其他位是不必关心的位(DC)。通过将每一个位存储在分离的字节(存储访问的最小单位)中,每一个位可分别写入而不影响其他的位。这样,一个位可通过到字节的写入操作被设置,这是一个原子操作。通过将置位写入到字节中的IRR位的位置且不更新其他字节,结果可以是对IRR位的原子或运算。在其他实施方式中,原子的或运算可以以其他方式完成,且IRR状态的位可以以其他方式存储。
现在翻到图10,该图示出了定位gAPIC状态条目90的一实施方式的方块图。在所示的实施方式中显示了设备表62和中断重定向表64,还有gAPIC状态映射表60的一实施方式。在该实施方式中,传送中断的外围设备的BDF作为到设备表62的索引使用,且该条目可包括将BDF分配给其的访客的访客ID。此外,在这个实施例中,该条目包括中断重定向表指针(IRTP),其指向中断重定向表64的基址。到中断重定向表64的索引是中断的中断标识符。中断标识符可包括中断向量,也可包括物理或逻辑的中断传送模式(Delmode)。选定的条目可包括新的向量以及目的地ID(DestID)。在不使用中断重定向表64的实施方式中,由外围设备提供的中断向量和目的地ID可直接用来索引gAPIC状态映射表60。
gAPIC状态映射表60可通过gAPIC状态映射表的基址被定位在存储器中。在不同实施方式中,基址可以对所有访客相同,也可以是不同访客不同,或者可被存储在设备表62中。在图10中,基址标识一组分层表的最高层级(L3),其可存储指向较低层级表的指针(例如,L2以及类似的由来自L3但不指向L2的指针标识的表)。L2表可存储指向更低层级表(L1)的指针,其可存储指向gAPIC状态数据结构58中的gAPIC状态条目90的指针。其他实施方式可在层级系统中使用任意的层级数,包括多于或少于图10所示的3层。
在gAPIC状态映射表60中到每一层L3-L1的索引可以是下述值的一部分,该值由来自设备表62的访客ID、来自外围设备或来自中断重定向表64的中断向量以及来自外围设备或来自中断重定向表64的目的地ID串联而形成。到层L3-L1的索引可耗尽该串联值的所有位,这样在gAPIC状态映射表60中访客ID、向量和目的地ID的每一个组合都具有其自身的唯一指针。但是一些指针可指向同一个gAPIC状态条目90(例如,在一实施方式中,同一gAPIC的逻辑ID和物理ID可具有指向同一个gAPIC状态条目90的指针)。
现在翻到图11,该图示出了定位gAPIC状态条目90的另一实施方式的方块图。在所示的实施方式中显示了设备表62和中断重定向表64,还有gAPIC状态映射表60的一实施方式。在该实施方式中,传送中断的外围设备的BDF作为到设备表62的索引使用,且该条目可包括将BDF分配给其的访客的访客ID。此外,在这个实施例中,该条目包括中断重定向表指针(IRTP),其指向中断重定向64的基址。设备62可进一步包括一个或多个指向gAPIC状态映射表60中的表的指针。尤其是,指向访客物理表的指针和指向访客逻辑表的指针均可被存储。访客物理表可将物理目的地ID映射到gAPI状态条目90。也就是说,访客物理表可通过目的地ID进行索引,且可存储指向gAPIC状态条目90的指针。类似的,访客逻辑表可将逻辑目的地ID映射到gAPIC状态条目90。
到中断重定向表64的索引是中断的中断标识符。中断标识符可包括中断向量,也可包括物理或逻辑的传送模式(Delmode)。选定的条目可包括新的向量和目的地ID(DestID)。在不使用中断重定向表64的实施方式中,外围设备提供的中断向量和目的地ID可直接用来索引gAPIC状态映射表60。
现在翻到图12,该图示出了定位gAPIC状态条目90的又一实施方式的方块图。在这一实施方式中没有gAPIC状态映射表60。与图10-11中的实施方式类似的是,传送中断的外围设备的BDF作为到设备表62的索引使用,且该条目可包括将BDF分配给其的访客的访客ID以及可选地包括中断重定向表指针(IRTP),该指针指向中断重定向表64的基址。设备表62可进一步包括至少一个指向gAPIC状态数据结构58中的表的基址的指针(Ptr)。在所示的实施方式中,该表包括访客物理片段(section)180和访客逻辑片段182。尽管为了绘图的清楚在图12中将片段180和182之间隔开一定的空间,但在存储器中片段180和182是相邻的。也就是说,访客物理片段180的顶部与访客逻辑片段182的底部相邻。设备表62的条目可进一步包括指示访客逻辑部分182的顶部的逻辑限制(LLim)域。在其他实施方式中,访客物理部分180和访客逻辑部分182可不相邻并且可在设备表62的条目中存储单独的指针以分别指示访客物理部分180和访客逻辑部分182。
在图12的实施方式中,访客物理部分180可由中断向量(或者来自外围设备或者来自中断重定向表64)来索引。访客物理部分180中的每一个条目可包括对应于访客物理机所支持的目的地ID(例如,多达64个目的地,在图12中编号0到63)的位向量。为了响应物理中断,访客中断管理器38可用于为对应于目的地ID的中断向量设置条目中的位。对广播中断来说,访客中断管理器38可用于设置条目中的每一个对应于中断向量的位,直到虚拟机中的vCPU的数量。
访客逻辑部分182可通过逻辑ID的簇部分以及向量来索引。簇部分是索引的最值得注意的位,因此访客逻辑部分182被分割成对应每一个逻辑簇的簇部分(图12中的簇0到簇N)。在每一个簇中,条目由中断向量来排列,每一个条目存储对应逻辑ID向量部分的位向量。在所示的实施方式中,一个簇中可包括多达16个目的地(例如,逻辑ID的位向量部分可以是16位)。为了响应逻辑中断,访客中断管理器38可被配置为利用相应于中断向量的条目中的内容来逻辑地对逻辑ID的位向量部分进行或运算。
相应地,图12的实施方式可支持广播物理中断的记录和逻辑中断的记录,所述逻辑中断在对gAPIC状态数据结构58的单个更新中具有多目的地。gAPIC的gAPIC状态条目可包括对应于gAPIC物理ID的访客物理部分180的列,其与来自被gAPIC逻辑ID标示的簇的列逻辑地进行或运算,该列被gAPIC逻辑ID的位向量部分中的置位所标识。响应使gAPIC中的访客不活动而更新gAPIC状态数据结构58包括将对应于访客的列中的一列调0并将IRR写到其他列。
图13所示为定位gAPIC状态条目90的再一实施方式。图13中的实施方式与图12中的实施方式类似,除了在访客物理部分180和访客逻辑部分182中的数据的排列不同之外。每一个条目对应一个IRR,因此每一个条目为每一个中断向量包括一个位。访客物理部分180由中断的物理ID来索引,同时访客逻辑部分182由访客的逻辑ID来索引。对应于中断向量的IRR位根据中断的传送模式被设置在逻辑部分182或物理部分180中。访客/vCPU的gAPIC状态是来自对应于分配给该访客/vCPU的物理ID的访客物理部分180的行与来自对应于分配该访客/vCPU的逻辑ID的访客逻辑部分182的行的或运算。
现在翻到图14,该图所示为主机硬件20的另一实施方式的方块图。在所示的实施方式中,与图2中的集成电路66类似的包括两个集成电路66A-66B。因此,如图所示,每一个集成电路可包括gAPIC,例如,集成电路66A中的34A-34D,以及集成电路66B中的34E-34G。每一个集成电路66A-66B可包括各自的访客中断管理器28A-28B和IOMMU(图14中未图示)。至少一个集成电路66A-66B与存储器56A-56B相耦合,可选的是集成电路66A-66B二者都包括存储器。集成电路66A-66B通过所示实施方式中的接口电路44C和44D来耦合。在其他实施方式中,可提供不止两个的集成电路66A-66B并且不同的集成电路可以以任意想要的方式互连。
在一实施方式中,每一个访客中断管理器28A-28B可被使能并可管理指向在同一集成电路中的gAPIC 34A-34G的中断消息。因此,访客中断管理器28A-28B可对访客中断传送提供可扩展解决方案。访客中断管理器28A-28B所使用的数据结构可被存储在一个存储器中(例如,存储器58A),或者每一个访客中断管理器28A-28B可在其自身的存储器58A-58B中具有自己的数据结构。尽管可能存在一些对存取数据结构的争用,但在许多情况下外围设备被分配给特定的访客(其执行于位于集成电路66A-66B之一中的处理器上),这样实际争用的数量可相对较小。
在另一实施方式中,访客中断管理器28A-28B中的一个可被使能并可为系统中的每一个gAPIC 34A-34G执行访客中断传送。这样的实施方式在集成电路66A-66B之间的交互中可经受更多的与中断相关的传送,但也可为访客中断管理提供中心点的概念简单性。
现在翻到图15,该图所示为计算机可存取存储介质200的方框图。一般来说,计算机可存取存储介质可包含任何在用以对计算机提供指令和/或数据期间可由计算机存取的存储介质。例如,计算机可存取存储介质可包含诸如磁性介质或光学介质的存储介质,例如,磁盘(固定的或可移动的)、磁带、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW和/或蓝光关盘。存储介质可进一步包括易失性或非易失性存储介质诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM),等等)、ROM、闪存、可由诸如通用串行总线(USB)接口或任何其他接口的外围设备接口进行存取的非易失性存储器(例如,闪存),等等。存储介质可包括微机电系统(MEMS)以及由诸如网络和/或无线链接的通信介质进行存取的存储介质。图15中的计算机可存取存储介质200可存储VMM 18,VMM 18可执行图8的流程图和/或任何其他分配给VMM 18的功能。一般来说,该计算机可存取存储介质200可存储任何指令组,该指令组执行时实现图8所示的流程图的部分或全部。载体介质可包括计算机可存取存储介质以及诸如有线或无线传输的传输介质。
一旦完全地了解上述公开的内容,本发明的多种变化和修正对本领域技术人员来说是显而易见的。其目的在于使下面的权利要求书解释为包括所有这样的变化和修正。
Claims (40)
1.一种方法,其包括:
接收传送中断的中断消息,所述中断源自外围设备,所述外围设备被分配给系统中多个访客中的第一访客;以及
在存储器的数据结构中记录与所述第一访客相关的所述中断,允许所述中断在所述第一访客执行时被传送到所述第一访客。
2.根据权利要求1所述的方法,其进一步包括:
将所述中断传送到第一中断控制器,所述第一中断控制器被分配给所述第一访客并且是所述第一访客中的所述中断的目的地。
3.根据权利要求1所述的方法,其中中断控制器状态包括所述中断控制器中的中断请求寄存器的状态,且其中所述中断包括中断向量,且其中所述中断请求寄存器包括与所述向量相关的位位置,且其中记录所述中断包括了在数据结构的所述位位置中设置所述位。
4.根据权利要求3所述的方法,其中设置所述位是原子的。
5.根据权利要求4所述的方法,其中设置所述位包括原子地将置位或运算到所述位位置中。
6.一种访客中断管理器,其被配置为接收中断消息,所述中断消息对应于指向在所述系统上可执行的访客的中断,其中所述访客中断管理器被配置为将所述中断记录于存储系统中的数据结构中,以确保即使所述访客在所述系统中在所述中断消息被接收时不是活动的,所述中断依然可被传送到所述访客。
7.根据权利要求6所述的访客中断管理器,其中所述数据结构被配置为为给定访客存储中断控制器的状态的至少一部分,且其中所述状态包括中断请求寄存器的状态,且其中所述访客中断管理器被配置来更新所述中断请求寄存器的所述状态以记录所述中断。
8.根据权利要求7所述的访客中断管理器,其中所述中断请求寄存器包括与所述中断控制器所支持的每一个中断向量相对应的位,且其中所述中断消息包括所述中断的所述中断向量,且其中所述访客中断管理器被配置来更新与来自所述中断消息的所述中断向量相对应的所述位。
9.一种系统,其包括:
存储系统;以及
根据权利要求6-8中的任一项所述的访客中断管理器。
10.根据权利要求9所述的系统,其进一步包括:
外围设备,其被配置来初始化所述中断;以及
输入/输出存储管理单元(IOMMU),其被配置为接收来自所述外围设备的所述中断,其中所述IOMMU被配置为将所述中断与所述访客关联以响应所述存储器中一个或多个第二数据结构中的数据,且其中所述IOMMU被配置为传送包含有标识所述访客的访客标识符的所述中断消息以响应与所述访客相关的所述中断。
11.根据权利要求10所述的系统,其进一步包括可被分配给所述访客的中断控制器,其中所述中断控制器被配置为存储所述访客的所述访客标识符,且其中所述中断控制器被配置为将来自接收到的中断消息的访客标识符与存储在所述中断控制器中的访客标识符进行比较,且其中所述中断控制器被配置为接受所述中断以响应所述访客标识符比较过程中的匹配。
12.根据权利要求11所述的系统,其中所述访客中断管理器被配置为将所述中断消息传送到所述中断控制器以响应来自所述IOMMU的所述中断消息并响应被记录于所述数据结构中的所述中断。
13.一种方法,其包括:
在耦合到处理器的访客中断控制器中接收访客中断消息,其中所述访客中断消息传送指向访客的访客中断,所述访客由主机控制并且在所述处理器上可执行;
将存储在所述访客中断控制器中的访客标识符与所述访客中断消息中接收到的访客标识符进行匹配;
将所述访客中断控制器中的至少一个目的地标识符与所述访客消息中接收到的目的地标识符进行匹配;以及
在所述访客中断控制器中接受所述中断以响应所述访客标识符的匹配和所述至少一个目的地标识符的匹配。
14.根据权利要求13所述的方法,其进一步包括:
在耦合到处理器的第一中断控制器中接收第一中断消息,所述第一中断消息传送第一中断,所述第一中断指向在所述处理器上可执行的主机;
在耦合到所述处理器的第二中断控制器中接收第二中断消息,所述第二中断消息传送第二中断,所述第二中断指向由所述主机控制并且在所述处理器上可执行的访客,其中所述第二中断控制器是权利要求1所述的访客中断控制器;
所述第一中断控制器传送所述第一中断到所述处理器以响应接收所述第一中断消息;以及
所述第二中断控制器传送所述第二中断到所述处理器以响应接收所述第二中断消息。
15.根据权利要求14所述的方法,其进一步包括:
所述处理器执行所述主机,其中所述主机包括虚拟机监视器;
所述处理器中断所述虚拟机监视器以响应所述第一中断;以及
所述处理器在所述虚拟机监视器执行期间屏蔽所述第二中断。
16.根据权利要求14所述的方法,其进一步包括:
所述处理器执行所述访客;
所述处理器退出所述访客以响应所述第一中断;
中断所述访客以响应所述第二中断;以及
在与所述访客相关的虚拟机中为所述第二中断服务。
17.根据权利要求13-16中的任一项所述的方法,所述方法进一步包括:
记录与所述第一访客相关的所述第一中断,允许所述中断在所述第一访客执行时被传送到所述第一访客。
18.根据权利要求17所述的方法,其进一步包括在所述系统中的存储系统中分配数据结构以为在所述系统中可执行的每一个访客和所述访客中的每一个中断目的地存储对应于所述中断控制器的中断控制器状态的至少一部分,其中记录所述第一中断包括记录所述中断控制器状态中的所述第一中断,所述中断控制器状态对应于所述第一访客和所述中断目的地。
19.根据权利要求17或18所述的方法,其中所述记录是原子的。
20.根据权利要求18或19所述的方法,其中所述中断控制器状态包括对每一个访客中的每一个目的地的中断请求状态,且其中所述中断请求状态标识了哪些中断已经在相应访客中的相应中断控制器处被请求,且其中所述记录包括更新对应于第一访客中第一目的地的所述数据结构中的所述中断请求状态。
21.根据权利要求20所述的方法,其中每一个中断都具有联合传送模式,其中所述数据结构包括对应于第一传送模式的第一片段和对应于第二传送模式的第二片段,且其中每一个目的地和每一个访客的所述中断请求状态包括存储在每一个所述第一片段和每一个所述第二片段中的数据。
22.一种方法,其包括:
接收传送中断的中断消息,所述中断源自外围设备,所述外围设备被分配给系统中多个访客中的第一访客;
记录与所述第一访客相关的所述中断,允许所述中断在所述第一访客执行时被传送到所述第一访客;以及
将所述中断传送到第一中断控制器,所述第一中断控制器被分配给所述第一访客并且是所述第一访客中的所述中断的目的地。
23.一种中断控制器,其包括:
访客标识符寄存器,其被配置为存储标识访客的访客标识符,所述访客在与所述中断控制器耦合的处理器上可执行,所述访客由在所述处理器上可执行的主机来控制;
至少一个附加寄存器,其被配置为存储目的地标识符;以及
控制电路,其被耦合到所述访客标识符寄存器和所述至少一个附加寄存器,其中所述控制电路被配置为接收对所述处理器的中断指示,其中所述指示包括接收到的访客标识符和接收到的目的地标识符,且其中所述控制电路被配置为代表所述处理器来接受所述中断以响应所述访客标识符与所述接收到的访客标识符的匹配以及所述目的地标识符与所述接收到的目的地标识符的匹配。
24.根据权利要求23所述的中断控制器,其中所述至少一个附加寄存器包括:
第一寄存器,其被配置为存储逻辑目的地标识符;以及
第二寄存器,其被配置为存储物理目的地标识符;
其中所述控制电路被配置为检测所述接收到的目的地标识符与所述物理目的地标识符之间的匹配以响应所述接收到的目的地标识符与所述物理目的地标识符的比较,且其中所述逻辑目的地标识符包括簇标识符和标识所述簇的成员的位向量,且其中所述控制电路被配置为检测所述接收到的目的地标识符与所述逻辑目的地标识符之间的匹配以响应所述簇标识符与所述接收到的目的地标识符中相应部分的比较并进一步响应所述逻辑目的地标识符位向量中的置位也被设置在接收到的目的标识符的相应的位向量部分。
25.根据权利要求24所述的中断控制器,其中即使所述物理目的地标识符与所述接收到的目的地标识符不匹配,所述控制电路还是被配置为接受中断以响应被标识为广播的中断。
26.一种系统,其包括:
处理器;
第一中断控制器,其与所述处理器耦合并被配置为用信号通知所述处理器中断以响应第一中断消息,所述第一中断消息传送指向所述系统中的主机的第一中断;
第二中断控制器,其与所述处理器耦合并被配置为用信号通知所述处理器中断以响应第二中断消息,所述第二中断消息传送指向访客的第二中断,所述访客由所述主机控制且在所述处理器上可执行,其中所述第二中断控制器是如权利要求23-25中的任一项所述的中断控制器。
27.根据权利要求26所述的系统,其中所述处理器在使用过程中被配置为中断所述主机来为所述第一中断服务以响应所述主机在所述处理器上执行期间来自所述第一中断控制器的中断信号。
28.根据权利要求27所述的系统,其中所述处理器在使用过程中被配置为退出所述访客到所述主机来为所述第一中断服务以响应所述访客在所述处理器上执行期间来自所述第一中断控制器的中断信号。
29.根据权利要求26-28中的任一项所述的系统,其中所述处理器在使用过程中被配置为中断所述访客并在与所述访客相关的虚拟机中为所述第二中断服务以响应在所述访客执行期间来自所述第二中断控制器的中断信号。
30.根据权利要求28所述的系统,其中所述处理器在使用过程中被配置为屏蔽由所述第二中断控制器请求的所述中断直到所述访客被执行以响应在所述主机执行期间来自所述第二中断控制器的中断信号。
31.根据权利要求26-30中的任一项所述的系统,其进一步包括:
存储系统;以及
访客中断管理器,其被配置为接收中断消息,所述中断消息对应于指向在所述系统上可执行的访客的中断,其中所述访客中断管理器被配置为将所述中断记录于所述存储系统中的数据结构中,以确保即使所述访客在所述系统中在所述中断消息被接收时不是活动的,所述中断依然可被传送到所述访客。
32.根据权利要求31所述的系统,其进一步包括:
外围设备,其被配置来初始化所述中断;以及
输入/输出存储管理单元(IOMMU),其被配置为接收来自所述外围设备的所述中断,其中所述IOMMU被配置为将所述中断与所述访客关联以响应所述存储器中一个或多个第二数据结构中的数据,且其中所述IOMMU被配置为传送包含有标识所述访客的访客标识符的所述中断消息以响应与所述访客相关的所述中断。
33.根据权利要求32所述的系统,其中所述访客中断管理器被配置为将所述中断消息传送到所述第二中断控制器以响应来自所述IOMMU的所述中断消息并响应被记录于所述数据结构中的所述中断。
34.根据权利要求31-33中的任一项所述的系统,其中所述数据结构包括多个条目,每个条目被配置为为给定访客存储中断控制器的状态的至少一部分,且其中所述条目中的所述状态包括中断请求寄存器的状态,且其中所述访客中断管理器被配置来更新所述中断请求寄存器的所述状态以记录所述中断。
35.根据权利要求34所述的系统,其中所述更新是原子的。
36.根据权利要求34或35所述的系统,其中每一个中断都具有联合传送模式,且其中所述数据结构包括对应于第一传送模式的第一片段和对应于第二传送模式的第二片段,且其中每一个目的地和每一个访客的所述中断请求状态包括存储在每一个所述第一片段和每一个所述第二片段中的数据。
37.根据权利要求36所述的系统,其中所述第一传送模式是物理的,且其中所述第一片段包括具有对应于物理标识符的行的第一表,所述物理标识符为物理传送模式中断标识目的地,且其中所述访客中断管理器被配置来更新所述行的一行。
38.根据权利要求36或37所述的系统,其中所述第二传送模式是逻辑的,且其中为逻辑传送模式中断标识一个或多个目的地的逻辑标识符包括簇标识符和指示所述簇成员的标识位向量,且其中所述第二片段包括具有与每一个簇相关的子片段的第二表,且其中所述子片段中的行对应于所述簇的成员,且其中所述访客中断管理器被配置来更新所述第二表中的所述行的一行。
39.根据权利要求36所述的系统,其中所述第一传送模式是物理的,且其中所述第一片段包括具有对应于中断向量的行的第一表,且其中每一行中的每一个位对应于不同的物理标识符,所述物理标识符为物理传送模式中断标识目的地,且其中所述访客中断管理器被配置来更新所述第一表的一列。
40.根据权利要求39所述的系统,其中所述第二传送模式是逻辑的,且其中为逻辑传送模式中断标识一个或多个目的地的逻辑标识符包括簇标识符和指示所述簇成员的标识位向量,且其中所述第二片段包括具有与每一个簇相关的子片段的第二表,且其中每一行中的每一个位对应于所述簇的不同成员,且其中所述访客中断管理器被配置来更新所述第二表中的一列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310753146.9A CN103761145B (zh) | 2009-01-26 | 2010-01-26 | 用于各个处理器的辅助中断虚拟化的访客中断控制器 |
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14726909P | 2009-01-26 | 2009-01-26 | |
US61/147,269 | 2009-01-26 | ||
US12/611,595 | 2009-11-03 | ||
US12/611,607 US8180944B2 (en) | 2009-01-26 | 2009-11-03 | Guest interrupt manager that records interrupts for guests and delivers interrupts to executing guests |
US12/611,622 | 2009-11-03 | ||
US12/611,595 US8055827B2 (en) | 2009-01-26 | 2009-11-03 | Guest interrupt controllers for each processor to aid interrupt virtualization |
US12/611,622 US8234432B2 (en) | 2009-01-26 | 2009-11-03 | Memory structure to store interrupt state for inactive guests |
US12/611,607 | 2009-11-03 | ||
PCT/US2010/022111 WO2010085804A1 (en) | 2009-01-26 | 2010-01-26 | Guest interrupt controllers for each processor to aid interrupt virtualization |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310753146.9A Division CN103761145B (zh) | 2009-01-26 | 2010-01-26 | 用于各个处理器的辅助中断虚拟化的访客中断控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102341783A true CN102341783A (zh) | 2012-02-01 |
CN102341783B CN102341783B (zh) | 2014-10-22 |
Family
ID=42355063
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310753146.9A Active CN103761145B (zh) | 2009-01-26 | 2010-01-26 | 用于各个处理器的辅助中断虚拟化的访客中断控制器 |
CN201080009842.3A Active CN102341783B (zh) | 2009-01-26 | 2010-01-26 | 用于各个处理器的辅助中断虚拟化的访客中断控制器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310753146.9A Active CN103761145B (zh) | 2009-01-26 | 2010-01-26 | 用于各个处理器的辅助中断虚拟化的访客中断控制器 |
Country Status (6)
Country | Link |
---|---|
US (4) | US8234432B2 (zh) |
EP (1) | EP2389628A1 (zh) |
JP (1) | JP5680554B2 (zh) |
KR (1) | KR101610838B1 (zh) |
CN (2) | CN103761145B (zh) |
WO (1) | WO2010085804A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
CN105210041A (zh) * | 2013-05-21 | 2015-12-30 | Arm有限公司 | 针对虚拟处理器处理并路由中断 |
Families Citing this family (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102077181B (zh) * | 2008-04-28 | 2014-07-02 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
US8234432B2 (en) * | 2009-01-26 | 2012-07-31 | Advanced Micro Devices, Inc. | Memory structure to store interrupt state for inactive guests |
JP5320140B2 (ja) * | 2009-04-14 | 2013-10-23 | 株式会社日立製作所 | 計算機システム、割込み中継回路及び割込み中継方法 |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
JP2013507033A (ja) | 2009-10-02 | 2013-02-28 | エルジー エレクトロニクス インコーポレイティド | ダウンリンク参照信号の転送方法及び装置 |
WO2011072423A1 (en) * | 2009-12-17 | 2011-06-23 | Intel Corporation | Cooperated interrupt moderation for a virtualization environment |
US8380908B2 (en) * | 2009-12-31 | 2013-02-19 | Intel Corporation | Emulation of an input/output advanced programmable interrupt controller |
US8566492B2 (en) * | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
US8549241B2 (en) * | 2010-01-06 | 2013-10-01 | Vmware, Inc. | Method and system for frequent checkpointing |
US8533382B2 (en) * | 2010-01-06 | 2013-09-10 | Vmware, Inc. | Method and system for frequent checkpointing |
US8661213B2 (en) * | 2010-01-06 | 2014-02-25 | Vmware, Inc. | Method and system for frequent checkpointing |
US8875129B2 (en) * | 2010-02-05 | 2014-10-28 | Tripwire, Inc. | Systems and methods for monitoring and alerting events that virtual machine software produces in a virtual infrastructure |
US20110197004A1 (en) * | 2010-02-05 | 2011-08-11 | Serebrin Benjamin C | Processor Configured to Virtualize Guest Local Interrupt Controller |
US8566823B2 (en) | 2010-02-05 | 2013-10-22 | Tripwire, Inc. | Systems and methods for triggering scripts based upon an alert within a virtual infrastructure |
US8868987B2 (en) * | 2010-02-05 | 2014-10-21 | Tripwire, Inc. | Systems and methods for visual correlation of log events, configuration changes and conditions producing alerts in a virtual infrastructure |
US8244978B2 (en) * | 2010-02-17 | 2012-08-14 | Advanced Micro Devices, Inc. | IOMMU architected TLB support |
KR101603287B1 (ko) * | 2010-05-17 | 2016-03-14 | 삼성전자주식회사 | 시스템 온 칩 및 그것의 동작 방법 |
US8799422B1 (en) * | 2010-08-16 | 2014-08-05 | Juniper Networks, Inc. | In-service configuration upgrade using virtual machine instances |
TWI430615B (zh) | 2010-09-09 | 2014-03-11 | Realtek Semiconductor Corp | 具有網路連線功能之電子裝置及應用於該電子裝置之方法 |
US8954959B2 (en) * | 2010-09-16 | 2015-02-10 | Red Hat Israel, Ltd. | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU |
US8930401B2 (en) | 2010-10-25 | 2015-01-06 | International Business Machines Corporation | Accessing and providing access to computer files over a computer network |
US8458698B2 (en) * | 2010-11-18 | 2013-06-04 | International Business Machines Corporation | Improving performance in a nested virtualized environment |
US8612659B1 (en) * | 2010-12-14 | 2013-12-17 | Vmware, Inc. | Hardware interrupt arbitration in virtualized computer systems |
KR20120070326A (ko) * | 2010-12-21 | 2012-06-29 | 한국전자통신연구원 | 메모리 가상화 장치 및 방법 |
US20120179847A1 (en) * | 2011-01-12 | 2012-07-12 | Standard Microsystems Corporation | Method and System for Implementing Bus Operations with Precise Timing |
US8578080B2 (en) * | 2011-07-01 | 2013-11-05 | Intel Corporation | Secure handling of interrupted events utilizing a virtual interrupt definition table |
US8949498B2 (en) * | 2011-08-11 | 2015-02-03 | Mellanox Technologies Ltd. | Interrupt handling in a virtual machine environment |
US8886862B2 (en) | 2011-08-11 | 2014-11-11 | Mellanox Technologies Ltd. | Virtualization of interrupts |
US8631181B2 (en) * | 2011-09-26 | 2014-01-14 | Oracle International Corporation | Validating message-signaled interrupts by tracking interrupt vectors assigned to devices |
WO2013099414A1 (ja) * | 2011-12-26 | 2013-07-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | レジスタ・マッピング方法 |
US20130326519A1 (en) * | 2011-12-30 | 2013-12-05 | Andrew V. Anderson | Virtual machine control structure shadowing |
US8892802B2 (en) | 2012-01-01 | 2014-11-18 | International Business Machines Corporation | Enhancing interrupt handling in a virtual environment |
US9081507B2 (en) * | 2012-03-14 | 2015-07-14 | Symantec Corporation | Shared storage access management systems and methods |
US9152588B2 (en) * | 2012-10-16 | 2015-10-06 | Apple Inc. | Race-free level-sensitive interrupt delivery using fabric delivered interrupts |
FR2996935B1 (fr) * | 2012-10-16 | 2016-01-15 | Bull Sas | Procede et dispositif de traitement d'interruptions dans un systeme multiprocesseur |
US9009368B2 (en) | 2012-10-23 | 2015-04-14 | Advanced Micro Devices, Inc. | Interrupt latency performance counters |
US10572665B2 (en) | 2012-12-28 | 2020-02-25 | Fireeye, Inc. | System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events |
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 |
US9069741B2 (en) * | 2013-02-25 | 2015-06-30 | Red Hat, Inc. | Emulating level triggered interrupts of physical devices assigned to virtual machine |
CN103699428A (zh) * | 2013-12-20 | 2014-04-02 | 华为技术有限公司 | 一种虚拟网卡中断亲和性绑定的方法和计算机设备 |
US9959224B1 (en) | 2013-12-23 | 2018-05-01 | Google Llc | Device generated interrupts compatible with limited interrupt virtualization hardware |
WO2015132942A1 (ja) * | 2014-03-07 | 2015-09-11 | 株式会社日立製作所 | 計算機 |
US10380047B2 (en) | 2014-04-07 | 2019-08-13 | Mellanox Technologies, Ltd. | Traffic-dependent adaptive interrupt moderation |
WO2015159359A1 (ja) * | 2014-04-15 | 2015-10-22 | 株式会社日立製作所 | 物理計算機 |
JP2017518589A (ja) | 2014-06-20 | 2017-07-06 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 仮想化プラットホームによって割込みを処理する方法および関連デバイス |
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 |
US9910699B2 (en) | 2014-10-28 | 2018-03-06 | Intel Corporation | Virtual processor direct interrupt delivery mechanism |
US9477509B2 (en) | 2015-01-23 | 2016-10-25 | Red Hat Israel, Ltd. | Protection against interrupts in virtual machine functions |
US9875128B2 (en) * | 2015-01-23 | 2018-01-23 | Red Hat Israel, Ltd. | Using hypervisor trapping for protection against interrupts in virtual machine functions |
US9772870B2 (en) * | 2015-01-29 | 2017-09-26 | Red Hat Israel, Ltd. | Delivering interrupts to virtual machines executing privileged virtual machine functions |
US10216927B1 (en) | 2015-06-30 | 2019-02-26 | Fireeye, Inc. | System and method for protecting memory pages associated with a process using a virtualization layer |
US11113086B1 (en) | 2015-06-30 | 2021-09-07 | Fireeye, Inc. | Virtual system and method for securing external network connectivity |
US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
US10395029B1 (en) | 2015-06-30 | 2019-08-27 | Fireeye, Inc. | Virtual system and method with threat protection |
US10726127B1 (en) | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
US10033759B1 (en) | 2015-09-28 | 2018-07-24 | Fireeye, Inc. | System and method of threat detection under hypervisor control |
WO2017094132A1 (ja) * | 2015-12-02 | 2017-06-08 | 株式会社日立製作所 | 計算機および計算機の制御方法 |
US20210026950A1 (en) * | 2016-03-07 | 2021-01-28 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
US10467161B2 (en) | 2016-05-25 | 2019-11-05 | Mellanox Technologies, Ltd. | Dynamically-tuned interrupt moderation |
WO2018176360A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Scalable interrupt virtualization for input/output devices |
CN109144679B (zh) * | 2017-06-27 | 2022-03-29 | 华为技术有限公司 | 中断请求的处理方法、装置及虚拟化设备 |
US10248595B2 (en) * | 2017-08-10 | 2019-04-02 | Infineon Technologies Ag | Virtual machine monitor interrupt support for computer processing unit (CPU) |
US10346328B2 (en) | 2017-09-11 | 2019-07-09 | Apple Inc. | Method and apparatus for indicating interrupts |
US10387325B2 (en) | 2017-11-28 | 2019-08-20 | International Business Machines Corporation | Dynamic address translation for a virtual machine |
US10747298B2 (en) | 2017-11-29 | 2020-08-18 | Advanced Micro Devices, Inc. | Dynamic interrupt rate control in computing system |
JP6974254B2 (ja) * | 2018-05-18 | 2021-12-01 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US11080088B2 (en) * | 2018-12-19 | 2021-08-03 | Intel Corporation | Posted interrupt processing in virtual machine monitor |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
WO2020164935A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
WO2020164819A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
WO2020165666A1 (en) * | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with blocking indicator |
BR112021016093A2 (pt) | 2019-02-14 | 2021-10-26 | International Business Machines Corporation | Interrupção dirigida para virtualização de multiníveis |
US11494211B2 (en) | 2019-04-22 | 2022-11-08 | Advanced Micro Devices, Inc. | Domain identifier and device identifier translation by an input-output memory management unit |
US20200387326A1 (en) * | 2019-06-10 | 2020-12-10 | Advanced Micro Devices, Inc. | Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit |
US10853263B1 (en) | 2019-07-23 | 2020-12-01 | Ati Technologies Ulc | Unified kernel virtual address space for heterogeneous computing |
US11106595B2 (en) * | 2019-08-22 | 2021-08-31 | Micron Technology, Inc. | Hierarchical memory systems |
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 |
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 |
GB2593716B (en) * | 2020-03-31 | 2022-08-10 | Advanced Risc Mach Ltd | Controlling memory access in a data processing systems with multiple subsystems |
CN111722916B (zh) * | 2020-06-29 | 2023-11-14 | 长沙新弘软件有限公司 | 一种通过映射表处理msi-x中断的方法 |
US11755355B2 (en) * | 2020-11-25 | 2023-09-12 | Nxp Usa, Inc. | Systems and methods for assigning domain identifiers to remote peripheral devices using a hypervisor |
US11595472B2 (en) | 2021-01-19 | 2023-02-28 | Mellanox Technologies, Ltd. | Controlling packet delivery based on application level information |
US20220365802A1 (en) * | 2021-05-17 | 2022-11-17 | Intel Corporation | Virtualization of interprocessor interrupts |
US20240192981A1 (en) * | 2021-06-25 | 2024-06-13 | Intel Corporation | Exitless guest to host notification |
US11989144B2 (en) | 2021-07-30 | 2024-05-21 | Advanced Micro Devices, Inc. | Centralized interrupt handling for chiplet processing units |
US11550745B1 (en) | 2021-09-21 | 2023-01-10 | Apple Inc. | Remapping techniques for message signaled interrupts |
US11792139B2 (en) | 2022-01-24 | 2023-10-17 | Mellanox Technologies, Ltd. | Efficient packet reordering using hints |
US12039363B2 (en) * | 2022-06-29 | 2024-07-16 | Red Hat, Inc. | Synchronizing concurrent tasks using interrupt deferral instructions |
CN117407059B (zh) * | 2023-10-25 | 2024-05-07 | 合芯科技有限公司 | 中断控制方法、设备、存储介质及程序产品 |
CN117130668B (zh) * | 2023-10-27 | 2023-12-29 | 南京沁恒微电子股份有限公司 | 一种处理器取指重定向时序优化电路 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN101128807A (zh) * | 2005-03-28 | 2008-02-20 | 微软公司 | 用于扩充中断控制器和合成中断来源的系统和方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6136850A (ja) * | 1984-07-30 | 1986-02-21 | Nec Corp | 入出力割込通知方式 |
JPH02208740A (ja) * | 1989-02-09 | 1990-08-20 | Fujitsu Ltd | 仮想計算機制御方式 |
JP3093293B2 (ja) * | 1991-02-08 | 2000-10-03 | 日本電気株式会社 | 情報処理装置の割り込み方式 |
US5222215A (en) * | 1991-08-29 | 1993-06-22 | International Business Machines Corporation | Cpu expansive gradation of i/o interruption subclass recognition |
JP2870254B2 (ja) * | 1991-10-02 | 1999-03-17 | 日本電気株式会社 | 仮想計算機の入出力割り込み処理方式 |
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 |
US20040117532A1 (en) | 2002-12-11 | 2004-06-17 | Bennett Steven M. | Mechanism for controlling external interrupts in a virtual machine system |
US7000051B2 (en) * | 2003-03-31 | 2006-02-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer 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 |
US20050228921A1 (en) | 2004-03-31 | 2005-10-13 | Prashant Sethi | Sharing of interrupts between operating entities |
US7418584B1 (en) * | 2004-05-11 | 2008-08-26 | Advanced Micro Devices, Inc. | Executing system management mode code as virtual machine guest |
US7444493B2 (en) | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US20060112212A1 (en) * | 2004-11-23 | 2006-05-25 | Hob Gmbh & Co. Kg | Virtual machine computer system for running guest operating system on a central processing means virtualized by a host system using region ID virtual memory option |
US7383374B2 (en) * | 2005-03-31 | 2008-06-03 | Intel Corporation | Method and apparatus for managing virtual addresses |
US7552236B2 (en) * | 2005-07-14 | 2009-06-23 | International Business Machines Corporation | Routing interrupts in a multi-node system |
US8286162B2 (en) | 2005-12-30 | 2012-10-09 | Intel Corporation | Delivering interrupts directly to a virtual processor |
US7613898B2 (en) * | 2006-01-17 | 2009-11-03 | Globalfoundries Inc. | Virtualizing an IOMMU |
US7945905B2 (en) | 2006-06-02 | 2011-05-17 | Accenture Global Services Limited | Quality inspector tool |
US7873770B2 (en) * | 2006-11-13 | 2011-01-18 | Globalfoundries Inc. | Filtering and remapping interrupts |
US7730250B2 (en) * | 2006-12-27 | 2010-06-01 | Seiko Epson Corporation | Interrupt control circuit, circuit board, electro-optic device, and electronic apparatus |
US20080162762A1 (en) * | 2006-12-29 | 2008-07-03 | Gilbert Neiger | Interrupt remapping based on requestor identification |
US8453143B2 (en) | 2007-09-19 | 2013-05-28 | Vmware, Inc. | Reducing the latency of virtual interrupt delivery in virtual machines |
US7809875B2 (en) * | 2008-06-30 | 2010-10-05 | Wind River Systems, Inc. | Method and system for secure communication between processor partitions |
GB2462258B (en) * | 2008-07-28 | 2012-02-08 | Advanced Risc Mach Ltd | Interrupt control for virtual processing apparatus |
US7849247B2 (en) * | 2008-10-14 | 2010-12-07 | Freescale Semiconductor, Inc. | Interrupt controller for accelerated interrupt handling in a data processing system and method thereof |
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 |
JP5508903B2 (ja) * | 2010-03-05 | 2014-06-04 | ルネサスエレクトロニクス株式会社 | 情報処理装置、半導体集積回路装置および異常検出方法 |
-
2009
- 2009-11-03 US US12/611,622 patent/US8234432B2/en active Active
- 2009-11-03 US US12/611,607 patent/US8180944B2/en active Active
- 2009-11-03 US US12/611,595 patent/US8055827B2/en active Active
- 2009-11-05 US US12/613,076 patent/US8234429B2/en active Active
-
2010
- 2010-01-26 KR KR1020117019983A patent/KR101610838B1/ko active IP Right Grant
- 2010-01-26 CN CN201310753146.9A patent/CN103761145B/zh active Active
- 2010-01-26 WO PCT/US2010/022111 patent/WO2010085804A1/en active Application Filing
- 2010-01-26 JP JP2011548227A patent/JP5680554B2/ja active Active
- 2010-01-26 CN CN201080009842.3A patent/CN102341783B/zh active Active
- 2010-01-26 EP EP10702953A patent/EP2389628A1/en not_active Ceased
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN101128807A (zh) * | 2005-03-28 | 2008-02-20 | 微软公司 | 用于扩充中断控制器和合成中断来源的系统和方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
CN105210041A (zh) * | 2013-05-21 | 2015-12-30 | Arm有限公司 | 针对虚拟处理器处理并路由中断 |
CN105210041B (zh) * | 2013-05-21 | 2019-11-15 | Arm有限公司 | 针对虚拟处理器处理并路由中断 |
Also Published As
Publication number | Publication date |
---|---|
JP2012515995A (ja) | 2012-07-12 |
US20100191888A1 (en) | 2010-07-29 |
EP2389628A1 (en) | 2011-11-30 |
KR20110113756A (ko) | 2011-10-18 |
US8055827B2 (en) | 2011-11-08 |
US8234429B2 (en) | 2012-07-31 |
CN102341783B (zh) | 2014-10-22 |
US20100191885A1 (en) | 2010-07-29 |
CN103761145B (zh) | 2017-06-09 |
US8180944B2 (en) | 2012-05-15 |
US20100191887A1 (en) | 2010-07-29 |
JP5680554B2 (ja) | 2015-03-04 |
KR101610838B1 (ko) | 2016-04-08 |
WO2010085804A1 (en) | 2010-07-29 |
US8234432B2 (en) | 2012-07-31 |
US20100191889A1 (en) | 2010-07-29 |
CN103761145A (zh) | 2014-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102341783B (zh) | 用于各个处理器的辅助中断虚拟化的访客中断控制器 | |
US8706941B2 (en) | Interrupt virtualization | |
US7209994B1 (en) | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests | |
US7707341B1 (en) | Virtualizing an interrupt controller | |
CN100514297C (zh) | 为与虚拟机监控程序相关联的定时器提供支持 | |
EP0898743B1 (en) | A multi-threaded microprocessor configured to execute interrupt service routines as a thread | |
US7590982B1 (en) | System and method for virtualizing processor and interrupt priorities | |
US20150205736A1 (en) | Delivering interrupts directly to a virtual processor | |
US20070156986A1 (en) | Method and apparatus for a guest to access a memory mapped device | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
US8244945B2 (en) | Efficient handling of interrupts in a computing environment | |
KR20210096062A (ko) | 예외 발생 이벤트 처리 시스템 및 방법 | |
US20240086219A1 (en) | Transmitting interrupts from a virtual machine (vm) to a destination processing unit without triggering a vm exit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |