首页> 中国专利> 一种多重处理系统的可定标的系统中断结构

一种多重处理系统的可定标的系统中断结构

摘要

一中断子系统提供将来自许多中断源的中断进行排队,并将中断排队到一个多处理器系统中的最佳处理器上。外部中断机制分成中断路由选择层及中断显示层。前者将中断条件导向中断显示层内一个中断管理区的适当场所。中断显示层将中断源连通到服务/处理中断的系统软件上。中断路由选择层对软件隐蔽一种特定的硬件实现的细节。中断显示层与系统和/或应用软件接口,并提供与硬件无关的功能性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-11-18

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2003-02-05

    授权

    授权

  • 1996-04-10

    公开

    公开

  • 1996-03-20

    实质审查请求的生效

    实质审查请求的生效

说明书

本发明涉及数据处理系统,更具体地涉及一种数据处理系统中的一个中断源与一个中断处理器之间的一种发送中断信息信号的方法。

在数据处理系统中,用中断来向处理器发送在一个给定的中断源上存在中断条件的信号。这一中断源可以是诸如在一条系统总线上要求某种服务一个适配器卡。这一要求的服务可以是启动一次数据传送,或者是读取一个刚改变过的状态寄存器。

当将处理器调节为接受中断或称作允许中断时,则在接受中断时,处理器将启动中断处理。这一中断处理通常包含中断该中断源,根据该中断的类型执行某些功能及复位/关闭该中断。

在传统的系统中还设置了中断优先级。如果在一个给定的时刻有一个以上的中断信号被激励,则使用中断优先级来通知处理器先服务哪一个中断。

已设计出诸如复位一个中断信号等卸载某些必要的中断信号交换功能的中断控制器。这些中断控制器的代表为英特尔(Intel)8259控制器,它在1981年的英特尔数据产品目录中描述(该产品目录可从英特尔公司文献部,3065,Bowers Avenue,Santa Clara,CA购得)从而引用在此作为背景材料。这些中断控制器能监视多个中断源,而只用一条单一的中断线来中断处理器。

当前发送中断信号的方法主要是为具有少数中断源或优先级的单处理器系统设计的。大多数系统通过硬布线在平板上的一条或多条中断线来发送中断。在多处理器系统中,当存在着一个以上的处理器能够服务于某一中断时,这种发送中断信号技术会增加总线的复杂性。来自各中断源的一个中断信号必须布线到能够服务于这一中断的每一个处理器或中断控制器。

试图满足多重处理数据处理系统的需要,由系统中的各处理器要求有其专用的中断控制器。这种方法不仅价格高昂,并且不允许集中管理由多个源生成并送至多个处理器去服务的中断。

因此,便需要有一种可以扩展的,允许许多中断源与优先级的方法。此外,需要一种用于管理多个处理器与多个中断控制器的多重处理系统的发送中断信息信号的方法。

当前的中断系统是不同程度地依赖软件的硬件专用的。改变中断的数目或类型必须改变特定的操作系统软件。需要一个提供对底层硬件中断结构具有软件独立性的中断子系统。

本发明为数据处理系统内的一个中断子系统。该中断子系统可从低级的单处理器系统定标到高级的多处理器(MP)系统。这一中断子系统提供来自许多中断源的中断排队,并提供将中断排队到一个MP系统中的最佳处理器。这是通过将外部中断机制分成两层来达到的,一个中断路由选择层及一个中断显示层(presentation layer)。中断路由选择层将中断条件发送到中断显示层内一个适当的中断管理区中。中断路由选择层可标定成支持低级/低成本及高级/高性能系统的。中断显示层将中断源连通到服务/处理该中断的系统软件上。这一软件接受该中断条件并负责复位该中断条件。这一软件还指示中断的接受及通知中断显示层已经处理了该中断。

通过在中断子系统中提供两层,便可编写独立于中断源或类型及底层系统硬件结构的应用软件或系统软件。中断路由选择层对软件隐蔽一种特定的硬件工具的细节。中断显示层连接系统和/或应用软件,并提供独立于硬件的功能性。

本发明还定义用于中断请求与中断复位的一种中断分组协议。采用了地址总线分组,并且比硬布线方法有更多的优点。当一个中断源(此后称作一个I/O控制器或IOC)具有一个中断请求时,IOC便请求地址总线。当授予它该总线时,IOC便通过地址总线发送一个中断请求分组。中断控制器处理该信息并发送一个中断信号到处理器。在一个多重处理系统中,中断控制器可将中断信息发送到一个适当的处理器。当该处理器完成了中断处理时,它便提醒中断控制器向IOC发送一个复位分组。然后,中断控制器请求地址总线。当授予它地址总线时,中断控制器便通过地址总线发送一个中断复位分组。

由于对于每一个地址通常有多个数据传送周期,所以数据总线比地址总线使用得更多。通过地址总线来发送中断信息,便有可能使用利用不足的资源、地址总线,而不使用较忙的数据总线。使用地址总线的另一个优点在于,在优选实施例中,系统总线上的所有IC(集成电路)芯片都使用整个地址总线。然而,这些IC芯片并不都使用整个数据总线。从而在地址总线上通过的中断分组不用外加的管脚与接线便能利用已在系统中的地址线。这一点是与使用若干条不同的中断线的现有方法不同的。

由于存储器映射的I/O是用于执行输入与输出操作的最广泛方法,便用它来作为发送中断分组的方法。作为执行I/O的最常用方法,系统总线上的所有芯片已经有了进行存储器映射的I/O的辑。

在优选实施例中,中断分组的定义允许来自512个IOC中每一个的16个中断源。一共有256个中断优先级。每一个系统可有256个中断服务器。这便允许中断分组定义用于广泛的机器范围中。在中断请求分组与中断复位分组中都有保留位,系统可以用它们来传输中断分组中更多的必要信息。从而这一分组定义可在未来的系统中提供可扩展性。

