CICQ交换结构的调度算法分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CICQ交换结构的调度算法分析
郑若鹢
【摘要】分析了影响Crossbar性能的三种阻塞及解决途径,研究了CICQ交换结
构的4种调度算法:RR-RR算法、LQF-RR算法、OCF-OCF算法、MCBF算法,探
讨了它们的优点及不足.
【期刊名称】《电脑与信息技术》
【年(卷),期】2010(018)006
【总页数】4页(P20-22,63)
【关键词】CICQ;阻塞;调度算法
【作者】郑若鹢
【作者单位】福州职业技术学院计算机系,福建福州350108
【正文语种】中文
【中图分类】TP312
交换内核作为核心路由器的重要部件,其性能直接关系到路由器的整体性能,通过高性能的调度策略,保证低延迟、高呑吐率、低丢包率,保持无阻塞交换,是新一代核心路由设备的研究热点。

现代交换内核借鉴了ATM交换机中的空分交换技术,采用了Crossbar交换矩阵,在这种交叉矩阵结构的交换结构中,当多个输入端口与输出端口配对并接通交叉点的晶体管后,匹配的端口之间可同时并行通信,实现以最大速率传输数据,从而极大地提高了整个系统的吞吐量。

然而在实际传输调度中,当一个信元到达时,对来
不及交换的信元都需要缓存,根据缓冲队列位于输入端还是输出端可以把交换结构分为输入排队、输出排队、组合输入输出等体系的交换结构,不同的排列方式就会产生各种各样的阻塞。

Crossbar交换开关本身内部是无阻塞的,然而由于调度策略的原因,有三种类型
的阻塞却限制着其性能,分别是:线头阻塞(head-of-line blocking)、输入阻
塞(input blocking)、输出阻塞(output blocking)。

(1)线头阻塞
当前高速交换结构大部分采用了输入排队的队列组织形式来处理信元。

但采用FIFO(first-in-first-out)排队的输入排队结构时,在每个时隙只有每个队列头的信元才有机会通过交换开关送到输出端口,当队头信元没有被调度器选中并传送时,同队列的其他信元就不能被转发,造成线头阻塞。

正是这个原因,使其吞吐率只有58.6%。

为了解决输入队列组织形式中的“线头阻塞”问题,提高吞吐率,文献“High Performance Multiqueue Buffers for VLSI Communication Switches”[1]中
提出采用虚拟输出队列(Virtual Output Queueing,VOQ)来替代单一的FIFO
队列。

所谓虚拟输出队列是指在每一个输入端口都根据输出端口的数量为每一个输出端口独立组建一个的FIFO队列。

近年来,业界已相当深入地研究了虚拟输出队列组织形式下的调度算法,比较典型的算法如SLIP,PIM,RRM等,它们的时间复
杂度为O(N2),效率尚高,但这些算法只有在均匀分布的流量下才能达到100%的吞吐量,在非均匀的流量下性能无法令人满意。

而MWM和MSM算法在均匀
的流量和非均匀的流量下都可以达到100%的吞吐量,然而算法相对较为复杂,时
间复杂度分别为O(N2log3N)和O(N5/2),硬件难以实现,即使以最好的方式实现也会由于自身的效率问题而影响性能。

(2)输入阻塞
交换结构采用VOQ队列组织很好地解决“队头阻塞”的问题,但是在同一个输入端经常有两个以上的虚拟输出队列的队头信元等待输入,即使它们是要发送到不同输出端,这时也只能有一个信元被送达输出端,这就是输入阻塞。

输入阻塞不会影响Crossbar的流量,只会增大被阻塞的信元的延延。

解决输入阻塞的一种办法是在队列组织中引入优先级的机制,把信元按优先级的高低放在不同的优先级的队列中,通过加权公平队列(Weighted Fair Queueing,WFQ)或其他的队列调度算法来保证服务质量。

(3)输出阻塞
当Crossbar的多个输入端同时需要和同一个输出端连接时,在一个时隙中通过匹配后只能有一个输入端口连接到该输出端口,即只有一个信元被传送到输出端口,其它的必须排队等待,这是输出阻塞的现象。

解决这个问题通常有两种办法可供选择:一个可以采用前面提到的办法,提高交换结构的工作速度,使其交换速度是线卡的N倍,在实际使用时加速比为2时,就可以避免输出阻塞。

另一个就是采用
下面要提到的带交叉点缓存的Crossbar。

对于高速的核心路由交换设备来说,既要解决上面提到的三种阻塞,又要满足目前各种业务对服务质量(QoS)提出的更高要求,由于微电子电路设计技术的进步,可以在Crossbar的每一个交点处设置一个缓冲区,于是研究人员采用了CICQ。

