用于仿真数据处理系统内的中断体系结构的方法和系统的制作方法

文档序号:6649382阅读:211来源:国知局
专利名称:用于仿真数据处理系统内的中断体系结构的方法和系统的制作方法
技术领域
本发明一般地涉及数据处理系统,并且更具体地涉及用于数据处理系统内的中断处理的方法,系统和程序产品。更具体地,本发明涉及用于仿真数据处理系统内的中断体系结构的方法,系统和程序产品。
背景技术
在计算机系统中,中断通常被用于向处理器报告需要特殊处理的事件的发生。例如,中断可以被用于从接受处理器请求服务,报告错误状态或对数据的接收,或仅是在设备之间传递信息。
在传统的多处理器(MP)计算机系统中,使用硬件和/或软件机制,以各种方法处理中断。传统的MP计算机系统可以使用全局中断控制器,全局中断控制器基于(例如)中断的优先级和正由各个处理器执行的处理(如果有的话)的优先级选择处理器,以便为外部或处理器间的中断服务。为了便于对与中断有关的通信的高效的处理,全局中断控制器和处理器使用专用的硬件寄存器和/或预先定义的存储器地址偏移量传递中断请求,中断结束(EOI)消息,处理器优先级和其它与中断有关的信息。
与实现数据处理系统中的中断方案有关的一个困难是设计者可能希望包括在所述数据处理系统内的各种硬件和软件组件可能不服从单一的中断标准,诸如由Santa Clara,California的Intel公司开发的非专有的OpenPIC(开放的可编程中断控制器)体系结构或专有的I/O APIC(输入/输出高级可编程中断控制器)体系结构。各种中断体系结构在中断通信,位次序,中断优先级指定等之间的不一致可以造成中断硬件以及操作系统软件的不兼容。
本发明意识到,尽管有这种明显的不兼容,以实现异类的中断体系结构的硬件和软件组件开发数据处理系统也是希望的。

发明内容
鉴于上面所述,本发明提供了用于仿真数据处理系统中的中断体系结构的方法,系统和程序产品。
根据至少一个实施例,为了仿真数据处理系统中的中断体系结构,中断仿真代码从操作系统接收请求访问第一中断体系结构中的第一资源的第一调用。响应由中断仿真代码对第一调用的接收,中断仿真代码将第一资源映射到所述数据处理系统的中断硬件中的第二资源。映射操作包括确定不同的第二中断体系结构内的第二资源的标识符。然后中断仿真代码发起对由所述中断硬件实现的第二资源的访问。
在下面详细的书面说明中,本发明的所有目的,特征和优点将成为是明显的。