较早的硬布线中断系统只提供很少有关中断的的直接信息。总线分组方法同时同地提供全部中断源、IOID、优先级及服务器信息。除了系统灵活性,这使得中断调试大为简易。可以将信息放入中断复位分组的保留的地址位0-2中来通知IOC正在发送的是何种中断复位。

由于中断是通过地址总线传送的,它们是与其它中断及其它系统操作排队的。这在调试中是有帮助的,因为这使得中断在系统级上更直观并与系统更少异步。

由于中断信息是定义在中断分组中的各字段中而不是象硬布线在平板上,这种中断系统是可编程的。中断优先级、服务器号码、中断源及I/O控制器ID(标识符)都是可用这种分组结构编程的。从而,这一中断结构比硬布线的系统更为灵活。

因此,本发明的一个目的为提供一种改进的数据处理系统。

本发明的另一个目的为在一个数据处理系统内提供一种改进的中断子系统。

本发明的又一个目的为在一个多处理器数据处理系统内提供一种改进的中断系统。

本发明的再一个目的为提供一种改进的发送中断信号的方法。

下面参照附图进一步描述本发明的上述与其它目的,其中:

图1为一个数据处理系统的方框图;

图2为通过一个中断控制器与一个数据处理器接口的设备的方框图;

图3示出与软件队列接口的一个逻辑服务器的部件;

图4示出一个中断控制器的内部结构;

图5示出硬件与软件队列的结构;

图6为包含I/O控制器、中断路由选择层及中断显示层的总体中断子系统的流程图;

图7为一个中断请求的总线时序图;

图8为一个中断复位的总线时序图;

图1展示一个数据处理系统20的逻辑视图。系统互连器22允许在系统的各种部件之间传送数据:处理器24、存储器26以及经由一条直接连接在系统互连器22上的一个输入/输出控制器(IOC)30连接的I/O28。也可有来自处理器的连接其它I/O与IOC的可选用的系统总线29。系统互连接22可为多种不同构造之一(例如,一条系统总线、一个开关等),并且是依赖于系统的。在本优选实施例中,该系统互连器为一条系统总线。

要求本系统的外部中断结构能够覆盖宽广的系统需求范围:从简单的单用户个人计算机到由多处理器的分层结构构成的多用户系统。现有技术无法有效地寻址这样一个范围。中断系统的编程接口及逻辑视图要求是兼容的。图2中示出了一种典型的中断结构,其中能够生成一个中断的一台设备32(包括图1的I/O28及IOC30)是通过一个中断控制器34与一个服务处理器24接口的。本发明确定了一种可以在广阔的系统范围上定标的但仍保持兼容的编程模型的改进的中断控制结构。

参见图3,从系统软件方面来观察的系统逻辑视图为事件的n(多达256)个队列。在各软件队列42与43中,有一个事件的优先表。这些事件中包括硬件生成的中断(诸如来自IOC的外部中断)及软件生成的中断(诸如处理器间中断)。各队列42、43与一个逻辑服务器相关联。队列0至m与逻辑服务器#0相关联,而队列m+1至n则与逻辑服务器#1相关联。可以类似地配置具有其它处理器的其它逻辑服务器。在一个单一处理器系统中,只有一个服务器,因此只有一个队列。在一个多处理器系统中,将有一个与各处理器关联的队列,并且至少有一个与看作一个服务器的处理器组关联的全程队列。例如,图3示出了与一个处理器40关联的各队列42,及与处理器0至m的组合关联的一个全程队列44。处理器40的组合看作在38处的逻辑服务器#0。类似地,各队列43与一个处理器41关联,而一个全程队列45则与处理器m+1至n的组合相关联。处理器41的组合看作是在39处的逻辑服务器#1。对于多处理器系统,必须有一种机制来确定哪些处理器可供各全程队列使用。这一机制是由可使用处理器寄存器(APR)(下面要参照图4进一步描述的)提供的。

接着看图3,与各队列42、43关联的是0x00至0xff范围内的一个服务器号。该复合体内的各处理器40、41被分配给从0x00向上的服务器号,而服务于多个处理器的队列(即全程队列)则被分配给从0xff下降的服务器号。队列长度(即队列内的优先表的长度)则是与实现相关的,但深度至少为1。

外部中断发源于IOC、复合体中的其它处理器以及来自系统中的其它源(例如,一个紧急断电警告中断)。虽然不同的源要求不同的物理信号发送机制,但对于服务器的逻辑外观(对于全程队列的逻辑服务器或对于其它队列的服务器)则是以最优先的事件为首的一个队列,这一点下面将进一步描述。最高优先级(即最优先的)中断定义为0x00而最低优先级中断(即最不优先的)则定义为0xff。因此,中断级0x55比中断级0xff优先但与中断级0x00相比不优先。

本发明将外部中断机构(即中断控制器)分成两层:(i)中断显示层及(ii)中断路由选择层。这两层示出在图4与6中。参见图4,中断显示层50中包括与处理器或服务器关联的寄存器。操作系统软件与这些处理器或服务器接口来建立和处理单个的中断。中断显示层50具有只由一个系统内的处理器或服务器的数目改变的定义。中断路由选择层52将来自中断源的中断发送至目的地,并且受到更大的特定工具的性质的影响。系统软件必须在接通电源时建立中断路由选择层52的配置,但并不需要在逐个中断的基础上与这一中断路由选择层接口。

下面简要地描述用于管理中断的寄存器,而它们将在以后更详细地描述。*可使用的处理器寄存器(APR)

