动态优先级外部事务处理系统的制作方法

文档序号:6629339阅读:177来源:国知局
专利名称:动态优先级外部事务处理系统的制作方法
背景技术
人们知道,许多现代计算系统采用多代理者体系结构(multi-agentarchitecture)。

图1示出一种典型的系统。其中多个代理者110-160按照预定的总线协议在外部总线170上进行通信。“代理者”可以包括通用处理器110-140、存储器控制器150、接口芯片集160、输入输出装置和/或其它对数据请求进行处理的集成电路(未示出)。总线170可允许同时进行几个外部总线事务处理。
代理者(例如110)通常包括事务处理管理系统,该管理系统接收来自所述代理者的其它部件的请求一般并处理外部总线事务处理以实现所述请求。图2所示的总线排序单元200(“BSU”),是这样一种事务处理管理系统的示例。BSU200可以包括仲裁器210、内部高速缓存220、内部事务处理队列230、外部事务处理队列240、外部总线控制器250和预取队列260。BSU200响应由例如代理者核心(图2中未示出)发出的数据请求而管理外部总线170上的事务处理。
仲裁器210不仅可以接收来自所述核心的数据请求,而且还可以接收来自诸如预取队列260的各种其它源的数据请求。仲裁器210可以在仲裁器210同时收到的可能的几个数据请求中进行选择,并将其中的一个输出到BSU200的其余部分。
内部高速缓存220可以将数据存储在几个高速缓存项目中。它可能具有对数据请求作出反应以确定高速缓存220是否存储请求数据的有效拷贝的逻辑。这里用到的“数据”可以指可以由代理者使用的变量数据和指令数据。内部高速缓存220可以响应数据请求而供给请求数据。
内部事务处理队列230也可以接收并存储仲裁器210发出的数据请求。对于读取请求,内部事务处理队列230与内部高速缓存220配合以确定请求数据是否“命中”内部高速缓存220(可由内部高速缓存220供给)。如果不,如果数据请求“错过”内部高速缓存220,则内部事务处理队列230将数据请求转发到外部事务处理队列240。
外部事务处理队列240可以解释数据请求并生成外部总线事务处理来完成它们。外部事务处理队列240可以包括几个队列寄存器。它在代理者的事务处理在外部总线170上进行时对它们进行管理。例如,当数据可用于响应事务处理时,外部事务处理队列240检索该数据并将其转发到代理者中的请求者(例如核心)。
预取队列260可以识别由核心(未示出)发出的读取请求中的预定模式。例如,如果核心发出指向顺序增加的存储单元(地址A、A+1、A+2、A+3、…)的读取请求,则预取队列260可以发出预取请求,以便在核心实际请求数据本身之前从顺序中的下一个地址(A+4)读取数据。通过预期数据需要,预取队列260可以使数据在核心发出数据请求时可在内部高速缓存220中得到。将从内部高速缓存220而不是外部存储器向核心供给数据—快得多的操作。这里,这种类型的预取请求被称为“模式预取(patterned prefetch)”。
BSU200可以实现第二类型的预取,这里称为“盲预取(blindprefetch)”。当核心发出将由外部总线事务处理完成的对某个地址(假定地址B)的数据的读取请求时,盲预取机制可使第二外部总线事务处理检索第二存储地址(B+1)的数据。盲预取可以使不能内部完成的来自核心的每个读取请求产生一对外部总线事务处理。盲预取可以通过两次检索同满足核心读取请求所需的一样多的高速缓存线(或高速缓存扇区)来改进处理器性能。再且,如果核心最终需要从其它地址(B+1)预取的数据的数据,则在核心发出数据读取请求时可以在内部高速缓存220中得到数据。也可以从模式预取请求生成盲预取请求。利用上述示例,可以由对地址A+5的盲预取增加对地址A+4的模式预取请求。
回到图1,众所周知,特别是在多处理器计算机系统中,外部总线170会限制系统性能。外部总线170通常操作在远低于代理者的内部时钟速度的时钟速度下。核心通常会在外部总线170能完成单个外部总线事务处理的时间发出几个数据请求。这样,单个代理者会消耗外部总线170的大量带宽。当多个代理者必须共享外部总线170时,每个代理者只分配有总线170上可用带宽的一部分。在多代理者系统中,在外部总线检索代理者进程所需的数据时,代理者常常必须空闲地等待。
外部事务处理队列240(图2)可以包括对等候发送到外部总线的请求按优先级排序的控制逻辑。通常,核心读取应该优先于预取读取,而预取读取应该优先于写入。核心读取请求识别核心立即需要的数据。预取读取请求识别核心可能在将来某个时间需要的数据。写入请求识别代理者正返回给系统存储器的数据。因此,外部事务处理队列240可以包括根据所述优先级把请求发送到外部总线上的控制逻辑。
预定优先级方案具有其不足。请求通常被存储在事务处理队列240中,直到它在总线上被完成。在高拥挤阶段期间,当事务处理队列完全或几乎满了的时候,预取和写入请求会阻止新的核心请求被存储在队列240中。这些较低优先级的请求将继续存储在队列中,直到请求的外部总线事务处理完成。这样,较低优先级的请求会阻止较高优先级的请求被执行。这会限制系统的性能。
因此,技术上在代理者中需要用于外部事务处理队列的拥挤管理系统。技术上需要这样一种系统它提供动态优先级系统—在没有系统拥挤时保持第一优先级方案,但在拥挤事件出现时执行第二优先级。

