PCIE原理:PCIE是如何获取BUS number的?

1、PCIE bus number是什么?


如图所示为PCIE协议规定的3DW配置请求head的格式。其中字节8包含了bus number、device number、以及function number。


Bus number指的当前PCIE设备在PCIE系统结构中被分配的总线号。PCIE的部分TLP传输需要确定bus number才能完成。

2、PCIE 是如何获取bus number的?

为支持ID路由,每个PCIE设备(端点和交换开关)中都应设置有贮存设备总线号和设备号的寄存器,复位时,该寄存器清0,每当设备在它的原级链路上检测到一个Type0配置写事务包时,它就从该TLP头标中的第8~9字节“捕获”它自己的总线号和设备 号,并贮存入上述总线号和设备号寄存器。所以说在接收至少一个 Type0配置写事务包以前,设备不会响应除配置周期以外的任何事务。PCIE协 议中没有定义贮存总线号和设备号信息的配置空间单元,只是规定了它必须做这件事。

两个对接的PCIE设备,主设备是RC端,从设备是EP端,那么上电复位后,EP是如何获取自身的bus number的呢?

在这样的一个PCIE结构中,上电复位后,RC端发起一个对EP的配置写事务,EP会解析配置请求中的bus number,并保存下来,作为自身的bus number号。之后就可以相应其他TLP事务了。也就是说,上电复位后,EP必须先接收到一个配置写,然后才能相应其他TLP事务。

参考文献:
PCI、PCI-X和PCIExpress的原理及体系结构-马鸣锦  P79

版权声明:本文为CSDN博主「IC小鸽」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/icxiaoge/article/details/102632122

推荐阅读