具有阻止指示符的定向中断虚拟化的制作方法

文档序号:26787199发布日期:2021-09-28 21:31阅读:170来源:国知局
具有阻止指示符的定向中断虚拟化的制作方法
具有阻止指示符的定向中断虚拟化


背景技术:

1.本发明总体涉及计算机系统内的中断处理,尤其涉及处置由多处理器计算机系统中的总线连接模块产生的中断。
2.中断被用来用信号通知处理器需要处理器注意的事件。例如,硬件设备(例如,经由总线与处理器连接的硬件设备)使用中断来传达它们需要来自操作系统的注意。在接收处理器当前正在执行一些活动的情况下,接收处理器可以响应于接收到中断信号而挂起其当前活动、保存其状态并例如通过执行中断处理程序来处理中断。由接收到中断信号引起的处理器的当前活动的中断只是暂时性的。在处理了中断之后,处理器可恢复其挂起的活动。因此,中断可以通过消除处理器在轮询循环中等待外部事件的的非生产等待时间来使得性能得到提高。
3.在多处理器计算机系统中,可能会出现中断路由效率问题。挑战在于将由诸如总线连接模块之类的硬件设备发送的中断信号高效地转发到被分配用于操作系统的多个处理器中的处理器。在将中断用于与虚拟机上的客户机操作系统通信的情况下,这可能会特别具有挑战性。管理程序(hypervisor)或虚拟机监视器(vmm)创建并运行一个或多个虚拟机,即客户机(guest machines)。虚拟机提供在与虚拟操作平台相同的平台上运行的客户机操作系统,同时隐藏底层平台的物理特性。使用多个虚拟机允许并行运行多个操作系统。由于是在虚拟操作平台上执行的,所以客户机操作系统对处理器的视图一般可能不同于底层(例如,处理器的物理视图)。客户机操作系统使用虚拟处理器id(标识符)来标识处理器,通常与底层逻辑处理器id不一致。管理客户机操作系统的执行的管理程序定义底层逻辑处理器id与客户机操作系统使用的虚拟处理器id之间的映射。然而,这种映射和被调度用于由客户机操作系统使用的处理器的选择,并不是静态的,而是可以在客户机操作系统运行时被管理程序改变,而无需客户机操作系统的知识。
4.通常通过使用广播转发中断信号来解决此挑战。当使用广播时,在多个处理器之间连续地转发中断信号,直到遇到适于处理中断信号的处理器。然而,在多个处理器的情况下,率先接收到广播的中断信号的处理器确实适合于处理该中断信号的概率可能相当低。此外,适合于处理该中断信号并不一定意味着相应处理器是处理该中断的最佳选择。


技术实现要素:

5.各个实施例提供了如由独立权利要求的主题所描述的用于向使用被分配用于由客户机操作系统使用的计算机系统的多个处理器中的一个或多个处理器执行的客户机操作系统提供中断信号的方法、计算机系统和计算机程序产品。在从属权利要求中描述了有利的实施例。本发明的实施例在不相互排斥的情况下可以自由地彼此组合。
6.一方面,本发明涉及一种用于向客户机操作系统提供中断信号的方法,客户机操作系统是用计算机系统的分配给客户机操作系统使用的多个处理器中的一个或多个处理器执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括存储器,总线附接设备可操作地连
接存储器,所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器id,分配给客户机操作系统使用的多个处理器中的每个处理器进一步被分配由客户机操作系统和所述一个或多个总线连接模块用于寻址相应处理器的中断目标id,所述方法包括:由总线附接设备接收来自总线连接模块之一的具有中断目标id的中断信号,中断目标id标识作为处理中断信号的目标处理器的分配给客户机操作系统使用的处理器之一,由总线附接设备从存储在存储器中的中断表检索分配给所接收的中断目标id的中断表条目的第一副本,中断表条目的第一副本包括指示由中断目标id标识的目标处理器当前是否被阻止接收中断信号的中断阻止指示符,由总线附接设备用中断阻止指示符来检查目标处理器是否被阻止接收中断信号,如果目标处理器未被阻止,由总线附接设备将所接收的中断目标id转换为逻辑处理器id,并使用转换产生的逻辑处理器id直接寻址目标处理器,将中断信号转发给目标处理器进行处理,否则,由总线附接设备阻止中断信号被转发到目标处理器进行处理。
7.另一方面,本发明涉及一种用于向客户机操作系统提供中断信号的计算机系统,客户机操作系统是用计算机系统的分配给客户机操作系统使用的多个处理器中的一个或多个处理器执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括存储器,总线附接设备可操作地连接存储器,所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器id,分配给客户机操作系统使用的多个处理器中的每个处理器进一步被分配由客户机操作系统和所述一个或多个总线连接模块用于寻址相应处理器的中断目标id,计算机系统被配置用于执行一种方法,所述方法包括:由总线附接设备接收来自总线连接模块之一的具有中断目标id的中断信号,中断目标id标识作为处理中断信号的目标处理器的分配给客户机操作系统使用的处理器之一,由总线附接设备从存储在存储器中的中断表检索分配给所接收的中断目标id的中断表条目的第一副本,中断表条目的第一副本包括指示由中断目标id标识的目标处理器当前是否被阻止接收中断信号的中断阻止指示符,由总线附接设备用中断阻止指示符来检查目标处理器是否被阻止接收中断信号,如果目标处理器未被阻止,由总线附接设备将所接收的中断目标id转换为逻辑处理器id,并使用转换产生的逻辑处理器id直接寻址目标处理器,将中断信号转发给目标处理器进行处理,否则,由总线附接设备阻止中断信号被转发到目标处理器进行处理。
8.另一方面,本发明涉及一种用于向客户机操作系统提供中断信号的计算机程序产品,客户机操作系统是用计算机系统的分配给客户机操作系统使用的多个处理器中的一个或多个处理器执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括存储器,总线附接设备可操作地连接存储器,所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器id,分配给客户机操作系统使用的多个处理器中的每个处理器进一步被分配由客户机操作系统和所述一个或多个总线连接模块用于寻址相应处理器的中断目标id,计算机程序产品包括由处理电路可读的计算机可读非瞬态介质,并存储由处理电路执行的指令,以执行一种方法,该方法包括所述方法包括:由总线附接设备接收来自总线连接模块之一的具有中断目标id的中断信号,中断目标id标识作为处理中断信号的目标处理器的分配给客户机操作系统使用的处理器之一,由总线附接设备从存储在存储器中的中
断表检索分配给所接收的中断目标id的中断表条目的第一副本,中断表条目的第一副本包括指示由中断目标id标识的目标处理器当前是否被阻止接收中断信号的中断阻止指示符,由总线附接设备用中断阻止指示符来检查目标处理器是否被阻止接收中断信号,如果目标处理器未被阻止,由总线附接设备将所接收的中断目标id转换为逻辑处理器id,并使用转换产生的逻辑处理器id直接寻址目标处理器,将中断信号转发给目标处理器进行处理,否则,由总线附接设备阻止中断信号被转发到目标处理器进行处理。
附图说明
9.在下文中,参考附图仅通过举例更详细地解释本发明的实施例,附图中:
10.图1描绘了示例性计算机系统的示意图,
11.图2描绘了示例性虚拟化方案的示意图,
12.图3描绘了示例性虚拟化方案的示意图,
13.图4描绘了示例性虚拟化方案的示意图,
14.图5描绘了示例性计算机系统的示意图,
15.图6描绘了示例性计算机系统的示意图,
16.图7描绘了示例性方法的示意性流程图,
17.图8描绘了示例性方法的示意性流程图,
18.图9描绘了示例性方法的示意性流程图,
19.图10描绘了示例性方法的示意性流程图,
20.图11描绘了示例性方法的示意性流程图,
21.图12描绘了示例性方法的示意性流程图,
22.图13描绘了示例性数据结构的示意图,
23.图14是示例性向量结构的示意图,
24.图15是示例性向量结构的示意图,
25.图16是示例性向量结构的示意图,
26.图17是示例性向量结构的示意图,
27.图18描绘了示例性方法的示意性流程图,
28.图19描绘了示例性计算机系统的示意图,
29.图20描绘了示例性计算机系统的示意图,
30.图21描绘了示例性计算机系统的示意图,
31.图22描绘了示例性计算机系统的示意图,
32.图23描绘了示例性单元的示意图,和
33.图24描绘了示例性计算机系统的示意图。
具体实施方式
34.本发明的不同实施例的描述将出于说明的目的而给出,但不旨在是穷尽的或限于所披露的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择在此使用的术语以最佳地解释实施例的原理、实际应用或在市场上出现的技术上的技术改进,或使得本领域普通技术人员能够理解
在此披露的实施例。
35.实施例可以具有使总线附接设备能够直接寻址目标处理器的有益效果。因此,中断信号可以由选择目标处理器id的发布总线连接模块定向到特定处理器,即多处理器计算机系统的目标处理器。例如,可以选择之前已经进行过与中断相关的活动的处理器,作为中断信号的目标处理器。由与相应活动相同的处理器处理中断信号可能会导致性能优势,因为在相同的处理器也处理中断信号的情况下,具有该中断的上下文中的所有数据可能已经可用于该处理器和/或存储在本地高速缓存中,使得相应处理器能够在不需要大量高速缓存通信量(traffic)的情况下进行快速访问。
36.因此,可以避免不能保证最终处理中断的处理器从性能的角度来看(如缓存通信量最小化)最适合此任务的中断信号的广播。可以直接将中断信号提供给目标处理器以提高中断信号处理的效率,而不是将中断信号提交给所有处理器、每个处理器都试图处理中断信号并且一个处理器胜出。
37.中断机制可以用定向中断(directed interrupt)来实现。可以使总线附接设备能够在向由发布总线连接模块定义的中断信号的目标处理器转发要处理的中断信号时,用目标处理器的逻辑处理器id来直接寻址目标处理器。由总线附接设备将中断目标id转换为逻辑处理器id可以进一步确保从客户机操作系统的角度看来是始终寻址相同的处理器,即使中断目标id与逻辑处理器id之间的映射或被调度用于由客户机操作系统使用的处理器的选择可能会被管理程序。
38.根据实施例,在存储器中的中断表的中断条目中引入直接中断阻止指示符。直接中断阻止指示符可以以单个位(即,dibpia位)的形式实现。
39.根据实施例,从存储器中提取irte,检查运行指示符以确定目标处理器是否被调度。如果目标处理器被调度,则启用直接中断阻止指示符,以便阻止目标处理器在处理当前中断信号的同时接收进一步的中断信号。其他中断信号可能会干扰当前中断信号的处理。为确保目标处理器在此期间尚未被重新调度,重新获取irte并再次检查当前运行指示符,以确定目标处理器是否仍然被调度。在目标处理器仍然被调度的情况下,可以使用目标处理器的逻辑处理器id直接寻址目标处理器,将中断信号转发给目标处理器。此外,可以检查irte为所接收的中断目标id提供的目标处理器的逻辑处理器id是否仍然相同。
40.根据实施例,中断信号是以包含目标处理器的中断目标id的消息信号中断(message signaled interrupt)的形式接收的。使用消息信号中断(msi)是总线连接模块(诸如外围组件互连(pci)或快速外围组件互连(pcie)功能)生成中央处理单元(cpu)中断以便向使用相应中央处理单元的客户机操作系统通知事件的发生或某种状态的存在的方法。msi提供使用特殊带内消息来用信号发送中断的带内方法,从而避免需要与主要数据路径分离的专用路径,诸如每个设备上的专用中断引脚,来发送这样的控制信息。msi反而依赖于通过主要数据路径来交换指示中断的特殊消息。当总线连接模块被配置为使用msi时,相应模块通过执行指定字节数的数据到特定地址的msi写操作来请求中断。这个特定地址(即,msi地址)与唯一性数据值(即,msi数据)的组合,称为msi向量。
41.现代pcie标准适配器具有提交多个中断的能力。例如,msi

x允许总线连接模块分配最多2048个中断。因此,使得能够例如在依赖于多处理器系统的高速联网应用中将个别中断定向到不同处理器。msi

x允许分配多个中断,每个中断具有单独的msi地址和msi数据
值。
42.为了传输中断信号,可以使用msi

