This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6442:ENET-LLD 示例中数据包 DMA 的高延迟

Guru**** 1963975 points
Other Parts Discussed in Thread: AM6442
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1067833/am6442-high-latency-on-packet-dma-in-enet-lld-example

部件号:AM6442

大家好,

使用 AM6442 GPEVM 板和 MCU+SDK v08.01。 我正在对 R5F0_0上的 MCU+SDK 中包含的 Enet_layer2_icssg 网络示例进行基准测试。

设置:一根以太网电缆将 ICSSG 端口1连接到 EVM 上的端口2。

软件:来自 Examples/networking_ene_layer2_icssg 的 enet_layer2_icssg 示例。 我没有评论 DULE_MAC_MODE 的#define 以使用两个端口,我还不得不将 ENET_CFG_TX_Channels_NUM 更改为2 (根据注释),并发布“gmake libs”以重新编译 ENET-LLD 驱动程序。 我还添加了一些简单的代码,在示例启动时在第一个端口上传输单个数据包。 由于此示例可回波所有收到的数据包,因此第一个传输将启动连续的数据包流,这些数据包在 ICSSG 端口之间来回传输。

端口1传输256字节的数据包,然后等待接收到响应数据包(从另一个 ICSSG 端口回传)。 从使用 EnetDma_submitTxPktQ()提交 TX 数据包到接收下一个 RX 中断平均需要~62us。 我正在使用 ClockP_getTimeUsec()来计算提交 TX 数据包到接收 RX 中断之间的时间。 在千兆位速度下,数据包在整个线路上只需~2us,而在两端 PHY 延迟时,数据包的传输速率应小于~1us。 这让我相信大多数延迟必须在数据包 DMA 路径中。

问题:

1.我的分析是否正确,数据包 DMA 可能会导致高延迟?

2.是否有任何选项可优化 ENET-LLD 的数据包 DMA 延迟?

如果没有,ENET-LLD 是否有任何方法可以绕过数据包 DMA 以最大程度地减少延迟?

我们希望在 ICSSG 端口上以千兆位速度使用256字节数据包实现<8us (从 TX 到 RX)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在减少延迟方面没有取得太大的进展,但下面是我迄今为止所尝试的:

    1.已验证我正在使用-O2编译作为发行版本(也尝试使用-O3,-OS 和-Ofast)。

    2.将堆栈和 EnetMp_rxTask()函数重新定位到 TCM 而不是 MSRRAM。 不幸的是,本示例中的大部分工作都是在 ENET 驱动程序的 DMA 功能中完成的,由于它的大小和复杂性,因此不容易重新定位到 TCM。 我还发现这条线程[1]在讨论 MRAM 与 TCM 性能方面非常有帮助,但也令人失望,因为它表明 MRAM (唯一一个足以容纳除 DDR 之外的 ENET 驱动器的选项)在 R5F 上的表现非常差,至少在 AM65x 上。 我假设 AM64x 上的 MSRAM 性能相似。

    3.我已经对该示例做了一些小的优化,例如在主循环中删除冗余队列初始化等

    即使有上述变化,我也会看到在队列 TX 数据包和从其他 ICSSG 接收响应数据包之间的延迟~60US。

    接下来,我计划设置两个 EVM 板,并将一个板上的 ICSSG 端口连接到另一个板上的 ICSSG 端口(而不是在同一个 EVM 上将一个 ICSSG 端口回路到另一个)。 这将导致更好的性能,因为每个 R5F 只需要为1个端口提供服务,这就是最终应用程序的工作原理。 但是,鉴于我到目前为止所看到的延迟,我很怀疑我能否在两个 AM6442之间达到<8us 的 TX 到 RX 延迟。

    如果有方法在轮询模式下配置 ENET-LLD 并绕过 PKTDMA,这可能有助于减少延迟。 但到目前为止,我还没有找到方法来实现这一目的。 如果有人有任何建议,我们将不胜感激!

    [1] https://e2e.ti.com/support/processors-group/processors/f/processors-forum/840395/am6548-r5f-instruction-fetch-performance

x 出现错误。请重试或与管理员联系。