传统的Crossbar交换结构中在交叉点位置只设置连接开关,没有缓存的,称为无缓存Crossbar(Bufferless Crossbar)。

组合输入交叉点排队(CICQ)采用的Crossbar结构在每个交叉点设置了一个小容量的RAM,这种Crossbar称为缓存式Crossbar(Buffered Crossbar),如图1所示。

在 CICQ(combined input and crosspoint queue)交换结构的输入端同样采用虚拟输出排队结构,以消除队头阻塞。

业界在IQ、OQ、CIOQ交换结构上进行了很多算法研究,在CICQ的调度算法的
研究中,研究人员参考并利用了这些算法。

目前的各种CICQ调度算法大部分是在IQ、OQ、CIOQ交换结构调度算法的基础上发展起来的,它们大体可以分为两类:(1)无队列状态信息的调度:如RR-RR等,算法的优点是简单、硬件实现容易。

缺点是在均匀的业务流下性能良好,但在非均匀的业务流下性能无法令人满意。

(2)基于队列状态信息的调度:如 LQF-RR、OCF-OCF等,与无队列状态信息
的调度算法相比,这些算法性能比较好,但算法复杂度较高[2]。

为了便于表述各种典型算法,下面对论文中出现的符号进行统一说明:
N:交换开关的规模;
VOQij:目的端口为j,输入端口i的虚拟输出队列;
VLij:VOQij信元队列长度;
VTij:VOQij的队头信元等待的时间;
XBij:输入端口为i,输出端口为j的交叉点缓存;
XLij:XBij内部的信元队列长度;
XTij:XBij内部的队头信元等待的时间;
T:,轮转调度器指针旋转一圈的时间,即轮转周期;
EVOQij:非空且相应交叉点缓存XBij未满,有被调度可能的VOQij;
CICQ采用RR-RR调度算法,即是在输入端和输出端都采用RR轮转的调度策略。

在RR-RR的仲裁器中,每个输入端口和输出端口都设有一个轮转仲裁器,设备启动时,轮转仲裁器的指针随意设置初始值,之后每一个时隙指针都前移,指针循环移动方向是固定的,它们的轮转周期与输入端口数或输出端口数相同。

在每个时隙中,输入端口的轮转指针指向某一个V0Q,该VOQ的队头信元就被送入相应的
交叉点缓存,输出端口的轮转指针指向某一个交叉点缓存,该交叉点缓存的队头信元就输出到相应的输出端。

输入调度执行的两个步骤如下:
(1)轮转仲裁器选择指针指向的VOQ队头信元送入交叉点缓存,如指向的VOQ
队列为空或相应的交叉点缓存满,则指针沿循环方向依次前移,直到找到能被调度的EVOQij,将该VOQ的队列头信元送入交叉点缓存。

(2)如果上面步骤(1)执行成功,则轮转仲裁器的优先指针前移到所找到VOQ 队列的下一个位置。

如果执行不成功,也就是轮转仲裁器循环一圈后没有找到满足条件的EVOQ,则优先指针保持原来位置。

输出调度也是两个步骤:
(1)轮转仲裁器选择优先指针指向的交叉点缓存,将队列中的队头信元输出,如果指向的交叉点缓存为空,则指针沿循环方向依次前移,直到找到能被调度的交叉点缓存,将该交叉点缓存的信元输出。

(2)与输入调度的步骤(2)中指针移动策略相同。

与输入排队的RR算法相比,由于RR-RR算法的输入调度和输出调度是分开仲裁的,无需迭代,其仲裁时间很少。

同时轮转仲裁器只需简单的加1或减1操作,因
此在硬件实现时非常简单,在均匀业务流下性能表现很好,正是这个原因,CICQ
结构上的RR-RR调度策略近年来日益得到业界的重视[3]。

CICQ采用LQF-RR算法,是指在输入端采用LQF调度算法,输出端采用RR算法。

在输入调度时,在每一个输入端口i,输入仲裁器都选择最长的VOQij队列,如果
相应的交叉点缓存未满,则将该VOQ的队列头信元送入交叉点缓存。

在输出调度过程中,输出调度器同样根据RR调度算法为每一个输出端口j选择一个非空的XBij,将交叉点缓存队列中的队头信元输出。

JAVIDI的论文[4]中利用流体模型证明LQF_RR调度算法具有良好的性能。

在交换结构能够接受流量下,且一对输入输出端口间的业务流量小于1/N,LQF_RR算法
不需要加速就可以保证100%吞吐率。

CICQ采用OCF-OCF算法,是指在输入端和输出端均采用OCF调度算法[5]。


