1. PCIe协议基础与数据包结构解析
PCIe(Peripheral Component Interconnect Express)作为现代计算机系统中最重要的高速串行总线标准之一,其核心通信机制依赖于精心设计的TLP(Transaction Layer Packet)数据包。这些数据包如同高速公路上的车辆,承载着处理器与各种外设之间的数据交换任务。
在PCIe协议栈中,事务层(Transaction Layer)负责生成和处理TLP,这是所有通信的基础单元。每个TLP都包含一个标准化的头部(Header)结构,其长度可以是3DW(12字节)或4DW(16字节),具体取决于事务类型和地址模式。头部之后可选地跟随数据载荷(Data Payload)和可选的ECRC(End-to-End CRC)校验字段。
关键提示:PCIe 3.0及以上版本支持的最大TLP尺寸为4KB,但实际实现中这个值通常由设备驱动和硬件能力共同决定。
1.1 通用包头字段详解
所有TLP头部都包含以下关键字段结构(以4DW头部为例):
code复制| Bit | 字段名 | 描述 |
|------|------------------|----------------------------------------------------------------------|
| 31:0 | Requester ID | 发起请求的设备标识(Bus+Device+Function) |
| 63:32| Tag | 请求唯一标识符(0-255),用于匹配请求和响应 |
| 95:64| Address | 目标地址(内存/I/O空间)或配置空间标识 |
| 127:96| Attributes/Control| 包含缓存一致性、排序规则等事务属性