-中断路由选择层用来了解哪些处理器可用于作为发送中断的

 一个特定服务器的可选用的寄存器。APR是旨在用于全程队

 列的,并示出在图4的39处。*全程排队中断请求寄存器(G_QIRR)

-这一寄存器可作为一个单字节或4字节(32位字)写入,并示

 出在图4的73处。

-在对称MP(SMP)系统中用作一个非处理器专用的服务器队

 列。

-由两个寄存器构成:

*全程最优先请求寄存器(G_MFRR),它是一个MFRR。

*中断源说明寄存器(ISSR)

-在SMP系统中用来配置一个G_MFRR中断的源说

 明(见XIOR)。*排队中断请求寄存器(QIRR)

-这一寄存器可作为一个单一字节或4字节(32位字)写入,并

 示出在图4的61处。

-每一处理器至少一个,加上每一非处理器专用的服务器队列

 的一个。

-由两个寄存器构成:

*最优先请求寄存器(MFRR)

-保存队列上最优先请求的优先级

-这一寄存器可由软件读回以确认已出现了写入。

*中断源说明寄存器(ISSR)*外部中断请求寄存器(XIRR)

-每一处理器一个,示出在图4的60处,并向系统软件提供一

 个单一的源标识符供中断之用。

-由两个寄存器构成

*当前处理器优先级寄存器(CPRR)

-这一寄存器由软件更新来包含当前处理器优先级

-当软件向XIRR发布一条某一地址上的加载指

 令时,这一寄存器被更新为通过被执行的加载指

 令所导出的XIRR数据所表示的中断的优先级。

*外部中断源寄存器(XISR)

-指示等待中的一个中断的源(如果无等待的中断,则为

 值0)。*外部中断矢量寄存器(XIVR)

-各IOC中每一中断级一个,示出在图4的70处。

-用于确定各中断级的优先级

-可用于将特定的中断引导到特定的服务器。中断路由选择层

中断路由选择层的目标为将最优先的中断请求导向在最低优先级上操作的处理器,即最佳处理器。其最佳能力为,中断路由选择避免将一个中断送至比在进入的请求更高的优先级上运行的一个处理器。取决于系统要求,本发明允许以不同的方式实现中断路由选择层。因此,不同的实现可以不同的精度来接近上述目标,并且这将在中断请求的路由选择中呈现不同的延时。由中断引发的预期系统负荷越大,则为了达到正确的系统性能而中断路由选择硬件所接近的目标越近。为了全面地达到这一目标,中断路由选择硬件必须全面地了解系统的状态(即每一个周期中准确的处理器优先级以及所有的中断请求队列的内容)。实践中这是不可能的,因为:(i)可能有比硬件排队在中断路由选择层内更多的潜在的中断请求;或者(ii)处理器优先级可能要用数个周期才能从处理器传播到中断路由选择层,而使得正确的每一周期的处理优先级在中断路由选择层中存在一定程度的不确定性。队列深度问题是通过要求IOC重新提交被中断路由选择硬件拒绝的中断请求报文来控制的。这允许中断路由选择硬件实现一种队列深度(至少为1)来满足一定程度的预期情况,而用中断拒绝机制来处理一切溢出情况。系统软件是不知道拒绝机制的,后者只呈现为对受影响的中断请求的不同等待时间。由于中断路由选择硬件在首次将一个请求发送到一个处理器时可能并不知道真实的处理器优先级,因此当中断路由选择硬件已经初次将一个请求分配给一个特定的处理器之后,它必须对软件会改变其操作优先级而作好准备。不考虑改变着的处理器优先级会导致优先级倒置及严重的系统性能降低(如果具有比当前处理器优先级低的一个中断排入队列,或者该排入队列的中断阻碍了一个具有比处理器更高优先级的中断排入队到并中断该处理器,便出现优先级倒置);排入队列的中断在处理器的优先级降低到排队的中断优先级以下之前将得不到服务。再者,可用中断拒绝机制来克服队列资源问题。通过将中断拒绝回IOC,IOC便作为对中断路由选择层排队机制的扩展来工作。

除非下述事件之一出现,一个中断源通常只经由接口71(图4)将一个特定的中断向中断路由选择层发送一次:(i)中断路由选择层拒绝了该中断;或者(ii)软件将一个等于中断源的XISR值写入XIRR而复位该中断并且该中断源的中断仍在等待中(即尚未得到服务)。这一点将在下面参照图6进一步描述。

中断路由选择层52的各种不同实现是可能的,其中包括(i)对于低级机器的由一种外部中断优先级构成的每一处理器的一个单一元素的队列,或者(ii)对于高级机器的多个外部中断源队列寄存器。硬件保证中断路由选择层内的实际硬件排队实现对于与中断显示层接口的系统软件是透明的。本技术中有许多种已知的排队技术可资利用,诸如美国专利4,807,111中所描述的以优先级次序保存的实体的一个硬件寄存器文件,引用在此作为参考。本发明的关键性特征为用一个中断显示层来使用这种队列。这一中断显示层提供了对中断路由选择层内的底层排队机制的软件透明性。

在系统组成时,组成软件必须确定中断路由选择层的配置,其中包括支持多个逻辑服务器,哪些处理器支持哪一个逻辑服务器,以及将哪些中断导向哪一个服务器。这是通过读取某些工具专用的寄存器或者通过将配置信息存储在ROM中而完成的。用APR来指定哪些处理器在哪一个逻辑服务器队列上工作。特定的组成决策取决于硬件,并且随不同的硬件工具变化。唯一的要求是无论怎样决策,都必须将上列组成信息放置在APR中供中断路由选择层以后访问。中断显示层

