用于组合输入交叉点缓存交换结构的旋转轮训调度方法

文档序号:7817241阅读:246来源:国知局
用于组合输入交叉点缓存交换结构的旋转轮训调度方法
【专利摘要】本发明公开了用于组合输入交叉点缓存交换结构的旋转轮训调度方法,属于互联网信息传输的【技术领域】。调度方法中,输入端口设置有轮询调度虚拟输出组中各虚拟输出队列的优先级指针,数据包从输入端口进入后缓存在虚拟输出队列,虚拟输出队列向交叉点缓存发出请求信息,交叉点缓存根据各交叉点的空满状态反馈允许信息给虚拟输出队列,虚拟输出队列根据接受的允许信息按照Round-Robin顺序发送数据包至对应的交叉点,更新虚拟输出队列队头信息,更新优先级指针,进行下一周期轮询。提出了一种流程简单且适用于单级交换结构的旋转调度算法,计算复杂度不大,变换速度快,克服了之前算法因指针同步和未考虑交叉点缓存状态而使得传输延时较大的缺点。
【专利说明】用于组合输入交叉点缓存交换结构的旋转轮训调度方法

【技术领域】
[0001]本发明公开了用于组合输入交叉点缓存交换结构的旋转轮训调度方法,属于互联网信息传输的【技术领域】。

【背景技术】
[0002]计算机网络规模的日益扩大,主要体现在两个方面,一个是互联网用户的迅猛增长,使得交换网络端口的密度增大,另一个是多媒体业务的增多,使得交换结构输入输出端口的线速(line Speed)不断提高。另外,片上多处理器CMP(Chip Mult1-processor)逐渐成为主流,使得各个处理器核以及处理器与其它模块(如cache)之间的互连(即片上网络)及其通信速率成为了影响处理器性能的重要因素。以上问题的解决都聚焦于交换系统的容量不断扩大,交换延时的不断改善。
[0003]交叉开关(Crossbar)交换结构由于其内部无阻塞特性,即在同一时刻,允许多个无冲突的输入输出口之间并行传输数据,使其逐渐成为了现代交换机核心的首选结构。尤其是近年来随着硬件工艺水平的不断发展,使得在交换结构的各个交叉点处设置少量缓存成为了可能。为了进一步提高系统的传输性能,组合输入交叉点缓存交换结构得到了普遍的应用。它允许数据包在传输过程中先暂存在交叉点的缓存队列中,再经过输出调度发送到输出端。这种在输入端和输出端分别调度的结构大大降低了所采用的调度算法的复杂度。但若要达到较高的时延性能,还需要输入调度和输出调度的完美配合。现有的组合输入输出调度算法由于存在指针同步(pointer synchronizat1n, PS)现象,使得输出端口无法做到尽职服务(working-conserving),从而增加了数据包的传输延时。
[0004]对该问题的详细介绍如下:
(I)组合输入交叉点缓存交换结构(V0Q_CQ)
组合输入交叉点缓存(Combined Virtual output queue and Crosspoint queue,简称V0Q_CQ)是在交叉开关(Crossbar)交换结构的输入端和交叉点处分别设置缓存,如图1所示。输入端的缓存采用虚拟输出队列(Virtual Output Queue,简称V0Q),队列的个数等于输出端口的数目。交叉点缓存CQ有2个信元空间。
[0005]输入端口有数据包输入时,根据其所要到达的目的端口的地址信息,将数据包缓存在对应的虚拟输出队列中,输入调度根据已定的调度顺序将数据包发送到交叉点缓存,输出调度结合当前交叉点缓存的状态及已定的调度法则将数据包发送到输出端口。这种分布式的调度可以不用集中考虑输入输出端口的当前状态,大大降低了调度算法的复杂性。此外,任意交叉点处CQ (i, j)缓存容量设置为两个信元空间的策略也保证了传输过程的流水线操作。
[0006](2)现有算法的同步现象
目前,基于Crossbar交换结构的调度算法已经取得了很多的研究成果。它们大体上可以分为无队列状态信息的调度算法:如Random,RR (Round-Robin)等,和基于队列状态信息的调度算法:如 LQF (longest queue first) , OCF (oldest cell first)等。
[0007]适用于V0Q_CQ结构的算法可以是上述调度算法的任意组合,如RR_RR,0CF_RR, LQF_0CF等。在考虑组合调度算法对系统性能的影响时,由于输入调度起到关键的作用,所以我们重点分析一下输入调度。
[0008]RR算法相对公平且易于实现,但基于Round-Robin规则的下一个队列所对应的CQ可能处于满状态,而且若对应的输出端口比较繁忙,最坏情况下,RR算法需要等待N个时槽(N为输入端口的数目)数据包才能被从VOQ发送往CQ,进而等待被转发。即使其它的CQ处于空状态也无法完成数据的转发,从而造成其它的输出端口不能做到尽职服务。
[0009]LQF算法与RR算法相比,虽然性能有所提升,但依然具有上述算法的缺点,另外其实现复杂度较高,最坏情况下也需要等待N个时槽,即LQF计算复杂度为O (N)。
[0010]同样,OCF算法也有与上述两个算法同样的缺点。
[0011]目前已有的Crossbar调度算法方面的资料,给出了一种基于反馈机制的调度算法,但其是适用于两级交换结构的调度算法,而且没有考虑到多个输入端口时的去同步机制。


