作者:上海蓝色的梦在哪 | 来源:互联网 | 2024-12-06 19:30
概述
CXL(Compute Express Link)2.0设备的配置空间总共为4KB(地址范围从0x000到0xFFF),主要分为基本配置空间(0x000-0x0FF)和扩展配置空间(0x100-0xFFF)两大部分。

基本配置空间通常包含Header和多个Capability;而扩展配置空间则主要由多个扩展Capability构成。
1 基本配置空间
作为Endpoint类型的设备,其Header采用Type 0格式,长度固定为64字节。Type 0 Header的结构如下,偏移地址为0x00-0x3F:

在Endpoint的基本配置空间中,必须包含的Capability位于偏移地址0x40-0xFF,具体包括:
- PCI Power Management Capability Structure
- PCI Express Capability Structure
1.1 PCI Power Management Capability Structure
该结构对PCI总线是可选的,但对于PCIe总线则是必需的。它占用8字节的空间,具体布局如下:

1.2 PCI Express Capability Structure
该结构占用60字节,其中一些关键寄存器如Device Capabilities、Device Status、Device Control等是每个设备都必须支持的。对于具有链路的设备,还需支持Link系列寄存器,但这部分寄存器并非所有设备都必须实现,而是可选的。具体布局如下:

2 扩展配置空间
扩展配置空间中的Extended Capabilities从偏移量0x100开始,并以一个PCI Express Extended Capability header开头。如果没有Extended Capabilities,则Next Capability字段为0。PCI Express Extended Capability header占用4字节,具体布局如下:

在PCIe标准中,有一类名为Designated Vendor-Specific Extended Capability (DVSEC Capability)的扩展功能,CXL 2.0设备必须实现的DVSEC Capability包括:
- PCIe DVSEC for CXL Device
- GPF DVSEC for CXL Devices
- PCIe DVSEC for Flex Bus Port
- Register Locator DVSEC
2.1 PCIe DVSEC for CXL Device
此DVSEC用于定义CXL设备特定的功能和配置选项,确保设备能够在CXL环境中正确操作。
2.2 GPF DVSEC for CXL Devices
此DVSEC提供了与CXL设备相关的高级电源管理功能,有助于提高系统的能效。
2.3 PCIe DVSEC for Flex Bus Port
此DVSEC定义了Flex Bus端口的特性,支持多种不同的连接模式,增加了系统的灵活性。
2.4 Register Locator DVSEC
此DVSEC提供了一种机制来定位和访问设备内部的特定寄存器,便于系统管理和调试。