处理器间中断机制在系统存储器中具有与图3的各队列42、43相关联的请求块的一个物理队列(图5的57)。这些软件管理的队列中的每一个是由软件按优先级次序维护的。队列的实现不在中断机制中定义,而是留给操作系统软件去定义。各队列的实现可以是不同的,这取决于预期的使用频率。与各队列相关联的是一个最优先的请求寄存器(MFRR)(在系统存储器空间中)。当一个程序需要一个特定处理器执行的服务时,它便将一个请求块排入该处理器的队列中,它判定新的请求是否在更高的优先级上,如果是,便将新请求的优先级的值写入MFRR中。当一个程序将一个服务请求退出队列时,便将队列中下一个请求的优先级值加载进MFRR中。如果退队后队列变成空的,便将最低优先级值(0xff)加载进MFRR中。MFRR中不同于0xff的一个值指示中断路由选择层中的中断硬件必须在72处将该优先级的一个中断信号发送到服务于该队列的处理器。

各处理器具有一个与之相关联的存储器映射的中断管理区,其中包含外部中断请求寄存器(XIRR)60。XIRR为一个4字节设施并由两个字段组成:当前处理器优先级寄存器(CPRR)及外部中断源寄存器(XISR)。

CPPR中包含处理器的操作优先级。CPPR可由系统软件写入以防止较低优先级请求的打扰。只在其CPPR字段比中断请求的优先级低时,中断路由选择层才将一个中断请求导向处理器。系统软件存储作为一个字节寄存器的CPPR以通知中断路由选择层中的中断硬件该处理器的当前操作优先级。

为了判定中断源,系统软件通过向XIRR发布一条加载指令来读取XISR。XISR中的值指定中断源(如果为一个IOC,则表示其IOID和级;如果为一个处理器,则表示哪一个服务器队列)。根据这一信息,软件便能确定调用适当的程序或进程来为这一中断服务。XISR表示供加载操作的来自中断路由选择层的一个只读寄存器及供存储操作用的对中断路由选择层的一个只写寄存器的状态。由于硬件将对XISR的一个写入解释为将一个中断复位发送到中断源的一个信号(而不是直接写入XISR位本身的一个信号,这一点将在下面描述),因此,所写入的并不当然地就是所读取的。当将一个4字节访问导向XIRR时,必须与CPPR一起原子级地(atomically)访问XISR。对于来自IOC的中断,XISR的高位表示IOC的IOID,而XISR字段的低4位则定义一个IOC中的多达16个源(或级)。这一寄存器的若干种值具有规定的含义。下面将进一步描述XISR。

中断机制的中断显示层是通过系统中的每一个处理器的一个中断管理区体现的,如下面表3中所示。中断管理区是在数据处理系统的存储器空间内的。将处理器的中断管理区的起始地址称作这一文件的其余部分的基地址(BA)。各处理器的BA是不同的(即每一个处理器有一个独立的中断管理区),并且任何一个处理器都可访问这些区域(对它没有保护)。一个处理器的BA是在配置时建立的。中断管理区的布置如下:

地址 字节0  字节1  字节2  字节3    注释BA+0 CPPR    XISR无副作用的XIRRBA+4 CPPR    XISR具有装载/存贮副作用的XIRRBA+8 DSIER    DSIER数据存贮中断错误寄存器BA+12 MPRR    ISSR所要求的QIRRBA+16 MPRR    ISSR可选的第2QIRRBA+20 MPRR    ISSR可选的第3QIRR000 MPRR    ISSR可选的第nQIRR

表1:中断管理区:中断显示层寄存器排队

图5示出前面描述的各队列之间的相互关系。在53处为一个特定的处理器X示出了提供对系统软件的兼容的、独立于硬件的接口的软件队列42、43。队列X通过示出在54处的XIRR寄存器与处理器X接口。这一XIRR寄存器可以被55处的中断路由选择层修改。55处的路由选择层对最高优先级的选择步骤必须顾及多种中断类型。在58处将维护在56处的一个硬件队列中的硬件中断提供(present)给中断路由选择层52。这些硬件中断是来源于51处的各IOC硬件队列的。此外,软件生成的中断也可提供给中断路由选择层52。这些软件中断(诸如处理器间中断)是保持在57处的一个软件管理的队列中的,并通过MFRR寄存器在59处提供给中断路由选择层。

总而言之,图4中提供给系统软件的软件队列42与43为软件管理的队列与硬件中断队列的一个组合。从而,硬件队列可以分布在路由选择层与IOC之间。再者,硬件生成的与软件管理的队列是使用一个统一的接口XIRR寄存器提供给系统软件的。中断处理

中断处理的总流程示出在图6中。在74,当一个IOC具有一个需要服务的中断时,它首先判定这一中断是否是需要提供的中断中优先级最高的。如果存在着一个尚未得到服务的更高优先级的中断,则在75首先提供该中断。在76,IOC选择与待提供的特定中断相关联的XIVR,并将来自该XIVR的服务器号与优先级,连同IOCIOID及指示IOC中正在请求服务的源的一个号码送至中断路由选择层。在77,中断路由选择层便能使用中断信息中的服务器号将中断导向一个特定的处理器(服务器)98,或者如果服务器号并不对应系统中的一个特定处理器时,则在78选择一个将中断发送给它的处理器。在这后一情况中,选择将中断发送到哪一个处理器的硬件是依赖于工具的,并且是可以根据系统设计着眼点(例如,低级机的成本或者高级机的性能)加以优化的。进入这一路由选择决策框78的信息有各处理器正在操作的优先级(CPPR值)以及排队等待该处理器的其它优先级(例如,该处理器的MFRR或G_MFRR)。如果在79,从IOC接受的中断优先级小于或等于排队中存在的中断的优先级,则在98将该中断拒绝回IOC,而IOC则必须在稍后的时刻再提供(represent)该中断(例如,在经过了某一固定的时间量之后)。如果来自IOC的中断较已放置在目标处理器80的XIRR中的一个正在排队的中断更优先,则在95将前面放置在XIRR中的中断退回到它来自的IOC,并在81用新的中断替代它。虽然中断路由选择层机制的一种特定的工具可以选择将该中断排队在路由选择层中供以后显示,但在本优选实施例中,路由选择层是将该中断退回到中断源的,而中断源则在稍后的时刻重新提供该中断。XISR的加载必须是极小的(atomic);即硬件必须保证系统软件与中断路由选择层不能同时试图访问XISR(例如,在硬件正试图用一个更高优先级的请求来更新XIRR时,处理器正在试图读取该XIRR)。

