【PCIe】PCIe 读完成边界 (RCB) 介绍

您所在的位置:网站首页 riffa框架 【PCIe】PCIe 读完成边界 (RCB) 介绍

【PCIe】PCIe 读完成边界 (RCB) 介绍

2023-03-08 07:54| 来源: 网络整理| 查看: 265

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

📢 声明:

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

文章目录 RCB 定义RCB 设置RCB 应用举个例子 参考

RCB 定义

  Read Completion Boundary (RCB),读完成边界,是 Completer 响应读请求的一种地址边界对齐策略,应用于 CplD。

RCB 设置

  RC 的 RCB 可以为 64B 或 128B,默认 64 B;EP、Bridge、Switch 等其他设备的 RCB 只能为 128 B。在 RC 中,Link Control Register 中的 Read Completion Boundary 字段指示目前采用的 RCB 的值,如图 1 所示,为 0 表示 64 B,为 1 表示 128 B。在 EP/Bridge 中,可通过系统软件配置该寄存器中的 RCB 为 64 B 或 128 B,来指示其上游 RC 采用的 RCB 值。

在这里插入图片描述

▲ 图 1:Link Control Register RCB 应用

  对于 IO 请求或 Configuration 请求,一次读写请求的 Data Payload Length 必须为 1 DW。加之 Address[1:0] = 0 已经实现了 DW 对齐,所以 IO 和 Configuration 请求的 Completion with Data (CplD) 不存在 RCB 违例的情况。

  对于 Memory 读写请求,虽说没有 1 DW 的限制,但为了防止某设备长时间占用 PCIe 总线,PCIe 发送请求设置了 MPS 及 MRRS 限制,读写不能超过 MPS/MRRS 规定的 Size。对于一笔 Memory Read 请求 (MRd),除了 MPS、MRRS 的限制,还要一个最基本的要求:不能跨 4 KB 边界,即读写的起始地址 Address 到 Address + Length*4 不能跨 4 KB 边界。此外,还需遵循 RCB 相关规则,对一笔读请求响应一笔或多笔 CplD。(注意:TLP Header 中的 Length 单位为 DW,即 4 B)

  满足 RCB 规则的 Completion 响应策略(或称拆分策略)如下:

若读请求地址区间 (Address ~ Address+Length*4) 不跨 RCB 边界,只能放在一个 CplD 里。若读请求地址区间跨 RCB 边界,可以只发一笔 CplD,也可以以 RCB 为地址边界分多笔 CplD 进行响应,多个连续的 CplD 地址递增。

  只有一笔 CplD 的情况好理解,对于一笔读请求的多笔 Completion,这么说可能还不够清晰,我们换种方式:

从 Data Payload Size 角度讲,第一笔 CplD 的 Data Payload Size 为 RCB*N - Address,第一笔和最后一笔 之间 CplD 的 Data Payload Size 必须为 RCB 的整倍数,最后一笔的 Size 在 MPS/MRRS 范围内不作要求。

从起始地址讲,第一笔 CplD 的地址为读请求的地址,从第二笔 CplD 开始,起始地址 (LA) 必须为 RCB 地址对齐,从第三笔 CplD 开始,起始地址在上一地址基础上累加 RCB*N,RCB*N 即上一 CplD 所携带的 Data Payload Size。

举个例子

  对于 RCB = 64 B 的 RC,其收到了一笔起始地址为 0x0020h、长度为 256 B 的 MRd 请求,那么 RC 在回复 CplD 时,其回复的 CplD 可以有以下几种情况:

回复 1 笔: 256 回复 2 笔: 32, 22496, 160160, 96224, 32 回复 3 笔: 32, 64, 16032, 128, 9696, 128, 3296, 64, 96160, 64, 32 回复 4 笔: 32, 64, 64, 9632, 64, 128, 3232, 128, 64, 3296, 64, 64, 32 回复 5 笔: 32, 64, 64, 64, 32 不能拆分为 6 笔及以上的 CplD 参考 Read-Completion-Boundary Xilinx FPGA 的 PCIE 设计 PCIe 一些系统参数(MPS, MRRS, RCB)的深度解析

— END —

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

⬆️ 返回顶部 ⬆️



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3