【PCIe 6.0】PCIe Shared Flow Control (5) - Optimized FC

文章介绍了PCIe6.0引入的Optimized_Update_FC,这是一种优化的流控包格式,用于更高效地更新BufferCredits。相比于传统的UpdateFC包,Optimized_Update_FC能在一个4B包中携带更多的信用信息。文章讨论了包的格式,与常规DLLP的区别,以及使用中的注意事项,包括发送策略和与MergedFC、ScaledFC的关系。此外,文章提出了几个与实现和配置相关的问题供读者探讨。

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



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


📢 声明

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




0. 前言


  之前简单介绍了 PCIe Shared Flow Control 的 基本概念Merged FC 机制Credit BlockUsage Limit 机制 ,今天再来看看 Shared Flow Control 中的 Optimized Flow Control(下称 Optimized FC 或 OFC)。协议中关于 Optimized FC 的介绍文字不多,网上也很难找到相关资料,我们有一点说一点吧。



1. 出现背景


  在 PCIe 6.0 之前,PCIe Rx 采用 UpdateFC 流控包 (Flow Control Packets, FCP) 来更新相关 Buffer 的 Credits Allocated (CA) 值,每个 FCP 携带相关 VC 的 HdrFC 及 DataFC 两个 CA 值。从 PCIe 6.0 开始,引入了一种新的优化后的流控包 —— Optimized_Update_FC,每个 4B 流控包携带更多 CA 信息,能够满足一些需要高效更新 Credits 的应用场景。



2. 技术要点


2.1 包格式

  Optimized_Update_FC 是流控包的一种,仅用于 Flit Mode 的 Shared FC。Optimized_Update_FC 包格式如下如所示,其中包含 Shared NPR HdrFC、Shared PR HdrFC 及 Shared PR DataFC 共 3 个 CA 值。

在这里插入图片描述

▲ 图 1:Optimized_Update_FC Format

  Optimized_Update_FC 各位域描述如表 1 所示。

▼ 表 1:Optimized_Update_FC Bit Fields Description
Bit LocationDescription
31Optimized Update FC Indicator Must be “0”
30:28VC
27:20Shared Non-Posted HdrFC – Shared credits on this VC
19:12Shared Posted HdrFC – Shared credits on this VC
11:0Shared Posted DataFC – Shared credits on this VC

2.2 Optimized_Update_FC Vs. Normal DLLP

  协议中常把 DLLP 跟 Optimized_Update_FC 并列开来,可见其并非常规意义上的 DLLP。常规 DLLP 格式如图 2 所示,DLLP Byte0 为 DLLP Type 字段。但 Optimized_Update_FC 为了容纳更多 CA 信息,挤占了 DLLP Type 的部分位域。

在这里插入图片描述

▲ 图 2:DLLP Format of Flit Mode

  显然,Optimized_Update_FC 与 Normal DLLP 存在交集,那么如何区分 DLLP 与 Optimized_Update_FC 呢?——通过 DLP[1:0] (Flit Header) 相关字段来指示。如果是 Optimized_Update_FC,Flit DLP[1:0] 中的 Type of DLLP Payload 需要置为 1b 用来指示 DLP[5:2] 为 Optimized_Update_FC 或 Flit_Marker,并用 4B DLLP Payload 的最高位来进一步区分这两种 DLLP,bit31 为 0 表示 Optimized_Update_FC,为 1 表示 Flit_Marker。


2.3 注意事项

  为了便于采用逻辑分析仪等进行 Debug,Device 每个 VC 每隔 10us 应至少发送一次 UpdateFC。协议中还强烈建议,只要相关 VC 释放了 Credits,其 Tx 就发送 Optimized_Update_FC。

  PCIe 6.0 协议中并未提到 OFC 与 Merged FC、Scaled FC 的关系,Optimized_Update_FC 中也不携带 Merged 或 HdrScale、DataScale 相关信息。笔者理解,流控初始化期间已经协商好了是否 Merged FC、是否 Scaled FC 及 Scaling Factor 等信息,对于开启了 Merged FC 的 Optimized_Update_FC,那么其 PH 及 PD Credits 就是 Cpl 与 PR Merge 之后的 Credits;对于开启了 Scaled FC 的 Optimized_Update_FC,那么实际 Credits 也需采用 Scaling Factor 进行缩放。

  跟 Flit_Marker 比,Optimized_Update_FC 无需保存进 Retry Buffer。


2.4 一些问题

  • Optimized_Update_FC 是 Flit Mode 必须支持的吗?
  • 如何自定义 Optimized_Update_FC 发送策略?只能在 Credit 释放后释放吗?
    UpdateFC 的发送频率独立于 Optimized_Update_FC 吗?Optimized_Update_FC 会影响下一次 UpdateFC 的发送时刻吗?

  欢迎探讨。



3. 参考


  1. PCI Express Base Spec, R6.0
  2. PCIe Scaled Flow Control 简介
  3. PCIe Shared Flow Control (1) - 简介
  4. PCIe Shared Flow Control (2) - Merged FC
  5. PCIe Shared Flow Control (3) - Shared Credit Block
  6. PCIe Shared Flow Control (4) - Usage Limit
  7. Effective resource utilization in PCIe Gen6: Shared flow control


— 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、付费专栏及课程。

余额充值