在83,当XISR包含一个非零值时,硬件便经由进入处理器硬件的中断信号将一个中断信号发送给该处理器。当发送了中断信号,并且在84允许中断时,软件便接收该中断信号而在85开始中断处理。软件在中断处理开始时在86读取XIRR并将该值一直保存到中断处理结束为止。在86,当软件读取XIRR时,硬件则将XISR表示的中断优先级放置在CPPR中并将XISR设置为0。将CPPR设置为中断的优先级值,防止软件进行下述操作:在该中断的服务开始时,处理器优先级将等于该中断的优先级,因此中断路由选择层将不会用一个较低优先级的中断来中断这一服务。通过将XISR设置为0,便使得对处理器的中断信号不被激励,并且,如果处理器稍后读取XIRR时,XISR中的值0会通知没有等待中的中断。一旦处理器读取BA+4处的XIRR而将一个中断提供给了该处理器,这便通知硬件软件将开始处理该中断,因此中断路由选择层既不能先占也不能撤消该中断。读取XIRR之后,软件使用XIRR的XISR字段中的值来确定调用哪一个中断服务例程。在87,如果XISR指向QIRR,则在88,软件从该队列中去掉这一最优先的队列项,并将QIRR中的MFRR设置为队列中的新的最优先项的优先级的值,如果此时队列是空的,则设置为值0xff。如果在89,XISR指向G_QIRR,则在90,软件从全程中去掉最优先的队列项,并将G_QIRR中的G_MFRR设置为该队列中的新的最优先的项的优先级值,如果这时队列是空的,则设置为值0xff。如果XISR并不指向软件队列之一,则它便是指向一个外部中断服务例程的,而软件在91调用适当的设备驱动器来服务于该中断。在外部中断的情况下,设备驱动器在服务过该中断之后,在服务例程的过程中,IOC中的中断将被复位(例如,大多数硬件将通过发布对IOC的地址空间中的某一地址的一条存储指令而复位IOC中的中断)。无论中断源是什么,在92,服务结束时,软件将用读自XISR并在中断服务开始时保存的值在BA+4处写入XIRR。当在BA+4处写入XIRR时,CPPR将被设置成存储数据中的值(在本例中,它将是中断服务开始时CPPR的值),并在93,用写入的XISR数据中所指定的IOC内的IOID与中断源向中断路由选择层发布一个中断复位,而在94向IOC发布,(在本例中为中断开始时的XISR的值,因此这将复位刚才已服务过中断)。当IOC收到这一复位时,如果在97硬件仍认为一个中断正在等待(例如,自从软件服务与写入XIRR后又出现了中断),则在74再一次起动中断显示进程。

XIRR设施在外部中断管理区中出现两次。地址BA+4是设计成与中断查询一起使用的,地址BA+4在读取或写入时有副作用,并且是设计成使硬件在中断排队进程中协助软件而允许高效的中断处理程序软件的。下面进一步描述寄存器及它们的用途。处理器对处理器中断

最优先请求寄存器(MFRR)中保存根据该处理器的软件管理的队列的最优先请求的优先级。当写入一个非0xff的值时,MFRR与其它外部中断竞争中断处理器的权力。当MFRR的优先级是导向该处理器的所有中断请求中最高的优先级时,便将一个适当的值加载到XISR中(见XISR寄存器说明),并发送一个中断信号到该处理器。当处理器在BA+4处读取XIRR时,MFRR中的值将被硬件加载到CPPR中。软件可读回MFRR来确认已经执行了MFRR写入。

在一个处理器间中断的处理过程中,软件从与MFRR关联的软件队列中退出最高优先级请求,并用本技术中已知的传统队列管理技术将次优先请求的优先级加载到MFRR中。全程队列

在MP系统中,系统存储器空间包含一个或多个全程队列MFRR,软件用它们来将处理器间中断发送到某一服务器群内的任何一个处理器。除了中断路由选择层根据自己的算法来确定接收请求的处理器及加载到XISR中的值为指示全程队列的一个IOID之外,全程队列MFRR的工作与上面描述的每一个处理器的MFRR的工作完全一样。这一路由选择算法可以根据系统设计的着眼点相似地优化。例如,根据成本优化的一个系统为了避免设置优先级比较逻辑可以将路由选择到一个随机的处理器,而用于实现高性能的一个系统则试图永远将路由选择到在最低优先级上运行的处理器。外部中断矢量寄存器(XIVR)

各IOC30为每一个它所支持的外部中断包含一个外部中断矢量寄存器70。每一个寄存器中的位的定义如下:

    位说明    0-15    备用:这些位是备用的并应根据存贮指令由软件设为0值。这些    位根据装载指令由硬件返回为0值(软件注释:只要这个字段保持    为“备用”,这些位就只保证为0;如果这些位将来被再定义,则软件    可以取除0外的某值。)    16-23    中断服务器号:它确定中断将被中断路由选择硬件指向何处。若该值    表示系统中的处理器,则中断将导向该处理器。若其不代表特定处    理器,则中断路由选择层可以根据其显示算法选择路由。    24-31    中断优先级:这个字段规定应分配给入叫中断何种优先级。