算法的判断依据是信元在队列中等待时间,对等待最久的信元优先进行调度。

输入调度:对于输入端口i(1≤i≤N),仲裁器选择非空的VOQij且相应的各交
叉点缓存中队列最短的,将该虚拟队列队头信元输入到交叉点缓存中,如果有两个或两个以上VOQij队列被选中,则选择队头信元等待时间最长的输入,即
max{VTij|1≤j≤N}。

输出调度:对于输出端口j(1≤j≤N),仲裁器选择相应交叉缓存点缓存XBij中的队列(1≤i≤N),将队头信元等待时间最长的输出,即选中max{XTij|1≤i≤N}输出。

如果有两个或两个以上被选中,则比较选择各相应输入端口号较小的交叉点输出。

2.4MCBF算法
L.Mhamdi和M.Hamdi在论文[6]中提出了MCBF算法,尽量减少调度时仲裁时
间是该算法的主要目标。

因为上面提到的各种算法在仲裁时都需要消耗一定时间,如LQF、OCF要从相应的VOQ队列中判断出各队列的最长长度或最久信元,算
法在每个时隙需要O(N)次比较。

MCBF是依据交叉点缓存中的信息作出仲裁的,且有较低的仲裁复杂度。

输入调度:对于每一个输入端i,从最高优先级的指针位置(指向j)开始,选择
一个有被调度权利的,在相应交叉点缓存中的长度最小的VOQij队列,即
min{XLij|1≤i≤N},如果有两个或两个以上长度相等,则选择靠近指针的那一个,发送这个信元队列的队头信元到交叉点缓存XBij。

同时最高优先级指针指向j+1(模N)。

输出调度:对于每一个输出端j,从最高优先级的指针位置(指向i)开始,选择
在相应的所有交叉点缓存中的长度最长的 VOQij,即max{XLij|1≤i≤N},如果有
两个或两个以上长度相等,则选择第一个,并将其队列的队头信元从输出端j输出。

同时最高优先级指针指向 i+1(模 N)。

从这输入调度和输出调度的特点可以看出,MCBF是一种无状态的调度算法,它
的仲裁无须依靠VOQ的状态。

该算法在所有的交叉点缓冲区保持装载平衡,使得所有的输出端有信元持续输出。

在现有各种CICQ调度算法中,最简单的是RR-RR调度算法,在输入和输出端分
别采用RR调度策略的信元调度算法,实现复杂度仅为O(1),但它在非均匀的
业务流性能较差,无法提供良好的吞吐量、时延和公平性能。

OCF-OCF、LQF-
RR的算法复杂度为O(logN),仲裁操作需要 O(logM)的时延(M=logLmax,Lmax在OCF-OCF中表示信元最大等待时间,在LQF-RR中表示VOQ队列的最大长度),LQF-RR调度算法的缺点是LQF本身具有较高的复杂度,当虚拟输出队列增长时,调度仲裁器的决策时间也随着越来越长,甚至达到整个仲裁时间的75%,而且会出现某个输入端被“饿死”现象,而OCF-OCF算法也有
在非均匀的业务流下性能一般的缺点。

MCBF算法的复杂度是O(logN),在不
同通信流模型下可获得较好的时延性能,然而由于该算法只考虑了交叉点缓存队列的状态而没有考虑输入端的虚拟输出队列的状态,容易引起VOQ不稳定性,因此MCBF的稳定性比OCF-OCF和LQF-RR要差,而且调度策略也不简单,因此其
扩展性也相对较差。

【相关文献】
[1]Tamir Y,Frazier G.High Performance Multiqueue Buffers for VLSI Communication Switches[J].Computer Architecture,1988:343-354.
[2]扈红超,伊鹏,郭云飞,李云峰.一种公平服务的动态轮询调度算法[J].软件学报,2008,19(7):1856-1864.
[3]吴俊,陈晴,罗军舟.时隙间迭代的输入队列交换机Round-Robin调度算法[J].软件学报,2005,16(3):375-383.
[4]Javidi T,Magill R,Hrabik T.A High-Throughput SchedulingAlgorithm for a Buffered Crossbar Switch Fabric[C].IEEE ICC’01,Helsinki,Finland,1581-1587.
[5]NabeshimaM.Performanceevaluationofacombinedinput- andcrosspointqueued
switch[ switch[J].IEICE Transactions on Communications,2000,E83-B,737-741.
[6]Mhamdi L,Hamdi M.MCBF:A high-performance scheduling algorithm for buffered crossbar switches[J].IEEE CommunicationsLetters,2003,7(9):451-453.。

相关文档
最新文档