🔥点击查看精选 PCIe 系列文章🔥
🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥
📢 声明:
- 🥭 作者主页:【MangoPapa的CSDN主页】。
- ⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/129166705】。
- ⚠️ 本文目的为 个人学习记录 及 知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
- ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
- 😄 欢迎大家指出文章错误,欢迎同行与我交流 ~
- 📧 邮箱:mangopapa@yeah.net
- 💬 直达博主:loveic_lovelife 。(搜索或点击扫码)
0. 前言
之前简单聊过 PCIe Shared Flow Control (1) - 简介。我们了解到,PCIe Shared Flow Control 中,每个 VC 的 Rx FC Buffer 都包含 Dedicated 和 Shared Buffer 两部分,多个 VC 共享 Shared Buffer。通过这种 Shared 方式,一方面可以将 Buffer Size 做适当削减,另一方面也不必特意对各个 VC 的 FC Buffer Size 做差异化处理,毕竟不是所有 VC 都一直忙,Buffer 有空间大家共用就好了。若某些优先级较高的 TLP 希望被提前处理或者 Shared Buffer 已满,可以在 Tx 端给 TLP 添加相关 Prefix,直接发送到Rx 的 Dedicated Buffer。
Shared Flow Control 远远还没聊完,今天再聊一点。
1. MergedFC 概念
采用以上 Shared Flow Control 方案,每个 VC 均需分配 6 块 Shared Buffer,并在收发端对这 6 个 Buffer 的 Credit 进行维护。
为了进一步减小 Buffer Resource 的需求,PCIe 6.0 在 Shared Flow Control 基础上提供了一种 Merging Credit 的方案,将 Completion Credits Merge 到 Posted Request Credits 中,其中 CPLH 合入 PH,CPLD 合入 PD。这种 CPL 跟 PR Merging Credits 或称共享 Credits 的方案,称为 Merged Flow Control (Merged FC)。采用 Merged FC 方案,每个 VC 的 FC Buffer 可以由 6 块降为 4 块(示意图如图 1)。
为什么是 CPL 与 PR 进行 Merge 而不是其他?一方面,对于不支持 Peer-to-Peer 的 RC/EP,其 CPL Credit 常被初始化为 Infinite,Rx Buffer 直接 Bypass CPL,Rx 根本不关心 CPL Credit。另一方面,CPL 及 PR 均不需要对 Requester 进行响应。
PCIe 工作于 Flit Mode 时,其 Tx 必须支持 Merged FC,Rx 可以支持也可以不支持 Merged FC。若某个 VC 支持 Merged FC,其他所有使能的 VC 均需支持 Merged FC。Merged FC 仅作用于 Shared Buffer Credits,其对 Dedicated Buffer Credits 无效。Dedicated Credits 不能被 Merge。
2. 信用量初始化及更新
Merged FC 的流控初始化流程与常规 Not-Merged Shared FC 流控初始化过程相同,FC_INIT1 及 FC_INIT2 阶段均需重复先后发送 6 笔 InitFC 包。若开启了 Merged FC,在流控初始化过程中通报 Shared Credits Allocated 时,需要将 Completion 与 Posted Request 类型的 Shared Credits Allocated 合并。体现在 DLLP 报包格式上,InitFC1/2-P/NP 照常发送,变化在于 InitFC1/2-Cpl。发送的 InitFC1/2-Cpl 的 HdrFC 及 DataFC 为 0,且 HdrScale/DataScale 字段为 10b
,表明为 Merged Credit。以 InitFC1 为例,Merged FC 相关指示位如图 2 所示。
如 《PCIe Shared Flow Control (1) - 简介》 所述,并没有一种专用于 Shared Flow Control 的新的 UpdateFC DLLP,而是采用原有 UpdateFC DLLP 中的 bit27 来指示当前为 Dedicated 还是 Shared。对于 Merged FC 而言,就连这种指示位都没有了,直接使用 UpdateFC-P 即可。若开启了 Merged FC,Rx 还需反馈 Shared UpdateFC-Cpl 吗?协议没有明确提到。博主理解没有必要反馈 Shared UpdateFC-Cpl,因为 Shared Tx Gating Logic 中使用的为 Shared Posted Credits。
3. 参考
- PCI Express Base Spec, R6.0
- PCIe Shared Flow Control (1) - 简介
- Effective resource utilization in PCIe Gen6: Shared flow control
|
🔥 精选往期 PCIe 协议系列文章,请查看【 PCIe 专栏】🔥
⬆️ 返回顶部 ⬆️