本文主要参考《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包处理的额外属性,字段的含义如下
在这里插入图片描述

  1. Relaxed Ordering and ID-Based Ordering Attributes
    在这里插入图片描述
  2. no snoop
    在这里插入图片描述

2.1.4 TH

2.1.5 TD

表明TLP包的末尾需不需要TLP Digest字段,该字段在控制器中可选。
每个控制器必须要监测该字段的存在,同时做以下处理

  1. TD=1,但接收方若不能处理该字段,则该TLP作为畸形TLP处理。
  2. 如果某设备支持ECRC校验并且TD=1,则必须执行ECRC校验。
  3. 如果接收方不支持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

在这里插入图片描述

  1. status
    完成报文的状态
    在这里插入图片描述

  2. Completer ID
    发出完成报文的设备BDF号

2.4 存储器和IO读写报文的Header

下面分别是64位地址和32位地址的TLP头格式
在这里插入图片描述

2.5 消息报文的Header

典型的消息报文格式

  1. r[2:0]
    路由规则
    在这里插入图片描述

  2. 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路由

在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