表2:XIVR寄存器说明

这些寄存器位于IOC地址空间中,这些寄存器的地址是由IOC的特定设计定义的。外部中断请求寄存器(XIRR)

XIRR为在地址BA+0与BA+4的一个4字节寄存器。发布一条对地址BA+0上的XIRR的加载指令,导致将CPPR与XISR的内容送至处理器而无副作用。这是设计来供软件查询外部中断的。发布一条对地址BA+4上的XIRR的加载指令具有下述极小的副作用:返回XIRR的内容之前:*在图6的86,中断路由选择层使对正在被访问的BA的处理器 的中断信号72不被激励。只在经过了足够的时间来确保不激活 的中断信号已传播通过处理器的内部中断逻辑之后,才将 XIRR的内容返回给请求的处理器。将来自XIRR的数据送至处理器之后:

*将CPPR的内容设置成XISR中发出信号的中断的优先级

 (如果XISR为0,则不改变CPPR字段)。

*将XISR复位成0×000000。具有较高的优先级的以后的

 中断请求将会导致发送一个中断信号并在XIRR中提供。

当系统软件开始处理一个中断时,处理器禁止中断——屏蔽掉任何以后的外部中断。在中断处理序列中,软件必须允许启用中断以允许提供以后的中断。必须注意确保在允许启用中断之前已将BA+4处的XIRR的内容返回给处理器,这是为了避免与中断路由选择层中的发送结束信号的中断的一次赛跑。这样的一次赛跑可产生无法预期的后果。面对潜在的处理器投机性指令执行,一种确保数据已经返回的方法是在允许启用中断的代码前面的代码中加入XIRR值数据依赖性。正在接收XIRR值的处理器寄存器与本身进行比较,利用这一比较的结果,执行一条“如果相等则转移”(branch-if-equal)指令,而转移的目标地址则为下一条指令的存储单元。

在加载XIRR时这样设置CPPR具有从软件发布一条对XIRR的加载指令的时间起直到它以一个新值发布一条对CPPR的存储指令为止的时间内拒绝一切较低或相等优先级的外部中断的效果。

在BA+0处发布一条XIRR的存储指令是未定义的(数据被忽视)。对地址BA+4上的XIRR的存储具有极小的副作用,并且对于一字节与4字节存储有不同的效果。当存储指令为一字节存储时,则便是对CPPR的存储(见CP PR寄存器说明)。当以4字节长度发布对XIRR的存储指令时,便将一个中断复位送至伴随对XIRR的存储指令的数据所指示的中断源(不是送至存储时XISR中所指示的中断源)。伴随对XISR的存储指令的数据是不写入XISR的(并且在随后以一条加载指令读取时将不会得到该数据)。反之,它是用于指示将中断源复位到中断路由选择层上的(对于处理器间及全程队列中断以外的中断则是复位到IOC)。一条对这一地址上的XISR的存储指令的发布允许中断源提供由伴随该存储指令的数据所指示的级上的随后的中断。对于一条4字节存储指令,字节0存储在CPPR中,但是系统软件确保这一CPPR存储与前面的CPPR值相比具有较低或相等的优先级,因为对于这种情况不需要硬件来处理双重复位(一次用于将CPPR值改变到更高或相等的优先级,一次用于写入XISR)。

如果中断路由选择层硬件在CPPR从较高到较低优先级改变时决定拒绝中断,则在对XIRR的一次4字节存储时,中断路由选择层可进行下述两件事情之一:

1.向中断源发送两次拒绝(一次用于CPPR改变,一次用于XISR写入)

2.发送用于XISR写入的拒绝(利用CPPR的写入必须具有比前面的CPPR值低的优先级这一事实;加在软件上的一个要求)。

为了使这里所描述的中断机制能够用在潜在地具有不同处理器的各种不同的系统上,中断路由选择层必须确保能够满足一种特定的处理器的所有中断信号的约束条件。例如,如果处理器并不内部锁存中断信号,并且如果在处理器的中断显示周期中使得中断信号不激活便不能保证正常的操作,则中断路由选择层必须外部锁存中断信号,用读取XISR而不是作为中断拒绝的结果来复位锁存器。

在中断处理程序结束时,用中断处理程序开始时读取的值来写入BA+4上的XIRR具有下述组合效果:发布一个显式中断结束到IOC,及将处理器的操作优先级返回到其中断前的值。

当软件正在查询中断时,在软件决定采纳一个中断之后,软件必须通过发布一条对BA+4上的XIRR的加载指令来通知硬件该中断正被采纳。然后,软件必须将XISR与它在BA+0上读取的值进行比较以确认硬件在加载指令之间并未改变XISR。当前处理器优先级寄存器(CPPR)

这一寄存器为一个一字节寄存器,并用来存放与它关联的处理器的当前优先级。该寄存器在地址BA+0与BA+4上。发布一条对CPPR(BA+0或BA+4)的一字节加载指令没有副作用。CPPR为XIRR寄存器中的一个字段。每一台处理器有其自己的CPPR。当处理器改变状态时,软件可将该处理器的处理优先级存储在CPPR中。中断路由选择层拒绝对一个处理器的所有比CPPR优先级低的优先级上的中断。从而,保持CPPR具有当前的优先级可防止外部中断中断具有更高或相等优先级的一个进程。

