Crossbar结构的排队策略

目录

一、概述

 二、排队策略

三、输入排队结构(IQ)

3.1 结构特点

3.2 改进方案   

四、输出排队结构(OQ) 

五、输入输出联合排队结构(CIOQ)

六、输入交叉节点联合排队结构(CICQ)


一、概述

        Crossbar是一种全连接的交换结构,由 M×N 个交叉点(Crosspoint) 组成,可实现任意输入到任意输出的直接互联,常用于交换机、NoC(片上网络)和FPGA互连。

 二、排队策略

        当你在晚高峰刷视频卡顿,或是在线游戏突然延迟飙红时,背后隐藏的其实是交换机内部的"交通堵塞"问题。数据包像车辆一样涌入网络设备,但资源有限——如何调度它们高效通行,而不至于堆积成"数据堵车"?

        这个问题的核心在于排队策略的选择。不同的策略决定了数据包在哪里等待、如何竞争带宽,并最终影响网络的速度、延迟和成本。就像现实中的交通管理:

  • 红绿灯轮流放行 → 简单但会出现"队头阻塞",一个慢车卡住整条车道
  • 给每个出口建专用停车场 → 零冲突但成本爆炸,如同在城市每个路口盖巨型车库
  • 微型立交桥网络 → 极致灵活,但设计和维护复杂度飙升
  • 混合潮汐车道 → 折中方案,用少量缓冲换取性价比

        就像现实中堵车有不同的疏导方案(比如红绿灯、潮汐车道、高架分流),网络世界也演化出四类经典排队策略:

  1. 输入端排队(IQ) —— 所有车挤在收费站入口,先到先走,但队头一辆慢全队遭殃
  2. 输出端排队(OQ) —— 给每个出口配专属停车位,零冲突但需要海量硬件资源
  3. 交叉点队列(CICQ) —— 每个路口设微型立交桥,极致灵活却结构复杂
  4. 混合排队(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的平方成正比,带来较高的硬件资源开销,但得益于输入/输出调度的解耦设计,系统整体时延和吞吐率性能在大规模交换场景中仍具有优势,成为可扩展交换架构的重要实现方式之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87305.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

状态模式 - Flutter中的状态变身术,让对象随“状态“自由切换行为!

订单状态流转/播放器控制/游戏角色行为…一个模式搞定所有状态驱动型逻辑&#xff01; 经典场景&#xff1a;订单状态管理 假设你在开发一个外卖App&#xff0c;订单有以下状态&#xff1a; 等待接单已接单配送中已完成已取消 每个状态下&#xff1a; 显示的UI不同可执行的…

数据库9:数据库字符编码调整与校队(排序)规则

一.常用字符编码 1.ASCII编码 用一个字节表示一个字符 2.ANSI编码 每个国家为了显示本国的语言而对ASCII码进行了拓展 用两个字节表示一个汉字&#xff0c;中国的ANSI编码是GB2312编码&#xff08;简体&#xff09;&#xff0c;日本的ANSI编码是JIS编码&#xff0c;台湾的A…

人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)

人脸活体识别4&#xff1a;Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 目录 人脸活体识别4&#xff1a;Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 1. 前言 2.人脸活体识别方法 &#xff08;1&#xff09;基于人脸动作的检测​​ &#xff08;2&…

DAY1-Linux操作系统1

文章参考【黑马程序员Python教程_600集Python从入门到精通教程&#xff08;懂中文就能学会&#xff09;】 https://www.bilibili.com/video/BV1ex411x7Em/?p40&share_sourcecopy_web&vd_source263bbee2ddeb835c3ab6d9d3c80e0f7c 一.常用命令简单介绍 使用软件 虚拟机…

第十二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - 两种权限控制方式(附前后端代码)

Vben5 系列文章目录 💻 基础篇 ✅ 第一节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 ✅ 第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入…

华为云Flexus+DeepSeek征文 | 华为云 ModelArts Studio 赋能 AI 法务:合同审查与法律文件生成系统

一、引言 在法律行业数字化转型的浪潮中&#xff0c;AI 技术正重塑法律服务的流程与效率。本文介绍如何利用华为云 ModelArts Studio 构建一套完整的 AI 法务系统&#xff0c;实现合同审查、法律文件生成、法律咨询与风险识别的智能化解决方案。 二、系统架构设计 &#xff0…

SQL的底层逻辑解析

SQL的底层逻辑涉及数据库管理系统(DBMS)如何解析、优化和执行SQL查询&#xff0c;主要包括以下几个层面&#xff1a; ​查询处理流程​ 解析器(Parser)&#xff1a;将SQL语句转换为语法树查询优化器(Optimizer)&#xff1a;基于统计信息和成本模型生成最优执行计划执行引擎(Exe…

深入剖析AI大模型:PyTorch 技术详解

今天说一说PyTorch。作为一名python程序员&#xff0c;可能对它了解起来还是很快的。在人工智能浪潮席卷全球的当下&#xff0c;深度学习作为其核心技术&#xff0c;被广泛应用于图像识别、自然语言处理、语音识别等多个领域。而在深度学习的开发框架中&#xff0c;PyTorch 凭借…

