目录
1.概述
2.BUS:总线号
3.Device:设备号
4.Function:功能号
1.概述
PCIe总线中的每一个功能都有一个唯一的标识符与之对应。这个标识符就是BDF(Bus,Device,Function)
2.BUS:总线号
最多可以通过配置软件分配256个总线号。
初始总线号,总线0,通常由硬件分配给Root Complex。
总线0由一个集成了端点的虚拟PCI总线和一个硬编码的设备号和功能号的虚拟PCI-to-PCI桥(P2P)组成。每个P2P网桥创建一个新的总线,附加的PCle设备可以连接到该总线。
每个总线必须被分配一个唯一的总线号。配置软件通过搜索从总线0、设备0、功能0开始的桥,开始分配总线号,当发现网桥时,软件会给新总线分配一个唯一且大于网桥所在总线号的总线号。一旦新总线被分配了一个总线号,软件就开始在继续扫描当前总线上的更多的桥之前寻找新总线上的桥。这被称为“深度优先搜索”。
PCIe桥设备配置空间的寄存器属性Primary Bus Number,Secondary Bus Number,Subordinate Bus Number:
- a.Primary Bus Number:当前桥设备上游Bus号;
- b.Secondary Bus Number:当前桥设备下游Bus号;
- c.Subordinate Bus Number:当前桥设备下属最后一级的Bus号。
- b.Secondary Bus Number:当前桥设备下游Bus号;
3.Device:设备号
PCle允许在单个PCI总线上最多32个设备号,然而,PCle的点对点特性意味着只有单个设备可以直接连接到PCle链路,并且该设备总是以device 0结束。
RC和Switch有虚拟PCI总线,它允许多个设备“连接”到总线上。每个设备必须实现Function 0,并且可能包含多达8个Function 的集合。当包含两个或多个Function时,设备称为多功能设备。
4.Function:功能号
如前所述,功能被包含到每个Device中。
这些功能可能包括硬盘接口、显示控制器、以太网控制器、USB控制器等。具有多个功能的设备不需要按顺序实现。例如,设备可能实现Function0、2和7。
因此,当软件检测多功能设备时,必须检查每一个可能的功能,以了解哪些功能是存在的。每个Function都有自己的配置地址空间,用于设置关联的资源。