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.

[参考译文] AM5728:如何提高 PCIe 性能?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1402393/am5728-how-can-i-improve-pcie-performance

器件型号:AM5728

工具与软件:

你(们)好

我们将通过 AM5728的 EMIF 使用 DDR3存储器、将从地址0xBD000000开始的16MB 存储器设置为 PCIe 的入站区域。 此设置用于运行 Windows 的 PC。 PCIe 配置当前设置为具有单通道的 PCIe 2.0、理论上应提供高达500MB/s 的传输速度 然而、观察到的性能明显较低、仅为2.5MB/s

正在使用的源代码来自 PCIe.c 文件、该文件位于 PDK 版本1.0.19的 am5728器件目录下。

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

    Hi Daewon,

    您能否检查 PCIe 驱动程序是否将 DMA 用于存储器传输? 您提到的性能显著下降、人们会想到缺乏 DMA 的使用。

    此致、

    Takuma

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

    感谢您的答复。

    PDK 中是否有任何可供参考的参考示例? 在我们使用的系统中、指定区域的使用方式与共享存储器类似、这会导致缓存一致性问题。 我们目前正在通过使用写回和失效运算来管理此功能。 如果我们使用 DMA、这些问题能否得到妥善处理?

    谢谢你。

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

    Hi Daewon,

    由于 DMA 与其他启动事务的内核没有缓存一致性、因此 DMA 将需要更严格的缓存管理。 DMA 的功能是将数据事务卸载到 DMA 而不是 ARM 内核、因此、如果 ARM 内核成为瓶颈、这应该能够提高性能。

    至于参考示例、我们这里有一个旧的 PCIe 示例: https://git.ti.com/cgit/keystone-rtos/common-csl-ip/tree/example/pcie/write_loopback/rc/rc_write_loopback_app_main.c?h=legacy_master。  

    RTOS PCIe 已被取消适用于较新的平台、并且这个旧的 PCIe 示例未维护、因此我们的支持将受到限制。 不过、我认为这是最好的在线示例。 否则、可以参考通用的非 PCIe 特定的 EDMA 示例。

    此致、

    Takuma