![](https://csdnimg.cn/release/download_crawler_static/86855357/bga.jpg)
当目标设备收到这些读写请求 TLP 后,将数据和完成信息通过完成报文(Cpl 或者 CplD)发送给
源设备。
其中存储器读、I/O 读和配置读需要使用 CplD 报文,因为目标设备需要将数据传递给源
设备;而 I/O 写和配置写需要使用 Cpl 报文,因为目标设备不需要将任何数据传递给源设备,
但是需要通知源设备,写操作已经完成,数据已经成功地传递给目标设备。
在 PCIe 总线中,进行存储器或者 I/O 写操作时,数据与数据包头一起传递;而进行存储
器或者 I/O 读操作时,源设备首先向目标设备发送读请求 TLP,而目标设备在准备好数据后,
向源设备发出完成报文。
PCIe 总线规范还定义了 MRdLk 报文,该报文的主要作用是与 PCI 总线的锁操作相兼容,
但是 PCIe 总线规范并不建议用户使用这种功能,因为使用这种功能将极大影响 PCIe 总线的数
据传送效率。
与 PCI 总线并不相同,PCIe 总线规范定义了 Msg 报文,即消息报文。分别为 Msg 和 MsgD,
这两种报文的区别在于一个报文可以传递数据,一个不能传递数据。
PCIe 总线支持四种事务——配置事务,IO 事务,存储事务和消息事务,如表 3-3 所示。
PCIe 设备使用路由的方式来实现事务认领,路由方式基于事务类型,系统存储器和 IO 地址分
配等因素。路由方式分为三种,分别是地址路由,ID 路由和隐含路由。存储事务和 IO 事务仅
使用地址路由方式,配置事务和完成使用 ID 路由方式,消息事务可以使用任何一种路由方式,
每种事务所对应的具体路由方式如表 3-4 所示。
表 3-3 PCIE 地址空间和事务类型
地址空间
存储器
IO
配置
消息
事务类型
读写
读写
读写
底线/厂商定义
用途
传送数据自/至系统存储器空间的单元
传送数据自/至系统 IO 空间的单元
传送数据自/至 PCI 兼容的设备配置空间的单元
通常用于带内的消息传递和时间报告
表 3-4 PCIE TLP 的路由选择
TLP 类型
MRd、MRdlk、MWr
IDRd、IOWr
CfgRd0,CfgRd1、CfgWr0、CfgWr1
使用的路由方法
地址路由
地址路由
ID 路由