CN113412473A - 具有中断表的用于多级虚拟化的定向中断 - Google Patents
具有中断表的用于多级虚拟化的定向中断 Download PDFInfo
- Publication number
- CN113412473A CN113412473A CN202080013440.4A CN202080013440A CN113412473A CN 113412473 A CN113412473 A CN 113412473A CN 202080013440 A CN202080013440 A CN 202080013440A CN 113412473 A CN113412473 A CN 113412473A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- operating system
- target
- processor
- guest operating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Abstract
本发明涉及用于向第一客户操作系统提供中断信号的方法。总线附接设备从总线连接模块接收具有中断目标ID的中断信号,该中断目标ID将被分配以由客户操作系统使用的处理器标识为用于处理中断信号的目标处理器。总线附接设备使用被存储在被分配给托管第一操作系统的第二客户操作系统的存储器区段中的中断表条目来将所接收的中断目标ID转换为目标处理器的逻辑处理器ID,并将中断信号转发到目标处理器以用于处理。目标处理器的逻辑处理器ID被用于直接寻址目标处理器。
Description
背景技术
本公开一般涉及计算机系统内的中断处理,尤其涉及在多处理器计算机系统中处理由总线连接模块产生的中断。
中断用于向处理器发信号通知事件需要处理器的注意。例如,硬件设备(例如,经由总线与处理器连接的硬件设备)使用中断来传达它们需要来自操作系统的注意。在接收处理器当前正在执行某些活动的情况下,该接收处理器可以响应于接收到中断信号而挂起它当前的活动、保存它的状态、以及例如通过执行中断处理程序来处理中断。由于接收而导致的处理器的当前活动的中断仅仅是暂时的。在处理了中断之后,处理器可以恢复它挂起的活动。因此,中断可以通过消除处理器在轮询循环中等待外部事件的无效等待时间来允许性能改进。
在多处理器计算机系统中,可能出现中断路由效率问题。挑战是以高效的方式将由硬件设备(例如总线连接模块)发送的中断信号转发到被分配以由操作系统使用的多个处理器中的处理器。在中断被用于与虚拟机上的客户操作系统通信的情况下,这可能是特别具有挑战性的。管理程序或虚拟机监视器(VMM)创建并运行一个或多个虚拟机,即客户机。虚拟机向在其上执行的客户操作系统提供虚拟操作平台,同时隐藏底层平台的物理特性。使用多个虚拟机允许并行运行多个操作系统。由于在虚拟操作平台上执行,因此,处理器的客户操作系统的视图一般可以不同于处理器的底层(例如物理)视图。客户操作系统使用虚拟处理器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描绘了示例性计算机系统的示意图。
具体实施方式
本发明的各种实施例的描述将出于说明的目的而被呈现,但并不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。本文所使用的术语被选择以最好地解释实施例的原理、对市场上存在的技术的实际应用或技术改进、或使本领域的其他普通技术人员能够理解本文所公开的实施例。
第一级管理程序定义逻辑处理器ID到由在由管理程序提供的虚拟机上运行的客户操作系统使用的第一虚拟处理器ID的第一映射。发送针对第一级客户操作系统的请求(例如包括中断信号)的总线连接模块可使用第一虚拟处理器ID之一作为用于标识该请求的目标处理器的目标ID。根据实施例,代替第一虚拟处理器ID,还可以使用利用第一虚拟处理器ID导出的和/或被明确分配给相应的第一虚拟处理器ID的其他唯一ID。
在第二级管理程序在第一级客户操作系统上运行的情况下,第二级管理程序可提供第二级客户操作系统在其上运行的虚拟机。第二级管理程序还可以定义由托管具有第二级客户操作系统的第二级管理程序的第一级客户操作系统使用的第一虚拟处理器ID到由第二级客户操作系统使用的第二虚拟处理器ID的第二映射。发送针对第二级客户操作系统的请求(例如包括中断信号)的总线连接模块可使用第二虚拟处理器ID之一作为用于标识该请求的目标处理器的目标ID。根据实施例,代替第二虚拟处理器ID本身,也可以使用利用第二虚拟处理器ID导出的和/或被明确分配给相应的第二虚拟处理器ID的其他唯一ID。
根据实施例,总线连接模块(例如PCIe功能)如果没有被分配给第一级客户机,则可被分配给正好一个第二级客户机。
实施例可以具有最小化对现有的多级管理程序实现的影响的有益效果。
实施例可具有使总线附接设备能够直接寻址目标处理器的有益效果。因此,通过发出总线连接模块选择目标处理器ID,中断信号可以以多处理器计算机系统的特定处理器(即目标处理器)为目标。例如,处理器可被选择作为中断信号的目标处理器,该处理器先前已经执行了与中断相关的活动。由同一处理器将中断信号处理为相应的活动可以导致性能优势,因为在同一处理器也处理中断信号的情况下,在该中断的上下文中的所有数据可能已经对处理器可用和/或被存储在本地高速缓存中,使得能够快速访问相应的处理器而不需要大量的高速缓存业务。
因此,可以避免中断信号的广播,对于该广播,从性能的观点来看,例如高速缓存流量最小化,不能保证将最后处理中断的处理器是最适合于该任务的。不是将中断信号提供给所有处理器,其中每个处理器试图处理它而一个处理器获胜,而是中断信号可以被直接提供给目标处理器,从而提高中断信号处理的效率。
实施例可以具有提供用于多级虚拟化的转发机制以支持直接中断转发以及广播的有益效果。
实施例可以具有被分配给第二级客户操作系统的中断表被存储在被分配给第一级客户操作系统的存储器区段中的有益效果。
根据实施例,被分配给第一级客户操作系统的中断表被存储在存储器的内部区段(也被称为硬件系统区域(HSA),其是被保留以由硬件使用的存储器区域)中。HSA可以包括固定大小并与客户购买的存储器(即,可分配给主机和/或客户操作系统的存储器)隔开。
根据实施例,可以按用于标识处理器的中断目标ID来需要中断表条目。因此,存储中断表所需的存储量与中断目标ID数量相关,并且可以增加到使用HSA难以处理的大小。
实施例还可以提供安全检查以防止由于第一级客户操作系统或管理程序对中断表条目的不允许改变而导致的错误,不允许改变包括从操作系统到硬件的中断结束信号发送。因为通过将中断表存储在被分配给第一级操作系统的存储器区段中,可能出现第一级操作系统改变中断表的风险。
根据实施例,提供中断目标ID与逻辑处理器ID之间的映射的中断表被存储在存储器的被分配给n级客户操作系统的区段中,其中n≥1,例如1或2。被存储在存储器的被保留用于硬件的内部区段中的设备表可包括被分配给总线连接模块的条目,该条目提供指示IRT在被分配给n级客户操作系统(例如第一级客户操作系统)的存储器区段中的存储器地址的地址指示符,例如指针。
实施例可具有提供包括中断表条目(IRTE)的中断表(IRT)的有益效果,每个中断表条目提供中断目标ID到逻辑处理器ID的映射。因此,条目可以定义每个中断目标ID到逻辑处理器ID的唯一分配。根据实施例,中断目标ID可以采用虚拟处理器ID的形式来提供。根据实施例,中断目标ID可以是由客户操作系统用于标识所使用的单独处理器的任何其它ID。
根据实施例,在存储器中提供IRT,以由总线附接设备使用以将中断目标ID映射到逻辑处理器ID。根据实施例,在单个位置中提供IRT。可以提供指示IRT的存储器地址的地址指示符,例如指针。地址指示符可以例如通过由总线附接设备从存储器取出的设备表的条目来提供。实施例可以具有在总线附接设备中不必存储大映射表的有益效果。如果需要,用于映射的中断表可以被存储在存储器中并被总线附接设备访问。因此,总线附接设备可以仅仅必须处理用于将被转发的每个中断信号的一个或多个中断表条目的工作副本。中断表条目的数量优选地可以是小的,例如一个。
根据实施例,可在处理器的重新调度时更新IRT或个别IRTE。
中断机制可以使用定向中断来实现。当总线附接设备将用于处理的中断信号转发到由发出总线连接模块定义的目标处理器时,可以使总线附接设备能够使用目标处理器的逻辑处理器ID来直接寻址目标处理器。由总线连接设备将中断目标ID转换成逻辑处理器ID可以进一步确保从客户操作系统的角度看,总是同一个处理器被寻址,即使中断目标ID与逻辑处理器ID之间的映射或被调度以由客户操作系统使用的处理器的选择可以由管理程序改变。
根据实施例,中断信号采用消息信号中断(message signaled interrupt)的形式来接收,其包括目标处理器的中断目标ID。使用消息信号中断(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的底层系统的视图不同。提供由客户操作系统使用的资源的总线连接模块可以使用虚拟处理器ID作为用于与客户操作系统通信的资源,例如MSI-X数据表可以在客户操作系统的控制下。作为虚拟处理器ID的替代,可以对总线连接模块定义任何其它ID以寻址处理器。
中断被呈现给客户操作系统或在其上执行的其它软件,诸如其它程序等。如在本文中所使用的,术语“操作系统”包括操作系统设备驱动程序。
如本文所使用的,术语“总线连接模块”可以包括任何类型的总线连接模块。根据实施例,模块可以是硬件模块,例如存储功能、处理模块、网络模块、加密模块、PCI/PCIe适配器、其他类型的输入/输出模块等。根据其它实施例,模块可以是软件模块,即功能,例如存储功能、处理功能、网络功能、加密功能、PCI/PCIe功能、其它类型的输入/输出功能等。因此,在本文所给出的例子中,除非另有说明,否则模块可以与功能(例如PCI/PCIe功能)和适配器(例如PCI/PCIe功能)互换使用。
实施例可以具有以下益处:提供了中断信号路由机制,例如MSI-X消息路由机制,其允许它保持总线连接模块(例如PCIe适配器和功能)以及用于操作或控制总线连接模块的设备驱动程序不变。此外,可以防止管理程序拦截用于实现总线连接模块与客户操作系统之间的通信的底层体系结构,例如PCIe MSI-X体系结构。换句话说,对中断信号路由机制的改变可以在管理程序和总线连接模块之外实现。
根据实施例,存储器在被分配给第一客户操作系统的第二存储器区段中包括具有每中断目标ID的定向中断概括指示符的定向中断概括向量,每个定向中断概括指示符被分配给中断目标ID以指示是否存在被寻址到相应的中断目标ID的第一中断信号要被处理,其中,存储器在第二存储器区段中包括转发向量,该转发向量包括第一组转发向量条目,第一组转发向量条目包括用于定向中断概括向量的每个定向中断概括指示符的被分配给相应的定向中断概括指示符的转发向量条目,每个转发向量条目指示它被分配给的相应的定向中断概括指示符是否要被更新以便向第一操作系统指示存在被寻址到相应的中断目标ID的第一中断信号要被处理,其中,方法还包括:由总线附接设备检查目标处理器是否被调度以由第一客户操作系统使用;如果目标处理器被调度以由第一客户操作系统使用,则执行转换和直接转发;否则,由总线附接设备使用广播来将用于处理的第一中断信号转发到第一操作系统,该广播包括:由总线附接设备选择第一组转发向量条目中被分配给所接收的中断目标ID的转发向量条目,以及更新所选择的转发向量条目,以使得它指示它被分配给的定向中断概括指示符要被更新以便向第一操作系统指示存在被寻址到相应的中断目标ID的第一中断信号要被处理。
实施例可以具有能够实现有关中断信号的信息在不同虚拟化级别的客户操作系统之间有效交换的有益效果。在采用客户操作系统作为接管中断信号的处理的主机而广播的情况下尤其有利。
根据实施例,由第一级操作系统提供一个或多个转发向量。转发向量被存储在被保留以由第一级操作系统使用的存储器区段中。转发向量的数量可以取决于在第二级管理程序上运行的第二级操作系统的数量。可以提供每第二级客户操作系统的转发向量,其中每个转发向量被分配给第二客户操作系统之一。转发向量的条目可以用于指示存在中断信号要由相应的转发向量被分配给的第二级客户系统处理。
转发向量的条目每个可以引用被分配给第二级客户操作系统的一个或多个中断概括向量的条目。每个中断概括向量被存储在被保留以由相应的中断概括向量被分配给的第二级操作系统使用的存储器区段中。
转发向量包括被分配给中断目标ID的条目,中断目标ID由一个或多个总线连接模块使用以将被分配以由相应的转发向量被分配给的第二级客户操作系统使用的目标处理器标识为中断信号的目标。此外,相应的转发向量的这些条目每个引用被分配给同一目标处理器的第二级客户操作系统的中断概括向量的条目。具有被分配给单独的目标处理器的条目的中断概括向量可被用作直接中断概括向量,因为它们的条目提供对单独的目标处理器的直接引用。
被分配给由目标ID标识的目标处理器的转发向量的条目可以由总线附接设备更新以指示存在要由第二级客户系统使用相应的目标处理器来处理的中断信号。基于对第二级客户操作系统的存储器区段中的直接中断概括向量的条目的引用,可以确定是否存在要由被分配以由第二级客户操作系统使用的目标处理器处理的中断信号。例如,从被引用条目在直接中断概括向量中的位置,可确定目标处理器的中断目标ID。
实施例可具有如下的有益效果:提供两种至少部分类似的向量结构,一个用于第一级客户操作系统,即转发向量,而另一个用于第二级客户操作系统,即直接中断概括向量。这两种向量结构都包括被分配给彼此以及目标处理器的条目。因此,通过两种向量结构的条目,向每个客户操作系统提供关于针对哪些处理器存在中断信号要处理的信息。在被分配以由第二级操作系统使用的处理器没有可用的情况下,第一级操作系统可以接管并基于转发向量确定要被处理的中断信号以被分配以由第二级操作系统使用的哪个目标处理器为目标。在目标处理器被去激活的情况下,第一级操作系统可以触发目标处理器的调度,以使得它可以处理相应的中断信号。
当中断不能被直接传递时,例如因为管理程序还没有调度目标处理器,客户操作系统可以通过使用广播来传递具有最初预期亲和性(即中断曾被预期用于哪个处理器的信息)的中断而受益。在这种情况下,总线附接设备可以在设置DIBV之后并在向客户操作系统传递广播中断请求之前在DISB中设置指定目标处理器的位。如果客户操作系统接收到广播中断请求,则它可因此通过扫描和禁用DISB中的直接中断概括指示符(例如扫描和重置直接中断概括位)来识别哪些目标处理器具有在DIBV中未决为被信号发送的中断信号。因此,可以使得客户操作系统能够决定中断信号是由接收到广播的当前处理器处理还是被进一步转发到原始目标处理器。
根据实施例,可以在被分配给第一级客户操作系统的存储器的区段中提供用于每个第二级客户操作系统的转发向量,在此也被称为转发DISB向量。
转发向量与直接中断概括向量(在此也被称为DISB向量)和/或中断概括向量(在此也被称为AISB向量)之间的引用可以使用客户机中断表(GAIT)和/或客户机中断状态区域(GISA)来实现,这两者都在存储器的被分配给第一级客户操作系统的区段中被提供。
例如,转发向量的每个条目可以引用GAIT中的条目。GAIT条目每一个可包括指示第二级客户操作系统的DISB向量的条目或AISB向量的条目的存储器地址指示符。GAIT条目还可以提供第二级客户操作系统的中断子类ID,以用于被定向到第二级客户操作系统的中断请求。此外,可以提供每客户机的GISA,其托管第二级客户操作系统的每中断子类的被定向到第二级客户操作系统的浮动中断请求的未决中断指示符。
转发DISB中的单独的条目(例如位)可以表示针对单独的目标处理器的活动(即中断),该单独的目标处理器可被分配给单独的第二级客户操作系统。
此外,转发DISB可以包括附加条目,例如附加位,其中的每一个可以表示单独的总线连接模块(例如PCIe功能)的活动(即中断请求),该单独的总线连接模块可以被分配给单独的第二级客户操作系统。
处理器的固件(例如毫代码)可以唤醒第二级客户操作系统,并通过扫描由第一级客户操作系统提供的转发DISB和GAIT中的数据查找来启用相应的第二级客户操作系统的DISB向量中的条目,其中该数据查找指示相应的第二级客户操作系统的DISB向量中的哪个条目将要被设置,以便反映关于针对哪个目标处理器存在要由被唤醒的第二级客户操作系统处理的中断的信息。
使用该机制,可以从任何转发向量条目映射到该转发向量也被分配到的同一第二级客户操作系统的DISB向量的任何条目。
根据实施例,如果由第一级客户操作系统使用并被分配给相应的条目的目标处理器没有在运行,并且广播被初始化,则可以仅需要启用第一级客户操作系统的DISB向量中的条目,例如,位需要被设置。
该机制可以被重新使用以使用被分配给同一第二级客户操作系统并由第一级客户操作系统提供的转发DISB向量来启用第二级客户操作系统的DISB向量中的条目。如果目标处理器没有在运行并且广播被初始化,则可以仅需要启用转发DISB矢量的引用被分配给单独的目标处理器的第二级客户操作系统的DISB矢量的条目,例如,位需要被设置。
因此,该机制可以有效地将由第一级客户操作系统使用的中断目标ID映射到由第二级客户操作系统使用的中断目标ID。
根据实施例,转发向量可以包括被分配给单独的总线连接模块的条目以及被分配给单独的目标处理器的条目。
根据实施例,第一存储器区段还包括客户机中断表,该客户机中断表包括第一组客户机中断表条目,该第一组客户机中断表条目包括用于定向中断概括向量的每个定向中断概括指示符的定向中断概括地址指示符,其中相应的定向中断概括地址指示符指示相应的定向中断概括指示符在第二存储器区段中的存储器地址,第一组转发向量条目中的转发向量条目的分配是使用客户机中断表来实现的,其中第一组转发向量条目的每个转发向量被分配了第一组客户机中断表条目中的客户机中断表条目,相应的客户机中断表条目的定向中断概括地址指示符指示相应的转发向量条目被分配到的定向中断概括指示符的存储器地址。
根据实施例,转发向量条目每一个被实现为单个位。实施例可以具有以最小化存储器空间并可快速和有效处理的形式提供转发向量条目的有益效果。根据实施例,定向中断概括向量被实现为存储器中的连续区域。实施例可具有以下有益效果:以最小化存储器空间并可快速且有效处理的形式提供定向中断概括向量。连续区域可以是例如缓存行。根据实施例,定向中断概括指示符每一个被实现为单个位。实施例可具有以下有益效果:以最小化存储器空间并可快速且有效处理的形式提供定向中断概括指示符。
根据实施例,可执行IRTE的二次获取(double fetch),以便防止中断信号被发送到例如在此期间已被去激活的处理器。根据实施例,在将中断信号转发到由从使用IRTE的第一副本的中断目标ID的转换得到的逻辑处理器ID标识的处理器之后,可取出同一IRTE的第二副本以检查在此期间是否发生IRTE的任何改变。在IRTE在此期间已经被更新的情况下,存在中断信号已经被转发到去激活的处理器的风险。因此,IRTE的第二副本可用于再次转换中断目标ID,并将中断信号转发到由从第二转换产生的逻辑处理器ID所标识的处理器。根据可替代实施例,在IRTE的第二副本不匹配第一副本的情况下,可重复从取出IRTE的第一副本开始的完整方法。举例来说,可以取出IRTE的第三副本以代替IRTE的第一副本,或者IRTE的第二副本可以代替IRTE的第一副本,并可取出IRTE的第三副本以也对于该方法的部分重复实施二次获取方案。可以重复该方案,直到实现匹配。根据另外的可替代实施例,在IRTE的第二副本不匹配第一副本的情况下,可使用广播来转发中断信号。根据实施例,总线附接设备参与存储器-缓存一致性协议,并且通过同一机制来检测IRTE的更替,例如缓存侦测。CPU可以检测缓存行更替。
实施例可以具有避免可能具有低效缩放的缓存清除的有益效果。二次获取可以是全局的或专用于IRTE的,即,整个条目可以经受二次获取或者受限于由相应的条目所包括的特定信息。
根据实施例,可通过关于CPU检查接收处理器是否仍然是正确的目标处理器的检查逻辑来发现竞争条件,该竞争条件由转换中断目标ID并将中断信号转发到目标处理器、直到它到达处理器所需的时间而引起。为了该检查,与中断请求一起接收的中断目标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。
在某些错误情况下,处理器(例如目标处理器)可被重置到检查点,并丢失中间信息。为了重新获得丢失的信息,处理器可以扫描用于该特定处理器的所有IRTE条目,即被分配给它的逻辑处理器ID的所有IRTE条目,并传递直接中断请求,如由在不受处理器恢复影响的存储器中存在的未决直接中断指示符(例如,dPIA位)指示的。
如果中断信号应当被呈现,则由IRTE包括的未决直接中断指示符(例如IRTE.dPIA位)可用作主副本,即单点真理。为了简化处理器恢复,处理器中的未决直接中断指示符可以被用作例如IRTE.dPIA位的影子副本以在处理器上保持直接中断未决。
在存储器具有严格排序的性质的情况下,鉴于步骤A1、A2和B1,仅以下序列是可能的:替代方案1是A1→A3→B1,替代方案2是A1→B1→A3。在替代方案1的情况下,IRTE的第一副本和第二副本可以匹配。因此,中断信号可以被转发到前一处理器而不是当前目标处理器。前一处理器可以看到关于中断目标ID和/或逻辑分区ID的不匹配,并启动所接收的中断信号的广播。在替代方案2的情况下,总线附接设备可看到IRTE的第一副本与第二副本之间的不匹配。响应于该不匹配,总线附接设备可以广播中断信号。由于广播,中断信号可由看到命中并直接处理所接收的中断请求的附加处理器来接收。实施例可以具有通过过于主动法(over-initiative-approach)来关闭定时窗口的有益效果。
根据实施例,中断表条目的所取回的副本还包括转发向量条目地址指示符,其指示被分配给所接收的中断目标ID的转发向量条目在第一存储器区段中的存储器地址,其中,方法还包括:由总线附接设备使用由中断表条目的所取回的副本所包括的转发向量条目地址指示符来识别被分配给所接收的中断目标ID的转发向量条目。
根据实施例,中断表条目的所取回的副本还包括运行指示符,其指示由中断目标ID标识的目标处理器是否被调度以由第一客户操作系统使用,其中,方法还包括:由总线附接设备使用由中断表条目的副本所包括的运行指示符来检查目标处理器是否被调度以由第一客户操作系统使用。
实施例可以具有防止中断以未运行(即未被调度以由客户操作系统使用)的处理器为目标的有益效果。实施例可以具有支持管理程序重新调度处理器的有益效果。
运行指示符指示由与中断信号一起接收的中断目标ID标识的目标处理器是否被调度以由客户操作系统使用。运行指示符可以例如采用运行位的形式来实现,即,运行位是指示被分配了相应位的处理器是否正在运行(即,被调度以由客户操作系统使用)的单个位。因此,被启用的运行位可以告诉总线附接设备目标处理器当前被调度,而被禁用的运行位可以告诉总线附接设备目标处理器当前未被调度。在目标处理器没有在运行的情况下,总线附接设备可以以正确的方式发送回退广播中断请求,而不试图直接寻址处理器之一。
根据实施例,在存储器中的中断表的中断条目中引入直接中断阻止指示符。直接中断阻止指示符可以采用单个位(即dIBPIA位)的形式实现。
根据实施例,从存储器取出IRTE,检查运行指示符以便确定目标处理器是否被调度。在目标处理器被调度的情况下,启用直接中断阻止指示符,以便阻止目标处理器在处理当前中断信号的同时接收另一中断信号。否则,另一中断信号可干扰当前中断信号的处理。为了确保目标处理器在此期间还没有被重新调度,重新取出IRTE,并再次检查当前运行指示符,以便确定目标处理器是否仍然被调度。在目标处理器仍然被调度的情况下,可以使用目标处理器的逻辑处理器ID以直接寻址目标处理器来将中断信号转发到目标处理器。此外,可以检查由IRTE针对所接收的中断目标ID提供的目标处理器的逻辑处理器ID是否仍然相同。
根据实施例,中断表条目的所取回的副本还包括标识第一客户操作系统被分配到的逻辑分区的第一逻辑分区ID以及指示被分配给第一客户操作系统的客户机中断状态区域在第一存储器区段中的存储器地址的第一客户机中断状态区域地址指示符。
根据实施例,被分配给第一客户操作系统的客户机中断状态区域包括未决中断指示符,其指示用于由第一操作系统使用广播来处理的到第一操作系统的第一中断信号是否是未决的,其中,方法还包括:如果使用广播来转发第一中断信号,则由总线附接设备更新未决中断指示符,以使得更新后未决中断指示符指示用于由第一操作系统使用广播来处理的第一中断信号是未决的。实施例可具有提供用于监视未决中断的有效方法的有益效果。
根据实施例,方法还包括由总线附接设备从设备表取回设备表条目的副本,该设备表条目包括指示中断表的存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来取回中断表条目的第一副本。
根据实施例,设备表被存储在存储器的第三存储器区段中,第三存储器区段被保护以防止被第一和第二操作系统访问。该区段可以是例如HAS,确保防止设备表被任何客户操作系统篡改。
根据实施例,设备表条目的所取回的副本还包括标识第一客户操作系统被分配到的逻辑分区的第二逻辑分区ID和指示被分配给第一客户操作系统的客户机中断状态区域在第一存储器区段中的存储器地址的第二客户机中断状态区域地址指示符,其中,方法还包括:由总线附接设备使用由中断表条目提供的第一逻辑分区ID和第一客户机中断状态区域地址指示符的第一组合与由被存储在受保护的第三存储器区段中的设备表条目提供的第二逻辑分区ID和第二客户机中断状态区域地址指示符的第二组合的比较来检查被存储在可由第二客户操作系统访问的第一存储器区段中的中断表条目未被第二客户操作系统改变,第一组合与第二组合的匹配指示中断表条目未被改变。
实施例可以具有提供安全机制以排除中断表已被篡改的有益效果。
根据实施例,设备表条目还包括标识客户操作系统被分配到的逻辑分区的逻辑分区ID,由总线附接设备转发第一中断信号还包括与第一中断信号一起转发逻辑分区ID。实施例可以具有使接收处理器能够检查中断信号被寻址到哪个客户操作系统的有益效果。
根据实施例,设备表条目还包括标识第一中断信号被分配到的中断子类的中断子类ID,由总线附接设备转发第一中断信号还包括与第一中断信号一起转发中断子类ID。
根据实施例,第二存储器区段还包括被分配给相应的中断目标ID的每中断目标ID的定向第一中断信号向量,每个定向第一中断信号向量包括被分配给第一总线连接模块的每第一总线连接模块的第一中断信号指示符,每个定向第一中断信号向量指示是否存在由第一总线连接模块发出并被寻址到相应的中断目标ID的第一中断信号要被处理,其中,方法还包括:由总线附接设备选择被分配给第一中断信号被寻址到的中断目标ID的定向第一中断信号向量;由总线附接设备在所选择的定向第一中断信号向量中选择被分配给发出第一中断信号的第一总线连接模块的定向的一中断信号指示符;由总线附接设备更新所选择的定向第一中断信号指示符,以使得更新后定向第一中断信号指示符指示存在由第一总线连接模块发出并被寻址到相应的中断目标ID的第一中断信号要被处理。
定向中断信号向量根据目标处理器ID来排序,即,被优化以跟踪定向中断。换句话说,主要顺序标准是目标处理器ID而不是标识发出总线连接模块的请求方ID。取决于总线连接模块的数量,每个定向中断信号向量可以包括一个或多个定向中断信号指示符。
因此,可以避免指示单独的中断信号(例如采用MSI-X消息的形式)已经在用于单独的总线连接模块(例如PCIe功能)的连续的存储器区域(例如缓存行)内被顺序地接收到的中断信号指示符(例如采用中断信令位的形式)的排序。例如通过设置和/或重置中断信令位来启用和/或禁用中断信号指示符需要相应的连续的存储器区域被移动到一个处理器以相应地改变相应的中断信号指示符。
从客户操作系统的角度,可以预期处理器处理它负责的所有指示符,即,尤其是被分配给相应的处理器的所有指示符。这可以实现性能优势,因为在每个处理器都在处理被分配给它的所有数据的情况下,在该上下文中需要的数据被提供给处理器和/或被存储在本地高速缓存中的可能性可能很高,从而使得能够快速访问用于处理器的相应数据而不需要大量的高速缓存业务。
然而,每个处理器试图处理它所负责的所有指示符可能仍然导致处理器之间高的高速缓存业务,因为每个处理器需要针对所有功能写所有缓存行。因为被分配给每个单独处理器的指示符可以被分布在所有的连续区域(例如缓存行)上。
中断信令指示符可以采用定向中断信令向量的形式被重新排序,以使得被分配给相同中断目标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和总线附接设备110与多个处理器130以及存储器140可操作地连接。总线附接设备110一方面管理总线连接模块120与处理器130之间的通信,以及另一方面管理总线连接模块120与存储器140之间的通信。总线连接模块120可以直接或经由一个或多个中间组件(例如,开关104)与总线102连接。
总线连接模块120可以例如采用高速外设组件互连(PCIe)模块的形式来提供,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模型,其中被分配给虚拟机的存储器由虚拟存储器而不是真实存储器支持。因此,每个虚拟机具有虚拟线性存储器空间。物理资源由诸如VM管理程序的管理程序200拥有,并且共享物理资源由管理程序根据需要分派给客户操作系统,以满足它们的处理需求。V=V虚拟机模型假设客户操作系统与物理共享机器资源之间的交互由VM管理程序控制,因为大量的客户机可能妨碍管理程序简单地划分硬件资源并将硬件资源分配给被配置客户机。
处理器120可由管理程序200分配给虚拟机202。虚拟机202可以例如被分配有一个或多个逻辑处理器。每个逻辑处理器可表示可由管理程序200动态分配给虚拟机202的物理处理器120的全部或份额。虚拟机202由管理程序200管理。管理程序200可以例如在处理器120上运行的固件中实现,或者可以是在计算机系统100上执行的操作系统的一部分。管理程序200可以例如是VM管理程序,诸如由纽约阿蒙克的国际商业机器公司提供的
此外,提供了第二级虚拟化,其中第二管理程序210在第一级客户操作系统中充当第二管理程序210的主机操作系统的第一级客户操作系统上执行。第二管理程序210可管理一个或多个第二级虚拟机212,每个第二级虚拟机能够执行第二级客户操作系统212。
图3描绘了说明使用不同类型的ID来标识在计算机系统100的不同架构级别的处理器的示例性模式。底层固件220可以提供逻辑处理器ID ICPU 222以标识计算机系统100的处理器130。第一级管理程序200使用逻辑处理器ID ICPU 222来与处理器130通信。第一级管理程序可以提供第一虚拟处理器ID vCPU 224以由在由第一级管理程序200管理的虚拟机上执行的客户操作系统204或第二级管理程序219使用。管理程序200可以将第一虚拟处理器ID vCPU 224分组,以向客户操作系统204和/或管理程序210提供逻辑分区(也称为区域)。第一虚拟处理器ID vCPU 224被第一级管理程序200映射到逻辑处理器ID ICPU222。由第一级管理程序200提供的第一虚拟处理器ID vCPU 224中的一个或多个可被分配给使用第一级管理程序200执行的每个客户操作系统204或管理程序210。在第一级管理程序200上执行的第二级管理程序210可提供一个或多个虚拟机执行软件,例如其它客户操作系统214。为此,第二级管理程序管理第二虚拟处理器ID vCPU 226以由在第一级管理程序200的虚拟机上执行的第二级客户操作系统214使用。第二虚拟处理器ID vCPU 226被第二级管理程序200映射到第一虚拟处理器ID vCPU 224。
对由第一/第二级客户操作系统204使用的处理器130进行寻址的总线连接模块120可以使用采用第一/第二虚拟处理器ID vCPU 224、226或从第一/第二虚拟处理器IDvCPU 224、226导出的替换ID的形式的目标处理器ID。
图4描绘了计算机系统100的简化的示意设置,其示出了在用于向在计算机系统100上执行的客户操作系统提供中断信号的方法中的主要参与方。出于说明的目的,简化的设置包括总线连接模块(BCM)120,其向在一个或多个处理器(CPU)130上执行的客户操作系统发送中断信号。中断信号与将处理器130之一标识为目标处理器的中断目标ID(IT_ID)一起被发送到总线附接设备110。总线附接设备110是管理总线连接模块120与计算机系统100的处理器130以及存储器140之间的通信的中间设备。总线附接设备110接收中断信号,并使用中断目标ID来识别目标处理器的逻辑处理器ID,以便直接寻址相应的目标处理器。对目标处理器的定向转发可以例如通过减少高速缓存业务来提高数据处理的效率。
图5描绘了图4的计算机系统100。如存储器140的分段所示,实现了两级虚拟化。第一存储器区段143被分配给第一级客户操作系统,而第二存储器区段141被分配给第二级客户操作系统。第二级客户操作系统在第一级客户操作系统上运行,该第一级客户操作系统充当第二级客户操作系统的主机。为了寻址由第二级客户操作系统使用的处理器,可使用基于至少两个映射的中断目标ID,即,由第一级管理程序(也被称为本机管理程序)进行的逻辑处理器ID到第一虚拟处理器ID的第一映射,以及由第二级管理程序(也被称为由在由第一管理程序所管理的虚拟机上运行的第一级客户操作系统托管的托管管理程序)进行的第一虚拟处理器ID到第二虚拟处理器ID的第二映射。
总线附接设备110被配置为在存储器140的模块特定区域(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的中断信号。每个客户机DIBV162被分配给中断目标ID(即处理器130)之一并可以包括一个或多个条目。每个条目被分配给总线连接模块120之一。因此,客户机DIBV 162指示来自哪些总线连接模块存在针对特定处理器130的中断信号要被处理。这可以具有如下优点:为了检查是否存在任何中断信号要被处理或者从哪个总线连接模块120有针对特定处理器的中断信号要被处理,仅需要从存储器140读取信号条目(例如位)或信号向量(例如位向量)。
进一步地,总线附接设备110可更新转发向量(也被称为转发定向中断概括向量(DISB)164),以便跟踪在广播的情况下针对哪个处理器130存在任何中断信号要被处理。转发DISB 164的每个条目被分配给客户机中断表(GAIT)166的条目,而GAIT条目可以包括指示被分配给中断目标ID的客户机DISB 160的条目的存储器地址的存储器地址指示符。例如,GAIT 166可以提供客户机DISB 160的地址(Gst_DISB@)以及相应的条目在客户机DISB160内的偏移(Gst_DISBO)。因此,GAIT 166可提供用于在转发DISB 164中选择条目的中断目标ID到被分配给相应的中断目标ID的客户机DISB 160中的条目的映射。
除了被分配给中断目标ID并经由GAIT条目所提供的地址数据而被链接到客户机DISB 160的条目的条目之外,转发DISB 164还可以包括被分配给总线连接模块(例如请求方ID)的经由GAIT条目所提供的地址数据而被链接到客户机AISB 170的条目的条目。例如,GAIT 166可提供客户机AISB 170的地址(Gst_AISB@)以及相应的条目在客户机AISB 170内的偏移(Gst_AISBO)。因此,GAIT 166可进一步提供用于在转发DISB164中选择条目的请求方ID到被分配给相应的请求方(即,总线连接模块120)的客户机AISB 160中的条目的映射。在这种情况下,总线附接设备可更新被分配给总线连接模块的客户机中断信号向量(AIBV)172的条目。AIBV 172的被分配给总线连接模块120的每个条目还可被分配给处理器130。因此,AIBV本身可识别总线连接模块120,而条目识别处理器130。
总线附接设备110使用被存储在存储器140中的中断表(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使用以直接寻址目标处理器。
IRT 150被存储在存储器145的被分配给第一级客户操作系统的第一区段143中。这可以是有利的,因为第一区段可以显著地大于内部区段145。当IRT的大小由于大量的处理器而增加到很多时,HSA 145可以包括引起问题的受限大小。这个问题可以通过在第一区段143中存储IRT 150来解决。然而,存储IRT 150可能需要安全机制来确保IRT不被第一级客户操作系统篡改。这可以例如通过将由IRTE提供的逻辑分区ID和GISA地址与由DTE提供的逻辑分区ID和GISA地址进行比较来实现。在匹配的情况下,IRTE被接受为正确,否则它被拒绝。
此外,IRTE 152提供运行指示符154,其指示由中断目标ID标识的目标处理器是否完全被调度(即,运行)。在目标处理器未被调度的情况下,可以启动广播以便实现及时的中断处理。
每个处理器包括接收和处理直接中断信号的固件(例如毫代码132)。固件还可以包括例如处理器130的微代码和/或宏代码。它可以包括在更高级别机器代码的实现时使用的硬件级指令和/或数据结构。根据实施例,它可以包括可以作为微代码被传递的专有代码,该微代码包括底层硬件专用的可信软件或微代码,并控制操作系统对系统硬件的访问。此外,处理器130的固件包括检查逻辑134,用于根据由总线附接设备110转发到接收处理器130的中断目标ID来检查接收处理器是否与目标处理器相同。在接收处理器130不是目标处理器的情况下,即在所接收的中断目标ID与接收处理器130的参考中断目标ID不匹配的情况下,中断信号被广播到逻辑分区,以便找到用于处理中断信号的处理器。
图6是用于使用DMA写请求来经由总线附接设备110执行总线连接模块120的状态更新的示例性方法的流程图。在步骤300中,总线连接模块可以决定更新它的状态并触发中断,例如以便指示信号完成。在步骤310中,总线连接模块启动经由总线附接设备到被分配给在计算机系统上运行的主机的存储器的区段(即,主存储器)的直接存储器访问(DMA)写入,以便更新总线连接模块的状态。DMA是允许计算机系统的外围组件直接向主存储器传递其I/O数据和从主存储器传递其I/O数据而无需涉及系统处理器的硬件机制。为了执行DMA,总线连接模块向总线附接设备发送DMA写请求,例如,采用MSI-X消息的形式。在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可以提供直接信令指示符,该指示符指示目标处理器是否要由总线附接设备使用与中断信号一起提供的中断目标ID来直接寻址。此外,DTE可以提供逻辑分区ID(也称为区域ID)和中断子类ID。设备表条目的相应副本可以从高速缓存或从存储器中取出。
在步骤342中,总线附接设备使用与中断信号一起接收的中断目标ID以及由DTE提供的指示IRT的存储器的地址指示符来从存储器取出IRTE的副本。为了确保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。在步骤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的广播由管理程序/第一级客户操作系统来处理。
这种广播也可以由接收处理器在步骤393中在所接收的中断目标ID和/或逻辑分区ID与当前被分配给接收处理器的中断目标ID和/或逻辑分区之间不匹配时启动。当前被分配的中断目标ID和/或逻辑分区对于检查逻辑是可访问的,作为用于检查的参考值。
在步骤395中,在接收到广播的中断请求时,执行管理程序/第一级客户操作系统的处理器扫描转发向量。在被分配给第一级客户操作系统的存储器区段中提供转发向量。该扫描可以由相应的处理器的固件(例如,毫代码)来执行。转发向量的每个条目(例如位)对应于在被分配给第一级客户操作系统的存储器区段中提供的客户中断表(GAIT)中的条目。GAIT的对应条目可以例如指定使用直接寻址或使用广播来将中断信号转发到目标处理器。
在步骤396中,读取与转发向量的启用条目相对应的GAIT条目。GAIT条目指定第二级客户操作系统的定向中断概括向量的条目。GAIT条目提供例如地址指示符,其指示定向中断概括向量在被分配给第二级客户操作系统的存储器区段中的地址。指示符可以例如包括定向中断概括向量的存储器地址以及在定向中断概括向量内的偏移。偏移可以指定定向中断概括向量的特定条目。
在步骤397,固件启用在GAIT中指定的第二级客户操作系统的定向中断概括向量的条目。例如,可以设置客户机DISB的位。第二级客户操作系统的定向中断概括向量的相应条目引用由中断信号被寻址到的第二级客户操作系统所使用的处理器的中断目标ID。
在步骤398,固件启用相应的第二级客户操作系统的客户机中断状态区域(GISA)中的条目,例如设置GISA中的位,以使用于第二级操作系统的浮动中断请求未决。GISA被分配给第二级客户操作系统,并被存储在被分配给第一级客户操作系统的存储器区段中。在多个第二级客户操作系统的情况下,针对每个第二级客户操作系统提供GISA。为了寻址GISA,可以使用GISA存储器地址和/或客户机中断子类ID(GISC)。GISA存储器地址和GISC可以由在步骤396中读取的GAITE条目提供。
在步骤399,当第二级客户操作系统被分派在一个CPU上时,固件中断程序执行,并将执行切换到第二级客户操作系统中断处理程序,以便处理等待第二级操作系统的中断。
图8描绘了客户机DISB 160和多个客户机DIBV 162的示意性结构。可以以连续的存储器区段(例如缓存行)的形式来提供客户机DISB 160,其包括每中断目标ID的条目161(例如位)。每个条目指示是否存在要由中断目标ID所标识的相应处理器处理的中断请求(IRQ)。对于每个中断目标ID,即客户机DISB 160的条目,提供客户机DIBV 162。每个客户机DIBV 162被分配给特定的中断目标ID,并包括每总线连接模块的一个或多个条目163MN A、MN B。客户机DIBV 162每一个可以以连续的存储器区段(例如缓存行)的形式来提供,其包括被分配给同一中断目标ID的条目163。不同的总线连接模块的条目可以使用每总线连接模块的不同偏移客户机DIBVO来排序。
图9描绘了客户机AISB 170和多个客户机AIBV 172的示意性结构。客户机AISB170可以以连续的存储器区段(例如缓存行)的形式来提供,其包括每总线连接模块的条目171(例如位)MN A到MN D。每个条目指示是否存在来自相应的总线连接模块的要被处理的中断请求(IRQ)。对于每个总线连接模块,即AISB 170的条目,提供客户机AIBV 172。每个客户机AIBV 172被分配给特定的总线连接模块,并且包括每中断目标ID的一个或多个条目173。客户机AIBV 172每一个可以以连续的存储器区段(例如缓存行)的形式来提供,其包括被分配给同一总线连接模块的条目173。关于不同目标处理器ID的条目可以使用每总线连接模块的不同偏移客户机AIBVO来排序。
图10A示出了示例性客户机DIBV 162。客户机DIBV 162的条目的存储器地址是由被分配给中断目标ID(例如vCPU)的IRTE提供的DIBV地址DIBV@、由DTE提供的偏移DIBVO和与中断信号一起提供的DIBV索引DIBV-Idx的组合。因此,每个客户机DIBV 162被分配给中断目标ID,而条目被分配给总线连接模块。
图10B示出了示例性客户机AIBV 172。客户机DIBV 172的条目的存储器地址是由被分配给总线连接模块的DTE提供的AIBV地址AIBV@、由DTE提供的偏移AIBVO和与中断信号一起提供的AIBV索引AIBV-Idx(例如MSI索引)的组合。因此,每个客户机AIBV 162被分配给总线连接模块,而条目被分配给中断目标ID。
图11A示出了示例性客户机DISB 160。客户机DISB 160的条目的存储器地址由主机DISB地址Host_DISB@和主机DISB偏移Host_DISBO提供,这两者都由被分配给中断目标ID(例如,vCPU)的IRTE提供,标识转发DISB阵列主机存储器中的存储器地址。转发DISB阵列的相应条目识别GAIT条目,该GAIT条目标识客户机DISB 160的地址Gst_DISB@和偏移Gst_DISBO。相应的条目被分配给中断目标ID。
图11B示出了示例性客户机AISB 170。客户机AISB 170的条目的存储器地址由主机DISB地址Host_DISB@和主机DISB偏移Host_DISBO提供,这两者都由被分配给总线连接模块的DTE提供,标识转发DISB阵列在主机存储器中的存储器地址。转发DISB阵列的相应条目识别GAIT条目,该GAIT条目标识客户机AISB 170的地址Gst_AISB@和偏移Gst_AISBO。相应的条目被分配给总线连接模块。
图12描绘了示例性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被分派,则得到由缓存行监视器(CLM)直接检测的第二级客户操作系统中断。最后,示例性GAIT条目GAITE 173可包括Gst_DISB@、Gst_DISBO、GISC和GISA@。在GAIT识别客户机AISB条目而不是客户机DISB条目的情况下,它可以包括Gst_AISB@和Gst_AISBO。
图13描绘了转发DISB阵列,其包括具有条目165的转发DISB向量164。每个条目165被分配给GAIT 166的GAITE 167。
客户操作系统例如可以使用可分页存储模式客户机来实现。例如中,可分页客户机可在解释级别2经由开始解释执行(SIE)指令而被可解释地执行。例如,逻辑分区(LPAR)管理程序执行SIE指令以在物理固定存储器中开始逻辑分区。该逻辑分区中的操作系统(例如)可发出SIE指令以执行在它的虚拟存储设备中的它的客户(虚拟)机。因此,LPAR管理程序可以使用级别1SIE,而管理程序可以使用级别2SIE。
根据实施例,计算机系统是由国际商业机器公司提供的System服务器。是基于由国际商业机器公司提供的关于的细节在标题为“z/Architecture Principles of Operation(z/Architecture操作原理)”的出版物(出版号SA22-7832-11,2017年8月25日)中描述,该出版物通过引用而整体被结合到本文中。System和是在纽约阿蒙克的国际商业机器公司的注册商标。在本文中使用的其它名称可以是国际商业机器公司或其它公司的注册商标、商标或产品名称。
根据实施例,其它体系架构的计算机系统可以实现并使用本发明的一个或多个方面。作为示例,除了System服务器之外的服务器(诸如由国际商业机器公司提供的PowerSystems服务器或其他服务器)或其他公司的服务器实现、使用和/或受益于本发明的一个或多个方面。进一步地,尽管在本文的示例中,总线连接模块和总线附接设备被认为是服务器的一部分,但是在其他实施例中,它们并不必需被认为是服务器的一部分,而可以仅被认为是耦合到计算机系统的系统存储器和/或其他组件。计算机系统不需要是服务器。进一步地,尽管总线连接模块可以是PCIe,但是本发明的一个或多个方面可使用其它总线连接模块。PCIe适配器和PCIe功能只是示例。进一步地,本发明的一个或多个方面可适用于除了PCI MSI和PCI MSI-X之外的中断方案。进一步地,尽管描述了在其中设置了位的示例,但在其它实施例中,可以设置字节或其它类型的指示符。此外,DTE和其它结构可以包括更多、更少或不同的信息。
进一步地,其它类型的计算机系统可以受益于本发明的一个或多个方面。作为示例,适合于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦合到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间采用的本地存储器、大容量存储装置、以及提供至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储装置取回代码的次数的高速缓冲存储器。
输入/输出或I/O设备包括但不限于键盘、显示器、指示设备、DASD、磁带、CD、DVD、拇指驱动器和其它存储介质等,其可以直接或者通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,以使数据处理系统能够通过中间专用或公共网络而耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是几种可用的网络适配器类型。
参考图14,描绘了用于实现本发明的一个或多个方面的主机计算机系统400的代表性组件。代表性主机计算机400包括与计算机存储器402通信的一个或多个处理器(例如CPU 401)以及到存储介质设备411和网络410以用于与其它计算机或SAN等通信的I/O接口。CPU 401遵从具有架构指令集和架构功能的架构。CPU 401可以具有用于将程序地址、虚拟地址转换成存储器的真实地址的动态地址转换(DAT)403。DAT可以包括用于缓存转换的转换后备缓冲器(TLB)407,因此对计算机存储器402的块的稍后访问不需要地址转换的延迟。高速缓存409可以在计算机存储器402与CPU 401之间使用。高速缓存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操作中使用时,一组字节被称为字段。在每组字节内,例如在中,按从左到右的顺序对位进行编号。在中,最左边的位有时被称为“高阶”位,最右边的位被称为“低阶”位。然而,位数量不是存储地址。只有字节是可寻址的。为了对存储中的字节的各个位进行操作,整个字节可被访问。在例如z/Architecture中,字节中的位可以从左到右被编号为0到7。地址中的位可针对24位地址被编号为8-31或40-63,或者针对31位地址被编号为1-31或33-63;对于64位地址,它们被编号为0-63。在多字节的任何其它固定长度格式中,构成该格式的位可以从0开始被连续编号。为了错误检测并且优选地为了校正,一个或多个校验位可以与每个字节或一组字节一起被发送。这种校验位由机器自动产生,并且不能由程序直接控制。存储容量用字节数表示。当存储操作数字段的长度由指令的操作码暗示时,该字段被称为具有固定长度,其可以是一、二、四、八或十六字节。对于某些指令,可以暗示更大的字段。当存储操作数字段的长度不是暗示的而是被明确规定时,该字段被称为具有可变长度。可变长度操作数可在长度上通过一个字节的增量或者以两个字节的倍数或其它倍数随某些指令而变化。当信息被放在存储装置中时,即使到存储装置的物理路径的宽度可能大于正被存储的字段的长度,也只替换那些被包括在指定字段中的字节位置的内容。
某些信息单元将在整数边界上存储。当信息单元的存储地址是该单元的字节长度的倍数时,对于该信息单元,边界被称为整数。对整数边界上的2、4、8和16字节的字段给予特殊名称。半字是两字节边界上的一组两个连续字节,并且是指令的基本构建块。字是四字节边界上的一组四个连续字节。双字是八字节边界上的一组八个连续字节。四字是16字节边界上的一组16个连续字节。当存储地址指定半字、字、双字和四字时,地址的二进制表示分别包含一个、两个、三个或四个最右边零位。指令要在两字节整数边界上。大多数指令的存储操作数没有边界对齐要求。
在实现用于指令和数据操作数的单独的高速缓存的设备上,如果程序存储到随后从中取出指令的缓存行中,则可能经历显著的延迟,而不管该存储是否改变随后被取出的指令。
在一个实施例中,本发明可以由软件来实现,软件有时被称为许可内码、固件、微代码、毫代码、微微代码等,其中任何一个都符合本发明。参考图14,体现本发明的软件程序代码可以从诸如CD-ROM驱动器、磁带驱动器或硬盘驱动器的长期存储介质设备411被访问。软件程序代码可以被体现在与数据处理系统一起使用的各种已知介质中的任何一种上,诸如磁盘、硬盘驱动器、或CD-ROM。代码可以被分布在这样的介质上,或者可以从计算机存储器402分发到用户或者从一个计算机系统的存储装置通过网络410分发到其他计算机系统,以由这样的其他系统的用户使用。
软件程序代码可以包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码可以从存储介质设备411被分页到相对高速的计算机存储装置402,在该存储装置402中它可用于由处理器801进行处理。可以使用用于在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件代码的公知技术和方法。程序代码在被创建并存储在有形介质上时可被称为“计算机程序产品”,有形介质包括但不限于电子存储器模块(RAM)、闪存、光盘(CD)、DVD、磁带。计算机程序产品介质可以由优选地在计算机系统中的处理电路读取,以便由处理电路执行。
图15示出了其中可以实现本发明的实施例的代表性工作站或服务器硬件系统。图15的系统420包括代表性的基础计算机系统421,诸如个人计算机、工作站或服务器,其包括可选的外围设备。基础计算机系统421包括一个或多个处理器426和总线,总线用于连接(一个或多个)处理器426与系统421的其它组件并根据已知技术使能它们之间的通信。总线将处理器426连接至存储器425和长期存储装置427,长期存储装置427例如可包括硬盘驱动器(例如包括磁介质、CD、DVD和闪存中的任何一个)或磁带驱动器。系统421还可包括用户接口适配器,其将微处理器426经由总线连接到一个或多个接口设备,诸如键盘424、鼠标423、打印机/扫描仪430和/或其它接口设备(其可以是任何用户接口设备,诸如触敏屏幕、数字化输入板等)。总线还将诸如LCD屏幕或监视器的显示设备422经由显示适配器连接到微处理器426。
系统421可通过能够与网络429进行通信428的网络适配器与其它计算机或计算机网络通信。示例网络适配器是通信信道、令牌环、以太网或调制解调器。替代地,系统421可使用无线接口(诸如蜂窝数字分组数据(CDPD)卡)进行通信。系统421可与局域网(LAN)或广域网(WAN)中的这些其它计算机相关联,或者系统421可以是具有另一计算机等的客户端/服务器布置中的客户端。
图16示出了其中可以实现本发明的实施例的数据处理网络440。数据处理网络840可以包括多个单独的网络,例如无线网络和有线网络,每个网络可以包括多个单独的工作站441、442、443、444。另外,如本领域技术人员将理解的,可以包括一个或多个LAN,其中LAN可以包括被耦合到主机处理器的多个智能工作站。
仍然参考图16,网络还可以包括大型计算机或服务器,诸如网关计算机(例如客户端服务器446)或者应用服务器(例如远程服务器448),其可以访问数据存储库并且还可以直接从工作站445被访问。网关计算机446可以用作进入每个单独网络的进入点。当将一个网络协议连接到另一个时,可能需要网关。优选地,网关446可以通过通信链路而被耦合到另一个网络,例如因特网447。网关446还可以使用通信链路而被直接耦合到一个或多个工作站441、442、443、444。网关计算机可以利用国际商业机器公司提供的IBM eServerTMSystem服务器来实现。
同时参考图15和图16,可以体现本发明的软件编程代码可以由系统420的处理器426从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质427访问。软件编程代码可以被包含在与数据处理系统一起使用的各种已知介质中的任何一种上,例如磁盘、硬盘驱动器、或CD-ROM。代码可以被分布在这样的介质上,或者可以从一个计算机系统的存储器或存储装置通过到其它计算机系统的网络被分发到用户450、451,以便由这种其它系统的用户使用。
替代地,编程代码可以被包含在存储器425中,并且由处理器426使用处理器总线来访问。这样的编程代码可以包括控制各种计算机组件和一个或多个应用程序432的功能和交互的操作系统。程序代码可从存储介质427被分页到高速存储器425,在那里它可供处理器426处理。可以使用用于在存储器、物理介质上包含软件编程代码和/或经由网络分发软件代码的公知技术和方法。
最容易可用于处理器的高速缓存(即比处理器的其它高速缓存更快和更小的高速缓存)是最低的高速缓存,也称为L1或一级缓存,而主存储器是最高级的高速缓存,也称为Ln(例如L3),如果有n(例如n=3)级。最低级的高速缓存可被分成指令缓存和数据缓存,其中指令缓存也被称为I缓存,其保存要被执行的机器可读指令,而数据缓存也被称为D缓存,其保存数据操作数。
参考图17,描绘了处理器426的示例性处理器实施例。可以采用一级或多级高速缓存453来缓冲存储器块,以便提高处理器性能。高速缓存453是保存可能被使用的存储器数据的缓存行的高速缓冲器。缓存行可以是例如64、128或256字节的存储器数据。可以采用单独的高速缓存来缓存指令和缓存数据。高速缓存一致性(即存储器和高速缓存中的线的副本的同步)可以由各种合适的算法来提供,例如“侦测(snoop)”算法。处理器系统的主存储器装置425可以被称为高速缓存。在具有4级缓存453的处理器系统中,主存储装置425有时被称为5级(L5)缓存,因为它可以更快并且仅保存计算机系统可用的非易失性存储的一部分。主存储装置425“缓存”由操作系统页入和页出主存储装置425的数据页面。
程序计数器(指令计数器)461跟踪当前要被执行的指令的地址。处理器中的程序计数器是64位,并且可以被截短为31或24位以支持先前的寻址限制。程序计数器可以被体现在计算机的程序状态字(PSW)中,以使得它在上下文切换期间持续。因此,具有程序计数器值的正在进行的程序可以被例如操作系统中断,导致从程序环境到操作系统环境的上下文切换。当程序不活动时,程序的PSW维持程序计数器值,并且当操作系统正在执行时,使用操作系统的PSW中的程序计数器。程序计数器可被递增等于当前指令的字节数的量。精简指令集计算(RISC)指令可以是固定长度的,而复杂指令集计算(CISC)指令可以是可变长度的。IBM的指令是长度为2、4或6字节的CISC指令。程序计数器461可以例如通过上下文切换操作或分支指令的分支采取操作来修改。在上下文切换操作中,当前的程序计数器值连同关于正被执行的程序的其它状态信息(诸如条件码)被保存在程序状态字中,并且新的程序计数器值被加载,指向要被执行的新程序模块的指令。可以执行分支采取操作,以便允许程序通过将分支指令的结果加载到程序计数器461中来在程序内做出决定或循环。
可以采用指令取出单元455来代表处理器426取出指令。取出单元取出“下一顺序指令”、分支采取指令的目标指令、或者在上下文切换后的程序的第一指令。现代的指令取出单元可以采用预取技术以基于可能使用被预取指令的可能性来推测性地预取指令。例如,取出单元可以取出16字节的指令,其包括下一顺序指令和其它顺序指令的附加字节。
然后,被取出的指令可以由处理器426执行。根据实施例,被取出的(一个或多个)指令可被传递到取出单元的分派单元456。分派单元对(一个或多个)指令解码,并将关于被解码的(一个或多个)指令的信息转发到适当的单元457、458、460。执行单元457可从指令取出单元455接收关于被解码的算术指令的信息,并可根据指令的操作码对操作数执行算术运算。操作数可以优选地从存储器425、架构寄存器459或从正被执行的指令的立即字段被提供给执行单元457。执行的结果在被存储时可以被存储在存储器425、寄存器459、或其它机器硬件(诸如控制寄存器、PSW寄存器等)中。
处理器426可包括用于执行指令的功能的一个或多个单元457、458、460。参考图18A,执行单元457可以通过接口逻辑471与架构通用寄存器459、解码/分派单元456、加载存储单元460、和其它处理器单元465通信。执行单元457可以采用若干寄存器电路467、468、469来保存算术逻辑单元(ALU)466进行操作的信息。ALU执行算术运算(诸如加、减、乘和除)以及逻辑功能(诸如与、或、异或(XOR)、循环移位)。优选地,ALU可以支持与设计相关的专用操作。其它电路可以提供其它架构设施472,例如包括条件码和恢复支持逻辑。ALU操作的结果可被保持在被配置为将结果转发到各种其它处理功能的输出寄存器电路470中。存在许多处理器单元的布置,本描述仅旨在提供一个实施例的代表性理解。
ADD指令例如可以在具有算术和逻辑功能的执行单元457中被执行,而浮点指令例如会在具有专用浮点能力的浮点执行中被执行。优选地,执行单元通过对操作数执行操作码定义的功能来对由指令标识的操作数进行操作。例如,ADD指令可以由执行单元457对在由指令的寄存器字段标识的两个寄存器459中找到的操作数执行。
执行单元457对两个操作数执行算术加法,并将结果存储在第三操作数中,其中第三操作数可以是第三寄存器或是两个源寄存器中的一个。执行单元优选地利用算术逻辑单元(ALU)466,其能够执行各种逻辑功能(诸如移位、循环、与、或和异或)以及各种代数功能(包括加、减、乘、除中的任何一种)。一些ALU 466被设计用于标量运算,一些用于浮点运算。数据可以是大端模式(其中最低有效字节在最高字节地址)或者是小端模式(其中最低有效字节在最低字节地址),这取决于体系架构。IBM是大端模式。带符号字段可以是符号和大小、1的补码或2的补码,这取决于体系架构。2的补码可以是有利的,因为ALU不需要设计减法能力,因为2的补码中的负值或正值仅需要ALU内的加法。数字可以用速记来描述,例如,12位字段定义4,096字节块的地址,并且被描述为4K字节(千字节)块。
参考图18B,用于执行分支指令的分支指令信息可被发送到分支单元458,其通常采用分支预测算法(诸如分支历史表482)以在其它条件操作完成之前预测分支的结果。当前分支指令的目标将在条件操作完成之前被取出并被推测性地执行。当条件操作完成时,基于条件操作的条件和推测结果,被推测性地执行的分支指令被完成或丢弃。分支指令可以测试条件码,并且如果条件码满足分支指令的分支要求,则分支到目标地址,目标地址可基于例如包括在寄存器字段或指令的立即字段中找到的数字的若干数字来计算。分支单元458可以采用具有多个输入寄存器电路475、476、477和输出寄存器电路480的ALU 474。分支单元458可与例如通用寄存器459、解码分派单元456或其它电路473通信。
一组指令的执行可能由于各种原因而被中断,这些原因例如包括由操作系统启动的上下文切换、导致上下文切换的程序异常或错误、导致上下文切换的I/O中断信号或多个程序在多线程环境中的多线程活动。优选地,上下文切换动作保存关于当前正执行的程序的状态信息,然后加载关于正被调用的另一程序的状态信息。状态信息可以被保存在例如硬件寄存器或存储器中。状态信息优选地包括指向要被执行的下一指令的程序计数器值、条件代码、存储器转换信息和架构寄存器内容。上下文切换活动可以由硬件电路、应用程序、操作系统程序或固件代码(例如微代码、微微代码或许可内码(LIC))单独或组合地实行。
处理器根据指令定义方法来访问操作数。指令可以使用指令的一部分的值来提供立即操作数,可以提供明确地指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个寄存器字段。指令可以利用由操作码字段标识的隐含寄存器作为操作数。指令可以将存储器位置用于操作数。操作数的存储器位置可以由寄存器、立即字段、或寄存器与立即字段的组合来提供,如由长位移工具所例示的,其中指令定义基址寄存器、索引寄存器和立即字段,即位移字段,它们被加在一起以提供例如操作数在存储器中的地址。除非另外指出,否则本文中的位置可以意指主存储器中的位置。
参考图18C,处理器使用加载/存储单元460来访问存储。加载/存储单元460可通过获得存储器453中的目标操作数的地址并将操作数加载到寄存器459或另一存储器453位置来执行加载操作,或者可通过获得存储器453中的目标操作数的地址并将从寄存器459或另一存储器453位置获得的数据存储在存储器453中的目标操作数位置中来执行存储操作。加载/存储单元460可以是推测性的,并且可以以相对于指令序列无序的序列访问存储器,然而,加载/存储单元460要对程序保持指令按顺序被执行的外观。加载/存储单元460可以与通用寄存器459、解码/分派单元456、缓存/存储器接口453或其它元件483通信,并且包括各种寄存器电路、ALU 485和控制逻辑490以计算存储地址并提供流水线排序以保持操作有序。一些操作可以是无序的,但加载/存储单元提供使无序操作对程序看起来像是已被按序执行的功能。
优选地,应用程序“看见”的地址通常被称为虚拟地址。虚拟地址有时也被称为“逻辑地址”和“有效地址”。这些虚拟地址是虚拟的,因为它们通过各种动态地址转换(DAT)技术中的一种来被重定向到物理存储器位置,这些DAT技术包括但不限于仅用偏移值对虚拟地址加前缀,经由一个或多个转换表来转换虚拟地址,转换表优选地至少包括段表和页表单独或相组合,优选地,段表具有指向页表的条目。在中,提供了转换层次结构,其包括区域第一表、区域第二表、区域第三表、段表以及可选的页表。地址转换的性能通常通过利用转换后备缓冲器(TLB)来改进,转换后备缓冲器包括将虚拟地址映射到相关联的物理存储器位置的条目。当DAT使用转换表来转换虚拟地址时,创建这些条目。然后,对虚拟地址的后续使用可利用快速TLB的条目,而非慢速顺序转换表访问。TLB内容可由包括最近最少使用(LRU)的各种置换算法来管理。
多处理器系统的每个处理器负责保持诸如I/O、高速缓存、TLB和存储器的共享资源被互锁以用于一致性。在维持高速缓存一致性时可以利用所谓的“侦测”技术。在侦测环境中,每个缓存行可被标记为处于共享状态、独占状态、改变状态、无效状态等中的任何一个,以便于共享。
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”子例程或驱动程序中或者在对特定硬件提供驱动程序的一些其它方法中被实现。
在图19中,提供了仿真主机架构的主机计算机系统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以直接寻址目标处理器来将中断信号转发到目标处理器以用于处理。
2.根据项1所述的方法,存储器在被分配给第一客户操作系统的第二存储器区段中包括具有每中断目标ID的定向中断概括指示符的定向中断概括向量,每个定向中断概括指示符被分配给中断目标ID以指示是否存在被寻址到相应的中断目标ID的第一中断信号要被处理,
存储器在第一存储器区段中包括转发向量,转发向量包括第一组转发向量条目,第一组转发向量条目包括用于定向中断概括向量的每个定向中断概括指示符的被分配给相应的定向中断概括指示符的转发向量条目,每个转发向量条目指示它被分配给的相应的定向中断概括指示符是否要被更新以便向第一操作系统指示存在被寻址到相应的中断目标ID的第一中断信号要被处理,
该方法还包括:
由总线附接设备检查目标处理器是否被调度以由第一客户操作系统使用,
如果目标处理器被调度以由第一客户操作系统使用,则执行转换和直接转发,
否则,由总线附接设备使用广播来将用于处理的第一中断信号转发到第一操作系统,该广播包括:由总线附接设备选择第一组转发向量条目中被分配给所接收的中断目标ID的转发向量条目,以及更新所选择的转发向量条目,以使得它指示它被分配给的定向中断概括指示符要被更新以便向第一操作系统指示存在被寻址到相应的中断目标ID的第一中断信号要被处理。
3.根据项2所述的方法,第一存储器区段还包括客户机中断表,客户机中断表包括第一组客户机中断表条目,第一组客户机中断表条目包括用于定向中断概括向量的每个定向中断概括指示符的定向中断概括地址指示符,其中相应的定向中断概括地址指示符指示相应的定向中断概括指示符在第二存储器区段中的存储器地址,
第一组转发向量条目中的转发向量条目的分配是使用客户机中断表来实现的,其中述第一组转发向量条目中的每个转发向量被分配了第一组客户机中断表条目中的客户机中断表条目,相应的客户机中断表条目的定向中断概括地址指示符指示相应的转发向量条目被分配给的定向中断概括的存储器地址。
4.根据项2至3中任一项所述的方法,转发向量条目每一个被实现为单个位。
5.根据项2至4中任一项所述的方法,定向中断概括向量被实现为存储器中的连续区域。
6.根据项2到5中任一项所述的方法,定向中断概括指示符每一个被实现为单个位。
7.根据前述权利要求中任一项所述的方法,中断表条目的所取回的副本还包括指示被分配给所接收的中断目标ID的转发向量条目在第一存储器区段中的存储器地址的转发向量条目地址指示符,该方法还包括:由总线附接设备使用由中断表条目的所取回的副本所包括的转发向量条目地址指示符来识别被分配给所接收的中断目标ID的转发向量条目。
8.根据前述权利要求中任一项所述的方法,中断表条目的所取回的副本还包括指示由中断目标ID标识的目标处理器是否被调度以由第一客户操作系统使用的运行指示符,该方法还包括:由总线附接设备使用由中断表条目的副本所包括的运行指示符来检查目标处理器是否被调度以由第一客户操作系统使用。
9.根据前述项中任一项所述的方法,中断表条目的所取回的副本还包括:标识第一客户操作系统被分配到的逻辑分区的第一逻辑分区ID,以及指示被分配给所述第一客户操作系统的客户机中断状态区域在第一存储器区段中的存储器地址的第一客户机中断状态区域地址指示符。
10.根据项10所述的方法,被分配给第一客户操作系统的客户机中断状态区域包括未决中断指示符,该未决中断指示符指示以用于由所述第一操作系统使用广播来处理的到所述第一操作系统的第一中断信号是否是未决的,
该方法还包括:如果使用广播来转发第一中断信号,则由总线附接设备更新未决中断指示符,以使得更新后未决中断指示符指示用于由第一操作系统使用广播来处理的第一中断信号是未决的。
11.根据前述权利要求中任一项所述的方法,该方法还包括:由总线附接设备从设备表取回设备表条目的副本,设备表条目包括指示中断表的存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来取回中断表条目的第一副本。
12.根据项12所述的方法,设备表被存储在存储器的第三存储器区段中,述第三存储器区段被保护以免被第一操作系统和第二操作系统访问。
13.根据项13所述的方法,设备表条目的所取回的副本还包括:标识第一客户操作系统被分配到的逻辑分区的第二逻辑分区ID,以及指示被分配给第一客户操作系统的客户机中断状态区域在第一存储器区段中的存储器地址的第二客户机中断状态区域地址指示符,
该方法还包括:由总线附接设备使用由被存储在可由第二客户操作系统访问的第一存储器区段中的中断表条目提供的第一逻辑分区ID和第一客户机中断状态区域地址指示符的第一组合与由被存储在被保护的第三存储器区段中的设备表条目提供的第二逻辑分区ID和第二客户机中断状态区域地址指示符的第二组合的比较,来检查中断表条目未被第二客户操作系统改变,第一组合和所述第二组合的匹配指示中断表条目未被改变。
14.根据项12到14中任一项所述的方法,设备表条目还包括标识客户操作系统被分配到的逻辑分区的逻辑分区ID,由总线附接设备转发所述第一中断信号还包括与第一中断信号一起转发逻辑分区ID。
15.根据项12到15中任一项所述的方法,设备表条目还包括标识第一中断信号被分配到的中断子类的中断子类ID,由总线附接设备转发第一中断信号还包括与第一中断信号一起转发中断子类ID。
16.根据前述项中的任一项所述的方法,第二存储器区段还包括被分配给相应的中断目标ID的每中断目标ID的定向第一中断信号向量,每个定向第一中断信号向量包括被分配给第一总线连接模块的每第一总线连接模块的第一中断信号指示符,每个定向第一中断信号向量指示是否存在由第一总线连接模块发出并被寻址到相应的中断目标ID的第一中断信号要被处理,
该方法还包括:
由总线附接设备选择被分配给所述第一中断信号被寻址到的中断目标ID的定向第一中断信号向量,
由总线附接设备在所选择的定向第一中断信号向量中选择被分配给发出第一中断信号的第一总线连接模块的定向第一中断信号指示符,
由总线附接设备更新所选择的定向第一中断信号指示符,以使得更新后定向第一中断信号指示符指示存在由第一总线连接模块发出并被寻址到相应的中断目标ID的第一中断信号要被处理。
17.根据前述项中的任一项所述的方法,第一中断信号采用消息信号中断的形式来接收,包括目标处理器的中断目标ID。
18.根据前述项中的任一项所述的方法,第二存储器区段还包括具有每总线连接模块的中断概括指示符的中断概括向量,每个中断概括指示符被分配给总线连接模块以指示是否存在由相应的总线连接模块发出的中断信号要被处理,
转发向量包括第二组转发向量条目,第二组转发向量条目包括用于中断概括向量的每个中断概括指示符的被分配给相应的中断概括指示符的转发向量条目,每个转发向量条目指示它被分配给的相应的中断概括指示符是否要被更新以便向第一操作系统指示存在由相应的总线连接模块发出的第一中断信号要被处理,
该方法还包括:
由总线附接设备从第二总线连接模块接收具有中断目标ID的第二中断信号,中断目标ID将被分配以由第一客户操作系统使用的处理器中的一个处理器标识为用于处理第二中断信号的第二目标处理器,
由总线附接设备检查第二目标处理器是否被调度以由第一客户操作系统使用,
如果第二目标处理器被调度以由第一客户操作系统使用,则由总线附接设备将所接收的中断目标ID转换成逻辑处理器ID,并使用从转换得到的逻辑处理器ID以直接寻址第二目标处理器来将第二中断信号转发到第二目标处理器以用于处理,
否则,由总线附接设备使用广播来将用于处理的第二中断信号转发到第一操作系统,该广播包括:由总线附接设备选择第二组转发向量条目中被分配给所接收的中断目标ID的转发向量条目,以及更新所选择的转发向量条目,以使得它指示它被分配给的中断概括指示符要被更新以便向第一操作系统指示存在由第二总线连接模块发出的第一中断信号要被处理。
19.根据项19所述的方法,
客户机中断表包括第二组客户机中断表条目,第二组客户机中断表条目包括用于中断概括向量的每个中断概括指示符的中断概括地址指示符,其中相应的中断概括地址指示符指示相应的中断概括指示符在第二存储器区段中的存储器地址,
第二组转发向量条目中的转发向量条目的分配是使用客户机中断表来实现的,其中第二组转发向量条目中的每个转发向量被分配了第二组客户机中断表条目中的客户机中断表条目,相应的客户机中断表条目的定向中断概括地址指示符指示相应的转发向量条目被分配给的中断概括指示符的存储器地址。
20.根据项19到20中的任一项所述的方法,第二存储器区段还包括被分配给相应的总线连接模块的每总线连接模块的中断信号向量,每个中断信号向量包括被分配给相应的总线连接模块的每中断目标ID的中断信号指示符,每个中断信号向量指示是否存在由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号要被处理,
该方法还包括:
由总线附接设备选择被分配给第二总线连接模块的定向中断信号向量,
由总线附接设备在所选择的中断信号向量中选择被分配给第二中断信号被寻址到的中断目标ID的中断信号指示符,
由总线附接设备更新所选择的中断信号指示符,以使得更新后中断信号指示符指示存在由第二总线连接模块发出并被寻址到相应的中断目标ID的中断信号要被处理。
21.根据前述项中的任一项所述的方法,第一客户操作系统是第二级虚拟化的客户操作系统,第二客户操作系统是第一级虚拟化的客户操作系统。
22.根据前述项中的任一项所述的方法,第一客户操作系统是第三级虚拟化的客户操作系统,第二客户操作系统是第二级虚拟化的客户操作系统。
23.一种用于向第一客户操作系统提供中断信号的计算机系统,该中断信号使用被分配以由第一客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,计算机系统还包括经由总线和总线附接设备与多个处理器可操作地连接的一个或多个总线连接模块,计算机系统还包括与总线附接设备可操作地连接的存储器,
多个处理器中的每个处理器被分配有逻辑处理器ID,该逻辑处理器ID由总线附接设备使用以寻址相应的处理器,
被分配以由第一客户操作系统使用的多个处理器中的每个处理器还被分配有中断目标ID,该中断目标ID由第一客户操作系统和一个或多个第一总线连接模块使用以寻址相应的处理器,
第一客户操作系统是使用第二客户操作系统作为托管第一客户操作系统的主机来实现的,
计算机系统被配置为执行一种方法,所述方法包括:
由总线附接设备从总线连接模块之一接收具有中断目标ID的中断信号,该中断目标ID将被分配以由第一客户操作系统使用的处理器中的一个处理器标识为用于处理中断信号的目标处理器,
由总线附接设备从被存储在存储器的被分配给所述第二客户操作系统的第一存储器区段中的中断表取回被分配给所接收的中断目标ID的中断表条目的第一副本,该中断表条目的第一副本包括所接收的中断目标ID到逻辑处理器ID的映射,
由总线附接设备使用中断表条目的第一副本来将所接收的中断目标ID转换成所述逻辑处理器ID,
由总线附接设备使用从转换得到的逻辑处理器ID以直接寻址目标处理器来将中断信号转发到目标处理器以用于处理。
24.一种用于向第一客户操作系统提供中断信号的计算机程序产品,该中断信号使用被分配以由第一客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,计算机系统还包括经由总线和总线附接设备与多个处理器可操作地连接的一个或多个总线连接模块,计算机系统还包括与总线附接设备可操作地连接的存储器,
多个处理器中的每个处理器被分配有逻辑处理器ID,该逻辑处理器ID由总线附接设备使用以寻址相应的处理器,
被分配以由第一客户操作系统使用的多个处理器中的每个处理器还被分配有中断目标ID,该中断目标ID由第一客户操作系统和一个或多个第一总线连接模块使用以寻址相应的处理器,
第一客户操作系统是使用第二客户操作系统作为托管第一客户操作系统的主机来实现的,
计算机程序产品包括计算机可读非暂时性介质,计算机可读非暂时性介质可由处理电路读取并存储用于由处理电路执行以执行一种方法的指令,该方法包括:
由总线附接设备从总线连接模块之一接收具有中断目标ID的中断信号,该中断目标ID将被分配以由第一客户操作系统使用的处理器中的一个处理器标识为用于处理中断信号的目标处理器,
由总线附接设备从被存储在存储器的被分配给第二客户操作系统的第一存储器区段中的中断表取回被分配给所接收的中断目标ID的中断表条目的第一副本,该中断表条目的第一副本包括所接收的中断目标ID到逻辑处理器ID的映射,
由总线附接设备使用中断表条目的第一副本来将所接收的中断目标ID转换成逻辑处理器ID,
由总线附接设备使用从转换得到的逻辑处理器ID以直接寻址目标处理器来将中断信号转发到目标处理器以用于处理。
Claims (24)
1.一种用于向第一客户操作系统提供中断信号的方法,所述中断信号使用被分配以由所述第一客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,所述计算机系统还包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,所述计算机系统还包括与所述总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配有逻辑处理器ID,所述逻辑处理器ID由所述总线附接设备使用以寻址相应的处理器,
被分配以由所述第一客户操作系统使用的所述多个处理器中的每个处理器还被分配有中断目标ID,所述中断目标ID由所述第一客户操作系统和所述一个或多个第一总线连接模块使用以寻址相应的处理器,
所述第一客户操作系统是使用第二客户操作系统作为托管所述第一客户操作系统的主机来实现的,
所述方法包括:
由所述总线附接设备从所述总线连接模块之一接收具有中断目标ID的中断信号,所述中断目标ID将被分配以由所述第一客户操作系统使用的所述处理器中的一个处理器标识为用于处理所述中断信号的目标处理器,
由所述总线附接设备从被存储在所述存储器的被分配给所述第二客户操作系统的第一存储器区段中的中断表取回被分配给所接收的中断目标ID的中断表条目的第一副本,所述中断表条目的所述第一副本包括所接收的中断目标ID到逻辑处理器ID的映射,
由所述总线附接设备使用所述中断表条目的所述第一副本来将所接收的中断目标ID转换成所述逻辑处理器ID,
由所述总线附接设备使用从所述转换得到的所述逻辑处理器ID以直接寻址所述目标处理器来将所述中断信号转发到所述目标处理器以用于处理。
2.根据权利要求1所述的方法,其中,所述存储器在被分配给所述第一客户操作系统的第二存储器区段中包括具有每中断目标ID的定向中断概括指示符的定向中断概括向量,每个定向中断概括指示符被分配给中断目标ID以指示是否存在被寻址到相应的中断目标ID的第一中断信号要被处理,
所述存储器在所述第一存储器区段中包括转发向量,所述转发向量包括第一组转发向量条目,所述第一组转发向量条目包括用于所述定向中断概括向量的每个所述定向中断概括指示符的被分配给相应的定向中断概括指示符的转发向量条目,每个转发向量条目指示它被分配给的相应的定向中断概括指示符是否要被更新以便向所述第一操作系统指示存在被寻址到相应的中断目标ID的第一中断信号要被处理,
所述方法还包括:
由所述总线附接设备检查所述目标处理器是否被调度以由所述第一客户操作系统使用,
如果所述目标处理器被调度以由所述第一客户操作系统使用,则执行所述转换和直接转发,
否则,由所述总线附接设备使用广播来将用于处理的所述第一中断信号转发到所述第一操作系统,所述广播包括:由所述总线附接设备选择所述第一组转发向量条目中被分配给所接收的中断目标ID的转发向量条目,以及更新所选择的转发向量条目,以使得它指示它被分配给的所述定向中断概括指示符要被更新以便向所述第一操作系统指示存在被寻址到相应的中断目标ID的第一中断信号要被处理。
3.根据权利要求2所述的方法,其中,所述第一存储器区段还包括客户机中断表,所述客户机中断表包括第一组客户机中断表条目,所述第一组客户机中断表条目包括用于所述定向中断概括向量的每个所述定向中断概括指示符的定向中断概括地址指示符,其中相应的定向中断概括地址指示符指示相应的定向中断概括指示符在所述第二存储器区段中的存储器地址,
所述第一组转发向量条目中的所述转发向量条目的分配是使用所述客户机中断表来实现的,其中所述第一组转发向量条目中的每个转发向量被分配了所述第一组客户机中断表条目中的客户机中断表条目,相应的客户机中断表条目的定向中断概括地址指示符指示相应的转发向量条目被分配给的所述定向中断概括的所述存储器地址。
4.根据权利要求2所述的方法,其中,所述转发向量条目每一个被实现为单个位。
5.根据权利要求2所述的方法,其中,所述定向中断概括向量被实现为存储器中的连续区域。
6.根据权利要求2所述的方法,其中,所述定向中断概括指示符每一个被实现为单个位。
7.根据权利要求1所述的方法,其中,所述中断表条目的所取回的副本还包括指示被分配给所接收的中断目标ID的所述转发向量条目在所述第一存储器区段中的存储器地址的转发向量条目地址指示符,所述方法还包括:由所述总线附接设备使用由所述中断表条目的所取回的副本所包括的所述转发向量条目地址指示符来识别被分配给所接收的中断目标ID的所述转发向量条目。
8.根据权利要求1所述的方法,其中,所述中断表条目的所取回的副本还包括指示由所述中断目标ID标识的所述目标处理器是否被调度以由所述第一客户操作系统使用的运行指示符,所述方法还包括:由所述总线附接设备使用由所述中断表条目的所述副本所包括的所述运行指示符来检查所述目标处理器是否被调度以由所述第一客户操作系统使用。
9.根据权利要求8所述的方法,其中,所述中断表条目的所取回的副本还包括:标识所述第一客户操作系统被分配到的逻辑分区的第一逻辑分区ID,以及指示被分配给所述第一客户操作系统的客户机中断状态区域在所述第一存储器区段中的存储器地址的第一客户机中断状态区域地址指示符。
10.根据权利要求9所述的方法,其中,被分配给所述第一客户操作系统的所述客户机中断状态区域包括未决中断指示符,所述未决中断指示符指示指示用于由第一操作系统使用广播来处理的到第一操作系统的第一中断信号是否是未决的,
所述方法还包括:如果使用广播来转发所述第一中断信号,则由所述总线附接设备更新所述未决中断指示符,以使得更新后未决中断指示符指示用于由所述第一操作系统使用广播来处理的第一中断信号是未决的。
11.根据权利要求1所述的方法,所述方法还包括:由所述总线附接设备从设备表取回设备表条目的副本,所述设备表条目包括指示所述中断表的存储器地址的中断表地址指示符,所述总线附接设备使用所述中断表的所述存储器地址来取回所述中断表条目的所述第一副本。
12.根据权利要求11所述的方法,其中,所述设备表被存储在所述存储器的第三存储器区段中,所述第三存储器区段被保护以免被所述第一操作系统和所述第二操作系统访问。
13.根据权利要求12所述的方法,其中,所述设备表条目的所取回的副本还包括:标识所述第一客户操作系统被分配到的所述逻辑分区的第二逻辑分区ID,以及指示被分配给所述第一客户操作系统的所述客户机中断状态区域在所述第一存储器区段中的所述存储器地址的第二客户机中断状态区域地址指示符,
所述方法还包括:由所述总线附接设备使用由被存储在可由所述第二客户操作系统访问的所述第一存储器区段中的所述中断表条目提供的所述第一逻辑分区ID和所述第一客户机中断状态区域地址指示符的第一组合与由被存储在被保护的第三存储器区段中的设备表条目提供的第二逻辑分区ID和第二客户机中断状态区域地址指示符的第二组合的比较,来检查所述中断表条目未被所述第二客户操作系统改变,所述第一组合和所述第二组合的匹配指示所述中断表条目未被改变。
14.根据权利要求11所述的方法,其中,所述设备表条目还包括标识所述客户操作系统被分配到的逻辑分区的逻辑分区ID,由所述总线附接设备转发所述第一中断信号还包括与所述第一中断信号一起转发所述逻辑分区ID。
15.根据权利要求11所述的方法,其中,所述设备表条目还包括标识所述第一中断信号被分配到的中断子类的中断子类ID,由所述总线附接设备转发所述第一中断信号还包括与所述第一中断信号一起转发所述中断子类ID。
16.根据权利要求1所述的方法,其中,所述第二存储器区段还包括被分配给相应的中断目标ID的每中断目标ID的定向第一中断信号向量,每个定向第一中断信号向量包括被分配给所述第一总线连接模块的每第一总线连接模块的第一中断信号指示符,每个定向第一中断信号向量指示是否存在由所述第一总线连接模块发出并被寻址到相应的中断目标ID的第一中断信号要被处理,
所述方法还包括:
由所述总线附接设备选择被分配给所述第一中断信号被寻址到的所述中断目标ID的所述定向第一中断信号向量,
由所述总线附接设备在所选择的定向第一中断信号向量中选择被分配给发出所述第一中断信号的所述第一总线连接模块的所述定向第一中断信号指示符,
由所述总线附接设备更新所选择的定向第一中断信号指示符,以使得更新后定向第一中断信号指示符指示存在由所述第一总线连接模块发出并被寻址到相应的中断目标ID的第一中断信号要被处理。
17.根据权利要求1所述的方法,其中,所述第一中断信号采用消息信号中断的形式来接收,包括所述目标处理器的所述中断目标ID。
18.根据权利要求1所述的方法,其中,所述第二存储器区段还包括具有每总线连接模块的中断概括指示符的中断概括向量,每个中断概括指示符被分配给总线连接模块以指示是否存在由相应的总线连接模块发出的中断信号要被处理,
所述转发向量包括第二组转发向量条目,所述第二组转发向量条目包括用于所述中断概括向量的每个所述中断概括指示符的被分配给相应的中断概括指示符的转发向量条目,每个转发向量条目指示它被分配给的相应的中断概括指示符是否要被更新以便向所述第一操作系统指示存在由相应的总线连接模块发出的第一中断信号要被处理,
所述方法还包括:
由所述总线附接设备从第二总线连接模块接收具有中断目标ID的第二中断信号,所述中断目标ID将被分配以由所述第一客户操作系统使用的所述处理器中的一个处理器标识为用于处理所述第二中断信号的第二目标处理器,
由所述总线附接设备检查所述第二目标处理器是否被调度以由所述第一客户操作系统使用,
如果所述第二目标处理器被调度以由所述第一客户操作系统使用,则由所述总线附接设备将所接收的中断目标ID转换成逻辑处理器ID,并使用从所述转换得到的所述逻辑处理器ID以直接寻址所述第二目标处理器来将所述第二中断信号转发到所述第二目标处理器以用于处理,
否则,由所述总线附接设备使用广播来将用于处理的所述第二中断信号转发到所述第一操作系统,所述广播包括:由所述总线附接设备选择所述第二组转发向量条目中被分配给所接收的中断目标ID的转发向量条目,以及更新所选择的转发向量条目,以使得它指示它被分配给的所述中断概括指示符要被更新以便向所述第一操作系统指示存在由所述第二总线连接模块发出的第一中断信号要被处理。
19.根据权利要求18所述的方法,其中,所述客户机中断表包括第二组客户机中断表条目,所述第二组客户机中断表条目包括用于所述中断概括向量的每个所述中断概括指示符的中断概括地址指示符,其中相应的中断概括地址指示符指示相应的中断概括指示符在所述第二存储器区段中的存储器地址,
所述第二组转发向量条目中的所述转发向量条目的分配是使用所述客户机中断表来实现的,其中所述第二组转发向量条目中的每个转发向量被分配了所述第二组客户机中断表条目中的客户机中断表条目,相应的客户机中断表条目的定向中断概括地址指示符指示相应的转发向量条目被分配给的所述中断概括指示符的所述存储器地址。
20.根据权利要求18所述的方法,其中,所述第二存储器区段还包括被分配给相应的总线连接模块的每总线连接模块的中断信号向量,每个中断信号向量包括被分配给相应的总线连接模块的每中断目标ID的中断信号指示符,每个中断信号向量指示是否存在由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号要被处理,
所述方法还包括:
由所述总线附接设备选择被分配给所述第二总线连接模块的所述定向中断信号向量,
由所述总线附接设备在所选择的中断信号向量中选择被分配给所述第二中断信号被寻址到的所述中断目标ID的所述中断信号指示符,
由所述总线附接设备更新所选择的中断信号指示符,以使得更新后中断信号指示符指示存在由所述第二总线连接模块发出并被寻址到相应的中断目标ID的中断信号要被处理。
21.根据权利要求1所述的方法,其中,所述第一客户操作系统是第二级虚拟化的客户操作系统,所述第二客户操作系统是第一级虚拟化的客户操作系统。
22.根据权利要求1所述的方法,其中,所述第一客户操作系统是第三级虚拟化的客户操作系统,所述第二客户操作系统是第二级虚拟化的客户操作系统。
23.一种用于向第一客户操作系统提供中断信号的计算机系统,所述中断信号使用被分配以由所述第一客户操作系统使用的所述计算机系统的多个处理器中的一个或多个处理器来执行,所述计算机系统还包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,所述计算机系统还包括与所述总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配有逻辑处理器ID,所述逻辑处理器ID由所述总线附接设备使用以寻址相应的处理器,
被分配以由所述第一客户操作系统使用的所述多个处理器中的每个处理器还被分配有中断目标ID,所述中断目标ID由所述第一客户操作系统和所述一个或多个第一总线连接模块使用以寻址相应的处理器,
所述第一客户操作系统是使用第二客户操作系统作为托管所述第一客户操作系统的主机来实现的,
所述计算机系统被配置为执行一种方法,所述方法包括:
由所述总线附接设备从所述总线连接模块之一接收具有中断目标ID的中断信号,所述中断目标ID将被分配以由所述第一客户操作系统使用的所述处理器中的一个处理器标识为用于处理所述中断信号的目标处理器,
由所述总线附接设备从被存储在所述存储器的被分配给所述第二客户操作系统的第一存储器区段中的中断表取回被分配给所接收的中断目标ID的中断表条目的第一副本,所述中断表条目的所述第一副本包括所接收的中断目标ID到逻辑处理器ID的映射,
由所述总线附接设备使用所述中断表条目的所述第一副本来将所接收的中断目标ID转换成所述逻辑处理器ID,
由所述总线附接设备使用从所述转换得到的所述逻辑处理器ID以直接寻址所述目标处理器来将所述中断信号转发到所述目标处理器以用于处理。
24.一种用于向第一客户操作系统提供中断信号的计算机程序产品,所述中断信号使用被分配以由所述第一客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,所述计算机系统还包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,所述计算机系统还包括与所述总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配有逻辑处理器ID,所述逻辑处理器ID由所述总线附接设备使用以寻址相应的处理器,
被分配以由所述第一客户操作系统使用的所述多个处理器中的每个处理器还被分配有中断目标ID,所述中断目标ID由所述第一客户操作系统和所述一个或多个第一总线连接模块使用以寻址相应的处理器,
所述第一客户操作系统是使用第二客户操作系统作为托管所述第一客户操作系统的主机来实现的,
所述计算机程序产品包括计算机可读非暂时性介质,所述计算机可读非暂时性介质可由处理电路读取并存储用于由所述处理电路执行以执行一种方法的指令,所述方法包括:
由所述总线附接设备从所述总线连接模块之一接收具有中断目标ID的中断信号,所述中断目标ID将被分配以由所述第一客户操作系统使用的所述处理器中的一个处理器标识为用于处理所述中断信号的目标处理器,
由所述总线附接设备从被存储在所述存储器的被分配给所述第二客户操作系统的第一存储器区段中的中断表取回被分配给所接收的中断目标ID的中断表条目的第一副本,所述中断表条目的所述第一副本包括所接收的中断目标ID到逻辑处理器ID的映射,
由所述总线附接设备使用所述中断表条目的所述第一副本来将所接收的中断目标ID转换成所述逻辑处理器ID,
由所述总线附接设备使用从所述转换得到的所述逻辑处理器ID以直接寻址所述目标处理器来将所述中断信号转发到所述目标处理器以用于处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19157100 | 2019-02-14 | ||
EP19157100.9 | 2019-02-14 | ||
PCT/EP2020/050499 WO2020164819A1 (en) | 2019-02-14 | 2020-01-10 | Directed interrupt for multilevel virtualization with interrupt table |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113412473A true CN113412473A (zh) | 2021-09-17 |
Family
ID=65440829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080013440.4A Pending CN113412473A (zh) | 2019-02-14 | 2020-01-10 | 具有中断表的用于多级虚拟化的定向中断 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11269794B2 (zh) |
EP (1) | EP3924819A1 (zh) |
JP (1) | JP7459119B2 (zh) |
CN (1) | CN113412473A (zh) |
WO (1) | WO2020164819A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
WO2020164935A1 (en) * | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
EP3924818A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
WO2020164819A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
EP3924822A4 (en) | 2019-02-14 | 2022-11-23 | International Business Machines Corporation | DIRECTED INTERRUPT VIRTUALIZATION WITH CLOCK FLAG |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
JP7335339B2 (ja) | 2019-02-14 | 2023-08-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 有向割り込みの仮想化方法、システム、プログラム |
WO2023140703A1 (en) * | 2022-01-20 | 2023-07-27 | Samsung Electronics Co., Ltd. | Method and electronic device for communication on single wire interface |
Family Cites Families (66)
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 |
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 |
US8453143B2 (en) | 2007-09-19 | 2013-05-28 | Vmware, Inc. | Reducing the latency of virtual interrupt delivery in virtual machines |
CN102016812B (zh) | 2008-04-28 | 2014-06-11 | 惠普开发有限公司 | 虚拟中断模式接口和用于虚拟化中断模式的方法 |
EP2157511B1 (fr) | 2008-08-19 | 2012-01-18 | STMicroelectronics Rousset SAS | Procédé d'acheminement d'un signal d'interruption directement vers une unité de traitement virtuelle dans un système à une ou plusieurs unités de traitement physiques |
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 | 北京航空航天大学 | 一种分布式虚拟机监视器系统的构建方法 |
CN101427916B (zh) | 2008-12-05 | 2012-02-22 | 张锦景 | 电生理数据与病理图像监测的移动网络终端装置及方法 |
US8180944B2 (en) * | 2009-01-26 | 2012-05-15 | Advanced Micro Devices, Inc. | Guest interrupt manager that records interrupts for guests and delivers interrupts to executing guests |
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 |
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 |
US20130318280A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9436626B2 (en) * | 2012-08-09 | 2016-09-06 | Freescale Semiconductor, Inc. | Processor interrupt interface with interrupt partitioning and virtualization enhancements |
US9442870B2 (en) | 2012-08-09 | 2016-09-13 | Freescale Semiconductor, Inc. | Interrupt priority management using partition-based priority blocking processor registers |
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 |
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 |
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 |
KR102509986B1 (ko) | 2016-03-28 | 2023-03-14 | 삼성전자주식회사 | 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법 |
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 |
US10838760B2 (en) | 2017-11-29 | 2020-11-17 | Nxp Usa, Inc. | Systems and methods for interrupt distribution |
TWI727607B (zh) | 2019-02-14 | 2021-05-11 | 美商萬國商業機器公司 | 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
EP3924822A4 (en) | 2019-02-14 | 2022-11-23 | International Business Machines Corporation | DIRECTED INTERRUPT VIRTUALIZATION WITH CLOCK FLAG |
EP3924818A1 (en) | 2019-02-14 | 2021-12-22 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
TWI764082B (zh) | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 |
TWI759677B (zh) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品 |
WO2020164935A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt virtualization with running indicator |
WO2020164819A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization with interrupt table |
JP7335339B2 (ja) | 2019-02-14 | 2023-08-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 有向割り込みの仮想化方法、システム、プログラム |
-
2020
- 2020-01-10 WO PCT/EP2020/050499 patent/WO2020164819A1/en unknown
- 2020-01-10 CN CN202080013440.4A patent/CN113412473A/zh active Pending
- 2020-01-10 JP JP2021541696A patent/JP7459119B2/ja active Active
- 2020-01-10 EP EP20700477.1A patent/EP3924819A1/en active Pending
- 2020-02-13 US US16/789,556 patent/US11269794B2/en active Active
-
2021
- 2021-09-22 US US17/482,192 patent/US11620244B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11269794B2 (en) | 2022-03-08 |
JP7459119B2 (ja) | 2024-04-01 |
US20220012198A1 (en) | 2022-01-13 |
EP3924819A1 (en) | 2021-12-22 |
JP2022520329A (ja) | 2022-03-30 |
WO2020164819A1 (en) | 2020-08-20 |
US11620244B2 (en) | 2023-04-04 |
US20200264994A1 (en) | 2020-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11829790B2 (en) | Directed interrupt virtualization with fallback | |
US11593153B2 (en) | Directed interrupt virtualization with interrupt table | |
US10922111B2 (en) | Interrupt signaling for directed interrupt virtualization | |
US11620244B2 (en) | Directed interrupt for multilevel virtualization with interrupt table | |
US11249927B2 (en) | Directed interrupt virtualization | |
US11734037B2 (en) | Directed interrupt virtualization with running indicator | |
US11822493B2 (en) | Directed interrupt for multilevel virtualization | |
CN113454591A (zh) | 具有阻止指示符的定向中断虚拟化 | |
JP7482882B2 (ja) | マルチレベルの仮想化のための有向割り込み方法、システム、プログラム |
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 |