x消息。可以使用msi

x数据表来确定msi

x消息的所需内容。总线连接模块(即pcie适配器/功能)本地的msi

x数据表,可以通过分配给每个中断信号(亦称中断请求(irq))的数字来索引。msi

x数据表内容受客户机操作系统的控制,并且可以通过硬件和/或固件的指导来设置到操作系统。单个pcie适配器可以包括多个pcie功能,每个pcie功能可以具有独立的msi

x数据表。例如对于单根输入/输出虚拟化(sr

iov)或多功能设备来说,可以就是这样的情况。
43.中断目标id(如例如虚拟处理器id)可以被直接编码为包括中断信号的、由总线连接模块发送的消息(诸如msi

x消息)的一部分。消息(例如,msi

x消息)可以包括请求者id,即总线连接模块的id、前述的中断目标id、dibv索引、msi地址和msi数据。msi

x消息可以提供用于msi地址的64位和用于数据的32位。总线连接模块可以通过执行特定msi数据值到特定msi地址的msi写操作,来使用msi请求中断。
44.设备表是可以通过中断请求者(即,总线连接模块)的请求者id(rid)完全地索引的共享表。总线附接设备重新映射和发布中断,即,总线附接设备转换中断目标id并使用中断目标id来直接寻址目标处理器。
45.客户机操作系统可以使用虚拟处理器id来标识多处理器计算机系统中的处理器。因此,客户机操作系统的处理器视图(view)可能会不同于使用逻辑处理器id的底层系统的视图。提供由客户机操作系统使用的资源的总线连接模块,可以使用虚拟处理器id作为用于与客户机操作系统通信的资源,例如,msi

x数据表可处于客户机操作系统的控制下。作为虚拟处理器id的替代,可以为总线连接模块寻址处理器而定义任何其他id。
46.中断被提交给客户机操作系统或在其上执行的其他软件,诸如其他程序等。如本文所使用的,术语操作系统包括操作系统设备驱动器。
47.如本文所使用的,术语总线连接模块(bus connected module)可包括任何类型的总线连接模块。根据实施例,模块可以是硬件模块,例如存储功能、处理模块、网络模块、密码模块、pci/pcie适配器、其他类型的输入/输出模块等。根据其他实施例,模块可以是软件模块,即诸如存储功能、处理功能、网络功能、密码功能、pci/pcie功能、其他类型的输入/输出功能之类的功能。因此,在本文给出的示例中,除非另外指出,否则模块与功能(例如,pci/pcie功能)和适配器(例如,pci/pcie功能)可互换地使用。
48.实施例可以具有以下益处:提供中断信号路由机制(例如,msi

x消息路由机制),其允许它保持总线连接模块(例如,pcie适配器和功能)以及用于操作或控制总线连接模块的设备驱动器不变。此外,可以防止管理程序拦截用于实现总线连接模块与客户机操作系统之间的通信的底层架构,例如pcie msi

x架构。换言之,中断信号路由机制的变更可以在管理程序和总线连接模块外部实施。
49.根据实施例,所述方法进一步包括由总线附接设备使用广播将中断信号转发到所述多个处理器中的其余处理器进行处理。。
50.根据实施例,所述方法进一步包括:由客户机操作系统的中断处理程序检查是否有任何寻址到目标处理器的中断等待目标处理器处理,如果没有寻址到目标处理器的中断等待目标处理器处理,客户机操作系统更改分配给目标处理器的中断表条目中的中断阻止指示符,以指示目标处理器未被阻止。实施例可以具有跟踪目标处理器是否被阻止的有益
效果。因此,可以防止直接向被阻止的目标处理器发送中断信号。根据实施例,中断阻止指示符以单个位实现。实施例可以具有以下有益效果,即以最小存储空间的形式提供中断阻止指示符,并且中断阻止指示符是可快速且有效地处理的。
51.根据实施例,中断表条目的第一副本进一步包括所接收的中断目标id到逻辑处理器id中的第一逻辑处理器id的第一映射,总线附接设备使用中断表条目的第一副本将所接收的中断目标id转换为目标处理器的逻辑处理器id。
52.实施例可以具有提供包括中断表条目(irte)的中断表(irt)、每个条目提供中断目标id到逻辑处理器id的映射的有益效果。因此,条目可以定义每个中断目标id到逻辑处理器id的唯一性分配。根据实施例,中断目标id可以虚拟处理器id的形式提供。根据实施例,中断目标id可以是由客户机操作系统用来标识所使用的各个处理器的任何其他id。
53.根据实施例,在存储器中提供irt,以供总线附接设备用于将中断目标id映射到逻辑处理器id。根据实施例,可以在单个位置中提供irt。可以提供指示irt的存储器地址的地址指示符,例如指针。该地址指示符可以例如由总线附接设备从存储器中提取的设备表的条目来提供。实施例可以具有不必在总线附接设备中存储大的映射表的有益效果。相反,用于映射的中断表可以存储在存储器中并且在必要时由总线附接设备访问。因此,总线附接设备可能仅需要处理用于待转发的每个中断信号的一个或多个中断表条目的工作副本。优选地,中断表条目的数量可以较小,例如一个。
54.根据实施例,可以在重新调度处理器时更新irt或个别irte。根据实施例,irt可以被存储在存储器的内部区段(即,hsa)中。
55.根据实施例,中断表条目的第一副本进一步包括运行指示符的第一副本,运行指示符指示由中断目标id标识的目标处理器是否被调度由客户机操作系统使用,其中,所述方法进一步包括由总线附接设备使用运行指示符的第一副本检查目标处理器是否被调度由客户机操作系统使用,如果目标处理器被调度,继续转发中断信号,否则,由总线附接设备使用广播将中断信号转发给所述多个处理器进行处理。
56.实施例可以具有防止中断针对未运行的处理器—即未被调度由客户机操作系统使用的处理器的效果。实施例可以具有支持虚拟机管理程序重新调度处理器的有益效果。
57.运行指示符指示由随中断信号一起接收的中断目标id标识的目标处理器是否被调度由客户机操作系统使用。运行指示符例如可以以运行位的形式实现,即以单个位实现,该位指示分配有相应位的处理器是否正在运行,即被调度由客户机操作系统使用。因此,启用的(enabled)运行位可以告诉总线附接设备,目标处理器当前被调度,而禁用的运行位则可以告诉总线附接设备,目标处理器当前未被调度。如果目标处理器未运行,总线附接设备无须尝试直接寻址所述处理器之一,就可以立即发送备用的广播中断请求。
58.根据实施例,所述方法进一步包括,如果目标处理器未被阻止,则由总线附接设备更改分配给中断目标id的中断表条目中的中断阻止指示符,以指示第一逻辑处理器id被阻止,所述更改在将中断信号转发给目标处理器进行处理之前进行。
59.根据实施例,该方法进一步包括,在更改中断阻止指示符后,由总线附接设备检索分配给所接收的中断目标id的中断表条目的第二副本,由总线附接设备检查中断表条目的第二副本,以排除中断表第二副本相对于中断表条目的第一副本的预定义类型的更改,成功排除预定义类型的更改是将中断信号转发到目标处理器进行处理所需的。
60.根据实施例,预定义类型的更改是所接收的中断目标id的第一映射相对于所接收的中断目标id到由中断表条目的第二副本包含的逻辑处理器id中的第二逻辑处理器id的第一映射的更改,其中,如果第二映射包括相对于第一映射的更改,由总线附接设备使用广播将中断信号转发到所述多个处理器进行处理。
61.根据实施例,预定义类型的更改是运行指示符的第一副本相对于由中断表条目包含的第二副本的运行指示符的第二副本的更改,其中,如果运行指示符的第二副本包括相对于运行位的第一副本的更改,第二运行指示符指示目标处理器没有被调度由客户机操作系统使用,由总线附接设备使用广播将中断信号转发到所述多个处理器进行处理。
62.根据实施例,可以执行irte的双重提取,以便防止中断信号被发送到例如同时已经被停用的处理器。根据各实施例,在将中断信号转发给由使用irte的第一副本转换中断目标id而产生的逻辑处理器id所标识的处理器之后,可提取同一irte的第二副本以检查irte是否同时发生了任何改变。在irte同时已经被更新的情况下,存在中断信号已经被转发到被停用的处理器的风险。因此,可以用irte的第二副本来再次转换中断目标id,并将中断信号转发给由第二次转换产生的逻辑处理器id所标识的处理器。根据替代实施例,在irte的第二副本与第一副本不匹配的情况下,可以重复从获取irte的第一副本开始的完整方法。例如,可以提取irte的第三副本以代替irte的第一副本,或者以irte的第二副本代替irte的第一副本,并且,可以提取irte的第三副本,以实现也为了部分重复该方法的双重提取(double fetch)方案。可以重复此方案,直到实现匹配为止。根据另外的备选实施例,在irte的第二副本与第一副本不匹配的情况下,可以使用广播来转发中断信号。根据实施例,总线附接设备参与存储器高速缓存一致性协议并通过cpu可以检测高速缓存行变化的相同机制(例如,高速缓存窥探)来检测irte上的变化。
63.实施例可以具有避免可能具有低效缩放的高速缓存清除的有益效果。可以是全局的或者特定于irte的,即,整个条目被双重提取或者限于相应条目所包括的特定信息。
64.根据实施例,由转换中断目标id和将中断信号转发到目标处理器直到其到达处理器所需的时间所产生的竞争条件,可以通过cpu上的检查逻辑检查接收处理器是否仍是正确的目标处理器而捕获到,直到中断信号到达处理器为止。为了检查,可以将与中断请求一起接收的中断目标id和/或逻辑分区id与分配给接收处理器的当前中断目标id和/或逻辑分区id进行比较,作为参考。在匹配的情况下,使用通过用irte的副本的转换产生的逻辑处理器id直接寻址的接收处理器,确实是正确的目标处理器。因此,由irte的副本提供的信息已经是最新的。在失配的情况下,irte的副本尚不是最新的,并且接收处理器不再是目标处理器。在失配的情况下,可以例如使用广播将中断信号转发到目标操作系统。
65.根据实施例,可能会存在三个并行操作的实体,即,总线附接设备和处理中断信号的目标处理器以及可改变中断目标id与逻辑处理器id之间的分配的管理程序。根据实施例,在物理分布式系统中,除了以延迟成本提供这样的系统的虚拟外观的存储器之外,可能没有中心同步点。使用双重提取方案的实施例可以具有提供针对防止中断请求的双重递送或甚至丢失优化了速度的方法的有益效果。
66.关于中断信号,可以执行以下动作:a1)读取irte的第一副本,a2)向直接寻址的处理器发送中断请求,以及a3)读取irte的第二副本。同时,关于中断目标id和逻辑处理器id之间的分配变化,可能发生以下序列:b1)激活具有额外的逻辑处理器id的额外的处理器,
并停用具有先前的逻辑处理器id的先前的处理器,以及b2)用额外的逻辑处理器id更新irte,即,用额外的逻辑处理器id替换先前的逻辑处理器id。
67.在某些错误情况下,处理器(例如,目标处理器)可能会被重置到检查点并且丢失中间信息。为了重新获得丢失的信息,处理器可以扫描该特定处理器的、即分配给其逻辑处理器id的所有irte条目,并且传递由存储器中存在的不受处理器恢复影响的待决直接中断指示符(例如,dpia位)所指示的直接中断请求。
68.如果应当提交中断信号,则可将irte所包括的待决直接中断指示符(例如,irte.dpia位)用作主副本,即单个真值点。为了简化处理器恢复,可以将处理器中的待决直接中断指示符用作例如irte.dpia位的影子副本,以保持处理器上待决的直接中断。
69.在存储器具有严格有序性的情况下,只有步骤a1、a2和b1的以下顺序可能是可能的:具有a1

a3

b1的备选方案1以及具有a1

b1

