合格优先权队列调度器的制作方法

文档序号:7622357阅读:154来源:国知局
专利名称:合格优先权队列调度器的制作方法
数据通信交换机在多个输入上接收分组并且在多个输出上发送分组。有时,分组来自两个或更多指向相同输出的输入。为了最小化这样的分组之间的冲突,使用排队机制。队列临时存储某些分组,而其它分组则使用向一个输出传送排队分组所必需的带宽。
通常由一个调度器协调竞争输出带宽的队列分组释放。许多调度器倾向使用严格的优先权调度规则,也就是说,队列被分配不同的优先权等级并且允许具有相对较高优先权等级的队列在具有相对较低优先权等级的队列之前释放分组。严格的优先权调度允许时间要求相对严格的数据流动优先于时间要求相对不严格的数据流动。
尽管有普遍效力,但严格的优先权调度并非没有问题。一种不期望的效应是优先权阻塞。当从相对较低优先权队列提交分组因较高优先级队列的服务被延迟时,优先权阻塞就发生了。在等候释放时优先权阻塞最终可以导致阻塞队列中的分组被改写,这种情况被称为丢弃。丢弃不期望地干扰了被丢弃分组所涉及的数据流。
尽管在设计时假定优先权调度为某些队列提供更快的服务,但在某些情况下违背严格优先权规则可以是允许的。例如,“填充”单独一个具有接收非关键或冗余(例如,在一个未分解扩散树环路的情况下)业务的优先权等级的队列就会产生优先权阻塞。严格坚持优先权调度会使这种“填充”实际上锁住所有输出带宽,受损害的是低优先权队列。
相应地,需要一种合格,通过在通用优先权划分策略上强加合理的限制来减少阻塞的优先权调度方法。还需要有效的调度硬件来实现合格优先权调度。
本发明提供了用于一个数据排队结构的一个合格优先权调度方法和装置,其中包含多组竞争一个输出的带宽的队列。每个队列组具有至少一个队列并且被关联一个不同的优先权等级。并且,至少一个队列组内的至少一个队列是一个带宽限制队列,即具有一个不能超过的带宽约束。
根据队列调度方法,选择与当前优先权等级关联的队列组中的一个(i)有数据要输出队列(ii)具有可用带宽,即没有违背其带宽约束的队列向输出释放数据。如果有多个这样的队列,则使用循环排序确定在多个队列中选择哪个队列。开始时把当前优先权等级设置到最高优先权等级上,并且递减当前优先权等级直到选择了一个队列或已经检查了所有的优先权等级,不管首先发生什么情况。队列可以限制或不限制带宽。无限制带宽队列总具有可用的带宽,而限制带宽队列只在其有信用的情况下才会有可用带宽。周期性地为限制带宽队列分配信用并且根据释放数据的长度减少信用。根据信用来释放数据。
根据队列调度装置,一个选择器根据一个关于多个队列状态变量的函数从多个队列中选择一个队列,并且发送队列选择信息。选择器最好包含多个表示涉及不同队列的一个队列状态变量的状态的位屏蔽码,其中通过一个位与操作混合位屏蔽码以确定可以选择哪些队列向输出释放数据。选择器最好还包含一个仲裁器,用于接收确定结果,从可选择队列中选择一个单队列循环,并且向一个从选定队列释放数据的驱动器发送循环选择的结果。
参照结合附图所进行的下列详细描述可以更加理解本发明的这些和其它方面。