在所附的权利要求中提出了被认为是本发明的特点的新的特征。然而当结合附图进行阅读时,通过参考下面对示例实施例的详细描述,将更好地理解本发明以及优选的使用模式,其中图1是一种数据处理系统的高层方框图,其中可以有利地采用本发明;图2是一个层次图,说明根据本发明使用中断仿真软件诸如固件和/或操作系统管理程序(管理程序)仿真数据处理系统内的中断体系结构;图3是现有技术的PowerPC中断体系结构的逻辑视图;图4A和4B分别示出了根据传统的OpenPIC中断体系结构的中断源单元内的向量优先级和目的地寄存器;图4C给出了根据本发明的实施例用于仿真中断体系结构的影子屏蔽位,优先级值和服务器值;图5A是在包括硬件屏蔽位的本发明的实施例中用于在启动或重置时初始化仿真的中断体系结构的示例处理的高层逻辑流程图;图5B是在不包括硬件屏蔽位的本发明的实施例中用于在启动或重置时初始化仿真的中断体系结构的示例处理的高层逻辑流程图;图6A是在包括硬件屏蔽位的本发明的实施例中用于设置仿真的外部中断向量入口(XIVE)的示例处理的高层逻辑流程图;图6B是在不包括硬件屏蔽位的本发明的实施例中用于设置仿真的外部中断向量入口(XIVE)的示例处理的高层逻辑流程图;图6C是在包括硬件屏蔽位的本发明的实施例中用于读仿真的外部中断向量入口(XIVE)的示例处理的高层逻辑流程图;图6D是在不包括硬件屏蔽位的本发明的实施例中用于读仿真的外部中断向量入口(XIVE)的示例处理的高层逻辑流程图;图7A是在包括硬件屏蔽位的本发明的实施例中用于禁止外部中断源的示例处理的高层逻辑流程图;图7B是在不包括硬件屏蔽位的本发明的实施例中用于禁止外部中断源的示例处理的高层逻辑流程图;图7C是在包括硬件屏蔽位的本发明的实施例中用于允许外部中断源的示例处理的高层逻辑流程图;图7D是在不包括硬件屏蔽位的本发明的实施例中用于允许外部中断源的示例处理的高层逻辑流程图;图8是根据本发明用于写仿真的当前处理器优先级寄存器(CPPR)的示例处理的高层逻辑流程图;图9是根据本发明用于发送信号通知处理器间中断(IPI)的示例处理的高层逻辑流程图;图10A是根据本发明用于读仿真的外部中断请求寄存器(XIRR)的示例处理的高层逻辑流程图;和图10B是根据本发明用于发送中断结束(EOI)的示例处理的高层逻辑流程图。
具体实施例方式
参考附图并且尤其是参考图1,示出了示例的数据处理系统100的高层方框图,本发明可以被有利地实施在该数据处理系统内。如图所示,数据处理系统100是包括用于处理数据和指令的处理单元102a-102n的多处理器数据处理系统。根据本发明的优选实施例,处理单元102实现精简指令集计算机(RISC)硬件体系结构,诸如由New York,Armonk的IBM公司开发的POWER体系结构。在本发明的其它可供选择的实施例中,可以使用复杂指令集计算机(CISC)硬件体系结构。
处理单元102被连接到系统互连104以便进行通信,系统互连104可以包括用于在被附加在其上的设备之间传输地址,数据和控制信息的一个或多个总线和/或开关。在给出的实施例中,被附加的设备包括提供与系统存储器108的接口的存储器控制器106和一个或多个主桥110a,110b,每个主桥提供到相应的中间总线112a,112b的接口。例如,在一个实施例中,每个中间总线112是外围组件互连(PCI)总线,并且每个主桥110是PCI主桥。如图1中进一步示出的,中间总线112a,112b又分别提供了用于附加另外的设备116a-h和116i-116p的插槽,所述的设备可以包括网络接口卡,I/O适配器,非易失存储设备适配器,另外的总线桥等。在数据处理系统100的操作过程中,各种这些设备116可以异步地(通过未示出的中断线)向相关联的主桥110要求中断,以便请求某种类型的服务。这些外部中断请求(被这样称呼是因为它们是在处理单元102外部产生的)最初被主桥110a,110b中的下行中断源单元(ISU)114a,114b管理。
被连接到系统互连104的设备还包括中断提交单元(IPU)118,其接收处理单元102产生的中断(即,处理器间中断(IPI))和接收自下行ISU114的外部中断,并且将其提交给处理单元102a-102n以便进行处理。中断提交单元118(可以执行中断提交软件的处理单元102和/或专用的中断硬件实现中断提交单元118)可以通过系统互连104,或可替换地通过专用的中断线122a-122n中的一个将中断传递到一个或多个处理单元102。如图所示,IPU118包括上行ISU120,上行ISU120作为IPU118和下行ISU114的接口,并且在由主桥110实现的中断体系结构和由IPU118实现的中断体系结构之间提供任何必要的转换。
在数据处理系统100的操作过程中,处理单元102执行来自系统存储器108以及电可擦写可编程只读存储器(EEPROM)116a的各种指令,以便执行所希望的任务。这些指令包括固件136,应用134,一个或多个操作系统132的一个或多个实例,和创建,管理和调度操作系统132的实例以便执行的管理程序(操作系统管理程序)130。如下面进一步讨论的,固件136和管理程序130包括用于独立于由IPU114,主桥110和设备116实现的实际的下层硬件中断体系结构(多个体系结构),仿真被选择的中断体系结构的指令。
现在参考图2,以下层中断硬件200给出了表示数据处理系统100的示例软件环境的层次图。在图1的数据处理系统100中,中断硬件200至少包括中断提交单元118,主桥110和设备116。
如图2所示,在最高逻辑层应用134在一个或多个下层操作系统实例132的控制下,并且使用由一个或多个下层操作系统实例132提供的资源执行。与操作系统通过定义完善的中断寄存器接口直接与中断硬件通信的传统的实现相反,操作系统132通过中断仿真代码与中断硬件200通信,在优选实施例中所述的中断仿真代码包括固件136和管理程序130。即,操作系统132的与中断有关的调用被固件136或管理程序130内的运行时抽象服务(RTAS)202接收,操作系统132假定存在仿真的中断体系结构。RTAS202和管理程序130(它们至少了解紧接着的下层中断硬件200的中断体系结构)将所述与中断有关的调用转换为中断硬件200的适当的形式。
例如,响应对调用210a的接收,RTAS202将仿真的中断体系结构的操作系统调用210a转换为紧接着的下层硬件中断体系结构的不同的调用210b,并且将调用210b传递到中断硬件200。可替换地或另外,RTAS202可以将调用210a转换为中间调用210c,中间调用210c进一步被管理程序130转换为紧接着的下层硬件中断体系结构的调用210d。管理程序130可以类似地将直接从操作系统132接收的仿真的中断体系结构中的调用212a转换为所述紧接着的下层硬件中断体系结构中的不同的调用212b,并且将调用212b传递到下层中断硬件200。
在一个优选实施例中,取决于中断调用的预期目标,可以或是由RTAS202或是由管理程序130处理操作系统中断调用。例如,属于外部中断源的中断调用被RTAS 202接收和转换,并且指向中断提交单元118的中断调用被管理程序130接收和转换。还应当理解,对这些调用的响应(如果有的话)也需要适当的转换。
虽然没有被要求以便实现本发明,固件136或OS(多个OS)132可以可选择地还包括平台抽象层(PAL)204。PAL 204进一步从产生操作系统调用诸如调用210a和处理单元(多个处理单元)102或被实际用于服务于这些调用的硬件资源之间的独立性的软件中“抽象”硬件资源。
根据本发明,由操作系统132实现的中断体系结构独立于由IPU118实现的下层中断体系结构,由IPU118实现的下层中断体系结构又独立于由主桥110实现的下层中断体系结构。因此,为了正确地处理数据处理系统100内的异步的中断,可能需要两层或多层仿真或转换(1)主桥110和IPU118的中断体系结构之间的转换,和(2)IPU118和操作系统(多个操作系统)132的中断体系结构(多个体系结构)之间的转换。
为了促使更好地理解本发明,下面参考特定的实施例描述本发明,其中在实现OpenPIC中断体系结构的IPU118和实现IntelI/O APIC中断体系结构的主桥上仿真PowerPC中断体系结构(与AIX和Linux操作系统兼容的一种兼容RISC平台体系结构(RPA)的中断体系结构)。在被与本申请共同受让的美国专利No.5,701,495中详细描述了PowerPC中断体系结构,并且通过引用将其完整地结合在此。在可从Santa Clara,CA的Intel公司得到的Intel82093AA I/O高级可编程中断控制器(I/O APIC)数据表中描述了I/O APIC中断体系结构。
作为对PowerPC中断体系结构的一个介绍,现在参考图3,图3使用三个层示出了PowerPC中断体系结构的逻辑实现中断源层300,中断路由层302和中断提交层304。中断源层300包括各个中断源314,它们可以要求中断(即,发送信号,指出中断源314处的中断状态的出现)以便请求服务。中断源层300标识中断源,并且给其分配优先级和服务器号。中断路由层302将所有中断状态路由到中断提交层304内的中断管理区域的适当的实例。中断提交层304沟通中断源和这样的软件,所述软件接受所述中断状态,指出对中断的接受,通知中断提交层304它已经处理的该中断,并且重置中断状态。
如所说明的,每个中断源314为每个支持的中断源线包括一个外部中断向量入口(XIVE)316。外部中断源314通过相关的XIVE 316发送信号通知相应的中断源的中断请求的存在。XIVE 316是4字节的寄存器,高位的两个字节(位0-15)被保留,紧接着低位字节的字节(位16-23)指明PowerPC中断服务器号,并且低位字节(位24-31)指明中断优先级。在服务器号字节中,低的值被用于指定个别的处理单元,并且高的值被用于指定全局服务器(即,处理单元组)。在中断优先级字节中,最低的中断优先级(0XFF)起禁止该中断源的作用,并且0X00被为专用中断源保留。除了这些专用的优先级值之外,AIX仅使用值0X01到0X04,并且Linux仅使用值0X05。
中断提交层304包括与处理器或服务器(即,用于中断处理的处理器的逻辑组)相关联的寄存器(根据本发明,仿真的寄存器),所述操作系统(多个操作系统)与所述处理器或服务器接合以便创建和处理各个中断。在PowerPC中断体系结构中,中断提交层304的定义根据系统内的处理器或服务器的数目而改变,并且包括下面的寄存器(1)排队的中断请求寄存器(QIRR)308-至少每个处理器一个,并且每个非特定处理器服务器队列一个,包括两个寄存器(a)最优先的请求寄存器(MFRR)-一个8位的寄存器,保持着为特定处理器而排队的最优先的处理器间的优先级;和(b)中断源规格寄存器(ISSR),被用于配置MFRR的源规格。
(2)外部中断请求寄存器(XIRR)310-被在每个处理器上实现,以便给用于中断的系统软件提供单一的源标识符,并且包括两个寄存器(a)当前处理器优先级寄存器(CPPR)-一个8位的寄存器,以256个优先级值中的一个指出当前处理器的优先级。最低优先级是0XFF,并且最高优先级是0X00。中断提交层仅向具有比CPPR的当前设置更优先的中断状态的相关处理器发送信号;和(b)外部中断源寄存器(XISR)-一个24位的寄存器,包含被发送信号的中断源的系统范围内的唯一的标识符。低位的4位指出16个中断等级中的一个,或总线单元控制器(BUC)318内的源(SRC)。高位的20个位表示总线单元控制器的总线单元ID(BUID)(通过以多个顺序的BUID报告它自己,单个物理的BUC可以支持多于16个等级)。值0表示当前没有挂起的外部中断,并且值2表示MFRR包含比CPPR更优先的等级。
(3)LINK寄存器312-一种仅见于II型中断提交控制器内的寄存器,并且被用于形成每个处理单元(per-processing-unit)的中断提交控制器的环形链表,所述的中断提交控制器包括服务于一服务器队列的组。该环形链表替代I型的中断提交控制器内的中断路由层的相应功能。
中断提交层304中的这些寄存器中的每一个在逻辑上在中断路由层302内具有各自相关的输入和/或输出端口320-334,以便允许进行到或来自中断源层300的通信。
如下面表I中所示,在传统的PowerPC中断体系结构中,通过用于各个处理单元的存储器映射中断管理区域(IMA)表达中断提交层304。处理单元的IMA的起始地址被称为它的基地址(BA),并且每个处理单元的基地址都不同。各个处理单元的BA被在配置时设置,并且具有下面表I中提出的结构。
表I

