棋子 · 1 天前

PCIe gen6 数据链路层总结(二)

PCIe gen6 数据链路层总结(一)

3.Flow Control Initialization Protocol

在 PCIe 建立过程中,还有一个重要的一步,那就是流控初始化。默认虚拟通道,即 VC0 必须首先由硬件完成初始化,随后才能进行其他 VC 的初始化(如果存在多个 VC)。

PCIe Gen6 支持 Flit 模式,在 Flit 模式下共享流控(Shared Flow Control)是生效的,而在非 flit 模式下,Shared Flow Control 必须关闭。需要注意的是,在 FLit 模式下,共享(shared)信用量和专用(Dedicated)信用量是可以同时存在的。在 Non-Flit 模式,仅仅使用专用(Dedicated)信用量。

流控初始化的两个状态:

• FC_INIT1 :对接的设备通过发送 FC_INIT1 DLLP,完成信用量信息的交换。

• FC_INIT2 :通过发送 InitFC2 DLLPs 完成信用量信息的再次确认。

3.1 FC_INIT1 状态

在 FC_INIT1 状态下,对接的设备通过发送 FC_INIT1 DLLP,完成信用量信息的交换。

在 FC_INIT1 状态下,会进行如下操作

  • 事务层阻塞当前 VC 的 TLP
  • Non-Flit 模式下,按顺序传输 3 种类型的 InitFC1 DLLPs
    ▪ InitFC1-P [Dedicated] (first)
    ▪ InitFC1-NP [Dedicated] (second)
    ▪ InitFC1-Cpl [Dedicated] (third)
  • Flit 模式下,按顺序传输 6 种类型的 InitFC1 DLLPs
    ▪ InitFC1-P [Dedicated] (first)
    ▪ InitFC1-NP [Dedicated] (second)
    ▪ InitFC1-Cpl [Dedicated] (third)
    ▪ InitFC1-P [Shared] (fourth)
    ▪ InitFC1-NP [Shared] (fifth)
    ▪ InitFC1-Cpl [Shared] (sixth)
  • 设置 DataFC, DataScale, HdrFC, and HdrScale 如表 Table 3-2 和 Table 3-3
  • 此处不推荐大家耗费很多时间在 share credit 上面,因为当前主流 PCIe IP vendor 对 share credit 的支持不够完善,目前几乎没有已商用的支持 share credit 的产品。

  • 为了保证 InitFC1 DLLP 能够得到足够的传输频率,此时数据链路层会阻塞其他类型的传输,例如阻塞 Ordered Sets), Ack and Nak DLLPs (when applicable), 以及其他 VC 的 TLP
  • 如果收到 InitFC1 and InitFC2 DLLPs 会进行如下处理:
  • 从 InitFC1 and InitFC2 DLLPs 中提取 HdrFC and DataFC values 并且记录下来
  • 如果接收者支持 Scaled Flow Control,则还需要把 DLLPs 中申明对端支持的 HdrScale and DataScale 记录下来
  • 一旦完成 P, NP, and Cpl 对应数据记录,则将 FI1 标志置 1
  • 在 Non-Flit 模式下,当收到 3 种专用信用量的 FC unit 数据后,则将则将 FI1 标志置 1
  • 在 Flit 模式下,当收到 6 种信用量的 FC unit 数据后,则将则将 FI1 标志置 1
  • 一旦完成 FI1 标志置 1,则表明已经记录对端设备的 P, NP, Cpl 对应的 FC unit 数值,此时从 FC_INIT1 退出,进入 FC_INIT2

3.2 FC_INIT2

在 FC_INIT2 状态下,通过发送 InitFC2 DLLPs 完成信用量信息的再次确认。

在 FC_INIT2 状态下,会进行如下操作

  • 事务层阻塞当前 VC 的 TLP
  • Non-Flit 模式下,按顺序传输 3 种类型的 InitFC2 DLLPs
    ▪ InitFC1-P [Dedicated] (first)
    ▪ InitFC1-NP [Dedicated] (second)
    ▪ InitFC1-Cpl [Dedicated] (third)
  • Flit 模式下,按顺序传输 6 种类型的 InitFC2 DLLPs
    ▪ InitFC1-P [Dedicated] (first)
    ▪ InitFC1-NP [Dedicated] (second)
    ▪ InitFC1-Cpl [Dedicated] (third)
    ▪ InitFC1-P [Shared] (fourth)
    ▪ InitFC1-NP [Shared] (fifth)
    ▪ InitFC1-Cpl [Shared] (sixth)
  • 设置 DataFC, DataScale, HdrFC, and HdrScale 如表 Table 3-2 和 Table 3-3
  • 此处不推荐大家耗费很多时间在 share credit 上面,因为当前主流 PCIe IP vendor 对 share credit 的支持不够完善,目前几乎没有已商用的支持 share credit 的产品。
  • 为了保证 InitFC1 DLLP 能够得到足够的传输频率,此时数据链路层会阻塞其他类型的传输,例如阻塞 Ordered Sets), Ack and Nak DLLPs (when applicable), 以及其他 VC 的 TLP
  • 如果收到 InitFC1 and InitFC2 DLLPs 会进行如下处理:
  • 忽略 DLLPS 中的 HdrFC, HdrScale, DataFC, and DataScale 数值
  • 收到任何 InitFC2 DLLP,则将 FI2 标志置 1
  • 一旦收到当前 VC 所属的任何 TLP,任何 UpdateFC DLLP 或者任何 Optimized_Update_FC(Flit 模式),则将 FI2 标志置 1
  • 满足如下条件则表示流程初始化流程完成并且退出 InitFC2:
  • FI2 标志已置 1
  • Scaled Flow Control 已生效,发送侧发送的当前 VC 的 UpdateFC DLLPs 中的 HdrScale and DataScale 为 01b, 10b, or 11b。note:此时不允许发送 00 的 Scale 数值。
  • Scaled Flow Control 不支持或者不生效,发送侧发送的当前 VC 的 UpdateFC DLLPs 中的 HdrScale and DataScale 为 00b。note:此时不允许发送 01b, 10b, or 11b 的 Scale 数值。

3.3 Scaled Flow Control

Scaled Flow Control 机制目的就是现有 FC DLLP 字段位宽分布不修改的情况下,增加 credit 数量上限的方法,即用比例缩放的方式描述 credit。当 Scale Factor 为 10b 时,此时表示放大 4 倍,这样情况下,有限的 FC DLLP filed 字段能够表示的 credit 上限就增加了。

END

作者:IC小鸽
文章来源:IC小鸽

推荐阅读

更多 IC 设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
22359
内容数
1354
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息