发明内容
本发明的实施例提供一种用于代理者的多模式事务处理队列。所述事务处理队列可以按照缺省优先级方案操作。当检测到拥挤事件时,事务处理队列可以使用第二优先级方案。
附图简述图1是多代理者计算机系统的方框图。
图2是代理者的示例性总线排序单元的方框图。
图3是按照本发明一个实施例的代理者的外部事务处理队列的方框图。
图4是按照本发明一个实施例的拥挤管理方法的流程图。
详细描述本发明的实施例提供一种事务处理队列,它提供对拥挤事件的测量响应。事务处理队列选择性地使队列中正在等候的存储的事务处理无效—它们目前未被发送到外部总线。在一个实施例中,事务处理队列首先使盲预取请求无效。事务处理队列还可以使未发送的预取请求无效,其中所述未发送的预取请求与有关发送的预取请求被存储。最后,在极端拥挤的情况下,如没有可用于新请求的空间时,事务处理队列可以使未发送的模式预取请求对无效。
这些实施例有利地提供具有动态优先级方案的事务处理队列。在没有拥挤时,事务处理队列可以按照第一优先级方案操作。例如如上所述,事务处理队列可以使核心读取请求优先于预取请求,并使预取请求优先于写入请求。可是,当拥挤事件出现时,事务处理队列可以采用第二优先级方案。例如,事务处理队列可以将核心读取保持为最高优先级请求,而将写入请求的优先级重新安排为次最高优先级请求。
图3是按照本发明的一个实施例的代理者的外部事务处理队列300的方框图。外部事务处理队列300可以包括控制器310和多个队列寄存器320-1到320-N(共同标记为320)。各个队列寄存器可以包括几个字段,包括地址字段330、第一状态字段340和第二状态字段350。
外部事务处理队列300可适合用于执行盲预取的代理者。状态字段340、350每个都可以存储有关按照盲预取对来执行的外部总线事务处理中相应一个的信息。地址字段330可以存储事务处理将被定向到的基地址。通常,在地址字段330和状态字段340、345之间将存在预定关系。例如,如果地址D被存储在寄存器320-1的地址字段330中,则状态字段340可以保持有关定向到地址D的事务处理的状态信息,并且状态字段350可以保持有关定向到地址D+1的第二事务处理的状态信息。
状态字段340、350可以存储关于相应的事务处理的管理信息。这样的信息可以包括请求类型、关于外部总线上相应的事务处理的状态的信息(即它是否被发送、请求可能在哪一个事务处理阶段、事务处理是否完成等)和关于按照事务处理可能收到的数据的目的地的信息。通常,当状态寄存器340、350两者都表明其相应的事务处理已经完成时,从寄存器320清除所述事务处理。
按照本发明的一个实施例,状态字段340、350每一个都可以包括子字段,该子字段识别是否按照核心请求(“C”)或按照预取请求(“P”)生成对应的事务处理。图3说明了7个请求为核心请求和乘下的为预取请求的示例。在该示例中,存储在寄存器320-1、320-4、320-5、320-6、320-8、320-11和320-N中的事务处理存储由核心请求启动的事务处理。那些寄存器的状态字段340或350中的一个识别源于核心请求的事务处理;其它状态字段表明盲预取请求。
其它寄存器320-2、320-3、320-7、320-9和320-10识别由盲预取增加的模式预取请求。状态字段340、350两者都表明请求是预取请求。
控制器310把外部事务处理队列300连接到代理者中的其它元素(例如参见图2)。控制器310可以使事务处理被输入到队列寄存器320中或从其中删除事务处理,并可以把数据写入到地址字段330以及写入到状态字段340、350。控制器310还可以为要发送到外部总线170(图1)的事务处理安排次序。在一个实施例中,控制器310可以是状态机。
按照本发明的一个实施例,控制器310可以BSU 200中的拥挤事件期间选择性地禁止预取请求。在第一实施例中,当事务处理300经历拥挤时,事务处理队列可以禁止还未被发送到外部总线上的任何盲预取事务处理。这可以例如通过即使事务处理从未被发送也把盲预取事务处理的状态字段标记为完成来实现。在此实施例中,当在外部总线上完成核心读取请求时,可以从事务处理队列300中逐出事务处理。
在另一个实施例中,当事务处理队列经历拥挤时,事务处理队列300可以逐出存储在队列中还未被发送到外部总线上的任何模式预取请求。事务处理队列300可以简单地通过解除对有关队列寄存器的分配来逐出未开始的预取请求。
在又一个实施例中,当事务处理队列经历拥挤,并且事务处理队列300存储已经开始的模式预取事务处理时,事务处理队列300可以禁止预取对中的任何未发送的预取事务处理。考虑图3的寄存器320-2中示出的模式预取请求。如所示的那样,状态字段350表明第一预取事务处理正在等候但还没有被发送到外部总线上。相反,状态字段340表明第二预取事务处理已经被发送到外部总线上。在该实施例中,事务处理队列300可以响应于拥挤事件而把第一事务处理标记为完成。在这种情况下,第二预取请求将被允许继续完成。当它完成时,事务处理队列300可以解除对寄存器320-2的分配,因为状态340、350两者都识别完成的事务处理。
图4是按照本发明的一个实施例可以由事务处理队列300(图3)执行的方法1000的流程图。在拥挤事件时,事务处理队列可以确定新请求是否被输入到事务处理队列(步骤1010)。在收到新请求时,事务处理队列可以确定是否有新请求可用的寄存器(步骤1020)。如果是,则它把请求存储在可用的寄存器中(步骤1030)。可以按照在本领中的传统方法执行请求的存储。事务处理队列300可以确定请求的基地址并在分配的寄存器的各个字段330-350中输入适当的信息。
如果在步骤1020中没有可用的寄存器,则事务处理队列300可以解除对与一对未发送的模式预取请求有关联的寄存器的分配(步骤1040)。在执行该步骤中,事务处理队列300可以解除状态字段340、350都表明相应的事务处理还未被发送到外部总线的模式预取请求的分配。如果寄存器320中没有一个识别一对未开始的预取请求,则新接收的请求可以被安装(步骤未示出)。该请求被禁止输入事务处理队列。
在步骤1030结束时,或者在步骤1010没有收到请求,事务处理队列确定它是否正在拥挤模式下操作(步骤1050)。如果不是,事务处理队列300可以停止方法1000的这种重复。
如果事务处理队列300正在拥挤模式下操作,则事务处理队列确定它是否存储任何等候的盲预取事务处理(步骤1060)。如果是,事务处理队列300可以禁止盲预取事务处理的其中之一(步骤1070)。步骤1070可以应用于与核心请求有关的盲预取或模式预取请求。如果不是,或者在步骤1070结束时,该方法可以结束。
方法1000有利地提供对拥挤的测量响应。作为第一响应,事务处理队列使来自事务处理队列的盲预取请求无效。如所讨论的那样,作为类的预取请求次于核心请求。经验也表明使盲预取次于模式预取是适当的。模式预取可能比盲预取更有效。对存储器的核心读取的建立模式进行响应而发出模式预取。盲预取不依赖任何种类的可测量标记。这样,模式预取更可能检索核心最终将请求的数据,并应该有利于盲预取而被保持。
当盲预取被无效时,它增加了寄存器320可用于新接收的请求的速率。如说明的那样,盲预取与核心读取请求有关。核心读取请求是由事务处理队列处理的最高优先级的请求—它们以最高优先级被发送到外部总线上。
在优先级的第二级,如果拥挤即使在所有预取都被无效后仍然继续,则事务处理队列可以使与进行中的预取请求有关的等候的模式预取请求无效(步骤1080)。因为预取请求中的一个已经被发送到外部总线上,因此它可能在预定时间内结束。可是,即使它结束,第二等候的预取请求的状态(在步骤1080中被无效的那个)会阻止有关寄存器被解除分配。通过把等候的预取请求标记为完成,步骤1080确保在发送的预取请求结束时解除对寄存器的分配。
在优先级的第三级,事务处理队列有利于新收到的请求而解除对存储一对等候的预取请求的寄存器的分配。这种情况仅在新接收的请求没有可用的寄存器时出现。
本发明的原理允许几个不同的触发事件以使事务处理队列300判定它是否在拥挤模式下操作。在第一实施例中,事务处理队列300可以根据队列中被分配了的或未被分配的寄存器320的数量来确定它是拥挤的。例如,如果事务处理队列确定寄存器满到90%或100%,它可判决它是在拥挤模式下操作。
在第二示例中,事务处理队列可以根据外部总线的测量的等待时间来确定拥挤事件已经出现。人们知道,代理者通常按照预定的总线协议操作。总线协议可以建立管理规则,以管理新请求何时可被发送到外部总线上以及的多个可能的代理者中的哪一个可能在各请求“时隙”中把新请求发送到总线上,每个时机把一个新请求发送到总线上。在这样一个实施例中,事务处理队列300可以测量若干在事务处理队列300获得总线所有权之前传送的请求时隙。如果测量的时隙数超过预定阈值,则事务处理队列300可以确定拥挤事件已经出现。
按照另一个实施例,事务处理队列300根据检测的一种类型的拥挤不同地响应拥挤事件。考虑事务处理队列可以检测上述两种类型的触发事件的示例1)可用寄存器的数量低于某阈值数(假设事务处理队列全满),以及2)测量的外部总线上的等待时间超过阈值量。按照一个实施例,事务处理队列300可以在事务处理队列300全满时使所有预取请求无效,而在测量的外部总线上的等待时间超过阈值时仅使盲预取请求无效。该实施例会是有利的,因为它具有简单的实现并区分低严重性和高严重性的拥挤事件。
前面的讨论区分了等候和发送请求。这里,发送请求是已经在外部总线上开始的请求。通常,外部总线由预定总线协议定义,它指定事务处理完成经历的增加的阶段。前面实施例中描述的拥挤管理方法不干扰已经发送的事务处理。相反,等候的请求是存储在BSU中的但还未在外部总线上开始的请求。本发明的拥挤管理方法可以按照前面实施例中描述的那些技术来使等候请求无效。
如上所述,本发明的实施例提供事务处理队列300,它可以按照动态优先级方案操作。第一优先级方案可被定义用于没有拥挤时的事务处理队列。但是在检测到拥挤时,事务处理队列可以执行第二优先级方案。在上述实施例中,事务处理队列可以使预取请求无效。
前面实施例中描述的拥挤管理技术针对于读取由事务处理管理系统处理的请求。人们知道,BSU可以处理其它类型的请求,如写入请求,它们不是用来使数据被读入代理者。前面实施例描述的拥挤管理技术不是用来干扰事务处理管理系统处理这些其它类型的请求的方法。
在此具体示出并描述了本发明的几个实施例。可是要知道,在不脱离本发明的精神和预期范围下的本发明的修改和变化被上述示教所覆盖并在后附权利要求书的范围内。
权利要求
1.一种用于代理者的事务处理队列,它按照动态优先级方案操作,所述事务处理队列按照缺省优先级方案操作并在检测到拥挤事件时使用第二优先级方案。
2.一种在代理者中的用于外部事务处理的管理方法,它包括对多个读取请求的数据进行排队,对于各个排队的请求,存储与相应的所述请求有关的盲预取事务处理的数据,当事务处理拥挤事件出现时,禁止选定的被存储的预取请求。
3.如权利要求1所述的管理方法,其特征在于所述事务处理拥挤事件在排队的请求的数量超过预定阈值时出现。
4.如权利要求1所述的管理方法,其特征在于所述事务处理拥挤事件在存储所述排队的请求的队列变满时出现。
5.如权利要求1所述的管理方法,其特征在于所述事务处理拥挤事件在发送事务处理的测量的等待时间超过预定阈值时出现。
6.一种在代理者中的用于外部事务处理的管理方法,它包括对多个外部总线事务处理的数据进行排队,对于至少一个排队的事务处理,存储与所述相应的事务处理有关的盲预取事务处理的数据,当事务处理拥挤事件出现时,禁止所述盲预取事务处理。
7.如权利要求6所述的管理方法,其特征在于所述事务处理拥挤事件在排队的请求的数量超过预定阈值时出现。
8.如权利要求6所述的管理方法,其特征在于所述事务处理拥挤事件在存储所述排队的请求的队列变满时出现。
9.如权利要求6所述的管理方法,其特征在于所述事务处理拥挤事件在发送事务处理的测量的等待时间超过预定阈值时出现。
10.一种在代理者中的用于外部事务处理的管理方法,它包括对多个读取请求、与代理者核心执行的执行有关的某些读取请求、与预取的数据有关的某些其它读取请求的数据进行排队,当事务处理拥挤事件出现时,禁止所述预取请求。
11.如权利要求10所述的管理方法,其特征在于所述事务处理拥挤事件在排队的请求的数量超过预定阈值时出现。
12.如权利要求10所述的管理方法,其特征在于所述事务处理拥挤事件在存储所述排队的请求的队列变满时出现。
13.如权利要求10所述的管理方法,其特征在于所述事务处理拥挤事件在发送事务处理的测量的等待时间超过预定阈值时出现。
14.一种在代理者中的用于外部事务处理的多模式管理方法,它包括对多个核心读取请求的数据进行排队,对于各个核心读取请求,存储与相应的所述核心读取请求有关的盲预取事务处理的数据,对与核心读取请求的模式有关的预取请求的数据进行排队,在第一模式下,当事务处理拥挤事件出现时,禁止所述盲预取事务处理,在第二模式下,当事务处理拥挤事件出现时,禁止所述预取请求。
15.如权利要求14所述的管理方法,其特征在于所述事务处理拥挤事件在排队的请求的数量超过预定阈值时出现。
16.如权利要求14所述的管理方法,其特征在于所述事务处理拥挤事件在存储所述排队的请求的队列变满时出现。
17.如权利要求14所述的管理方法,其特征在于所述事务处理拥挤事件在发送事务处理的测量的等待时间超过预定阈值时出现。
18.一种事务处理队列,它包括控制器,多个队列寄存器,每一个都具有地址字段和与一对有关所述地址的事务处理有关的状态字段,其中,所述控制器响应拥挤事件而修改寄存器中所述状态字段之一,以使相应的所述事务处理无效。
19.如权利要求18所述的事务处理队列,其特征在于所述事务处理队列存储核心读取请求、盲预取请求和模式预取请求,以及所述无效的事务处理是盲预取请求。
20.如权利要求19所述的事务处理队列,其特征在于当没有有效盲预取请求时,所述控制器使模式预取请求无效。
21.代理者的一种总线排序单元,它包括仲裁器,内部高速缓存,它被耦合到所述仲裁器,事务处理队列,它被耦合到所述仲裁器,并存储要由所述代理者执行的外部事务处理、从核心读取请求组选择的事务处理、盲预取请求和模式预取请求的数据,以及外部总线控制器,它被耦合到所述事务处理队列,其中所述事务处理队列响应所述总线排序单元中的拥挤事件而使选择的事务处理无效。
22.如权利要求21所述的总线排序单元,其特征在于所述选择的事务处理是盲预取请求。
23.如权利要求21所述的总线排序单元,其特征在于当所述事务处理队列中没有盲预取请求时,所述选择的事务处理是模式预取请求。
24.一种用于外部事务处理的拥挤管理方法,所述外部事务处理成对地存储在所述事务处理队列中,并从核心读取请求-盲预取请求对和模式预取请求对的集合中获得,所述方法包括在事务处理队列接收新请求,确定所述事务处理队列是否具有空间存储所述新请求,如果没有,则从所述事务处理队列中删除一对模式预取请求,以及在所述事务处理队列中存储所述新请求。
25.如权利要求24所述的拥挤管理方法,其特征在于还包括使盲预取请求无效。
26.如权利要求23所述的拥挤管理方法,其特征在于还包括在所述对中的第二模式预取请求已经被发送时使第一模式预取请求无效。
全文摘要
一种多模式事务处理队列可以按照缺省优先级方案操作。当检测到拥挤事件时,事务处理队列可以采用第二优先级方案。
文档编号G06F13/362GK1503947SQ00817791
公开日2004年6月9日 申请日期2000年11月28日 优先权日1999年12月28日
发明者D·L·希尔, D·T·巴钱德, C·B·普鲁德维, D·T·马尔, D L 希尔, 巴钱德, 普鲁德维, 马尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1