PCIe从入门到精通
+ -

PCIe 从入门到精通之七:PCIe 设备的配置空间简介

2026-04-02 0 0

0. 引言

在上一篇文章《PCIe 从入门到精通之六:PCIe 数据包 packet 的神奇之旅》中,我们介绍了 PCIe 数据包如何在各层中传输的。在这一篇文章中我们继续介绍 PCIe 设备的配置空间。

所有 PCIe 主题的文章都会收录在《深入浅出聊 PCIe》合集里,欢迎评阅。

需要下载 PCIe 学习资料标准的朋友(pdf 格式),请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载链接。


1. PCIe 设备内的组件(温故而知新)

下图是我们在前面的章节里面用到的 PCIe 体系内的组件图,我们再次把它拿出来重新温习一遍。

PCIe体系组件图

1.1 PCIe 三大设备

设备类型 包含组件
Root Complex Host Bridge、PCI-PCI Bridge、Root Port、RCiEP、RCEC
Switch PCI-PCI Bridge、Upstream Port、Downstream Port
Endpoint Upstream Port

每个 PCIe Link 都源自一个逻辑的 PCI-PCI Bridge,并被映射到配置空间中,作为该 PCI-PCI Bridge 的 secondary bus(如下图中的蓝色箭头)。

1.2 Root Port 结构

如下图所示,Root Port 是一种 PCI-PCI 桥接器结构,它从 PCI Express Root Complex 产生一条 PCIe Link。

Root Port结构

1.3 Root Complex Register Block(Optional)

1.4 Switch 内部结构

如下图所示,PCIe Switch 由多个 PCI-PCI Bridge 组成,这些 PCI-PCI Bridge 将 PCIe Link 连接到 Switch 的 Internal Logic PCIe Bus。

  • Switch 上游端口:是一种 PCI-PCI Bridge,该 PCI-PCI Bridge 的 secondary bus 代表 Switch 的内部路由逻辑
  • Switch 下游端口:也是一种 PCI-PCI Bridge,负责将 Switch 的 Internal Logic PCIe Bus 连接外部的 PCIe Bus

只有代表 Switch 下游端口的 PCI-PCI Bridge 才可能出现在 internal bus 上。

Switch内部结构


2. 哪些 PCIe 组件有配置空间(Configuration Space)?

为了与 PCI 软件配置机制保持兼容性,所有 PCIe 组件除了具有与 PCI 兼容的配置空间(256 字节)之外,还具有 PCIe 设备特有的扩展配置空间

以下 PCIe 设备的组件都有 PCIe 配置空间:

设备类型 包含配置空间的组件
Root Complex Host Bridge、RCiEP、RCEC、PCI-PCI Bridge with Root Port
Switch PCI-PCI Bridge with Upstream Port、PCI-PCI Bridge with Downstream Port
Endpoint Upstream Port(Endpoint device 可能包含多达 8 个 function,每个 function 都有一个 PCIe 配置空间)

3. PCIe 配置空间(Configuration Space)的结构

PCI Express 配置空间被划分为:

  • PCI 兼容配置空间(PCI Compatible Configuration Space)
  • PCIe 扩展配置空间(PCIe Extended Configuration Space)
区域 地址范围 大小
PCI 兼容配置空间 Byte 0h ~ FFh 256 字节
PCIe 扩展配置空间 Byte 100h ~ FFFh 3840 字节(总计 4KB)

PCIe配置空间结构

3.1 PCI 兼容配置空间(0h ~ FFh)

地址范围 内容
0h ~ 3Fh PCI Header(设备基本信息)
40h ~ FFh PCIe Capability Structure(设备具备的能力)

3.2 PCIe 扩展配置空间(100h ~ FFFh)

全部存放的是 PCIe Extended Parameters and Capability Structure

Capability Structure 占有配置空间的大部分 size,device 通过 Capability Structure 告诉 Host 它有哪些本领、它有多强大,以便以后为 Host 工作时多要些筹码、多加点工资。


4. 如何访问 PCIe 配置空间?

4.1 PCI-compatible Configuration Access Mechanism(CAM)

在 PCI Local Bus Specification Revision 3.0 规范中,通过 IO 端口 CONFIG_ADDRESS(CF8h)CONFIG_DATA(CFCh) 访问 PCI 兼容的配置空间(00h ~ FFh)。

⚠️ 注意:这种方式不能用来访问 PCI Express 扩展配置空间(100h ~ FFFh)。

4.2 PCI Express Enhanced Configuration Access Mechanism(ECAM)

所有的 PCIe 配置空间的寄存器都会被映射到标准的 Memory Space 中(flat memory-mapped address space)。只要找到它们在 Memory Space 里的地址,就可以通过对 Memory Space 的直接访问转化成对 PCIe 配置空间的访问。

ECAM 特点

  • 采用平坦的内存映射地址空间来访问设备配置寄存器
  • 内存地址决定了所访问的配置寄存器
  • 内存数据(写入操作)会进行更新,或(读取操作)会返回所访问寄存器的内容
  • 既可以访问 PCI 兼容配置空间,也可以访问 PCIe 扩展配置空间

这两种访问 PCIe 配置空间的方式将在后面的专门章节详细介绍。


5. 总结

  • 每个 PCI-PCI Bridge 的下游都连接一个 PCIe Bus
  • 每个 PCIe 组件都位于特定的 PCIe Bus 上,并拥有自己的 PCIe 配置空间
  • PCIe 配置空间的访问方式有两种:
    1. PCI-compatible Configuration Mechanism(CAM)
    2. PCI Express Enhanced Configuration Access Mechanism(ECAM)

6. 抛砖引玉

PCIe 设备的配置空间都一模一样,它们都被映射到内存空间(Memory Space)。那么:

  • 软件是怎么区分访问的内存是哪个设备?
  • 或者软件需要访问某个设备时是怎么指向这个特定的设备?

下一章我们将详细讲解 PCIe 设备的身份证 ID。

敬请关注下一篇:
《PCIe 从入门到精通之八:PCIe 设备的身份证 ID》

0 篇笔记 写笔记

关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!