一、报文概述
PCIe采用串行连接和数据报纸(TLP)数据传输的形式。
1.1 报文类型
PCIe传输事务按内容类型可分为Memory读写、IO读写、配置读写和信息,体现在TLP报文比较详细,包括存储器读写请求、配置读写请求、完成报文、新闻报文等。
1.2 报文的构建
在核心层中发送数据报纸,最终通过设备的事务层、数据链路层和物理层发送;接收时相反。 实际上完整的TLP包由多个字段组成,这些字段由三个层次组成,最终通过物理层形成TLP。
二、TLP格式
TLP根据其类型不同,Data段的宽度不同,但是Header段的低32bit字段相同,完整TLP packet结构如下图所示:
2.1 Header的低32bit
对于header就字段而言,不同类型的请求有不同的字段含义,但低32bit含义相同,下面将详细说明。
2.1.1 Type和Fmt
2.1.2 TC
字段表示当前TLP传输类型。 PCIe定义了8种传输类型,即TC0~TC7、值越大,优先级越高,默认为0(优先级最低),PCIe通过调整发出的设备TLP的TC可调整字段TLP使用的VC从而调整TLP优先级。初始化时,PCIe驱动程序将适当地分配每种类型的包TC值(优先级)。 该字段可能与与PCIe的QoS有关,如果PCIe没有找到驱动程序PCIe Extended Capability Space,认为设备只有一个VC,即VC0.此时再为每一个TLP分配不同的TC值,显然是没有意义的。所以默认会采用TC0/VC0组合,即不支持QoS功能。 大多EP只有一个设备VC0.实时性要求较高的一些EP含有可设置的内容TC字段寄存器(存在于设备的扩展配置空间备的扩展配置空间中)RC仅支持一个VC通路,此时EP使用不同TC传输意义不大
2.1.3 attr[2:0]
共3bit,分别包含两个字段 bits [5:4] of byte 2和 bit 2 of byte 1.这个字段提供了一些TLB字段的含义如下
- Relaxed Ordering and ID-Based Ordering Attributes
- no snoop
2.1.4 TH
2.1.5 TD
表明TLP包的末尾需不需要TLP Digest字段
2.1.6 EP
表明TLP是poisoned
2.1.7 AT
2.1.8 length[9:0]
由{byte3[7:0], byte2[1:0]}组成表示TLP包数据的大小。 该字段受限PCIE device control寄存器中max payload size字段的大小
2.2 完成报文的Header
- status
2.3 存储器和IO读写报文的Header
以下是64个地址和32个地址TLP头格式
2.4 消息报文的Header
-
r[2:0] 路由规则
-
message code[7:0]
消息报文支持的消息类型有:
- INTx Interrupt Signaling
- Power Management
- Error Signaling
- Locked Transaction Support
- Slot Power Limit Support
- Vendor-Defined Messages
- LTR Messages
- OBFF Messages
2.4.1 INTx中断信号报告
2.4.2 Slot Power Limit Support
使用MsgD报文
2.5 配置报文
三、报文路由方式
3.1 地址路由
方向根据报纸的地址确定,适用于Memory读写和IO读写
3.2 ID路由
根据报文Target ID与自身的Device ID判断是否访问自己,适合配置阅读和写作,完成报纸
- 4字 header的ID路由
- 3 字header的ID路由