物联网架构:定义、解释和实例

物联网&#xff08;IoT&#xff09;架构是一个复杂且多维度的概念&#xff0c;构成了物联网系统的核心框架。它是勾勒物联网设备、应用程序和技术如何相互交互以实现预期功能的蓝图。物联网架构并非 “一刀切” 的模型&#xff0c;而是会根据相关物联网系统的具体需求而有所不同…

拿到一台新服务器,怎么跑AI项目

公司新采购一台AI服务器&#xff0c;花大本钱装了个A6000显卡&#xff0c;今天来记录下新服务的使用步骤。 1、查看系统。 这台服务器预装了Ubuntu20.04系统。 lsb_release -a 查看下cpu、内存情况 top 看着还行。 再看下硬盘空间 df -h 空间不算小&#xff0c;2T。 2、…

IO--进程实操

1.创建一个进程扇 #include <051head.h> int main(int argc, const char *argv[]) {pid_t pid;for(int i0;i<4;i){pidfork();if(pid-1) //父进程{ERRLOG("fork error..\n");} else if(pid0) //这是子进程{ …

模型预测控制(MPC)概览

模型预测控制&#xff08;Model Predictive Control, MPC&#xff09; 一、理论基础与发展脉络 1. 历史起源 20世纪70年代起源于工业过程控制&#xff08;如化工领域的动态矩阵控制DMC、模型算法控制MAC&#xff09;&#xff0c;由Richalet、Mehra等学者提出&#xff0c;核心…

Python初体验:从入门到实践

Python无疑是开启编程世界大门的绝佳钥匙。今天,就让我们一起踏上Python的学习之旅。 #01 编写第一个Python程序 环境搭建好之后,上节已经编写了第一个Python程序。现在就好比,我们已经准备好了厨房和食材,要开始做第一道菜了。启动Jupyter后,在Jupyter中新建一个文件,…

【数字后端】- 什么是AOI、OAI cell?它们后面数字的含义

是什么&#xff1f; 不管是在DC综合阶段&#xff0c;还是在PR阶段&#xff0c;尝尝会出现OAI、AOI组合逻辑单元的身影。因为它们可以通过巧妙的串联和并联晶体管非常高效地实现组合逻辑&#xff0c;因此在VLSI设计中非常常用。但是它们也是高pin密度单元&#xff0c;也可能会造…

MQTTServer服务器根据MQTTClient客户端已订阅的主题推送 分发消息

网络读卡器介绍&#xff1a;https://item.taobao.com/item.htm?ftt&id22173428704&spma21dvs.23580594.0.0.52de2c1bgK3bgZ 本示例使用了MQTTNet插件 C# MQTTNETServer 源码 using MQTTnet.Client.Receiving; using MQTTnet.Server; using MQTTnet; using System; u…

【seismic unix 合并两个su文件】

Seismic Unix简介 Seismic Unix&#xff08;SU&#xff09;是由科罗拉多矿业学院开发的开源地震数据处理软件包&#xff0c;基于Unix/Linux环境运行。它提供了一系列命令行工具&#xff0c;用于地震数据加载、处理、分析和可视化&#xff0c;支持SEG-Y格式和SU自定义格式。SU广…

【vmware虚拟机使用】安装vmware workstations17

安装vmware17 本章学习目标VMware虚拟机简介开始实操下载VMware workstation虚拟机安装虚拟机配置虚拟机网络 总结 本章学习目标 1.安装vmware workstation虚拟机 2.自定义配置虚拟机网络&#xff0c;避免网络冲突 VMware虚拟机简介 ​ VMware的核心是Hypervisor&#xff0…

QT6 源(147)模型视图架构里的表格窗体 QTableWidget 的范例代码举例,以及其条目 QTableWidgetItem 类型的源代码。

&#xff08;1&#xff09;先用一个简单的例子&#xff0c;学习一下本类里的成员函数的使用。生成如下图的界面&#xff0c;表格窗体与初始数据&#xff1a; 查看其 ui_widget . h 文件 &#xff0c;里面的将是最标准的表格窗体的使用代码 &#xff1a; #ifndef UI_WIDGET_H #…

URL时间戳参数深度解析:缓存破坏与前端优化的前世今生

&#x1f50d; URL时间戳参数深度解析&#xff1a;缓存破坏与前端优化的前世今生 在日常的Web开发中&#xff0c;你是否注意到很多接口URL后面都会带有一个时间戳参数&#xff1f;比如 xxx/getMsg?_1751413509056。这个看似简单的参数背后&#xff0c;却隐藏着前端缓存策略、性…

分布式锁实现方式:基于Redis的分布式锁实现(Spring Boot + Redis)

Redis实现分布式锁的原理 Redis分布式锁基于其单线程执行命令的特性&#xff0c;通过原子操作实现多节点间的互斥访问。下面从原理、实现、问题及优化四个方面详细解析&#xff1a; 1.原子性与互斥性 Redis分布式锁的核心是原子性操作&#xff1a; 获取锁&#xff1a;使用SE…