3.1 总线/设备/功能/的定义(Definition of Bus,Device and Function)
正如PCI一样,每个PCIe功能(Function)的标识在其所在的设备内,以及这个设备所连接的总线内,都是唯一的。其标识符一般被称为“BDF”。对于任意一个 PCIe 拓扑结构,配置软件负责检测出拓扑中的每个Bus、Device和Function,缩写为BDF。接下来的几节将会结合一个PCIe拓扑的示例,来讨论BDF的主要特征。图 3‑1展示了一个PCIe拓扑结构,图中着重标识了示例系统中的Buses、Devices和Functions。本章后续内容将解释总线编号和设备编号分配的过程。
图 3‑1示例系统
3.2 PCIe总线(PCIe Buses)
软件总共可以分配256个总线编号。第一个总线号,Bus 0,通常由硬件分配给RC(Root Complex)。Bus 0由一个集成有EP的虚拟PCI总线,一到多个虚拟PCI-to-PCI Bridges(P2P)组成。其中的P2P Bridges拥有不可更改、硬件编码(hard-coded)的设备号和功能号。每个P2P Bridge都会产生一个新的总线,其他PCIe设备可以连接在到这些新产生的总线上去。每个总线都必须被分配一个唯一的总线号。配置软件分配总线号的过程中,首先从Bus 0/Device 0/Function 0开始搜索其他的Bridges。当找到一个Bridge之后,软件就给这个Bridge产生的新总线分配一个与上一级总线的总线号不同的、数字更大的编号。一旦新总线被分配了一个总线号之后,软件就会从新总线继续搜索更新的Bridges,而不是在上一级总线上继续搜索。这被称为“深度优先搜索(depth first search)”,关于这种搜索的细节内容,请参阅“Enumeration – Discovering the Topology”一节。
3.3 PCIe设备(PCIe Devices)
PCIe允许在单个PCI总线上最多挂载32个设备,然而PCIe点对点(point-to-point)的性质意味着只有一个设备可以直接连接在PCIe链路上,也就是Device 0。但是,通过RC和Switches包含的虚拟PCI总线。更多的设备可以“连接”到总线上。
每个设备都必须实现Function 0,其最多可以有8个功能(Function)。当一个设备拥有2个或以上的Function时,称之为多功能设备(Multi-Function Device)。
3.4 PCIe功能(PCIe Functions)
正如此前所讨论的一样,Function被设计为每个设备中之内的一个逻辑层次。这些Function可能包含硬盘驱动接口、显示控制器、以太网控制器、USB控制器等等。多Function的设备不需要依次按照编号逐个实现 Function。例如,一个设备可以只实现Function 0、2、7。因此,当配置软件检测到了一个多Function设备时,必须检查所有可能的Function,以了解当前Device存在哪些Function。每个Function都有它们自己的配置地址空间,这个配置地址空间用于设置与Function相关的资源。
标签:Function,Express,总线,PCIe,PCI,Device,Technology,设备 From: https://www.cnblogs.com/VerweileDoch/p/18184080