虚拟处理设备的中断控制的制作方法

文档序号:6594321阅读:211来源:国知局
专利名称:虚拟处理设备的中断控制的制作方法
技术领域
本发明涉及数据处理系统。更具体地,本发明涉及使用一个或多个虚拟处理设备 的数据处理系统内的中断处置。
背景技术
已知的是,给数据处理系统提供对一 个或多个虚拟处理设备的虚拟化支持。此系 统的一个示例为特定处理器被物理地实施并且希望提供对多个虚拟机的支持。在这些情况 中,物理处理器能够执行软件(举例来说,管理程序软件)以便提供对多个虚拟机的支持, 举例来说在正在执行的虚拟机之间进行切换。提供此虚拟化支持的系统内的一个特定问题是如何处置中断。尤其是在实时处理 的领域中,中断处理速度经常是数据处理系统的关键性能参数。一种方式是在所支持的每 一个虚拟处理系统的管理程序码中提供以软件为基础的虚拟中断控制器。该虚拟处理系统 存取该中断控制器的尝试导致进入该管理程序,其接着能够模拟正确的响应。如果对中断 控制器的存取是频繁的,则这可能不利地降速。每个中断的处理通常涉及最少两次中断控 制器存取,并且经常涉及更多。再者,某些虚拟处理系统对中断控制器进行频繁的存取,以 便改变处理器的活动优先级等级。因此,这种提供所需功能的以软件为基础的虚拟中断控 制器技术对整体性能有显著的负面影响。也可能建立一种以硬件为基础的机构,其自然支持多个虚拟机并且将每个虚拟机 的中断控制器存取映射至适当的硬件动作。不过,这种硬件方式可能涉及不利得大的硬件 开销并且也可能在能够支持多少个中断及/或虚拟机方面施加潜在限制性的约束。另一方式是使用部分虚拟化(paravirtualisation)以通过使用更高效的超呼叫 (hypercall)来减少中断的开销。即使利用这些方式,在物理中断到达时仍会有至少一次管 理程序进入并且在完成中断处理时会有另外次(以便使得能够重新使能物理中断)。

