本文主要参考《PCI Express® Base Specification Revision 3.0》
一、报文概述
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字段,该字段在控制器中可选。
每个控制器必须要监测该字段的存在,同时做以下处理
- TD=1,但接收方若不能处理该字段,则该TLP作为畸形TLP处理。
- 如果某设备支持ECRC校验并且TD=1,则必须执行ECRC校验。
- 如果接收方不支持ECRC校验(可选),则该设备必须忽略此字段。
2.1.6 EP
表明TLP是否poisoned,如果置为1,尽管允许正常事务完成,但伴随此事务的数据应被认为是无效的。
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
- Requester Id
发出请求报文方的BDF号 - Tag
由请求方生成 - bus Number,Device number, Function Number
目标设备的BDF号
2.3 完成报文的Header
- status
完成报文的状态
- Completer ID
发出完成报文的设备BDF号
2.4 存储器和IO读写报文的Header
下面分别是64位地址和32位地址的TLP头格式
2.5 消息报文的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.5.1 INTx中断信号报文
2.5.2 Slot Power Limit Support
使用MsgD报文
三、报文的路由方式
3.1 地址路由
根据报文的地址来决定方向,适用于Memory读写和IO读写
3.2 ID路由
根据根据报文中的Target ID与自身的Device ID判断是否访问自己,适用于配置读写,完成报文
- 4字 header的ID路由
- 3 字header的ID路由
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82460.html