CPPR为XIRR中的一个字段,并可作为XIRR的一部分来读取或写入。当改变CPPR的内容时,中断路由选择层确保只将更高优先级的中断信号发送到该处理器及在XIRR中提供。这是用一个硬件比较器来完成的。如果进来的中断优先级低于或等于当前的CPPR,则将该中断拒绝回中断源。对CPPR的任何存储之后如果优先级的改变方向是面向一个较低的优先级的,则硬件重新计算(可能通过中断拒绝)要提供的最高优先级中断是可取的,并且如果对CPPR的存储是比任何排队的中断更高或相等的优先级,则重新计算是强制性的。当由于对CPPR的一次存储而从XIRR中去掉了一个中断时,如果没有更高优先级的中断(高于新的CPPR值)在XISR中等待取代它,则中断显示硬件将XISR设置为值0(极小地,与CPPR存储一起),表示没有正在等待的中断,并降低对处理器的中断请求线。外部中断源寄存器(XISR)

这一寄存器为一个三字节寄存器并包含中断源的地址。每一个处理器有其自己的XISR。这一寄存器在地址BA+1与BA+5上。然而,为了可分性的目的,这一寄存器必须作为XIRR的一部分来存取。发布一条对地址BA+0上的XIRR的加载指令,导致XISR的内容返回给处理器而无副作用。这是设计成用于软件查询外部中断的。发布一条对地址BA+4上的XIRR的加载指令具有下述副作用:在将XIRR的内容返回给处理器之后,原子地(atomically)将XISR复位成0×000000。然后,具有更高优先级的后续中断请求将导致发送一个中断信号并在XIRR中提供。

如下面表3中所述,XISR中的某些值具有特殊的含义。

    值 0×000000 0×000001 0×000002 直到(但不 包括)第一 个IOID值    含义复位:这一值指示没有当前外部中断在等待。XISR用这一值作为来自单元BA+4上的XISR的加载的副作用。早期断电警告(EPOW):这一值指示有一个EPOW在等待。处理器间中断(IP):这些值表示一个处理器间中断在等待中(见下面MFR R的定义)。每一个MFRR分配一个值。在一个MP系统中,每一个处理器有一个其XISR值为0×000002的MFRR。系统配置软件必须将系统中的第一个IOID设置为使得加载进最低IOID的XISR中的值大于最大的早先定义的IOID值。

表3:XISR特殊值排队中断请求寄存器(QIRR)

排队中断请求寄存器为一个4字节寄存器,第一个字节为最优先请求寄存器(MFRR),而如果设置了其余的3个低字节,则它们是ISSR。软件可以写一个单一的字节MFRR或者全部4个字节。最优先请求寄存器(MFRR)

这是一个一字节寄存器。这一寄存器的内容是受系统软件控制的,并指示与该特定的MFRR关联的处理器或服务器的一个处理器间(IP)中断队列42、43中的最优先的IP中断优先级。如果将一个处理器的MFRR设置为值0xff,则在该处理器的IP中断队列42、43中没有项,并且硬件也不向该处理器发送一个IP中断信号。当系统软件在一个处理的一个IP队列42、43中放入某些事物时,它同时将这一寄存器设置成IP队列中的最优先的项的优先级。当这一寄存器不是值0xff时,中断路由选择层便将它作为另一个中断请求处理,竞争得通过XIRR的处理器显示。当一个MFRR中的值为指向该处理器的所有中断请求中最优先的值时,便将一个适当的值放在XISR中(见XISR说明)并向处理器发送一个中断信号。与所有其它中断源一样,当且仅当在路由选择层拒绝了该中断或者软件发布了中断结束而尚未复位中断条件时,才能重新提交一个MFRR中断。中断条件是0xff以外的一个MFRR值。因此,一旦MFRR具有了一个非0xff值,并且中断路由选择层已经开始选择中断的路由,中断路由选择层将不会由于MFRR中的值的后一次改变而重新将中断请求引导到中断显示层上。中断路由选择层重新选择MFRR中断请求的路由的方式是由于一个中断拒绝或一个中断复位(假定MFRR不是值0xff)。MFRR的值只能由软件存储操作改变。每一个处理器至少有一个MFRR。在一个MP系统中还有一个或多个全程MFRR。与一个特定处理器的IP中断机制关联的MFRR位于地址BA+12、BA+16等等上。全程排队中断请求寄存器(G_QIRR)

全程排队中断请求寄存器73是一个4字节寄存器,第一个字节为全程最优先请求寄存器(G_MFRR),它是一个MFRR,而其余的低三个字节则为ISSR。软件可以写一个单一的字节G_MFRR,或者全部4个字节。全程服务器的中断管理区的起始地址称作其基地址(BA)。各全程服务器的BA是不同的,并且是在建立时设定的。全程服务器中断管理区的布置如下:

 地址  字节0字节1字节2字节3   注释BA+12 G_MFRR    ISSRMP系统所要求的QIRRBA+16 G_MFRR    ISSR可选的第2QIRRBA+20 G_MFRR    ISSR可选的第3QIRR000 G_MFRR    ISSR可选的第nQIRR

表4:中断管理区:中断显示层寄存器当将与对应的MFRR关联的中断信号发送给一个处理器时,ISSR(中断源说明寄存器)中包含待加载到XISR中的值。设备与控制器之间的中断信号发送

表5中详细描述了为IBM Power PC 601系统总线设计的中断分组格式。这一系统总线在“Power PC 601 RISC微处理器用户手册”,1992,中进一步描述,通过引用在此作为背景材料。相同的地址位定义可类似地用于采用其它处理器的数据处理机。传送类型位是专用于601总线的,在其它总线结构中可能改变。

    操作传送类型GLB地址位0-2地址位3-11地址位12-15地址位16-12地址位24-31  中断请求10110 1备用故障值B′000′以下可选值B′001′-第一中断表示B′010′-拒绝中断表示IOID中断源服务器号中断优先级  中断复位10111 1备用故障值BO00′以下可选值B100′-存贮至XIRR引       起的中断复位B101′-由存贮至′CPPR       引起的中断拒绝B110′-由于XISR已满       引起的中断拒绝B111′-由于CPPR请求的   优先级引起的中断拒绝IOID中断源服务器号备用置为x′00′

