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:DSP 软件执行时间

Guru**** 2563960 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/613774/am5728-dsp-software-execution-time

器件型号:AM5728

您好!

我们有一个基于 AM5728的系统、该系统运行来自之前使用 TI 6482的设计的移植代码库。  AM5728上的 C66x 内核在 Sys/BIOS 下以750MHz 运行。  6482上的 C64x 内核在1GHz 的 DSP/BIOS 下运行。  在这两个系统中、我们都从 FPGA 获取数据。 我们看到5728的实现速度比6482慢2.5到3.0倍。  我想知道从哪里开始了解这种情况的发生原因。

更多信息: AM5728具有我们从 EVM 设计中基本取消的 DDR3。  DSP 已  启用尽可能多的 L1/L2高速缓存。   DSP 通过 PCIe 以5G x 1通道连接到 FPGA。  从 FPGA 到 DSP 的数据是通过从 FPGA 到 DSP 的 PCIe 写入的。  数据被写入 L2SRAM 存储器、这是32k 高速缓存后留下的一部分、然后 DSP 获得中断 并将数据复制到 DDR3存储器以供后续处理。  这样做是为了避免  每次 DSP 希望从  FPGA 访问数据时、必须进行高速缓存使 DDR3存储器失效。  如上所述、然后处理来自 DDR3的数据的代码 在 AM5728 DSP 上的速度要慢2.5至3.0倍。  我想、在我们的周期时间中、每个中断~70 μ s、数据从 PCIe 到达 L2SRAM 的时间大约为该时间的50%。  

我想知道 、进入 L2RAM 的大量数据是否会阻止高速缓存有效工作、或者只是阻止 DSP 内核有效访问内存。  换句话说、PCIe 将数据传输到 L2SRAM 是否会导致我们的处理过程中止?

如果对此有任何建议或见解,将不胜感激。

谢谢、

Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我想检查几件事:
    1) DSP 速度(750MHz 与1000MHz)
    2) 2) DDR 速度和 L1D、L1P、L2高速缓存设置
    3) 3) C6482是 PCI 接口、而不是 PCIe、对吧?
    4) 4) C6482是 C64x+内核、AM5728是 C66x 内核、您是否使用相同的编译器选项? 您可以为 C66x 尝试-mv6600吗?
    5) 5)当数据从 FPGA 写入 DSP 时、如果 FPGA 侧有 EDMA、则写入使用 EDMA 或仅 CPU 写入。
    6) 6)是否有方法可以将处理时间分为几个步骤:
    a.从 FPGA 开始写入到位于 DSP 端的点数据的时间;
    b.中断延迟
    c.从 L2复制到 DDR 的时间
    d. DDR 中的处理器时间

    然后、我们可以更好地了解哪些因素会减慢处理速度。 为什么只从 FPGA 直接写入 DDR?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Eric 的回复。 在过去的一天中、我发现这一问题的主要原因。 在可能的情况下、将底层代码设置为6482中的 VCP、如果 VCP 不存在(5728上也称为 C66)、则使用软件 Viterbi。 显然、基于软件的 Viterbi 要慢得多。 但是、在将周期与5728和6482之间的周期进行比较时、我们仍然无法解释一些变化。 我们可以解释其中的一些内容、因为在 Sys/BIOS 中、HWI 处理看起来需要5-8 μ s 的时间。 当我们每70微秒获得一次中断时、这是一个位命中。 但是、即使考虑到这一点、我们的周期时间仍然会有所不同、我认为这与我将 L2SRAM 用作 PCIe 写入的目标存储器有关。 如果 PCIe 将数据块写入 L2SRAM、并且它也是 DSP 的主高速缓存、那么它似乎会导致争用并影响速度、这是无法观察到的。 您能就此发表评论吗? 我之所以使用 L2SRAM、是为了避免 PCIe 数据发生 cache_invalidates。 但我可能必须重新考虑这种做法。

    我将回答您的问题、因为这也会带来其他想法。

    1) DSP 速度(750MHz 与1000MHz)

    是的、5728上的 DSP 以750MHz 的频率运行、已确认这一点。 6482上的 DSP 的频率为1000MHz。 但这只是25%的差异、不少于50%。


    2) 2) DDR 速度和 L1D、L1P、L2高速缓存设置

    6482上的 DSP 从内部存储器运行。 由于 AM5728上的内部存储器受限得多、这是不可能的、因此它以533 MHz 的频率从外部 DDR3运行。 L1D、L1P 和 L2高速缓存被最大化并在5728上启用。

    3) 3) C6482是 PCI 接口、而不是 PCIe、对吧?

    在6482上、它是快速 EMIF、数据由6482的 DMA 移动。 在5728上、数据通过 PCIe 从 FPGA 直接存储器写入来移动。 换言之、从5728 DSP 的角度来看、数据仅显示在存储器 L2SRAM 中、然后移至 DDR。

    4) 4) C6482是 C64x+内核、AM5728是 C66x 内核、您是否使用相同的编译器选项? 您可以为 C66x 尝试-mv6600吗?

    这里是个好地方。 我甚至没有意识到5728 DSP 的设置中有 mv64+。 我更改为-mv6600、但没有看到周期时间明显减少。

    5) 5)当数据从 FPGA 写入 DSP 时、如果 FPGA 侧有 EDMA、则写入使用 EDMA 或仅 CPU 写入。

    写入操作与 DMA 类似。 我们在 Altera 芯片上使用 NWL PCIe 内核。 写入以32字(32位)块形式提供。

    6) 6)是否有方法可以将处理时间分为几个步骤:

    a.从 FPGA 开始写入到位于 DSP 端的点数据的时间;

    由于这是一个在后台发生的 DMA 进程、DSP 对此次不了解。 数据被写入 L2SRAM、然后 DSP 获得 MSI 中断。 即70微秒周期在 DSP 上开始时。 DSP 必须在下一个70 μ s MSI 中断之前完成所有任务。

    b.中断延迟

    这在另一个线程中测量并报告为5至9 μ s 之间。 这是通过执行任务工具观察到的。 看到这个线程。 e2e.ti.com/.../604259

    c.从 L2复制到 DDR 的时间

    我将需要对此进行检测。

    d. DDR 中的处理器时间

    这是很难测量的、因为执行实际工作、从 DDR 执行处理代码和数据所花费的时间经常被 PCIe 数据中断。 我在上面提到、我们需要以70微秒的间隔为 PCIe 中断提供服务。 但是、收集完所需数据后、我们需要在1毫秒内处理。 该处理跨多个 PCIe 中断。 因此、无法真正测量该处理时间。

    感谢您对此进行进一步的考虑。

    Chris