虽然具有与PowerPC中断体系结构的某些类似处,OpenPIC中断体系结构为中断提交层采用不同的IMA。具体地,OpenPIC中断体系结构采用表II中提出的数据结构。
表II


如通过表I和II的比较可见,在PowerPC和OpenPIC中断体系结构的寄存器之间存在某些功能的对应关系。例如,4个OpenPIC IPI发送命令端口在功能上相应于单个PowerPC MFRR,OpenPIC CTPR相应于PowerPC CPPR,OpenPIC IAR相应于PowerPC XISR,并且OpenPICEOI寄存器相应于向PowerPC XIRR写。
然而,还有使得不同的中断体系结构之间映射变得复杂的若干难点。例如,OpenPIC中断体系结构定义每个处理器4个IPI寄存器,它们中的每一个可以被设置为传递不同优先级的IPI。在另一方面,PowerPC中断体系结构仅实现每个处理器一个MFRR。因为两个感兴趣的操作系统,AIX和Linux这两者仅传递一种优先级的IPI,仅有一个IPI寄存器被使用。然而,为了遵从OpenPIC中断体系结构,为每个处理器在IMA中出现全部的4个IPI寄存器,但是它们的内容被逻辑或(OR),并且软件被约束为仅设置一个寄存器(例如,在BA+0X040)。此外,重要的是要注意,在OpenPIC中断体系结构中,IPI不需要明确的EOI调用,因为对中断的确认被认为暗示着EOI调用。然而在PowerPC中断体系结构内,包括IPI在内的所有中断必须接收EOI调用;因此,在OpenPIC中断体系结构上仿真PowerPC中断体系结构时,对IPI的EOI调用(由0X02的XISR值标识)被忽略。
必须被管理以便仿真PowerPC中断体系结构的OpenPIC和PowerPC中断体系结构之间的另一个不同是在OpenPIC中断体系结构内缺少用于外部中断的真正的查询功能。即,如在上面表I内可注意到的,对PowerPC中断体系结构内的BA+0的读允许不对中断进行确认的XIRR的非破坏性的读(通过BA+4的破坏性的读确认中断)。OpenPIC中断体系结构没有定义对中断寄存器的查询。
鉴于上述PowerPC和OpenPIC中断体系结构之间相应的和不同的特征,本发明引入了若干由管理程序130实现的中断提交层例程,以便在OpenPIC中断提交层实现上仿真PowerPC中断体系结构。在表III中总结了并且在下面详细描述了这些中断提交层例程。
表III


