您好!
我目前正在尝试优化两个 TDA2xx 之间的 PCIe 传输。 我正在运行的测试可在此处找到:" \ti_componels\drivers\pdk_01_08_00_16\packages/ti\csl\examples\pce"。 一个 TDA2xx 用作 RC、另一个用作 EP。 该测试将16MB 的数据从 RC 发送到 EP、然后数据从 EP 环回 RC、并在此处与原始数据进行比较。 如果这些相同、则测试成功。 系统 EDMA 用于执行传输。
在当前状态下进行的测试中、未经任何修改即表明、当 RC 和 EP 均利用 Gen2传输速度时、PCIe 吞吐量为370Mbps。
阅读完一些文档后、我发现为了实现最佳性能、需要满足以下要求:
1) 1)设置 EDMA 传输参数、以便传输控制器提交尽可能少的传输请求
2) 2) EDMA TC 默认突发大小等于 PCIe 有效载荷大小
至于项目符号1)、我提到了这个表(在 SPRAC21中)。
在测试中、使用系统 EDMA 的 TC0。 我之前使用过 EDMA、因此我能够对(A/B/C) CNT 值进行实验。 例如、具有 ACNT=16K、BCNT=16M/16K 和 CCNT=1的原始测试(不符合上表)给出了370Mbps 的吞吐量。 当我将值设置为 ACNT=128、BCNT=128和 CCNT=1024 (这在表中是建议的)时、我得到的是330Mbps、更糟糕的情况。 我还应该尝试哪些仅涉及传输参数的操作?
关于项目符号2)、这是我需要澄清的地方。
-我无法确认 EDMA 的 TC0确实正在使用128B 的 DBS,我发现它在" \ti_componations\drivers\pdk_01_08_00_16\packages/ti\cSL\soc \tda2xx\hw_ctrl_core.h" CTRL_core_control_io_1_tC0_default_burst_size_mask 宏定义。 它不在任何地方使用、我不知道在哪里找到用于配置 TC 的代码。
-当我们说 PCIe 有效载荷大小时、这是否意味着它是在 TLP 中发送的数据的大小、不包括添加到其中的标头? 此外、在哪里可以设置 PCIe 传输的有效载荷大小? 我想它最多可以是128B、我根据 SPRABK5B 中的这个片段得出结论。 我的两个器件都是 KeyStone、它们是否不是(它们是 TDA2xx)?
我目前正在学习 PCIe 及其工作原理、因此请原谅我的困惑。 我只想获得一些帮助来优化这一特定测试、该测试涉及代码中设置所有这些参数的位置以及如何正确设置这些参数。
很抱歉这篇长文章、并提前感谢您。
此致、
Nick