PCIe系统中Switch介绍


Switch


本节主要介绍Switch的内部结构。从系统软件的角度上看,每一个PCIe链路都占用一个PCI总线号,但是一条PCIe链路只能连接一个PCI设备,Switch、EP或者PCIe桥片。PCIe总线使用端到端的连接方式,一条PCIe链路只能连接一个设备。

一个PCIe链路需要挂接多个EP时,需要使用Switch进行链路扩展。一个标准Switch具有一个上游端口和多个下游端口。上游端口与RC或者其他Switch的下游端口相连,而下游端口可以与EP、PCIe-to-PCI-X/PCI桥或者下游Switch的上游端口相连。

PCIe总线规范还支持一种特殊的连接方式,即Crosslink连接方式。使用这种方式时,Switch的下游端口可以与其他Switch的下游端口直接连接,上游端口也可以其他Switch的上游端口直接连接。在PCIe总线规范中,Crosslink连接方式是可选的,并不要求PCIe设备一定支持这种连接方式。

在PCIe体系结构中,Switch的设计难度仅次于RC,Switch也是PCIe体系结构的核心所在。而从系统软件的角度上看,Switch内部由多个PCI-to-PCI桥组成,其中每一个上游和下游端口都对应一个虚拟PCI桥。在一个Switch中有多个端口,在其内部就有多少个虚拟PCI桥,就有多少个PCI桥配置空间。值得注意的是,在Switch内部还具有一条虚拟的PCI总线,用于连接各个虚拟PCI桥,系统软件在初始化Switch时,需要为这条虚拟PCI总线编号。Switch的组成结构如下图所示。

Switch需要处理PCIe总线传输过程中的QoS问题。PCIe总线的QoS要求PCIe总线区别对待优先权不同的数据报文,而且无论PCIe总线的某一个链路多么拥塞,优先级高的报文,如等时报文(Isochronous Packet)都可以获得额定的数据带宽。而且PCIe总线需要保证优先级较高的报文优先到达。PCIe总线采用虚拟多通路VC技术,并在这些数据报文设定一个TC(Traffic Class)标签,该标签由3位组成,将数据报文根据优先权分为8类,这8类数据报文可以根据需要选择不同的VC进行传递。

在PCIe总线中,每一条数据链路上最多可以支持8个独立的VC。每个VC可以设置独立的缓冲,用来接收和发送数据报文。在PCIe体系结构中,TC和VC紧密相连,TC与VC之间的关系是"多对一"。

TC可以由软件设置,系统软件可以选择某类TC由哪个VC进行传递。其中一个VC可以传递TC不相同的数据报文,而TC相同的数据报文在指定一个VC传递之后,不能再使用其他VC。在许多处理器系统中,Switch和RC仅支持一个VC,而x86处理器系统和PLX的Switch中可以支持两个VC。

下面将以一个简单的例子说明如何使用TC标签和多个VC,以保证数据传送的服务质量。我们将PCIe总线的端到端数据传递过程模拟为使用汽车将一批货物从A点运送到B点。如果我们不考虑服务质量,可以采用一辆汽车运送所有这些货物,经过多次往返就可以将所有货物从A点运到B点。但是这样做会耽误一些需要在指定时间内到达B点的货物。有些货物,如一些急救物资、EMS等其他优先级别较高的货物,必须要及时地从A点运送到B点。这些急救物资的运送应该有别于其他普通物资的运送。

为此我们首先将不同种类的货物进行分类,将急救物资定义为TC3类货物,EMS定义为TC2类货物,平信定义为TC1类货物,一般包裹定义为TC0类货物,我们最多可以提供8种TC类标签进行货物分类。

之后我们使用8辆汽车,分别是VC0~7运送这些货物,其中VC7的速度最快,而VC0的速度最慢。当发生堵车事件时,VC7优先行驶,VC0最后行驶。然后我们使用VC3运送急救物资,VC2运送EMS,VC1运送平信,VC0运送包裹,当然使用VC0同时运送平信和包裹也是可以的,但是平信或者包裹不能使用一种以上的汽车运送,如平信如果使用了VC1运输,就不能使用VC0。因为TC与VC的对应关系是"多对一"的关系。

采用这种分类运输的方法,我们可以做到在A点到B点带宽有限的情况下,仍然可以保证急救物资和EMS可以及时到达B点,从而提高了服务质量。

PCIe总线除了解决数据传送的QoS问题之外,还进一步考虑如何在链路传递过程中,使用流量控制机制防止拥塞。在PCIe体系结构中,Switch处于核心地位。PCIe总线使用Switch进行链路扩展,在Switch中,每一个端口对应一个虚拟PCI桥。深入理解PCI桥是理解Switch软件组成结构的基础。目前PCIe总线提出了MRA-Switch的概念,这种Switch与传统Switch有较大的区别。

参考文章

PCIe体系结构及组成部件

相关推荐
鹏大师运维2 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
亦枫Leonlew3 小时前
微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
笔记·数学·微积分·1024程序员节
小肥象不是小飞象3 小时前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
一个通信老学姐12 小时前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
力姆泰克13 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克13 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬13 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
转世成为计算机大神13 小时前
网关 Spring Cloud Gateway
java·网络·spring boot·1024程序员节
paopaokaka_luck14 小时前
基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
java·spring boot·小程序·毕业设计·mybatis·1024程序员节
幼儿园园霸柒柒14 小时前
第七章: 7.3求一个3*3的整型矩阵对角线元素之和
c语言·c++·算法·矩阵·c#·1024程序员节