如上所见,在服从OpenPIC的IPU 118上仿真PowerPC中断体系结构还需要进行中断源层调用转换,在本发明的一个优选实施例中所述转换由RTAS 202执行。IPU 118的上行ISU 120实现了每个外部中断源两个由OpenPIC定义的寄存器向量优先级寄存器(VecPri)和目的地寄存器(Dest)。一般地,这些每个中断源的寄存器对相应于下行ISU 114内的IOAPIC中断源寄存器对。由上行ISU 120处理OpenPIC和IOAPIC中断源寄存器对之间的不同格式的必要的转换。
如图4A所示,OpenPIC VecPri寄存器400包括标识外部中断源的向量字段402,保留字段404,408和412,表示该中断源的优先级的优先级字段406,表示中断信号是正沿触发(‘0’)还是有效低电平触发(‘1’)的感知字段410,表示用于该源的向量,优先级和目的地信息当前是否正被中断控制器使用,并且从而不应改变的有效位(ACT),和MASK位416,当MASK位被设置时,禁止来自该源的任何其它中断。
在优选实施例中,相应于VecPri寄存器400,中断仿真代码(例如,管理程序130和固件136)在存储器中保持相应于VecPri寄存器400的图4C的影子VecPri“寄存器”430。如图所示,影子VecPri寄存器430包括相应于前面所述的字段406和416的优先级字段436和屏蔽位446。此外,影子VecPri寄存器430还包括服务器字段432,其被用于确定如何设置在下面以图4B说明的VecPri寄存器的相关的目的地寄存器。
如图4B所示,OpenPIC目的地(Dest)寄存器是32位的向量,它使用每个目的地一个位指明了该中断的目的地(多个目的地)。如果选择了单个目的地,则来自相关中断源的中断将被指引到该目的地。如果选择了多个目的地,则来自该中断源的中断被使用特定于实现的分布算法分布在所选择的目的地处理器之间。
为了在OpenPIC VecPri和Dest寄存器上仿真PowerPC中断体系结构的XIVE,RTAS 202支持若干不同的例程以便将对XIVE的访问转换为VecPri和Dest访问。在下面的表IV中总结了这些例程表IV

如下面详细的说明,取决于中断硬件是否实现了如图4A中所示的用于每个外部中断源的硬件屏蔽位416,本发明支持上述例程的不同的实施例。
现在参考图5A,给出了引导处理的一部分的高层逻辑流程图,通过该流程,在包括硬件屏蔽位的数据处理系统100的第一实施例内的仿真的中断环境内,固件136初始化中断处理。如图所示,处理在方框500开始(或从早先的处理继续),并且然后进入方框502,方框502示出固件136通过将IPU 118内的每个OpenPIC VecPri寄存器400的优先级字段406写为最低优先值禁止所有的外部中断源。
在方框502中示出的禁止外部中断源中,重要的是要注意,对于IPI和外部中断两者,PowerPC和OpenPIC中断体系结构采用不同的优先级值大小和含义。在下面的表V中总结了用于IPI和外部中断两者的PowerPC和OpenPIC优先级值之间的映射。
表V

