✨前言:
PCIe总线的存储器写请求、存储器读完成等TLP中含有数据负载,即Data Payload。Data Payload的长度和MPS(Max Payload Size)、MRRS(Max Read Request Size)和RCB(Read Completion Boundary)相关。
✨一、RCB介绍
🌟1.1 什么是RCB?
RCB(Read Completion Boundary)是PCI Express(PCIe)总线中定义的一个参数,它指定了在完成PCIe内存读取请求时可以返回的数据包的最大对齐字节边界。RCB的值通常可配置为64字节或128字节。
这个参数的作用是确保读取响应(Completion)数据包中包含的数据不会跨过特定的对齐边界。简而言之,RCB定义了数据包中的数据应该如何在一个或多个连续的PCIe包中被分割传输,以便于数据的处理和高效率的内存访问。
RCB的设置在系统性能优化中很重要,因为它影响着数据在PCIe接口上传输的效率。合适的RCB设置可以帮助减少延迟和提升带宽的利用率,从而提高整个系统的性能
🌟1.2 RCB配置
在PCIe规范中,RCB主要有两个可选的大小:64字节和128字节。**RC 的 RCB 可以为 64B 或 128B,默认 64 B;EP、Bridge、Switch 等其他设备的 RCB 只能为 128 B。**这意味着当设备完成读请求时,返回的数据包大小不超过设置的RCB值。选择适合系统需求的RCB大小,可以在保证数据传输稳定性的同时,优化系统性能。
64字节RCB:较小的RCB设置会导致更频繁的数据包传输,这在某些情况下可能提高小数据块传输的效率。例如,对于一些需要低延迟的应用,较小的数据包可能意味着更快的响应时间。
128字节RCB:较大的RCB设置减少了数据包传输的频率,有利于大量数据的传输效率。在数据吞吐量要求较高的应用场合,较大的RCB可以减少系统的总体开销,提高数据传输速度。
🌟1.3 RCB的应用
当主机或设备在PCI Express (PCIe) 总线上发出一笔Memory Read请求(MRd)时,目标设备或内存控制器需要按照相应的规则进行处理,并生成一个或多个完整的响应(Completion,Cpl)。为了满足RCB(Read Completion Boundary)规则,返回的数据可能需要被拆分成多个CplD(Completion with Data)数据包。这里是一个简化的步骤说明,展示满足RCB规则的Completion响应策略:
步骤 1: 分析MRd请求 设备首先分析MRd请求,获取以下信息: 读取的起始地址(Address) 读取的数据长度(Length)
请求者的ID和Tag,以便之后能将完成数据与请求正确匹配 步骤 2: 检查RCB设置<