表5传送类型字段用于标识出现在地址总线上的传送的类型,诸如一个中断请求或一个中断复位。全程(GBL)位用于指示总线上的每一台设备必须监视事务处理,并且总是允许启用中断分组传送的。地址位线分组成4个子集。地址位0-2用于提供正在发生的特定类型的传送的进一步信息。对于一次中断请求操作,地址位0-2指示这是否是一个中断的第一次或后续显示,并从而指示这一中断是否是以前被拒绝而重新提交的。对于一次中断复位操作,地址位0-2指示中断复位的原因。地址位3-11指定系统地址或请求中的IOC的路由。地址位12-15标识IOC中多达16个源中的哪一个提出这一请求。地址位16-23为服务器号,是直接从中断源的XIVR寄存器中取来的。各服务器将服务器位与在系统建立时为该特定服务器写入一个配置寄存器中的服务器号进行比较。请求分组中的地址位24-31包含中断优先级,它也来自中断源的XIVR。将这些优先级位与CPPR的当前值进行比较来判定是否接受一个中断请求。复位分组中的地址位24-31是保留的并含有X′00′。

图7与8描绘数据处理中断子系统的总线信号发送。首先参见图7,当一个IOC有一个中断请求时,该IOC通过激活其总线请求信号BR100来向中央总线仲裁器请求地址总线。仲裁器通过激活对应的总线授予(BG)信号102到该IOC来授予总线。然后,该IOC在地址总线上发送一个中断请求分组。这是通过下述方式进行的:将传送开始(TS)104、总线地址110及传送类型(TT)108线驱动到一定的值(如表5中所定义的)来通知中断控制器存在一个某一个中断源与优先级的中断。此外,IOC将信号地址总线忙(ABB)106驱动到低电平来指示正在使用地址总线。中断控制器处理这些信息并发送一个中断信号到处理器。在多重处理系统中,中断控制器可将中断信息引导到一个适当的处理器,如上所述。总线仲裁器将地址确认信号(AACK)驱动到低电平来指示已经完成了事务处理的地址部分。

参见图8,当处理器完成了中断处理时,它便唤醒中断控制器去发送一个复位分组到IOC(存储到XIRR寄存器中,如上面所讨论的)。然后,中断控制器通过激活其总线请求信号BR100来向中央总线仲裁器请求地址总线。仲裁器通过激活对应的总线授予(BG)信号102到IOC来授予总线,该IOC在地址总线上发送一个中断复位分组。它是以下述方式进行的:通过将TS104、总线地址110及TT108线驱动到一定的值(如表5中所定义的)来通知IOC已经服务过该中断。此外,IOC将信号地址总线忙(ABB)106驱动至低电平来指示正在使用地址总线。总线仲裁器将地址确认信号(AACK)驱动至低电平来指示已完成了事务处理的地址部分。

一个占用期包含传送一个地址及0与8个周期之间的数据。由于每一个地址通常有4个周期的数据传送,所以数据总线的地址总线使用得更繁重。利用地址总线来发送中断信息,便有可能利用一个使用不足的资源(地址总线),而不利用较忙的数据总线。利用地址总线的另一个优点是:在优选实施例中,当前在系统总线上的所有IOC都使用整个地址总线。然而,IOC却并不都使用整个数据总线。在地址总线上传送的中断分组利用已经存在在系统中的地址线,不需要增加管脚与导线。这是与现有方法不同的,它们使用若干条特殊的中断线。由于存储器映射的I/O是最广泛地应用的I/O方法,所以用它来作为发送中断分组的方法。作为最普通的I/O方法并使用了本技术中已知的传统技术,系统总线上所有的芯片已具备了进行存储器映射的I/O的逻辑。

在优选实施例中,中断分组定义允许来自512个IOC中每一个的16个中断源。一共有256个中断优先级。每一个系统可具有256个中断服务器。这使得分组定义适用于广阔范围的机器中。在中断请求分组与中断复位分组中都留有保留位,它们可供需要在中断分组中传输更多的信息的系统使用。从而,这一分组定义可为未来的系统提供可扩展性。

较早的硬布线中断系统只提供极少的关于一个中断的直接信息。总线分组方法完全同时同地地提供中断源、IOID、优先级及服务器信息。除了系统灵活性,这使得系统中断调试更为容易。可以将信息放在中断复位分组的保留的地址位0-2中来通知IOC正在发送的是哪一种中断复位。

在中断分组定义中允许256个可能的中断服务器。这意味着多达256个处理器能够在系统中接受中断。这一分组定义使中断能够容易地被导向不同的处理器。此外,能够为每一个系统定义多达256个可能的中断服务器,允许一个系统中有多达256个中断控制器。各中断控制器能服务于一个单一的处理器,或者一批服务器能服务于各处理器,如前面所描述的。

由于中断是在地址总线上传送的,它们是与其它中断与其它系统操作排成序列的。这在调试中是有帮助的,因为它使中断在系统级上更可观察并且与系统更少异步。例如,能够监视系统总线来检测提供在地址总线上的中断。由于地址分组是排成序列的(即不是重叠或并发地提供的),这便更易于确定调用何种操作或者会导致何种后续的操作。

由于中断信息是定义在中断分组中的各字段中的而不是硬布线在平板上的,这一中断系统是极为可编程的。利用这一分组结构,中断优先级、服务器号、中断源及I/O控制器ID都是可编程的。因此,本中断结构比硬布线系统更为灵活。

虽然已经参照其特殊的实施例展示与描述了本发明,但熟悉本技术的人员应能理解可以在不脱离本发明的精神与范围的条件下,在其中作出上述的及其它的形式上及细节上的改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号