对PCIe协议有个初步了解后,我们现在再来看一下系统上的PCIe总线,在linux下用lspci –t这个命令可以看到一些树结构,上面有一些数字,数字通过一些-连起来,还有[],这个就是这个计算机的PCIe总线topo图。
在一个三世同堂的家里面,每个成员的身份都是唯一的,同样在PCIe总线上,每个PCIe设备也应该有个唯一标识,这个唯一标识就是一个编号,或者说ID,这个ID由3部分组成bus号,device号和function号,格式为(Bus:Device. Function ),比如0:0.0 ,3:2.1这种。所以[]里面的都是bus号,而后面接的xx.x就是对应的device号和function号。每个设备都有唯一的ID,前面说的ID路由就是就是通过这个ID进行路由的。
每个设备都分配好ID后,我们再来看-这个表示的意思,这个呢表示link,即-两端是两个PCIe设备,这两个设备组成一条PCIe Link。这条Link两端的设备,更靠近根端口的,也就是最左边起点的设备称为下行设备,而远离根端口的设备称为上行设备。这表示数据的传输方向,看Trace里面最左边的箭头同样可以知道是哪个设备发送的报文。
PCIe设备常见的有3种设备,RC,Switch,Endpoint。
RC范围非常广,不