a3的备选方案2。在备选方案1的情况下,irte的第一和第二副本可能会匹配。因此,中断信号可能会被转发到先前处理器而不是当前目标处理器。先前处理器可以看到中断目标id和/或逻辑分区id的失配,并发起对接收到的中断信号的广播。在备选方案2的情况下,总线附接设备可以看到irte的第一副本和第二副本之间的失配。响应于该失配,总线附接设备可以广播中断信号。由于广播,中断信号可以由看到命中并直接处理所接收的中断请求的额外处理器接收。实施例可以具有通过过于主动的方式关闭定时窗口的有益效果。
70.根据实施例,所述方法进一步包括:由总线附接设备从存储在存储器中的设备表检索设备表条目的副本,设备表条目包括指示是否要直接寻址目标处理器的直接信令指示符,其中,如果直接信令指示符指示直接转发中断信号,则用目标处理器的逻辑处理器id直接寻址目标处理器来执行中断信号的转发,否则,由总线附接设备使用广播将中断信号转发到所述多个处理器进行处理。
71.实施例可以具有使用直接信令指示符控制是使用直接寻址还是广播来转发中断信号的有益效果。使用每个总线连接模块的直接信号指示符,可以为从该总线连接模块接收的中断信号提供是进行直接寻址还是进行广播的单独的预定义选择。
72.根据实施例,设备表条目还包括指示中断表的第一个存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来检索中断表条目的第一副本。
73.根据实施例,存储器进一步包括具有每个中断目标id的定向中断摘要指示符的定向中断摘要向量,分配给中断目标id的每个定向中断摘要指示符,指示是否存在寻址到相应中断目标id的中断信号待处理,所述方法进一步包括由总线附接设备使用所指示的定向中断摘要向量的存储器地址来更新分配给所接收的中断信号寻址到的目标处理器id的定向中断摘要指示符,使得更新的定向中断摘要指示符指示存在寻址到相应中断目标id的中断信号待处理。
74.根据实施例,存储器进一步包括定向中断摘要向量,设备表条目进一步包括指示定向中断摘要向量的存储器地址的定向中断摘要向量地址指示符,定向中断摘要向量包括每个中断目标id的定向中断摘要指示符,分配给中断目标id的每个定向中断摘要指示符指示是否存在寻址到相应中断目标id的中断信号待处理,所述方法进一步包括由总线附接设备使用所指示的定向中断摘要向量的存储器地址来更新分配给所接收的中断信号寻址到的目标处理器id的中断摘要指示符,使得更新的中断摘要指示符指示存在寻址到相应中断
目标id的中断信号待处理。
75.当例如由于管理程序没有调度目标处理器而无法直接传递中断时,客户机操作系统可能会受益于使用广播传递具有最初预期关联性(即中断预期针对哪个处理器的信息)的中断。在这种情况下,总线附接设备可以在设置dibv之后、向客户机操作系统发送广播中断请求之前,在disb中设置一个指定目标处理器的位。如果客户机操作系统接收到广播中断请求,则它可以通过扫描和禁用disb中的直接中断摘要指示符(例如,扫描和重置直接中断摘要位)来识别哪些目标处理器有如dibv中指示的待处理中断信号。因此,可以使客户操作系统能决定中断信号是由接收广播的当前处理器处理还是进一步转发到原始目标处理器。
76.根据实施例,存储器进一步包括一个或多个中断信号向量,设备表条目进一步包括指示所述一个或多个中断信号向量的中断信号向量的存储器地址的中断信号向量地址指示符,中断信号向量各自包括一个或多个信号指示符,分配给所述一个或多个总线连接模块中的总线连接模块指示符和中断目标id的每个中断信号指示是否已从相应总线连接模块接收寻址到相应中断目标id的中断信号,所述方法进一步包括:由总线附接设备使用所指示的中断信号向量的存储器地址来选择分配给发布所接收的中断信号的总线连接模块且分配给所接收的中断信号寻址到的中断目标id的中断信号指示符,
77.根据实施例,中断信号向量各自包括分配给相应中断目标id的每个中断目标id的中断信号指示符,中断信号向量的每一个被分配给单个总线连接模块,相应中断信号向量的中断信号指示符进一步被分配给相应的单个总线连接模块。
78.根据实施例,中断信号向量各自包括分配给各个总线连接模块的每个总线连接模块的中断信号指示符,中断信号向量的每一个被单个目标处理器id,相应中断信号向量的中断信号指示符进一步被分配给相应目标处理器id。
79.因此,中断信号向量可以实现为根据目标处理器id排序的、即为跟踪定向中断而优化的定向中断信号向量。换言之,主要次序准则是目标处理器id而非标识发布中断请求的总线连接模块的请求者id。取决于总线连接模块的数目,每个定向中断信号向量可以包括一个或多个定向中断信号指示符。
80.因此,可以避免对(例如中断信令位形式的)中断信号指示符进行排序,中断信号指示符指示已经顺序地接收到单个总线连接模块(诸如pcie功能)的存储器的连续区域(诸如高速缓存行)内的(例如msi

x消息形式的)的单个中断信号。启用和/或禁用中断信号指示符(例如通过使中断信令位置位或复位)要求将存储器的相应连续区域转移到处理器其中之一以相应地改变相应中断信号指示符。
81.处理器可以处理从客户机操作系统角度看来其所负责的所有指示符,即,尤其是分配给相应处理器的所有指示符。这可以实现性能优势,因为在每个处理器正在处理分配给处理器的所有数据的情况下,这个上下文中所需的数据被提供给处理器和/或存储在本地高速缓存中的可能性可能较高,使得不需要大量的高速缓存通信量就能够快速访问处理器的相应数据。
82.然而,尝试处理其所负责的所有指示符的每一处理器,仍可导致处理器之间的较高的高速缓存通信量,因为每一处理器都需要写所有功能的所有高速缓存行。因为分配给每一个别处理器的指示符可分布于所有连续区域,例如高速缓存行。
83.中断信令指示符可以以定向中断信令向量的形式重新排序,使得分配给相同中断目标id的所有中断信令指示符被组合在存储器的相同连续区域(例如,高速缓存行)中。因此,打算处理分配给相应处理器的指示符(即,中断目标id)的处理器可能只需要加载存储器的单个连续区域。因此,使用每个中断目标id的连续区域,而不是每个总线连接模块的连续区域。每一处理器可能只需要扫描和更新存储器的单个连续区域,例如,从所有可用总线连接模块接收的由中断目标id标识为目标处理器的特定处理器为目标的所有中断信号的高速缓存行。
84.根据实施例,可以由管理程序为客户机操作系统应用偏址以将位对准到不同的偏址。
85.根据实施例,设备表条目进一步包括标识客户机操作系统被分配到的逻辑分区的逻辑分区id,其中,由总线附接设备转发中断信号进一步包括随中断信号一起转发逻辑分区id。实施例可以具有使接收处理器能检查中断信号要寻址到哪个客户机操作系统的有益效果。
86.根据实施例,所述方法进一步包括由总线附接设备检索标识所接收的中断信号被分配到的中断子类的中断子类id,由总线附接设备转发中断信号进一步包括随中断信号一起转发中断子类id。
87.根据实施例,在计算机可读非暂时性介质上提供的用于由处理电路执行的指令被配置以执行如本文所述的向客户机操作系统提供中断信号的方法的任何实施例。
88.根据实施例,计算机系统进一步被配置以执行如本文所述的向客户机操作系统提供中断信号的方法的任何实施例。
89.图1描绘了用于向客户机操作系统提供中断信号的示例性计算机系统100。计算机系统100包括多个处理器130,用于执行客户机操作系统。计算机系统100还包括存储器140,也称为内存存储器或主存储器。存储器140可以提供被分配用于由计算机系统100包括的硬件、固件和软件组件使用的存储器空间,即存储器区段。存储器140可以由计算机系统100的硬件和固件以及软件(例如,管理程序、主机/客户机操作系统、应用程序等)使用。一个或多个总线连接模块120经由总线102和总线附接设备(bus attachment device)110与多个处理器130以及存储器140可操作地连接。总线附接设备110一方面管理总线连接模块120与处理器130的通信,另一方面管理总线连接模块120与存储器140之间的通信。总线连接模块120可直接或经由例如转换器104的一个或多个中间组件与总线102连接。
90.总线连接模块120可以例如以高速外围组件互连(pcie)模块(亦称pcie适配器或由pcie适配器提供的pcie功能)的形式来提供。pcie功能120可以发布请求,该请求被发送到总线附接设备110,例如pci主机桥(phb),亦称pci桥单元(pbu)。总线附接设备110从总线连接模块120接收请求。这些请求可以例如包括用于由总线附接设备110执行对存储器140的直接存储器访问(dma)的输入/输出地址或者指示中断信号(例如,消息信号中断(msi))的输入/输出地址。
91.图2描绘了由计算机系统100提供的示例性虚拟机支持。计算机系统100可以包括一个或多个虚拟机202以及至少一个管理程序200。虚拟机支持可以提供操作大量虚拟机的能力,每个虚拟机能够执行客户机操作系统204,诸如z/linux。每个虚拟机201可以能够充当单独的系统。因此,每个虚拟机可以被独立地复位,执行客户机操作系统,以及运行不同
的程序,如应用程序。在虚拟机中运行的操作系统或应用程序似乎能够访问全部和完整的计算机系统。然而实际上,计算机系统的可用资源中的仅一部分可供相应操作系统或应用程序使用。
92.虚拟机可以使用v=v模型,其中分配给虚拟机的存储器由虚拟存储器而不是真实存储器支持。因此,每个虚拟机具有虚拟线性存储器空间。物理资源由管理程序200(例如,vm管理程序)拥有,并且,由管理程序根据需要将共享的物理资源分派给客户机操作系统,以满足客户机操作系统的处理需求。v=v虚拟机模型假设客户机操作系统与物理共享机器资源之间的交互由vm管理程序控制,因为大量客户可阻止管理程序简单地划分硬件资源并将硬件资源分配给配置的客户。
93.处理器120可以由管理程序200分配给虚拟机202。虚拟机202可以例如分配有一个或多个逻辑处理器。每个逻辑处理器可以代表可以由管理程序200动态分配给虚拟机202的物理处理器120的全部或部分。虚拟机202由管理程序200管理。管理程序200可以例如被实现在处理器120上运行的固件中或者可以是在计算机系统100上执行的操作系统的一部分。管理程序200可以例如是vm管理程序,诸如由美国纽约州阿蒙克的国际商业机器公司提供的
94.图3描绘了由计算机系统100提供的示例性多级虚拟机支持。除了图2的第一级虚拟化之外,还提供具有第二管理程序210的第二级虚拟化,第二管理程序210在第一级客户机操作系统之一上执行,第一级客户机操作系统充当第二管理程序210的主机操作系统。第二管理程序210可以管理一个或多个第二级虚拟机212,每个第二级虚拟机能够执行第二级客户机操作系统212。
95.图4描绘了展示使用不同类型的id来标识计算机系统100的位于不同层级的处理器的示例性模式。底层固件220可以提供逻辑处理器id、icpu 222来标识计算机系统100的处理器130。第一级管理程序200使用逻辑处理器id icpu 222与处理器130通信。第一级管理程序可以提供第一虚拟处理器id vcpu 224,供由在第一级管理程序200管理的虚拟机上执行的客户机操作系统204或第二级管理程序210使用管理程序200可以将第一虚拟处理器id vcpu 224分组,以便为客户机操作系统204和/或管理程序210提供逻辑分区(logical partition),亦称区(zone)。第一级管理程序200将第一虚拟处理器id vcpu 224映射到逻辑处理器id lcpu 222。由第一级管理程序200提供的一个或多个第一虚拟处理器id vcpu 224可以被分配给使用第一级管理程序200执行的每个客户机操作系统204或管理程序210。在第一级管理程序200上执行的第二级管理程序210可以提供执行例如另外的客户机操作系统214的软件的一个或多个虚拟机。为此,第二级管理程序管理第二虚拟处理器id vcpu 226,以由在第一级管理程序200的虚拟机上执行的第二级客户机操作系统214使用。第二虚拟处理器id vcpu 226由第二级管理程序200映射到第一虚拟处理器id vcpu 224。
96.由第一/第二级客户机操作系统204使用的总线连接模块120寻址处理器130可以使用第一/第二虚拟处理器id vcpu 224、226或从第一/第二虚拟处理器id vcpu 224、226导出的替代id形式的目标处理器id。
97.图5描绘了计算机系统100的简化示意性设置,展示了用于向计算机系统100上执行的客户机操作系统提供中断信号的方法中的主要参与者。出于说明的目的,该简化的设置包括将中断信号发送到在一个或多个处理器(cpu)130上执行的客户机操作系统的总线
连接模块(bcm)120。中断信号与中断目标id(it_id)一起被发送到总线附接设备110,该中断目标id将处理器130中的一个处理器标识为目标处理器。总线附接设备110是管理总线连接模块120与计算机系统100的处理器130以及存储器140之间的通信的中间设备。总线附接设备110接收中断信号并且使用中断目标id来标识目标处理器的逻辑处理器id以便直接寻址相应的目标处理器。向目标处理器的定向转发可例如通过减少高速缓存通信量来改进数据处理的效率。
98.图6描绘了图5的计算机系统100。总线附接设备110被配置为对存储器140的模块特定区域(module specific area)(msa)149中的总线连接模块120的状态执行状态更新。可以响应于从总线连接模块接收指定待写入到存储器140中的状态更新的直接存储器存取(dma)写而执行此状态更新。
99.存储器进一步包括每个总线连接模块120的设备表(dt)144。在接收到中断信号(例如,具有标识中断请求的目标处理器的中断目标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的待处理的中断信号。这可以具有以下优点:为了检查是否存在任何中断信号或者存在来自哪些总线连接模块的针对特定处理器130的待处理的中断信号,只需要从存储器140读取信号条目(例如,位)或信号向量(例如,位向量)。根据替代实施例,可以使用中断信号向量(aibv)和中断摘要向量(aisb)。aibv以及aisb的条目各自被分配给特定的总线连接模块120。
100.总线附接设备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用于在定向中断转发的情况下直接寻址目标处理器。
101.irte 152另外提供指示由中断目标id标识的目标处理器是否被调度(即是否在运行)的运行指示符154和/或指示目标处理器当前是否被阻止接收中断信号的阻止指示符146。在目标处理器未被调度或被阻止的情况下,可发起广播以便实现及时的中断处理。
102.每个处理器包括用于接收和处理直接中断信号的固件(例如,毫代码132)。固件可以进一步包括例如处理器130的微代码和/或宏代码。它可以包括在更高级机器代码的实现中使用的硬件级指令和/或数据结构。根据各实施例,它可包括可作为包括受信任的软件的微代码或特定于底层硬件的微代码被递送并控制对系统硬件的操作系统访问的专有代码。此外,处理器130的固件可包括用于根据由总线附接设备110转发到接收处理器130的中断目标id来检查接收处理器是否与目标处理器相同的检查逻辑134。在接收处理器130不是目
标处理器的情况下,即,在所接收的中断目标id与接收处理器130的参考中断目标id不匹配的情况下,中断信号被广播到逻辑分区,以寻找用于处理中断信号的处理器。
103.图7是用dma写请求经由总线附接设备110执行总线连接模块120的状态更新的示例性方法的流程图。在步骤300中,总线连接模块可以决定更新其状态并触发中断,例如以便指示信号完成。在步骤310中,总线连接模块经由总线附接设备发起对分配给在计算机系统上运行的主机的存储器区段(主机存储器)的直接存储器访问(dma)写,以便更新总线连接模块的状态。dma是允许计算机系统的外围组件直接向主存储器和从主存储器传送其i/o数据而无需涉及系统处理器的硬件机制。为了执行dma,总线连接模块例如以msi

x消息的形式向总线附接设备发送dma写请求。在pcie的情况下,总线连接模块可以例如指代在pcie适配器上提供的pcie功能。在步骤320中,总线连接模块接收具有总线连接模块的状态更新的dma写请求,并使用所接收的更新来更新存储器。所述更新可以在主机存储器的为相应的总线连接模块保留的区域中执行。
104.图8是用于使用图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消息形式的中断请求。
105.在步骤340中,总线附接设备获取存储在存储器中的设备表的条目的副本。设备表条目(dte)提供待更新的一个或多个向量或向量条目的地址指示符以便指示已接收到针对目标处理器的中断信号。向量条目的地址指示符可以例如包括该向量在存储器中的地址以及在该向量内的偏址。此外,dte可提供直接信令指示符(direct signaling indicator),其指示目标处理器是否将由总线附接设备使用随中断信号一起提供的中断目标id来直接寻址。此外,dte可以提供逻辑分区id(亦称区id)和中断子类id。设备表条目的相应副本可以从高速缓存或者从存储器获取。
106.在步骤342中,总线附接设备使用随中断信号一起接收的中断目标id以及由dte提供的指示irt的存储器的地址指示符从存储器获取irte的副本。在步骤350中,总线附接设备更新在dte中指定的向量。
107.在步骤360中,总线附接设备检查随中断信号一起提供的直接信令指示符。在直接信令指示符指示非直接信令的情况下,总线附接设备在步骤370中通过使用区标识符和中断子类标识符进行广播来转发中断信号,以便将中断信号提供给由客户机操作系统使用的处理器。在直接信令指示符指示直接信令的情况下,总线附接设备在步骤362中进一步检查irte的副本所包括的运行指示符是否指示中断目标id所标识的目标处理器正在运行。
108.在目标处理器不在运行的情况下,在步骤364中,总线附接设备使用例如逻辑分区id和/或中断子类id来发送作为备用的广播中断,以识别适于处理中断的处理器。如果没有
找到匹配逻辑分区id和/或中断子类id的合适处理器,则管理程序,即被分配指派用于由管理程序使用的处理器,可以代替分配给客户机操作系统的处理器来接收该中断请求。如果分配给客户机操作系统的一个或多个处理器被调度,则管理程序可以决定再次广播中断请求。在分配给操作系统的处理器的条目上,管理程序可以检查要提交给正在进入的处理器的直接中断待决指示符,例如dpia位。根据实施例,管理程序可以例如选择性地重新调度(即,唤醒)目标处理器。
109.在目标处理器正在运行的情况下,在步骤366中,检查是否启用了直接中断阻止指示符,例如dibpia位。启用的直接中断阻止指示符表示客户机操作系统中断处理程序当前不希望中断传递。因此,如果直接中断阻止指示符被启用,则可以在步骤368中广播中断信号。如果直接中断阻止指示符被禁用,表明目标处理器当前未被阻止,则在步骤380中,通过转换所接收的中断目标id,以便用所接收的中断目标id的irte提供的逻辑处理器id将中断直接转发到目标处理器,来继续当前中断信号的传递。
110.在步骤390中,总线附接设备通过使用逻辑处理器id来直接寻址相应处理器,向目标处理器转发中断信号,即,发送直接消息。直接消息进一步可以包括区id和/或中断子类id。在步骤396中,目标处理器的固件(例如毫代码)接收中断。作为响应,固件可中断其活动,例如程序执行,并进行切换以执行客户机操作系统的中断处理程序。中断可与直接信令指示一起提交给客户机操作系统。在接收处理器上实现实施检查逻辑的情况下,可以执行检查,检查所接收的中断目标id和/或逻辑分区id是否与当前分配给接收处理器的且可用于检查逻辑的中断目标id和/或逻辑分区匹配。在不匹配的情况下,接收固件可以发起广播,并使用逻辑分区id和/或中断子类id来识别用于处理中断的有效目标处理器,将所接收的中断请求广播到其余处理器。
111.图9是进一步说明图8的方法的附加流程图。首先,可以向总线附接设备发送中断消息。可以检查分配给中断请求者(即,总线连接模块)的dte是否被缓存在与总线附接设备可操作地连接的本地高速缓存中。在dte未被缓存的情况下,可以由总线附接设备从存储器中提取相应dte。dte提供的向量地址指示符可用于设置存储器中的向量位。然后,在步骤410中,使用由dte提供的直接信令指示符检查目标处理器是否要被总线附接设备用与中断信号一起提供的中断目标id直接寻址。如果不要直接以目标处理器为目标,则所述方法继续向处理器广播中断请求。如果要直接以目标处理器为目标,则在步骤413中,该方法继续从存储器获取分配给所接收的中断目标id的irte的副本。在步骤413a中,检查由irte包含的运行指示符是否被启用。在运行指示符被禁用的情况下,在步骤413b中,总线附接设备可以使用广播来转发中断信号。在运行指示符被启用的情况下,总线附接设备在步骤413c中继续检查定向阻止指示符是否被启用。在定向阻止指示符未被启用的情况下,总线附接设备在步骤414中继续使用所获取的irte副本将中断目标id转换为逻辑处理器id。否则,可在步骤413d中抑制中断信号。在步骤416中,使用逻辑处理器id直接寻址目标处理器,向目标处理器发送转发中断信号的消息。该消息包括中断目标id、逻辑分区id和中断子类id。在步骤418中,处理器接收该消息。在步骤419中,处理器检查中断目标id和/或逻辑分区id是否与作为检查的参考而提供的当前中断目标id和/或逻辑分区id匹配。在匹配的情况下,处理器在步骤420中将中断请求提交给客户机操作系统。在不匹配的情况下,处理器在步骤422将中断请求广播给其他处理器。然后,处理器继续其活动,直到接收到下一个中断消息。
112.图10描绘了为确保所使用的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发送请求,以启用定向待决中断指示符(directed pending interrupt indicator),例如,将定向待决中断阵列(dpia)位置位(set)。启用的定向待决中断指示符指示针对中断目标id的定向中断处于待决状态。在步骤508中,由存储器140确认定向待决中断指示符的设置。在步骤510中,使用直接寻址将中断信号以定向中断请求的形式转发到目标处理器130,该目标处理器130由使用irte转换中断目标id而产生的逻辑处理器id标识。当目标处理器130接收到定向中断请求时,时间窗关闭。在步骤512中,当时间窗关闭时,总线附接设备110从存储器140中提供的irte读取irte的第二副本。在步骤514中,在接收到所请求的irte的第二副本时,总线附接设备110检查irte的第二副本是否与irte的第一副本匹配,即,irte,尤其是中断目标id的映射是否已更改。在匹配的情况下,所述方法在向客户机操作系统提交中断请求并处理该请求之后,以由目标处理器130重置irte中的定向待决中断指示符而结束。在失配的情况下,该方法可以继续步骤502。或者,该方法可以继续由总线附接设备110广播所接收的中断信号。
113.图11描绘了为确保irte提供的信息是最新的而执行irte的双重提取的另一种方法,在步骤600中,从总线连接模块120(例如pcie适配器或pcie适配器上的pcie功能)向总线附接设备110(例如pcie主机桥(phb))发送中断信号(例如msi

x消息)。在步骤602中,总线附接设备110从存储器140请求分配给与中断信号一起提供的中断目标id的irte的副本。在步骤604中,存储器140响应于请求发送irte的第一副本。第一副本包括:指示目标处理器被调度的运行指示符(例如,运行位r=1);指示目标处理器当前未被阻止接收中断信号的定向中断阻止指示符(例如,定向阻止位dibpia=0);以及逻辑处理器id lcpu。总线附接设备110使用逻辑处理器id lcpu直接寻址目标处理器130。由于运行指示符指示目标处理器130正在运行,因此,在步骤606中,总线附接设备110启用定向中断待决指示符,例如设置dpia=1,并阻止目标处理器接收进一步的中断,例如设置irte中的dibpia=1。为了检查在此期间irte的内容没有改变(例如目标处理器130被停用),通过在步骤608中请求对irte的重新读取来关闭关键时间窗。在步骤610中,存储器140响应于请求而发送irte的第二当前副本。第二副本包括指示目标处理器130仍然被调度的运行指示符(例如,运行位r=1),被总线附接设备启用的定向中断阻止指示符,以及与irte的第一副本提供的lcpu相同的逻辑处理器id lcpu。由于运行指示符以及lcpu没有改变,因此,所述方法在步骤612继续,使用lcpu发送直接寻址到目标处理器130的中断请求。目标处理器130向客户机操作系统提交中断并处理该中断。当中断处理完成时,目标处理器130禁用定向中断待决指示符(例如,重置dpia=0)以及定向中断阻止指示符(例如,重置dibpia=0)。
114.图12描绘了图16的方法的备选流程图,其示出了由irte包含的信息期间发生改变
的情况。在步骤600中,从总线连接模块120(例如pcie适配器或pcie适配器上的pcie功能)向总线附接设备110(例如pcie主机桥(phb))发送中断信号(例如msi

x消息)。在步骤602中,总线附接设备110从存储器140请求分配给随中断信号一起提供的中断目标id的irte的副本。在步骤604中,存储器140响应于请求而发送irte的第一副本。第一副本包括指示目标处理器130被调度的运行指示符(例如,运行位r=1)以及逻辑处理器id lcpu。总线附接设备110使用逻辑处理器id lcpu直接寻址目标处理器130。由于运行指示符指示目标处理器130正在运行,在步骤606中,总线附接设备110启用定向中断待决指示符(例如设置dpia=1),并阻止目标处理器接收进一步的中断(例如设置irte中的dibpia=1)。为了检查在此期间irte的内容没有被改变(例如目标处理器130被停用),通过在步骤608中请求对irte的重新读取来关闭关键时间窗。在步骤610中,存储器140响应于请求而发送irte的第二当前副本。在此示例中,目标处理器130期间已经对客户机操作系统被停用。因此,第二副本包括指示目标处理器130不再被调度的运行指示符(例如,运行位r=0)。逻辑处理器id lcpu与irte的第一副本提供的lcpu可能相同,也可能不同。定向中断阻止指示符仍然被总线附接设备启用。由于运行指示符和/或lcpu确实改变了,因此,所述方法在步骤612继续,使用广播向处理器发送中断请求。
115.图13描绘了示例性dte 146,其包括分配给中断目标id的irt的存储器地址irt@、逻辑分区id(区)和dibv内的偏址(dibvo)。dibvo标识分配给特定总线连接模块的向量的部分或条目的开始。中断信号(例如msi

x消息)可提供一个dibv idx,该dibv idx与dibvo相加标识分配给总线连接模块的向量的特定条目。此外,还提供了定向中断数(noi),其定义了dibv中为相应总线连接模块保留的最大位数。图16a中示出了dibv的进一步细节。在aibv的情况下,如图16b所示,dte可以提供相应aibv特定的参数。
116.此外,还描绘了示例性irte 152。irte 152可以包括分配给目标处理器的中断目标id的逻辑分区id(zone)、中断子类id(disc)、disb的存储器地址disb@、disb内的偏址disbo以及dibv的存储器地址dibv。
117.图14描绘了disb 160和多个dibv 162的示意性结构。disb 160可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括每个中断目标id的条目161,例如位(比特)。每个条目指示是否存在要由中断目标id标识的相应处理器处理的中断请求(irq)。为每个中断目标id(即,disb 160的条目)提供一个dibv 162。每个dibv 162被分配给特定的中断目标id并且包括每个总线连接模块mn a、mn b的一个或多个条目163。dibv 162各自可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括分配给相同中断目标id的条目163。不同总线连接模块的条目可以是使用每个总线连接模块的不同偏址dibvo的顺序。
118.图15描绘了aisb 170和多个aibv 172的示意性结构。aisb 170可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括每个总线连接模块mn a至mn d的条目171,例如位。每个条目指示是否存在来自相应总线连接模块的待处理的中断请求(irq)。为每个总线连接模块(即,aisb 170的条目)提供一个aibv 172。每个aibv 172被分配给特定总线连接模块并且每个中断目标id的一个或多个条目173。aibv 172可以各自以可以连续存储器区段的形式来提供,例如,以高速缓存行的形式提供,其包括分配给相同总线连接模块的条目173。关于不同总线连接模块的条目可以是使用每个总线连接模块的不
同偏址aibvo的顺序。
119.图17a和17b分别示出了示例性disb 160和aisb 170。条目161、171可用基本地址disb@和aisb@分别与偏址disbo和aisbo的组合进行寻址。在disb 160的情况下,例如,disbo可以与相应条目161被分配给的中断目标id相同。中断目标id可以例如以虚拟处理器id(vcpu)的形式提供。
120.图18a和18b示出了向客户机操作系统提供中断信号的示例性方法。在步骤704中,总线连接模块(bcm)(例如pci适配器上的虚拟功能,即pci适配器(vf))发送中断信号。中断信号可以例如以msi

x消息msi

x(vf、vcpu、dibv idx)的形式发送,包括虚拟功能vf的标识符(例如虚拟处理器id vcpu形式的)中断目标id以及标识向量包含的条目(例如位)的定向中断信号向量内的偏址(例如dibv idx)。在步骤706中,总线附接设备(bad)(例如也被称为pci桥单元(pbu)的pci主机桥(phb))接收中断信号。
121.在步骤708中,pbu读取分配给vf的设备表(dt)的条目。存储在存储器的硬件系统区(hsa)中的dt条目如表中的行所示。dt的条目可以包括中断表的地址(irt@)以及指示是否要执行定向信令的定向信令位。pbu用irt@从hsa获取分配给vcpu的irt条目,该条目包括指示vcpu是否正在运行的运行位(r),指示vcpu是否被阻止接收中断的定向中断阻止位(dibpia),以及指示定向到vcpu的中断是否处于待决状态的定向中断待决位(dpia)。在步骤700中的较早时间点,已经发布了开始解释性执行指令(sie

进入),该指令启动目标处理器从管理程序模式到客户机模式的状态改变。在步骤701中,将分配给目标处理器以及所提供的目标处理器的逻辑处理器id(trgtpu#)的irte中的r设置为1。然后,该方法以702结束。对于固件和硬件来说,trgtpu#指处理单元(l个物理pu)的物理id,而对于zos和逻辑分区(lpar)来说,trgtpu#指处理单元(逻辑pu)的逻辑id。
122.在步骤710中,pbu使用msi

x中的dibv idx设置分配给vcpu的dibv中的一位,以指示存在来自vf的针对vcpu的中断信号。在步骤712中,pbu检查irte是否被阻止,即是否irte.dibia==1。如果irte分配给vcpu,因此vcpu被阻止接收进一步的中断,则该方法以步骤714结束。如果irte未被阻止,则该方法继续执行步骤716,在步骤716中,pbu检查vcpu是否正在运行,即r是否在irte中被置位。
123.如果r被置位,则该方法继续执行步骤718,执行定向寻址。在步骤718中,在irte中将dlbpia和dpia设置为1,指示vcpu当前被阻止接收中断信号,且寻址到vcpu的中断处于待决状态。在步骤720中,检查irte(更准确地,irte的r和/或trgtpu#的状态)与步骤78中的irte相比是否发生了变化。这样,就实现了读取irte两次,以确保在两次读取之间没有发生任何(例如由于步骤722中所示的另一个客户机的sie

进入引起的)相关变化的双重提取方案。
124.在步骤722中,在目标处理器上执行另一个客户机的sie

进入指令。在步骤724中,该另一客户机读取前一客户机的irte,并在步骤726中发出r的原子重置命令,即设置r=0且指示vcpu不再运行。此外,从irte读取dpia。在步骤728中,检查dpia是否置位(irte.dpia==1)—置位则表明仍然有针对vcpu的中断处于待决状态。如果没有中断处于待决状态,则该方法以步骤730结束。如果有中断仍然处于待决状态,则在步骤732,重置关于目标pu的待决中断指示符pu.dpia以及irte的irte.dpia,并启动针对该待决中断的广播。因此,如果在步骤720中确定了irte的相关变化,则广播中断。
125.如果在步骤720中未确定irte的相关变化,则该方法继续执行步骤734。在步骤734中,将中断信号(directed pci

interrupt sysop(定向pci

中断sysop))定向转发至目标pu,亦称定向pu(directed pu)。在步骤736中,定向pu接收定向pci中断,在步骤738中,将关于定向pu的待决中断指示符pu.dpia置位。在步骤739中,检查定向pu是否被屏蔽,即通常被阻止接收和执行中断。如果定向pu被屏蔽,则该方法以步骤740结束。如果定向pu被解除屏蔽(例如由于步骤742中所示的解除屏蔽),则该方法在步骤744中通过定向pu的固件(例如毫代码)(mcode io irpt)执行中断而继续。在步骤746中,重置pu.dpia和irte.dpia以指示中断不再处于未决状态。
126.在步骤748中,调用操作系统中断处理程序(os io irpt),在步骤750中,读取并重置在步骤710中设置的dibv位。在步骤752中,在分配给目标pu(即定向pu)的dibv的所有dibv位上进行循环。因此,针对目标pu的所有中断可以接连地得到处理。在所有dibv位都已被处理的情况下,在步骤754中通过重置irte.dibpia来解除对目标pu的阻止(sic.oc17)。此外,还重新读取dibv,以在步骤756中确定其间是否有另一个dibv位被置位。如果是这种情况,则处理相应的中断,否则该方法以步骤758结束。
127.如果步骤716中的检查结果为r未置位,则该方法继续执行步骤760,执行作为备用的广播。在步骤760中,启用定向中断摘要向量中的定向中断摘要指示符,例如将一个位置位。中断摘要向量的每一位都被分配给一个cpu,指示是否有任何中断要由相应的cpu处理。中断在步骤764中被广播(sigi.enq.ibpia)并在步骤766中被任何pu接收。在步骤768中,设置ibpia中相应pu的阻止位,指示该pu当前被阻止接收中断。在步骤770中,检查ibpia是否由于设置阻止位而发生了改变,即是否ibpia 0

1。如果ibpia尚未改变,即已经被阻止,则该方法以步骤772结束。如果ibpia已经改变,则在步骤774中,设置pia中相应pu设置的待决位。在步骤776中,检查pu是否被屏蔽,即通常被阻止接收和执行中断。如果pu被屏蔽,则该方法以步骤778结束。如果pu被解除屏蔽(例如由于步骤780中所示的解除屏蔽),则该方法在步骤782中通过pu(mcode io irpt)的固件(例如毫代码)执行中断而继续。在步骤784中,重置pia中的待决位,以指示该中断不再处于待决状态。
128.在步骤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结束。
129.客户机操作系统可以例如使用可分页存储模式客户机来实现。例如,中的可分页客户机可在第2解释层通过start interpretive execution(sie)指令解释地执行。例如,逻辑分区(lpar)管理程序执行sie指令以开始物理、固定存储器中的逻辑分区。该逻辑分区中的操作系统(例如,)可以发布sie指令来执行其虚拟存储中的客户(虚拟)机。因此,lpar管理程序可以使用1级sie,管
理程序可以使用2级sie。
130.根据各实施例,计算机系统是由国际商业机器公司提供的system服务器。基于的是由国际商业机器公司提供的关于的细节,在题为“z/architecture principles of operation”(publication no.sa22

7832

11,august 25,2017)的出版物中有描述,特此通过引用在本文中合并其全文。system和是美国纽约州阿蒙克市的国际商业机器公司的注册商标。本文中使用的其他名称可以是国际商业机器公司或其他公司的注册商标、商标或产品名称。
131.根据各实施例,其他架构的计算机系统可以实现并使用本发明的一个或多个方面。例如,除服务器之外的服务器(例如power systems服务器或由国际商业机器公司提供的其他服务器)或其他公司的服务器实施、使用和/或受益于本发明的一个或多个方面。进一步,尽管在本文的示例中,总线连接模块和总线附接设备被视为服务器的一部分,但是在其他实施例中,它们不必一定被视为服务器的一部分,而是可以简单地被视为耦合到系统存储器和/或计算机系统的其他组件。计算机系统不必是服务器。进一步,尽管总线连接模块可以是pcie,但是本发明的一个或多个方面可与其他总线连接模块一起使用。pcie适配器和pcie功能仅是示例。进一步,本发明的一个或多个方面可以应用于除了pcimsi和pcimsi

x之外的中断方案。更进一步,尽管描述了其中对位进行设置的示例,但是在其他实施例中,可以对字节或其他类型的指示符进行设置。此外,dte和其他结构可以包括更多、更少或不同的信息。
132.此外,其他类型的计算机系统可受益于本发明的一个或多个方面。作为示例,适合于存储和/或执行程序代码的包括直接地或通过系统总线间接地耦合到存储器元件的至少两个处理器的数据处理系统是可用的。存储器元件包括例如在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储装置检索代码的次数的高速缓存。
133.输入/输出或i/o设备(包括但不限于键盘、显示器、定点设备、dasd、磁带、cd、dvd、拇指驱动器和其他存储介质等)可以直接地或通过中间i/o控制器耦合到系统。网络适配器也可以耦合到系统,以使得数据处理系统能够通过居间的私有或公共网络变得耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是网络适配器的可用类型中的少数几种。
134.参照图19,描绘了用于实现本发明的一个或多个方面的主机计算机系统800的代表性部件。代表性主机计算机800包括与计算机存储器802通信的一个或多个处理器(例如cpu)801,以及连接到存储介质装置811和网络810的用于与其他计算机或san等通信的i/o接口。cpu 801符合具有架构指令集和架构功能的架构。cpu 801可以具有用于将程序地址、虚拟地址转换成存储器的实地址的动态地址转换(dat)803。dat可以包括用于高速缓存转换的转换后备缓冲器(tlb)807,使得对计算机存储器802的块的稍后访问不需要地址转换的延迟。可以在计算机存储器802与cpu 801之间采用高速缓存809。高速缓存809可分级地结构化,从而提供可用于一个以上cpu的大的高级高速缓存及在高级高速缓存与每一cpu之
间的较小、较快、较低级高速缓存。在一些实施例中,较低级高速缓存可以分割为提供用于指令获取和数据存取的独立的低级高速缓存。根据实施例,指令可以由指令获取单元804经由高速缓存809从存储器802获取。指令可在指令解码单元806中被编码,并且在一些实施例中与其他指令一起,被分派给一个或多个指令执行单元808。可采用若干执行单元808,例如算术执行单元、浮点执行单元和分支指令执行单元。指令由执行单元执行,根据需要从指令指定的寄存器或存储器访问操作数。如果要从存储器802访问(例如,加载或存储)操作数,则加载/存储单元805可以在正在执行的指令的控制下处理该访问。指令可在硬件电路中或在内部微代码(即,固件)中或通过两者的组合执行。
135.计算机系统可包括本地或主存储装置中的信息,以及寻址、保护和引用和改变记录。寻址的一些方面包括地址的格式、地址空间的概念、不同类型的地址和将一种类型的地址转换成另一种类型的地址的方式。主存储装置中的一些包括永久分配的存储位置。主存储装置为系统提供数据的可直接寻址的快速存取存储。数据和程序两者在它们可以被处理之前例如从输入设备加载到主存储装置中。
136.主存储装置可包括一个或多个更小、更快访问的缓冲存储器,有时称为高速缓存。高速缓存可以在物理上与cpu或i/o处理器相关联。不同存储介质的物理构造和使用的除了性能上的影响,一般可能是被执行的程序无法看到的。
137.可针对指令和针对数据操作数维持单独的高速缓存。高速缓存内的信息可维持在称为高速缓存块或高速缓存行的完整边界上的连续字节中。模型可提供extract cache attribute指令,其返回以字节计的高速缓存行的大小。模型还可提供prefetch data和prefetch data relative long指令,其实现存储装置到数据或指令高速缓存中的预取或数据从高速缓存的释放。
138.存储装置可被视为长的水平位串。对于大多数操作而言,对存储装置的访问可按从左到右的顺序进行。位串被细分为八个位的单位。这八位的单位被称为字节,其是所有信息格式的基本构建块。存储装置中的每一字节位置可由唯一非负整数标识,其为字节位置的地址,也称为字节地址。相邻字节位置可具有连续地址,从左边的0开始且以从左到右的顺序继续。地址是无符号二进制整数,例如可以是24、31或64位的。
139.在存储器与cpu之间一次传输一个字节或一组字节的信息。除非另外指定,否则在例如中,存储器中的字节群组由群组的最左边字节寻址。组中的字节数由要执行的操作暗示或明确指定。当在cpu操作中使用时,一组字节被称为字段(field)。在每一组字节内,例如,在中,位按从左到右的顺序来编号。在中,最左边的位有时被称为“高阶”位,最右边的位被称为“低阶”位。然而,位数不是存储地址。只有字节是可寻址的。为了对存储装置中的字节的单个位进行操作,可以访问整个字节。字节中的位可在例如z/architecture中从左到右编号为0到7。地址中的位对于24位地址来说可以编号为8

31或40

63,或对于31位地址来说可以编号为1

31或33

63;对于64位地址来说,它们被编号为0

63。在多个字节的任何其他定长格式内,组成该格式的位可以从0开始连续地编号。为了错误检测的目的,并且优选地为了校正,一个或多个校验位可以与每个字节或一组字节一起传输。这样的校验位由机器自动生成,并且不能由程序直接控制。存储容量以字节数表示。当存储操作数字段的长度由指令的操作代码
暗示时,所述字段被称为具有固定长度,其可为一字节、两字节、四字节、八字节或十六字节。对于一些指令可以暗示较大的字段。当存储操作数字段的长度未被暗示但被明确陈述时,该字段被称为具有可变长度。可变长度操作数的长度可以以一个字节的增量或一些指令的增量、以两个字节的倍数或其他倍数变化。当将信息放置在存储装置中时,仅替换包括在指定字段中的那些字节位置的内容,即使到存储装置的物理路径的宽度可能大于正被存储的字段的长度。
140.某些信息单元将在存储装置中的完整边界上。当信息的存储地址是以字节为单位的单位长度的倍数时,边界被称为信息单位的整数。完整边界上的2、4、8和16字节的字段都有特殊名称。半字是两字节边界上的两个连续字节的组,是指令的基本建构块。字是在四字节边界上的四个连续字节的组。双字是在八字节边界上的八个连续字节的组。四字是十六字节边界上的十六个连续字节的组。当存储地址指定半字、字、双字和四字时,地址的二进制表示分别含有一个、两个、三个或四个最右边的零位。指令是要在两字节积分边界上。大多数指令的存储操作数没有边界对准要求。
141.在实现用于指令和数据操作数的独立高速缓存的设备上,如果程序存储到随后从其获取指令的高速缓存行中,则会经历显著的延迟,而不管该存储是否更改随后获取的指令。
142.在一个实施例中,本发明可以由软件实现,该软件有时称为许可内部代码、固件、微代码、毫代码、微微代码等,其中任一者将符合本发明。参见图19,可以从诸如cd

rom驱动器、磁带驱动器或硬盘驱动器的长期存储介质设备811访问体现本发明的软件程序代码。软件程序代码可以体现在用于数据处理系统的各种已知介质中的任一种上,诸如磁盘、硬盘驱动器或cd

rom上。代码可以在这样的介质上分发,或者可以通过连接到其他计算机系统的网络810从计算机存储器802或一个计算机系统的存储装置分发到用户,以便由这样的其他系统的用户使用。
143.软件程序代码可以包括操作系统,其控制不同计算机组件和一个或多个应用程序的功能和交互。程序代码可以从存储介质设备811分页到相对高速的计算机存储器802,在此可用于由处理器801处理。可以使用用于在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件代码的众所周知的技术和方法。当创建并存储在有形介质(包括但不限于电子存储器模块(ram)、闪存、致密盘(cd)、dvd、磁带)上时,程序代码可以被称为“计算机程序产品”。计算机程序产品介质可以是可由优选地位于计算机系统中的处理电路读取的,以便由处理电路执行。
144.图20示出可在其中实施本发明的实施例的代表性工作站或服务器硬件系统。图20的系统820包括代表性基本计算机系统821,诸如个人计算机、工作站或服务器,包括可选的外围设备。基本计算机系统821包括一个或多个处理器826和用于根据已知技术连接并实现处理器826与系统821的其他组件之间的通信的总线。总线将处理器826连接到存储器825和长期存储器827,长期存储器827可包括硬盘驱动器(包括例如磁介质、cd、dvd和闪存存储器中的任一个)或磁带驱动器。系统821也可包括用户接口适配器,其经由总线将微处理器826连接到一个或多个接口设备,诸如键盘824、鼠标823、打印机/扫描仪830和/或其他接口设备,接口设备可以是任何用户接口设备,诸如触摸屏、数字化输入板等。总线还经由显示适配器将显示设备822(诸如lcd屏幕或监视器)连接到微处理器826。
145.系统821可以通过能够与网络829通信828的网络适配器与其他计算机或计算机网络通信。示例网络适配器是通信信道、令牌环、以太网或调制解调器。或者,系统821可以使用无线接口(例如蜂窝数字分组数据(cdpd)卡)进行通信。系统821可以与局域网(lan)或广域网(wan)中的这样的其他计算机相关联,或者系统821可以是与另一计算机等一起在客户端/服务器布置中的客户端。
146.图21示出了可以实施本发明的实施方式的数据处理网络840。数据处理网络840可包括多个单独的网络,诸如无线网络和有线网络,其中的每一个可包括多个单独的工作站841、842、843、844。另外,如本领域技术人员将意识到的,可以包括一个或多个lan,其中lan可以包括耦合到主机处理器的多个智能工作站。
147.仍然参考图21,网络还可以包括可以访问数据储存库并且还可以从工作站845直接访问的大型计算机或服务器,如网关计算机(例如,客户端服务器846)或应用服务器(例如,远程服务器848)。网关计算机846可以用作进入每个单独网络的进入点。当将一个联网协议连接到另一个时,可能需要网关。网关846可以优选地通过通信链路耦合到另一网络,例如互联网847。网关846还可以使用通信链路直接耦合到一个或多个工作站841、842、843、844。可以利用可从国际商业机器公司获得的ibm eserver
tm
system服务器来实现网关计算机。
148.同时参考图20和图21,可以体现本发明的软件编程代码可以由系统820的处理器826从长期存储介质827(如cd

rom驱动器或硬盘驱动器)访问。软件编程代码可以体现在用于数据处理系统的各种已知介质中的任一种上,诸如磁盘、硬盘驱动器或cd

rom上。代码可以在这样的介质上分发,或者可以通过连接到其他计算机系统的网络从一个计算机系统的计算机存储器802或存储装置分发到用户,以便由这样的其他系统的用户使用。
149.或者,编程代码可体现在存储器825中,且由处理器826使用处理器总线存取。这样的编程代码可以包括操作系统,其控制不同计算机组件和一个或多个应用程序832的功能和交互。程序代码可从存储介质827分页到高速存储器825,在此,程序代码可用于由处理器826处理。可以使用用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的众所周知的技术和方法。
150.处理器最容易获得的高速缓存,即,其可比处理器的其他高速缓存快且小,为最低高速缓存,也称为l1或一级高速缓存,主存储器为最高级缓存,如果有n级,主存储器亦称ln级的,例如n=3,则称为l3级的。最低级高速缓存可以被划分成指令高速缓存和数据高速缓存。指令高速缓存亦称i高速缓存,其保存待执行的机器可读指令。数据高速缓存亦称d高速缓存,其保存数据操作数。
151.参照图22,描绘了处理器826的示例性处理器实施例。可采用一级或多级高速缓存853来缓存存储器块,以便改进处理器性能。高速缓存853是保存可能被使用的存储器数据的高速缓存行的高速缓冲器。高速缓存行可以例如为64、128或256字节的存储器数据。可采用单独的高速缓存来高速缓存指令和高速缓存数据。高速缓存一致性(即,存储器和高速缓存中的行的副本的同步)可以由不同合适的算法(例如,“侦听”算法)提供。处理器系统的主内存存储器825可以被称为高速缓存。在具有4个级的高速缓存853的处理器系统中,主存储器825有时被称为5级(l5)高速缓存,因为它可以更快并且仅保存对计算机系统可用的非易失性存储器的一部分。主存储器825“缓存”由操作系统分页进出主存储器825的数据页。
152.程序计数器(指令计数器)861跟踪要执行的当前指令的地址。处理器中的程序计数器为64位,且可截断为31或24位以支持先前寻址限制。程序计数器可体现在计算机的程序状态字(psw)中,使得其在上下文切换期间持续。因此,具有程序计数器值的进行中的程序可能被例如操作系统中断,从而导致从程序环境到操作系统环境的上下文切换。程序的psw在程序不活动时保持程序计数器值,在操作系统正在执行时使用操作系统的psw中的程序计数器。程序计数器可递增等于当前指令的字节数目的量。精简指令集计算(risc)指令可以是固定长度的,而复杂指令集计算(cisc)指令可以是可变长度的。ibm的指令为2、4或6字节长的cisc指令。例如,可以通过上下文切换操作或者分支指令的分支采取(branch taken)操作来修改程序计数器861。在上下文切换操作中,将当前程序计数器值连同关于正执行的程序的其他状态信息(例如,条件代码)一起保存在程序状态字中,然后装入指向待执行的新程序模块的指令的新程序计数器值。可以执行分支采取操作,以便允许程序通过将分支指令的结果装入程序计数器861中来在程序内做出决策或循环。
153.可以采用指令获取单元855来代表处理器826获取指令。获取单元获取“下一顺序指令”、分支采取指令的目标指令、或者上下文切换之后的程序的第一条指令。现代指令获取单元可采用预取技术来基于可能使用预取指令的可能性推测性地预取指令。例如,获取单元可获取包含下一顺序指令和进一步的顺序指令的额外字节的16字节的指令。
154.所获取指令可接着由处理器826执行。根据实施例,可将所获取的指令从获取单元传递到分派单元856。分派单元对指令进行解码并将关于解码后的指令的信息转发到适当单元857、858、860。执行单元857可以接收关于来自指令获取单元855的解码的算术指令的信息,并可以根据指令的操作码对操作数执行算术运算。优选地可以从存储器825、架构化寄存器859或从正在执行的指令的立即字段向执行单元857提供操作数。要存储执行的结果时,可以将其存储在存储器825、寄存器859中或诸如控制寄存器、psw寄存器之类的其他机器硬件中。
155.处理器826可以包括一个或多个单元857、858、860,用于执行指令的功能。参见图23a,执行单元857可以通过接口逻辑871与架构化通用寄存器859、解码/分派单元856、加载/存储单元860以及其它865处理器单元进行通信。执行单元857可以采用若干寄存器电路867、868、869来保持算术逻辑单元(alu)866所操作的信息。alu执行诸如加、减、乘和除的算术运算以及诸如and(与)、or(或)、异或(xor)、旋转和移位的逻辑函数。优选地,alu可以支持依赖于设计的专门操作。其他电路可提供包括例如条件代码和恢复支持逻辑的其他架构化设施872。alu操作的结果可保存在输出寄存器电路870中,输出寄存器电路870被配置得将结果转发到各种其他处理功能。处理器单元的布置方式很多,本说明书仅旨在提供对一个实施例的代表性理解。
156.加法(add)指令例如可在具有算术和逻辑功能的执行单元857中执行,而浮点指令例如将在具有专门浮点能力的浮点执行单元中执行。优选地,执行单元通过对由指令标识的操作数执行操作码定义的函数来对操作数进行操作。例如,加法指令可以由执行单元857对在由指令的寄存器字段标识的两个寄存器859中找到的操作数执行。
157.执行单元857对两个操作数执行算术加法并且将结果存储在第三操作数中,其中,第三操作数可以是第三寄存器或者是两个源寄存器的其中之一。执行单元优选地利用算术
逻辑单元(alu)866,该算术逻辑单元能够执行诸如移位、旋转和xor之类的各种逻辑函数,以及包括加法、减法、乘法、除法中的任一种的各种代数函数。一些alu 866被设计用于标量运算,一些alu 866被设计用于浮点。取决于架构,数据可为大端序的(big endian)(其中最低有效字节位于最高字节地址)或小端序的(little endian)(其中最低有效字节位于最低字节地址)。ibm为大端序的。有符号字段可以是符号和大小、1的补码或2的补码,这取决于架构。2的补数可能是有利的,因为alu不需要设计减法功能,这是因为2的补数中的负值或正值只需要alu内的加法。数字可以用简写来描述,其中,12位的字段定义4,096字节块的地址,并描述为例如4k字节(千字节)块。
158.参见图23b,用于执行分支指令的分支指令信息可以被发送到分支单元858,分支单元858通常采用分支预测算法(诸如分支历史表882)来在其他条件操作完成之前预测分支的结果。在条件操作完成之前,当前分支指令的目标将被提取并推测性地执行。当条件操作完成时,基于条件操作的条件和推测的结果,推测执行的分支指令要么完成要么被丢弃。分支指令可以测试条件代码,并且,如果条件代码满足分支指令的分支要求,那么分支指令可分支到目标地址,可基于若干数字(包含例如在指令的寄存器字段或立即字段中找到的数字)来计算目标地址。分支单元858可以采用具有多个输入寄存器电路875、876、877和输出寄存器电路880的alu874。例如,分支单元858可以与通用寄存器859、解码/分派单元856或其他电路873通信。
159.一组指令的执行可出于多种原因而中断,所述原因包含(例如)由操作系统发起的上下文切换、引起上下文切换的程序异常或错误、引起上下文切换的i/o中断信号或多线程环境中的多个程序的多线程活动。优选地,上下文切换动作保存关于当前执行的程序的状态信息,然后加载关于被调用的另一程序的状态信息。状态信息可以保存在例如硬件寄存器中或存储器中。状态信息优选地包括指向要执行的下一指令的程序计数器值、条件代码、存储器转换信息和架构化寄存器内容。上下文切换活动可以由硬件电路、应用程序、操作系统程序或固件代码(例如)实行。微代码、微微代码或许可内部代码(lic),单独地或组合地。
160.处理器根据指令定义的方法来访问操作数。指令可以使用指令的一部分的值来提供立即操作数,可以提供明确指向通用寄存器或专用寄存器(诸如浮点寄存器)的一个或多个寄存器字段。指令可以利用由操作码字段标识的隐式寄存器作为操作数。指令可以利用操作数的存储器位置。操作数的存储器位置可以由寄存器、立即字段或者寄存器与立即字段的组合来提供,寄存器与立即字段的组合如长位移工具(long displacement facility)所例示,其中,其中,指令定义一个基址寄存器、一个索引寄存器和一个立即数字段,即位移字段,将它们一起相加来提供操作数的内存地址。除非另有指示,否则本文中的位置可以暗示为主存储器中的位置。
161.参照图23c,处理器使用加载/存储单元860来访问存储器。加载/存储单元860可以通过获得目标操作数在存储器853中的地址并将操作数加载到寄存器859或另一存储器853位置中来执行加载操作,或者可以通过获得存储器853中的目标操作数的地址并将从寄存器859或另一存储器853位置获得的数据存储在存储器853中的目标操作数位置中来执行存储操作。加载/存储单元860可以是推测性的,并且可以以相对于指令序列无序的顺序访问存储器,然而,加载/存储单元860将保持程序看起来是在按顺序执行指令。加载/存储单元860可以与通用寄存器859、解码/分派单元856、高速缓存/存储器接口853或其他元件883通
信,并且包括各种寄存器电路、alu 885和控制逻辑890,以计算存储地址且提供流水线排序以保持有序操作。一些操作可能是乱序的,但是加载/存储单元提供使乱序操作对程序而言表现为已按顺序执行的功能。
162.优选地,应用程序“看到”的地址通常被称为虚拟地址。虚拟地址有时亦称“逻辑地址”和“有效地址”。这些虚拟地址之所以是虚拟的,是因为它们通过多种动态地址转换(dat)技术中的一种技术被重定向到物理的存储器位置。动态地址转换技术包括但不限于,简单地用偏址值为虚拟地址加前缀,经由一个或多个转换表来转换虚拟地址,转换表优选地包括单独的段(segment)表、单独的页表或段表与页表的组合的至少一个,优选地,段表具有指向页表的表项。在中提供一种转换层次结构,其包含区域(region)第一表、区域第二表、区域第三表、段表以及可选的页表。地址转换的性能常常通过利用括将虚拟地址映射到相关联的物理存储器位置的条目的转换后备缓冲器(tlb)而得到改进。当dat使用转换表转换虚拟地址时,条目被创建。虚拟地址的后续使用然后可以利用快速tlb的条目而非慢速顺序转换表访问。tlb内容可以由包括最近最少使用(lru)的各种替换算法来管理。
163.多处理器系统的每个处理器都有责任保持共享资源(例如,i/o、高速缓存、tlb和存储器)的互锁以实现一致性(coherency)。所谓的“侦听”技术可以用于维持高速缓存一致性。在侦听环境中,为了便于共享,可以将每个高速缓存行标记为处于共享状态、独占状态、改变状态、无效状态等中的任何一个。
164.i/o单元854可为处理器提供用于附接到外围装置(包含例如磁带、光盘、打印机、显示器和网络)的装置。i/o单元通常由软件驱动程序提交给计算机程序。在诸如的system的主机中,通道适配器和开放系统适配器是在操作系统和外围设备之间提供通信的主机的i/o单元。
165.进一步,其他类型的计算机系统可受益于本发明的一个或多个方面。作为示例,计算机系统可包括仿真器,例如软件或其他仿真机制,其中仿真包括例如指令执行、架构化功能(诸如地址转换)和架构化寄存器的特定架构或者其子集例如在具有处理器和存储器的本机计算机系统上被仿真。在这样的环境中,仿真器的一个或多个仿真功能可以实现本发明的一个或多个方面,即使执行仿真器的计算机可以具有与正被仿真的能力不同的架构。例如,在仿真模式中,正在被仿真的特定指令或操作可以被解码,并且可以构建适当的仿真功能以实现单独的指令或操作。
166.在仿真环境中,主机计算机可以例如包括:用于存储指令和数据的存储器;指令获取单元,用于从存储器获取指令并且可选地为所获取的指令提供本地缓冲;指令解码单元,用于接收所获取的指令并且用于确定已经被获取的指令的类型;以及执行指令的指令执行单元。执行可包括将数据从存储器加载到寄存器中、将数据从寄存器存储回到存储器、和/或执行如由解码单元确定的某种类型的算术或逻辑操作。例如,每个单元都可以在软件中实现。由这些单元执行的操作可以被实现为仿真器软件内的一个或多个子例程。
167.更具体来说,在大型主机中,程序员(例如“c”程序员)例如通过编译器应用来使用架构化机器指令。存储在存储介质中的这些指令可以在服务器本机执行,或者在执行其他架构的机器中执行。它们可以在现有的和未来的大型机
服务器和在的其他机器(例如,power systems服务器和服务器)中进行仿真。它们可以在使用由amd
tm
等制造的硬件的各种各样的机器上运行linux的机器中执行。除了在下在该硬件上执行之外,可以使用linux以及使用由hercules、umx或fsi(fundamental software,inc)进行仿真的机器,这些机器通常以仿真模式执行。在仿真模式下,仿真软件由本机处理器执行,以对仿真处理器的架构进行仿真。
168.本机处理器可以执行包括固件或本机操作系统的仿真软件来进行对仿真处理器的仿真。仿真软件负责获取和执行仿真处理器架构的指令。仿真软件维护仿真程序计数器以跟踪指令边界。仿真软件可一次获取一个或多个仿真机器指令,并将该一个或多个仿真机器指令转换成相应的一组本机机器指令以供本机处理器执行。可以高速缓存这些转换了的指令,使得可以实现更快的转换。尽管如此,仿真软件将维护仿真处理器架构的架构规则,以便确保为仿真处理器编写的操作系统和应用程序正确地操作。此外,仿真软件将提供由仿真处理器架构标识的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、包括例如段表和页表的动态地址转换函数、中断机制、上下文切换机制、一天中的时间(tod)时钟以及到i/o子系统的架构化接口,使得设计用于在仿真处理器上运行的操作系统或应用程序可以在具有仿真软件的本机处理器上运行。
169.对正在仿真的特定指令进行解码,并调用子例程来执行单个指令的功能。例如,在“c”子例程或驱动程序中,或者在为特定硬件提供驱动程序的某个其它方法中,实现对仿真处理器的功能进行仿真的仿真软件功能。
170.在图14中,提供了模拟主机架构的主机计算机系统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

的功能。
171.可以理解,只要组合的实施例不是相互排斥的,就可以组合本发明的一个或多个上述实施例。诸如“第一”和“第二”的序数,在本文中用于指示分配有相同名称的不同元素,但不一定确立各个元素的任何顺序。
172.参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框
图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
173.本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或介质),计算机可读程序指令用于致使处理器执行本发明的各方面。
174.计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存),静态随机存取存储器(sram)、便携式致密盘只读存储器(cd

rom),数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构之类的机械编码设备,以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
175.本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
176.用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括诸如smalltalk、c++之类的面向对象的编程语言,以及诸如

