7.5.3 PCI Express 能力结构
图 7-21 详细说明了 PCI Express 功能结构中寄存器字段的分配。
所有的 PCI Express device Function 都要实现 PCI Express Capabilities、Device Capabilities、Device Status 和 Device Control 寄存器。
所有的 PCI Express device Function 都要实现需要相应功能的 Device Capabilities 2、Device Status 2 和 Device Control 2 寄存器。对于不需要实现 Device Capabilities 2、Device Status 2 和 Device Control 2 寄存器的 device Function,这些寄存器全部硬连线为 0。
所有 Root Port、Switch Port、Bridge 和 Endpoint(并非 RCiEP)都需要实现 Link Capabilities、Link Status 和 Link Control 寄存器。对于不需要实现 Link Capabilities、Link Status 和 Link Control 寄存器的 Function,这些寄存器全部硬连线为 0。所有 Root Port、Switch Port、Bridge 和 Endpoint(并非 RCiEP)都要实现需要相应功能的 Link Capabilities 2、Link Status 2 和 Link Control 2 寄存器。对于不需要实现 Link Capabilities 2、Link Status 2 和 Link Control 2 寄存器的 Function,这些寄存器全部硬连线为 0。
某些 Switch Downstream 和 Root Port 需要实现 Slot Capabilities、Slot Status 和 Slot Control 寄存器。如果 Slot Implemented 字段设置为 1b,则需要实现 Slot Capabilities 寄存器(Section 7.5.3.2)。如果 Slot Implemented 字段设置为 1b 或者 Data Link Layer Link Active Reporting Capable 字段(Section 7.5.3.6)设置为 1b,则需要实现 Slot Status 和 Slot Control 寄存器。Switch Downstream 和 Root Port可以在不需要的情况下实现这些寄存器,这种情况下这些寄存器的行为是未定义的。Section 7.5.3.9、Section 7.5.3.10 和 Section7.5.3.11 给出了更详细的描述。对于不需要实现 Slot Capabilities、Slot Status 和 Slot Control 寄存器的 Function,除 Slot Status 的Presence Detect State 字段硬连线为 1b 之外,其他的字段都硬连线为 0。Switch Downstream 和 Root Port 在需要相应功能的时候可以实现对应的 Slot Capabilities 2、Slot Status 2 和 Slot Control 2 寄存器。对于不需要实现 Slot Capabilities 2、Slot Status 2 和 SlotControl 2 寄存器的 Function,这些寄存器全部硬连线为 0。
Root Port 和 Root Complex Event Collector 必须实现 Root Capabilities、Root Status 和 Root Control 寄存器。对于没有实现 Root Capabilities、Root Status 和 Root Control 寄存器的 Function,这些字段全部硬连线为 0。。
Figure 7-21 PCI Express Capability Structure

7.5.3.1 PCI Express Capability List Register(偏移量00h)
Figure 7-22 PCI Express Capability List Register

Table 7-17 PCI Express Capability List Register
寄存器描述 | 属性 | |
7:0 | Capability ID - 表示 PCI Express Capability 结构。该字段必须返回 10h 的 Capability ID,表明这是一个 PCI Express Capability 结构。 | RO |
15:8 | Next Capability Pointer - 该字段包含指向下一个 PCI Capability 结构的偏移量,如果链表中没有其他项目,则为 00h。 | RO |
7.5.3.2 PCI Express Capabilities Register(偏移量02h)
Figure 7-23 PCI Express Capabilities Register

Table 7-18 PCI Express Capabilities Register
寄存器描述 | 属性 | |
3:0 | Capability Version - 指示 PCI-SIG 定义的 PCI Express Capability 结构版本号。规范版本的变更,如果不通过新 Capability 字段等方式显而易见,允许增加该字段的值。所有对 PCI Express Capability 结构的变更必须与软件兼容。软件必须检查 Capability Version 号码是否大于或等于编写软件时定义的最高号码,因为报告这些 Capability Version 号码的功能将包含与该软件兼容的 PCI Express Capability 结构。对于符合该规范的功能,必须硬件固定为 2h。 | RO |
7:4 | Device/Port Type - 指示此 PCI Express 功能的具体类型。请注意,在多功能设备中,不同的功能通常可以是不同的类型。 对于实现 Type 00h PCI 配置空间头的功能,定义的编码如下: - 0000b PCI Express Endpoint - 0001b Legacy PCI Express Endpoint - 1001b RCiEP - 1010b Root Complex Event Collector 对于实现 Type 01h PCI 配置空间头的功能,定义的编码如下: - 0100b PCI Express Root Complex 的 Root Port - 0101b PCI Express Switch 的 Upstream Port - 0110b PCI Express Switch 的 Downstream Port - 0111b PCI Express to PCI/PCI-X Bridge - 1000b PCI/PCI-X to PCI Express Bridge 所有其他编码均为保留。 请注意,不同的 Endpoint 类型在第 1.3.2 节中对 I/O 资源、扩展配置空间和其他功能有显著不同的要求。 | RO |
8 | Slot Implemented - 当设置此位时,表示与此端口相关联的Link连接到一个插槽(与连接到系统集成设备或被禁用的情况相比)。此位适用于 Downstream Ports。对于 Upstream Ports,此位无定义。 | HwInit |
13:9 | “Interrupt Message Number - 此字段指示用于与该 Capability 结构的状态位相关联的中断消息的 MSI/MSI-X 向量。 对于 MSI,字段中的值表示基本 Message Data 与生成的中断消息之间的偏移量。硬件需要在软件写入 Message Control Register 的 Multiple Message Enable 字段时,如果分配给功能的 MSI 消息数量发生变化,必须更新此字段以确保其正确。 对于 MSI-X,字段中的值表示用于生成中断消息的 MSI-X Table 条目。即使功能实现了超过 32 个条目,该条目也必须是前 32 个条目之一。对于给定的 MSI-X 实现,该条目必须保持不变。 如果同时实现了 MSI 和 MSI-X,它们可以使用不同的向量,但软件只能一次启用一个机制。如果启用 MSI-X,则此字段的值必须指示 MSI-X 的向量。如果启用 MSI 或者两者都未启用,则此字段的值必须指示 MSI 的向量。如果软件同时启用 MSI 和 MSI-X,则此字段的值未定义。” | RO |
14 | “Undefined - 从此位读取的值是未定义的。在先前版本的规范中,此位用于指示对 TCS Routing 的支持。系统软件应忽略从此位读取的值。系统软件可以向此位写入任何值。” | RO |
夜雨聆风