发明内容
从一个方面来看,本发明提供一种使用为一个或多个虚拟处理设备提供虚拟化支 持的用于处理数据的设备来处理中断信号的方法,所述方法包括以下步骤
响应于用于处理数据的所述设备所接收到的中断信号,将表征所述中断信号的数据写 入各个虚拟处理设备的一个或多个虚拟接口中的至少一个,所述一个或多个虚拟接口以硬 件提供且分别包含用于储存相关联虚拟处理设备的未完成中断的列表的一个或多个列表 寄存器;
响应于所述至少一个虚拟接口的所述列表寄存器内的所述未完成中断的列表,产生虚 拟中断信号以触发与所述相关联虚拟处理设备所进行的中断处理对应的中断处理,并且提 供表征所述虚拟中断信号的数据以便从所述至少一个虚拟接口内所包含的一个或多个接 口寄存器处进行读取;
响应于所述虚拟中断信号,使用彷佛在所述相关联虚拟处理设备上执行的第一控制程序来从所述一个或多个接口 寄存器处读取表征所述中断信号的数据;以及
响应于从所述一个或多个接口寄存器处读取的表征所述中断信号的所述数据,执行在 所述第一控制程序的控制下的并且对应于所述相关联虚拟处理设备所进行的中断处理的 中断处理。此技术为中断处理中涉及的常见操作提供以硬件为基础的(因而快速的)支持, 其不招致如上面讨论的以全硬件为基础的方式的高开销成本和限制。再者,其提供比以纯 软件为基础的方式更高的性能,在以纯软件为基础的方式中对中断控制器的每次存取被捕 捉。本技术提供一种硬件虚拟接口,其包含一个或多个列表寄存器,储存相关联虚拟 处理设备的未完成中断的列表;以及一个或多个接口寄存器,用于提供表征由此硬件所产 生的虚拟中断信号的数据。彷佛在与目前未完成中断列表相关联的虚拟处理设备上执行的 第一控制程序(诸如举例来说,客户操作系统)响应于该虚拟中断信号以从接口寄存器处 读取表征中断信号的数据并且接着实施对应于该相关联虚拟处理设备所进行的中断处理 的处理。这种配置提供比捕捉对中断控制器的每次存取更高的性能,因为一个或多个虚拟 接口以硬件提供,而且不会招致全硬件模型的高硬件成本和限制。虚拟接口的硬件可以在 相关联的虚拟处理设备之间被共享,使得当虚拟机被切换时,虚拟接口内的状态也被切换。 实际上,这并非严重的缺点,因为当虚拟机被切换时,需要交换更大量的寄存器而且此类虚 拟机切换操作已经耗费大量的时间。将表征该中断信号的数据写入虚拟接口可以使用由该设备执行的第二控制程序 (诸如举例来说,管理程序控制程序)来实施。第一控制程序可能通过在第一控制程序的控制下将数据写入一个或多个接口寄 存器,来写入指示对应于该相关联虚拟处理设备所进行的中断处理的处理的完成的数据。 这能够提供一种发信通知中断结束事件的机构。可以使用第二控制程序从一个或多个接口寄存器处读取指示中断处理的完成的 数据,以通知该相关联虚拟处理设备所进行的中断处理已完成。这可能用来发信通知系统 内其它层级(诸如产生原始中断且正在等待该中断的完成通知的物理设备)这种完成。如上面提及,多个虚拟处理设备可以共享以硬件提供的虚拟接口,且在本文中,第 二控制程序能够控制目前哪个虚拟处理设备正在使用该虚拟接口。如果第二控制程序为管 理程序,则其通常会已经管理哪个虚拟机是活动的且因此当虚拟机被切换时虚拟接口的使 用可能也被切换。用于处理数据的设备可能是多处理设备(也就是,包含多个处理器核心的设备), 且这些处理器中的每个可能具有以硬件提供的且依据该对应处理器正在支持哪个虚拟处 理设备而受控的虚拟接口。第二控制程序可能关于一个或多个虚拟处理设备中的每个维护表征未完成中断 的数据,包括管理列表寄存器的内容和来自那些列表寄存器的任何溢出。储存在列表寄存器内的未完成中断,可能代表已出现但尚未通知第一控制程序的 一个或多个待处理的中断以及已通知第一控制程序但仍须由第一控制程序进行中断处理 的一个或多个活动中断。该数据处理设备可能使用外部中断控制器,其以硬件提供且具有一个或多个外部接口寄存器以管理从该处理设备外面接收物理中断信号。
从外部接口寄存器处读取表征中断信号的数据,能够用来向外部系统确认收到该 中断信号。该外部中断控制器可能不会优先处理在多个中断信号输入处接收到的中断信 号;或者可以利用配置标记进行切换,以便依据该数据处理设备的基本状态(举例来说,虚 拟处理设备现在是否正在被模拟)优先处理。用于处理数据的设备所接收到的物理中断可能具有和它们相关联的中断数,而由 以硬件提供的虚拟接口所产生的虚拟中断信号可能具有和其相关联的虚拟中断数。第二控 制程序能够实施该物理中断数与该虚拟中断数之间的映射。第二控制程序能够在使用多处理器系统时选择多个虚拟处理设备中的哪个要用 来实施该中断处理。可能的是,多个虚拟处理设备能够处理特定中断而该第二控制程序能 够以试图改善总操作效率的方式指派中断给这些候选虚拟处理设备中的适当的设备。该第 二控制程序也可能响应于软件产生的中断信号,取代用于处理数据的设备所接收到的物理 中断信号。此类软件产生的中断信号可以由该第二控制程序本身产生。举例来说,这些软 件产生的中断信号也可能由虚拟处理设备中的一个产生。要明白的是,列表寄存器代表用于储存表征未完成中断的数据的有限资源。为解 决此问题,如果一个或多个列表寄存器溢出,则第二控制程序可能缓冲表征未完成中断的 数据。当该一个或多个列表寄存器内的闲置空间变得可用时,第二控制程序还能够用于以 被该第二控制程序缓冲的且表征未完成中断的数据来再填该一个或多个列表寄存器。可以通过由硬件提供与该第二控制程序的虚拟接口接着用被缓冲的未完成中断 来填充空白空间以产生再填中断,来触发列表寄存器的再填。该再填中断的产生可以由溢出标记来闸控,使得如果该第二控制程序未缓冲表征 未完成中断的任何数据,则列表寄存器内的空白空间当其因其它中断完成而变成可用时无 须立刻被再填。该虚拟接口可能包含优先级寄存器,储存指示与彷佛目前正在相关联虚拟数据 处理设备上所实施的任何中断处理相关联的优先级等级的数据。以此方式用优先级寄存器 来追踪(一个或多个)优先级等级,允许做出关于新出现的中断是否应该先占(pre-empt)既 有中断处理以及其它控制措施的适当的控制判断。虚拟中断信号的产生以及表征虚拟中断信号的数据的写入可以由该虚拟接口在 硬件控制下来实施。一个或多个列表寄存器能够储存各种不同格式的数据,例如表征以下特征的数 据物理中断数;虚拟中断数;多处理设备内关于软件中断的请求处理设备;优先级数值; 有效标记;以及区分用于处理数据的所述设备所接收到的中断信号类型的标记。列表寄存器能够储存指示相应未完成中断究竟是待处理中断还是正在动作中断 的数据,举例来说,待处理/活动标记。该一个或多个接口寄存器能够储存指示物理中断数和/或多处理设备内关于软 件中断的请求处理设备的数据。一个或多个控制寄存器可能与该虚拟接口相关联并且储存指示各种不同信息的 数据,所述信息包含与嵌套中断相关联的活动优先级列表;在没有在追踪所述中断处理 的数据中的相应更新的情况下完成的中断处理的实例计数;指示要被缓冲的未完成中断的标记;优先级屏蔽数值;以及优先级二元点数值,和使能该虚拟接口的标记。当产生虚拟中断信号时,其可能具有相关联的优先级数值,且产生虚拟中断信号 的步骤可能依据该相关联优先级数值和储存在优先级寄存器内的优先级数值的比较,使得 目前正被实施的中断处理不会因用于处理数据的设备接收到的较低优先级中断信号的原 因而被中断。此优先级控制可能依据以下中的一个或多个优先级屏蔽数值(指示与目前活动 中断处理相关联的优先级等级);以及优先级二元点数值(指示新中断应该超过正被处理 的目前活动中断的量以便先占该目前活动中断)。

当在第一控制程序控制下被处理的中断完成之后,可以实施从该虚拟中断数映射 回至该物理中断数,从而使用由此推知的物理中断数来触发向该中断信号的来源发信通知 该完成。从本发明的另一方面来看,提供为一个或多个虚拟处理设备的提供虚拟化支持的 用于处理数据的设备,所述设备包括
外部中断接口电路系统,响应于用于处理数据的所述设备所接收到的中断信号而将表 征所述中断信号的数据写入一个或多个外部接口寄存器以便和第二控制程序进行通信;以 及
虚拟中断接口电路系统,提供至各个虚拟处理设备的虚拟接口,所述虚拟接口包含用 于储存相关联虚拟处理设备的未完成中断的列表的一个或多个列表寄存器,所述一个或多 个列表寄存器至少可由所述第二控制程序写入;其中
响应于所述列表寄存器内的未完成中断的所述列表,所述虚拟中断接口电路系统用

产生虚拟中断信号以触发中断处理,所述中断处理对应于所述相关联虚拟处理设备所 进行的中断处理且在第一控制程序的控制下;以及
将表征所述虚拟中断信号的数据写入所述虚拟接口的所述虚拟中断接口电路系统内 包含的一个或多个虚拟接口寄存器。


