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相关资料
快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~
有建议、有需求、有疑问、联系我