【PCIe 6.0】PCIe Shared Flow Control (2) - Merged FC

文章介绍了PCIe6.0中的MergedFlowControl机制,这是一种为了减少Buffer资源需求的优化方案,通过合并CompletionCredits和PostedRequestCredits。MergedFC允许每个虚拟通道(VC)的FCBuffer从6块减少到4块。初始化和信用量更新过程也进行了相应调整,同时强调了MergedFC只影响SharedBufferCredits,不影响DedicatedBufferCredits。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



🔥点击查看精选 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)。

在这里插入图片描述

▲ 图 1:Merged and Non-Merged Buffer Spaces for VC0 and VC1

  为什么是 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 所示。

在这里插入图片描述

▲图 2:Data Link Layer Packet Format for InitFC1

  如 《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. 参考


  1. PCI Express Base Spec, R6.0
  2. PCIe Shared Flow Control (1) - 简介
  3. Effective resource utilization in PCIe Gen6: Shared flow control


— END —


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

⬆️ 返回顶部 ⬆️

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MangoPapa

请作者喝瓶可乐吧

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

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

打赏作者

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

抵扣说明:

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

余额充值