PCIe协议之-TLP Header详解(三)

✨Completions

🌟Completions TLP的Header包括以下几个重要的字段:

👉类型(Fmt): 这是Header的第一个字段,表明这是一个Completions类型的TLP。它还确定了Payload的存在与否,以及数据的长度。

👉长度(Length): 表示这个TLP中包含的数据量,单位通常是双字(DW)。这个字段对于接收器正确解析接收到的数据至关重要。

👉完成者ID(Completer ID): 这个字段标识发送此Completion TLP的设备。它通常包含了一个总线号、设备号和功能号,用来精确地定位Completion TLP的来源。

👉请求者ID(Requester ID): 表明最初发起请求的设备身份。这让接收Completion的设备知道这个Completion是为哪个请求而生成的。

👉Tag: 这与最初的Memory Read TLP中的Tag字段相对应,它是为了匹配Completion与它所完成的原始请求。

👉Byte Count: 表明Completion TLP包含的字节数。对于Memory Read完成,这表示实际返回的数据量。

👉地址/Lower Address: 对Memory Read Completions,这个字段表明被读取数据在请求中指定的开始地址的低位部分。这对于请求者正确地匹配和解释返回的数据是必要的。

👉Status: 为错误报告Completion提供了额外的信息,例如无法找到目标地址(UR:无法路由)、超时(CRS:配置请求重试状态)等。

🌟Completions的TLP Header的格式如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🌟Completion Status Codes

👉Successful Completion (SC):

000b
说明: 这表明请求被成功完成,没有错误发生。这是理想状态,意味着所请求的数据操作(例如,内存读取或写入)已正确执行。

👉Unsupported Request (UR):

001b
说明: 当请求的操作不被目标设备支持或理解时,会返回此错误。例如,尝试访问不存在的寄存器或者使用非法的命令码。

👉Configuration Request Retry Status (CRS):

010b
说明: 在某些情况下,设备还未准备好完成配置请求。若设备还在初始化过程中,它可能会返回这个状态码,建议请求方稍后重试请求。

👉Completer Abort (CA):

100b
说明: 如果完成者(即响应方)不能由于某些原因处理这个请求,它将返回Completer Abort。这通常指示硬件故障或资源不足。

👉Unexpected Completion (UC):

1000b
说明: 当接收到一个未期待或无法匹配到任何未完成请求的completion时,会返回此错误。这可能是由于数据包丢失或损坏造成的通信错误。

👉Completer Timeout (CTO):

10000b
说明: 当完成者无法在预定时间内完成请求时,会报告此错误。这表明目标设备可能因忙碌或其他问题而无法及时响应。

🌟关于CplD,需要注意的是:

· 一个读请求可能会对应多个CplD(因为4KB的地址边界问题,以及RCB的限制),但是返回的总的数据量应当与请求的数据量保持一致,否则可能会出现Completion Timeout的错误;
· 一个Completion只能对应于一个Request;
· IO和Configuration读请求由于一直都是1DW,因此其一直都只对应一个Completion;
· 当Completion中的状态码(Status Codes)为SC(Successful)之外的状态,则一次传输(事务,Transaction)被终止;
· 在处理一个请求多个CplD时,应当注意Read Completion Boundary(RCB),RCB的值可以是64Bytes或者128Bytes;
· Bridge和Endpoint应设计为RCB的大小是可以通过软件修改或控制的;
· 在处理一个请求多个CplD时,应注意先发送的时低地址的数据,后发送高地址数据。
Requester接受到Completion的处理规则:
· 如果Requester接收到的Completion与自己之前发送的Request不一致,则会报错;
· 当Completion中的状态码不是SC或者CRS的话,则会报错,并且相关的Buff都会被清空;
· 当任何非配置请求的Completion中的状态码为CRS时,都会被认为是非法的,并被认为是Malformed TLP;

  • 38
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天Aileft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值