PCIE背景知识学习(7)
每个PCIe功能(Function)的标识在其所在的设备内,以及这个设备所连接的总线内,都是唯一的。其标识符一般被称为“BDF”。
仔细看图中的总线序号,观察它的搜索方式。
软件总共可以分配256个总线编号。第一个总线号,Bus 0,通常由硬件分配给RC(Root Complex)。
每个总线都必须被分配一个唯一的总线号。配置软件分配总线号的过程中,首先从Bus 0/Device 0/Function 0开始搜索其他的Bridges。当找到一个Bridge之后,软件就给这个Bridge产生的新总线分配一个与上一级总线的总线号不同的、数字更大的编号。
一旦新总线被分配了一个总线号之后,软件就会从新总线继续搜索更新的Bridges,而不是在上一级总线上继续搜索。这被称为“深度优先搜索(depth first search)。
PCIe允许在单个PCI总线上最多挂载32个设备,每个设备都必须实现Function 0,其最多可以有8个功能(Function)。当一个设备拥有2个或以上的Function时,称之为多功能设备(Multi-Function Device)。
PCIe功能(PCIe Functions)
正如此前所讨论的一样,Function被设计为每个设备中之内的一个逻辑层次。这些Function可能包含硬盘驱动接口、显示控制器、以太网控制器、USB控制器等等。多Function的设备不需要依次按照编号逐个实现 Function。例如,一个设备可以只实现Function 0、2、7。因此,当配置软件检测到了一个多Function设备时,必须检查所有可能的Function,以了解当前Device存在哪些Function。每个Function都有它们自己的配置地址空间,这个配置地址空间用于设置与Function相关的资源。
对于每个Function,都含有256byte的PCI兼容配置空间(PCI-Compatible configuration space)。
扩展配置空间(Extended Configuration Space)
在阅读下面的讨论内容时,请同时参阅图 3‑3。当引入PCIe之后,最初始的256byte配置空间已经不足以放下所有新需要的Capability Structure了。因此配置空间的大小从原先的每个Function 256Byte扩展至了每个Function 4KByte。新增加出来的960DW扩展配置空间只能通过增强配置机制(Enhanced configuration mechanism)来进行访问,因为传统的PCI软件无法发现这个区域并进行访问,所以这部分区域对于 PCI 是不可见的。在扩展配置空间内包含了新增加的PCIe可选扩展能力寄存器(Extended Capability register),图 3‑3罗列出了一部分扩展能力寄存器。