news 2026/4/26 3:27:42

【每日一题】讲讲PCIe链路训练和枚举的前后关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【每日一题】讲讲PCIe链路训练和枚举的前后关系

几天前我们一篇文章《一文讲懂主机启动时是如何给每个PCIe外设分配BDF的》,有工程师留言问:电脑加电启动的时候,PCIe是全部训练完再枚举,还是训练一个枚举一个?

我们这里结论先说:PCIe 在系统加电启动(boot)时,是“全部链路先训练完成(Link Training),再开始统一进行设备枚举(Enumeration)”。不是训练一个枚举一个。今天的文章将尽量给你一个清晰的解释,掌握这部分对于熟悉PCIe协议很有用。

1. 为什么必须全部训练完才能枚举?

因为枚举需要稳定的 PCIe 拓扑结构(Topology),包括:

  • 哪些设备存在

  • 每个设备是哪个 Bus/Device/Function

  • 每条链路最终的速度、宽度(Gen / Lanes)

  • 下游设备是否连通

  • Switch 的下游 port 是不是 active

如果链路没有全部训练成功(进入 L0),根本无法构建完整拓扑。

因此PCIe Base Spec 要求在枚举开始前,所有链路必须完成 LTSSM → L0。


2. PCIe 链路训练(Link Training)发生在固件阶段(BIOS/UEFI 前期)

链路训练包含:

  • Detect

  • Polling

  • Configuration

  • Recovery(必要时)

  • L0(链路正常状态)

这是PCIE PHY + MAC(硬件自动完成),极少需要 CPU 参与。

训练过程与设备枚举(RC 软件过程)完全独立。


3. 训练完成之后,BIOS/UEFI 才开始做设备枚举 Enumeration

枚举过程包括:

(1)为 Root Port 分配 Bus numbers

(2)读取下游设备的 Header Type / Vendor ID

(3)配置 BAR 寄存器

(4)为整个系统分配 MMIO / IO space

(5)初始化 Capabilities(MSI/MSI-X/ACS/ARI 等)

这一阶段属于PCI Firmware Spec 定义的流程,在 BIOS 中由 RC(Root Complex)程序执行。

也就是说:

只有当所有链路都进入 L0,BIOS 才能完整看到整个 PCIe 拓扑,然后开始枚举。


4. 是否存在“训练一个,枚举一个”的例外?

正常 PC/服务器启动流程 ——不会!

但是有两种特殊例外情况值得你关注:

(A) 热插拔场景(Hot-Plug)

Hot-plug port 上:

  • Link Training 在设备插入后发生

  • RC 会动态枚举新增设备

但这是运行时行为,不属于系统加电启动流程。

(B) 某些 PCIe Switch 的“Port-by-port” 初始化

例如一些 Broadcom/PLX Switch 型号可能:

  • Port A 训练成功

  • 内部 switch firmware 提前对下游 port 做一些预扫描

但这属于Switch 内部行为,RC 枚举依然要等所有链路可用后才统一开始。


5. 所以启动流程可以总结为:

Step 1:加电

Step 2:所有 PCIe 端口开始 Link Training

  • PHY 完成 LTSSM 流程

  • 链路进入 L0 或失败进入 Recovery

Step 3:所有链路稳定后,BIOS 才开始 PCI Bus enumeration

Step 4:初始化设备、分配 BAR、配置 MSI/MSI-X、ASPM 等


6. 在SerialTek PCIe协议分析仪上也能看到这个证据

你抓加电 trace 会看到:

✔ 一堆 Link Training(TS1/TS2、Equalization Phase 0/1/2)

✔ 全部 link 进入 L0

✔ 然后才出现BIOS 的 Configuration TLPs(Type 0/Type 1)

例如:

  • Config Read Type 1 → 扫描 Bus

  • Config Read Type 0 → 针对 Endpoint

  • Memory Write → 写 BAR

这正是枚举开始的标志。

这很明确地说明:

枚举发生在所有链路训练之后。


总结 — 面试级标准答案

PCIe 在系统加电启动时,所有链路必须先完成 Link Training(进入 L0),然后 Root Complex 才能进行统一的 Bus Enumeration。不会训练一个枚举一个。

例外仅在热插拔或某些 switch 的内部预处理流程,普通服务器/PC 不会边训练边枚举。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 14:15:47

ET框架客户端冷启动性能优化深度实践

ET框架客户端冷启动性能优化深度实践 【免费下载链接】ET Unity3D 客户端和 C# 服务器框架。 项目地址: https://gitcode.com/GitHub_Trending/et/ET 问题诊断:为何15秒的启动时间成为用户体验瓶颈? 在游戏开发领域,客户端冷启动时间…

作者头像 李华
网站建设 2026/4/19 7:37:46

30 岁转行网络安全:来得及吗?这份实战学习路线帮你少走弯路

30 岁转行网络安全:来得及吗?这份实战学习路线帮你少走弯路 引言 “30 岁转行网络安全,会不会太晚?”“有家有业,没时间全职学习怎么办?” 这是 30 转行同学的高频疑问。作为 32 岁从运维转行的过来人&am…

作者头像 李华
网站建设 2026/4/20 5:04:43

AI情绪识别技术:发展、挑战与未来

情绪识别技术作为人工智能(AI)的一个重要分支,正迅速发展并应用于各行各业。通过分析人类的面部表情、语音语调等多种信号,AI能够精准地判断出用户的情感状态。这项技术正在重新定义智能交互的方式,尤其在客户服务、医…

作者头像 李华
网站建设 2026/4/20 4:59:26

破局国企转型深水区:华恒智信以战略性薪酬体系重塑组织发展引擎

引言:在能源行业深化改革的浪潮中,传统国企的转型已步入“深水区”。组织结构与市场化需求的脱节,集中体现在僵化的薪酬体系上,成为扼制组织发展(OD)的关键瓶颈。本文将以华恒智信助力某国有水业公司的变革…

作者头像 李华
网站建设 2026/4/24 17:37:41

高速PCB层压工艺:精密叠层中的材料科学与热力学控制

高速PCB层压工艺是构建高性能电路结构的核心环节,其本质是通过热力学与材料科学的精准调控,将绝缘介质与导电层转化为一体化的信号传输载体。随着5G设备与高性能计算芯片的工作频率突破GHz壁垒,层压工艺的精度直接决定信号完整性、散热效率及…

作者头像 李华
网站建设 2026/4/23 17:43:47

基于SABL-RetinaNet的恐龙足迹识别与定位系统实现与优化

YOLONOJAM数据集是一个专注于恐龙足迹识别的计算机视觉数据集,采用CC BY 4.0许可证授权。该数据集包含62张图像,所有图像均经过预处理,包括自动方向调整(剥离EXIF方向信息)和拉伸至640x640像素的统一尺寸,但…

作者头像 李华