CN113439261A - 用于定向中断虚拟化的中断信号发送 - Google Patents

用于定向中断虚拟化的中断信号发送 Download PDF

Info

Publication number
CN113439261A
CN113439261A CN202080013261.0A CN202080013261A CN113439261A CN 113439261 A CN113439261 A CN 113439261A CN 202080013261 A CN202080013261 A CN 202080013261A CN 113439261 A CN113439261 A CN 113439261A
Authority
CN
China
Prior art keywords
interrupt
target
processor
interrupt signal
assigned
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
Application number
CN202080013261.0A
Other languages
English (en)
Inventor
C·莱施
M·克雷默
B·纳兹
D·施密特
P·德里费尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN113439261A publication Critical patent/CN113439261A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • G06F2213/2414Routing of interrupt among interrupt handlers in processor system or interrupt controller

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)
  • Memory System Of A Hierarchy Structure (AREA)

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的中断信号正在等待被处理;由总线附接设备将中断信号转发到目标处理器。
附图说明
下面仅通过示例,参考附图更详细地解释本发明的实施例,其中:
图1描绘了示例性计算机系统的示意图,
图2描绘了示例性虚拟化方案的示意图,
图3描绘了示例性虚拟化方案的示意图,
图4描绘了示例性虚拟化方案的示意图,
图5描绘了示例性计算机系统的示意图,
图6描绘了示例性向量结构的示意图,
图7描绘了示例性向量结构的示意图,
图8描绘了示例性计算机系统的示意图,
图9描绘了示例性方法的示意性流程图,
图10描绘了示例性方法的示意性流程图,
图11描绘了示例性方法的示意性流程图,
图12描绘了示例性计算机系统的示意图,
图13描绘了示例性方法的示意性流程图,
图14描绘了示例性方法的示意性流程图,
图15描绘了示例性方法的示意性流程图,
图16描绘了示例性方法的示意性流程图,
图17描绘了示例性方法的示意性流程图,
图18描绘了示例性数据结构的示意图,
图19描绘了示例性方法的示意性流程图,
图20描绘了示例性计算机系统的示意图,
图21描绘了示例性计算机系统的示意图,
图22描绘了示例性计算机系统的示意图,
图23描绘了示例性计算机系统的示意图,
图24描绘了示例性单元的示意图,以及
图25描绘了示例性计算机系统的示意图。
具体实施方式
本发明的各种实施例的描述将出于说明的目的而被呈现,但并不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。本文所使用的术语被选择以最好地解释实施例的原理、对市场上存在的技术的实际应用或技术改进、或使本领域的其他普通技术人员能够理解本文所公开的实施例。
实施例可具有使总线附接设备能够直接寻址目标处理器的有益效果。因此,通过发出总线连接模块选择目标处理器ID,中断信号可以以多处理器计算机系统的特定处理器(即目标处理器)为目标。例如,处理器可被选择作为中断信号的目标处理器,该处理器先前已经执行了与中断相关的活动。由同一处理器将中断信号处理为相应的活动可以导致性能优势,因为在同一处理器也处理中断信号的情况下,在该中断的上下文中的所有数据可能已经对处理器可用和/或被存储在本地高速缓存中,使得能够快速访问相应的处理器而不需要大量的高速缓存业务。
因此,可以避免中断信号的广播,对于该广播,从性能的观点来看,例如高速缓存流量最小化,不能保证将最后处理中断的处理器是最适合于该任务的。不是将中断信号提供给所有处理器,其中每个处理器试图处理它而一个处理器获胜,而是中断信号可以被直接提供给目标处理器,从而提高中断信号处理的效率。
中断机制可以使用定向中断来实现。当总线附接设备将用于处理的中断信号转发到由发出总线连接模块定义的目标处理器时,可以使总线附接设备能够使用目标处理器的逻辑处理器ID来直接寻址目标处理器。由总线连接设备将中断目标ID转换成逻辑处理器ID可以进一步确保从客户操作系统的角度看,总是同一个处理器被寻址,即使中断目标ID与逻辑处理器ID之间的映射或被调度以由客户操作系统使用的处理器的选择可以由管理程序改变。
定向中断信号向量根据目标处理器ID来排序,即,被优化以跟踪定向中断。换句话说,主要顺序标准是目标处理器ID而不是标识发出总线连接模块的请求方ID。取决于总线连接模块的数量,每个定向中断信号向量可以包括一个或多个定向中断信号指示符。
因此,可以避免指示单独的中断信号(例如采用MSI-X消息的形式) 已经在用于单独的总线连接模块(例如PCIe功能)的连续的存储器区域 (例如缓存行)内被顺序地接收到的中断信号指示符(例如采用中断信令位的形式)的排序。例如通过设置和/或重置中断信令位来启用和/或禁用中断信号指示符需要相应的连续的存储器区域被移动到一个处理器以相应地改变相应的中断信号指示符。
从客户操作系统的角度,可以预期处理器处理它负责的所有指示符,即,尤其是被分配给相应的处理器的所有指示符。这可以实现性能优势,因为在每个处理器都在处理被分配给它的所有数据的情况下,在该上下文中需要的数据被提供给处理器和/或被存储在本地高速缓存中的可能性可能很高,从而使得能够快速访问用于处理器的相应数据而不需要大量的高速缓存业务。
然而,每个处理器试图处理它所负责的所有指示符可能仍然导致处理器之间高的高速缓存业务,因为每个处理器需要针对所有功能写所有缓存行。因为被分配给每个单独处理器的指示符可以被分布在所有的连续区域 (例如缓存行)上。
中断信令指示符可以采用定向中断信令向量的形式被重新排序,以使得被分配给相同中断目标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的中断信号要被处理。
当中断不能被直接传递时,例如因为管理程序还没有调度目标处理器,客户操作系统可以通过使用广播来传递具有最初预期亲和性(即中断曾被预期用于哪个处理器的信息)的中断而受益。在这种情况下,总线附接设备可以在设置DIBV之后并在向客户操作系统传递广播中断请求之前在 DISB中设置指定目标处理器的位。如果客户操作系统接收到广播中断请求,则它可因此通过扫描和禁用DISB中的直接中断概括指示符(例如扫描和重置直接中断概括位)来识别哪些目标处理器具有在DIBV中未决为被信号发送的中断信号。因此,可以使得客户操作系统能够决定中断信号是由接收到广播的当前处理器处理还是被进一步转发到原始目标处理器。
根据实施例,定向中断概括向量被实现为存储器中的连续区域。实施例可具有以下有益效果:以最小化存储器空间并可快速且有效处理的形式提供定向中断概括向量。连续区域可以是例如单个缓存行。根据实施例,定向中断概括指示符每一个被实现为单个位。实施例可具有以下有益效果:以最小化存储器空间并可快速且有效处理的形式提供定向中断概括指示符。
根据实施例,中断表条目进一步包括指示定向中断概括向量的存储器地址的定向中断概括向量地址指示符,其中总线附接设备使用定向中断概括向量的存储器地址来选择被分配给所接收的中断信号被寻址到的目标处理器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)中。
根据实施例,设备表条目的副本还包括指示目标处理器是否要被直接寻址的直接信令指示符,该直接信令指示符指示中断信号的直接转发是使用目标处理器的逻辑处理器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标识的目标处理器当前是否被阻止接收中断信号,目标处理器未被阻止是用于使用目标处理器的逻辑处理器ID以直接寻址目标处理器来执行中断信号的转发的另一要求,否则,使用广播将中断信号转发到第一操作系统以用于处理。
根据实施例,在存储器中的中断表的中断条目中引入直接中断阻止指示符。直接中断阻止指示符可以采用单个位(即dIBPIA位)的形式实现。
根据实施例,从存储器取出IRTE,检查运行指示符以便确定目标处理器是否被调度。在目标处理器被调度的情况下,启用直接中断阻止指示符,以便阻止目标处理器在处理当前中断信号的同时接收另一中断信号。否则,另一中断信号可干扰当前中断信号的处理。为了确保目标处理器在此期间还没有被重新调度,重新取出IRTE,并再次检查当前运行指示符,以便确定目标处理器是否仍然被调度。在目标处理器仍然被调度的情况下,可以使用目标处理器的逻辑处理器ID以直接寻址目标处理器来将中断信号转发到目标处理器。此外,可以检查由IRTE针对所接收的中断目标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管理程序,诸如由纽约阿蒙克的国际商业机器公司提供的
Figure BDA0003201722830000171
图3描绘了由计算机系统100提供的示例性多级虚拟机支持。除了图 2的第一级虚拟化之外,还提供了第二级虚拟化,其中第二管理程序210在第一级客户操作系统中充当第二管理程序210的主机操作系统的第一级客户操作系统上执行。第二管理程序210可管理一个或多个第二级虚拟机212,每个第二级虚拟机能够执行第二级客户操作系统212。
图4描绘了说明使用不同类型的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。
图5描绘了计算机系统100的简化的示意设置,其示出了在用于向在计算机系统100上执行的客户操作系统提供中断信号的方法中的主要参与方。出于说明的目的,简化的设置包括总线连接模块(BCM)120,其向在一个或多个处理器(CPU)130上执行的客户操作系统发送中断信号。中断信号与将处理器130之一标识为目标处理器的中断目标ID(IT_ID)一起被发送到总线附接设备110。总线附接设备110是管理总线连接模块 120与计算机系统100的处理器130以及存储器140之间的通信的中间设备。总线附接设备110接收中断信号,并使用中断目标ID来识别目标处理器的逻辑处理器ID,以便直接寻址相应的目标处理器。对目标处理器的定向转发可以例如通过减少高速缓存业务来提高数据处理的效率。
图6描绘了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来排序。
图7描绘了示例性DIBV 162。在被分配给中断目标ID的DIBV内的偏移(DIBVO)识别被分配给特定总线连接模块的向量的段或条目的开始。中断信号(例如MSI-X消息)可以提供DIBV-Idx,该DIBV-Idx被添加到DIBVO以标识被分配给总线连接模块的向量的特定条目,以标识被分配给相应的总线连接模块的位163,并且如果位163被设置,则指示存在从由位163标识的总线连接模块到相应的中断目标ID的中断信号地址。定向中断数(NOI)定义在DIBV中为相应的总线连接模块保留的最大位数。
图8描绘了图5的计算机系统100。总线附接设备110被配置为在存储器140的模块特定区域(MSA)149中执行总线连接模块120的状态的状态更新。这种状态更新可以响应于从总线连接模块接收指定要被写入存储器140的状态更新的直接存储器访问(DMA)写入来执行。
存储器还包括设备表(DT)144,其中对于每个总线连接模块120有一个设备表条目(DTE)146。在接收到具有标识用于中断请求的目标处理器的中断目标ID和标识采用总线连接模块120形式的中断请求的起源的请求方ID的中断信号(例如,MSI-X写消息)后,总线附接设备110取出被分配给请求总线连接模块120的DTE 146。DTE 146可以例如使用 dIRQ位来指示是否针对请求总线连接模块120启用目标处理器的定向寻址。总线附接设备更新定向中断信号向量(DIBV)162的条目以及定向中断概括向量(DISB)160,以便跟踪已接收到针对哪个处理器130的中断信号。DISB 160可包括每中断目标ID一个条目,其指示是否存在来自任何总线连接模块120的针对该处理器130的中断信号要被处理。每个DIBV 162被分配给中断目标ID(即处理器130)之一,并可包括一个或多个条目。每个条目被分配给总线连接模块120之一。因此,DIBV指示来自哪些总线连接模块存在针对特定处理器130的中断信号要被处理。这可以具有如下优点:为了检查是否存在任何中断信号要被处理或者从哪个总线连接模块120有针对特定处理器的中断信号要被处理,仅需要从存储器140 读取信号条目(例如位)或信号向量(例如位向量)。
总线附接设备110使用在总线连接模块110上提供的映射表112来将中断目标ID(IT_ID)转换为逻辑处理器ID(ICPU),并使用逻辑处理器ID以直接寻址目标处理器来将所接收的中断信号转发到目标处理器。每个处理器包括接收和处理直接中断信号的固件(例如毫代码132)。固件还可以包括例如处理器130的微代码和/或宏代码。它可以包括在更高级别机器代码的实现时使用的硬件级指令和/或数据结构。根据实施例,它可以包括可以作为微代码被传递的专有代码,该微代码包括底层硬件专用的可信软件或微代码,并控制操作系统对系统硬件的访问。
处理器130的固件包括检查逻辑134,用于根据由总线附接设备110 转发到接收处理器130的中断目标ID来检查接收处理器是否与目标处理器相同。在接收处理器130不是目标处理器的情况下,即在所接收的中断目标ID与接收处理器130的参考中断目标ID不匹配的情况下,中断信号被广播到逻辑分区,以便找到用于处理中断信号的处理器。
图9是用于使用DMA写请求来经由总线附接设备110执行总线连接模块120的状态更新的示例性方法的流程图。在步骤300中,总线连接模块可以决定更新它的状态并触发中断,例如以便指示信号完成。在步骤310 中,总线连接模块启动经由总线附接设备到被分配给在计算机系统上运行的主机的存储器的区段(即,主存储器)的直接存储器访问(DMA)写入,以便更新总线连接模块的状态。DMA是允许计算机系统的外围组件直接向主存储器传递其I/O数据和从主存储器传递其I/O数据而无需涉及系统处理器的硬件机制。为了执行DMA,总线连接模块向总线附接设备发送 DMA写请求,例如,采用MSI-X消息的形式。在PCIe的情况下,总线连接模块可以例如是指在PCIe适配器上提供的PCIe功能。在步骤320,总线连接模块接收具有总线连接模块的状态更新的DMA写请求,并使用所接收的更新来更新存储器。更新可以在为相应的总线连接模块保留的主机存储器的区域中执行。
图10是用于使用图8的计算机系统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。设备表条目的相应副本可以从高速缓存或从存储器中取出。
在步骤350中,总线附接设备更新在DTE中指定的向量。在步骤360 中,总线附接设备检查与中断信号一起提供的直接信令指示符。在直接信令指示符指示没有直接信令的情况下,总线附接设备使用区域标识符和中断子类标识符通过广播来转发中断信号,以便将中断信号提供给由客户操作系统使用的处理器。
在直接信令指示符指示没有直接信令的情况下,在步骤370中,中断信号经由广播被转发到处理器。广播消息包括区域ID和/或中断子类ID。当由处理器接收时,如果中断请求对于区域被启用,则例如根据嵌套通信协议来原子地设置状态位。此外,在该处理器上的固件(例如微代码)中断它的活动,例如程序执行,并切换以执行客户操作系统的中断处理程序。
在直接信令指示符指示直接信令的情况下,在步骤380,总线附接设备将与中断信号一起提供的中断目标ID转换为被分配以由客户操作系统使用的处理器的逻辑处理器ID。对于该转换,总线附接设备可以使用由总线附接设备包括的映射表。总线附接设备可包括每区(即,逻辑分区)的映射表或子表。
在步骤390中,总线附接设备使用逻辑处理器ID以直接寻址相应的处理器来将中断信号转发到目标处理器,即,发送直接消息。直接消息包括中断目标IS。直接消息还可以包括区域ID和/或中断子类ID。接收处理器包括中断目标ID检查逻辑。在中断目标ID是每逻辑分区仅唯一的情况下,检查逻辑还可以考虑逻辑分区ID。
在步骤392,检查逻辑检查所接收的中断目标ID和/或逻辑分区ID是否匹配当前被分配给接收处理器并对于检查逻辑可访问的中断目标ID和/ 或逻辑分区。在不匹配的情况下,在步骤394中,接收固件启动广播,并使用逻辑分区ID和/或中断子类ID来将所接收的中断请求广播到剩余处理器,以识别用于处理中断的有效目标处理器。在正匹配的情况下,在步骤396中,目标处理器的接收固件(例如毫代码)接受被直接寻址的中断以用于呈现给客户操作系统。作为响应,固件可以中断它的活动,例如程序执行,并切换以执行客户操作系统的中断处理程序。中断可以用直接信令指示来呈现给客户操作系统。
图11是进一步示出图8的方法的附加流程图,在步骤400中,中断消息被发送到总线附接设备。在步骤402中,接收中断消息。在步骤404中,检查被分配给中断请求方(即,总线连接模块)的DTE是否被缓存在可操作地与总线附接设备连接的本地高速缓存中。在DTE没有被缓存的情况下,在步骤406中,由总线附接设备从存储器中取出相应的DTE。在步骤408中,由DTE提供的向量地址指示符被用于在存储器中设置向量位。在步骤410中,使用由DTE提供的直接信令指示符来检查目标处理器是否将要由总线附接设备使用与中断信号一起提供的中断目标ID来直接寻址。在目标处理器不是要直接作为目标的情况下,该方法继续在步骤412中向处理器广播中断请求。在目标处理器要被直接作为目标的情况下,该方法继续在步骤414中将中断目标ID转换成逻辑处理器ID,并在步骤416中发送将中断信号转发到目标处理器的消息。逻辑处理器ID被用于直接寻址目标处理器。该消息包括中断目标ID、逻辑分区ID和中断子类ID。在步骤418中,处理器接收该消息。在步骤419中,处理器检查中断目标ID 和/或逻辑分区ID是否匹配被提供作为检查的参考的当前中断目标ID和/ 或逻辑分区ID。在匹配的情况下,在步骤420中,处理器向客户操作系统呈现中断请求。在不匹配的情况下,在步骤422中,处理器将中断请求广播到其它处理器。然后,处理器继续它的活动,直到接收下一个中断消息为止。
图12描绘了图5的计算机系统100的另一实施例。代替使用被存储在总线附接设备110上的映射表112,总线附接设备110而是取出被存储在存储器140中的中断表(IRT)150的条目(IRTE)152的副本114。副本可以从本地高速缓存中取出,或者使用由DTE 146的副本提供的中断表 150的地址(IRT@)从存储器140中取出。IRTE 152提供中断目标ID到逻辑处理器ID的映射,逻辑处理器ID由总线附接设备110使用以在定向中断转发的情况下直接寻址目标处理器。IRTE 152可另外提供运行指示符 154和/或阻止指示符146,运行指示符154指示由中断目标ID标识的目标处理器是否完全被调度(即运行),阻止指示符146指示目标处理器当前是否被阻止接收中断信号。在目标处理器未被调度或被临时阻止的情况下,可以启动广播以便实现及时的中断处理。
图13是用于使用图100的计算机系统100向客户操作系统提供中断信号的示例性方法的流程图。图11的方法在图8的步骤340之后继续步骤342。在步骤342中,总线附接设备使用与中断信号一起接收的中断目标ID以及由DTE提供的指示IRT的存储器的地址指示符来从存储器取出IRTE的副本。在步骤350中,总线附接设备更新在DTE中指定的向量。
在步骤360中,总线附接设备检查与中断信号一起提供的直接信令指示符。在直接信令指示符指示没有直接信令的情况下,在步骤370中,总线附接设备使用区域标识符和中断子类标识符通过广播来转发中断信号,以便将中断信号提供给由客户操作系统使用的处理器。在直接信令指示符指示直接信令的情况下,在步骤362中,总线附接设备进一步检查IRTE 的副本所包括的运行指示符是否指示由中断目标ID标识的目标处理器正在运行。
在目标处理器没有在运行的情况下,在步骤364中,总线附接设备使用例如逻辑分区ID和/或中断子类ID以识别适合于处理中断的处理器来发送广播中断作为回退。在没有找到匹配逻辑分区ID和/或中断子类ID的合适处理器的情况下,管理程序(即,被分配以由管理程序使用的处理器) 而不是被分配给客户操作系统的处理器可以接收中断请求。如果被分配给客户操作系统的一个或多个处理器被调度,则管理程序可以决定再次广播中断请求。对于被分配给操作系统的处理器的条目,管理程序可以检查要被呈现给进入处理器的直接中断未决指示符,例如dPIA位。根据实施例,管理程序可以例如选择性地重新调度(即唤醒)目标处理器。
在目标处理器正在运行的情况下,在步骤366,检查直接中断阻止指示符(例如dIBPIA位)是否被启用。被启用的直接中断阻止指示符指示中断传递当前不是客户操作系统中断处理程序所期望的。因此,在直接中断阻止指示符被启用的情况下,在步骤368中,可以广播中断信号。
如果直接中断阻止指示符被禁用以指示目标处理器当前未被阻止,则在步骤380中,通过转换所接收的中断目标ID来继续当前中断信号的传递,以便使用由IRTE提供的针对所接收的中断目标ID的逻辑处理器ID 来将中断直接转发到目标处理器。
在步骤380中,总线附接设备将与中断信号一起提供的中断目标ID 转换成被分配以由客户操作系统使用的处理器的逻辑处理器ID。对于该转换,总线附接设备可以使用由总线附接设备包括的映射表。总线附接设备可包括每区(即,逻辑分区)的映射表或子表。
在步骤390中,总线附接设备使用逻辑处理器ID以直接寻址相应的处理器来将中断信号转发到目标处理器,即,发送直接消息。直接消息包括中断目标IS。直接消息可以进一步包括区域ID和/或中断子类ID。接收处理器包括中断目标ID检查逻辑。在中断目标ID是每逻辑分区仅唯一的情况下,检查逻辑还可以考虑逻辑分区ID。
在步骤392,检查逻辑检查所接收的中断目标ID和/或逻辑分区ID是否匹配当前被分配给接收处理器并对于检查逻辑可访问的中断目标ID和/ 或逻辑分区。在不匹配的情况下,在步骤394中,接收固件启动广播,并使用逻辑分区ID和/或中断子类ID以识别用于处理中断的有效目标处理器来将所接收的中断请求广播到剩余处理器。在正匹配的情况下,在步骤 396中,目标处理器的接收固件(例如毫代码)接受被直接寻址的中断以用于呈现给客户操作系统。作为响应,固件可以中断它的活动,例如程序执行,并切换以执行客户操作系统的中断处理程序。中断可以用直接信令指示来呈现给客户操作系统。
图14是进一步示出图11的方法的附加流程图。如果目标处理器将被直接作为目标,则图12所示的方法在图9的步骤410之后继续。该方法继续在步骤413从存储器取出被分配给所接收的中断目标ID的IRTE的副本。在步骤413a,检查由IRTE所包括的运行指示符是否被启用。在运行指示符被禁用的情况下,在步骤413b中,中断信号可以由总线附接设备使用广播来转发。在运行指示符被启用的情况下,总线附接设备继续在步骤413c中检查定向阻止指示符是否被启用。在定向阻止指示符未被启用的情况下,总线附接设备继续在步骤414中使用所取出的IRTE的副本来将中断目标ID转换成逻辑处理器ID。否则,在步骤413d中可以抑制中断信号。
图15描绘了用于执行示例性二次获取方案以便确保所使用的IRTE 是最新的的方法。在步骤500中,中断信号(例如MSI-X消息)从总线连接模块120(例如,PCIe适配器或PCIe适配器上的PCIe功能)被发送到总线附接设备110(例如PCIe主桥(PHB))。在步骤502中,总线附接设备110向存储器140请求被分配给与中断信号一起提供的中断目标ID 的IRTE的第一副本。在步骤504,存储器140响应于该请求而发送IRTE 的副本。发送IRTE的副本的时间点标记IRTE确实是最新的最后时间点。在该时间点,时间窗口开始,在该时间窗口期间,IRTE可被更新并且由 IRTE的第一副本提供的数据可变得过时。时间窗口以中断由目标处理器 130处理而结束。从该时间点开始,IRTE的任何变化对于所接收的中断信号的处理不再有影响。在步骤506,总线附接设备110向IRTE发送请求以启用定向未决中断指示符,例如设置定向未决中断阵列(dPIA)位。被启用的定向未决中断指示符指示定向中断在等待中断目标ID。在步骤508 中,由存储器140确认定向未决中断指示符的设置。在步骤510中,中断信号使用直接寻址采用定向中断请求的形式被转发到由通过使用IRTE转换中断目标ID而得到的逻辑处理器ID标识的目标处理器130。随着目标处理器130接收到定向中断请求,时间窗口被关闭。在步骤512中,在时间窗口关闭后,由总线附接设备110从在存储器140中提供的IRTE读取 IRTE的第二副本。在步骤514,在接收到所请求的IRTE的第二副本后,总线附接设备110检查IRTE的第二副本是否与IRTE的第一副本匹配,即IRTE,特别是中断目标ID的映射,是否已改变。在匹配的情况下,该方法以在已经向客户操作系统呈现中断请求并处理该请求之后由目标处理器130重置IRTE中的定向未决中断指示符而结束。在不匹配的情况下,该方法可以继续步骤502。可替代地,该方法可以继续由总线附接设备110 广播所接收的中断信号。
图16描绘了用于执行IRTE的二次获取以便确保由IRTE提供的信息是最新的另一方法。在步骤600中,中断信号(例如MSI-X消息)从总线连接模块120(例如,PCIe适配器或PCIe适配器上的PCIe功能)被发送到总线附接设备110(例如PCIe主桥(PHB))。在步骤602中,总线附接设备110向存储器140请求被分配给与中断信号一起提供的中断目标ID的IRTE的副本。在步骤604,存储器140响应于该请求而发送IRTE 的第一副本。第一副本包括指示目标处理器被调度的运行指示符(例如,运行位R=1)、指示目标处理器当前未被阻止接收中断信号的定向中断阻止指示符(例如,定向阻止位dIBPIA=0)、以及逻辑处理器ID ICPU。逻辑处理器ID ICPU由总线附接设备110使用以直接寻址目标处理器130。由于运行指示符指示目标处理器130正在运行,因此,在步骤606,总线附接设备110在IRTE中启用定向中断未决指示符,例如设置dPIA=1,并且阻止目标处理器接收其它中断,例如设置dIBPIA=1。为了检查在此期间IRTE的内容还没有被改变,例如目标处理器130被去激活,在步骤 608中,通过请求重新读取IRTE来关闭临界时间窗口。在步骤610,存储器140响应于该请求而发送IRTE的第二当前副本。第二副本包括指示目标处理器130仍然被调度的运行指示符(例如,运行位R=1)、由总线附接设备启用的定向中断阻止指示符、以及与由IRTE的第一副本提供的 ICPU相同的逻辑处理器ID ICPU。由于运行指示符以及ICPU没有改变,因此,该方法在步骤612中继续使用ICPU来发送被直接寻址到目标处理器130的中断请求。目标处理器130将中断呈现给客户操作系统并处理该中断。当处理中断结束时,目标处理器130禁用定向中断未决指示符(例如,重置dPIA=0)以及定向中断阻止指示符(例如,重置dIBPIA=0)。
图17描绘了图14的方法的可替代流程图,其示出了IRTE所包括的信息在此期间改变的情况。在步骤600中,中断信号(例如MSI-X消息) 从总线连接模块120(例如PCIe适配器或PCIe适配器上的PCIe功能) 被发送到总线附接设备110(例如PCIe主桥(PHB))。在步骤602中,总线附接设备110向存储器140请求被分配给与中断信号一起提供的中断目标ID的IRTE的副本。在步骤604,存储器140响应于该请求而发送 IRTE的第一副本。第一副本包括指示目标处理器130被调度的运行指示符(例如,运行位R=1)以及逻辑处理器ID ICPU。逻辑处理器ID ICPU 由总线附接设备110使用以直接寻址目标处理器130。由于运行指示符指示目标处理器130正在运行,因此在步骤606,总线附接设备110在IRTE 中启用定向中断未决指示符,例如设置dPIA=1,并阻止目标处理器接收其它中断,例如设置dIBPIA=1。为了检查在此期间IRTE的内容没有被改变,例如目标处理器130被去激活,在步骤608中通过请求重新读取 IRTE来关闭临界时间窗口。在步骤610,存储器140响应于该请求而发送 IRTE的第二当前副本。在该示例中,目标处理器130在此期间已经针对客户操作系统被去激活。因此,第二副本包括指示目标处理器130不再被调度的运行指示符,例如运行位R=0。逻辑处理器ID ICPU可以与由 IRTE的第一副本提供的ICPU相同或不相同。定向中断阻止指示符仍然被总线附接设备启用。由于运行指示符和/或ICPU确实改变了,因此,该方法在步骤612中继续使用广播来向处理器发送中断请求。
图18描绘了示例性DTE 146,其包括IRT的存储器地址IRT@、逻辑分区ID(区域)和在被分配给中断目标ID的DIBV内的偏移(DIBVO)。 DIBVO识别被分配给特定总线连接模块的向量的段或条目的开始。中断信号(例如MSI-X消息)可以提供DIBV-Idx,其被添加到DIBVO以标识被分配给总线连接模块的向量的特定条目。此外,提供了定向中断数 (NOI),其定义在DIBV中为相应的总线连接模块保留的最大位数。DIBV 的进一步细节在图19A中示出。在AIBV的情况下,DTE可提供如图19B 所示的对应的AIBV特定参数。
此外,描绘了示例性IRTE 152。IRTE 152可以包括逻辑分区ID(区域)、中断子类ID(DISC)、DISB的存储器地址DISB@、DISB内的偏移DISBO以及被分配给目标处理器的中断目标ID的DIBV的存储器地址 DIBV。
图19A和19B示出了用于向客户操作系统提供中断信号的示例性方法。在步骤704中,总线连接模块(BCM)(例如PCI适配器上的虚拟功能,即PCI适配器(VF))发送中断信号。中断信号可以例如采用MSI- X消息MSI-X(VF,vCPU,DIBV-Idx)的形式被发送,其包括虚拟功能VF 的标识符、例如采用虚拟处理器ID vCPU形式的中断目标ID、以及定向中断信号向量内标识由该向量包括的条目(例如位)的偏移(例如DIBV- Idx)。在步骤706中,总线附接设备(BAD)(例如PCI主桥(PHB),也称为PCI桥单元(PBU))接收中断信号。
在步骤708中,PBU读取被分配给VF的设备表(DT)的条目。被存储在存储器的硬件系统区域(HSA)中的DT的条目被图示为表的行。DT 的条目可以包括中断表的地址(IRT@)以及指示是否要执行定向信令的定向信令位(S)。PBU使用IRT@以从HSA中取出被分配给vCPU的 IRT的条目,其包括指示vCPU是否正在运行的运行位(R)、指示vCPU 是否被阻止接收中断的定向中断阻止位(dIBPIA)、以及指示被定向到 vCPU的中断是否未决的定向中断未决位(dPIA)。在步骤700中,在较早时间点,已经发出了启动目标处理器从管理程序模式到客户机模式的状态改变的开始解释执行指令(SIE-Entry)。在步骤701中,在被分配给目标处理器的IRTE中R被设置为1,以及目标处理器的逻辑处理器ID (TrgtPU#)被提供。然后,该方法在702结束。对于固件和硬件,TrgtPU# 是指处理单元(1个物理PU)的物理ID,而对于zOS和逻辑分区(LPAR), TrgtPU#是指处理单元(逻辑PU)的逻辑ID。
在步骤710中,PBU使用来自MSI-X的DIBV-Idx来设置DIBV中被分配给vCPU的位,以便指示存在来自VF的以vCPU为目标的中断信号。在步骤712,PBU检查IRTE是否被阻止,即IRTE.dIBIA==1。在被分配给vCPU的IRTE并因由vCPU被阻止接收其它中断的情况下,该方法在步骤714结束。在IRTE未被阻止的情况下,该方法继续步骤716,其中PBU检查vCPU是否正在运行,即R在IRTE中是否被设置。
如果R被设置,则该方法继续步骤718以执行定向寻址。在步骤718 中,dlBPIA和dPIA在IRTE中被设置为1,指示vCPU当前被阻止接收中断信号并且被寻址到vCPU的中断是未决的。在步骤720,检查IRTE (更准确地,IRTE的R和/或TrgtPU#的状态)与步骤78中的IRTE相比是否改变。因此,实现读取IRTE两次的二次获取方案,以便确保在读取之间没有发生例如由于如步骤722中所示的另一客户机的SIE条目而导致的相关变化。
在步骤722中,在目标处理器上执行用于另一客户机的SIE条目指令。在步骤724中,其他客户机读取先前客户机的IRTE,并在步骤726中发出用于R的原子重置命令,即,设置R=0并指示vCPU不再运行。此外,从IRTE中读取dPIA。在步骤728,检查dPIA是否被设置(IRTE.dPIA =1),指示用于vCPU的中断仍然未决。如果没有中断未决,则该方法以步骤730结束。如果中断仍然未决,则在步骤732中,未决中断指示符 PU.dPIA在目标PU上被重置以及IRTE的IRTE.dPIA被重置,并且用于未决中断的广播被启动。因此,如果在步骤720中确定IRTE的相关变化,则中断被广播。
如果在步骤720中确定没有IRTE的相关变化,则该方法继续步骤734。在步骤734中,中断信号(定向PCI中断SYSOP)被定向转发到目标PU,目标PU也被称为定向PU。在步骤736中,定向PU接收定向PCI中断,并在步骤738中在定向PU上设置未决中断指示符PU.dPIA。在步骤739 中,检查定向PU是否被屏蔽,即一般地,被阻止接收和执行中断。如果定向PU被屏蔽,则该方法以步骤740结束。如果定向PU例如由于如步骤742所示的去屏蔽而未被屏蔽,则该方法继续在步骤744中由定向PU 的固件(例如毫代码)(mCode IO-Irpt)执行中断。在步骤746中,PU.dPIA 和IRTE.dPIA被重置以指示中断不再未决。
在步骤748中,操作系统中断处理程序(OS IO-Irpt)被调用,并且在步骤750中读取和重置在步骤710中设置的DIBV位。在步骤752中,在被分配给目标PU(即,定向PU)的DIBV的所有DIBV位上循环。因此,可以相继地处理目标PU的所有中断。在所有DIBV位都已经被处理的情况下,在步骤754中,通过重置IRTE.dIBPIA来对目标PU解除阻止(SIC.OC17)。此外,重新读取DIBV以便在步骤756中确定在此期间是否已经设置了另一个DIBV位。如果是这种情况,则处理相应的中断,否则该方法在步骤758结束。
如果在步骤716中的检查的结果是R没有被设置,则该方法继续步骤 760以执行广播作为回退。在步骤760中,在定向中断概括向量中启用定向中断概括指示符,例如设置一位。中断概括向量的每个位被分配给CPU,指示是否存在任何中断要由相应的CPU处理。在步骤764,中断被广播 (SIGI.enq.IBPIA),并在步骤766中由任意PU接收。在步骤768中,在用于相应的PU的IBPIA中设置阻止位,指示PU当前被阻止接收中断。在步骤770,检查IBPIA是否已经通过设置阻止位而被改变,即IBPIA是否0→1。如果IBPIA还没有被改变,即已经被阻止,则该方法在步骤772 结束。如果IBPIA已被改变,则在步骤774中,在用于相应的PU的PIA中设置未决位。在步骤776,检查PU是否被屏蔽,即一般地,被阻止接收和执行中断。如果PU被屏蔽,则该方法在步骤778结束。如果PU例如由于如步骤780所示的去屏蔽而未被屏蔽,则该方法继续在步骤782中由 PU的固件(例如毫代码)(mCode IO-Irpt)执行中断。在步骤784中,重置PIA中的未决位以指示中断不再是未决的。
在步骤786中,操作系统中断处理程序(OS IO-Irpt)被调用,并在步骤788中读取和重置在步骤760中设置的DISB位。在步骤790和792 中,向对应的定向PU发信号通知中断被处理。在步骤794中,在DISB阵列的所有DISB位上循环,每个位被分配给另一个PU。DISB概括所有要通过广播来处理的中断。中断根据它们所针对的PU来被排序。因此,所有要通过广播来处理的中断可以由PU相继地处理。在所有DISB位已经被处理的情况下,在步骤796中通过重置IBPIA来对PU解除阻止(SIC.OC1)。此外,DISB被重新读取以便在步骤798中确定在此期间是否已设置了另一个DISB位。如果是这种情况,则处理相应的中断,否则该方法在步骤799结束。
客户操作系统例如可以使用可分页存储模式客户机来实现。例如
Figure BDA0003201722830000321
中,可分页客户机可在解释级别2经由开始解释执行(SIE) 指令而被可解释地执行。例如,逻辑分区(LPAR)管理程序执行SIE指令以在物理固定存储器中开始逻辑分区。该逻辑分区中的操作系统(例如
Figure BDA0003201722830000322
)可发出SIE指令以执行在它的虚拟存储设备中的它的客户(虚拟) 机。因此,LPAR管理程序可以使用级别1SIE,而
Figure BDA0003201722830000323
管理程序可以使用级别2SIE。
根据实施例,计算机系统是由国际商业机器公司提供的
Figure BDA0003201722830000324
服务器。
Figure BDA0003201722830000325
是基于由国际商业机器公司提供的
Figure BDA0003201722830000326
关于
Figure BDA0003201722830000327
的细节在标题为“z/Architecture Principles of Operation (z/Architecture操作原理)”的
Figure BDA0003201722830000328
出版物(
Figure BDA0003201722830000329
出版号SA22-7832- 11,2017年8月25日)中描述,该出版物通过引用而整体被结合到本文中。
Figure BDA00032017228300003210
Figure BDA00032017228300003211
是在纽约阿蒙克的国际商业机器公司的注册商标。在本文中使用的其它名称可以是国际商业机器公司或其它公司的注册商标、商标或产品名称。
根据实施例,其它体系架构的计算机系统可以实现并使用本发明的一个或多个方面。作为示例,除了
Figure BDA00032017228300003212
服务器之外的服务器(诸如由国际商业机器公司提供的Power Systems服务器或其他服务器)或其他公司的服务器实现、使用和/或受益于本发明的一个或多个方面。进一步地,尽管在本文的示例中,总线连接模块和总线附接设备被认为是服务器的一部分,但是在其他实施例中,它们并不必需被认为是服务器的一部分,而可以仅被认为是耦合到计算机系统的系统存储器和/或其他组件。计算机系统不需要是服务器。进一步地,尽管总线连接模块可以是PCIe,但是本发明的一个或多个方面可使用其它总线连接模块。PCIe适配器和PCIe功能只是示例。进一步地,本发明的一个或多个方面可适用于除了PCI MSI和PCI MSI-X之外的中断方案。进一步地,尽管描述了在其中设置了位的示例,但在其它实施例中,可以设置字节或其它类型的指示符。此外,DTE 和其它结构可以包括更多、更少或不同的信息。
进一步地,其它类型的计算机系统可以受益于本发明的一个或多个方面。作为示例,适合于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦合到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间采用的本地存储器、大容量存储装置、以及提供至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储装置取回代码的次数的高速缓冲存储器。
输入/输出或I/O设备包括但不限于键盘、显示器、指示设备、DASD、磁带、CD、DVD、拇指驱动器和其它存储介质等,其可以直接或者通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,以使数据处理系统能够通过中间专用或公共网络而耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是几种可用的网络适配器类型。
参考图20,描绘了用于实现本发明的一个或多个方面的主机计算机系统800的代表性组件。代表性主机计算机800包括与计算机存储器802通信的一个或多个处理器(例如CPU 801)以及到存储介质设备811和网络 810以用于与其它计算机或SAN等通信的I/O接口。CPU 801遵从具有架构指令集和架构功能的架构。CPU 801可以具有用于将程序地址、虚拟地址转换成存储器的真实地址的动态地址转换(DAT)803。DAT可以包括用于缓存转换的转换后备缓冲器(TLB)807,因此对计算机存储器802 的块的稍后访问不需要地址转换的延迟。高速缓存809可以在计算机存储器802与CPU 801之间使用。高速缓存809可以是分层结构的,提供可用于多于一个CPU的大的高级别高速缓存以及高级别高速缓存与每个CPU 之间的更小、更快、更低级别的高速缓存。在一些实现中,更低级别的高速缓存可被分割以提供用于指令取出和数据存取的单独的低级别高速缓存。根据实施例,指令可以由指令取出单元804经由高速缓存809从存储器802 中取出。指令可以在指令解码单元806中被编码,并且在一些实施例中与其它指令一起被分派到一个或多个指令执行单元808。可以采用若干执行单元808,例如算术执行单元、浮点执行单元和分支指令执行单元。指令由执行单元执行,根据需要从指令指定的寄存器或存储器存取操作数。如果操作数要从存储器802存取,例如加载或存储,则加载/存储单元805可以在正被执行的指令的控制下处理该存取。指令可以在硬件电路中或在内部微代码(即固件)中执行,或者通过两者的组合来执行。
计算机系统可以包括本地或主存储器中的信息、以及寻址、保护、以及引用和改变记录。寻址的一些方面包括地址格式、地址空间概念、各种类型的地址、以及一种类型的地址被转换为另一种类型的地址的方式。一些主存储器包括永久分配的存储位置。主存储器向系统提供数据的直接可寻址快速访问存储。数据和程序在它们可被处理之前都将被例如从输入设备加载到主存储器中。
主存储器可包括一个或多个更小更快访问的缓冲存储器,有时被称为高速缓存。高速缓存可以在物理上与CPU或I/O处理器相关联。,物理构造的影响(除了对性能之外)和不同存储介质的使用通常不可被执行的程序观察到。
单独的高速缓存可被维持以用于指令和数据操作数。高速缓存内的信息可以在的整数边界上以连续的字节被维持,被称为缓存块或缓存行。模型可以提供EXTRACT CACHEATTRIBUTE指令,该指令以字节返回缓存行的大小。模型还可以提供PREFETCH DATA和PREFETCH DATA RELATIVE LONG指令,其实现将存储预取出到数据或指令高速缓存中或者从高速缓存释放数据。
存储可以被看作是长的水平位串。对于大多数操作,对存储的访问可以按从左到右的顺序进行。位串被细分成八位的单元。八位单元被称为字节,其是所有信息格式的基本构建块。在存储装置中的每个字节位置可以由唯一的非负整数来标识,该非负整数是该字节位置的地址,也称为字节地址。相邻的字节位置可具有连续的地址,在左边从0开始并按从左到右的顺序进行。地址是无符号二进制整数,并且可以是例如24、31或64位。
信息在存储器与CPU之间一次一个字节或一组字节地传输。除非另有说明,例如在
Figure BDA0003201722830000351
中,存储器中的一组字节由该组最左边的字节来寻址。组中的字节数量由要被执行的操作来暗示或明确指定。当在 CPU操作中使用时,一组字节被称为字段。在每组字节内,例如在
Figure BDA0003201722830000352
中,按从左到右的顺序对位进行编号。在
Figure BDA0003201722830000353
中,最左边的位有时被称为“高阶”位,最右边的位被称为“低阶”位。然而,位数量不是存储地址。只有字节是可寻址的。为了对存储中的字节的各个位进行操作,整个字节可被访问。在例如z/Architecture中,字节中的位可以从左到右被编号为0到7。地址中的位可针对24位地址被编号为8-31或40-63,或者针对31位地址被编号为1-31或33-63;对于64位地址,它们被编号为0-63。在多字节的任何其它固定长度格式中,构成该格式的位可以从0开始被连续编号。为了错误检测并且优选地为了校正,一个或多个校验位可以与每个字节或一组字节一起被发送。这种校验位由机器自动产生,并且不能由程序直接控制。存储容量用字节数表示。当存储操作数字段的长度由指令的操作码暗示时,该字段被称为具有固定长度,其可以是一、二、四、八或十六字节。对于某些指令,可以暗示更大的字段。当存储操作数字段的长度不是暗示的而是被明确规定时,该字段被称为具有可变长度。可变长度操作数可在长度上通过一个字节的增量或者以两个字节的倍数或其它倍数随某些指令而变化。当信息被放在存储装置中时,即使到存储装置的物理路径的宽度可能大于正被存储的字段的长度,也只替换那些被包括在指定字段中的字节位置的内容。
某些信息单元将在整数边界上存储。当信息单元的存储地址是该单元的字节长度的倍数时,对于该信息单元,边界被称为整数。对整数边界上的2、4、8和16字节的字段给予特殊名称。半字是两字节边界上的一组两个连续字节,并且是指令的基本构建块。字是四字节边界上的一组四个连续字节。双字是八字节边界上的一组八个连续字节。四字是16字节边界上的一组16个连续字节。当存储地址指定半字、字、双字和四字时,地址的二进制表示分别包含一个、两个、三个或四个最右边零位。指令要在两字节整数边界上。大多数指令的存储操作数没有边界对齐要求。
在实现用于指令和数据操作数的单独的高速缓存的设备上,如果程序存储到随后从中取出指令的缓存行中,则可能经历显著的延迟,而不管该存储是否改变随后被取出的指令。
在一个实施例中,本发明可以由软件来实现,软件有时被称为许可内码、固件、微代码、毫代码、微微代码等,其中任何一个都符合本发明。参考图20,体现本发明的软件程序代码可以从诸如CD-ROM驱动器、磁带驱动器或硬盘驱动器的长期存储介质设备811被访问。软件程序代码可以被体现在与数据处理系统一起使用的各种已知介质中的任何一种上,诸如磁盘、硬盘驱动器、或CD-ROM。代码可以被分布在这样的介质上,或者可以从计算机存储器802分发到用户或者从一个计算机系统的存储装置通过网络810分发到其他计算机系统,以由这样的其他系统的用户使用。
软件程序代码可以包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码可以从存储介质设备811被分页到相对高速的计算机存储装置802,在该存储装置802中它可用于由处理器801 进行处理。可以使用用于在存储器中、在物理介质上体现软件程序代码和 /或经由网络分发软件代码的公知技术和方法。程序代码在被创建并存储在有形介质上时可被称为“计算机程序产品”,有形介质包括但不限于电子存储器模块(RAM)、闪存、光盘(CD)、DVD、磁带。计算机程序产品介质可以由优选地在计算机系统中的处理电路读取,以便由处理电路执行。
图21示出了其中可以实现本发明的实施例的代表性工作站或服务器硬件系统。图21的系统820包括代表性的基础计算机系统821,诸如个人计算机、工作站或服务器,其包括可选的外围设备。基础计算机系统821 包括一个或多个处理器826和总线,总线用于连接(一个或多个)处理器 826与系统821的其它组件并根据已知技术使能它们之间的通信。总线将处理器826连接至存储器825和长期存储装置827,长期存储装置827例如可包括硬盘驱动器(例如包括磁介质、CD、DVD和闪存中的任何一个)或磁带驱动器。系统821还可包括用户接口适配器,其将微处理器826 经由总线连接到一个或多个接口设备,诸如键盘824、鼠标823、打印机/ 扫描仪830和/或其它接口设备(其可以是任何用户接口设备,诸如触敏屏幕、数字化输入板等)。总线还将诸如LCD屏幕或监视器的显示设备822 经由显示适配器连接到微处理器826。
系统821可通过能够与网络829进行通信828的网络适配器与其它计算机或计算机网络通信。示例网络适配器是通信信道、令牌环、以太网或调制解调器。替代地,系统821可使用无线接口(诸如蜂窝数字分组数据 (CDPD)卡)进行通信。系统821可与局域网(LAN)或广域网(WAN) 中的这些其它计算机相关联,或者系统821可以是具有另一计算机等的客户端/服务器布置中的客户端。
图22示出了其中可以实现本发明的实施例的数据处理网络840。数据处理网络840可以包括多个单独的网络,例如无线网络和有线网络,每个网络可以包括多个单独的工作站841、842、843、844。另外,如本领域技术人员将理解的,可以包括一个或多个LAN,其中LAN可以包括被耦合到主机处理器的多个智能工作站。
仍然参考图22,网络还可以包括大型计算机或服务器,诸如网关计算机(例如客户端服务器846)或者应用服务器(例如远程服务器848),其可以访问数据存储库并且还可以直接从工作站845被访问。网关计算机846 可以用作进入每个单独网络的进入点。当将一个网络协议连接到另一个时,可能需要网关。优选地,网关846可以通过通信链路而被耦合到另一个网络,例如因特网847。网关846还可以使用通信链路而被直接耦合到一个或多个工作站841、842、843、844。网关计算机可以利用国际商业机器公司提供的IBM eServerTM
Figure BDA0003201722830000371
服务器来实现。
同时参考图21和图22,可以体现本发明的软件编程代码可以由系统 820的处理器826从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质 827访问。软件编程代码可以被包含在与数据处理系统一起使用的各种已知介质中的任何一种上,例如磁盘、硬盘驱动器、或CD-ROM。代码可以被分布在这样的介质上,或者可以从一个计算机系统的存储器或存储装置通过到其它计算机系统的网络被分发到用户850、851,以便由这种其它系统的用户使用。
替代地,编程代码可以被包含在存储器825中,并且由处理器826使用处理器总线来访问。这样的编程代码可以包括控制各种计算机组件和一个或多个应用程序832的功能和交互的操作系统。程序代码可从存储介质 827被分页到高速存储器825,在那里它可供处理器826处理。可以使用用于在存储器、物理介质上包含软件编程代码和/或经由网络分发软件代码的公知技术和方法。
最容易可用于处理器的高速缓存(即比处理器的其它高速缓存更快和更小的高速缓存)是最低的高速缓存,也称为L1或一级缓存,而主存储器是最高级的高速缓存,也称为Ln(例如L3),如果有n(例如n=3) 级。最低级的高速缓存可被分成指令缓存和数据缓存,其中指令缓存也被称为I缓存,其保存要被执行的机器可读指令,而数据缓存也被称为D缓存,其保存数据操作数。
参看图23,描绘了处理器826的示例性处理器实施例。可以采用一级或多级高速缓存853来缓冲存储器块,以便提高处理器性能。高速缓存853 是保存可能被使用的存储器数据的缓存行的高速缓冲器。缓存行可以是例如64、128或256字节的存储器数据。可以采用单独的高速缓存来缓存指令和缓存数据。高速缓存一致性(即存储器和高速缓存中的线的副本的同步)可以由各种合适的算法来提供,例如“侦测(snoop)”算法。处理器系统的主存储器装置825可以被称为高速缓存。在具有4级缓存853的处理器系统中,主存储装置825有时被称为5级(L5)缓存,因为它可以更快并且仅保存计算机系统可用的非易失性存储的一部分。主存储装置825 “缓存”由操作系统页入和页出主存储装置825的数据页面。
程序计数器(指令计数器)861跟踪当前要被执行的指令的地址。
Figure BDA0003201722830000381
处理器中的程序计数器是64位,并且可以被截短为31或24位以支持先前的寻址限制。程序计数器可以被体现在计算机的程序状态字(PSW)中,以使得它在上下文切换期间持续。因此,具有程序计数器值的正在进行的程序可以被例如操作系统中断,导致从程序环境到操作系统环境的上下文切换。当程序不活动时,程序的PSW维持程序计数器值,并且当操作系统正在执行时,使用操作系统的PSW中的程序计数器。程序计数器可被递增等于当前指令的字节数的量。精简指令集计算(RISC) 指令可以是固定长度的,而复杂指令集计算(CISC)指令可以是可变长度的。IBM
Figure BDA0003201722830000391
的指令是长度为2、4或6字节的CISC指令。程序计数器861可以例如通过上下文切换操作或分支指令的分支采取操作来修改。在上下文切换操作中,当前的程序计数器值连同关于正被执行的程序的其它状态信息(诸如条件码)被保存在程序状态字中,并且新的程序计数器值被加载,指向要被执行的新程序模块的指令。可以执行分支采取操作,以便允许程序通过将分支指令的结果加载到程序计数器861中来在程序内做出决定或循环。
可以采用指令取出单元855来代表处理器826取出指令。取出单元取出“下一顺序指令”、分支采取指令的目标指令、或者在上下文切换后的程序的第一指令。现代的指令取出单元可以采用预取技术以基于可能使用被预取指令的可能性来推测性地预取指令。例如,取出单元可以取出16字节的指令,其包括下一顺序指令和其它顺序指令的附加字节。
然后,被取出的指令可以由处理器826执行。根据实施例,被取出的 (一个或多个)指令可被传递到取出单元的分派单元856。分派单元对(一个或多个)指令解码,并将关于被解码的(一个或多个)指令的信息转发到适当的单元857、858、860。执行单元857可从指令取出单元855接收关于被解码的算术指令的信息,并可根据指令的操作码对操作数执行算术运算。操作数可以优选地从存储器825、架构寄存器859或从正被执行的指令的立即字段被提供给执行单元857。执行的结果在被存储时可以被存储在存储器825、寄存器859、或其它机器硬件(诸如控制寄存器、PSW寄存器等)中。
处理器826可包括用于执行指令的功能的一个或多个单元857、858、 860。参考图24A,执行单元857可以通过接口逻辑871与架构通用寄存器 859、解码/分派单元856、加载存储单元860、和其它处理器单元865通信。执行单元857可以采用若干寄存器电路867、868、869来保存算术逻辑单元(ALU)866进行操作的信息。ALU执行算术运算(诸如加、减、乘和除)以及逻辑功能(诸如与、或、异或(XOR)、循环移位)。优选地, ALU可以支持与设计相关的专用操作。其它电路可以提供其它架构设施 872,例如包括条件码和恢复支持逻辑。ALU操作的结果可被保持在被配置为将结果转发到各种其它处理功能的输出寄存器电路870中。存在许多处理器单元的布置,本描述仅旨在提供一个实施例的代表性理解。
ADD指令例如可以在具有算术和逻辑功能的执行单元857中被执行,而浮点指令例如会在具有专用浮点能力的浮点执行中被执行。优选地,执行单元通过对操作数执行操作码定义的功能来对由指令标识的操作数进行操作。例如,ADD指令可以由执行单元857对在由指令的寄存器字段标识的两个寄存器859中找到的操作数执行。
执行单元857对两个操作数执行算术加法,并将结果存储在第三操作数中,其中第三操作数可以是第三寄存器或是两个源寄存器中的一个。执行单元优选地利用算术逻辑单元(ALU)866,其能够执行各种逻辑功能 (诸如移位、循环、与、或和异或)以及各种代数功能(包括加、减、乘、除中的任何一种)。一些ALU866被设计用于标量运算,一些用于浮点运算。数据可以是大端模式(其中最低有效字节在最高字节地址)或者是小端模式(其中最低有效字节在最低字节地址),这取决于体系架构。IBM
Figure BDA0003201722830000401
是大端模式。带符号字段可以是符号和大小、1的补码或2 的补码,这取决于体系架构。2的补码可以是有利的,因为ALU不需要设计减法能力,因为2的补码中的负值或正值仅需要ALU内的加法。数字可以用速记来描述,例如,12位字段定义4,096字节块的地址,并且被描述为4K字节(千字节)块。
参考图24B,用于执行分支指令的分支指令信息可被发送到分支单元858,其通常采用分支预测算法(诸如分支历史表882)以在其它条件操作完成之前预测分支的结果。当前分支指令的目标将在条件操作完成之前被取出并被推测性地执行。当条件操作完成时,基于条件操作的条件和推测结果,被推测性地执行的分支指令被完成或丢弃。分支指令可以测试条件码,并且如果条件码满足分支指令的分支要求,则分支到目标地址,目标地址可基于例如包括在寄存器字段或指令的立即字段中找到的数字的若干数字来计算。分支单元858可以采用具有多个输入寄存器电路875、876、 877和输出寄存器电路880的ALU 874。分支单元858可与例如通用寄存器859、解码分派单元856或其它电路873通信。
一组指令的执行可能由于各种原因而被中断,这些原因例如包括由操作系统启动的上下文切换、导致上下文切换的程序异常或错误、导致上下文切换的I/O中断信号或多个程序在多线程环境中的多线程活动。优选地,上下文切换动作保存关于当前正执行的程序的状态信息,然后加载关于正被调用的另一程序的状态信息。状态信息可以被保存在例如硬件寄存器或存储器中。状态信息优选地包括指向要被执行的下一指令的程序计数器值、条件代码、存储器转换信息和架构寄存器内容。上下文切换活动可以由硬件电路、应用程序、操作系统程序或固件代码(例如微代码、微微代码或许可内码(LIC))单独或组合地实行。
处理器根据指令定义方法来访问操作数。指令可以使用指令的一部分的值来提供立即操作数,可以提供明确地指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个寄存器字段。指令可以利用由操作码字段标识的隐含寄存器作为操作数。指令可以将存储器位置用于操作数。操作数的存储器位置可以由寄存器、立即字段、或寄存器与立即字段的组合来提供,如由
Figure BDA0003201722830000411
长位移工具所例示的,其中指令定义基址寄存器、索引寄存器和立即字段,即位移字段,它们被加在一起以提供例如操作数在存储器中的地址。除非另外指出,否则本文中的位置可以意指主存储器中的位置。
参考图24C,处理器使用加载/存储单元860来访问存储。加载/存储单元860可通过获得存储器853中的目标操作数的地址并将操作数加载到寄存器859或另一存储器853位置来执行加载操作,或者可通过获得存储器 853中的目标操作数的地址并将从寄存器859或另一存储器853位置获得的数据存储在存储器853中的目标操作数位置中来执行存储操作。加载/存储单元860可以是推测性的,并且可以以相对于指令序列无序的序列访问存储器,然而,加载/存储单元860要对程序保持指令按顺序被执行的外观。加载/存储单元860可以与通用寄存器859、解码/分派单元856、缓存/存储器接口853或其它元件883通信,并且包括各种寄存器电路、ALU885和控制逻辑890以计算存储地址并提供流水线排序以保持操作有序。一些操作可以是无序的,但加载/存储单元提供使无序操作对程序看起来像是已被按序执行的功能。
优选地,应用程序“看见”的地址通常被称为虚拟地址。虚拟地址有时也被称为“逻辑地址”和“有效地址”。这些虚拟地址是虚拟的,因为它们通过各种动态地址转换(DAT)技术中的一种来被重定向到物理存储器位置,这些DAT技术包括但不限于仅用偏移值对虚拟地址加前缀,经由一个或多个转换表来转换虚拟地址,转换表优选地至少包括段表和页表单独或相组合,优选地,段表具有指向页表的条目。在
Figure BDA0003201722830000421
中,提供了转换层次结构,其包括区域第一表、区域第二表、区域第三表、段表以及可选的页表。地址转换的性能通常通过利用转换后备缓冲器(TLB) 来改进,转换后备缓冲器包括将虚拟地址映射到相关联的物理存储器位置的条目。当DAT使用转换表来转换虚拟地址时,创建这些条目。然后,对虚拟地址的后续使用可利用快速TLB的条目,而非慢速顺序转换表访问。 TLB内容可由包括最近最少使用(LRU)的各种置换算法来管理。
多处理器系统的每个处理器负责保持诸如I/O、高速缓存、TLB和存储器的共享资源被互锁以用于一致性。在维持高速缓存一致性时可以利用所谓的“侦测”技术。在侦测环境中,每个缓存行可被标记为处于共享状态、独占状态、改变状态、无效状态等中的任何一个,以便于共享。
I/O单元854可以向处理器提供用于附接到外围设备(例如包括磁带、磁盘、打印机、显示器和网络)的装置。I/O单元通常由软件驱动程序呈现给计算机程序。在主机(诸如来自
Figure BDA0003201722830000437
Figure BDA0003201722830000438
)中,通道适配器和开放系统适配器是主机的I/O单元,其提供操作系统与外围设备之间的通信。
进一步地,其它类型的计算机系统可以从本发明的一个或多个方面受益。作为示例,计算机系统可以包括仿真器,例如软件或其他仿真机制,其中,包括例如指令执行、架构功能(诸如地址转换)和架构寄存器的特定架构被仿真,或者其子集例如在具有处理器和存储器的本机系统上被仿真。在这样的环境中,仿真器的一个或多个仿真功能可以实现本发明的一个或多个方面,即使执行仿真器的计算机可能具有与被仿真的能力不同的体系结构。例如,在仿真模式中,被仿真的特定指令或操作可以被解码,并且可以构建适当的仿真功能以实现单独的指令或操作。
在仿真环境中,主机计算机可以例如包括用于存储指令和数据的存储器、用于从存储器中取出指令并可选地对所取出的指令提供本地缓冲的指令取出单元、用于接收所取出的指令并确定已被取出的指令的类型的指令解码单元、以及用于执行指令的指令执行单元。执行可包括:将数据从存储器加载到寄存器中,将数据从寄存器存储回存储器中,和/或执行某一类型的算术或逻辑运算,如由解码单元所确定的。例如,每个单元可以以软件实现。由这些单元执行的操作可以被实现为仿真器软件内的一个或多个子例程。
更具体地,在大型机中,架构机器指令由程序员使用,例如“C”程序员,例如通过编译器应用程序。被存储在存储介质中的这些指令可以在
Figure BDA0003201722830000431
服务器中本地执行,或者可替换地在执行其他架构的机器中执行。它们可以在现有和未来的
Figure BDA0003201722830000432
大型服务器中以及在
Figure BDA0003201722830000433
的其它服务器(例如,Power Systems服务器和
Figure BDA0003201722830000434
服务器) 上被仿真。它们可以在使用由
Figure BDA0003201722830000435
AMDTM等制造的硬件的各种机器上运行Linux的机器中被执行。除了在
Figure BDA0003201722830000436
下的该硬件上执行之外,还可以使用Linux以及使用Hercules、UMX或FSI (Fundamental Software,Inc)的仿真的机器,其中通常执行是在仿真模式中。在仿真模式中,仿真软件由本机处理器执行以仿真被仿真处理器的架构。
本机处理器可以执行包括固件或本机操作系统的仿真软件,以执行被仿真处理器的仿真。仿真软件负责取出并执行被仿真处理器架构的指令。仿真软件维护被仿真程序计数器以跟踪指令边界。仿真软件可以一次取出一个或多个被仿真机器指令,并将一个或多个被仿真机器指令转换成对应的由本机处理器执行的本机机器指令组。这些转换后的指令可被缓存,以使得可以实现更快的转换。然而,仿真软件要维护被仿真处理器架构的架构规则,以便确保针对被仿真处理器编写的操作系统和应用程序正确地工作。此外,仿真软件要提供由被仿真处理器架构识别的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、包括例如段表和页表的动态地址转换功能、中断机制、上下文切换机制、日历(TOD)时钟和到I/O子系统的架构接口,以使得被设计为在被仿真处理器上运行的操作系统或应用程序可以在具有仿真软件的本机处理器上运行。
正被仿真的特定指令被解码,并且子例程被调用以执行单独指令的功能。仿真被仿真处理器的功能的仿真软件功能例如在“C”子例程或驱动程序中或者在对特定硬件提供驱动程序的一些其它方法中被实现。
在图25中,提供了仿真主机架构的主机计算机系统800'的仿真主机计算机系统892的示例。在仿真主计算机系统892中,主机处理器(即CPU) 891是仿真主机处理器或虚拟主机处理器,并且包括具有与主机计算机800'的处理器891不同的本机指令集架构的仿真处理器893。仿真主机计算机系统892具有仿真处理器893可访问的存储器894。在示例实施例中,存储器894被划分成主机计算机存储器896部分和仿真例程897部分。根据主机计算机架构,主机计算机存储器896可用于仿真主机计算机892的程序。仿真处理器893执行与仿真处理器891不同的架构的架构指令集的本机指令,其中本机指令从仿真例程存储器897获得,并且可以通过采用在序列和访问/解码例程中获得的一个或多个指令来从主机计算机存储器896中的程序访问主机指令以用于执行,其中序列和访问/解码例程可以解码所访问的主机指令以确定用于仿真所访问的主机指令的功能的本机指令执行例程。针对主机计算机系统800'架构定义的其它工具可以由架构工具例程来仿真,包括诸如通用寄存器、控制寄存器、动态地址转换和I/O子系统支持以及处理器缓存等的工具。仿真例程还可利用在仿真处理器893 中可用的功能(诸如通用寄存器和虚拟地址的动态翻译)来改进仿真例程的性能。还可以提供专用硬件和卸载引擎来辅助处理器893仿真主机计算机800'的功能。
应当理解,本发明的一个或多个上述实施例可以组合,只要组合的实施例相互并不排斥。序数,例如“第一”和“第二”,在此用于指示被分配了相同名称的不同元件,但不必建立相应元件的任何顺序。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括在其上具有计算机可读程序指令的(一个或多个)计算机可读存储介质,计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(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的中断信号要被处理,
由总线附接设备将中断信号转发到目标处理器。
2.根据项1所述的方法,被分配给相同总线连接模块的中断信号指示符各自包括在包括相应的中断信号指示符的定向中断信号向量内的相同偏移。
3.根据前述项中的任一项所述的方法,定向中断信号向量每一个被实现为存储器中的连续区域。
4.根据前述项中的任一项所述的方法,定向中断信号指示符每一个被实现为单个位。
5.根据前述项中的任一项所述的方法,该方法还包括:由总线附接设备从被存储在存储器中的中断表取回被分配给所接收的中断目标ID的中断表条目的副本,该中断表条目包括指示被分配给所接收的中断信号被寻址到的中断目标ID的定向中断信号向量的存储器地址的定向中断信号向量地址指示符,总线附接设备使用相应的定向中断信号向量的存储器地址来选择被分配给所接收的中断信号被寻址到的中断目标ID的定向中断信号向量。
6.根据项5所述的方法,该方法还包括:由总线附接设备从被存储在存储器中的设备表取回设备表条目的副本,该设备表条目包括指示中断表的存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来取回中断表条目的第一副本。
7.根据项6所述的方法,设备表条目还包括指示被分配给发出所接收的中断信号的总线连接模块的定向中断信号指示符的偏移的定向中断信号偏移指示符。
8.根据前述项中的任一项所述的方法,存储器还包括具有每中断目标 ID的定向中断概括指示符的定向中断概括向量,每个定向中断概括指示符被分配给中断目标ID,用于指示是否存在被寻址到相应的中断目标ID的中断信号要被处理,
该方法还包括:
由总线附接设备选择被分配给所接收的中断信号被寻址到的目标处理器ID的定向中断概括指示符,以及
由总线附接设备更新所选择的定向中断概括指示符,以使得所选择的定向中断概括指示符指示存在被寻址到相应的中断目标ID的中断信号要被处理。
9.根据项8所述的方法,定向中断概括向量被实现为存储器中的连续区域。
10.根据项8至9中的任一项所述的方法,定向中断概括指示符每一个被实现为单个位。
11.根据项8至10中的任一项所述的方法,中断表条目还包括指示定向中断概括向量的存储器地址的定向中断概括向量地址指示符,总线附接设备使用定向中断概括向量的存储器地址来选择被分配给所接收的中断信号被寻址到的目标处理器ID的定向中断概括指示符。
12.根据项8至11中的任一项所述的方法,中断表条目还包括指示被分配给目标处理器ID的定向中断概括指示符在定向中断概括向量内的偏移的定向中断概括偏移指示符。
13.根据前述权利要求中的任一项所述的方法,该方法还包括:当将中断信号转发到目标处理器时,由总线附接设备将与中断信号一起接收的目标处理器的中断目标ID转换成目标处理器的逻辑处理器ID,以及使用目标处理器的逻辑处理器ID来寻址作为中断信号的目标的目标处理器。
14.根据项11至13中的任一项的方法,该方法还包括:由总线附接设备从被存储在存储器中的中断表取回被分配给中断目标ID的中断表条目的副本,中断表条目的副本还包括中断目标ID到第一逻辑处理器ID的当前映射,总线附接设备使用中断表条目的副本来转换与中断信号一起接收的目标处理器的中断目标ID。
15.根据前述项中的任一项所述的方法,设备表条目的副本还包括指示目标处理器是否要被直接寻址的直接信令指示符,该直接信令指示符指示中断信号的直接转发是使用目标处理器的逻辑处理器ID直接寻址目标处理器来执行中断信号的转发的要求,否则使用广播来执行该转发。
16.根据前述项中的任一项所述的方法,中断表条目的副本还包括运行指示符的副本,运行指示符指示由中断目标ID标识的目标处理器是否被调度以由客户操作系统使用,目标处理器被调度以由客户操作系统使用是使用目标处理器的逻辑处理器ID直接寻址目标处理器来执行中断信号的转发的另一要求,否则,使用广播将中断信号转发到第一操作系统以用于处理。
17.根据前述项中的任一项所述的方法,中断表条目的副本还包括中断阻止指示符,其指示由中断目标ID标识的目标处理器当前是否被阻止接收中断信号,目标处理器未被阻止是使用目标处理器的逻辑处理器ID直接寻址目标处理器来执行中断信号的转发的另一要求,否则,使用广播将中断信号转发到第一操作系统以用于处理。
18.根据前述项中的任一项所述的方法,设备表条目还包括标识客户操作系统被分配到的逻辑分区的逻辑分区ID,由总线附接设备转发中断信号还包括与中断信号一起转发逻辑分区ID。
19.根据前述项中的任一项所述的方法,该方法还包括:由总线附接设备取回标识所接收的中断信号被分配到的中断子类的中断子类ID,由总线附接设备转发中断信号还包括与中断信号一起转发中断子类ID。
20.一种用于向客户操作系统提供中断信号的计算机系统,该中断信号使用被分配以由客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,计算机系统还包括经由总线和总线附接设备与多个处理器可操作地连接的一个或多个总线连接模块,计算机系统还包括与总线附接设备可操作地连接的存储器,
多个处理器中的每个处理器被分配有逻辑处理器ID,该逻辑处理器ID 由总线附接设备使用以寻址相应的处理器,
被分配以由客户操作系统使用的多个处理器中的每个处理器还被分配有中断目标ID,该中断目标ID由操作系统和一个或多个总线连接模块使用以寻址相应的处理器,
存储器包括被分配给相应的中断目标ID的每中断目标ID的定向中断信号向量,每个定向中断信号向量包括被分配给相应的总线连接模块的每总线连接模块的定向中断信号指示符,每个定向中断信号向量指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号是否正在等待被处理,
计算机系统被配置为执行一种方法,该方法包括:
由总线附接设备从总线连接模块之一接收具有中断目标ID的中断信号,该中断目标ID将被分配以由客户操作系统使用的处理器中的一个标识为用于处理中断信号的目标处理器,
由总线附接设备选择被分配给所接收的中断信号被寻址到的中断目标 ID的定向中断信号向量,
由总线附接设备在所选择的定向中断信号向量中选择被分配给发出所接收的中断信号的总线连接模块的定向中断信号指示符,
更新所选择的定向中断信号指示符,以使得相应的定向中断信号指示符指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号正在等待被处理,
将中断信号转发到目标处理器。
21.一种用于向客户操作系统提供中断信号的计算机程序产品,该中断信号使用被分配以由所述客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,计算机系统还包括经由总线和总线附接设备与多个处理器可操作地连接的一个或多个总线连接模块,计算机系统还包括与总线附接设备可操作地连接的存储器,
多个处理器中的每个处理器被分配有逻辑处理器ID,该逻辑处理器ID 由总线附接设备使用以寻址相应的处理器,
被分配以由客户操作系统使用的多个处理器中每个处理器还被分配有中断目标ID,该中断目标ID由操作系统和一个或多个总线连接模块使用以寻址相应的处理器,
存储器包括被分配给相应的中断目标ID的每中断目标ID的定向中断信号向量,每个定向中断信号向量包括被分配给相应的总线连接模块的每总线连接模块的定向中断信号指示符,每个定向中断信号向量指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号是否正在等待被处理,
计算机程序产品包括计算机可读非暂时性介质,该计算机可读非暂时性介质可由处理电路读取并且存储用于由处理电路执行以执行一种方法的指令,该方法包括:
由总线附接设备从总线连接模块之一接收具有中断目标ID的中断信号,该中断目标ID将被分配以由客户操作系统使用的处理器中的一个标识为用于处理中断信号的目标处理器,
由总线附接设备选择被分配给所接收的中断信号被寻址到的中断目标 ID的定向中断信号向量,
由总线附接设备在所选择的定向中断信号向量中选择被分配给发出所接收的中断信号的总线连接模块的定向中断信号指示符,
更新所选择的定向中断信号指示符,以使得相应的定向中断信号指示符指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号正在等待被处理,
将中断信号转发到目标处理器。

Claims (21)

1.一种用于向客户操作系统提供中断信号的方法,所述中断信号使用被分配以由所述客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,所述计算机系统还包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,所述计算机系统还包括与所述总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配有逻辑处理器ID,所述逻辑处理器ID由所述总线附接设备使用以寻址相应的处理器,
被分配以由所述客户操作系统使用的所述多个处理器中的每个处理器还被分配有中断目标ID以由所述操作系统和一个或多个总线连接模块使用以寻址相应的处理器,
所述存储器包括被分配给相应的中断目标ID的每中断目标ID的定向中断信号向量,每个定向中断信号向量包括被分配给相应的总线连接模块的每总线连接模块的定向中断信号指示符,每个定向中断信号向量指示是否存在由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号要被处理,
所述方法包括:
由所述总线附接设备从所述总线连接模块之一接收具有中断目标ID的中断信号,所述中断目标ID将被分配以由所述客户操作系统使用的所述处理器中的一个标识为用于处理所述中断信号的目标处理器,
由所述总线附接设备选择被分配给所接收的中断信号被寻址到的所述中断目标ID的所述定向中断信号向量,
由所述总线附接设备在所选择的定向中断信号向量中选择被分配给发出所接收的中断信号的所述总线连接模块的所述定向中断信号指示符,
由所述总线附接设备更新所选择的定向中断信号指示符,以使得相应的定向中断信号指示符指示存在由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号要被处理,
由所述总线附接设备将所述中断信号转发到所述目标处理器。
2.根据权利要求1所述的方法,其中,被分配给相同总线连接模块的所述中断信号指示符每一个包括在包括相应的中断信号指示符的所述定向中断信号向量内的相同偏移。
3.根据权利要求1所述的方法,其中,所述定向中断信号向量每一个被实现为存储器中的连续区域。
4.根据权利要求1所述的方法,其中,所述定向中断信号指示符每一个被实现为单个位。
5.根据权利要求1所述的方法,所述方法还包括:由所述总线附接设备从被存储在所述存储器中的中断表取回被分配给所接收的中断目标ID的中断表条目的副本,所述中断表条目包括指示被分配给所接收的中断信号被寻址到的所述中断目标ID的所述定向中断信号向量的存储器地址的定向中断信号向量地址指示符,所述总线附接设备使用相应的定向中断信号向量的所述存储器地址来选择被分配给所接收的中断信号被寻址到的所述中断目标ID的所述定向中断信号向量。
6.根据权利要求5所述的方法,所述方法还包括:由所述总线附接设备从被存储在所述存储器中的设备表取回设备表条目的副本,所述设备表条目包括指示所述中断表的存储器地址的中断表地址指示符,所述总线附接设备使用所述中断表的所述存储器地址来取回所述中断表条目的第一副本。
7.根据权利要求6所述的方法,其中,所述设备表条目还包括定向中断信号偏移指示符,其指示被分配给发出所接收的中断信号的所述总线连接模块的所述定向中断信号指示符的偏移。
8.根据权利要求1所述的方法,其中,所述存储器还包括具有每中断目标ID的定向中断概括指示符的定向中断概括向量,每个定向中断概括指示符被分配给中断目标ID,用于指示是否存在被寻址到相应的中断目标ID的中断信号要被处理,
所述方法还包括:
由所述总线附接设备选择被分配给所接收的中断信号被寻址到的所述目标处理器ID的所述定向中断概括指示符,以及
由所述总线附接设备更新所选择的定向中断概括指示符,以使得所选择的定向中断概括指示符指示存在被寻址到相应的中断目标ID的中断信号要被处理。
9.根据权利要求8所述的方法,其中,所述定向中断概括向量被实现为存储器中的连续区域。
10.根据权利要求8所述的方法,其中,所述定向中断概括指示符每一个被实现为单个位。
11.根据权利要求8所述的方法,其中,所述中断表条目还包括指示所述定向中断概括向量的存储器地址的定向中断概括向量地址指示符,所述总线附接设备使用所述定向中断概括向量的所述存储器地址来选择被分配给所接收的中断信号被寻址到的所述目标处理器ID的所述定向中断概括指示符。
12.根据权利要求8所述的方法,其中,所述中断表条目还包括定向中断概括偏移指示符,所述定向中断概括偏移指示符指示被分配给所述目标处理器ID的所述定向中断概括指示符在所述定向中断概括向量内的偏移。
13.根据权利要求1所述的方法,所述方法还包括:当将所述中断信号转发到所述目标处理器时,由所述总线附接设备将与所述中断信号一起接收的所述目标处理器的所述中断目标ID转换成所述目标处理器的逻辑处理器ID,以及使用所述目标处理器的所述逻辑处理器ID来寻址作为所述中断信号的目标的所述目标处理器。
14.根据权利要求11所述的方法,所述方法还包括:由所述总线附接设备从被存储在所述存储器中的中断表取回被分配给所述中断目标ID的中断表条目的副本,所述中断表条目的副本还包括所述中断目标ID到第一逻辑处理器ID的当前映射,所述总线附接设备使用所述中断表条目的所述副本来转换与所述中断信号一起接收的所述目标处理器的所述中断目标ID。
15.根据权利要求1所述的方法,其中,所述设备表条目的所述副本还包括指示所述目标处理器是否要被直接寻址的直接信令指示符,所述直接信令指示符指示所述中断信号的直接转发是使用所述目标处理器的逻辑处理器ID以直接寻址所述目标处理器来执行所述中断信号的转发的要求,否则,使用广播来执行所述转发。
16.根据权利要求1所述的方法,其中,所述中断表条目的所述副本还包括运行指示符的副本,所述运行指示符指示由所述中断目标ID标识的所述目标处理器是否被调度以由所述客户操作系统使用,所述目标处理器被调度以由所述客户操作系统使用是使用所述目标处理器的逻辑处理器ID以直接寻址所述目标处理器来执行所述中断信号的转发的另一要求,否则,所述中断信号使用广播来被转发到所述第一操作系统以用于处理。
17.根据权利要求1所述的方法,其中,所述中断表条目的所述副本还包括中断阻止指示符,所述中断阻止指示符指示由所述中断目标ID标识的所述目标处理器当前是否被阻止接收中断信号,所述目标处理器未被阻止是使用所述目标处理器的逻辑处理器ID以直接寻址所述目标处理器来执行所述中断信号的转发的另一要求,否则,所述中断信号使用广播来被转发到所述第一操作系统以用于处理。
18.根据权利要求1所述的方法,其中,所述设备表条目还包括标识所述客户操作系统被分配到的逻辑分区的逻辑分区ID,由所述总线附接设备转发所述中断信号还包括与所述中断信号一起转发所述逻辑分区ID。
19.根据权利要求1所述的方法,所述方法还包括:由所述总线附接设备取回标识所接收的中断信号被分配到的中断子类的中断子类ID,由所述总线附接设备转发所述中断信号还包括与所述中断信号一起转发所述中断子类ID。
20.一种用于向客户操作系统提供中断信号的计算机系统,所述中断信号使用被分配以由所述客户操作系统使用的所述计算机系统的多个处理器中的一个或多个处理器来执行,所述计算机系统还包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,所述计算机系统还包括与所述总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配有逻辑处理器ID,所述逻辑处理器ID由所述总线附接设备使用以寻址相应的处理器,
被分配以由所述客户操作系统使用的所述多个处理器中的每个处理器还被分配有中断目标ID,所述中断目标ID由操作系统和所述一个或多个总线连接模块使用以寻址相应的处理器,
所述存储器包括被分配给相应的中断目标ID的每中断目标ID的定向中断信号向量,每个定向中断信号向量包括被分配给相应的总线连接模块的每总线连接模块的定向中断信号指示符,每个定向中断信号向量指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号是否正在等待被处理,
所述计算机系统被配置为执行一种方法,所述方法包括:
由所述总线附接设备从所述总线连接模块之一接收具有中断目标ID的中断信号,所述中断目标ID将被分配以由所述客户操作系统使用的所述处理器中的一个标识为用于处理所述中断信号的目标处理器,
由所述总线附接设备选择被分配给所接收的中断信号被寻址到的所述中断目标ID的所述定向中断信号向量,
由所述总线附接设备在所选择的定向终端信号向量中选择被分配给发出所接收的中断信号的所述总线连接模块的所述定向中断信号指示符,
更新所选择的定向中断信号指示符,以使得相应的定向中断信号指示符指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号正在等待被处理,
将所述中断信号转发到所述目标处理器。
21.一种用于向客户操作系统提供中断信号的计算机程序产品,所述中断信号使用被分配以由所述客户操作系统使用的计算机系统的多个处理器中的一个或多个处理器来执行,所述计算机系统还包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,所述计算机系统还包括与所述总线附接设备可操作地连接的存储器,
所述多个处理器中的每个处理器被分配有逻辑处理器ID,所述逻辑处理器ID由所述总线附接设备使用以寻址相应的处理器,
被分配以由所述客户操作系统使用的所述多个处理器中的每个处理器还被分配有中断目标ID,所述中断目标ID由所述操作系统和一个或多个总线连接模块使用以寻址相应的处理器,
所述存储器包括被分配给相应的中断目标ID的每中断目标ID的定向中断信号向量,每个定向中断信号向量包括被分配给相应的总线连接模块的每总线连接模块的定向中断信号指示符,每个定向中断信号向量指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号是否正在等待被处理,
所述计算机程序产品包括计算机可读非暂时性介质,所述计算机可读非暂时性介质可由处理电路读取并存储用于由所述处理电路执行以执行一种方法的指令,所述方法包括:
由所述总线附接设备从所述总线连接模块之一接收具有中断目标ID的中断信号,所述中断目标ID将被分配以由所述客户操作系统使用的所述处理器中的一个标识为用于处理所述中断信号的目标处理器,
由所述总线附接设备选择被分配给所接收的中断信号被寻址到的所述中断目标ID的所述定向中断信号向量,
由所述总线附接设备在所选择的定向中断信号向量中选择被分配给发出所接收的中断信号的所述总线连接模块的所述定向中断信号指示符,
更新所选择的定向中断信号指示符,以使得相应的定向中断信号指示符指示由相应的总线连接模块发出并被寻址到相应的中断目标ID的中断信号正在等待被处理,
将所述中断信号转发到所述目标处理器。
CN202080013261.0A 2019-02-14 2020-02-03 用于定向中断虚拟化的中断信号发送 Pending CN113439261A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19157104.1 2019-02-14
EP19157104 2019-02-14
PCT/EP2020/052542 WO2020164936A1 (en) 2019-02-14 2020-02-03 Interrupt signaling for directed interrupt virtualization

Publications (1)

Publication Number Publication Date
CN113439261A true CN113439261A (zh) 2021-09-24

Family

ID=65529251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080013261.0A Pending CN113439261A (zh) 2019-02-14 2020-02-03 用于定向中断虚拟化的中断信号发送

Country Status (7)

Country Link
US (2) US10922111B2 (zh)
EP (1) EP3924824A1 (zh)
JP (1) JP7398465B2 (zh)
CN (1) CN113439261A (zh)
SG (1) SG11202105504PA (zh)
TW (1) TWI764082B (zh)
WO (1) WO2020164936A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112021016093A2 (pt) 2019-02-14 2021-10-26 International Business Machines Corporation Interrupção dirigida para virtualização de multiníveis
WO2020165666A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with blocking indicator
EP3924821A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization with running indicator
TWI764082B (zh) 2019-02-14 2022-05-11 美商萬國商業機器公司 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品
TWI759677B (zh) 2019-02-14 2022-04-01 美商萬國商業機器公司 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
EP3924819A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt for multilevel virtualization with interrupt table
EP3924817A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization
TWI727607B (zh) 2019-02-14 2021-05-11 美商萬國商業機器公司 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
KR20210066288A (ko) * 2019-11-28 2021-06-07 한국전자통신연구원 전자 장치, 인터럽트 설정 제어 방법 및 저장 매체
CN115292219B (zh) * 2022-10-10 2023-01-10 三未信安科技股份有限公司 一种在RISC-V平台中实现PCIe MSI中断的系统及方法

Family Cites Families (65)

* Cited by examiner, † Cited by third party
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
US20030204655A1 (en) * 2002-04-24 2003-10-30 Schmisseur Mark A. Prioritizing vector generation in interrupt controllers
US7028302B2 (en) * 2002-04-24 2006-04-11 Hewlett-Packard Development Company, L.P. System and method for automatically tuning a multiprocessor computer system
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
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
JP5108975B2 (ja) 2008-04-28 2012-12-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法
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
CN101427916B (zh) 2008-12-05 2012-02-22 张锦景 电生理数据与病理图像监测的移动网络终端装置及方法
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
US8489789B2 (en) * 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
US8478922B2 (en) * 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8381002B2 (en) 2010-06-23 2013-02-19 International Business Machines Corporation Transparently increasing power savings in a power management environment
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
US20130318268A1 (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
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
EP2951705A4 (en) 2013-01-29 2016-11-02 Hewlett Packard Development Co ASSIGNING PROCESSORS TO MEMORY TOPOGRAPHY 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
US9607740B2 (en) 2014-05-06 2017-03-28 Toyota Jidosha Kabushiki Kaisha Hard-soft magnetic MnBi/SiO2/FeCo nanoparticles
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 株式会社日立製作所 計算機及びベクタの設定方法
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 삼성전자주식회사 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법
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
WO2020165666A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with blocking indicator
EP3924817A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization
EP3924819A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt for multilevel virtualization with interrupt table
TWI727607B (zh) 2019-02-14 2021-05-11 美商萬國商業機器公司 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
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 美商萬國商業機器公司 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
EP3924821A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization with running indicator
TWI764082B (zh) 2019-02-14 2022-05-11 美商萬國商業機器公司 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品

Also Published As

Publication number Publication date
SG11202105504PA (en) 2021-06-29
US10922111B2 (en) 2021-02-16
TW202046102A (zh) 2020-12-16
US20210055945A1 (en) 2021-02-25
US11314538B2 (en) 2022-04-26
TWI764082B (zh) 2022-05-11
US20200264911A1 (en) 2020-08-20
JP7398465B2 (ja) 2023-12-14
KR20210107856A (ko) 2021-09-01
EP3924824A1 (en) 2021-12-22
JP2022520526A (ja) 2022-03-31
WO2020164936A1 (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
US11249927B2 (en) Directed interrupt virtualization
US11734037B2 (en) Directed interrupt virtualization with running indicator
JP7459119B2 (ja) 割り込みテーブルを使用したマルチレベルの仮想化のための有向割り込み方法、システム、プログラム
US11023398B2 (en) Directed interrupt virtualization with blocking indicator
CN113454589A (zh) 用于多级虚拟化的定向中断
KR102672582B1 (ko) 지시된 인터럽트 가상화를 위한 인터럽트 시그널링

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