从软件角度或者说是从逻辑角度看,PCI跟PCIe有着天然的继承性。让我们首先来看看PCI的逻辑关系。

PCI系统中,总线的扩展是依靠桥(Bridge)来扩展的。注意:这里是透明桥(Transparent Bridge),所谓透明是指这个桥对于经过它的报文或者数据,不做任何的处理和表更,直接往下游或者上游传递。既然有透明桥,那么一定就有相对应的非透明桥了么? 是的,没错,确实如此,不过这里我们先卖个关子,后续慢慢再表。PCI的系统中总线的命名关系图中写的比较清楚了,对于每一个桥,都有Primary bus和Secondary bus以及Subordinate bus。

内核代码中pci_bus结构体有对应的定义,各位可以翻阅代码查看。

到了PCIe系统中,情况变成什么样了呢?让我们看一看,如下:

这里有个非常重要的部件取代了PCI系统中桥的功能,并且更为强大,它就是PCIe Switch。可以说,PCIe Switch是PCIe系统中的重中之重,掌握了PCIe Switch,基本也就掌握了PCIe系统。为了便于大家理解PCIe Switch,我们把它分解一下,就很容易看明白了:

从逻辑上看,Swith可以看作是多个PCI-PCI桥的组合。内部有虚拟PCI总线。当然实际PCIe Switch 内部构造远比这复杂,这里仅仅是从逻辑关系上说明switch和PCI的关系。

注意:图中的P2P指的是PCI-PCI bridge,而不是Peer-to-Peer。

思考:

Switch的各个端口叫什么?

PCIe Switch内部的virtual bus有类似PCI总线的冲突和仲裁么?


上期问答:

Gen1 单lane的PCIe的带宽为什么不是2500M / 8=312.5MB呢?

还记得我们最早提过的8b/10b编码么?PCIe链路上,每一字节是以10位传输的,所以带宽是要除以10,而不是除以8。

PCIe Switch相当于PCI总线中的什么?

 相当于多个PCI-PCI桥的组合。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注