【发明内容】

[0012]本发明所要解决的技术问题是针对上述【背景技术】的不足,提供了用于组合输入交叉点缓存交换结构的旋转轮训调度方法。
[0013]本发明为实现上述发明目的采用如下技术方案:
用于组合输入交叉点缓存交换结构的旋转轮训调度方法,包括如下步骤:
输入端口设置有轮询调度虚拟输出组中各虚拟输出队列的优先级指针,
数据包从输入端口进入后缓存在虚拟输出队列,虚拟输出队列向交叉点缓存发出请求信息,
交叉点缓存根据各交叉点的空满状态反馈允许信息给虚拟输出队列,
虚拟输出队列根据接受的允许信息按照Round-Robin顺序发送数据包至对应的交叉点,更新虚拟输出队列队头信息,
更新优先级指针,进行下一周期轮询。
[0014]作为所述用于组合输入交叉点缓存交换结构的旋转轮训调度方法的进一步优化方案,在第一周期的轮询调度中,初始化优先级指针指向各虚拟输出队列的不同位。
[0015]作为所述用于组合输入交叉点缓存交换结构的旋转轮训调度方法的进一步优化方案,所述交叉点缓存根据各交叉点的空满状态反馈允许信息给虚拟输出队列的步骤中,交叉点缓存反馈未满交叉点能够缓存数据的允许信息给对应的虚拟输出队列,有数据包待发送的虚拟输出队列在收到所述允许信息时更新其队头信息为待发送。
[0016]作为所述用于组合输入交叉点缓存交换结构的旋转轮训调度方法的进一步优化方案,所述虚拟输出队列根据接受的允许信息按照Round-Robin顺序发送数据包至对应交叉点的步骤中,对于有数据包等待发送的虚拟输出队列:
在交叉点缓存采样完正在接收转存的数据包时,更新所述有数据包待发送虚拟输出队列的队头信息为待发送,
在交叉点缓存未采样完正在接收的数据包时,结合交叉点缓存状态信息完成采样,仅在所述有数据包待发送虚拟输出队列的优先级最高时将数据包转存到对应的交叉点缓存。
[0017]作为所述用于组合输入交叉点缓存交换结构的旋转轮训调度方法的进一步优化方案,所述更新有数据包待发送虚拟输出队列的队头信息为待发送的方法为由虚拟输出队列首位标记与交叉点缓存标记按位与运算得到,所述虚拟输出队列首位标记表示虚拟输出队列接收数据包状态,所述交叉点缓存标记表示交叉点缓存空满状态。
[0018]本发明采用上述技术方案,具有以下有益效果:提出了一种适用于单级交换结构的旋转调度算法,算法流程简单,计算复杂度不大;变换速度快,通过对一些信息的记录省去了很多不必要的操作;消耗的资源比较合理,克服了之前算法因指针同步和未考虑交叉点缓存状态而使得传输延时较大的缺点。

【专利附图】

【附图说明】
[0019]图1为适用于本发明的一种组合输入交叉点缓存交换结构。
[0020]图2为数据通道的结构。
[0021]图3为交叉点缓存队列的信息。
[0022]图4为本发明算法的流程图。
[0023]图5为实施例的具体步骤示意图。

