【PCIe】PCIe 完成超时机制



🔥点击查看精选 PCIe 系列文章🔥
🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥


📢 声明

  • 🥭 作者主页:【MangoPapa的CSDN主页】。
  • ⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/129302969】。
  • ⚠️ 本文目的为 个人学习记录知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
  • ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
  • 😄 欢迎大家指出文章错误,欢迎同行与我交流 ~
  • 📧 邮箱:mangopapa@yeah.net
  • 💬 直达博主:loveic_lovelife(搜索或点击扫码)




定义


  PCIe 设备发出的请求中有些请求需要 Completer 反馈 Completion,此时 Requester 会等待 Completion 再进行下一步操作。在某些异常情况下,比如配置不当、系统故障等,Requeser 无法收到或收齐 Completion。为了不影响进一步使用,需要一种超时退出机制让 Requester 从这种等待状态恢复过来,这就是 Completion Timeout 机制(完成超时退出机制)。



软件配置


  PCIe 通过 Device Capabilities 2 RegisterDevice Control 2 Register 两个寄存器中的相关字段来对 Completion Timeout 进行指示及控制。对于支持 Completion Timeout 机制的 Function,软件随时可以更改 Device Control 2 Register 中 Completion Timeout 相关配置。

  Device Capabilities 2 Register 如图 1 所示,Completion Timeout 用到的字段释义如下:

  • Completion Timeout Ranges Supported,用以指示当前 Function 支持的 Completion Timeout 范围,仅用于 RP 及 EP。共有 4 个范围,Range A~D,每 1 bit 对应一个范围。
  • Completion Timeout Disable Supported,用以指示是否能够关闭 Completion Timeout 机制。该字段对 RP 是可选的,对于需要发送 NP 请求的 EP 是必选的。各 VF 该字段的值必须与 PF 该字段的值相同。

在这里插入图片描述

▲ 图 1:Device Capabilities 2 Register

  Device Control 2 Register 如图 2 所示,Completion Timeout 用到的字段释义如下:

  • Completion Timeout Value,通过配置该字段来选择 Completion Timeout 的范围。若开启了 Completion Timeout,用户可以通过配置 Device Control 2 寄存器的 Completion Timeout Value 来选择 Timeout Limit。
  • Completion Timeout Disable,通过配置该字段来决定打开或关闭 CompletionTimeout。Completion Timeout 机制默认打开,用户可以将该字段置一来关闭该机制。

在这里插入图片描述

▲ 图 2:Device Control 2 Register

  Completion Timeout Value 共有五个范围,Default Range 及 Range A~D,每个 Range 包含两个子范围。如果为 Default Range 或设备不支持可变的 Timeout Value 配置,那么在设计的时候,Flit Mode 下应把 Timeout Value 设置为 40 ms ~ 50 ms,Non-Flit Mode 下应设置为 50 us ~ 50 ms(建议最少 10 ms)。其他几个范围编码及范围具体值如下表所示。

▼ 表 1:Completion Timeout Range
Completion Timeout Value CodeRange NameTime Range
0000bDefault Range40ms~50ms@FM
50us~50ms@NFM
0001bA50us~100us
0010bA1ms~10ms
0101bB16ms~55ms;
40ms~55ms MUST@FM
0110bB65ms~210ms
1001bC260ms~900ms
1010bC1s~3.5s
1101bD4s~13s
1110bD17s~64s
OthersReservedReserved


使用限制


  对于 RC 发出的 Configuration 读写请求,由于 PCIe-PCI/PCI-X Bridge 不支持请求重传(RRS),可能会导致 Completion 时间较长,RC 的 Completion Timeout 应考虑到这一点。

  除了上述提到的 Configuration 请求,对于能够发出 NP 类型请求的 PCIe Function,必须实现 Completion Timeout 机制。每一笔 NP 请求发出后自动触发针对该请求的 Completion Timeout Timer。由于 Switch 仅用于交换请求不自发生成请求,Completion Timeout 机制仅限于用在 RC、EP 及 Bridge 上,不适用与 Switch。



处置方式


  发生Completion Timeout 时,Requester 上报错误。对于 Memory Read 请求,若 Completer 响应多笔 CplD 但 CplD 被中断,Requester 可以保留此前收到的 CplD 中的 Data,也可以丢弃。

  AER 提供了相关机制来指示 Memory / IO / Configuration 相关 Completion Timeout 的状态指示、Error Mask,并提供了 Completion Timeout Prefix/Header Log 寄存器来存放相关请求的 TLP Prefix/Header,便于后期 Debug。



参考




— END —


🔥 精选往期 PCIe 协议系列文章,请查看【 PCIe 专栏🔥

⬆️ 返回顶部 ⬆️

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MangoPapa

请作者喝瓶可乐吧

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

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

打赏作者

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

抵扣说明:

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

余额充值