c’编程语言或类似的编程语言的常规过程式编程语言。计算机可读程序指令可以完全地在用户计算机系统”的计算机上执行、部分地在用户计算机系统”的计算机上执行、作为独立的软件包执行、部分在用户计算机系统”的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户计算机系统的计算机,或者可连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的方面。
177.本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
178.这些计算机可读程序指令可以提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计
算机可读程序指令还可存储在可指导计算机、可编程数据处理装置,和/或其他设备以特定方式起作用的计算机可读存储介质中,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
179.计算机可读程序指令还可加载到计算机、其他可编程数据处理设备或其他设备上,使得在计算机、其他可编程数据处理设备或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程数据处理设备或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
180.附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
181.上述特征可以有以下各项可能的组合:
182.1.一种用于向客户机操作系统提供中断信号的方法,客户机操作系统是用计算机系统的分配给客户机操作系统使用的多个处理器中的一个或多个处理器执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括存储器,总线附接设备可操作地连接存储器,
183.所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器id,
184.分配给客户机操作系统使用的多个处理器中的每个处理器进一步被分配由客户机操作系统和所述一个或多个总线连接模块用于寻址相应处理器的中断目标id,
185.所述方法包括:
186.由总线附接设备接收来自总线连接模块之一的具有中断目标id的中断信号,中断目标id标识作为处理中断信号的目标处理器的分配给客户机操作系统使用的处理器之一,
187.由总线附接设备从存储在存储器中的中断表检索分配给所接收的中断目标id的中断表条目的第一副本,中断表条目的第一副本包括指示由中断目标id标识的目标处理器当前是否被阻止接收中断信号的中断阻止指示符,
188.由总线附接设备用中断阻止指示符来检查目标处理器是否被阻止接收中断信号,
189.如果目标处理器未被阻止,由总线附接设备将所接收的中断目标id转换为逻辑处理器id,并使用转换产生的逻辑处理器id直接寻址目标处理器,将中断信号转发给目标处理器进行处理,
190.否则,由总线附接设备阻止中断信号被转发到目标处理器进行处理。
191.2.第1项的方法,所述方法进一步包括由总线附接设备使用广播将被阻止的中断信号转发到所述多个处理器中的其余处理器进行处理。
192.3.前述各项任何之一的方法,所述方法进一步包括:由客户机操作系统的中断处
理程序检查是否有任何寻址到目标处理器的中断等待目标处理器处理,如果没有寻址到目标处理器的中断等待目标处理器处理,客户机操作系统更改分配给目标处理器的中断表条目中的中断阻止指示符,以指示目标处理器未被阻止。
193.4.前述各项任何之一的方法,中断阻止指示符以单个位实现。
194.5.前述各项任何之一的方法,中断信号以消息信号中断的形式被接收,消息信号中断包括目标处理器的中断目标id。
195.6.前述各项任何之一的方法,中断表条目的第一副本进一步包括所接收的中断目标id到逻辑处理器id中的第一逻辑处理器id的第一映射,总线附接设备使用中断表条目的第一副本将所接收的中断目标id转换为目标处理器的逻辑处理器id。
196.7.前述各项任何之一的方法,中断表条目的第一副本进一步包括运行指示符的第一副本,运行指示符指示由中断目标id标识的目标处理器是否被调度由客户机操作系统使用,所述方法包括:
197.由总线附接设备使用运行指示符的第一副本检查目标处理器是否被调度由客户机操作系统使用,
198.如果目标处理器被调度,继续转发中断信号,
199.否则,由总线附接设备使用广播将中断信号转发给所述多个处理器进行处理。
200.8.前述各项任何之一的方法,所述方法进一步包括,如果目标处理器未被阻止,则由总线附接设备更改分配给中断目标id的中断表条目中的中断阻止指示符,第一逻辑处理器id被阻止,所述更改在将中断信号转发给目标处理器进行处理之前进行。
201.9.第8项的方法,所述方法进一步包括
202.在更改中断阻止指示符后,由总线附接设备检索分配给所接收的中断目标id的中断表条目的第二副本,
203.由总线附接设备检查中断表条目的第二副本,以排除中断表第二副本相对于中断表条目的第一副本的预定义类型的更改,成功排除预定义类型的更改是将中断信号转发到目标处理器进行处理所需的。
204.10.第9项的方法,预定义类型的更改是所接收的中断目标id的第一映射相对于所接收的中断目标id到由中断表条目的第二副本包含的逻辑处理器id中的第二逻辑处理器id的第一映射的更改,其中,如果第二映射包括相对于第一映射的更改,由总线附接设备使用广播将中断信号转发到所述多个处理器进行处理。
205.11.第9项的方法,预定义类型的更改是运行指示符的第一副本相对于由中断表条目包含的第二副本的运行指示符的第二副本的更改,其中,如果运行指示符的第二副本包括相对于运行位的第一副本的更改,第二运行指示符指示目标处理器没有被调度由客户机操作系统使用,由总线附接设备使用广播将中断信号转发到所述多个处理器进行处理。
206.12.前述各项任何之一的方法,所述方法进一步包括:
207.由总线附接设备从存储在存储器中的设备表检索设备表条目的副本,设备表条目包括指示是否要直接寻址目标处理器的直接信令指示符,其中
208.如果直接信令指示符指示直接转发中断信号,则用目标处理器的逻辑处理器id直接寻址目标处理器来执行中断信号的转发,
209.否则,由总线附接设备使用广播将中断信号转发到所述多个处理器进行处理。
210.13.第12项的方法,设备表条目包括指示中断表的第一个存储器地址的中断表地址指示符,总线附接设备使用中断表的存储器地址来检索中断表条目的第一副本。
211.14.第12至第13项任何之一的方法,存储器进一步包括具有每个中断目标id的定向中断摘要指示符的定向中断摘要向量,分配给中断目标id的每个定向中断摘要指示符,指示是否存在寻址到相应中断目标id的中断信号待处理,
212.所述方法进一步包括由总线附接设备使用所指示的定向中断摘要向量的存储器地址来更新分配给所接收的中断信号寻址到的目标处理器id的定向中断摘要指示符,使得更新的定向中断摘要指示符指示存在寻址到相应中断目标id的中断信号待处理。
213.15.第12至第13项任何之一的方法,存储器进一步包括定向中断摘要向量,设备表条目进一步包括指示定向中断摘要向量的存储器地址的定向中断摘要向量地址指示符,定向中断摘要向量包括每个中断目标id的定向中断摘要指示符,分配给中断目标id的每个定向中断摘要指示符指示是否存在寻址到相应中断目标id的中断信号待处理,
214.所述方法进一步包括由总线附接设备使用所指示的定向中断摘要向量的存储器地址来更新分配给所接收的中断信号寻址到的目标处理器id的中断摘要指示符,使得更新的中断摘要指示符指示存在寻址到相应中断目标id的中断信号待处理。
215.16.第12至第13项任何之一的方法,存储器进一步包括一个或多个中断信号向量,设备表条目进一步包括指示所述一个或多个中断信号向量的中断信号向量的存储器地址的中断信号向量地址指示符,中断信号向量各自包括一个或多个信号指示符,分配给所述一个或多个总线连接模块中的总线连接模块指示符和中断目标id的每个中断信号指示是否已从相应总线连接模块接收寻址到相应中断目标id的中断信号,
216.所述方法进一步包括:
217.由总线附接设备使用所指示的中断信号向量的存储器地址来选择分配给发布所接收的中断信号的总线连接模块且分配给所接收的中断信号寻址到的中断目标id的中断信号指示符,
218.更新所选择的中断信号指示符,使得所选择的中断信号指示符存在由相应总线连接模块发布且寻址到相应中断目标id的中断信号待处理。
219.17.第16项的方法,中断信号向量各自包括分配给相应中断目标id的每个中断目标id的中断信号指示符,中断信号向量的每一个被分配给单个总线连接模块,相应中断信号向量的中断信号指示符进一步被分配给相应的单个总线连接模块。
220.18.第16项的方法,中断信号向量各自包括分配给各个总线连接模块的每个总线连接模块的中断信号指示符,中断信号向量的每一个被单个目标处理器id,相应中断信号向量的中断信号指示符进一步被分配给相应目标处理器id。
221.19.前述各项任何之一的方法,设备表条目进一步包括标识客户机操作系统被分配到的逻辑分区的逻辑分区id,由总线附接设备转发中断信号进一步包括随中断信号一起转发逻辑分区id。
222.20.前述各项任何之一的方法,所述方法进一步包括由总线附接设备检索标识所接收的中断信号被分配到的中断子类的中断子类id,由总线附接设备转发中断信号进一步包括随中断信号一起转发中断子类id。
223.21.一种用于向客户机操作系统提供中断信号的计算机系统,客户机操作系统是
用计算机系统的分配给客户机操作系统使用的多个处理器中的一个或多个处理器执行的,所述计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,所述计算机系统进一步包括存储器,总线附接设备可操作地连接存储器,
224.所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器id,
225.分配给客户机操作系统使用的多个处理器中的每个处理器进一步被分配由客户机操作系统和所述一个或多个总线连接模块用于寻址相应处理器的中断目标id,
226.计算机系统被配置以执行一种方法,该方法包括:
227.由总线附接设备接收来自总线连接模块之一的具有中断目标id的中断信号,中断目标id标识作为处理中断信号的目标处理器的分配给客户机操作系统使用的处理器之一,
228.由总线附接设备从存储在存储器中的中断表检索分配给所接收的中断目标id的中断表条目的第一副本,中断表条目的第一副本包括指示由中断目标id标识的目标处理器当前是否被阻止接收中断信号的中断阻止指示符,
229.由总线附接设备用中断阻止指示符来检查目标处理器是否被阻止接收中断信号,
230.如果目标处理器未被阻止,由总线附接设备将所接收的中断目标id转换为逻辑处理器id,并使用转换产生的逻辑处理器id直接寻址目标处理器,将中断信号转发给目标处理器进行处理,
231.否则,由总线附接设备阻止中断信号被转发到目标处理器进行处理。
232.22.一种用于向客户机操作系统提供中断信号的计算机程序产品,客户机操作系统是用计算机系统的分配给客户机操作系统使用的多个处理器中的一个或多个处理器执行的,计算机系统进一步包括经由总线和总线附接设备与所述多个处理器可操作地连接的一个或多个总线连接模块,计算机系统进一步包括存储器,总线附接设备可操作地连接存储器,
233.所述多个处理器中的每个处理器被分配由总线附接设备用于寻址相应处理器的逻辑处理器id,
234.分配给客户机操作系统使用的多个处理器中的每个处理器进一步被分配由客户机操作系统和所述一个或多个总线连接模块用于寻址相应处理器的中断目标id,
235.计算机程序产品包括由处理电路可读的计算机可读非瞬态介质,并存储由处理电路执行的指令,以执行一种方法,所述方法包括:
236.由总线附接设备接收来自总线连接模块之一的具有中断目标id的中断信号,中断目标id标识作为处理中断信号的目标处理器的分配给客户机操作系统使用的处理器之一,
237.由总线附接设备从存储在存储器中的中断表检索分配给所接收的中断目标id的中断表条目的第一副本,中断表条目的第一副本包括指示由中断目标id标识的目标处理器当前是否被阻止接收中断信号的中断阻止指示符,
238.由总线附接设备用中断阻止指示符来检查目标处理器是否被阻止接收中断信号,
239.如果目标处理器未被阻止,由总线附接设备将所接收的中断目标id转换为逻辑处理器id,并使用转换产生的逻辑处理器id直接寻址目标处理器,将中断信号转发给目标处理器进行处理,
240.否则,由总线附接设备阻止中断信号被转发到目标处理器进行处理。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1