2.6 PCIE事务层的完成包



内容简介

2024-01-21

    全文共751字,阅读大约需要4分钟,本文还是介绍PCIE事务层数据包当中的完成数据包,通过此文可以了解完成的用途和用法

    完成包类似响应或者说应答信息,所有的读操作、Non-Posted写、原子操作都需要完成包。

    完成包如下图所示,完成报文主要用于两类操作,一类是用于数据传递,例如一个设备发来了读请求(MDR)、I/O读请求(IORd)、配置读请求(CFGRdx)以及原子操作,当我们接收到这类数据包时需要返回对应内容,返回的数据内容必然携带数据信息。

    另一类是I/O写请求(IORd)、配置写请求,它们是Non-Poste模式,需要对其响应(应答),当收到这样一包数据后就会发送一包不含数据信息的数据,也就是完成报文。无论何种类型,完成事务都采用ID路由的方式,即BDF路由方案,下面我们就解析下完成事务的帧格内容。

1

第一行(Byte0~Byte3)

    这行内容是通用帧头,Fmt有“010”和“000”两种,分别表示含有有效数据和不含有有效数据内容。Type也分为“01010”和“01011”两种,表示不锁定的完成报文和锁定的完成报文。所以说,完成数据包有四种供我们挑选,可以通过该篇文章回顾关于数据包类型

2

Requester ID(Byte 8)

    请求ID,这个与内存事务的请求ID一致,该字段与Tag组成“Transaction ID”用来实现数据包的路由。当收到了上文所说的读请求(MDR)、I/O读请求(IORd)、配置读请求(CFGRdx)以及原子操作,需将接收数据包中的“Transaction ID”填充到此进行返回。

3

Completer ID(Byte4)

    首先明确一件事情,对于ID路由模式,依靠的是“Transaction ID”,也就是Requester ID和Tag组合,所以“Completer ID”并不具有路由功能。它的存在是当发送的报文是用来实现应答响应功能时所要添加的内容。

4

Compl Status

    这是一个3bit数,该字段保存完成报文的状态,具体如下

5

BCM和Byte Count

    BCM(Byte Count Modified)是用于PCI-X设备的,PCIE不适用。PCI-X设备进行内存读请求时,目标设备不一定一次就能将所有数据传递给源设备。此时目标设备在进行第一次数据传递时,需要设置Byte Count字段和BCM位。

6

Lower Address字段

    对于 Memory Read Completions,Lower Address 表示返回数据的起始字节地址。对于 AtomicOp Completions,Lower Address 字段保留,没有特定的含义。对于其他类型的 Completions,Lower Address 字段被设置为全零。接收方可以选择检查这个规则是否被违反。

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







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

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

<