图1是一个具有调度特征的示例性共享输出排队结构的策略级图例;图2是一个用于共享输出排队结构和相关排队结构的最优调度装置的模块图;图3是图2的多级选择器的模块图;图4是图2的循环仲裁器的模块图;图5是图2的统计的模块图;图6是优先权带宽队列选择步骤的流程图7是限制循环仲裁的队列选择步骤的流程图;图8是获取循环仲裁的队列选择步骤的流程图。
本发明涉及一个进行调度以便从多个竞争同一输出的带宽的队列释放数据的方法和装置。在图1中,在策略级别上示出了一个示例性的,具有调度特征的共享输出排队结构。在所示的结构中,有5个竞争输出60的带宽的队列10,20,30,40,50。对队列10,20,30,40,50的数据释放进行调度,即时间多路复用以避免冲突。根据优先权等级确定队列10,20,30,40,50的特征以便向输出60释放数据,其中包含高优先权队列10,中优先权队列20,30和低优先权队列40,50。还根据带宽类型来确定队列10,20,30,40,50的特征以便向输出60释放数据。高优先权队列10是一个无限制带宽队列。中优先权队列20,30均为限制带宽队列。一个低优先权队列40是一个无限制带宽队列,而另一个低优先权队列50是一个限制带宽队列。还根据数据流类型,即单向流或全向流来确定队列10,20,30,40,50的特征。但数据流类型在数据被释放到输出60的顺序方面没有独立的含义。当然,图1图解的共享输出排队结构只是这种结构的一个例子;根据期望实现的策略,队列的数量,优先权等级和带宽类型在其它根据本发明操作的共享输出排队结构中会有所不同。
在针对一个共享输出排队结构的一个最优调度方法中,选择与当前优先权等级关联的队列组中的一个有数据要释放到输出并且具有可用带宽,即没有违背其带宽约束的队列向输出释放数据。如果有多个这样的队列,则使用循环排序确定在多个队列中选择哪个队列。如此后所述,可以对这个基本调度方法进行各种改进。不管怎样,虽然明显简单,但这个基本方法在根本上被认为带来了超越现有技术调度方法的显著进步。
把最优调度方法应用到图1的共享输出排队结构,如果无限制带宽高优先权队列10有数据要释放到输出60,则选择队列10。如果没有选择队列10,则检查限制带宽中优先权队列20,30。更具体地,如果队列20,30均有要释放到输出60的数据并且均有可用带宽,则用循环顺序从队列20,30中选择下一个队列。如果队列20,30均有要释放的数据并且队列20,30中只有一个具有可用带宽,则选择队列20,30中有可用带宽的队列。如果队列20,30中只有一个具有要释放的数据和可用带宽,则选择队列20,30中的这个队列。如果队列20,30均未被选择,则检查低优先权队列40,50。更具体地,如果队列40,50均有要释放到输出60的数据并且限制带宽低优先权队列50有可用带宽,则用循环顺序从队列40,50中选择下一个队列。如果队列40,50均有要释放的数据并且但限制带宽低优先权队列50没有可用带宽,则选择限制带宽低优先权队列队列40。如果只有队列40有数据要释放,则选择队列40。如果只有队列50有数据要释放,则在队列50有可用带宽的情况下选择队列50。如果没有选择队列40,50,则没有数据被释放到输出60。
现在参照图2,其中在部件级别上示出了一个最优共享输出调度装置和一个相关的排队结构。排队结构210包含分别在输入0至输入N 212上接收数据并且释放数据到输出214的数据队列0至数据队列N。调度器200控制从排队结构210释放数据。调度器200包含管理器220,多级选择器230,驱动器240和统计250。管理器220从统计250检索数据并且更新选择器230和统计250。选择器230包含选择屏蔽码232,优先权带宽选择器234和实现队列选择的循环仲裁器236。选择器230选择释放数据到输出214的数据队列并且向驱动器240发送队列选择信息。驱动器240接收队列选择信息,从统计250检索数据,更新统计250,并且控制从选择的队列释放数据。
现在参照图3,其中更详细地示出了选择器230。选择器230具有选择屏蔽码232,其中包含使能屏蔽码312,等待屏蔽码314,带宽屏蔽码316和优先权屏蔽码318。每个屏蔽码针对每个队列0至N在存储器单元210中均维护一个状态位。使能屏蔽码312指示在队列0至N中允许向输出214发送数据的队列。在为队列保留的位位置中的“1”表示使能,而“0”表示没有使能。等待屏蔽码314指示在队列0至N中有等待发送到输出214的数据的队列。在为队列保留的位位置中的“1”表示出现等待数据,而“0”表示没有等待数据。带宽屏蔽码316指示在队列0至N中有向输出214发送数据的带宽的队列。“1”表示带宽可用,“0”表示带宽不可用。优先权屏蔽码318集中指示队列0至N的优先权等级。针对每个优先权等级维护一个单独的优先权屏蔽码。在优先权屏蔽码中为队列保留的位位置中的“1”表示为队列分配屏蔽码所表示的优先权等级,“0”表示没有分配优先权等级。屏蔽码232可以由管理器220配置。管理器220根据从统计250检索的信息更新等待屏蔽码314和带宽屏蔽码316。
选择屏蔽码232被连接到优先权带宽选择器234。选择器234通过把选择缩减成在参与队列中进行的循环选择来实现队列选择。当允许参与选择时,使能屏蔽码312,等待屏蔽码314,带宽屏蔽码316和一个优先权屏蔽码318被一起提交到屏蔽码比较324进行位与操作。优先权计数器328确定被提交进行位与操作的一个优先权屏蔽码318,这指示多路复用器根据计数器328的当前值释放一个优先权屏蔽码318。对于各个参与选择轮次,计数器328首先选择最高优先权屏蔽码并且选择优先权递减的优先权屏蔽码,直到在当前优先权等级上指示出优胜选择使能,或者已经提交了所有的优先权屏蔽码。
屏蔽码比较324执行的位与操作的结果是一个指示在当前优先权等级上的队列被指定参与在循环仲裁器236中执行的优胜选择的屏蔽码。具体地,得到的屏蔽码在为允许释放到输出端口214,具有等待数据,有可用带宽并且处在当前优先权等级上的队列而保留的所有位上均具有“1”,并且在其它位位置上具有“0”。这样,结果屏蔽码通过“1”表示所有的参与队列,通过“0”表示所有的未参与队列。结果屏蔽码被提交到优胜选择使能326进行或操作。如果结果屏蔽码中至少一个位位置上有“1”,则或操作结果为“1”并且在当前优先权等级上使能优胜选择。否则,或操作结果为“0”,没有在当前优先权等级上使能优胜选择并且在下一个优先权等级上进行位与操作。或操作结果被当作反馈提供给计数器328以便通知计数器328是否需要一次附加的优先权屏蔽选择。可以理解,位与操作在所有优先权等级上均产生一个“空”屏蔽码,则不使能优胜选择并且不进行循环仲裁。
优先权带宽选择器234被连接到循环仲裁器236。循环仲裁器236通过在选择器234确定的参与队列进行循环选择来确定出一个优胜队列。参照图4,其中更详细地示出了循环仲裁器236。当使能优胜选择时,参与队列屏蔽码,即在选择器234中执行的位与操作产生的屏蔽码被提交到一个合格队列确定的初级选择阵列410。具体地,阵列410中的各个初级选择单元从参与队列屏蔽码接收一个位子集并且从参与队列中选择一个所代表的单合格队列。更具体地,在最后的循环仲裁中被最终选择420将其合格队列选择成优胜队列的初级选择单元将其参与队列中按循环顺序排列的下一个队列选择成合格队列。其它初级选择单元将其相应的参与队列中的第一个队列选择成合格队列。合格队列选择和来自任意初级选择单元的,不表示任何参与队列的任意“无合格”通知一起被提交给最终选择420。并且,如果在选择过程中其合格队列被选择成最后的优胜队列的初级选择单元发生回绕,即按照循环顺序从其最后的队列返回到第一个队列,则初级选择单元向最终选择420提交一个“回绕”通知。最终选择420把来自初级选择单元的合格队列选择成优胜队列,除非初级选择单元提交一个“无合格”或“回绕”通知,其中初级选择单元的合格队列被选择成最后优胜队列。如果初级单元提交一个“无合格”或“回绕”通知,则最终选择420把来自初级选择单元按循环顺序排列的下一个单元的合格队列选择成优胜队列。最终选择420在完成循环仲裁时向队列驱动器240发送优胜队列标识。优胜队列标识也被当作反馈提交到阵列410以便被初级选择单元用于后续的合格队列选择。
现在参照图2和图5,根据从选择器230接收的优胜队列标识,驱动器240查询统计250以检索出队列状态信息并且控制从优胜队列释放数据到输出214。统计250为排队结构210中的各个队列0至N保留多字段入口,其中包含一个队列标识,一个报头指针,一个报尾指针,当前深度,最大深度,当前信用值和总信用值。优胜队列标识被用来在统计250中“查找”对应的入口。预定的信用量被加到对应入口的当前信用值上。最好可以根据一个按照特定协议格式化的分组的最大长度,例如以太网分组的1518字节,来选择一个量值。驱动器240控制从优胜队列向输出214释放数据,其中从对应入口内的报头指针指示的队列位置上的数据开始,直到从优胜队列中释放出所有数据,当前信用值已经用完,或者在限制带宽队列的情况下总信用值已经用完,无论先发生哪种情况,其处理均是如此。当数据被释放时,驱动器240更新对应入口的报头指针,当前深度,总信用值和当前信用值以便反映改变的队列状态。如果所有数据已被释放,则当前信用值被“清0”,在使用限制带宽队列的情况下,在当前信用值之前用完总信用值。
管理器220查询统计250以保证选择屏蔽码232反映驱动器240做出的队列状态改变。查询入口中的当前深度值以便刷新等待屏蔽码312,并且查询入口中的总信用值以便刷新带宽屏蔽码316。管理器220还周期性地刷新为限制带宽队列保留的入口中的总信用值。
现在参照图6,其中示出了优先权带宽队列选择的流程图。参与选择被使能(610)并且最高优先权被选择成当前优先权(620)。根据队列使能,等待和带宽状态和优先权来确定当前优先权上的参与队列(630)。如果当前优先权上至少有一个参与队列(640),则使能优胜选择并且通知循环仲裁器(650)。如果没有,则下一个最高优先权被选择成当前优先权(660)。如果没有检查所有的优先权,则流程返回到步骤630;否则,流程退出(670)。
参照图7,其中针对一个代表性初级选择单元示出了在循环仲裁中进行合格队列选择的流程图。该单元接收其代表的队列的信息(710),并且检查最后的优胜队列是否单元的最后合格队列(720)。如果最后优胜队列是单元的最后合格队列,则单元选择其代表的,按照循环顺序排列的下一个(参与或未参与)队列(730)。如果最后优胜队列不是单元的最后合格队列,则单元把其代表的第一个(参与或未参与)队列选择成当前队列(740)。不管怎样,单元检查是否已经确定当前队列参与了这个选择轮次(750)。如果确定当前队列已经参与,则单元在这个选择轮次中没有合格队列并且通知最终选择器(755)。如果没有检查当前队列是否参与,则进行检查(760)。如果当前队列是一个参与队列,则当前队列是合格队列并且通知最终选择器(765)。如果当前队列不是参与队列,则进行进一步的检查以确定当前队列是否单元代表的最后队列(770)。如果当前队列是代表的最后队列,则单元回绕,通知最终选择器并且流程返回到步骤740。如果当前队列不是代表的最后队列,则流程返回到步骤730。
参照图8,其中示出了循环仲裁中的优胜队列选择的流程图。接收合格队列,“无合格”通知和“回绕”通知(810)并且其合格队列赢得最后仲裁的初级选择被选择成当前单元(820)。进行检查以确定在这个选择轮次中当前单元是否具有一个合格队列(830)。如果在这个选择轮次中当前单元具有一个合格队列,进行检查以确定当前单元是否回绕(840)。如果当前单元没有回绕,则来自当前单元的合格队列是优胜队列,通知队列驱动器和单元并且流程退出(850)。但如果当前单元没有一个合格队列或者当前单元发生回绕,则按照循环顺序排列的下一个单元被选择成当前单元(860)。如果在这个选择轮次中已经检查了新的当前单元(870),则前面的单元被还原成当前单元并且流程前进到步骤850。如果在这个选择轮次中没有检查新的当前单元,则流程返回到步骤830。
本领域的技术人员可以理解,在不偏离本发明的宗旨或必要特征的前提下可以通过其它特定形式实现本发明。因而本描述在总体上被认为是说明性的和非限制性的。本发明的范围由所附权利要求书规定,在其等人描述的含义和范围内的所有修改均被包括其中。
权利要求
1.一种针对一个排队结构的队列调度方法,该排队结构具有多个释放数据到一个输出的队列,其中包含一个由一或多个具有一个第一优先权的队列构成的队列组和一个由一或多个具有一个第二优先权的队列构成的队列组,其中第一和第二优先权是不同的,并且一个队列具有受限制带宽,该方法包括检查由一或多个具有一个第一优先权的队列构成的队列组以确定一个具有要释放的数据和可用带宽的队列;如果在第一优先权上找到一或多个具有要释放的数据和可用带宽的队列,则从一个找到的队列向输出释放数据。
2.如权利要求1所述的队列调度方法,其中还包括的步骤有如果在第一优先权上没有找到多个具有要释放的数据和可用带宽的队列,检查第二优先权上的队列组以确定一个具有要释放的数据和可用带宽的队列。
3.如权利要求1所述的队列调度方法,其中还包括的步骤有如果在第一优先权上找到多个具有要释放的数据和可用带宽的队列,选择被找到队列的循环以向输出释放数据。
4.如权利要求1所述的队列调度方法,其中还包括在释放数据到输出的队列带宽受限制的情况下减小释放数据到输出的队列的可用带宽的步骤。
5.如权利要求1所述的队列调度方法,其中还包括增加释放数据到输出的队列的信用值的步骤。
6.如权利要求5所述的队列调度方法,其中还包括根据释放数据的长度减少释放数据到输出的队列的信用值的步骤。
7.如权利要求5所述的队列调度方法,其中还包括周期性增加一个具有受限制带宽的队列的可用带宽的步骤。
8.一个队列选择器,其中包括多个屏蔽码,每个屏蔽码具有多个位,每个位表示与多个被连接到一个输出的队列中一个不同的队列的一个队列状态变量相关的状态,其中在一个位与操作中混合屏蔽码以确定在多个队列中可以被选择释放数据到输出的队列。
9.如权利要求8所述的队列选择器,其中队列状态变量包含等待。
10.如权利要求8所述的队列选择器,其中队列状态变量包含带宽可用性。
11.如权利要求8所述的队列选择器,其中队列状态变量包含优先权。
12.如权利要求8所述的队列选择器,其中还包括一个从可选择队列中选择一个释放数据到输出的队列的仲裁器。
13.如权利要求12所述的队列选择器,其中进行循环选择。
14.针对一个排队结构的调度装置,该排队结构具有多个分别在各个输入上接收数据并且向一个输出释放数据的队列,其中包括一个选择器,该选择器根据关于多个队列的状态变量从多个队列中选择一个队列,并且发送队列选择信息;一个驱动器,该驱动器接收队列选择信息并且控制选定队列的数据释放。
15.如权利要求14所述的调度装置,其中队列状态变量包含等待。
16.如权利要求14所述的调度装置,其中队列状态变量包含带宽可用性。
17.如权利要求14所述的调度装置,其中队列状态变量包含优先权。
18.如权利要求14所述的调度装置,其中还包括一个管理器,该管理器根据一或多个队列状态变量更新多个队列的状态。
全文摘要
一个用于一个数据排队结构的优先权调度方法和装置,该结构包含多个具有不同优先权并且具有竞争一个输出的带宽优先权的队列。该方法在当前优先权上选择一个有数据释放到输出并且有可用带宽释放数据到输出的队列。如果有多个这样的队列,则进行循环重新排序以便在多个队列中确定要选择的队列。该装置包含多个位屏蔽码,每个屏蔽码表示与不同队列的一个队列状态变量相关的状态,其中在一个位与操作中混合屏蔽码以确定可以被选择释放数据到输出的队列。
文档编号H04L12/56GK1322091SQ0111093
公开日2001年11月14日 申请日期2001年3月1日 优先权日2000年3月2日
发明者德鲁·伯塔格纳 申请人:阿尔卡塔尔互联网运行公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1