CN113454589A - 用于多级虚拟化的定向中断 - Google Patents
用于多级虚拟化的定向中断 Download PDFInfo
- Publication number
- CN113454589A CN113454589A CN202080013920.0A CN202080013920A CN113454589A CN 113454589 A CN113454589 A CN 113454589A CN 202080013920 A CN202080013920 A CN 202080013920A CN 113454589 A CN113454589 A CN 113454589A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- operating system
- target
- guest operating
- 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
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Bus Control (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
Abstract
本发明涉及一种用于向第一客户机操作系统提供中断信号的方法。由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器。由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用。如果目标处理器未被调度供使用,则总线附接设备使用广播转发中断信号并更新存储在分配给托管第一客户机操作系统的第二客户机操作系统的存储器区段中的转发向量条目。该更新用于向第一操作系统指示存在寻址到中断目标ID的第一中断信号待处理。
Description
背景技术
本发明总体涉及计算机系统内的中断处理,尤其涉及处置由多处理器计算机系统中的总线连接模块产生的中断。
中断被用来用信号通知处理器需要处理器注意的事件。例如,硬件设备(例如,经由总线与处理器连接的硬件设备)使用中断来传达它们需要来自操作系统的注意。在接收处理器当前正在执行一些活动的情况下,接收处理器可以响应于接收到中断信号而挂起其当前活动、保存其状态并例如通过执行中断处理程序来处理中断。由接收到中断信号引起的处理器的当前活动的中断只是暂时性的。在处理了中断之后,处理器可恢复其挂起的活动。因此,中断可以通过消除处理器在轮询循环中等待外部事件的的非生产等待时间来使得性能得到提高。
在多处理器计算机系统中,可能会出现中断路由效率问题。挑战在于将由诸如总线连接模块之类的硬件设备发送的中断信号高效地转发到被分配用于操作系统的多个处理器中的处理器。在将中断用于与虚拟机上的客户机操作系统通信的情况下,这可能会特别具有挑战性。管理程序(hypervisor)或虚拟机监视器(VMM)创建并运行一个或多个虚拟机,即客户机(guest machines)。虚拟机提供在与虚拟操作平台相同的平台上运行的客户机操作系统,同时隐藏底层平台的物理特性。使用多个虚拟机允许并行运行多个操作系统。由于是在虚拟操作平台上执行的,所以客户机操作系统对处理器的视图一般可能不同于底层(例如,处理器的物理视图)。客户机操作系统使用虚拟处理器ID(标识符)来标识处理器,通常与底层逻辑处理器ID不一致。管理客户机操作系统的执行的管理程序定义底层逻辑处理器ID与客户机操作系统使用的虚拟处理器ID之间的映射。然而,这种映射和被调度用于由客户机操作系统使用的处理器的选择,并不是静态的,而是可以在客户机操作系统运行时被管理程序改变,而无需客户机操作系统的知识。
在非本地(即,托管的管理程序)的情况下,这种挑战可能会进一步增加。在这种情况下,托管的管理程序本身可能会在底层本地管理程序上或另一托管的管理程序上执行的底层客户机操作系统上运行。底层管理程序可以提供底层逻辑处理器ID到由底层客户机操作系统使用的第一虚拟处理器ID的第一映射,而托管管理程序可以提供第一虚拟处理器ID到第二虚拟处理器ID的第二映射。再次,第一和第二映射通常可以不是静态的,而是在不知道分别使用第一和第二虚拟处理器ID的第一和/或第二客户机操作系统的情况下动态地改变。
通常通过使用广播转发中断信号来解决此挑战。当使用广播时,在多个处理器之间连续地转发中断信号,直到遇到适于处理中断信号的处理器。然而,在多个处理器的情况下,率先接收到广播的中断信号的处理器确实适合于处理该中断信号的概率可能相当低。此外,适合于处理该中断信号并不一定意味着相应处理器是处理该中断的最佳选择。
发明内容
各个实施例提供了如由独立权利要求的主题所描述的用于向使用被分配用于由客户机操作系统使用的计算机系统的多个处理器中的一个或多个处理器执行的客户机操作系统提供中断信号的方法、计算机系统和计算机程序产品。在从属权利要求中描述了有利的实施例。本发明的实施例在不相互排斥的情况下可以自由地彼此组合。
一方面,本发明涉及一种用于向第一客户机操作系统提供中断信号的方法,第一客户机操作系统是用计算机系统的被分配由第一客户机操作系统使用的多个处理器中的一个或多个处理器来执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括与总线附接设备可操作地连接的存储器,所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,使用第二客户机操作系统作为托管第一客户机操作系统的主机来实现第一客户机操作系统,存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,该方法包括:由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的第一中断信号待处理。
另一方面,本发明涉及一种用于向第一客户机操作系统提供中断信号的计算机系统,第一客户机操作系统是用计算机系统的被分配由第一客户机操作系统使用的多个处理器中的一个或多个处理器来执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括与总线附接设备可操作地连接的存储器,所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器被进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,使用第二客户机操作系统作为托管第一客户机操作系统的主机来实现第一客户机操作系统,存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,该计算机系统被配置以用于执行一种方法,该方法包括:由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的第一中断信号待处理。
另一方面,本发明涉及一种用于向第一客户机操作系统提供中断信号的计算机程序产品,第一客户机操作系统使用被分配用于由第一客户机操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,该计算机系统进一步包括一个或多个总线连接模块,该一个或多个总线连接模块经由总线和总线附接设备与该多个处理器可操作地连接,该计算机系统进一步包括与总线附接设备可操作地连接的存储器,所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,使用第二客户机操作系统作为托管第一客户机操作系统的主机来实施第一客户机操作系统,存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,计算机程序产品包括计算机可读非暂时性介质,计算机可读非暂时性介质可由处理电路读取且存储用于由处理电路执行以执行一种方法的指令,该方法包括:由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的第一中断信号待处理。
附图说明
在下文中,参考附图仅通过举例更详细地解释本发明的实施例,附图中:
图1描绘了示例性计算机系统的示意图,
图2描绘了示例性虚拟化方案的示意图,
图3描绘了示例性虚拟化方案的示意图,
图4描绘了示例性计算机系统的示意图,
图5描绘了示例性计算机系统的示意图,
图6描绘了示例性方法的示意流程图,
图7描绘了示例性方法的示意性流程图,
图8描绘了示例性计算机系统的示意图,
图9描绘了示例性方法的示意性流程图,
图10描绘了示例性向量结构的示意图,
图11描绘了示例性向量结构的示意图,
图12描绘了示例性向量结构的示意图,
图13描绘了示例性向量结构的示意图,
图14是示例性数据结构的示意图,
图15是示例性向量结构的示意图,
图16描绘了示例性计算机系统的示意图,
图17描绘了示例性计算机系统的示意图,
图18描绘了示例性计算机系统的示意图,
图19描绘了示例性计算机系统的示意图,
图20描绘了示例性单元的示意图,和
图21描绘了示例性计算机系统的示意图。
具体实施方式
本发明的不同实施例的描述将出于说明的目的而给出,但不旨在是穷尽的或限于所披露的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择在此使用的术语以最佳地解释实施例的原理、实际应用或在市场上出现的技术上的技术改进,或使得本领域普通技术人员能够理解在此披露的实施例。
第一级管理程序定义逻辑处理器ID到第一虚拟处理器ID的第一映射,第一虚拟处理器ID由在管理程序提供的虚拟机上运行的客户机操作系统使用。发送针对第一级客户机操作系统的请求(例如,包括中断信号)的总线连接模块,可以将第一虚拟处理器ID的其中之一用作标识该请求的目标处理器的目标ID。根据实施例,代替第一虚拟处理器ID,还可以使用用第一虚拟处理器ID导出的和/或明确地分配给相应第一虚拟处理器ID的某种其他唯一ID。
在第二级管理程序在第一级客户机操作系统上运行的情况下,第二级管理程序可以提供第二级客户机操作系统在其上运行的虚拟机。第二级管理程序可以进一步定义由托管具有第二级客户机操作系统的第二级客户机操作系统的第一级客户机操作系统使用的第一虚拟处理器ID到由第二级客户机操作系统使用的第二虚拟处理器ID的第二映射。发送针对第二级客户机操作系统的请求(例如,包括中断信号)的总线连接模块,可以将第二虚拟处理器ID的其中之一用作标识该请求的目标处理器的目标ID。根据实施例,代替第二虚拟处理器ID本身,还可以使用用第二虚拟处理器ID导出的和/或明确地分配给相应第二虚拟处理器ID的某种其他唯一ID。
根据各实施例,可以把总线连接模块(例如,PCIe功能)分配给恰好一个第二级客户机(如果未被分配给第一级客户机)。
实施例可以具有最小化对现有多级管理程序实现方式的影响的有益效果。
根据实施例,一个或多个转发向量由第一级操作系统提供。转发向量被存储在为供第一级操作系统使用而保留的存储器区段中。转发向量的数量可取决于在第二级管理程序上运行的第二级操作系统的数量。可以提供每个第二级客户机操作系统的转发向量,其中每个转发向量被分配给第二客户机操作系统之一。转发向量的条目可用于指示存在要由相应转发向量被分配给的第二级客户机操作系统处理的中断信号。
转发向量的条目可各自引用分配给第二级客户机操作系统的一个或多个中断摘要向量的条目。每个中断摘要向量被存储在为供相应中断摘要向量被分配给的第二级操作系统使用而保留的存储器区段中。
转发向量包括分配给中断目标ID的条目,中断目标ID由所述一个或多个总线连接模块用于将为由相应转发向量所分配给的第二级客户机操作系统使用而分配的目标处理器标识为中断信号的目标。相应转发向量的这些条目另外各自引用分配给同一目标处理器的第二级客户机操作系统的中断摘要向量的条目。具有分配给个别(individual)目标处理器的条目的中断摘要向量可用作直接中断摘要向量,因为它们的条目提供对个别目标处理器的直接引用。
分配给由目标ID标识的目标处理器的转发向量的条目可以由总线附接设备更新,以指示存在要由第二级客户机操作系统使用相应目标处理器处理的中断信号。基于对第二级客户机操作系统的存储器区段中的直接中断摘要向量的条目的引用,可以确定是否存在要由被分配以供第二级客户机操作系统使用的目标处理器处理的中断信号。例如,从所引用的条目在直接中断摘要向量中的位置,目标处理器的中断目标ID可以是可确定的。
实施例可以具有以下有益效果:提供了两个至少部分相似的向量结构,一个用于第一级客户机操作系统,即转发向量,另一个用于第二级客户机操作系统,即直接中断摘要向量)。两个向量结构均包括分配给彼此以及分配给目标处理器的条目。因此,通过这两个向量结构的条目,为客户机操作系统中的每一个提供关于存在要处理的中断信号的处理器的信息。在没有被分配以供第二级操作系统使用的处理器可用的情况下,第一级操作系统可以接管并基于被分配以供第二级操作系统使用的目标处理器所针对的转发向量来确定待处理的中断信号的目标。在目标处理器被停用(deactivated)的情况下,第一级操作系统可触发目标处理器的调度,使得其可处理相应中断信号。
实施例可以具有使总线附接设备能够直接寻址目标处理器的有益效果。因此,中断信号可以由选择目标处理器ID的发布总线连接模块定向到特定处理器,即多处理器计算机系统的目标处理器。例如,可以选择之前已经进行过与中断相关的活动的处理器,作为中断信号的目标处理器。由与相应活动相同的处理器处理中断信号可能会导致性能优势,因为在相同的处理器也处理中断信号的情况下,具有该中断的上下文中的所有数据可能已经可用于该处理器和/或存储在本地高速缓存中,使得相应处理器能够在不需要大量高速缓存通信量(traffic)的情况下进行快速访问。
因此,可以避免不能保证最终处理中断的处理器从性能的角度来看(如缓存通信量最小化)最适合此任务的中断信号的广播。可以直接将中断信号提供给目标处理器以提高中断信号处理的效率,而不是将中断信号提交给所有处理器、每个处理器都试图处理中断信号并且一个处理器胜出。
中断机制可以用定向中断(directed interrupt)来实现。可以使总线附接设备能够在向由发布总线连接模块定义的中断信号的目标处理器转发要处理的中断信号时,用目标处理器的逻辑处理器ID来直接寻址目标处理器。由总线附接设备将中断目标ID转换为逻辑处理器ID可以进一步确保从客户机操作系统的角度看来是始终寻址相同的处理器,即使中断目标ID与逻辑处理器ID之间的映射或被调度用于由客户机操作系统使用的处理器的选择可能会被管理程序。
当例如由于管理程序尚未调度目标处理器而不能直接传递中断时,客户机操作系统可以用广播来传递具有原始预期关联性—即中断预期针对哪个处理器的信息—的中断,从而受益。在这种情况下,总线附接设备可以在设置DIBV之后并且在向客户机操作系统传递广播中断请求之前在DISB中设置指定目标处理器的位。如果客户机操作系统接收到广播中断请求,则其可以因此通过扫描和禁用DISB中的直接中断摘要指示符(例如,扫描和重置直接中断摘要位)来识别哪些目标处理器具有在DIBV中用信号通知的待决中断信号。因此可以使客户机操作系统能够决定中断信号被接收广播的当前处理器处理还是进一步被转发到原始目标处理器。
根据实施例,中断信号是以包含目标处理器的中断目标ID的消息信号中断(message signaled interrupt)的形式接收的。使用消息信号中断(MSI)是总线连接模块(诸如外围组件互连(PCI)或快速外围组件互连(PCIe)功能)生成中央处理单元(CPU)中断以便向使用相应中央处理单元的客户机操作系统通知事件的发生或某种状态的存在的方法。MSI提供使用特殊带内消息来用信号发送中断的带内方法,从而避免需要与主要数据路径分离的专用路径,诸如每个设备上的专用中断引脚,来发送这样的控制信息。MSI反而依赖于通过主要数据路径来交换指示中断的特殊消息。当总线连接模块被配置为使用MSI时,相应模块通过执行指定字节数的数据到特定地址的MSI写操作来请求中断。这个特定地址(即,MSI地址)与唯一性数据值(即,MSI数据)的组合,称为MSI向量。
现代PCIe标准适配器具有提交多个中断的能力。例如,MSI-X允许总线连接模块分配最多2048个中断。因此,使得能够例如在依赖于多处理器系统的高速联网应用中将个别中断定向到不同处理器。MSI-X允许分配多个中断,每个中断具有单独的MSI地址和MSI数据值。
为了传输中断信号,可以使用MSI-X消息。可以使用MSI-X数据表来确定MSI-X消息的所需内容。总线连接模块(即PCIe适配器/功能)本地的MSI-X数据表,可以通过分配给每个中断信号(亦称中断请求(IRQ))的数字来索引。MSI-X数据表内容受客户机操作系统的控制,并且可以通过硬件和/或固件的指导来设置到操作系统。单个PCIe适配器可以包括多个PCIe功能,每个PCIe功能可以具有独立的MSI-X数据表。例如对于单根输入/输出虚拟化(SR-IOV)或多功能设备来说,可以就是这样的情况。
中断目标ID(如例如虚拟处理器ID)可以被直接编码为包括中断信号的、由总线连接模块发送的消息(诸如MSI-X消息)的一部分。消息(例如,MSI-X消息)可以包括请求者ID,即总线连接模块的ID、前述的中断目标ID、DIBV或AIBV索引、MSI地址和MSI数据。MSI-X消息可以提供用于MSI地址的64位和用于数据的32位。总线连接模块可以通过执行特定MSI数据值到特定MSI地址的MSI写操作,来使用MSI请求中断。
设备表是可以通过中断请求者(即,总线连接模块)的请求者ID(RID)完全地索引的共享表。总线附接设备重新映射和发布中断,即,总线附接设备转换中断目标ID并使用中断目标ID来直接寻址目标处理器。
客户机操作系统可以使用虚拟处理器ID来标识多处理器计算机系统中的处理器。因此,客户机操作系统的处理器视图(view)可能会不同于使用逻辑处理器ID的底层系统的视图。提供由客户机操作系统使用的资源的总线连接模块,可以使用虚拟处理器ID作为用于与客户机操作系统通信的资源,例如,MSI-X数据表可处于客户机操作系统的控制下。作为虚拟处理器ID的替代,可以为总线连接模块寻址处理器而定义任何其他ID。
中断被提交给客户机操作系统或在其上执行的其他软件,诸如其他程序等。如本文所使用的,术语操作系统包括操作系统设备驱动器。
如本文所使用的,术语总线连接模块(bus connected module)可包括任何类型的总线连接模块。根据实施例,模块可以是硬件模块,例如存储功能、处理模块、网络模块、密码模块、PCI/PCIe适配器、其他类型的输入/输出模块等。根据其他实施例,模块可以是软件模块,即诸如存储功能、处理功能、网络功能、密码功能、PCI/PCIe功能、其他类型的输入/输出功能之类的功能。因此,在本文给出的示例中,除非另外指出,否则模块与功能(例如,PCI/PCIe功能)和适配器(例如,PCI/PCIe功能)可互换地使用。
实施例可以具有以下益处:提供中断信号路由机制(例如,MSI-X消息路由机制),其允许它保持总线连接模块(例如,PCIe适配器和功能)以及用于操作或控制总线连接模块的设备驱动器不变。此外,可以防止管理程序拦截用于实现总线连接模块与客户机操作系统之间的通信的底层架构,例如PCIe MSI-X架构。换言之,中断信号路由机制的变更可以在管理程序和总线连接模块外部实施。
根据实施例,可以在分配给第一级客户机操作系统的存储器区段中提供针对每个第二级客户机操作系统的转发向量(在本文中亦称转发DISB向量)。
转发向量与直接中断摘要向量(在本文中亦称DISB向量和/或中断摘要向量(在本文中亦称AISB向量))之间的引用,可以使用客户机中断表(GAIT)和/或客户机中断状态区域(GISA)来实现,二者都在分配给第一级客户机操作系统的存储器区段中提供。
例如,转发向量的每个条目可以引用GAIT中的条目。GAIT条目可以各自包括指示第二级客户机操作系统的DISB向量的条目或AISB向量的条目的存储器地址指示符。GAIT条目可进一步提供指向第二级客户机操作系统的中断请求的第二级客户机操作系统的中断子类ID。此外,可提供每个客户机的GISA,其托管第二级客户机操作系统的每个中断子类的指向第二级客户机操作系统的浮动中断请求的待决中断指示符。
转发DISB中的单个条目(individual entry)(例如,位)可以代表个体目标处理器的活动(即,中断),该活动可以被分配给单个第二级客户机操作系统。
此外,转发DISB可包括额外的条目(例如额外的位),每个额外的条目可以代表个体总线连接模块(例如,PCIe功能)的活动(即,中断请求),该活动可以被分配给个体第二级客户机操作系统。
处理器的固件(例如,毫代码(millicode))可以通过扫描由第一级客户机操作系统提供的转发DISB和GAIT中的数据查找来唤醒第二级客户机操作系统并启用相应第二级客户机操作系统的DISB向量中的条目,该数据查找指示要设置相应第二级客户机操作系统的DISB向量中的哪个条目,以便反映关于针对哪个目标处理器存在要由被唤醒的第二级客户机操作系统处理的中断的信息。
使用该机制,可从任何转发向量条目映射到该转发向量也被分配给的相同第二级客户机操作系统的DISB向量的任何条目。
根据实施例,如果用于由第一级客户机操作系统使用并被分配给相应条目的目标处理器不在运行并且广播已初始化(initialized),则可能仅需启用第一级客户机操作系统的DISB向量中的条目,例如,需要设置一个位。
可以使用分配给相同第二级客户机操作系统并且由第一级客户机操作系统提供的转发DISB向量,重新使用该机制来启用第二级客户机操作系统的DISB向量中的条目。如果目标处理器不在运行并且广播已初始化,则可能仅需启用引用分配给单个目标处理器的第二级客户机操作系统的DISB向量的条目的转发DISB向量的条目,例如,需要设置一个位。
因此,该机制可以有效地将第一级客户机操作系统使用的中断目标ID映射到第二级客户机操作系统使用的中断目标ID。
根据实施例,转发向量可包括分配给各个总线连接模块的条目以及分配给各个目标处理器的条目。
根据实施例,第二存储器区段进一步包括客户机中断表,客户机中断表包括第一组客户机中断表条目,第一组客户机中断表条目包括定向中断摘要向量的定向中断摘要指示符中的每一个的定向中断摘要地址指示符,其中,相应定向中断摘要地址指示符指示相应定向中断摘要指示符在第二存储器区段中的存储器地址,使用客户机中断表来实现第一组转发向量条目中的转发向量条目的所述分配,其中第一组转发向量条目中的每一个转发向量被分配第一组客户机中断表条目中的一个客户机中断表条目,相应客户机中断表条目的定向中断摘要地址指示符指示相应转发向量条目被分配给的定向中断摘要的存储器地址。根据实施例,转发向量条目各自以单个位来实现。实施例可以具有以最小存储器空间且快速且高效可处理的形式提供转发向量条目的有益效果。根据实施例,定向中断摘要向量以存储器中的连续区域来实现。实施例可以具有以最小存储器空间且快速且高效可处理的形式提供以最小存储器空间且可快速且高效地处理的形式来提供中断摘要向量的有益效果。连续区域可例如为单个高速缓存行。根据实施例,定向中断摘要指示符各自以单个位来实现。实施例可以具有以最小存储器空间且快速且高效可处理的形式提供定向中断摘要指示符的有益效果。
根据实施例,存储器进一步包括中断表,中断表具有每个中断目标ID的中断表条目,中断表条目中的每个中断表条目包括指示相应转发向量条目在第二存储器区段中的存储器地址的转发向量条目地址指示符,其中,所述方法进一步包括:由总线附接设备检索中断表中的分配给所接收的中断目标ID的中断表条目的副本,所检索的副本包括指示第二存储器区段中的分配给所接收的中断目标ID的转发向量条目的存储器地址的转发向量条目地址指示符;由总线附接设备使用由所检索的中断表条目的副本所包含的转发向量条目地址指示符来选择分配给所接收的中断目标ID的转发向量条目。
根据实施例,所检索的中断表条目的副本还包括所接收的中断目标ID到逻辑处理器ID的映射,所述方法进一步包括:由总线附接设备使用中断表条目的副本所包括的映射来将所接收的中断目标ID转换为逻辑处理器ID。
实施例可以具有提供包括中断表条目(IRTE)的中断表(IRT)、每个条目提供中断目标ID到逻辑处理器ID的映射的有益效果。因此,条目可以定义每个中断目标ID到逻辑处理器ID的唯一性分配。根据实施例,中断目标ID可以虚拟处理器ID的形式提供。根据实施例,中断目标ID可以是由客户机操作系统用来标识所使用的各个处理器的任何其他ID。
根据实施例,在存储器中提供IRT,以供总线附接设备用于将中断目标ID映射到逻辑处理器ID。根据实施例,可以在单个位置中提供IRT。可以提供指示IRT的存储器地址的地址指示符,例如指针。该地址指示符可以例如由总线附接设备从存储器中提取的设备表的条目来提供。实施例可以具有不必在总线附接设备中存储大的映射表的有益效果。相反,用于映射的中断表可以存储在存储器中并且在必要时由总线附接设备访问。因此,总线附接设备可能仅需要处理用于待转发的每个中断信号的一个或多个中断表条目的工作副本。优选地,中断表条目的数量可以较小,例如一个。
根据实施例,可以在重新调度处理器时更新IRT或个别IRTE。根据实施例,IRT可以被存储在存储器的内部区段(即,HSA)中。
根据实施例,可以执行IRTE的双重获取,以便防止中断信号被发送到例如同时已经被停用的处理器。根据各实施例,在将中断信号转发给由使用IRTE的第一副本转换中断目标ID而产生的逻辑处理器ID所标识的处理器之后,可提取同一IRTE的第二副本以检查IRTE是否同时发生了任何改变。在IRTE同时已经被更新的情况下,存在中断信号已经被转发到被停用的处理器的风险。因此,可以用IRTE的第二副本来再次转换中断目标ID,并将中断信号转发给由第二次转换产生的逻辑处理器ID所标识的处理器。根据替代实施例,在IRTE的第二副本与第一副本不匹配的情况下,可以重复从获取IRTE的第一副本开始的完整方法。例如,可以提取IRTE的第三副本以代替IRTE的第一副本,或者以IRTE的第二副本代替IRTE的第一副本,并且,可以提取IRTE的第三副本,以实现也为了部分重复该方法的双重提取(double fetch)方案。可以重复此方案,直到实现匹配为止。根据另外的备选实施例,在IRTE的第二副本与第一副本不匹配的情况下,可以使用广播来转发中断信号。根据实施例,总线附接设备参与存储器高速缓存一致性协议并通过CPU可以检测高速缓存行变化的相同机制(例如,高速缓存窥探)来检测IRTE上的变化。
实施例可以具有避免可能具有低效缩放的高速缓存清除的有益效果。可以是全局的或者特定于IRTE的,即,整个条目被双重提取或者限于相应条目所包括的特定信息。
根据实施例,由转换中断目标ID和将中断信号转发到目标处理器直到其到达处理器所需的时间所产生的竞争条件,可以通过CPU上的检查逻辑检查接收处理器是否仍是正确的目标处理器而捕获到,直到中断信号到达处理器为止。为了检查,可以将与中断请求一起接收的中断目标ID和/或逻辑分区ID与分配给接收处理器的当前中断目标ID和/或逻辑分区ID进行比较,作为参考。在匹配的情况下,使用通过用IRTE的副本的转换产生的逻辑处理器ID直接寻址的接收处理器,确实是正确的目标处理器。因此,由IRTE的副本提供的信息已经是最新的。在失配的情况下,IRTE的副本尚不是最新的,并且接收处理器不再是目标处理器。在失配的情况下,可以例如使用广播将中断信号转发到目标操作系统。
根据实施例,可能会存在三个并行操作的实体,即,总线附接设备和处理中断信号的目标处理器以及可改变中断目标ID与逻辑处理器ID之间的分配的管理程序。根据实施例,在物理分布式系统中,除了以延迟成本提供这样的系统的虚拟外观的存储器之外,可能没有中心同步点。使用双重提取方案的实施例可以具有提供针对防止中断请求的双重递送或甚至丢失优化了速度的方法的有益效果。
关于中断信号,可以执行以下动作:A1)读取IRTE的第一副本,A2)向直接寻址的处理器发送中断请求,以及A3)读取IRTE的第二副本。同时,关于中断目标ID和逻辑处理器ID之间的分配变化,可能发生以下序列:B1)激活具有额外的逻辑处理器ID的额外的处理器,并停用具有先前的逻辑处理器ID的先前的处理器,以及B2)用额外的逻辑处理器ID更新IRTE,即,用额外的逻辑处理器ID替换先前的逻辑处理器ID。
在某些错误情况下,处理器(例如,目标处理器)可能会被重置到检查点并且丢失中间信息。为了重新获得丢失的信息,处理器可以扫描该特定处理器的、即分配给其逻辑处理器ID的所有IRTE条目,并且传递由存储器中存在的不受处理器恢复影响的待决直接中断指示符(例如,dPIA位)所指示的直接中断请求。
如果应当提交中断信号,则可将IRTE所包括的待决直接中断指示符(例如,IRTE.dPIA位)用作主副本,即单个真值点。为了简化处理器恢复,可以将处理器中的待决直接中断指示符用作例如IRTE.dPIA位的影子副本,以保持处理器上待决的直接中断。
在存储器具有严格有序性的情况下,只有步骤A1、A2和B1的以下顺序可能是可能的:具有A1→A3→B1的备选方案1以及具有A1→B1→A3的备选方案2。在备选方案1的情况下,IRTE的第一和第二副本可能会匹配。因此,中断信号可能会被转发到先前处理器而不是当前目标处理器。先前处理器可以看到中断目标ID和/或逻辑分区ID的失配,并发起对接收到的中断信号的广播。在备选方案2的情况下,总线附接设备可以看到IRTE的第一副本和第二副本之间的失配。响应于该失配,总线附接设备可以广播中断信号。由于广播,中断信号可以由看到命中并直接处理所接收的中断请求的额外处理器接收。实施例可以具有通过过于主动的方式关闭定时窗口的有益效果。
根据实施例,所检索的中断表条目的副本进一步包括运行指示符,该运行指示符指示由中断目标ID标识的第一目标处理器是否被调度用于由第一客操作系统使用,所述方法进一步包括:由总线附接设备使用由中断表条目的副本包括的运行指示符来检查第一目标处理器是否被调度供由第一客户机操作系统使用。实施例可以具有防止将中断发送到不运行的处理器(即,未被调度用于由客户机操作系统使用的处理器)的有益效果。实施例可以具有支持管理程序重新调度处理器的有益效果。
运行指示符指示由随中断信号一起接收的中断目标ID所标识的目标处理器是否被调度用于由客户机操作系统使用。运行指示符可以例如以运行位的形式实现,运行位即指示分配有相应位的处理器是否在运行(即,被调度用于由客户机操作系统使用)的单个位。因此,启用的(enabled)运行位可告知总线附接设备目标处理器当前被调度,而禁用的(disabled)运行位可告知总线附接设备目标处理器当前未被调度。在目标处理器不运行的情况下,总线附接设备可以马上发送备用的广播中断请求,而不用尝试直接寻址所述处理器之一。
根据实施例,运行指示符以单个位来实现。实施例可以具有以最小存储空间且快速且高效可处理的形式提供运行指示符的有益效果。
根据实施例,将直接中断阻挡指示符引入存储器中的中断表的中断条目中。直接中断阻断指示符可以单个位(即,dlBPIA位)的形式来实现。
根据实施例,从存储器提取IRTE,检查运行指示符以便确定目标处理器是否被调度。在目标处理器被调度的情况下,启用直接中断阻挡指示符,以便阻挡目标处理器在处理当前中断信号的同时接收另外的中断信号。另外的中断信号可能以其他方式干扰当前中断信号的处理。为了确保同时目标处理器尚未被重新调度,重新获取IRTE并再次检查当前运行指示符,以确定目标处理器是否仍被调度。在目标处理器仍被调度的情况下,可以使用目标处理器的逻辑处理器ID将中断信号转发到目标处理器以直接寻址目标处理器。此外,可以检查IRTE针对接收到的中断目标ID提供的目标处理器的逻辑处理器ID是否仍然相同。
根据实施例,中断表由第二存储器区段包括。实施例可以具有即使在处理器数量巨大的情况下也确保有充足存储器空间用于处理中断表的有益效果。实施例可以具有为多级虚拟化提供转发机制以支持直接中断转发以及广播的有益效果。实施例可以具有将分配给第二级客户机操作系统的中断表存储在分配给第一级客户机操作系统的存储器区段中的有益效果。
根据实施例,将分配给第一级客户机操作系统的中断表存储在存储器的亦称硬件系统区域(HSA)的内部区段中,该硬件系统区域为供硬件使用而保留的存储器区域。HSA可以包括固定的大小并且可以与客户端购买的存储器(即,可分配给主机和/或客户机操作系统的存储器)隔离。
根据实施例,可能会需要用于标识处理器的每一中断目标ID的中断表条目。因此,存储中断表所需的存储器量与中断目标ID的数目相关,且可能会增加到难以用HSA处理的大小。
实施例可以进一步提供安全检查,以防止由第一级客户机操作系统或管理程序对中断条目表的未允许的改变所引起的错误,包括从操作系统到硬件的中断信号信令结束。由于通过将中断表存储在分配给第一级操作系统的存储器区段中,可能出现第一级操作系统改变中断表的风险。
根据实施例,提供中断目标ID与逻辑处理器ID之间的映射的中断表被存储在分配给第n级客户机操作系统的存储器区段中,其中n≥1(例如,1或2)。存储在存储器的内部区段中的为硬件保留的设备表,可以包括分配给总线连接模块的、提供指示分配给n级客户机操作系统(例如第一级客户机操作系统)的存储器区段中的IRT的存储器地址的地址指示符(例如指针)的条目。
根据实施例,所检索的中断表条目的副本还包括第一逻辑分区ID和第一客户机中断状态区域地址指示符,所述第一逻辑分区ID标识第一客户机操作系统被分配到的逻辑分区,所述第一客户机中断状态区域地址指示符指示第二存储器区段中的分配给第一客户机操作系统的客户机中断状态区域的存储器地址。
根据实施例,该方法进一步包括由总线附接设备从设备表中检索设备表条目的副本,该设备表条目包括指示中断表的存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来检索中断表条目的第一副本。
根据实施例,设备表存储在存储器的第三存储器区段中,第三存储器区段受保护免受第一和第二操作系统的访问。该区段可以例如是HAS,以确保防止设备表被任何客户机操作系统篡改。
根据实施例,设备表条目的检索的副本还包括第二逻辑分区ID和第二客户机中断状态区域地址指示符,第二逻辑分区ID标识第一客户机操作系统被分配到的逻辑分区,第二客户机中断状态区域地址指示符指示第二存储器区段中的分配给第一客户机操作系统的客户机中断状态区域的存储器地址,其中,所述方法进一步包括由总线附接设备使用由中断表条目提供的第一逻辑分区ID和第一客户机中断状态区域地址指示符的第一组合与由在受保护的第三存储器区段中存储的设备表条目提供的第二逻辑分区ID和第二客户机中断状态区域地址指示符的第二组合的比较,检查在第二客户机操作系统可访问的第二存储器区段中存储的中断表条目未被第二客户机操作系统改变,第一组合与第二组合的匹配表明中断表条目未改变。
实施例可以具有提供排除中断表已被篡改的安全机制的有益效果。
根据实施例,设备表条目进一步包括标识客户机操作系统被分配到的逻辑分区的逻辑分区ID,由总线附接设备转发第一中断信号进一步包括与第一中断信号一起转发逻辑分区ID。实施例可以具有使接收处理器能够检查中断信号被寻址到哪个客户机操作系统的有益效果。
根据实施例,设备表条目进一步包括标识第一中断信号被分配到的中断子类的中断子类ID,由总线附接设备转发第一中断信号进一步包括与第一中断信号一起转发中断子类ID。
根据实施例,第二存储器区段进一步包括分配给相应中断目标ID的每个中断目标ID的第一定向中断信号向量,每个定向第一中断信号向量包括分配给第一总线连接模块的每个第一总线连接模块的第一中断信号指示符,每个定向第一中断信号向量指示是否存在由第一总线连接模块发布且寻址到相应中断目标ID的第一中断信号待处理,其中,所述方法进一步包括:由总线附接设备选择分配给第一中断信号所寻址的中断目标ID的定向第一中断信号向量;由总线附接设备在所选择的定向第一中断信号向量中选择分配给发布第一中断信号的第一总线连接模块的定向第一中断信号指示符;由总线附接设备更新所选择的定向第一中断信号指示符,使得所更新的定向第一中断信号指示符指示存在由第一总线连接模块发布且寻址到相应中断目标ID的第一中断信号待处理。
定向中断信号向量根据目标处理器ID排序的,即,为跟踪定向中断而进行了优化。换言之,主要次序准则是目标处理器ID而非标识发布中断请求的总线连接模块的请求者ID。取决于总线连接模块的数目,每个定向中断信号向量可以包括一个或多个定向中断信号指示符。
因此,可以避免对(例如中断信令位形式的)中断信号指示符进行排序,中断信号指示符指示已经顺序地接收到单个总线连接模块(诸如PCIe功能)的存储器的连续区域(诸如高速缓存行)内的(例如MSI-X消息形式的)的单个中断信号。启用和/或禁用中断信号指示符(例如通过使中断信令位置位或复位)要求将存储器的相应连续区域转移到到处理器其中之一以相应地改变相应中断信号指示符。
处理器可以处理从客户机操作系统角度看来其所负责的所有指示符,即,尤其是分配给相应处理器的所有指示符。这可以实现性能优势,因为在每个处理器正在处理分配给处理器的所有数据的情况下,这个上下文中所需的数据被提供给处理器和/或存储在本地高速缓存中的可能性可能较高,使得不需要大量的高速缓存通信量就能够快速访问处理器的相应数据。
然而,尝试处理其所负责的所有指示符的每一处理器,仍可导致处理器之间的较高的高速缓存通信量,因为每一处理器都需要写所有功能的所有高速缓存行。因为分配给每一个别处理器的指示符可分布于所有连续区域,例如高速缓存行。
中断信令指示符可以以定向中断信令向量的形式重新排序,使得分配给相同中断目标ID的所有中断信令指示符被组合在存储器的相同连续区域(例如,高速缓存行)中。因此,打算处理分配给相应处理器的指示符(即,中断目标ID)的处理器可能只需要加载存储器的单个连续区域。因此,使用每个中断目标ID的连续区域,而不是每个总线连接模块的连续区域。每一处理器可能只需要扫描和更新存储器的单个连续区域,例如,从所有可用总线连接模块接收的由中断目标ID标识为目标处理器的特定处理器为目标的所有中断信号的高速缓存行。
根据实施例,可以由管理程序为客户机操作系统应用偏址以将位对准到不同的偏址。
根据实施例,第二存储器区段进一步包括中断摘要向量,中断摘要向量具有每个总线连接模块的中断摘要指示符,每个中断摘要指示符被分配给总线连接模块,以指示是否存在由相应的总线连接模块发布的中断信号待处理,转发向量包括第二组转发向量条目,第二组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示其被分配给的相应中断摘要指示符是否要被更新,以便为第一操作系统指示存在由相应总线连接模块发布的第一中断信号待处理,其中,所述方法进一步包括:由总线附接设备从第二总线连接模块接收具有中断目标ID的第二中断信号,中断目标ID标识所述处理器中的被分配用于由第一客户机操作系统用作处理第二中断信号的第二目标处理器的一个处理器,由总线附接设备检查所述第二目标处理器是否被调度供由第一客户机操作系统使用,如果第二目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第二目标处理器,将第二中断信号转发到第二目标处理器用于处理,否则,由总线附接设备使用广播向第一操作系统转发第二中断信号用于处理,所述广播包括由总线附接设备选择第二组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示分配给其的中断摘要指示符要被更新,以便为第一操作系统指示存在由第二总线连接模块发布的第一中断信号待处理。
根据实施例,转发向量可进一步包括分配给各个总线连接模块的额外条目。这些额外条目可以因此指示哪些总线连接模块中存在待处理的中断信号此外,相应转发向量的这些额外条目可以各自引用分配给同一总线连接模块的第二级客户机操作系统的中断摘要向量的条目。
分配给总线连接模块的转发向量的条目可以由总线附接设备更新,以指示存在来自相应总线连接模块的将由第二级客户机操作系统处理的中断信号。基于对第二级客户机操作系统的存储器区段中的直接中断摘要向量的条目的引用,可以确定哪些总线连接模块中存在将由第二级客户机操作系统处理的中断信号。例如,从所引用的条目在中断摘要向量中的位置,就可以确定发布相应中断信号的总线连接模块。
根据实施例,客户机中断表包括第二组客户机中断表条目,第二组客户机中断表条目包括中断摘要向量的中断摘要指示符中的每一个的中断摘要地址指示符,相应中断摘要地址指示符指示相应中断摘要指示符在第二存储器区段中的存储器地址,使用客户机中断表来实现第二组转发向量条目中的转发向量条目的所述分配,其中,第二组转发向量条目中的每个转发向量被分配第二组客户机中断表条目中的客户机中断表条目,相应客户机中断表条目的定向中断摘要地址指示符指示相应转发向量条目被分配给的中断摘要指示符的存储器地址。
根据实施例,第二存储器区段进一步包括分配给相应总线连接模块的每个总线连接模块的中断信号向量,每个中断信号向量包括分配给相应总线连接模块的每个中断目标ID的中断信号指示符,每个中断信号向量指示是否存在由相应总线连接模块发布的且寻址到待处理的相应中断目标ID的中断信号,其中,所述方法进一步包括:由总线附接设备选择分配给第二总线连接模块的定向中断信号向量,由总线附接设备在所选择的中断信号向量中选择分配给第二中断信号所寻址到的中断目标ID的中断信号指示符,由总线附接设备更新所选择的中断信号指示符,以使得所更新的中断信号指示符指示存在由第二总线连接模块发布的并且寻址到待处理的相应中断目标ID的中断信号。
根据实施例,第一客户机操作系统是第二虚拟化级的客户机操作系统,并且第二客户机操作系统是第一虚拟化级的客户机操作系统。根据实施例,第一客户机操作系统是第三虚拟化级的客户机操作系统,并且第二客户机操作系统是第二虚拟化级的客户机操作系统。
实施例可以具有实现多级虚拟化方案的有益效果。
根据实施例,在计算机可读非暂时性介质上提供的用于由处理电路执行的指令被配置以执行如本文所述的向客户机操作系统提供中断信号的方法的任何实施例。
根据实施例,计算机系统进一步被配置以执行如本文所述的向客户机操作系统提供中断信号的方法的任何实施例。
图1描绘了用于向客户机操作系统提供中断信号的示例性计算机系统100。计算机系统100包括多个处理器130,用于执行客户机操作系统。计算机系统100还包括存储器140,也称为内存存储器或主存储器。存储器140可以提供被分配用于由计算机系统100包括的硬件、固件和软件组件使用的存储器空间,即存储器区段。存储器140可以由计算机系统100的硬件和固件以及软件(例如,管理程序、主机/客户机操作系统、应用程序等)使用。一个或多个总线连接模块120经由总线102和总线附接设备(bus attachment device)110与多个处理器130以及存储器140可操作地连接。总线附接设备110一方面管理总线连接模块120与处理器130的通信,另一方面管理总线连接模块120与存储器140之间的通信。总线连接模块120可直接或经由例如转换器104的一个或多个中间组件与总线102连接。
总线连接模块120可以例如以高速外围组件互连(PCIe)模块(亦称PCIe适配器或由PCIe适配器提供的PCIe功能)的形式来提供。PCIe功能120可以发布请求,该请求被发送到总线附接设备110,例如PCI主机桥(PHB),亦称PCI桥单元(PBU)。总线附接设备110从总线连接模块120接收请求。这些请求可以例如包括用于由总线附接设备110执行对存储器140的直接存储器访问(DMA)的输入/输出地址或者指示中断信号(例如,消息信号中断(MSI))的输入/输出地址。
图2描绘了由计算机系统100提供的示例性虚拟机支持。计算机系统100可以包括一个或多个虚拟机202以及至少一个管理程序200。虚拟机支持可以提供操作大量虚拟机的能力,每个虚拟机能够执行客户机操作系统204,诸如z/Linux。每个虚拟机201可以能够充当单独的系统。因此,每个虚拟机可以被独立地复位,执行客户机操作系统,以及运行不同的程序,如应用程序。在虚拟机中运行的操作系统或应用程序似乎能够访问全部和完整的计算机系统。然而实际上,计算机系统的可用资源中的仅一部分可供相应操作系统或应用程序使用。
虚拟机可以使用V=V模型,其中分配给虚拟机的存储器由虚拟存储器而不是真实存储器支持。因此,每个虚拟机具有虚拟线性存储器空间。物理资源由管理程序200(例如,VM管理程序)拥有,并且,由管理程序根据需要将共享的物理资源分派给客户机操作系统,以满足客户机操作系统的处理需求。V=V虚拟机模型假设客户机操作系统与物理共享机器资源之间的交互由VM管理程序控制,因为大量客户可阻止管理程序简单地划分硬件资源并将硬件资源分配给配置的客户。
处理器120可以由管理程序200分配给虚拟机202。虚拟机202可以例如分配有一个或多个逻辑处理器。每个逻辑处理器可以代表可以由管理程序200动态分配给虚拟机202的物理处理器120的全部或部分。虚拟机202由管理程序200管理。管理程序200可以例如被实现在处理器120上运行的固件中或者可以是在计算机系统100上执行的操作系统的一部分。管理程序200可以例如是VM管理程序,诸如由美国纽约州阿蒙克的国际商业机器公司提供的
除了第一级虚拟化之外,还提供具有第二管理程序210的第二级虚拟化,第二管理程序210在第一级客户机操作系统之一上执行,第一级客户机操作系统充当第二管理程序210的主机操作系统。第二管理程序210可以管理一个或多个第二级虚拟机212,每个第二级虚拟机能够执行第二级客户机操作系统212。
图3描绘了展示使用不同类型的ID来标识计算机系统100的位于不同层级的处理器的示例性模式。底层固件220可以提供逻辑处理器ID、ICPU 222来标识计算机系统100的处理器130。第一级管理程序200使用逻辑处理器ID ICPU 222与处理器130通信。第一级管理程序可以提供第一虚拟处理器ID vCPU 224,供由在第一级管理程序200管理的虚拟机上执行的客户机操作系统204或第二级管理程序210使用。管理程序200可以将第一虚拟处理器ID vCPU 224分组,以便为客户机操作系统204和/或管理程序210提供逻辑分区(logicalpartition),亦称区(zone)。第一级管理程序200将第一虚拟处理器ID vCPU 224映射到逻辑处理器ID lCPU 222。由第一级管理程序200提供的一个或多个第一虚拟处理器ID vCPU224可以被分配给使用第一级管理程序200执行的每个客户机操作系统204或管理程序210。在第一级管理程序200上执行的第二级管理程序210可以提供执行例如另外的客户机操作系统214的软件的一个或多个虚拟机。为此,第二级管理程序管理第二虚拟处理器ID vCPU226,以由在第一级管理程序200的虚拟机上执行的第二级客户机操作系统214使用。第二虚拟处理器ID vCPU 226由第二级管理程序200映射到第一虚拟处理器ID vCPU 224。
由第一/第二级客户机操作系统204使用的总线连接模块120寻址处理器130可以使用第一/第二虚拟处理器ID vCPU 224、226或从第一/第二虚拟处理器ID vCPU 224、226导出的替代ID形式的目标处理器ID。
图4描绘了计算机系统100的简化示意性设置,展示了用于向计算机系统100上执行的客户机操作系统提供中断信号的方法中的主要参与者。出于说明的目的,该简化的设置包括将中断信号发送到在一个或多个处理器(CPU)130上执行的客户机操作系统的总线连接模块(BCM)120。中断信号与中断目标ID(IT_ID)一起被发送到总线附接设备110,该中断目标ID将处理器130中的一个处理器标识为目标处理器。总线附接设备110是管理总线连接模块120与计算机系统100的处理器130以及存储器140之间的通信的中间设备。总线附接设备110接收中断信号并且使用中断目标ID来标识目标处理器的逻辑处理器ID以便直接寻址相应的目标处理器。向目标处理器的定向转发可例如通过减少高速缓存通信量来改进数据处理的效率。
图5描绘了图4的计算机系统100。如存储器140的分段所示,存在实现的两个虚拟化级。存储器的第一区段143被分配给第一级客户机操作系统,而存储器的第二区段141的被分配给第二级客户机操作系统。第二级客户机操作系统运行在第一级客户机操作系统上,第一级客户机操作系统充当第二级客户机操作系统的主机。为了寻址由第二级客户机操作所使用的处理器,可以使用基于至少两个映射的中断目标ID,两个映射为:由第一级管理程序将逻辑处理器ID映射到第一虚拟处理器ID的第一映射以及由第二级管理程序将第一虚拟处理器ID映射到第一虚拟处理器ID的第二映射,第一级管理程序亦称本机管理程序),第二级管理程序亦称由运行在由第一管理程序管理的虚拟机上的第一级客户机操作系统托管的被托管管理程序。
总线附接设备110被配置为对存储器140的模块特定区域(module specificarea)(MSA)149中的总线连接模块120的状态执行状态更新。可以响应于从总线连接模块接收指定待写入到存储器140中的状态更新的直接存储器存取(DMA)写而执行此状态更新。
存储器进一步包括在存储器的为供计算机系统100的硬件使用而保留的内部区段145中的设备表(DT)144,其具有每个总线连接模块120的设备表条目(DTE)146。该内部区段亦称硬件系统区域(HAS),可以包括固定的大小并且与客户端购买的存储器(即,可分配给主机和/或客户机操作系统的存储器)隔离。
在接收到中断信号(例如,具有标识中断请求的目标处理器的中断目标ID的MSI-X写消息)时,总线附接设备110提取分配给发布请求的总线连接模块120的DTE 146。为此目的,也可以接收标识总线连接模块120形式的中断请求的起源的请求者ID。该中断可以例如以第二级客户机操作系统为目标,即,中断目标ID标识被分配供第二级操作系统使用的目标处理器。DTE 146可以例如使用dIRQ位来指示是否针对发布请求的总线连接模块120启用目标处理器的定向寻址。总线附接设备110更新客户机定向中断信号向量(DIBV)162(即,被分配给第二级客户机操作系统并被存储在存储器140的客户机存储器区段141中的DIBV),以便跟踪从哪个总线连接模块接收到了针对处理器130中的哪个处理器的中断信号。每个客户机DIBV 162被分配给中断目标ID(即处理器130)的其中之一,并且可以包括一个或多个条目。每个条目被分配给总线连接模块120的其中之一。因此,客户机DIBV 162指示存在来自哪些总线连接模块的针对特定处理器130的待处理的中断信号。这可以具有以下优点:为了检查是否存在任何中断信号或者存在来自哪些总线连接模块120的针对特定处理器130的待处理的中断信号,只需要从存储器140读取信号条目(例如,位)或信号向量(例如,位向量)。
进一步,总线附接设备110可以更新转发向量(亦称转发定向中断摘要向量(DISB)164),以便在广播的情况下跟踪针对处理器130中的哪一个存在任何待处理的中断信号。转发DISB 164的每一条目被分配给客户机中断表(GAIT)166的条目,而GAIT条目可以包括指示被分配给中断目标ID的客户机DISB 160的条目的存储器地址的存储器地址指示符。例如,GAIT 166可提供客户机DISB 160的地址(Gst_DISB@)以及相应条目在客户机DISB 160内的偏址(Gst_DISBO)。因此,GAIT 166可提供用于选择转发DISB 164中的条目的中断目标ID到分配给相应中断目标ID的客户机DISB 160中的条目的映射。
除了分配给中断目标ID并经由GAIT条目提供的地址数据链接到客户机DISB 160的条目的条目之外,转发DISB 164还可以包括分配给总线连接模块的条目,例如请求者ID。请求者ID经由GAIT条目提供的地址数据链接到客户机AISB 170的条目。例如,GAIT 166可以提供客户机AISB 170的地址(Gst_AISB@)以及相应条目的在客户机AISB 170内的偏址(Gst_AISBO)。因此,GAIT 166可进一步提供用于选择转发DISB 164中的条目的请求者ID到分配给相应请求者(即,总线连接模块120)的客户AISB 160中的条目的映射。在这种情况下,总线附接设备可更新分配给总线连接模块的客户机中断信号向量(AIBV)172的条目。被分配给总线连接模块120的AIBV 172的每一条目可进一步被分配给处理器130。因此,AIBV本身可标识总线连接模块120,而条目标识处理器130。
总线附接设备110使用存储在存储器140中(例如内部区段145中)的中断表(IRT)150的条目(IRTE)152,将中断目标ID(IT_ID)转换为逻辑处理器ID(ICPU),并用逻辑处理器ID来直接寻址目标处理器,将所接收的中断信号转发到目标处理器。为了转换,总线附接设备110获取条目(IRTE)152的副本114。可以用由DTE 146的副本提供的中断表150的地址(IRT@)来从本地高速缓存或者从存储器140获取副本。IRTE 152提供中断目标ID到逻辑处理器ID的映射,逻辑处理器ID由总线附接设备110用于在定向中断转发的情况下直接寻址目标处理器。
IRTE 152另外提供运行指示符154,其指示由中断目标ID标识的目标处理器是否被调度,即是否在运行。在目标处理器未被调度的情况下,可发起广播以便实现及时的中断处理。
每个处理器包括用于接收和处理直接中断信号的固件(例如,毫代码132)。固件可以进一步包括例如处理器130的微代码和/或宏代码。它可以包括在更高级机器代码的实现中使用的硬件级指令和/或数据结构。根据各实施例,它可包括可作为包括受信任的软件的微代码或特定于底层硬件的微代码被递送并控制对系统硬件的操作系统访问的专有代码。此外,处理器130的固件可包括用于根据由总线附接设备110转发到接收处理器130的中断目标ID来检查接收处理器是否与目标处理器相同的检查逻辑134。在接收处理器130不是目标处理器的情况下,即,在所接收的中断目标ID与接收处理器130的参考中断目标ID不匹配的情况下,中断信号被广播到逻辑分区,以寻找用于处理中断信号的处理器。
图6是用DMA写请求经由总线附接设备110执行总线连接模块120的状态更新的示例性方法的流程图。在步骤300中,总线连接模块可以决定更新其状态并触发中断,例如以便指示信号完成。在步骤310中,总线连接模块经由总线附接设备发起对分配给在计算机系统上运行的主机的存储器区段(主机存储器)的直接存储器访问(DMA)写,以便更新总线连接模块的状态。DMA是允许计算机系统的外围组件直接向主存储器和从主存储器传送其I/O数据而无需涉及系统处理器的硬件机制。为了执行DMA,总线连接模块例如以MSI-X消息的形式向总线附接设备发送DMA写请求。在PCIe的情况下,总线连接模块可以例如指代在PCIe适配器上提供的PCIe功能。在步骤320中,总线连接模块接收具有总线连接模块的状态更新的DMA写请求,并使用所接收的更新来更新存储器。所述更新可以在主机存储器的为相应的总线连接模块保留的区域中执行。
图7是用于使用图6的计算机系统100将中断信号提供给客户机操作系统的示例性方法的流程图。在步骤330中,总线附接设备接收由总线连接模块发送的中断信号(例如,以MSI-X写消息的形式)。该中断信号的传输可以根据PCI架构的规范来执行。MSI-X写消息包括标识中断的目标处理器的中断目标ID。中断目标ID可以例如是由客户机操作系统用来标识多处理器计算机系统的处理器的虚拟处理器ID。根据实施例,中断目标ID可以是由客户机操作系统和总线连接模块为了能够标识处理器而约定的任何其他ID。这样的另一个ID可以例如是虚拟处理器ID的映射的结果。此外,MSI-X写消息还可以包括中断请求者ID(RID)(即发布中断请求的PCIe功能的ID)、定义向量条目在向量内的偏址的向量索引、MSI地址(例如,64位地址)以及MSI数据(例如,32位数据)。MSI地址和MSI数据可以指示,相应的写消息实际上是MSI消息形式的中断请求。
在步骤340中,总线附接设备获取存储在存储器中的设备表的条目的副本。设备表条目(DTE)提供待更新的一个或多个向量或向量条目的地址指示符以便指示已接收到针对目标处理器的中断信号。向量条目的地址指示符可以例如包括该向量在存储器中的地址以及在该向量内的偏址。此外,DTE可提供直接信令指示符(direct signaling indicator),其指示目标处理器是否将由总线附接设备使用随中断信号一起提供的中断目标ID来直接寻址。此外,DTE可以提供逻辑分区ID(亦称区ID)和中断子类ID。设备表条目的相应副本可以从高速缓存或者从存储器获取。
在步骤342中,总线附接设备使用随中断信号一起接收的中断目标ID以及由DTE提供的指示IRT的存储器的地址指示符从存储器获取IRTE的副本。在步骤350中,总线附接设备更新在DTE中指定的向量,例如,客户机DIBV或客户机AIBV。
在步骤360中,总线附接设备检查随中断信号一起提供的直接信令指示符。在直接信令指示符指示非直接信令的情况下,总线附接设备在步骤370中通过使用区标识符和中断子类标识符进行广播来转发中断信号,以便将中断信号提供给由客户机操作系统使用的处理器。在直接信令指示符指示直接信令的情况下,总线附接设备在步骤362中进一步检查IRTE的副本所包括的运行指示符是否指示中断目标ID所标识的目标处理器正在运行。
在目标处理器不在运行的情况下,在步骤364中,总线附接设备使用例如逻辑分区ID和/或中断子类ID来发送作为备用的广播中断,以识别适于处理中断的处理器。如果没有找到匹配逻辑分区ID和/或中断子类ID的合适处理器,则管理程序,即被分配指派用于由管理程序使用的处理器,可以代替分配给客户机操作系统的处理器来接收该中断请求。如果分配给客户机操作系统的一个或多个处理器被调度,则管理程序可以决定再次广播中断请求。在分配给操作系统的处理器的条目上,管理程序可以检查要提交给正在进入的处理器的直接中断待决指示符,例如dPIA位。根据实施例,管理程序可以例如选择性地重新调度(即,唤醒)目标处理器。
在目标处理器正在运行的情况下,在步骤380中,总线附接设备将随中断信号一起提供的中断目标ID转换为被分配以供客户机操作系统使用的处理器的逻辑处理器ID。为了进行转换,总线附接设备可以使用由总线附接设备包括的映射表。总线附接设备可以包括每个区(即逻辑分区)的映射表或子表。在步骤390中,总线附接设备通过使用逻辑处理器ID来直接寻址相应处理器,向目标处理器转发中断信号,即,发送直接消息。直接消息进一步可以包括区ID和/或中断子类ID。接收处理器包括中断目标ID检查逻辑。在中断目标ID仅每个逻辑分区唯一的情况下,检查逻辑可以进一步将逻辑分区ID考虑在内。
在步骤392中,检查逻辑检查所接收的中断目标ID和/或逻辑分区ID是否匹配当前分配给接收处理器并且可以由检查逻辑访问的中断目标ID和/或逻辑分区。在失配的情况下,在步骤393中,接收固件发起广播,通过使用用于识别处理中断的有效目标处理器的逻辑分区ID和/或中断子类ID,将所接收的中断请求广播到其余处理器。在肯定匹配的情况下,在步骤394中,目标处理器的接收固件(例如,毫代码)接受直接寻址的中断,以便提交给客户机操作系统。作为响应,固件可以中断其活动(例如,程序执行),并且切换以执行客户机操作系统的中断处理程序。可以用直接信令指示向客户机操作系统提交中断。
在步骤364中,在运行指示符被禁用(即,目标处理器未被调度)的情况下,总线附接设备使用逻辑分区ID和/或中断子类ID来发起中断信号的广播。使用逻辑分区ID的广播由管理程序/第一级客户机操作系统处理。
这样的广播,也可以由接收处理器在接收到的中断目标ID和/或逻辑分区ID与当前分配给接收处理器的中断目标ID和/或逻辑分区之间失配时,在步骤393中发起。当前分配的中断目标ID和/或逻辑分区是检查逻辑作为用于检查的参考值可访问的。
在步骤395中,在接收到广播中断请求时,执行管理程序/第一级客户机操作系统的处理器扫描转发向量。转发向量在分配给第一级客户机操作系统的存储器区段中提供。此扫描可以由相应处理器的固件(例如,毫代码)执行。转发向量的每个条目(例如,位)对应于在分配给第一级客户机操作系统的存储器区段中提供的客户机中断表(GAIT)中的一个条目。GAIT的对应条目可以例如指定使用直接寻址或使用广播向目标处理器转发中断信号。
在步骤396,读取与转发向量的被启用的条目对应的GAIT条目。该GAIT条目指定第二级客户机操作系统的定向中断摘要向量的一个条目。该GAIT条目提供例如指示该定向中断摘要向量在分配给第二级客户机操作系统的存储器区段中的地址的地址指示符。该指示符可以例如包括定向中断摘要向量的存储器地址以及定向中断摘要向量内的偏址。偏址可以指定定向中断摘要向量的特定条目。
在步骤397中,固件启用在GAIT中指定的第二级客户机操作系统的定向中断摘要向量的该条目。例如,可以将客户机DISB的位置位。第二级客户机操作系统的定向中断摘要向量的相应条目引用中断信号被寻址到的第二级客户机操作系统使用的处理器的中断目标ID。
在步骤398中,固件启用相应第二级客户机操作系统的客户机中断状态区域(GISA)中的条目(例如,将GISA中的位置位),以使对第二级操作系统的浮动中断请求(floating interrupt request)待决。GISA被分配给第二级客户机操作系统并且存储在分配给第一级客户机操作系统的存储器区段中。在由多个第二级客户机操作系统的情况下,为每个第二级客户机操作系统提供一个GISA。为了寻址GISA,可以使用GISA存储器地址和/或客户机中断子类ID(GISC)。GISA存储器地址和GISC可以由在步骤396中读取的GAITE条目来提供。
在步骤399中,如果第二级客户机操作系统被分派在CPU之一上,固件中断程序执行,并将执行切换到第二级客户机操作系统中断处理程序,为第二级操作系统处理待决的中断。
图8描绘了图5的计算机系统100的进一步实施例,图8的计算机系统100和图6的计算机系统100之间的唯一不同之处在于,IRT被存储在分配给主机(即第一级客户机操作系统)的存储器区段143中,而不是在存储器的内部区段145中。这可能是有利的,因为当IRT的大小由于大量处理器而增加到很多时,内部区段145可能会包括引起问题的受限大小。
图9是用于使用图8的计算机系统100将中断信号提供给客户机操作系统的示例性方法的流程图。该方法是图7的方法的扩展。为了确保IRTE未被第一级客户机操作系统篡改,执行额外检查。在步骤342中,使用所接收的中断目标ID,从分配给第一级客户机操作系统的存储器区段读取IRTE的副本。总线附接设备从所获取的IRTE的副本读取分配给所接收的中断目标ID的逻辑处理器ID、逻辑分区ID和GISA地址指示符。在步骤344中,PBU将设备表条目的副本所包括的逻辑分区ID和GISA地址指示符与IRTE的副本所提供的逻辑分区ID和GISA地址指示符进行比较,以确保第一级客户机操作系统没有在IRTE中改变它们中的任一个。因此,将由设备表条目冗余地提供的数据用作参考数据,以便检查由IRTE提供的数据的正确性。在失配的情况下,在步骤346中确定IRTE是错误的。如果由IRTE的副本提供的逻辑分区ID和GISA地址指示符是正确的,则假设IRTE包括的所有数据是正确的,于是,该方法继续步骤350。
图10描绘了客户机DISB 160和多个客户机DIBV 162的示意性结构。客户机DISB160可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括每个中断目标ID的条目161,例如位(比特)。每个条目指示是否存在要由中断目标ID标识的相应处理器处理的中断请求(IRQ)。为每个中断目标ID(即,客户机DISB 160的条目)提供一个客户机DIBV 162。每个客户机DIBV 162被分配给特定的中断目标ID并且包括每个总线连接模块MNA、MN B的一个或多个条目163。客户机DIBV 162各自可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括分配给相同中断目标ID的条目163。不同总线连接模块的条目可以是使用每个总线连接模块的不同偏址客户机DIBVO的顺序。
图11描绘了客户机AISB 170和多个客户机AIBV 172的示意性结构。客户机AISB170可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括每个总线连接模块MN A至MN D的条目171,例如位。每个条目指示是否存在来自相应总线连接模块的待处理的中断请求(IRQ)。为每个总线连接模块(即,AISB 170的条目)提供一个客户机AIBV172。每个客户机AIBV 172被分配给特定总线连接模块并且每个中断目标ID的一个或多个条目173。客户机AIBV 172可以各自以可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括分配给相同总线连接模块的条目173。关于不同总线连接模块的条目可以是使用每个总线连接模块的不同偏址客户机AIBVO的顺序。
图12A示出了示例性客户机DIBV 162。客户机DIBV 162的条目的存储器地址是由被分配给中断目标ID(例如,vCPU)的IRTE提供的DIBV地址DIBV@、由DTE提供的偏址DIBVO、以及随中断信号一起提供的DIBV索引DIBV-Idx的组合。因此,每个客户机DIBV 162被分配给一个中断目标ID,而条目则被分配给总线连接模块。
图12B示出了示例性客户机AIBV 172。客户机DIBV 172的条目的存储器地址是由分配给总线连接模块的DTE提供的AIBV地址AIBV@、由DTE提供的偏址AIBVO以及随中断信号一起提供的AIBV索引AIBV-Idx(例如MSI索引)的组合。因此,每个客户机AIBV 162被分配给一个总线连接模块,而条目则被分配给中断目标ID。
图13A示出了示例性客户机DISB 160。客户机DISB 160的条目的存储器地址由主机DISB地址Host_DISB@和主机DISB偏址Host_DISBO提供,主机DISB地址和主机DISB偏址Host_DISBO两者都由被分配给中断目标ID(例如,vCPU)的IRTE提供,从而标识主机存储器中的转发DISB阵列的存储器地址。转发DISB阵列的相应条目标识GAIT条目,该GAIT条目标识客户机DISB 160的地址Gst_DISB@和偏址Gst_DISBO。相应条目被分配给中断目标ID。
图13B示出了示例性客户机AISB 170。客户机AISB 170的条目的存储器地址由主机DISB地址Host_DISB@和主机DISB偏址Host_DISBO提供,主机DISB地址Host_DISB@和主机DISB偏址Host_DISBO两者均由分配给总线连接模块的DTE提供,从而标识主机存储器中的转发DISB阵列的存储器地址。转发DISB阵列的相应条目标识GAIT条目,该GAIT条目标识客户机AISB 170的地址Gst_AISB@和偏址Gst_AISBO。相应条目被分配给总线连接模块。
图14描绘了示例性DTE 146,其包括逻辑分区ID(区)、中断子类ISC、Host_DISB、Host_DISBO、AIBV@、AIBVO以及定义在DIBV中为相应总线连接模块保留的最大位数的中断数(NOI)。此外,描绘了示例性IRTE 152。IRTE 152可包括逻辑分区ID(区)、Host_DISB、Host_DISBO、DIBV@和客户机中断状态区域(GISA)的地址GISA@。GISA 174可包括IPM和IAM,IPM使第二级客户机操作系统中断待决。如果没有第二级客户机操作系统的vCPU被调度,则将IAM位置位,从而将GISA放入警报列表(Alert-List),生成第一级客户机操作系统中断。如果有第二级客户机操作系统的vCPU被调度,则其得到高速缓存行监测器(Cache-Line-Monitor)(CLM)直接检测到的第二级客户机操作系统中断。最后,示例性GAIT条目GAITE173可以包括Gst_DISB@、Gst_DISBO、GISC和GISA@。在GAIT标识客户机AISB条目而不是客户机DISB条目的情况下,其可以包括Gst_AISB@和Gst_AISBO。
图15描绘了包括具有条目165的转发DISB向量164的转发DISB阵列。每个条目165被分配给GAIT 166的GAITE 167。
客户机操作系统可以例如使用可分页存储模式客户机来实现。例如,中的可分页客户机可在第2解释层通过Start InterpretiveExecution(SIE)指令解释地执行。例如,逻辑分区(LPAR)管理程序执行SIE指令以开始物理、固定存储器中的逻辑分区。该逻辑分区中的操作系统(例如,)可以发布SIE指令来执行其虚拟存储中的客户(虚拟)机。因此,LPAR管理程序可以使用1级SIE,管理程序可以使用2级SIE。
根据各实施例,计算机系统是由国际商业机器公司提供的System服务器。System基于的是由国际商业机器公司提供的关于的细节,在题为“z/Architecture Principles of Operation”(Publication No.SA22-7832-11,August 25,2017)的出版物中有描述,特此通过引用在本文中合并其全文。System和是美国纽约州阿蒙克市的国际商业机器公司的注册商标。本文中使用的其他名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
根据各实施例,其他架构的计算机系统可以实现并使用本发明的一个或多个方面。例如,除System服务器之外的服务器(例如Power Systems服务器或由国际商业机器公司提供的其他服务器)或其他公司的服务器实施、使用和/或受益于本发明的一个或多个方面。进一步,尽管在本文的示例中,总线连接模块和总线附接设备被视为服务器的一部分,但是在其他实施例中,它们不必一定被视为服务器的一部分,而是可以简单地被视为耦合到系统存储器和/或计算机系统的其他组件。计算机系统不必是服务器。进一步,尽管总线连接模块可以是PCIe,但是本发明的一个或多个方面可与其他总线连接模块一起使用。PCIe适配器和PCIe功能仅是示例。进一步,本发明的一个或多个方面可以应用于除了PCIMSI和PCIMSI-X之外的中断方案。更进一步,尽管描述了其中对位进行设置的示例,但是在其他实施例中,可以对字节或其他类型的指示符进行设置。此外,DTE和其他结构可以包括更多、更少或不同的信息。
此外,其他类型的计算机系统可受益于本发明的一个或多个方面。作为示例,适合于存储和/或执行程序代码的包括直接地或通过系统总线间接地耦合到存储器元件的至少两个处理器的数据处理系统是可用的。存储器元件包括例如在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储装置检索代码的次数的高速缓存。
输入/输出或I/O设备(包括但不限于键盘、显示器、定点设备、DASD、磁带、CD、DVD、拇指驱动器和其他存储介质等)可以直接地或通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,以使得数据处理系统能够通过居间的私有或公共网络变得耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是网络适配器的可用类型中的少数几种。
参照图16,描绘了用于实现本发明的一个或多个方面的主机计算机系统400的代表性部件。代表性主机计算机400包括与计算机存储器402通信的一个或多个处理器(例如CPU)401,以及连接到存储介质装置411和网络410的用于与其他计算机或SAN等通信的I/O接口。CPU 401符合具有架构指令集和架构功能的架构。CPU 401可以具有用于将程序地址、虚拟地址转换成存储器的实地址的动态地址转换(DAT)403。DAT可以包括用于高速缓存转换的转换后备缓冲器(TLB)407,使得对计算机存储器402的块的稍后访问不需要地址转换的延迟。可以在计算机存储器402与CPU 401之间采用高速缓存409。高速缓存409可分级地结构化,从而提供可用于一个以上CPU的大的高级高速缓存及在高级高速缓存与每一CPU之间的较小、较快、较低级高速缓存。在一些实施例中,较低级高速缓存可以分割为提供用于指令获取和数据存取的独立的低级高速缓存。根据实施例,指令可以由指令获取单元404经由高速缓存409从存储器402获取。指令可在指令解码单元406中被编码,并且在一些实施例中与其他指令一起,被分派给一个或多个指令执行单元408。可采用若干执行单元408,例如算术执行单元、浮点执行单元和分支指令执行单元。指令由执行单元执行,根据需要从指令指定的寄存器或存储器访问操作数。如果要从存储器402访问(例如,加载或存储)操作数,则加载/存储单元405可以在正在执行的指令的控制下处理该访问。指令可在硬件电路中或在内部微代码(即,固件)中或通过两者的组合执行。
计算机系统可包括本地或主存储装置中的信息,以及寻址、保护和引用和改变记录。寻址的一些方面包括地址的格式、地址空间的概念、不同类型的地址和将一种类型的地址转换成另一种类型的地址的方式。主存储装置中的一些包括永久分配的存储位置。主存储装置为系统提供数据的可直接寻址的快速存取存储。数据和程序两者在它们可以被处理之前例如从输入设备加载到主存储装置中。
主存储装置可包括一个或多个更小、更快访问的缓冲存储器,有时称为高速缓存。高速缓存可以在物理上与CPU或I/O处理器相关联。不同存储介质的物理构造和使用的除了性能上的影响,一般可能是被执行的程序无法看到的。
可针对指令和针对数据操作数维持单独的高速缓存。高速缓存内的信息可维持在称为高速缓存块或高速缓存行的完整边界上的连续字节中。模型可提供EXTRACT CACHEATTRIBUTE指令,其返回以字节计的高速缓存行的大小。模型还可提供PREFETCH DATA和PREFETCH DATA RELATIVE LONG指令,其实现存储装置到数据或指令高速缓存中的预取或数据从高速缓存的释放。
存储装置可被视为长的水平位串。对于大多数操作而言,对存储装置的访问可按从左到右的顺序进行。位串被细分为八个位的单位。这八位的单位被称为字节,其是所有信息格式的基本构建块。存储装置中的每一字节位置可由唯一非负整数标识,其为字节位置的地址,也称为字节地址。相邻字节位置可具有连续地址,从左边的0开始且以从左到右的顺序继续。地址是无符号二进制整数,例如可以是24、31或64位的。
在存储器与CPU之间一次传输一个字节或一组字节的信息。除非另外指定,否则在例如中,存储器中的字节群组由群组的最左边字节寻址。组中的字节数由要执行的操作暗示或明确指定。当在CPU操作中使用时,一组字节被称为字段(field)。在每一组字节内,例如,在中,位按从左到右的顺序来编号。在中,最左边的位有时被称为“高阶”位,最右边的位被称为“低阶”位。然而,位数不是存储地址。只有字节是可寻址的。为了对存储装置中的字节的单个位进行操作,可以访问整个字节。字节中的位可在例如z/Architecture中从左到右编号为0到7。地址中的位对于24位地址来说可以编号为8-31或40-63,或对于31位地址来说可以编号为1-31或33-63;对于64位地址来说,它们被编号为0-63。在多个字节的任何其他定长格式内,组成该格式的位可以从0开始连续地编号。为了错误检测的目的,并且优选地为了校正,一个或多个校验位可以与每个字节或一组字节一起传输。这样的校验位由机器自动生成,并且不能由程序直接控制。存储容量以字节数表示。当存储操作数字段的长度由指令的操作代码暗示时,所述字段被称为具有固定长度,其可为一字节、两字节、四字节、八字节或十六字节。对于一些指令可以暗示较大的字段。当存储操作数字段的长度未被暗示但被明确陈述时,该字段被称为具有可变长度。可变长度操作数的长度可以以一个字节的增量或一些指令的增量、以两个字节的倍数或其他倍数变化。当将信息放置在存储装置中时,仅替换包括在指定字段中的那些字节位置的内容,即使到存储装置的物理路径的宽度可能大于正被存储的字段的长度。
某些信息单元将在存储装置中的完整边界上。当信息的存储地址是以字节为单位的单位长度的倍数时,边界被称为信息单位的整数。完整边界上的2、4、8和16字节的字段都有特殊名称。半字是两字节边界上的两个连续字节的组,是指令的基本建构块。字是在四字节边界上的四个连续字节的组。双字是在八字节边界上的八个连续字节的组。四字是十六字节边界上的十六个连续字节的组。当存储地址指定半字、字、双字和四字时,地址的二进制表示分别含有一个、两个、三个或四个最右边的零位。指令是要在两字节积分边界上。大多数指令的存储操作数没有边界对准要求。
在实现用于指令和数据操作数的独立高速缓存的设备上,如果程序存储到随后从其获取指令的高速缓存行中,则会经历显著的延迟,而不管该存储是否更改随后获取的指令。
在一个实施例中,本发明可以由软件实现,该软件有时称为许可内部代码、固件、微代码、毫代码、微微代码等,其中任一者将符合本发明。参见图16,可以从诸如CD-ROM驱动器、磁带驱动器或硬盘驱动器的长期存储介质设备411访问体现本发明的软件程序代码。软件程序代码可以体现在用于数据处理系统的各种已知介质中的任一种上,诸如磁盘、硬盘驱动器或CD-ROM上。代码可以在这样的介质上分发,或者可以通过连接到其他计算机系统的网络410从计算机存储器402或一个计算机系统的存储装置分发到用户,以便由这样的其他系统的用户使用。
软件程序代码可以包括操作系统,其控制不同计算机组件和一个或多个应用程序的功能和交互。程序代码可以从存储介质设备411分页到相对高速的计算机存储器402,在此可用于由处理器401处理。可以使用用于在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件代码的众所周知的技术和方法。当创建并存储在有形介质(包括但不限于电子存储器模块(RAM)、闪存、致密盘(CD)、DVD、磁带)上时,程序代码可以被称为“计算机程序产品”。计算机程序产品介质可以是可由优选地位于计算机系统中的处理电路读取的,以便由处理电路执行。
图17示出可在其中实施本发明的实施例的代表性工作站或服务器硬件系统。图17的系统420包括代表性基本计算机系统421,诸如个人计算机、工作站或服务器,包括可选的外围设备。基本计算机系统421包括一个或多个处理器426和用于根据已知技术连接并实现处理器426与系统421的其他组件之间的通信的总线。总线将处理器426连接到存储器425和长期存储器427,长期存储器427可包括硬盘驱动器(包括例如磁介质、CD、DVD和闪存存储器中的任一个)或磁带驱动器。系统421也可包括用户接口适配器,其经由总线将微处理器426连接到一个或多个接口设备,诸如键盘424、鼠标423、打印机/扫描仪430和/或其他接口设备,接口设备可以是任何用户接口设备,诸如触摸屏、数字化输入板等。总线还经由显示适配器将显示设备422(诸如LCD屏幕或监视器)连接到微处理器426。
系统421可以通过能够与网络429通信428的网络适配器与其他计算机或计算机网络通信。示例网络适配器是通信信道、令牌环、以太网或调制解调器。或者,系统421可以使用无线接口(例如蜂窝数字分组数据(CDPD)卡)进行通信。系统421可以与局域网(LAN)或广域网(WAN)中的这样的其他计算机相关联,或者系统421可以是与另一计算机等一起在客户端/服务器布置中的客户端。
图18示出了可以实施本发明的实施方式的数据处理网络440。数据处理网络440可包括多个单独的网络,诸如无线网络和有线网络,其中的每一个可包括多个单独的工作站441、442、443、444。另外,如本领域技术人员将意识到的,可以包括一个或多个LAN,其中LAN可以包括耦合到主机处理器的多个智能工作站。
仍然参考图18,网络还可以包括可以访问数据储存库并且还可以从工作站445直接访问的大型计算机或服务器,如网关计算机(例如,客户端服务器446)或应用服务器(例如,远程服务器448)。网关计算机446可以用作进入每个单独网络的进入点。当将一个联网协议连接到另一个时,可能需要网关。网关446可以优选地通过通信链路耦合到另一网络,例如互联网447。网关446还可以使用通信链路直接耦合到一个或多个工作站441、442、443、444。可以利用可从国际商业机器公司获得的IBM eServerTMSystem服务器来实现网关计算机。
同时参考图17和图18,可以体现本发明的软件编程代码可以由系统420的处理器426从长期存储介质427(如CD-ROM驱动器或硬盘驱动器)访问。软件编程代码可以体现在用于数据处理系统的各种已知介质中的任一种上,诸如磁盘、硬盘驱动器或CD-ROM上。代码可以在这样的介质上分发,或者可以通过连接到其他计算机系统的网络从一个计算机系统的计算机存储器402或存储装置分发到用户,以便由这样的其他系统的用户使用。
或者,编程代码可体现在存储器425中,且由处理器426使用处理器总线存取。这样的编程代码可以包括操作系统,其控制不同计算机组件和一个或多个应用程序432的功能和交互。程序代码可从存储介质427分页到高速存储器425,在此,程序代码可用于由处理器426处理。可以使用用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的众所周知的技术和方法。
处理器最容易获得的高速缓存,即,其可比处理器的其他高速缓存快且小,为最低高速缓存,也称为L1或一级高速缓存,主存储器为最高级缓存,如果有n级,主存储器亦称Ln级的,例如n=3,则称为L3级的。最低级高速缓存可以被划分成指令高速缓存和数据高速缓存。指令高速缓存亦称I高速缓存,其保存待执行的机器可读指令。数据高速缓存亦称D高速缓存,其保存数据操作数。
参照图19,描绘了处理器426的示例性处理器实施例。可采用一级或多级高速缓存453来缓存存储器块,以便改进处理器性能。高速缓存453是保存可能被使用的存储器数据的高速缓存行的高速缓冲器。高速缓存行可以例如为64、128或256字节的存储器数据。可采用单独的高速缓存来高速缓存指令和高速缓存数据。高速缓存一致性(即,存储器和高速缓存中的行的副本的同步)可以由不同合适的算法(例如,“侦听”算法)提供。处理器系统的主内存存储器425可以被称为高速缓存。在具有4个级的高速缓存453的处理器系统中,主存储器425有时被称为5级(L5)高速缓存,因为它可以更快并且仅保存对计算机系统可用的非易失性存储器的一部分。主存储器425“缓存”由操作系统分页进出主存储器425的数据页。
程序计数器(指令计数器)461跟踪要执行的当前指令的地址。处理器中的程序计数器为64位,且可截断为31或24位以支持先前寻址限制。程序计数器可体现在计算机的程序状态字(PSW)中,使得其在上下文切换期间持续。因此,具有程序计数器值的进行中的程序可能被例如操作系统中断,从而导致从程序环境到操作系统环境的上下文切换。程序的PSW在程序不活动时保持程序计数器值,在操作系统正在执行时使用操作系统的PSW中的程序计数器。程序计数器可递增等于当前指令的字节数目的量。精简指令集计算(RISC)指令可以是固定长度的,而复杂指令集计算(CISC)指令可以是可变长度的。的指令为2、4或6字节长的CISC指令。例如,可以通过上下文切换操作或者分支指令的分支采取(branch taken)操作来修改程序计数器461。在上下文切换操作中,将当前程序计数器值连同关于正执行的程序的其他状态信息(例如,条件代码)一起保存在程序状态字中,然后装入指向待执行的新程序模块的指令的新程序计数器值。可以执行分支采取操作,以便允许程序通过将分支指令的结果装入程序计数器461中来在程序内做出决策或循环。
可以采用指令获取单元455来代表处理器426获取指令。获取单元获取“下一顺序指令”、分支采取指令的目标指令、或者上下文切换之后的程序的第一条指令。现代指令获取单元可采用预取技术来基于可能使用预取指令的可能性推测性地预取指令。例如,获取单元可获取包含下一顺序指令和进一步的顺序指令的额外字节的16字节的指令。
所获取指令可接着由处理器426执行。根据实施例,可将所获取的指令从获取单元传递到分派单元456。分派单元对指令进行解码并将关于解码后的指令的信息转发到适当单元457、458、460。执行单元457可以接收关于来自指令获取单元455的解码的算术指令的信息,并可以根据指令的操作码对操作数执行算术运算。优选地可以从存储器425、架构化寄存器459或从正在执行的指令的立即字段向执行单元457提供操作数。要存储执行的结果时,可以将其存储在存储器425、寄存器459中或诸如控制寄存器、PSW寄存器之类的其他机器硬件中。
处理器426可以包括一个或多个单元457、458、460,用于执行指令的功能。参见图20A,执行单元457可以通过接口逻辑471与架构化通用寄存器459、解码/分派单元456、加载/存储单元460以及其它465处理器单元进行通信。执行单元457可以采用若干寄存器电路467、468、469来保持算术逻辑单元(ALU)466所操作的信息。ALU执行诸如加、减、乘和除的算术运算以及诸如And(与)、Or(或)、异或(XOR)、旋转和移位的逻辑函数。优选地,ALU可以支持依赖于设计的专门操作。其他电路可提供包括例如条件代码和恢复支持逻辑的其他架构化设施472。ALU操作的结果可保存在输出寄存器电路470中,输出寄存器电路470被配置得将结果转发到各种其他处理功能。处理器单元的布置方式很多,本说明书仅旨在提供对一个实施例的代表性理解。
加法(ADD)指令例如可在具有算术和逻辑功能的执行单元457中执行,而浮点指令例如将在具有专门浮点能力的浮点执行单元中执行。优选地,执行单元通过对由指令标识的操作数执行操作码定义的函数来对操作数进行操作。例如,加法指令可以由执行单元457对在由指令的寄存器字段标识的两个寄存器459中找到的操作数执行。
执行单元457对两个操作数执行算术加法并且将结果存储在第三操作数中,其中,第三操作数可以是第三寄存器或者是两个源寄存器的其中之一。执行单元优选地利用算术逻辑单元(ALU)466,该算术逻辑单元能够执行诸如移位、旋转和XOR之类的各种逻辑函数,以及包括加法、减法、乘法、除法中的任一种的各种代数函数。一些ALU 466被设计用于标量运算,一些ALU 466被设计用于浮点。取决于架构,数据可为大端序的(big endian)(其中最低有效字节位于最高字节地址)或小端序的(little endian)(其中最低有效字节位于最低字节地址)。为大端序的。有符号字段可以是符号和大小、1的补码或2的补码,这取决于架构。2的补数可能是有利的,因为ALU不需要设计减法功能,这是因为2的补数中的负值或正值只需要ALU内的加法。数字可以用简写来描述,其中,12位的字段定义4,096字节块的地址,并描述为例如4K字节(千字节)块。
参见图20B,用于执行分支指令的分支指令信息可以被发送到分支单元458,分支单元458通常采用分支预测算法(诸如分支历史表482)来在其他条件操作完成之前预测分支的结果。在条件操作完成之前,当前分支指令的目标将被提取并推测性地执行。当条件操作完成时,基于条件操作的条件和推测的结果,推测执行的分支指令要么完成要么被丢弃。分支指令可以测试条件代码,并且,如果条件代码满足分支指令的分支要求,那么分支指令可分支到目标地址,可基于若干数字(包含例如在指令的寄存器字段或立即字段中找到的数字)来计算目标地址。分支单元458可以采用具有多个输入寄存器电路475、476、477和输出寄存器电路480的ALU474。例如,分支单元458可以与通用寄存器459、解码/分派单元456或其他电路473通信。
一组指令的执行可出于多种原因而中断,所述原因包含(例如)由操作系统发起的上下文切换、引起上下文切换的程序异常或错误、引起上下文切换的I/O中断信号或多线程环境中的多个程序的多线程活动。优选地,上下文切换动作保存关于当前执行的程序的状态信息,然后加载关于被调用的另一程序的状态信息。状态信息可以保存在例如硬件寄存器中或存储器中。状态信息优选地包括指向要执行的下一指令的程序计数器值、条件代码、存储器转换信息和架构化寄存器内容。上下文切换活动可以由硬件电路、应用程序、操作系统程序或固件代码(例如)实行。微代码、微微代码或许可内部代码(LIC),单独地或组合地。
处理器根据指令定义的方法来访问操作数。指令可以使用指令的一部分的值来提供立即操作数,可以提供明确指向通用寄存器或专用寄存器(诸如浮点寄存器)的一个或多个寄存器字段。指令可以利用由操作码字段标识的隐式寄存器作为操作数。指令可以利用操作数的存储器位置。操作数的存储器位置可以由寄存器、立即字段或者寄存器与立即字段的组合来提供,寄存器与立即字段的组合如长位移工具(longdisplacement facility)所例示,其中,其中,指令定义一个基址寄存器、一个索引寄存器和一个立即数字段,即位移字段,将它们一起相加来提供操作数的内存地址。除非另有指示,否则本文中的位置可以暗示为主存储器中的位置。
参照图20C,处理器使用加载/存储单元460来访问存储器。加载/存储单元460可以通过获得目标操作数在存储器453中的地址并将操作数加载到寄存器459或另一存储器453位置中来执行加载操作,或者可以通过获得存储器453中的目标操作数的地址并将从寄存器459或另一存储器453位置获得的数据存储在存储器453中的目标操作数位置中来执行存储操作。加载/存储单元460可以是推测性的,并且可以以相对于指令序列无序的顺序访问存储器,然而,加载/存储单元460将保持程序看起来是在按顺序执行指令。加载/存储单元460可以与通用寄存器459、解码/分派单元456、高速缓存/存储器接口453或其他元件483通信,并且包括各种寄存器电路、ALU 485和控制逻辑490,以计算存储地址且提供流水线排序以保持有序操作。一些操作可能是乱序的,但是加载/存储单元提供使乱序操作对程序而言表现为已按顺序执行的功能。
优选地,应用程序“看到”的地址通常被称为虚拟地址。虚拟地址有时亦称“逻辑地址”和“有效地址”。这些虚拟地址之所以是虚拟的,是因为它们通过多种动态地址转换(DAT)技术中的一种技术被重定向到物理的存储器位置。动态地址转换技术包括但不限于,简单地用偏址值为虚拟地址加前缀,经由一个或多个转换表来转换虚拟地址,转换表优选地包括单独的段(segment)表、单独的页表或段表与页表的组合的至少一个,优选地,段表具有指向页表的表项。在中提供一种转换层次结构,其包含区域(region)第一表、区域第二表、区域第三表、段表以及可选的页表。地址转换的性能常常通过利用括将虚拟地址映射到相关联的物理存储器位置的条目的转换后备缓冲器(TLB)而得到改进。当DAT使用转换表转换虚拟地址时,条目被创建。虚拟地址的后续使用然后可以利用快速TLB的条目而非慢速顺序转换表访问。TLB内容可以由包括最近最少使用(LRU)的各种替换算法来管理。
多处理器系统的每个处理器都有责任保持共享资源(例如,I/O、高速缓存、TLB和存储器)的互锁以实现一致性(coherency)。所谓的“侦听”技术可以用于维持高速缓存一致性。在侦听环境中,为了便于共享,可以将每个高速缓存行标记为处于共享状态、独占状态、改变状态、无效状态等中的任何一个。
I/O单元454可为处理器提供用于附接到外围装置(包含例如磁带、光盘、打印机、显示器和网络)的装置。I/O单元通常由软件驱动程序提交给计算机程序。在诸如的System的主机中,通道适配器和开放系统适配器是在操作系统和外围设备之间提供通信的主机的I/O单元。
进一步,其他类型的计算机系统可受益于本发明的一个或多个方面。作为示例,计算机系统可包括仿真器,例如软件或其他仿真机制,其中仿真包括例如指令执行、架构化功能(诸如地址转换)和架构化寄存器的特定架构或者其子集例如在具有处理器和存储器的本机计算机系统上被仿真。在这样的环境中,仿真器的一个或多个仿真功能可以实现本发明的一个或多个方面,即使执行仿真器的计算机可以具有与正被仿真的能力不同的架构。例如,在仿真模式中,正在被仿真的特定指令或操作可以被解码,并且可以构建适当的仿真功能以实现单独的指令或操作。
在仿真环境中,主机计算机可以例如包括:用于存储指令和数据的存储器;指令获取单元,用于从存储器获取指令并且可选地为所获取的指令提供本地缓冲;指令解码单元,用于接收所获取的指令并且用于确定已经被获取的指令的类型;以及执行指令的指令执行单元。执行可包括将数据从存储器加载到寄存器中、将数据从寄存器存储回到存储器、和/或执行如由解码单元确定的某种类型的算术或逻辑操作。例如,每个单元都可以在软件中实现。由这些单元执行的操作可以被实现为仿真器软件内的一个或多个子例程。
更具体来说,在大型主机中,程序员(例如“C”程序员)例如通过编译器应用来使用架构化机器指令。存储在存储介质中的这些指令可以在服务器本机执行,或者在执行其他架构的机器中执行。它们可以在现有的和未来的大型机服务器和在的其他机器(例如,Power Systems服务器和System服务器)中进行仿真。它们可以在使用由AMDTM等制造的硬件的各种各样的机器上运行Linux的机器中执行。除了在下在该硬件上执行之外,可以使用Linux以及使用由Hercules、UMX或FSI(Fundamental Software,Inc)进行仿真的机器,这些机器通常以仿真模式执行。在仿真模式下,仿真软件由本机处理器执行,以对仿真处理器的架构进行仿真。
本机处理器可以执行包括固件或本机操作系统的仿真软件来进行对仿真处理器的仿真。仿真软件负责获取和执行仿真处理器架构的指令。仿真软件维护仿真程序计数器以跟踪指令边界。仿真软件可一次获取一个或多个仿真机器指令,并将该一个或多个仿真机器指令转换成相应的一组本机机器指令以供本机处理器执行。可以高速缓存这些转换了的指令,使得可以实现更快的转换。尽管如此,仿真软件将维护仿真处理器架构的架构规则,以便确保为仿真处理器编写的操作系统和应用程序正确地操作。此外,仿真软件将提供由仿真处理器架构标识的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、包括例如段表和页表的动态地址转换函数、中断机制、上下文切换机制、一天中的时间(TOD)时钟以及到I/O子系统的架构化接口,使得设计用于在仿真处理器上运行的操作系统或应用程序可以在具有仿真软件的本机处理器上运行。
对正在仿真的特定指令进行解码,并调用子例程来执行单个指令的功能。例如,在“C”子例程或驱动程序中,或者在为特定硬件提供驱动程序的某个其它方法中,实现对仿真处理器的功能进行仿真的仿真软件功能。
在图21中,提供了模拟主机架构的主机计算机系统400’的仿真主机计算机系统492的示例。在仿真主机计算机系统492中,主机处理器(即,CPU)491是仿真主机处理器或虚拟主机处理器,并且包括具有与主机计算机400’的处理器491的本机指令集架构不同的本机指令集架构的仿真处理器493。仿真主机计算机系统492具有仿真处理器493可访问的存储器494。在示例性实施例中,存储器494被划分成主机计算机存储器496部分和仿真例程存储器497部分。主机计算机存储器496对按照主机计算机架构的仿真主机计算机492的程序是可用的。仿真处理器493执行除了仿真处理器491之外的架构的架构指令集的本机指令,从仿真例程存储器497获得的本机指令,并且可以通过使用在序列中获得的一个或多个指令来从主机存储器496中的程序访问用于执行的主机指令,并且访问/解码可以对所访问的主机指令进行解码的例程,以确定用于模拟所访问的主机指令的功能的本机指令执行例程。为主机系统400’的架构定义的其他设施可以由架构化设施例程来仿真,包括诸如通用寄存器、控制寄存器、动态地址转换和I/O子系统支持以及处理器高速缓存之类的设施。仿真例程还可以利用仿真处理器493中可用的功能(例如通用寄存器和虚拟地址的动态转换)来改进仿真例程的性能。还可提供专用硬件和卸载引擎以协助处理器493模拟主机400′的功能。
可以理解,只要组合的实施例不是相互排斥的,就可以组合本发明的一个或多个上述实施例。诸如“第一”和“第二”的序数,在本文中用于指示分配有相同名称的不同元素,但不一定确立各个元素的任何顺序。
参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或介质),计算机可读程序指令用于致使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构之类的机械编码设备,以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括诸如Smalltalk、C++之类的面向对象的编程语言,以及诸如‘C’编程语言或类似的编程语言的常规过程式编程语言。计算机可读程序指令可以完全地在用户计算机系统”的计算机上执行、部分地在用户计算机系统”的计算机上执行、作为独立的软件包执行、部分在用户计算机系统”的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机系统的计算机,或者可连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的方面。
本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机、可编程数据处理装置,和/或其他设备以特定方式起作用的计算机可读存储介质中,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可加载到计算机、其他可编程数据处理设备或其他设备上,使得在计算机、其他可编程数据处理设备或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程数据处理设备或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
上述特征可以有以下各项可能的组合:
1.一种用于向第一客户机操作系统提供中断信号的方法,第一客户机操作系统是用计算机系统的被分配由第一客户机操作系统使用的多个处理器中的一个或多个处理器来执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括与总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,
被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,
使用第二客户机操作系统作为托管第一客户机操作系统的主机来实现第一客户机操作系统,
存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,
存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,
该方法包括:
由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,
由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,
如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,
否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的第一中断信号待处理。
2.第1项的方法,第二存储器区段进一步包括客户机中断表,客户机中断表包括第一组客户机中断表条目,第一组客户机中断表条目包括定向中断摘要向量的定向中断摘要指示符中的每一个的定向中断摘要地址指示符,其中,相应定向中断摘要地址指示符指示相应定向中断摘要指示符在第二存储器区段中的存储器地址,
使用客户机中断表来实现第一组转发向量条目中的转发向量条目的所述分配,其中第一组转发向量条目中的每一个转发向量被分配第一组客户机中断表条目中的一个客户机中断表条目,相应客户机中断表条目的定向中断摘要地址指示符指示相应转发向量条目被分配给的定向中断摘要的存储器地址。
3.前述各项任何之一的方法,转发向量条目各自以单个位来实现。
4.前述各项任何之一的方法,定向中断摘要向量以存储器中的连续区域来实现。
5.前述各项任何之一的方法,定向中断摘要指示符各自以单个位来实现。
6.前述各项任何之一的方法,存储器进一步包括中断表,中断表具有每个中断目标ID的中断表条目,中断表条目中的每个中断表条目包括指示相应转发向量条目在第二存储器区段中的存储器地址的转发向量条目地址指示符,
该方法进一步包括:
由总线附接设备检索中断表中的分配给所接收的中断目标ID的中断表条目的副本,所检索的副本包括指示第二存储器区段中的分配给所接收的中断目标ID的转发向量条目的存储器地址的转发向量条目地址指示符,
由总线附接设备使用由所检索的中断表条目的副本所包含的转发向量条目地址指示符来选择分配给所接收的中断目标ID的转发向量条目。
7.第6项的方法,所检索的中断表条目的副本还包括所接收的中断目标ID到逻辑处理器ID的映射,所述方法进一步包括:由总线附接设备使用中断表条目的副本所包括的映射来将所接收的中断目标ID转换为逻辑处理器ID。
8.第6至第7项的方法,所检索的中断表条目的副本进一步包括指示由中断目标ID标识的第一目标处理器是否被调度供由第一客户机操作系统使用的运行指示符,所述方法进一步包括:由总线附接设备使用由中断表条目的副本包括的运行指示符来检查第一目标处理器是否被调度供由第一客户机操作系统使用。
9.第8项的方法,运行指示符以单个位来实现。
10.第6至第9项的方法,中断表由第二存储器区段包括。
11.第6至第9的方法,所检索的中断表条目的副本还包括第一逻辑分区ID和第一客户机中断状态区域地址指示符,第一逻辑分区ID标识第一客户机操作系统被分配到的逻辑分区,第一客户机中断状态区域地址指示符指示第二存储器区段中的分配给第一客户机操作系统的客户机中断状态区域的存储器地址。
12.第6至第10项的方法,该方法进一步包括由总线附接设备从设备表中检索设备表条目的副本,设备表条目包括指示中断表的存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来检索中断表条目的第一副本。
13.第12项的方法,设备表存储在存储器的第三存储器区段中,第三存储器区段受保护免受第一和第二操作系统的访问。
14.第13项的方法,所检索的设备表条目的副本进一步包括第二逻辑分区ID和第二客户机中断状态区域地址指示符,第二逻辑分区ID标识第一客户机操作系统被分配到的逻辑分区,第二客户机中断状态区域地址指示符指示第二存储器区段中的分配给第一客户机操作系统的客户机中断状态区域的存储器地址,
所述方法进一步包括由总线附接设备使用由中断表条目提供的第一逻辑分区ID和第一客户机中断状态区域地址指示符的第一组合与由在受保护的第三存储器区段中存储的设备表条目提供的第二逻辑分区ID和第二客户机中断状态区域地址指示符的第二组合的比较,检查在第二客户机操作系统可访问的第二存储器区段中存储的中断表条目未被第二客户机操作系统改变,第一组合与第二组合的匹配表明中断表条目未改变。
15.第14项的方法,设备表条目进一步包括标识客户机操作系统被分配到的逻辑分区的逻辑分区ID,由总线附接设备转发第一中断信号进一步包括与第一中断信号一起转发逻辑分区ID。
16.第12至第15项的方法,设备表条目进一步包括标识第一中断信号被分配到的中断子类的中断子类ID,由总线附接设备转发第一中断信号进一步包括与第一中断信号一起转发中断子类ID。
17.前述各项任何之一的方法,第二存储器区段进一步包括分配给相应中断目标ID的每个中断目标ID的第一定向中断信号向量,每个定向第一中断信号向量包括分配给第一总线连接模块的每个第一总线连接模块的第一中断信号指示符,每个定向第一中断信号向量指示是否存在由第一总线连接模块发布且寻址到相应中断目标ID的第一中断信号待处理,
该方法进一步包括:
由总线附接设备选择分配给第一中断信号所寻址的中断目标ID的定向第一中断信号向量,
由总线附接设备在所选择的定向第一中断信号向量中选择分配给发布第一中断信号的第一总线连接模块的定向第一中断信号指示符,
由总线附接设备更新所选择的定向第一中断信号指示符,使得所更新的定向第一中断信号指示符指示存在由第一总线连接模块发布且寻址到相应中断目标ID的第一中断信号待处理。
18.前述各项任何之一的方法,第一中断信号是以包括目标处理器的中断目标ID的消息信号中断的形式接收的。
19.前述各项任何之一的方法,第二存储器区段进一步包括中断摘要向量,中断摘要向量具有每个总线连接模块的中断摘要指示符,每个中断摘要指示符被分配给总线连接模块,以指示是否存在由相应的总线连接模块发布的中断信号待处理,
转发向量包括第二组转发向量条目,第二组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示其被分配给的相应中断摘要指示符是否要被更新,以便为第一操作系统指示存在由相应总线连接模块发布的第一中断信号待处理,
该方法进一步包括:
由总线附接设备从第二总线连接模块接收具有中断目标ID的第二中断信号,中断目标ID标识所述处理器中的被分配用于由第一客户机操作系统用作处理第二中断信号的第二目标处理器的一个处理器,
由总线附接设备检查第二目标处理器是否被调度供由第一客户机操作系统使用,
如果第二目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第二目标处理器,将第二中断信号转发到第二目标处理器用于处理,
否则,由总线附接设备使用广播向第一操作系统转发第二中断信号用于处理,所述广播包括由总线附接设备选择第二组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示分配给其的中断摘要指示符要被更新,以便为第一操作系统指示存在由第二总线连接模块发布的第一中断信号待处理。
20.第19项的方法,客户机中断表包括第二组客户机中断表条目,第二组客户机中断表条目包括中断摘要向量的中断摘要指示符中的每一个的中断摘要地址指示符,相应中断摘要地址指示符指示相应中断摘要指示符在第二存储器区段中的存储器地址,
使用客户机中断表来实现第二组转发向量条目中的转发向量条目的所述分配,其中,第二组转发向量条目中的每个转发向量被分配第二组客户机中断表条目中的客户机中断表条目,相应客户机中断表条目的定向中断摘要地址指示符指示相应转发向量条目被分配给的中断摘要指示符的存储器地址。
21.第19至第20项的方法,第二存储器区段进一步包括分配给相应总线连接模块的每个总线连接模块的中断信号向量,每个中断信号向量包括分配给相应总线连接模块的每个中断目标ID的中断信号指示符,每个中断信号向量指示是否存在由相应总线连接模块发布的且寻址到待处理的相应中断目标ID的中断信号,
该方法进一步包括:
由总线附接设备选择分配给第二总线连接模块的定向中断信号向量,
由总线附接设备在所选择的中断信号向量中选择分配给第二中断信号所寻址到的中断目标ID的中断信号指示符,
由总线附接设备更新所选择的中断信号指示符,以使得所更新的中断信号指示符指示存在由第二总线连接模块发布的并且寻址到待处理的相应中断目标ID的中断信号。
22.前述各项任何之一的方法,第一客户机操作系统是第二虚拟化级的客户机操作系统,并且第二客户机操作系统是第一虚拟化级的客户机操作系统。
23.前述各项任何之一的方法,第一客户机操作系统是第三虚拟化级的客户机操作系统,并且第二客户机操作系统是第二虚拟化级的客户机操作系统。
24.一种用于向第一客户机操作系统提供中断信号的计算机系统,第一客户机操作系统是用计算机系统的被分配由第一客户机操作系统使用的多个处理器中的一个或多个处理器来执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括与总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,
被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器被进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,
使用第二客户机操作系统作为托管第一客户机操作系统的主机来实现第一客户机操作系统,
存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,
存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,
该计算机系统被配置以用于执行一种方法,该方法包括:
由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,
由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,
如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,
否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号待处理。
25.一种用于向第一客户机操作系统提供中断信号的计算机程序产品,第一客户机操作系统使用被分配用于由第一客户机操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,该计算机系统进一步包括一个或多个总线连接模块,该一个或多个总线连接模块经由总线和总线附接设备与该多个处理器可操作地连接,该计算机系统进一步包括与总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,
被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,
使用第二客户机操作系统作为托管第一客户机操作系统的主机来实施第一客户机操作系统,
存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,
存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,
计算机程序产品包括计算机可读非暂时性介质,计算机可读非暂时性介质可由处理电路读取且存储用于由处理电路执行以执行一种方法的指令,该方法包括:
由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,
由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,
如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,
否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的第一中断信号待处理。
Claims (25)
1.一种用于向第一客户机操作系统提供中断信号的方法,第一客户机操作系统是用计算机系统的被分配由第一客户机操作系统使用的多个处理器中的一个或多个处理器来执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括与总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,
被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,
使用第二客户机操作系统作为托管第一客户机操作系统的主机来实现第一客户机操作系统,
存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,
存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,
该方法包括:
由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,
由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,
如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的所述逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,
否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的第一中断信号待处理。
2.根据权利要求1所述的方法,第二存储器区段进一步包括客户机中断表,客户机中断表包括第一组客户机中断表条目,第一组客户机中断表条目包括定向中断摘要向量的定向中断摘要指示符中的每一个的定向中断摘要地址指示符,其中,相应定向中断摘要地址指示符指示相应定向中断摘要指示符在第二存储器区段中的存储器地址,
使用客户机中断表来实现第一组转发向量条目中的转发向量条目的所述分配,其中第一组转发向量条目中的每一个转发向量被分配第一组客户机中断表条目中的一个客户机中断表条目,相应客户机中断表条目的定向中断摘要地址指示符指示相应转发向量条目被分配给的定向中断摘要的存储器地址。
3.根据权利要求1所述的方法,转发向量条目各自以单个位来实现。
4.根据权利要求1所述的方法,定向中断摘要向量以存储器中的连续区域来实现。
5.根据权利要求1所述的方法,定向中断摘要指示符各自以单个位来实现。
6.根据权利要求1所述的方法,存储器进一步包括中断表,中断表具有每个中断目标ID的中断表条目,中断表条目中的每个中断表条目包括指示相应转发向量条目在第二存储器区段中的存储器地址的转发向量条目地址指示符,
该方法进一步包括:
由总线附接设备检索中断表中的分配给所接收的中断目标ID的中断表条目的副本,所检索的副本包括指示第二存储器区段中的分配给所接收的中断目标ID的转发向量条目的存储器地址的转发向量条目地址指示符,
由总线附接设备使用由所检索的中断表条目的副本所包含的转发向量条目地址指示符来选择分配给所接收的中断目标ID的转发向量条目。
7.根据权利要求6所述的方法,所检索的中断表条目的副本还包括所接收的中断目标ID到逻辑处理器ID的映射,所述方法进一步包括:由总线附接设备使用中断表条目的副本所包括的所述映射来将所接收的中断目标ID转换为逻辑处理器ID。
8.根据权利要求6所述的方法,所检索的中断表条目的副本进一步包括指示由中断目标ID标识的第一目标处理器是否被调度供由第一客户机操作系统使用的运行指示符,所述方法进一步包括:由总线附接设备使用由中断表条目的副本包括的运行指示符来检查第一目标处理器是否被调度供由第一客户机操作系统使用。
9.根据权利要求8所述的方法,运行指示符以单个位来实现。
10.根据权利要求6所述的方法,中断表由第二存储器区段包括。
11.根据权利要求6所述的方法,所检索的中断表条目的副本还包括第一逻辑分区ID和第一客户机中断状态区域地址指示符,第一逻辑分区ID标识第一客户机操作系统被分配到的逻辑分区,第一客户机中断状态区域地址指示符指示第二存储器区段中的分配给第一客户机操作系统的客户机中断状态区域的存储器地址。
12.根据权利要求6所述的方法,该方法进一步包括由总线附接设备从设备表中检索设备表条目的副本,设备表条目包括指示中断表的存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来检索中断表条目的第一副本。
13.根据权利要求12所述的方法,设备表存储在存储器的第三存储器区段中,第三存储器区段受保护免受所述第一和第二操作系统的访问。
14.根据权利要求13所述的方法,所检索的设备表条目的副本进一步包括第二逻辑分区ID和第二客户机中断状态区域地址指示符,第二逻辑分区ID标识第一客户机操作系统被分配到的逻辑分区,第二客户机中断状态区域地址指示符指示第二存储器区段中的分配给第一客户机操作系统的客户机中断状态区域的存储器地址,
所述方法进一步包括由总线附接设备使用由中断表条目提供的第一逻辑分区ID和第一客户机中断状态区域地址指示符的第一组合与由在受保护的第三存储器区段中存储的设备表条目提供的第二逻辑分区ID和第二客户机中断状态区域地址指示符的第二组合的比较,检查在第二客户机操作系统可访问的第二存储器区段中存储的中断表条目未被第二客户机操作系统改变,第一组合与第二组合的匹配表明中断表条目未改变。
15.根据权利要求14所述的方法,设备表条目进一步包括标识客户机操作系统被分配到的逻辑分区的逻辑分区ID,由总线附接设备转发第一中断信号进一步包括与第一中断信号一起转发逻辑分区ID。
16.如权利要求12所述的方法,设备表条目进一步包括标识第一中断信号被分配到的中断子类的中断子类ID,由总线附接设备转发第一中断信号进一步包括与第一中断信号一起转发中断子类ID。
17.根据权利要求1所述的方法,第二存储器区段进一步包括分配给相应中断目标ID的每个中断目标ID的第一定向中断信号向量,每个定向第一中断信号向量包括分配给第一总线连接模块的每个第一总线连接模块的第一中断信号指示符,每个定向第一中断信号向量指示是否存在由第一总线连接模块发布且寻址到相应中断目标ID的第一中断信号待处理,
该方法进一步包括:
由总线附接设备选择分配给第一中断信号所寻址的中断目标ID的定向第一中断信号向量,
由总线附接设备在所选择的定向第一中断信号向量中选择分配给发布第一中断信号的第一总线连接模块的定向第一中断信号指示符,
由总线附接设备更新所选择的定向第一中断信号指示符,使得所更新的定向第一中断信号指示符指示存在由第一总线连接模块发布且寻址到相应中断目标ID的第一中断信号待处理。
18.根据权利要求1所述的方法,第一中断信号是以包括目标处理器的中断目标ID的消息信号中断的形式接收的。
19.根据权利要求1所述的方法,第二存储器区段进一步包括中断摘要向量,中断摘要向量具有每个总线连接模块的中断摘要指示符,每个中断摘要指示符被分配给总线连接模块,以指示是否存在由相应的总线连接模块发布的中断信号待处理,
转发向量包括第二组转发向量条目,第二组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示其被分配给的相应中断摘要指示符是否要被更新,以便为第一操作系统指示存在由相应总线连接模块发布的第一中断信号待处理,
该方法进一步包括:
由总线附接设备从第二总线连接模块接收具有中断目标ID的第二中断信号,中断目标ID标识所述处理器中的被分配用于由第一客户机操作系统用作处理第二中断信号的第二目标处理器的一个处理器,
由总线附接设备检查第二目标处理器是否被调度供由第一客户机操作系统使用,
如果第二目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第二目标处理器,将第二中断信号转发到第二目标处理器用于处理,
否则,由总线附接设备使用广播向第一操作系统转发第二中断信号用于处理,所述广播包括由总线附接设备选择第二组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示分配给其的中断摘要指示符要被更新,以便为第一操作系统指示存在由第二总线连接模块发布的第一中断信号待处理。
20.根据权利要求19所述的方法,客户机中断表包括第二组客户机中断表条目,第二组客户机中断表条目包括中断摘要向量的中断摘要指示符中的每一个的中断摘要地址指示符,相应中断摘要地址指示符指示相应中断摘要指示符在第二存储器区段中的存储器地址,
使用客户机中断表来实现第二组转发向量条目中的转发向量条目的所述分配,其中,第二组转发向量条目中的每个转发向量被分配第二组客户机中断表条目中的客户机中断表条目,相应客户机中断表条目的定向中断摘要地址指示符指示相应转发向量条目被分配给的中断摘要指示符的存储器地址。
21.根据权利要求19所述的方法,第二存储器区段进一步包括分配给相应总线连接模块的每个总线连接模块的中断信号向量,每个中断信号向量包括分配给相应总线连接模块的每个中断目标ID的中断信号指示符,每个中断信号向量指示是否存在由相应总线连接模块发布的且寻址到待处理的相应中断目标ID的中断信号,
该方法进一步包括:
由总线附接设备选择分配给第二总线连接模块的定向中断信号向量,
由总线附接设备在所选择的中断信号向量中选择分配给第二中断信号所寻址到的中断目标ID的中断信号指示符,
由总线附接设备更新所选择的中断信号指示符,以使得所更新的中断信号指示符指示存在由第二总线连接模块发布的并且寻址到待处理的相应中断目标ID的中断信号。
22.根据权利要求1所述的方法,第一客户机操作系统是第二虚拟化级的客户机操作系统,并且第二客户机操作系统是第一虚拟化级的客户机操作系统。
23.根据权利要求1所述的方法,第一客户机操作系统是第三虚拟化级的客户机操作系统,并且第二客户机操作系统是第二虚拟化级的客户机操作系统。
24.一种用于向第一客户机操作系统提供中断信号的计算机系统,第一客户机操作系统是用计算机系统的被分配由第一客户机操作系统使用的多个处理器中的一个或多个处理器来执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括与总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,
被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器被进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,
使用第二客户机操作系统作为托管第一客户机操作系统的主机来实现第一客户机操作系统,
存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,
存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,
该计算机系统被配置以用于执行一种方法,该方法包括:
由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,
由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,
如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,
否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号待处理。
25.一种用于向第一客户机操作系统提供中断信号的计算机程序产品,第一客户机操作系统使用被分配用于由第一客户机操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,该计算机系统进一步包括一个或多个总线连接模块,该一个或多个总线连接模块经由总线和总线附接设备与该多个处理器可操作地连接,该计算机系统进一步包括与总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器ID,
被分配用于由第一客户机操作系统使用的所述多个处理器中的每个处理器进一步被分配由第一客户机操作系统和所述一个或多个第一总线连接模块用于寻址相应处理器的中断目标ID,
使用第二客户机操作系统作为托管第一客户机操作系统的主机来实施第一客户机操作系统,
存储器在分配给第一客户机操作系统的第一存储器区段中包括具有每个中断目标ID的定向中断摘要指示符的定向中断摘要向量,每个定向中断摘要指示符被分配给指示是否存在寻址到相应中断目标ID的待处理的第一中断信号的中断目标ID,
存储器在分配给第二客户机操作系统的第二存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目针对定向中断摘要向量的定向中断摘要指示符中的每一个包括分配给相应定向中断摘要指示符的转发向量条目,每个转发向量条目指示是否要更新其被分配给的相应定向中断摘要指示符,以便为第一操作系统指示存在寻址到相应中断目标ID的待处理的第一中断信号,
计算机程序产品包括计算机可读非暂时性介质,计算机可读非暂时性介质可由处理电路读取且存储用于由处理电路执行以执行一种方法的指令,该方法包括:
由总线附接设备从第一总线连接模块接收带有中断目标ID的第一中断信号,中断目标ID标识所述处理器中被分配由第一客户机操作系统用作处理第一中断信号的第一目标处理器的一个处理器,
由总线附接设备检查第一目标处理器是否被调度供由第一客户机操作系统使用,
如果第一目标处理器被调度用于由第一客户机操作系统使用,则由总线附接设备将所接收的中断目标ID转换为逻辑处理器ID,并且通过用所述转换产生的逻辑处理器ID来直接寻址第一目标处理器,将第一中断信号转发到第一目标处理器用于处理,
否则,总线附接设备使用广播向第一操作系统转发用于处理的第一中断信号,所述广播包括由总线附接设备选择第一组转发向量条目中的被分配给所接收的中断目标ID的转发向量条目,并且更新所选择的转发向量条目,使得所选择的转发向量条目指示被分配了所选择的转发向量条目的定向中断摘要指示符要被更新,以便为第一操作系统指示存在寻址到相应中断目标ID的第一中断信号待处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19157097 | 2019-02-14 | ||
EP19157097.7 | 2019-02-14 | ||
PCT/EP2020/050496 WO2020164818A1 (en) | 2019-02-14 | 2020-01-10 | Directed interrupt for multilevel virtualization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113454589A true CN113454589A (zh) | 2021-09-28 |
Family
ID=65440827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080013920.0A Pending CN113454589A (zh) | 2019-02-14 | 2020-01-10 | 用于多级虚拟化的定向中断 |
Country Status (10)
Country | Link |
---|---|
US (2) | US11138139B2 (zh) |
EP (1) | EP3924818A1 (zh) |
JP (1) | JP7482882B2 (zh) |
CN (1) | CN113454589A (zh) |
AU (1) | AU2020222167B2 (zh) |
BR (1) | BR112021016093A2 (zh) |
CA (1) | CA3130164A1 (zh) |
IL (1) | IL284681B2 (zh) |
TW (1) | TWI731554B (zh) |
WO (1) | WO2020164818A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
WO2020164819A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
WO2020164935A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
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 |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
EP3924817A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt virtualization |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4037723C2 (de) | 1990-11-27 | 1995-04-06 | Siemens Ag | Verfahren zum Übermitteln von an mehreren Datenschnittstellen einer prozessorgesteuerten Einrichtung vorliegenden Informationen an deren Prozessoreinrichtung |
US5848279A (en) | 1996-12-27 | 1998-12-08 | Intel Corporation | Mechanism for delivering interrupt messages |
GB2339035B (en) | 1998-04-29 | 2002-08-07 | Sgs Thomson Microelectronics | A method and system for transmitting interrupts |
US7620955B1 (en) * | 2001-06-08 | 2009-11-17 | Vmware, Inc. | High-performance virtual machine networking |
US7028302B2 (en) | 2002-04-24 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | System and method for automatically tuning a multiprocessor computer system |
US20030204655A1 (en) | 2002-04-24 | 2003-10-30 | Schmisseur Mark A. | Prioritizing vector generation in interrupt controllers |
US7281075B2 (en) | 2003-04-24 | 2007-10-09 | International Business Machines Corporation | Virtualization of a global interrupt queue |
US20050080982A1 (en) | 2003-08-20 | 2005-04-14 | Vasilevsky Alexander D. | Virtual host bus adapter and method |
US7222203B2 (en) | 2003-12-08 | 2007-05-22 | Intel Corporation | Interrupt redirection for virtual partitioning |
US7386640B2 (en) | 2004-12-28 | 2008-06-10 | Intel Corporation | Method, apparatus and system to generate an interrupt by monitoring an external interface |
US8238376B2 (en) | 2005-04-13 | 2012-08-07 | Sony Corporation | Synchronized audio/video decoding for network devices |
US7447820B2 (en) | 2005-09-30 | 2008-11-04 | Intel Corporation | Retargeting of platform interrupts |
US8286162B2 (en) | 2005-12-30 | 2012-10-09 | Intel Corporation | Delivering interrupts directly to a virtual processor |
US9032127B2 (en) | 2006-09-14 | 2015-05-12 | Hewlett-Packard Development Company, L.P. | Method of balancing I/O device interrupt service loading in a computer system |
US20080162762A1 (en) | 2006-12-29 | 2008-07-03 | Gilbert Neiger | Interrupt remapping based on requestor identification |
US7627706B2 (en) | 2007-09-06 | 2009-12-01 | Intel Corporation | Creation of logical APIC ID with cluster ID and intra-cluster ID |
US8453143B2 (en) | 2007-09-19 | 2013-05-28 | Vmware, Inc. | Reducing the latency of virtual interrupt delivery in virtual machines |
US9037768B2 (en) | 2008-04-28 | 2015-05-19 | Hewlett-Packard Development Company, L.P. | Virtual-interrupt-mode interface and method for virtualizing an interrupt mode |
ATE542177T1 (de) | 2008-08-19 | 2012-02-15 | St Microelectronics Rousset | Weiterleitungsverfahren eines unterbrechungssignals direkt an eine virtuelle bearbeitungseinheit in einem system mit einer oder mehreren physischen bearbeitungseinheiten |
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 |
CN101398768B (zh) | 2008-10-28 | 2011-06-15 | 北京航空航天大学 | 一种分布式虚拟机监视器系统的构建方法 |
JP2010113667A (ja) | 2008-11-10 | 2010-05-20 | Renesas Technology Corp | 情報処理装置 |
JP5352848B2 (ja) | 2008-11-28 | 2013-11-27 | 株式会社日立製作所 | 仮想計算機の制御方法及び計算機装置 |
CN101427916B (zh) | 2008-12-05 | 2012-02-22 | 张锦景 | 电生理数据与病理图像监测的移动网络终端装置及方法 |
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 | 株式会社日立製作所 | 計算機システム、割込み中継回路及び割込み中継方法 |
US8635387B2 (en) | 2009-10-09 | 2014-01-21 | Emulex Design & Manufacturing Corporation | Enhanced I/O performance in a multi-processor system via interrupt affinity schemes |
US8566492B2 (en) | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
US20110197004A1 (en) | 2010-02-05 | 2011-08-11 | Serebrin Benjamin C | Processor Configured to Virtualize Guest Local Interrupt Controller |
US8381002B2 (en) | 2010-06-23 | 2013-02-19 | International Business Machines Corporation | Transparently increasing power savings in a power management environment |
US8478922B2 (en) | 2010-06-23 | 2013-07-02 | International Business Machines Corporation | Controlling a rate at which adapter interruption requests are processed |
KR20120042354A (ko) | 2010-10-25 | 2012-05-03 | 한국전자통신연구원 | 위성통신 시스템용 중심국의 이중모드 망동기 장치 및 그 방법 |
CN102184122B (zh) | 2011-05-16 | 2014-04-23 | 曙光信息产业股份有限公司 | 一种龙芯CPU主板bios及中断的实现方法 |
US8495267B2 (en) * | 2010-11-24 | 2013-07-23 | International Business Machines Corporation | Managing shared computer memory using multiple interrupts |
US8612659B1 (en) * | 2010-12-14 | 2013-12-17 | Vmware, Inc. | Hardware interrupt arbitration in virtualized computer systems |
US8601194B2 (en) | 2011-02-08 | 2013-12-03 | Red Hat Israel, Ltd. | On-demand interrupt vector allocation based on activity detection |
JP5737050B2 (ja) | 2011-08-15 | 2015-06-17 | 富士通株式会社 | 情報処理装置、割込み制御方法および割込み制御プログラム |
US8631181B2 (en) * | 2011-09-26 | 2014-01-14 | Oracle International Corporation | Validating message-signaled interrupts by tracking interrupt vectors assigned to devices |
US8874786B2 (en) | 2011-10-25 | 2014-10-28 | Dell Products L.P. | Network traffic control by association of network packets and processes |
US8910158B2 (en) | 2011-12-14 | 2014-12-09 | Intel Corporation | Virtualizing interrupt priority and delivery |
US20130318269A1 (en) * | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Processing structured and unstructured data using offload processors |
US9740549B2 (en) * | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9442870B2 (en) | 2012-08-09 | 2016-09-13 | Freescale Semiconductor, Inc. | Interrupt priority management using partition-based priority blocking processor registers |
US9436626B2 (en) | 2012-08-09 | 2016-09-06 | Freescale Semiconductor, Inc. | Processor interrupt interface with interrupt partitioning and virtualization enhancements |
US9043521B2 (en) | 2012-11-13 | 2015-05-26 | Intel Corporation | Technique for communicating interrupts in a computer system |
US10078603B2 (en) | 2012-11-30 | 2018-09-18 | Red Hat Israel, Ltd. | MSI events using dynamic memory monitoring |
US9940291B2 (en) | 2013-01-29 | 2018-04-10 | Hewlett Packard Enterprise Development Lp | Assigning processors to memory mapped configuration |
US9235538B2 (en) * | 2013-02-07 | 2016-01-12 | Red Hat Israel, Ltd. | Injecting interrupts in virtualized computer systems |
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 |
US9384132B2 (en) | 2013-06-28 | 2016-07-05 | Intel Corporation | Emulated message signaled interrupts in a virtualization environment |
JP6029550B2 (ja) | 2013-07-19 | 2016-11-24 | 株式会社日立製作所 | 計算機の制御方法及び計算機 |
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 |
US9756118B2 (en) | 2014-04-28 | 2017-09-05 | Vmware, Inc. | Virtual performance monitoring decoupled from hardware performance-monitoring units |
US9507740B2 (en) | 2014-06-10 | 2016-11-29 | Oracle International Corporation | Aggregation of interrupts using event queues |
US9772868B2 (en) | 2014-09-16 | 2017-09-26 | Industrial Technology Research Institute | Method and system for handling interrupts in a virtualized environment |
WO2016056060A1 (ja) | 2014-10-07 | 2016-04-14 | 株式会社日立製作所 | 計算機及びベクタの設定方法 |
US9760511B2 (en) * | 2014-10-08 | 2017-09-12 | International Business Machines Corporation | Efficient interruption routing for a multithreaded processor |
US9910699B2 (en) | 2014-10-28 | 2018-03-06 | Intel Corporation | Virtual processor direct interrupt delivery mechanism |
US9697029B2 (en) | 2014-10-30 | 2017-07-04 | Red Hat Israel, Ltd. | Guest idle based VM request completion processing |
US9952987B2 (en) * | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
US9910700B2 (en) | 2015-08-26 | 2018-03-06 | Netapp, Inc. | Migration between CPU cores |
WO2017094132A1 (ja) | 2015-12-02 | 2017-06-08 | 株式会社日立製作所 | 計算機および計算機の制御方法 |
KR102509986B1 (ko) | 2016-03-28 | 2023-03-14 | 삼성전자주식회사 | 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법 |
CN106095578B (zh) | 2016-06-14 | 2019-04-09 | 上海交通大学 | 基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法 |
US10282327B2 (en) | 2017-01-19 | 2019-05-07 | International Business Machines Corporation | Test pending external interruption instruction |
US10210112B2 (en) | 2017-06-06 | 2019-02-19 | International Business Machines Corporation | Techniques for issuing interrupts in a data processing system with multiple scopes |
US20180356964A1 (en) | 2017-06-07 | 2018-12-13 | Sitting Man, Llc | Methods, systems, and computer program products for intergrating configuration, monitoring, and operations |
CN109144679B (zh) | 2017-06-27 | 2022-03-29 | 华为技术有限公司 | 中断请求的处理方法、装置及虚拟化设备 |
US10838760B2 (en) | 2017-11-29 | 2020-11-17 | Nxp Usa, Inc. | Systems and methods for interrupt distribution |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
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 |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
EP3924817A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt virtualization |
WO2020164935A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
WO2020164819A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
-
2020
- 2020-01-10 BR BR112021016093-0A patent/BR112021016093A2/pt unknown
- 2020-01-10 AU AU2020222167A patent/AU2020222167B2/en active Active
- 2020-01-10 CN CN202080013920.0A patent/CN113454589A/zh active Pending
- 2020-01-10 CA CA3130164A patent/CA3130164A1/en active Pending
- 2020-01-10 JP JP2021541145A patent/JP7482882B2/ja active Active
- 2020-01-10 EP EP20700274.2A patent/EP3924818A1/en active Pending
- 2020-01-10 WO PCT/EP2020/050496 patent/WO2020164818A1/en unknown
- 2020-01-10 IL IL284681A patent/IL284681B2/en unknown
- 2020-01-17 TW TW109101665A patent/TWI731554B/zh active
- 2020-02-13 US US16/789,532 patent/US11138139B2/en active Active
-
2021
- 2021-06-25 US US17/358,172 patent/US11822493B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2020164818A1 (en) | 2020-08-20 |
US11822493B2 (en) | 2023-11-21 |
US11138139B2 (en) | 2021-10-05 |
AU2020222167A1 (en) | 2021-05-27 |
IL284681A (en) | 2021-08-31 |
BR112021016093A2 (pt) | 2021-10-26 |
AU2020222167B2 (en) | 2022-09-22 |
IL284681B2 (en) | 2024-03-01 |
IL284681B1 (en) | 2023-11-01 |
TWI731554B (zh) | 2021-06-21 |
US20200264993A1 (en) | 2020-08-20 |
JP2022520523A (ja) | 2022-03-31 |
US20210318973A1 (en) | 2021-10-14 |
CA3130164A1 (en) | 2020-08-20 |
TW202040567A (zh) | 2020-11-01 |
EP3924818A1 (en) | 2021-12-22 |
JP7482882B2 (ja) | 2024-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113439267B (zh) | 具有应变方案的定向中断虚拟化 | |
US11593153B2 (en) | Directed interrupt virtualization with interrupt table | |
JP7459119B2 (ja) | 割り込みテーブルを使用したマルチレベルの仮想化のための有向割り込み方法、システム、プログラム | |
US11249927B2 (en) | Directed interrupt virtualization | |
KR102672582B1 (ko) | 지시된 인터럽트 가상화를 위한 인터럽트 시그널링 | |
US11734037B2 (en) | Directed interrupt virtualization with running indicator | |
US11822493B2 (en) | Directed interrupt for multilevel virtualization | |
CN113454591A (zh) | 具有阻止指示符的定向中断虚拟化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057633 Country of ref document: HK |