如图所示,pcie Switch 被定义为多个虚拟PCI-to-PCI Bridge设备的逻辑集合。所有交换机由以下基本规则管理。
. Switch在配置软件中表现为两个或多个逻辑PCI-to-PCI桥
不需要支持下行端口作为锁定请求的发起端口.
每个enable的端口必须符合“流量控制”规范。
.Switch使用PCI桥机制转发事务;例如,基于地址的路由,不包括在多播中使用
switch必须在任意一组端口之间转发所有类型的TLPs (Transaction Layer packet)。
不允许将数据包分成更小的数据包,例如,一个具有256字节有效载荷的单个数据包不能分成两个128字节有效载荷的数据包。
pcie 内部连接:
switch是一个独立的器件,和RC的接口相连,提供扩展。EP是具有PCIe接口的网卡,SATA控制器等。PCI中还有一个概念是PCI桥, 实际的PCI桥存在PCI总线中(不是PCIe总线), 完成系统的扩展,和host桥不同的是,PCI桥没有地址翻译的功能.PCI总线中的switch每个端口相当于一个PCI桥(虚拟PCI桥), 完成PCI桥类似的功能。
PCIe链路使用端到端的数据传送方式。在一条PCIe链路中,这两个端口是完全对等的,分别连接发送与接收设备,而且一个PCIe链路的一端只能连接一个发送设备或者接收设备。因此PCIe链路必须使用Switch扩展PCIe链路后,才能连接多个设备。使用Switch进行链路扩展的实例如图所示。
在PCIe体系结构中,Switch的设计难度仅次于RC,Switch也是PCIe体系结构的核心所在。而从系统软件的角度上看,Switch内部由多个PCI-to-PCI桥组成,其中每一个上游和下游端口都对应一个虚拟PCI桥。在一个Switch中有多个端口,在其内部就有多少个虚拟PCI桥,就有多少个PCI桥配置空间。值得注意的是,在Switch内部还具有一条虚拟的PCI总线,用于连接各个虚拟PCI桥,系统软件在初始化Switch时,需要为这条虚拟PCI总线编号。
参考:MindShare__PCI_Express_System_Architecture
pcie base specification revision 5.0