【具体实施方式】
[0024]下面结合附图对发明的技术方案进行详细说明。
[0025]适用于本发明的一种组合输入交叉点缓存交换结构(V0Q_CQ),如图1所示,包含输入端口 O至输入端口 N,输出端口 O至输出端口 M,每个输入端口都对应有虚拟输出组,输入端口 O的虚拟输出组V0Q_0包括V0Q[0,0]至V0Q[0,M]这M个虚拟输出队列,输入端口 N的虚拟输出组V0Q_N包括V0Q[N,0]至 V0Q[N,M]这M个虚拟输出队列,交叉点缓存为N*M结构的矩阵,CQ (i,j)表述第i个输入端口发往第j个输出端口时转存数据的缓存结构。数据包从输入端口进入交换结构,先缓存在虚拟输出队列中,经过输入调度,从虚拟输出队列转存到交叉点缓存中,在经过输出调度,从交叉点缓存发送到输出端口。
[0026]图2示出本发明提供的一种数据包传输通道i的结构(假设交换结构有4输入端口和4输出端口)。数据包从输入端口进入到交换结构,根据其要发往的输出端口的地址信息,缓存在对应的虚拟输出队列中,图中虚拟输出组V0Q_i共有4个虚拟输出队列,存放发往输出端口 O数据包的为第O个队列,存放发往输出端口 I数据包的为第I个队列,存放发往输出端口 2数据包的为第2个队列,存放发往输出端口 3数据包的为第3个队列。虚拟输出组V0Q_i的队首为I的队列表示有数据包要发往交叉点缓存。输入调度算法根据当前交叉点缓存的状态决定是否将数据发往交叉点缓存。数据包传输通道中交叉点缓存为I表示当前交叉点缓存处于非满的状态,可以接受来自虚拟输出组的数据包。
[0027]图3示出本发明提供的调度算法用于输入端时,数据包将从交叉点缓存发送到输出端口的交叉点缓存的状态,其中每个输出端口 j对应的一列交叉点缓存称为交叉点缓存列j,交叉点缓存状态为I表示此交叉点缓存有数据包要发往输出端口,为O表示没有数据包要发往输出端口。
[0028]图4示出本发明提供的调度算法用于组合输入交叉点缓存交换结构输入端的调度流程。
[0029]1、输入端口设置有轮询调度虚拟输出组中各虚拟输出队列的优先级指针,初始化优先级指针指向各虚拟输出队列的不同位,例如:输出端口 O的优先级指针指向虚拟输出队列的第O位,输入端口 N的优先级指针指向虚拟输出队列的第N-1位;
2、数据包从输入端口进入后缓存在虚拟输出队列,虚拟输出队列向交叉点缓存发出请求信息;
3、交叉点缓存根据各交叉点的空满状态反馈允许信息给虚拟输出队列:交叉点缓存反馈未满交叉点能够缓存数据的允许信息给对应的虚拟输出队列(交叉点满时缓存标记为0,否则为1),有数据包待发送的虚拟输出队列在收到所述允许信息时更新其队头信息为待发送;
4、虚拟输出队列根据接受的允许信息按照Round-Robin顺序发送数据包至对应的交叉点,更新虚拟输出队列队头信息,对于有数据包等待发送的虚拟输出队列,虚拟输出队列为非空队列时表示有数据包要发送,标记首位为1,否则,标记为O:
在交叉点缓存采样完正在接收转存的数据包时,与运算虚拟输出队列首位标记、交叉点缓存标记来更新所述有数据包待发送虚拟输出队列的队头信息为待发送,
在交叉点缓存未采样完正在接收的数据包时,结合交叉点缓存状态信息完成采样,仅在所述有数据包待发送虚拟输出队列的优先级最高时将数据包转存到对应的交叉点缓存;
5、更新优先级指针,进行下一周期轮询。
[0030]当输入端口 i对应的虚拟输出组i有数据包要发往输出端口时,结合交叉点缓存的状态进行查询,查询完成后将满足条件的数据包发往对应的交叉点缓存。若有数据包在当前周期没有被查询到,则需等待下次查询。只有当一次查询结果的所有满足条件的数据包都被发往交叉点缓存后,才能进行下次查询。
[0031]本发明针对组合输入交叉点缓存交换结构的旋转轮训调度方法,通过在不同输入端口设立初始位置不同的优先级指针解决了指针同步问题,在转发数据包时同时考虑输入端缓存和交叉缓存的状态,对满足转发条件的队列进行轮询调度,在上次查询的满足条件的所有数据包被全部发送到交叉点缓存后再进行下一周期的查询,提高了算法的效率。
[0032]图5示出本发明提供的一种适用于组合输入交叉点缓存交换结构的调度算法在输入端口 i的具体调度过程及调度结果(假设交换结构有4个输出端口):
在第一个时槽初期,调度算法根据当前虚拟输出组和交叉点缓存的状态进行查询,即将虚拟输出组的队首状态信息与交叉点缓存的状态信息进行按位与,并将查询结果保存在sam_val寄存器中。调度算法按照当前优先级指针的位置将拥有最高优先级队列的数据包发送到对应的交叉点缓存。
[0033]在第二个时槽,可能还会有数据包从输入端口进入到虚拟输出队列,也有数据包从交叉点缓存发送到输出端口,因此虚拟输出队列和交叉点缓存的状态信息会发生改变。但是因为上次查询结果的满足条件的数据包还没被全部发送到交叉点缓存,状态信息的改变对数据包从虚拟输出队列到交叉点缓存的调度顺序无影响。
[0034]在第三个时槽初期,因为上次查询的结果满足条件的数据包已经被全部调度完毕,故需要对满足条件的数据包重新查询。因为每次调度完成后表示轮询起始位置的优先级指针都会被更新,所以此次调度的顺序会与上次不同,并且各个输入端口对应的调度顺序也不相同。对于这两次查询结果而言,输入端口 O对应的传输顺序为V0Q[2,3],VOQ[3, 3], V0Q[1,3],VOQ[2, 3], VOQ[O, 3];输入端口 I 对应的传输顺序为 V0Q[2,3],VOQ[3, 3], VOQ[2, 3], VOQ[O, 3], V0Q[1,3];输入端口 2 对应的传输顺序为 V0Q[2,3],VOQ[3, 3], VOQ[O, 3], V0Q[1,3],VOQ[2, 3];输入端口 3 对应的传输顺序为 V0Q[3,3],VOQ [2, 3],VOQ [O, 3],VOQ [1,3],VOQ [2,3];采用这种策略更新优先级指针可以有效缓解指针同步现象。
[0035]参考前述本发明的描述,本领域技术人员可以知晓本发明具有以下优点:
本发明提供了一种用于组合输入交叉点缓存交换结构的调度算法,该方法可应用于输入端的调度,在用硬件实现周期查询旋转轮训调度算法时,使用这个方法有以下优点:算法流程简单,计算复杂度不大;变换速度快,通过对一些信息的记录省去了很多不必要的操作;消耗的资源比较合理,克服了之前算法因指针同步和未考虑交叉点缓存状态而使得传输延时较大的缺点。
[0036]本发明提供了一种用于组合输入交叉点缓存交换结构的调度算法,通过适当的改进和结构变化,该调度算法也可用于其它相同或相似交换结构的应用中。
[0037]尽管本发明此处具体化了方法的描述,然而本发明不限制于所示出的细节,因为在不偏离本发明的精神以及在权利要求的范围和等同范围内,可以作出多种改进和结构变化。因此,宽范围地并且如权利要求中所阐明的在某种意义上与本发明的范围一致地解释附加的权利要求是适当的。
【权利要求】
1.用于组合输入交叉点缓存交换结构的旋转轮训调度方法,其特征在于,包括如下步骤: 输入端口设置有轮询调度虚拟输出组中各虚拟输出队列的优先级指针, 数据包从输入端口进入后缓存在虚拟输出队列,虚拟输出队列向交叉点缓存发出请求信息, 交叉点缓存根据各交叉点的空满状态反馈允许信息给虚拟输出队列, 虚拟输出队列根据接受的允许信息按照Round-Robin顺序发送数据包至对应的交叉点,更新虚拟输出队列队头信息, 更新优先级指针,进行下一周期轮询。
2.根据权利要求1所述的用于组合输入交叉点缓存交换结构的旋转轮训调度方法,其特征在于,在第一周期的轮询调度中,初始化优先级指针指向各虚拟输出队列的不同位。
3.根据权利要求1或2所述的用于组合输入交叉点缓存交换结构的旋转轮训调度方法,其特征在于,所述交叉点缓存根据各交叉点的空满状态反馈允许信息给虚拟输出队列的步骤中,交叉点缓存反馈未满交叉点能够缓存数据的允许信息给对应的虚拟输出队列,有数据包待发送的虚拟输出队列在收到所述允许信息时更新其队头信息为待发送。
4.根据权利要求3所述的用于组合输入交叉点缓存交换结构的旋转轮训调度方法,其特征在于:所述虚拟输出队列根据接受的允许信息按照Round-Robin顺序发送数据包至对应交叉点的步骤中,对于有数据包等待发送的虚拟输出队列: 在交叉点缓存采样完正在接收转存的数据包时,更新所述有数据包待发送虚拟输出队列的队头信息为待发送, 在交叉点缓存未采样完正在接收的数据包时,结合交叉点缓存状态信息完成采样,仅在所述有数据包待发送虚拟输出队列的优先级最高时将数据包转存到对应的交叉点缓存。
5.根据权利要求4所述的用于组合输入交叉点缓存交换结构的旋转轮训调度方法,其特征在于:所述更新有数据包待发送虚拟输出队列的队头信息为待发送的方法为由虚拟输出队列首位标记与交叉点缓存标记按位与运算得到,所述虚拟输出队列首位标记表示虚拟输出队列接收数据包状态,所述交叉点缓存标记表示交叉点缓存空满状态。
【文档编号】H04L12/865GK104333516SQ201410558886
【公开日】2015年2月4日 申请日期:2014年10月20日 优先权日:2014年10月20日
【发明者】李冰, 程慧敏, 刘勇, 赵霞, 董乾, 王刚, 陈德斌, 陆清茹, 许立峰 申请人:东南大学成贤学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1