PCI Express(PCIe)作为现代计算机系统中的主要接口标准之一,其结构拓扑的自动发现和配置是系统启动的关键步骤。这一过程通常由配置软件(例如UEFI)在系统复位或上电后执行,称为PCIe枚举。
1. PCIe枚举的基础概念
枚举是PCIe拓扑自动识别的过程,主要任务是扫描整个PCIe结构以发现所有设备并完成初始化配置。在这个过程中,软件从Host/PCI桥开始,逐层扫描Bus、Device和Function,确保每一个设备都被正确识别。
在初始状态下,软件只知道系统中存在一个Host/PCI桥,且其下方的总线号为0。扫描的过程遵循树形结构,通过从上至下的方式逐步探索网络中各个设备和桥的层级关系。每个桥设备会根据连接的总线位置被设置主总线(Primary Bus)、次级总线(Secondary Bus)以及从属总线号(Subordinate Bus),这些参数将影响下层总线的枚举范围。
2. Function的检测与识别
在枚举过程中,系统需要通过检测设备的Vendor ID寄存器来确定设备是否存在。Vendor ID是一个16位的唯一标识符,由PCI-SIG分配给每个厂商。当枚举软件读取总线、设备、功能(Bus, Device, Function)组合