在方框502之后,处理进入方框506,其所给出固件136重置每个VecPri寄存器400内的屏蔽位416,以便允许外部中断源中断。此外,在方框508,固件136初始化IPU 118内的每个处理单元102的OpenPICCTPR为最高优先值(0XF)。此后,在方框510,固件136将控制传递给操作系统132的实例以便继续引导处理。
在引导处理中的该点,中断被解除屏蔽(被允许),但是操作系统实例132被保护不受中断的影响直到它至少将一个处理器的优先级从最高优先级降低,并且将至少一个中断源的优先级从最低优先级升高为止。以这种方式,操作系统实例132可以推迟中断直到它准备好并且能够正确地处理该中断为止。
现在参考图5B,其给出了引导处理的一部分的高层逻辑流程图,通过该流程,在不包括硬件屏蔽位的数据处理系统100的第二实施例内的仿真的中断环境内,固件136初始化中断处理。如图所示,处理在方框520开始(或从早先的处理继续),并且然后进入方框522,方框522示出固件136通过将IPU 118内的每个OpenPIC VecPri寄存器400的优先级字段406写为最低优先值禁止所有的外部中断源。
在方框522之后,处理进入方框524,方框524示出固件136还将每个中断源的影子OpenPIC VecPri寄存器430中的优先级字段436设置为最低优先级。接着,处理进行到方框526,方框526示出固件136将每个影子OpenPIC VecPri寄存器430中的MASK位446设置为允许外部中断源中断。此外,在方框528,固件136初始化IPU118内的每个处理单元102的OpenPIC CTPR,以及相应的仿真的CPPR为最优先值(0XF)。此后,在方框530,固件136将控制传递给操作系统132的实例以便继续引导处理。
现在参考图6A,其给出了根据实现了硬件MASK位416的本发明的第一实施例,用于设置仿真的外部中断向量入口(XIVE)的示例处理的高层逻辑流程图。示出的处理可以被执行,例如,以便响应在操作系统实例132上的设备驱动注册,能够由外部中断源进行中断。
如图所示,响应固件136从操作系统实例132接收set_XIVE调用,处理从方框600开始,set_XIVE调用在由操作系统实例132采用的仿真的中断体系结构内指明中断源标识符,服务于来自该源的中断的所希望的服务器以及中断优先级。如上所述,在由操作系统实例132设想(assumed)的PowerPC中断体系结构内,在数据处理系统100内中断源被唯一地以BUID/SRC对标识。如方框602所示,响应对中断源标识符的接收,固件136将PowerPC中断源标识符映射为相应的OpenPIC和IOAPIC中断源标识符,以便标识用于该中断源的VecPri和Dest寄存器400,420,和相应的影子寄存器430。
接着,在方框603,固件136在影子服务器字段432中保存用于该中断源的指定的服务器。此外,如方框604所示,固件136确定用于该中断源的所述指定的服务器是否是包括多个处理单元102的全局服务器。如方框606所示,如果是的,固件136在IPU 118内为该中断源设置OpenPICDest寄存器420,以便指出被指定的处理单元组。在另一方面,如方框610所示,如果被指定的服务器不是全局服务器,固件136为指出的中断源设置OpenPIC Dest寄存器420,以便标识被指定的处理单元102。
在方框606或610之后,处理进入方框614,方框614示出固件136将中断源内的VecPri寄存器400的优先级字段406更新为相应于set_XIVE调用中指明的PowerPC的值的OpenPIC优先级值。此后,处理在方框616结束。
现在参考图6B,其给出了根据本发明的没有实现硬件MASK位416的第二实施例,用于设置仿真的外部中断向量入口(XIVE)的示例处理的高层逻辑流程图。如图所示,响应固件136从操作系统实例132接收set_XIVE调用,处理从方框620开始,set_XIVE调用在由操作系统实例132采用的仿真的中断体系结构内指明中断源标识符,服务于来自该源的中断的所希望的服务器以及中断优先级。如上所述,在由操作系统实例132设想的PowerPC中断体系结构内,在数据处理系统100内中断源被唯一地以BUID/SRC对标识。如方框622所示,响应对中断源标识符的接收,固件136将PowerPC中断源标识符映射为相应的OpenPIC和IOAPIC中断源标识符,以便标识用于该中断源的VecPri和Dest寄存器400,420和相应的影子寄存器430。
接着,在方框623,固件136分别在在影子服务器字段432和影子优先级字段436中保存用于该中断源的指定的服务器和中断优先级。此外,如方框624所示,固件136确定用于该中断源的所述指定的服务器是否是包括多个处理单元102的全局服务器。如方框626所示,如果是的,固件136在IPU 118内为该中断源设置OpenPIC Dest寄存器420,以便指出被指定的处理单元组。在另一方面,如方框630所示,如果被指定的服务器不是全局服务器,固件136为指出的中断源设置OpenPIC Dest寄存器420,以便标识被指定的处理单元102。
在方框626或630之后,处理进入方框632,方框632示出固件136确定用于该中断源的影子MASK位446是否被设置以便允许(取消屏蔽)中断。如果不是,处理简单地在方框636终止,这是因为该中断源的中断被屏蔽了。然而,如果固件136在方框632确定影子MASK位446被设置为允许中断,固件136将该中断源的VecPri寄存器400的优先级字段406更新为相应于set_XIVE调用中指明的PowerPC值的OpenPIC优先值。此后,处理在方框636结束。
现在参考图6C,其示出了在实现了硬件MASK位406的本发明的第一实施例内用于读仿真的外部中断源向量入口(XIVE)的示例处理的高层逻辑流程图。响应固件136从操作系统实例132接收get_XIVE调用,处理从方框640开始,get_XIVE调用请求特定中断源的XIVE316的值。如上所述,在PowerPC中断体系结构内该中断源被以BUID/SRC对标识。
响应对get_XIVE调用的接收,如方框642所示,固件136将PowerPC中断源标识符映射为相应的OpenPIC和IOAPIC中断源标识符,以便标识用于该中断源的VecPri和Dest寄存器400,420,和相应的影子寄存器430。接着,在方框644,固件136将被与从影子服务器字段432获得的相关的PowerPC服务器号连接在一起的用于该中断源的VecPri寄存器400的优先级字段406的值(在正确地映射为PowerPC优先级值之后)返回给操作系统实例132。此后,处理在方框626终止。
现在参考图6D,其示出了在没有实现硬件MASK位406的本发明的第二实施例内用于读仿真的外部中断源向量入口(XIVE)的示例处理的高层逻辑流程图。如图所示,响应固件136从操作系统实例132接收get_XIVE调用,处理从方框650开始,get_XIVE调用请求特定中断源的XIVE 316的值。如上所述,在PowerPC中断体系结构内该中断源被以BUID/SRC对标识。
如方框652所示,响应对get_XIVE调用的接收,固件136将PowerPC中断源标识符映射为相应的OpenPIC和IOAPIC中断源标识符,以便标识用于该中断源的VecPri和Dest寄存器400,420,和相应的影子寄存器430。接着,在方框654,固件136将被与从影子服务器字段432获得的相关的PowerPC服务器号连接在一起的用于该中断源的影子优先级字段436的值(在正确地映射为PowerPC优先级值之后)返回给操作系统实例132。此后,处理在方框656终止。
现在参考图7A,其示出了根据本发明的第一实施例,用于禁止中断源的示例处理的高层逻辑流程图,在本发明的第一实施例中假设上行ISU120实现了物理MASK416位以便允许和禁止中断源的中断。如图所示,响应固件从操作系统实例132接收int_off调用,处理从方框700开始,int_off调用包括标识将被禁止中断的中断源的PowerPC BUID/SRC对。处理进入方框702,其示出了固件136将BUID/SRC对映射为OpenPIC和IOAPIC中断源标识符。接着,如方框704所示,固件136将用于被标识的中断源的VecPri寄存器400的MASK位416设置为禁止(屏蔽)中断。此后,处理在方框706结束。
现在参考图7B,其示出了根据本发明的第二实施例,用于禁止中断源的示例处理的高层逻辑流程图,在本发明的第二实施例中假设上行ISU120没有实现了物理MASK位以便允许和禁止中断源的中断。如图所示,响应固件从操作系统实例132接收int_off调用,处理从方框710开始,int_off调用包括标识将被禁止中断的中断源的PowerPC BUID/SRC对。然后,处理进入方框712,其示出了固件136将BUID/SRC对映射为OpenPIC和IOAPIC中断源标识符。接着,如方框714和716所示,固件136将用于被标识的中断源的影子VecPri寄存器430的影子MASK位446设置为禁止(屏蔽)中断,并且将VecPri寄存器400的优先级字段406的值设置为最低优先级。此后,处理在方框718结束。
应当注意,在图7B示出的处理中,两个分离的机构被用于禁止中断源进行中断-影子MASK位416和优先级字段406的值。这两个机制都被使用,从而中断不会不注意地被共享同一中断线的其它中断源的设备驱动器将优先级字段406的值设置为不是最低优先级的其它优先级而被允许。
现在参考图7C,其示出了根据本发明的第一实施例用于允许外部中断源进行中断的示例处理的高层逻辑流程图,在本发明的第一实施例中,上行ISU 120实现了物理的MASK位416以便允许和禁止由中断源进行中断。
如图所示,响应由固件136从操作系统实例132接收int_on调用,图7C的处理从方框720开始,其中int_on调用包括标识着将被禁止中断的中断源的PowerPC BUID/SRC对。然后,处理进入方框722,其示出固件136将BUID/SRC对映射为相应的OpenPIC和IOAPIC中断源标识符。接着如方框724所示,固件136将用于被标识的中断源的VecPri寄存器400的MASK位416重置为允许(解除屏蔽)中断。此后,处理在方框728终止。
现在参考图7D,其示出了根据本发明的第二实施例,用于允许外部中断源进行中断的示例处理的高层逻辑流程图,在本发明的第二实施例中,上行ISU 120没有实现物理的MASK位416以便允许和禁止由中断源进行中断。
如图所示,响应由固件136从操作系统实例132接收int_on调用,图7D的处理从方框730开始,其中int_on调用包括标识着将被禁止中断的中断源的PowerPC BUID/SRC对。然后,处理进入方框732,其示出固件136将BUID/SRC对映射为相应的OpenPIC和IOAPIC中断源标识符。接着如方框734和736所示,固件136将用于被标识的中断源的影子MASK位446重置为允许(解除屏蔽)中断,并且从影子优先级字段436恢复VecPri优先级字段406的值。此后,处理在方框738终止。
现在参考图8,其示出了根据本发明用于写仿真的当前处理器优先级寄存器(CPPR)的示例处理的高层逻辑流程图。如上所述,PowerPC CPPR指明了有关的处理器的当前优先级。
如图所示,响应管理程序120从操作系统实例132接收H_CPPR调用,图8的处理从方框800开始,其中H_CPPR调用包括用于指明的处理单元102的所希望的优先级。然后处理进入方框802,其示出固件136将PowerPC优先级值映射为相应的OpenPIC优先级。接着如方框804和806所示,管理程序130将该PowerPC优先级值写到指明的处理单元102的影子CPPR,并且将相应的OpenPIC优先级值写到被指明的处理单元102的CTPR。此后,处理在方框808终止。应当理解,虽然示出的方法在影子CPPR内存储PowerPC优先级值,可替换地影子CPPR可以存储OpenPIC格式的优先级值。
现在参考与9,其示出了根据本发明用于发送信号通知处理器间中断(IPI)的示例处理的高层逻辑流程图。响应管理程序130从操作系统实例132接收H_IPI调用,图9的处理从方框900开始,H_IPI调用指明了在仿真的PowerPC体系结构中进行中断的所希望的服务器(处理单元),以及被请求的处理器间中断的优先级。响应对H_IPI调用的接收,管理程序130将被指出的服务器从PowerPC中断体系结构映射到处理单元102。
接着,管理程序130在方框904确定指出的处理单元102的OpenPICIPI发送端口0寄存器当前是否被设置为由H_IPI请求指出的优先级。如上所述,虽然OpenPIC中断体系结构规定每个处理器4个IPI发送命令端口,优选地管理程序130逻辑地对这些寄存器的值进行或运算,以便如同PowerPC中断体系结构中那样实现单个IPI发送端口(即,MFRR)。如方框912所示,如果在方框904做出IPI发送端口0被设置为所需要的优先级的确定,管理程序130通过在做出请求的处理单元102的目的地寄存器内设置用于目标处理单元102的适当的位要求(assert)被请求的IPI。
然而,如果当前没有在OpenPIC IPI发送端口0寄存器内设置正确的优先级,管理程序130在方框906确定OpenPIC IPI发送端口0寄存器当前是否正被使用。在优选实施例中,为各个处理单元102在存储器内实现相应的影子“在使用中”标志,并且通过参考用于指出的处理单元102的“在使用中”标志做出该确定。如果用于指出的处理单元102的OpenPICIPI发送端口0寄存器当前正被使用,在方框908处理在等待一个被选择的时间段之后返回方框906。一旦影子“在使用中”标志指出OpenPIC IPI发送端口0寄存器不再被使用,在在方框912要求IPI之前,在方框910,管理程序130在做出请求的处理单元102的OpenPIC IPI发送端口0寄存器内设置所希望的OpenPIC优先级。然后,在方框914管理程序130为指出的处理单元102设置影子“在使用中”标志。在方框914之后,处理在方框916终止。
现在参考图10A,其示出了根据本发明,用于读仿真的外部中断请求寄存器(XIRR)的示例处理的高层逻辑流程图。响应管理程序130从操作系统实例132接收H_XIRR调用,处理从方框1000开始,H_XIRR调用请求向处理单元102提出中断的中断源的身份。如方框1002所示,响应对H_XIRR调用的接收,管理程序130从OpenPIC IMA读OpenPIC IAR的值,并且将该IAR值映射为形成做出请求的中断源的仿真的XISR值的PowerPC BUID/SRC对,所述的IAR值是用于该中断源的VecPri向量402的值。如方框1004所示,为了形成仿真的XIRR310的值,管理程序130将影子CPPR值预先计划(prepend)为所述BUID/SRC对。
此外,如方框1006和1008所示,管理程序130将影子CPPR的值设置为中断源的PowerPC的优先级,并且将影子XISR设置为0以便确认该中断,并且指出当前没有中断被挂起。然后管理程序130在方框1010将在方框1004形成的被连接的CPPR/XISC值作为被请求的XIRR值返回给操作系统实例132。此后,处理在方框1012终止。
现在参考图10B,其示出了根据本发明用于发送中断结束(EOI)的示例处理的高层逻辑流程图。响应管理程序130从操作系统实例132接收H_EOI调用,图10B的处理从方框1020开始。因为PowerPC中断体系结构规定每个外部中断源和IPI接收一个特定的,相应的EOI,该EOI包括由进行处理的处理单元102的新的CPPR值和做出请求的中断源的BUID/SRC组成的XIRR值。此后,处理进入方框1022,其示出从H_EOI调用中接收到的XIRR值中提取组成的CPPR和XISR值。如方框1024所示,管理程序130在用于做出调用的处理单元102的影子CPPR中保存CPPR值,并且在方框1026确定XISR值是否是0X02,即,该EOI是否属于IPI。如果是的,如方框1028所示,管理程序130重置OpenPIC IPI发送端口0内的“在使用中”标记,但是忽略该EOI调用,这是因为OpenPIC不需要IPI的EOI。此后,处理在方框1040终止。
在另一方面,如果管理程序130在方框1026确定该EOI不属于IPI,处理进入方框1030。方框1030示出管理程序130将在方框1022提取的XISR值映射到上行ISU 120内的OpenPIC VecPri和Dest寄存器对以及下行ISU114内的相应的IOAPIC寄存器对。然后管理程序130在方框1032将‘0’值写到OpenPIC EOI寄存器OpenPIC IMA。管理程序130还向下行ISU114中的相应的IOAPIC寄存器发出EOI。此后,处理在方框1040终止。
如上所述,本发明提供了用于在数据处理系统内仿真中断体系结构的方法,系统和程序产品。根据本发明,由一个或多个操作系统实例实现的中断体系结构独立于由中断提交单元实现的下层中断体系结构,由中断提交单元实现的下层中断体系结构又独立于由下行中断源单元实现的下层中断体系结构。通过以这种方式对中断体系结构分层,由中断体系结构不兼容带来的数据处理系统设计中的限制被消除了。
虽然参考优选实施例进行说明特别地示出了本发明,本领域的技术人员应当理解,可以对其进行形式上和细节上的各种改变而不脱离本发明的精神和范围。例如,虽然以操作本发明的功能的计算机执行软件描述了本发明的方面,应当理解,可替换地本发明可以被实现为用于数据处理系统的程序产品。定义本发明的功能的程序可以被通过各种信号承载介质传递到数据处理系统,所述的各种信号承载介质包括但不限于不可写存储介质(例如,CD-ROM),可写存储介质(例如,软盘或硬盘驱动器),和通信介质,诸如数字和模拟网络。因此应当理解,这种信号承载介质,当载有或编码有操作本发明的功能的计算机可读指令时,提供了本发明的可替代的实施例。
权利要求
1.一种数据处理系统内的数据处理方法,所述方法包括中断仿真代码,其从操作系统接收请求访问第一中断体系结构内的第一资源的第一调用;响应所述中断仿真代码对第一调用的接收所述中断仿真代码将所述第一资源映射到所述数据处理系统的中断硬件内的第二资源,所述映射包括确定所述第二资源在不同的第二中断体系结构内的标识符;和所述中断仿真代码发起对由所述中断硬件实现的所述第二资源的访问。
2.如权利要求1的方法,其中所述中断仿真代码包括第一和第二中断仿真代码;所述第一资源属于所述数据处理系统内的处理器的中断管理区域;所述映射包括所述第一中断仿真代码将所述第一资源映射到第二资源;和所述方法还包括响应所述中断仿真代码对操作系统以与所述数据处理系统内的外部中断源有关的第三资源为目标的第二调用的接收,所述第二中断仿真代码将所述第三资源映射到所述第二中断体系结构内的第四资源。
3.如权利要求1的方法,其中所述发起访问包括将所述第二资源的标识符从所述第二中断体系结构转换到不同的第三中断体系结构。
4.如权利要求1的方法,其中所述映射包括映射所述第一资源的存储位置。
5.如权利要求1的方法,其中所述映射包括将所述第一调用内指出的优先级值从所述第一中断体系结构映射到所述第二中断体系结构。
6.如权利要求1的方法,其中所述第二资源包括优先级字段,它指出外部中断源在所述第二中断体系结构内的优先级;所述方法还包括提供相应于所述优先级字段的影子优先级字段;和在访问所述优先级字段之前,将所述优先级字段的值拷贝到所述影子优先级字段。
7.一种程序产品,包括计算机可使用的介质;和所述计算机可使用介质内的中断仿真代码,其中所述中断仿真代码响应从操作系统接收请求访问第一中断体系结构内的第一资源的第一调用(1)通过确定第二资源在不同的第二中断体系结构内的标识符,将所述第一资源映射到数据处理系统的中断硬件内的所述第二资源;和(2)发起对由所述中断硬件实现的所述第二资源的访问。
8.如权利要求7的程序产品,其中所述中断仿真代码包括第一和第二中断仿真代码;所述第一资源属于所述数据处理系统内的处理器的中断管理区域;所述第一中断仿真代码将所述第一资源映射到第二资源;和其中所述中断仿真代码响应对操作系统以与所述数据处理系统内的外部中断源有关的第三资源为目标的第二调用的接收,使用所述第二中断仿真代码将所述第三资源映射到所述第二中断体系结构内的第四资源。
9.如权利要求7的程序产品,其中所述中断仿真代码通过将所述第二资源的标识符从所述第二中断体系结构转换到不同的第三中断体系结构,发起对所述第二资源的访问。
10.如权利要求7的程序产品,其中所述中断仿真代码映射所述第一资源的存储位置。
11.如权利要求7的程序产品,其中所述中断仿真代码将所述第一调用内指出的优先级值从所述第一中断体系结构映射到所述第二中断体系结构。
12.如权利要求7的程序产品,其中所述第二资源包括优先级字段,它指出外部中断源在所述第二中断体系结构内的优先级;所述中断仿真代码提供了相应于所述优先级字段的影子优先级字段,并且在访问所述优先级字段之前,将所述优先级字段的值拷贝到所述影子优先级字段。
13.一种数据处理系统,包括一个或多个处理单元;被连接到所述一个或多个处理单元的中断硬件;被连接到所述一个或多个处理单元的存储器,所述存储器包括操作系统;和中断仿真代码,其响应从操作系统接收请求访问第一中断体系结构内的第一资源的第一调用(1)通过确定第二资源在不同的第二中断体系结构内的标识符,将所述第一资源映射到数据处理系统的中断硬件内的所述第二资源;和(2)发起对由所述中断硬件实现的所述第二资源的访问。
14.如权利要求13的数据处理系统,其中所述中断仿真代码包括第一和第二中断仿真代码;所述第一资源属于所述一个或多个处理单元内的一个处理单元的中断管理区域;所述第一中断仿真代码将所述第一资源映射到第二资源;和其中所述中断仿真代码响应对操作系统以与所述数据处理系统内的外部中断源有关的第三资源为目标的第二调用的接收,使用所述第二中断仿真代码将所述第三资源映射到所述第二中断体系结构内的第四资源。
15.如权利要求13的数据处理系统,其中所述中断仿真代码通过将所述第二资源的标识符从所述第二中断体系结构转换到不同的第三中断体系结构,发起对所述第二资源的访问。
16.如权利要求13的数据处理系统,其中所述中断仿真代码映射所述第一资源的存储位置。
17.如权利要求13的数据处理系统,其中所述中断仿真代码将所述第一调用内指出的优先级值从所述第一中断体系结构映射到所述第二中断体系结构。
18.如权利要求13的数据处理系统,其中所述第二资源包括优先级字段,它指出在所述中断硬件内的外部中断源在所述第二中断体系结构内的优先级;所述存储器包括相应于所述优先级字段的影子优先级字段;和所述中断仿真代码在访问所述优先级字段之前,将所述优先级字段的值拷贝到所述影子优先级字段。
全文摘要
为了在数据处理系统中仿真中断体系结构,中断仿真代码从操作系统接收请求访问第一中断体系结构内的第一资源的第一调用。响应所述中断仿真代码对第一调用的接收,所述中断仿真代码将所述第一资源映射到所述数据处理系统的中断硬件内的第二资源。所述映射操作包括确定在不同的第二中断体系结构内所述第二资源的标识符。然后所述中断仿真代码发起对由所述中断硬件实现的所述第二资源的访问。
文档编号G06F13/26GK1760845SQ20051010839
公开日2006年4月19日 申请日期2005年10月13日 优先权日2004年10月14日
发明者M·E·哈克, M·S·威廉姆斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1