2.7PCIE事务层的配置与消息数据包



内容简介

2024-01-21

    全文共1279字,阅读大约需要4分钟,主要是介绍PCIE事务层数据包中的剩余两个,配置数据包和消息数据包。

01

配置数据包

    配置是从PCI就有的机制,PCIE继承了PCI的配置方式。对于PCIE,配置是由RC发起的,采用ID路由方式与目标设备进行数据交换实现配置功能,只支持3DW帧头,如下为配置事务的帧格式。

3

第一行(Byte0~Byte3)

    这部分是通用帧头,与前文所述一致,但对于配置事务,有些字段是固定的。Fmt=000是配置读,=010是配置写,此外还需遵守以下规则:

1、TC[2:0]必须为0

2、TH保留

3、Attr[2]保留

4、Attr[1:0]必须为0,

5、AT [1:0]必须为0,

6、Length[9:0]必须为1,因为读取或写入标准配置空间的寄存器时,请求通常限制为最多4字节(32位),如果扩展的话用Ext.Reg. Number和Register Numbers实现

6、last DW BE[3:0] 必须为0。

7、First DW 字段根据配置读写请求的大小设置。

    协议说如果接收方检测TLP包不满足上述条件,可以认为这是个错误包,管得挺严。

3

第二行(Byte4~Byte7)

    这个与内存事务的请求ID一致,该字段与Tag组成“Transaction ID”用来实现数据包的路由。

3

第三行(Byte8~Byte11)

    “BDF”指的是目标设备地址。Ext.Reg. Number 和Register Numbers是存放寄存器号的。

    Register Number这个字段指定了标准配置空间中的寄存器地址。标准配置空间大小为256字节,包含设备的基本信息,如供应商ID、设备ID、中断设置等。寄存器编号通常用于访问这256字节内的标准配置寄存器。例如,寄存器编号0x10指向设备的第一个基址寄存器(BAR)。

    Ext.Reg.Number(扩展寄存器编号)在PCIe 中,还有一个扩展配置空间,它提供了比标准配置空间更多的寄存器和功能。这个扩展配置空间可以达到4096字节。扩展寄存器编号用于访问这个更大的配置空间中的寄存器。这对于支持一些高级特性的设备来说是必要的,如多功能设备、高级电源管理功能等。扩展配置空间通常用于较新的或更高级的PCIe设备,它们需要比标准配置空间更多的配置选项。

    这两个的具体使用会在第三章的PCIE配置流程单独介绍,到时候详细说说。

02

消息数据包

    如下图是消息事务的帧头,除了第一行公共字段外,还有Requseter DI、Tag作为ID路由的依据,还有Message Code用来指定包含在请求中的特定消息。

    消息事务类型有Msg和MsgD两种,Vendor-Defined Messages只能使用Msg,Slot Power Limit Messages只能使用MsgD,其它的消息类型两种都支持。

Attr[2]字段不能做保留设置,但除非特别说明,Attr[1:0]需设置为0。

HT不适用于消息类型

AT必须设置为0,接收端也别去检查

除非做特殊说明,否则8到15byte保留处理

消息请求包不需要完成包

消息包和Memory Write Requests的order顺序规则一致。

    除了ID路由外,消息事务类型还支持隐式路由,具体的路由方式由Type[2:0]决定,如下表。

    消息数据包可以支持以下功能,再次就不展开描述了,PCIE3.0的第6章做了详细介绍到时在阐述。

1、INTx中断消息(INTx Interrupt Signaling)

2、电源管理(Power Management)

3、错误消息(Error Signaling)

4、锁定事务消息(Locked Transaction Messages)

5、插槽电源限制消息(Slot Power Limit Messages)

6、供应商定义的消息(Vendor-Defined Messages)

7、LTR消息(Latency Tolerance Reporting Messages)设备间通信的机制

8、OBFF消息(Optimized Buffer Flush/Fill Messages ) 优化数据传输的性能

欢迎关注公众号领取PCIE相关资料







快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我

<