- 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