现在将仅通过示例的方式参考附图来描述本发明的实施例,在所述附图中
图1示意性地示出与支持虚拟数据处理设备的系统内的中断处理相关联的硬件与软 件元件;
图2示意性地示出虚拟接口 ;
图3示意性地示出数据处理的设备,其包含外部中断接口与虚拟接口 ; 图4示出物理中断数与虚拟中断数之间的映射; 图5为示意性地示出管理程序软件对接收到中断信号的响应的流程图; 图6为示意性地示出虚拟接口硬件对程序化其中一个列表寄存器的响应的流程图; 图7为示意性地示出虚拟接口硬件对接收到中断确认信号的响应的流程图; 图8为示意性地示出客户操作系统对接收到虚拟中断信号的响应的流程图; 图9为示意性地示出虚拟接口硬件对接收到中断结束信号的响应的流程图; 图10为示意性地示出管理程序软件对再填中断的响应的流程图;图11为示意性地示出管理程序为检查列表寄存器内的已完成中断而执行的处理的流 程图;以及
图12为示意性地示出管理程序在背景切换(举例来说,虚拟机切换)时所执行的某些 操作的流程图。
具体实施例方式图1示出支持虚拟数据处理设备的系统内的中断处理所涉及的硬件与软件的各 部分。这些元件包含外部中断接口 2,其可能具有英国剑桥的ARM有限公司所提供的类型的 通用中断控制器(general interrupt controller, GIC)的形式。响应于该外部中断接口 2的是管理程序软件4(第二控制程序),其与该外部中断接口 2以及也以硬件提供的虚拟 接口 6交换信号。管理程序软件4负责指派物理中断给虚拟处理设备以及由一个或多个虚 拟装置8来产生软件中断。管理程序软件4控制哪一个或哪些虚拟处理设备目前活动以及 可能需要的此 类虚拟处理设备之间的任何背景切换。要明白的是,基础硬件可能是单处理器;或者,可能是多处理设备,例如在包含多 个处理器核心的多处理器中。在有一个以上候选者处理所关心的中断的情况下,多处理实 施例中的管理程序软件4负责指派特殊的中断给特殊的虚拟处理设备。在虚拟接口 6 (VGIC)以下的层级提供客户操作系统软件10 (第一控制程序),其从 该虚拟接口6读取表征中断的数据以及将数据写至该虚拟接口(例如中断结束信号)作为 管理/处置中断的一部分。客户操作系统10包含用于处理所接收到的中断信号的中断处 置软件12。应用程序14和中断处置软件12在客户操作系统10上执行,彷佛它们正在该相 关联的虚拟处理设备上执行。因此,针对一个特定处理器(或该处理器的实例/用途)被 写入的应用软件14和中断处置器12可以在图1的系统内被重新使用而不需要大幅修改, 因为虚拟接口6与管理程序4一起提供一种模拟它们连同周围中断机构一起被写入其中的 特定处理器的环境。在图1中所示的示例中使用单处理器核心并且客户操作系统10的两个实例被示 为在进行背景切换时被切换。当进行此类虚拟机切换时,控制此切换的管理程序4也切换 储存在该虚拟接口 4内表征中断的数据(其包含由该管理程序储存在软件内的任何已缓冲 数据),使得该虚拟接口内的数据目前可供正被支持的目前虚拟机使用。图2示意性地示出虚拟接口硬件16。虚拟接口硬件16包含用于储存目前使用中 的相关联虚拟机的未完成中断的列表的列表寄存器18。储存在每一个未完成中断的列表寄 存器内的数据包含物理中断数;虚拟中断数;多处理设备内关于软件中断的请求处理设 备;优先级数值;有效标记;区分不同类型中断(物理/软件)的标记;以及其它数据,例如 指示列表寄存器18内的特殊条目为空白的空白标记。虚拟接口硬件16内还提供接口寄存 器20,用以提供表征要被传送至基础虚拟机以供该基础虚拟机处理的中断的数据。此数据 可能包含寄存器,其被存取以确认中断、发信通知中断结束、发信通知优先级等级等。此虚 拟接口硬件16中提供的接口寄存器20的配置方式和外部接口硬件2的配置方式相同。执 行该客户操作系统的虚拟机能够和接口寄存器20互动,其方式如同那些接口寄存器为外 部接口硬件的一部分。列表寄存器18由管理程序4管理。接口寄存器20由客户操作系统管理。再者,被耦合至列表寄存器18与接口寄存器20两者的控制电路系统22用来控制这些硬件机构 的互动,如下面将作进一步说明。本技术领域的人员会明白,控制电路系统22可能具有各 种不同的物理形式,以便达到配合图6、7及9所示的操作。图3示出集成电路24,其包含以响应于多个物理中断信号的通用中断控制器形式的外部接口硬件26。虚拟接口硬件28被提供在集成电路2内以配合彷佛在集成电路4所 模拟的虚拟机上执行的客户操作系统使用。该集成电路内还包含一个或多个处理器核心30 及用于储存软件(例如管理程序软件、客户操作系统软件、中断处置码、应用码等等)的存 储器32。也可能存在物理装置(例如视频控制器34)以给集成电路24提供其它功能。如 所示,外部接口硬件26受控于管理程序软件,而虚拟接口硬件28受控于客户操作系统。管 理程序软件和客户操作系统两者皆在一个或多个处理器核心30上执行。如果提供多处理 器核心30,则这些中的每个皆可能配备自己的虚拟接口硬件28。虚拟接口硬件28的此类 多个实例可以由该管理程序软件共同管理,该管理程序软件在此实施例中还正在控制多处 理器核心的执行。图4示出给出外部接口硬件26所接收到的物理中断数、可以被选择来由该管理程 序软件操作的虚拟机实例以及可以由那些虚拟机使用的虚拟中断数之间的映射的表。如所 示,每个物理中断数均不同。给定虚拟机可能具有使用的多个虚拟中断数,举例来说,虚拟 机#1使用虚拟中断数#1、#2和#7。给定虚拟机可能重新使用也被不同虚拟机使用的虚拟 中断数,举例来说,虚拟机#2具有其自己的虚拟中断数#1与#2并且这些通常独立于虚拟 机#1类似编号的虚拟中断。图4中所示的映射数据由管理程序软件来管理与使用以用表 征外部接口硬件26收到的物理中断信号且需要由虚拟机中的一个来服务的数据填充列表 寄存器18。当中断通过虚拟机中的一个完成处理且其希望经由外部接口硬件26通知外部 硬件此类完成时,此数据也可以用来实施适当的反向映射。外部接口硬件26可以通过适当的标记被配置成不优先处理其物理地接收的中断 而将优先级留给基础管理程序软件。可选地,外部接口硬件26可以根据已知的中断控制器 技术提供某种优先级措施(如果这是期望的话)。在某些实施例中,当外部接口硬件26被管 理程序软件读取以确定已收到的物理中断的细节时,这被外部接口硬件26视为中断确认 信号。接着,一旦处置该中断的虚拟机已完成处理且经由虚拟接口硬件28将此发信通知至 外部接口硬件26,可以随后针对所关心的中断送出中断结束信号。因此,客户操作系统会在 虚拟接口 28上写至(接口寄存器20内的)EOI中断,虚拟接口 28会使用储存在列表寄存 器18中的物理中断数将EOI通知直接转发到外部接口硬件26(真实GIC)。图5为当从外部接口硬件26处接收物理中断信号或者接收由虚拟装置在该管理 程序软件内部产生或由在虚拟机中的一个上执行的软件且经由该管理程序软件产生的软 件中断信号时该管理程序软件的动作的流程图。在步骤36处,管理程序接收中断信号且被 向量引导(vector)至预设部分的码处以处理该中断信号。在步骤38处,管理程序读取外 部接口硬件26以确定已出现的物理中断的物理中断数。在步骤40处,管理程序软件在图 4的表数据内找出哪一个虚拟机要处置该物理中断信号以及什么是所关心的物理中断的虚 拟中断数。步骤40为利用管理程序软件开始处理软件中断的时点。要明白的是,在图4中 所示的每一个物理中断皆已事先分配要处置该物理中断的虚拟机。该管理程序软件还可以 动态指派应该使用哪一个虚拟机来处置特殊的物理中断,举例来说,依据不同虚拟机的负载/状态。 返回图5,步骤42判断要用来处置所接收到的中断的虚拟机是否为目前活动虚拟 机。如果并非如此,则该中断在步骤44处被加入目标虚拟机的待处理中断列表。目前非活 动虚拟机的待处理列表为由该管理程序软件管理且详述每一个非活动虚拟机的待处理中 断的可能多个此类列表中的一个。当调度虚拟机时,其中断待处理列表数据则作为背景切 换操作的一部分被写入列表寄存器18与接口寄存器20中。步骤46判断是否需要因新收 到中断信号而重新调度目前活动虚拟机(虚拟处理设备)。如果需要此类重新调度,则在步 骤48处利用背景切换来实施此,如将配合图12进行描述的。如果不需要重新调度,则处理 前进至步骤50,在该处返回到客户操作系统。在这种情况下,待处理中断已被管理程序记录 并且在相关联的虚拟机被该管理程序软件调度来执行时将由该虚拟机及时地处理。步骤52判断表征所接收到的中断的数据是否可以被写入列表寄存器18内,也就 是,列表寄存器18内是否有足够的空间。可以通过搜寻被标记为空白的条目来达到此目 的。可选地,该软件可以事先分开维护那些条目为空白的列表,以避免需要实施搜寻。如果 有足够空间,则步骤54如前面所述地利用表征所接收到的中断的数据来程序化列表寄存 器。在步骤54处将数据写到列表寄存器18用来触发更新与被储存在列表寄存器18内的 各种中断相关联的虚拟中断状态。此状态更新根据图6中所示的处理在控制电路系统22 的硬件控制下被实施。如果步骤52处的判断是列表寄存器18中没有空间供新收到的中断使用,则处理 前进至步骤56,在该处检查列表寄存器18以查看它们是否包含任何已完成中断。此已完成 中断检查可以根据下面配合图11所述的处理来实施。如果在列表寄存器18内找到已完成 中断,则其从列表寄存器处被清空。步骤48判断列表寄存器18内现在是否有空间供新收 到的中断使用。如果因在步骤56处移除已完成中断而有空间可用,则处理前进至步骤54。 如果列表寄存器18内仍然没有空间,则步骤60判断该新中断的优先级是否高于已经存在 于列表寄存器18内的任何中断。如果该新中断具有较高优先级,则其可以取代列表寄存器 18内的较低优先级中断(优选地是最低优先级中断),被移除的中断被置入管理程序软件 所保存的软件列表中。溢出位也被设定,以指示除了列表寄存器18中的中断以外还有待处 理中断。这些处理步骤被示于步骤62与64中。接着处理前进至步骤54。如果步骤60处的判断是该新中断的优先级没有高于填充列表寄存器18的既有中 断,则步骤66设定溢出状态位且新收到的中断被加入软件中的管理程序内所保存的待处 理中断列表。在步骤54与66之后,处理前进至步骤50,在该处返回到客户操作系统。图5中实施的处理在本示例实施例中受控于管理程序软件且由该管理程序软件 完成(action)。要明白的是,由此把图5中所示的部分功能移到硬件中的其它布置也将是 可能的。一般来说,硬件中实施的功能和软件中实施的功能之间的划分可以不同于本文所 述的示例实施例,不过依然采用本技术。图6为每当对列表寄存器18进行写入时对那些列表寄存器内所保存的虚拟中断 所实施的状态更新操作(举例来说,图5中的步骤54)的流程图。图6中所示的处理是在 硬件控制下实施,也就是,在图2中所示的控制电路系统22的控制下实施。在步骤68处,识别寄存器列表18内的最高优先级待处理中断和最高优先级活动 中断。步骤68处的判断识别是否没有待处理中断(如果列表寄存器18内的所有数据被写入从而清除该数据(也就是,所有条目皆被标示为空白)则可能出现此结果)。在这种 情况下,处理前进至步骤72,在该处使被供应至处理器核心30的虚拟中断信号VINT无效 (deassert)o嵌套中断可能正由目前的虚拟机来处置,使得至少一个中断被部分地处理(活 动)。如果步骤70处的判断为有某些待处理中断,则步骤74判断最高优先级待处理中断的 优先级是否大于最高优先级活动中断的优先级。如果并非如此,则不需要响应于写到列表 寄存器18来进行任何动作,因为目前活动中断仍然适用。因此,处理可能前进至步骤72。 步骤76判断最高优先级待处理中断的优先级是否超过构成部分列表寄存器18的 优先级屏蔽寄存器中所储存的优先级。如果最高优先级待处理中断确实超过优先级屏蔽寄 存器指示,则处理前进至步骤78,在该处使虚拟中断信号VINT有效(assert)以便触发相关 联处理器的客户操作系统以向量引导至其中断处置器12中的一个,以读取虚拟接口硬件 28并且开始处理新抵达的中断。优先级二元点数值也可能与列表寄存器18相关联(也就是,储存在图2中示出为 “状态(Status)”的控制寄存器内)。该二元点数值可以定义新收到中断的优先级必须超过 先前活动中断的优先级以便先占该先前活动中断的量。情况可能是,只要新收到中断的优 先级明显大于目前活动的中断,就将容许先占该目前活动中断而不必等待其完成。存在和 从一个中断至另一中断的切换相关联的开销,其可能无法由新收到中断的优先级超过目前 中断的优先级的程度来证实。图7示出当接口寄存器20内的中断确认寄存器被读取从而触发产生中断确认信 号时在控制电路系统22的控制下由虚拟接口硬件16所实施的处理。当收到此中断时,则步 骤80用来识别列表寄存器18内的最高优先级待处理中断和最高优先级活动中断。接着,步 骤82、84和86识别表征目前正被处理的中断的系统的中断确认与状态是否是自洽的。如 果步骤82、84和86中的任何测试失败,则处理前进至步骤88,在该处返回指示伪中断处理 的信号(此数值为从中断确认寄存器处读取的结果)。如果步骤82、84和86全部通过,则 步骤90用来将要被确认的列表寄存器18内所保存的中断的状态设为活动。步骤92设定 优先级位,对应于形成如图2中所示的优先级寄存器部分的优先级寄存器内现在活动中断 的优先级。步骤94根据图6来触发该状态的更新。作为读取该中断确认寄存器的结果,步 骤96返回该现在活动的中断的虚拟机中断数。图8示出客户操作系统软件对中断的处理。在步骤98处,该客户操作系统接收虚 拟中断信号(举例来说,参见图6的步骤78)。在步骤100处,客户操作系统从接口寄存器 20处读取虚拟机中断数。步骤102使用此虚拟机中断数来选择适当的处置软件12。接着, 步骤104执行此中断处置软件12。当该处置软件已完成执行时,其在步骤106处通过写入 接口寄存器20内的中断结束寄存器来发送中断结束信号给虚拟接口硬件16。步骤108代 表返回到其正常处理流程(例如执行图1中所示的应用程序14中的一个)的客户操作系 统。图9示出虚拟接口硬件16对根据图8的步骤106向接口寄存器20通知的中断结 束事件的响应。步骤110用来找出列表寄存器18内的最高优先级活动中断。如果如在步 骤112处判断的那样找到此中断,则步骤114将此中断标示为已完成。如果物理中断数针 对现在完成的中断被设定,则这在步骤116处被判断(经设定的物理中断区分该现在完成的中断和由软件产生的中断和/或识别该物理中断为需要中断结束确认的中断)。如果在 步骤116处识别物理中断数,则步骤118发送中断结束信号给外部中断接口 26。如果未设 定物理中断数,则步骤118被略过。步骤120在优先级寄存器内清除该 现在完成的中断的优先级位。步骤122判断列 表寄存器18内是否有任何待处理或活动中断。如果没有任何此类待处理或活动中断,则处 理前进至步骤124,在该处实施根据图6的状态更新操作。如果列表寄存器18内有待处理 或活动中断,则处理前进至步骤126,在该处判断溢出状态位是否被设定以指示该管理程序 软件具有和尚未被写入列表寄存器18中的其它待处理中断有关的细节。如果溢出位并未 被设定,则处理再次前进至步骤124。如果溢出状态位被设定,则处理前进至步骤128,在该 处在处理前进至步骤1 之前使再填中断有效。该管理程序软件如图10中的讨论那样来 响应于再填中断。如果步骤112处的判断是列表寄存器18内目前不存在任何活动中断,则步骤130 清除被设定在优先级寄存器内的最高优先级位。步骤132接着使该管理程序软件的再填中 断有效,而步骤134递增已被接收但尚未通过将对应中断标示为已完成而被处理的待处理 中断结束信号的已储存计数。图9中所示的处理是在控制电路系统22所控制的虚拟接口硬件16的硬件控制下 实施的。图10示出管理程序软件对再填中断的响应。步骤136处,该再填中断触发指向该 管理程序软件的预设部分的向量。步骤138接着实施对列表寄存器18内已完成的中断的 检查并且从该列表中移除任何已完成的中断,如将配合图11进行描述的。步骤140判断待处理中断结束计数(参见图9的步骤134)是否超过零。如果待 处理中断结束计数没有超过零,则处理前进至步骤142,在该处判断列表寄存器18内是否 有任何空白槽(slot)。如果有此类空白槽,则步骤144在该管理程序以软件维护的列表中 找出最高优先级的待处理或活动中断,其中该最高优先级的待处理或活动中断先前不存在 于列表寄存器18内。在某些实施例中,中断可能在该管理程序的软件列表内被指出并且同 时在列表寄存器18内被指出。在本示例实施例中,中断被列在该管理程序或列表寄存器18 所维护的其中一个软件体列表内。如果步骤146指示已在步骤144处识别了此类最高优先级中断,则步骤148用来 将此条目拷贝至列表寄存器18中。对列表寄存器18进行此写入会触发根据图6的状态更 新。此时处理返回到步骤142以判断硬件列表内是否有任何进一步的空白槽。如果步骤146指示管理程序维护的软件列表内没有保存任何待处理或活动中断, 则处理前进至步骤150,在该处在从该再填中断返回之前清除溢出状态位。如果步骤142处的判断是列表寄存器18内没有任何空白槽,则步骤152判断管理 程序所维护的软件列表是否为空白。如果此列表为空白,则步骤150清除溢出状态位。如 果该软件维护的列表非空白,则步骤巧4设定该溢出状态位(其可能已经被设定)。如果步骤140处的判断是待处理中断结束计数大于零,则处理前进至步骤156,在 该处识别该软件维护的列表上的最高优先级的活动中断。接着步骤158判断是否针对该软 件列表上的该最高优先级的活动中断来设定物理中断数。如果此物理中断数被设定,则这 指示应该在步骤160处经由外部中断接口沈发送中断结束信号。如果未设定任何物理中断数,则步骤160可以被略过。步骤162删除从该软件维护的列表中识别的中断,而步骤164 在让处理返回到步骤140之前递减中断结束计数。图11示出管理程序软件为实施前面讨论的完成中断操作的检查而实施的处理。 步骤166找出硬件列表18内被标示为完成的任何条目。如果步骤168判断没有找到任何 此类条目,则处理前进至步骤170,在该处终止此检查。如果找到此类完成条目,则步骤170 在该软件维护的列表内找出任何对应的条目。步骤172与174接着在必要时从该软件列表 及从相关的列表寄存器18处删除已完成的条目。要明白的是,在此图11示例中,中断被维 护在软件列表与列表寄存器18两者中。如果中断仅被维护在这些地方之一中,则可以从该 硬件列表处删除该硬件列表中已完成的条目(举例来说,该条目被标示为空白)而不需要 将其从软件列表处删除,因为软件列表中不会存在任何拷贝。这些维护操作的性能给管理 程序呈现这样的机会视该中断完成的情况来实施任何工作(对软件产生的中断来说,这 可能涉及回呼(callback)以指示处理完成)。这也呈现这样的机会在上面配合图5讨论 的空白槽列表中加入现在空闲的槽。图12示出管理程序在背景切换时(也就是,在虚拟机改变时)所实施的处理。步 骤176检查已完成的中断。已完成中断的该检查可以是根据图11的示例。步骤178接着 利用来自硬件列表(列表寄存器18)的数据更新由管理程序管理的软件维护的待处理中断 列表。此软件列表是针对进行切换的虚拟机之外的虚拟机并且可在切换回到该虚拟机时回 复(reinstated)。步骤180将所有列表寄存器18标示为空白。步骤182在要被切换至的 新虚拟机的软件列表中找出最高优先级中断,而步骤184将这些识别的最高优先级中断写 入列表寄存器18中。要明白的是,在切换虚拟机切换时会实施大量的进一步额外处理且图 12中所示的步骤对应于切换虚拟中断硬件的背景和相关联软件列表所需要的动作。
权利要求
1.一种使用为一个或多个虚拟处理设备提供虚拟化支持的用于处理数据的设备来处 理中断信号的方法,所述方法包括以下步骤响应于用于处理数据的所述设备所接收到的中断信号,将表征所述中断信号的数据 写入各个虚拟处理设备的一个或多个虚拟接口中的至少一个,所述一个或多个虚拟接口以 硬件提供且分别包含储存相关联虚拟处理设备的未完成中断列表的一个或多个列表寄存 器;响应于所述至少一个虚拟接口的所述列表寄存器内的所述未完成中断列表,产生虚拟 中断信号以触发与所述相关联虚拟处理设备所进行的中断处理相应的中断处理并且提供 表征所述虚拟中断信号的数据以从所述至少一个虚拟接口内所包含的一个或多个接口寄 存器处进行读取;响应于所述虚拟中断信号,使用彷佛在所述相关联虚拟处理设备上执行的第一控制程 序以从所述一个或多个接口寄存器处读取表征所述中断信号的所述数据;以及响应于从所述一个或多个接口寄存器处读取的表征所述中断信号的所述数据,实施在 所述第一控制程序的控制下的且对应于所述相关联虚拟处理设备所进行的中断处理的中 断处理。
2.如权利要求1所述的方法,其中所述将表征所述中断信号的数据写入一个或多个 虚拟接口中的所述至少一个是使用由用于处理数据的所述设备所执行的第二控制程序来 实施的。
3.如权利要求1所述的方法,进一步包括以下步骤在所述第一控制程序的控制下,将指示所述中断处理的完成的数据写入所述一个或多 个接口寄存器。
4.如权利要求3所述的方法,进一步包括以下步骤使用所述第二控制程序从所述一个或多个接口寄存器处读取指示所述中断处理的完 成的数据,以将所述相关联虚拟处理设备所进行的所述中断处理记为已完成。
5.如前面权利要求中任一项所述的方法,其中多个虚拟处理设备共享以硬件提供的 虚拟接口,且所述第二控制程序控制目前哪个虚拟处理设备正在使用所述虚拟接口。
6.如权利要求1到4中任一项所述的方法,其中用于处理数据的所述设备是包括多个 处理器的多处理设备,每一个处理器皆具有以硬件提供的虚拟接口,所述虚拟接口依据所 述处理器正在支持哪一个虚拟处理设备而受控。
7.如前面权利要求中任一项所述的方法,其中所述第二控制程序关于所述一个或多 个虚拟处理设备中的每一个维护表征未完成中断的数据。
8.如权利要求5及6和权利要求7中任一项所述的方法,其中所述第二控制程序管理 所述一个或多个列表寄存器中表征未完成中断的数据的换入与换出,以便对应于目前活动 的虚拟处理设备。
9.如前面权利要求中任一项所述的方法,其中所述未完成中断包括以下中的一个或 多个待处理中断,因用于处理数据的所述设备接收到的所述中断信号而引起的且尚未通知 所述第一控制程序;以及活动中断,已经通知所述第一控制程序且仍在所述第一控制程序的控制下经受所述中断处理。
10.如前面权利要求中任一项所述的方法,包括在外部中断控制器的多个中断信号输入中的一个处接收所述中断信号;响应于所述中断信号,提供表征要从所述硬件中断控制器的一个或多个外部接口寄存 器中的一个处被读取的所述中断信号的原始数据给所述外部中断控制器;以及作为所述处理的一部分利用所述第二控制程序来从外部接口寄存器处读取表征所述 中断信号的所述原始数据以响应于所述中断信号。
11.如权利要求10所述的方法,其中所述利用所述第二控制程序来从所述外部接口 寄存器处读取表征所述中断信号的所述原始数据用来确认所述中断信号的接收。
12.如权利要求10和11中任一项所述的方法,其中所述外部中断控制器不会优先处 理在多个中断信号输入处接收到的中断信号。
13.如权利要求12所述的方法,其中所述外部中断控制器响应于配置标记的设定而 切换成优先处理在多个中断信号输入处接收到的中断信号。
14.如权利要求2所述的方法,其中用于处理数据的所述设备所接收到的所述中断信 号具有中断数,所述虚拟中断信号具有虚拟中断数,且所述第二控制程序用来在所述中断 数和所述虚拟中断数之间进行映射。
15.如权利要求2所述的方法,其中所述第二控制程序选择所述多个虚拟处理设备中 的哪一个要用来实施所述中断处理。
16.如权利要求2所述的方法,其中所述第二控制程序还响应于软件产生的中断信号 来取代用于处理数据的所述设备所接收到的所述中断信号。
17.如权利要求16所述的方法,其中所述软件产生的中断信号被产生在所述第二控 制程序内。
18.如权利要求16和17中任一项所述的方法,其中所述软件产生的中断信号由虚拟 处理设备中的一个所产生。
19.如权利要求2所述的方法,其中如果所述一个或多个列表寄存器溢出,则所述第 二控制程序缓冲表征未完成中断的数据。
20.如权利要求19所述的方法,其中当所述一个或多个列表寄存器内的闲置空间变 得可用时,所述第二控制程序用被所述第二程序缓冲的且表征未完成中断的所述数据来再 填所述一个或多个列表寄存器。
21.如权利要求20所述的方法,其中当所述中断处理在所述第一控制程序的控制下 已完成且所述第二控制程序正在缓冲表征未完成中断的数据时,以硬件提供的所述一个或 多个虚拟接口产生再填中断以触发由所述第二控制程序进行的所述再填。
22.如权利要求21所述的方法,其中所述再填中断的产生受控于溢出标记,所述溢出 标记是在所述第二控制程序正在缓冲表征未完成中断的数据时由所述第二控制程序设定 的。
23.如权利要求21和22中任一项所述的方法,其中以硬件提供的所述一个或多个虚 拟接口包含计数器寄存器,其被配置成维护在所述第二控制程序能够响应于所述再填中断 之前已完成的中断处理实例的计数。
24.如前面权利要求中任一项所述的方法,其中所述至少一个虚拟接口包含储存优先级数据的优先级寄存器,所述优先级数据指示与彷佛目前正在所述相关联虚拟数据处理设 备上所实施的任何中断处理相关联的优先级等级。
25.如前面权利要求中任一项所述的方法,其中所述虚拟中断信号的所述产生和表征 所述虚拟中断信号的所述数据的所述写入的所述写入是在所述虚拟接口的硬件控制下实 施的。
26.如前面权利要求中任一项所述的方法,其中一个或多个列表寄存器储存指示以下 中的一个或多个的数据物理中断数; 虚拟中断数;多处理设备内关于软件中断的请求处理设备; 优先级数值; 有效标记;以及区分用于处理数据的所述设备所接收到的中断信号的类型的标记。
27.如权利要求9所述的方法,其中一个或多个列表寄存器储存指示对应未完成中断 是待处理中断还是活动中断的数据。
28.如前面权利要求中任一项所述的方法,其中一个或多个接口寄存器储存指示以下 中的一个或多个的数据物理中断数;以及多处理设备内关于软件中断的请求处理设备。
29.如前面权利要求中任一项所述的方法,其中与所述虚拟接口相关联的一个或多个 控制寄存器储存指示以下中的一个或多个的数据与嵌套中断相关联的活动优先级列表;在没有在追踪所述中断处理的数据中的相应更新的情况下完成的中断处理的实例的 计数;指示被缓冲的未完成中断的标记; 优先级屏蔽数值; 优先级二元点数值;以及 使能所述虚拟接口的标记。
30.如前面权利要求中任一项所述的方法,其中所述第二控制程序是管理程序控制程序。
31.如前面权利要求中任一项所述的方法,其中所述第一控制程序是客户操作系统程序。
32.如权利要求24所述的方法,其中用于处理数据的所述设备所接收到的所述中断 信号具有相关联的优先级数值,且所述响应于所述中断信号的接收而产生虚拟中断信号的 所述步骤是依据所述相关联优先级数值和被储存在所述优先级寄存器中的所述优先级数 据的比较,使得目前正被实施的中断处理不会因用于处理数据的所述设备接收到的较低优 先级中断信号而被中断。
33.如权利要求32所述的方法,其中所述比较还依据所述优先级屏蔽数值和所述优 先级二元点数值中的一个或多个。
34.如权利要求26所述的方法,其中响应于在所述第一控制程序的控制下完成所述 中断处理,将所述虚拟数据处理设备使用的虚拟中断数映射至与用于处理数据的所述设备 接收到的所述中断信号相关联的物理中断数并且利用所述物理中断数来触发向所述中断 信号的来源发信通知所述完成。
35.为一个或多个虚拟处理设备提供虚拟化支持的用于处理数据的设备,所述设备包括外部中断接口电路系统,响应于用于处理数据的所述设备所接收到的中断信号而将表 征所述中断信号的数据写入一个或多个外部接口寄存器以便和第二控制程序进行通信;以 及虚拟中断接口电路系统,提供至各个虚拟处理设备的虚拟接口,所述虚拟接口包含储 存相关联虚拟处理设备的未完成中断列表的一个或多个列表寄存器,所述一个或多个列表 寄存器至少能由所述第二控制程序写入;其中响应于所述列表寄存器内的所述未完成中断列表,所述虚拟中断接口电路系统用来产生虚拟中断信号以触发中断处理,其对应于所述相关联虚拟处理设备所进行的中断 处理且在第一控制程序的控制下;以及将表征所述虚拟中断信号的数据写入所述虚拟接口的所述虚拟中断接口电路系统内 包含的一个或多个虚拟接口寄存器。
36.如权利要求35所述的设备,其中所述一个或多个虚拟接口寄存器包含字段,该字 段被指派给在所述第一控制程序的控制下的对指示所述中断处理的完成的数据的写入。
37.如权利要求35和36中任一项所述的设备,其中所述一个或多个虚拟接口寄存器 包含字段,该字段被指派给由所述第二控制程序进行的对指示所述中断处理的完成的数据 的读取,从而将所述相关联虚拟处理设备所进行的所述中断处理记为已完成。
38.如权利要求35、36和37中任一项所述的设备,其中多个虚拟处理设备共享所述虚 拟中断接口电路系统,且所述第二控制程序控制目前哪个虚拟处理设备正在使用所述虚拟 中断接口电路系统。
39.如权利要求35、36和37中任一项所述的设备,其中用于处理数据的所述设备是包 括多个处理器的多处理设备,每一个处理器皆具有以硬件提供的虚拟接口,所述接口依据 所述处理器正在支持哪一个虚拟处理设备而受控。
40.如权利要求35到39中任一项所述的设备,其中所述利用所述第二控制程序来从 外部接口寄存器处对表征所述中断信号的所述数据的读取用来触发所述外部中断接口电 路系统以确认所述中断信号的接收。
41.如权利要求35到39中任一项所述的设备,其中所述外部中断接口电路系统不会 优先处理在多个中断信号输入处接收到的中断信号。
42.如权利要求41所述的设备,其中所述外部中断接口电路系统响应于配置标记的 设定而切换成优先处理在多个中断信号输入处接收到的中断信号。
43.如权利要求35到42中任一项所述的设备,其中如果所述一个或多个列表寄存器 溢出,则所述第二控制程序缓冲表征未完成中断的数据。
44.如权利要求43所述的设备,其中当所述一个或多个列表寄存器内的闲置空间变 得可用时,所述第二控制程序用被所述第二程序缓冲的且表征未完成中断的所述数据来再填所述一个或多个列表寄存器。
45.如权利要求44所述的设备,其中当所述中断处理在所述第一控制程序的控制下 已完成且所述第二控制程序正在缓冲表征未完成中断的数据时,所述虚拟中断接口电路系 统产生再填中断以触发由所述第二控制程序进行的所述再填。
46.如权利要求45所述的设备,其中所述再填中断的产生受控于溢出标记,所述溢出 标记在所述第二控制程序正在缓冲表征未完成中断的数据时由所述第二控制程序来设定。
47.如权利要求45所述的设备,其中所述虚拟中断接口电路系统包含计数器寄存器, 其被配置成维护在所述第二控制程序能够响应于所述再填中断之前已完成的中断处理的 实例的计数。
48.如权利要求35到47中任一项所述的设备,其中所述虚拟中断接口电路系统包含 储存优先级数据的优先级寄存器,所述优先级数据指示与彷佛目前正在相关联虚拟数据处 理设备上所实施的任何中断处理相关联的优先级等级。
49.如权利要求35到48中任一项所述的设备,其中一个或多个列表寄存器储存指示 以下中的一个或多个的数据物理中断数; 虚拟中断数;多处理设备内关于软件中断的请求处理设备; 优先级数值; 有效标记;以及区分用于处理数据的所述设备所接收到的中断信号的类型的标记。
50.如权利要求35到49中任一项所述的设备,其中一个或多个列表寄存器储存指示 相应未完成中断是否是以下一个的数据待处理中断,其因用于处理数据的所述设备接收到所述中断信号而引起但尚未通知所 述第一控制程序;以及活动中断,其已通知所述第一控制程序且仍在所述第一控制程序的控制下经受所述中 断处理。
51.如权利要求35到50中任一项所述的设备,其中一个或多个虚拟接口寄存器储存 指示以下中的一个或多个的数据物理中断数;以及多处理设备内关于软件中断的请求处理设备。
52.如权利要求35到51中任一项所述的设备,其中与所述虚拟中断接口电路系统相 关联的一个或多个控制寄存器储存指示以下中的一个或多个的数据与嵌套中断相关联的活动优先级列表;在没有在追踪所述中断处理的数据中的相应更新的情况下完成的且能让被实施的第 二控制程序存取的中断处理的实例的计数;指示要被所述第二控制程序缓冲的未完成中断的标记; 优先级屏蔽数值; 优先级二元点数值;以及 使能所述虚拟接口的标记。
53.如权利要求35到52中任一项所述的设备,其中所述第二控制程序是管理程序控 制程序。
54.如权利要求35到53中任一项所述的设备,其中所述第一控制程序是客户操作系 统程序。
55.如权利要求48所述的设备,其中用于处理数据的所述设备所接收到的所述中断 信号具有相关联优先级数值,且所述虚拟中断接口电路系统依据所述相关联优先级数值和 被储存在所述优先级寄存器中的所述优先级数据的比较来响应于所述中断信号的接收而 产生虚拟中断信号,使得目前正被实施的中断处理不会因用于处理数据的所述设备接收到 的较低优先级中断信号而被中断。
56.如权利要求55所述的设备,其中所述比较还依据所述优先级屏蔽数值和所述优 先级二元点数值中的一个或多个。
57.如权利要求49所述的设备,其中响应于在所述第一控制程序的控制下完成所述 中断处理,将所述虚拟数据处理设备使用的虚拟中断数映射至与用于处理数据的所述设备 收到的所述中断信号相关联的物理中断数,并且利用所述物理中断数来触发向所述中断信 号的来源发信通知所述完成。
58.为一个或多个虚拟处理设备提供虚拟化支持的用于处理数据的设备,所述设备包括外部中断接口构件,响应于用于处理数据的所述设备所接收到的中断信号,将表征所 述中断信号的数据写入一个或多个外部接口寄存器构件以便和第二控制程序进行通信;以 及虚拟中断接口构件,用于提供至各个虚拟处理设备的虚拟接口,所述虚拟接口包含储 存相关联虚拟处理设备的未完成中断列表的一个或多个列表寄存器构件,所述一个或多个 列表寄存器构件至少能由所述第二控制程序写入;其中响应于储存在所述列表寄存器构件内的所述未完成中断列表,所述虚拟中断接口构件 用来产生虚拟中断信号以触发中断处理,其对应于所述相关联虚拟处理设备所进行的中断 处理且在所述第一控制程序的控制下;以及将表征所述虚拟中断信号的数据写入所述虚拟接口的所述虚拟中断接口构件内包含 的一个或多个虚拟接口寄存器构件。
全文摘要
一种支持一个或多个虚拟处理设备的数据处理系统配备外部中断接口硬件(26)和虚拟接口硬件(28)。管理程序软件响应于该外部中断接口硬件(26)所接收到的中断,而将表征该中断的数据写入该虚拟接口硬件(28)的列表寄存器(18)。接着,被仿真的虚拟数据处理设备的虚拟机的客户操作系统可以从该虚拟接口硬件(28)处读取表征要由该虚拟机处理的中断的数据。该虚拟机与该客户操作系统与该虚拟接口硬件(28)互动,如同其是外部接口硬件。该管理程序软件负责维护该虚拟接口硬件(28)内的数据以便正确反映该外部接口(26)所接收到的排队中断。
文档编号G06F9/44GK102105871SQ200980129320
公开日2011年6月22日 申请日期2009年6月3日 优先权日2008年7月28日
发明者D.H.曼塞尔, R.R.格里森思怀特 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1