Crossbar结构的排队策略
目录
一、概述
二、排队策略
三、输入排队结构(IQ)
3.1 结构特点
3.2 改进方案
四、输出排队结构(OQ)
五、输入输出联合排队结构(CIOQ)
六、输入交叉节点联合排队结构(CICQ)
一、概述
Crossbar是一种全连接的交换结构,由 M×N 个交叉点(Crosspoint) 组成,可实现任意输入到任意输出的直接互联,常用于交换机、NoC(片上网络)和FPGA互连。
二、排队策略
当你在晚高峰刷视频卡顿,或是在线游戏突然延迟飙红时,背后隐藏的其实是交换机内部的"交通堵塞"问题。数据包像车辆一样涌入网络设备,但资源有限——如何调度它们高效通行,而不至于堆积成"数据堵车"?
这个问题的核心在于排队策略的选择。不同的策略决定了数据包在哪里等待、如何竞争带宽,并最终影响网络的速度、延迟和成本。就像现实中的交通管理:
- 红绿灯轮流放行 → 简单但会出现"队头阻塞",一个慢车卡住整条车道
- 给每个出口建专用停车场 → 零冲突但成本爆炸,如同在城市每个路口盖巨型车库
- 微型立交桥网络 → 极致灵活,但设计和维护复杂度飙升
- 混合潮汐车道 → 折中方案,用少量缓冲换取性价比
就像现实中堵车有不同的疏导方案(比如红绿灯、潮汐车道、高架分流),网络世界也演化出四类经典排队策略:
- 输入端排队(IQ) —— 所有车挤在收费站入口,先到先走,但队头一辆慢全队遭殃
- 输出端排队(OQ) —— 给每个出口配专属停车位,零冲突但需要海量硬件资源
- 交叉点队列(CICQ) —— 每个路口设微型立交桥,极致灵活却结构复杂
- 混合排队(CIOQ) —— 在出入口都设缓冲带,兼顾性价比的万金油方案
想象你走进一个巨型快递分拣站:
- 输入排队(IQ):所有包裹堵在入口通道(类似早晚高峰的地铁进站口),虽然节省了站内空间,但容易卡在队头。
- 输出排队(OQ):包裹直接送到每个收件人的专属货架(像VIP通道),但需要超多工作人员和货架空间。
- 联合排队(CIOQ):入口和收件货架都设临时存放点(类似智能快递柜),平衡了效率和成本。
- 交叉点排队(CICQ):每个传送带交叉口都有迷你货篮(像蜂窝快递柜),最智能但设备最复杂。
关键差异一句话:包裹在哪排队?(入口?出口?还是交叉路口?)不同的选择就像在"空间成本"和"分发效率"之间拔河!
三、输入排队结构(IQ)
输入排队(IQ)在Crossbar交换网络前设置输入缓存,数据分组先暂存于输入端口,再经调度算法出队,通过Crossbar传输至无缓存的输出端口。其关键特征如下:
3.1 结构特点
由于Crossbar交换网络每条输出通道所连接的输出端口的输出速率是有限的,且输出端口处和Crossbar节点不设置排队缓存,需要在输出端口空闲时才能让各输入缓存的队列调度数据分组出队,因此对于Crossbar网络的单条通道来说,通道传输速率只需与输出端口的输出速率相同即可。
此时该结构加速比(交换结构内部速率与端口速率比值)为1,对于交换结构内部速率与缓存写入读取速率没有太高要求,可扩展性较好。同时,在输入排队(IQ)交换结构中,仲裁器是必不可少的核心组件,其作用是为竞争同一输出端口的数据分组分配传输权限。它的主要任务为:当多个输入端口的队列(如VOQ)都指向同一个输出端口时(例如多个VOQ_i),必须通过仲裁机制选择哪一个输入端口有权发送数据,以避免数据冲突。
3.2 改进方案
输入排队结构在输入缓存只有单个先入先出(FIFO:First‑In‑First‑Out)队列时,会存在排头阻塞(Head of Line,HOL)阻塞问题,当端口数较多时,会严重降低交换容量,比如所有输出端口均匀分布的Bernoulli业务下,该结构只有58 .6%的吞吐率。
对于该问题,可以通过虚拟输出队列(Virtual Output Queue,VOQ)技术在输入缓存处按照输出端口设置队列,以区别不同去向的数据分组。不过因为要区分多个队列,类似于共享缓存结构,为了保障队列之间的公平性,也自然要为每个队列分配一定的缓存,如果端口数提升导致划分队列数增多,那么每个输入端口处对于缓存资源的要求也会变高。
四、输出排队结构(OQ)
输出排队(Output Queuing, OQ)是交换结构中的另一种典型设计,其核心思想是将排队缓存移至输出端口,而输入端口和Crossbar内部无缓存。该结构虽然直观且性能优异,但面临严苛的硬件需求。
输出排队结构(OQ)在输出端口处设置排队缓存,输入的数据分组先经过Crossbar交换网络交换到对应输出端口,然后再进入缓存排队。由于该结构在输入处和Crossbar网络内部均不设置排队缓存,当所有N个输入端口同时输入去向相同输出端口的分组时,为保证此时不出现分组丢失,输出排队处的接收带宽需要达到输入端口的至少N倍线速(输入端口速率相同),即加速比需要达到N。可以看出,本质上这种结构还是共享缓存,只不过是将单通道的共享缓存拆成了多条通道、分布式的共享缓存交换,自然也就继承了共享缓存的缺点。
五、输入输出联合排队结构(CIOQ)
输入输出联合排队结构(CIOQ)通过同时在输入端口和输出端口设置缓存,并采用具有有限加速比(1 < s < N)的Crossbar网络,有效平衡了输入排队(IQ)和输出排队(OQ)的优缺点。
输入端的虚拟输出队列(VOQ)解决了HOL阻塞问题,同时输出端的缓存以较低的加速比(如s=2)吸收突发流量,避免了OQ的N倍加速比需求,在保证接近100%吞吐率的同时显著降低了硬件实现复杂度。然而,CIOQ的调度算法需要同时处理输入和输出端口的队列状态,使得算法复杂度较高,尤其在大规模系统中,集中式或分布式调度可能带来较高的时延与资源开销,对FPGA等可编程硬件的实现提出了挑战。尽管如此,CIOQ仍是当前高性能交换架构的主流选择,尤其在数据中心和核心路由器中,通过优化调度策略(如iSLIP或贪心匹配)和硬件加速手段,能够较好地权衡性能、成本与可扩展性。
六、输入交叉节点联合排队结构(CICQ)
输入交叉节点联合排队结构(CICQ)是输入排队(IQ)和交叉节点带缓存排队(Crosspoint Queued,CQ)的结合,与输入排队的区别主要是在交叉节点上设置了用于排队的一定数量缓存。该结构在交叉开关矩阵的每个交汇点部署独立缓存,使得输入和输出调度完全解耦,输入端可采用简单的轮询调度,而输出端则可选择更高效的匹配算法,这种分布式架构尤其适合多片FPGA协同实现。随着端口数增加,输入队列和交叉点缓存的总容量与端口数N的平方成正比,带来较高的硬件资源开销,但得益于输入/输出调度的解耦设计,系统整体时延和吞吐率性能在大规模交换场景中仍具有优势,成为可扩展交换架构的重要实现方式之一。