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:AM6442 R5F 性能 — AM3559 的一半?

Guru**** 2756805 points

Other Parts Discussed in Thread: SYSCONFIG, SYSBIOS, AM6442, AM3359

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1599039/am6442-am6442-r5f-performance---half-of-am3559

器件型号: AM6442
Thread 中讨论的其他器件: AM3359、SysConfig、SYSBIOS

大家好、E2E 专家:

我们将相对复杂的应用程序(包括 LwIP、USB、GPMC 等)从旧的 AM3359 COR8 硬件移植到 AM6442。 使用具有 800MHz 的相同 ARM v7 内核 (AM 6442 上的 R5FSS0-0)、我们使用新器件实现了类似的性能。 但是、我们发现新硬件/软件的速度大约是旧硬件/软件的一半(相同任务分别需要大约两倍的 CPU 负载)。

可以得出:

ARM v7 架构相同的器件
与 DDR3 相比、DDR4 的性能更高
TI SYS/BIOS 替换为 FreeRTOS
EDMA 传输到 GPMC、替换为 IPC/共享存储器通信到执行 GPMC 传输的第 2 个 R5F 内核(CPU 之间的总线冲突不是瓶颈、如果第 2 个 CPU 几乎什么都不做,也不会发生变化)
更新和更好 (?) 编译器、优化(2 级/3 级)
两种器件中的浮点硬件
AM3359 应用从 DDR 运行、AM6442 同时使用 DDR 和 MSRAM(尤其是两个内核之间共享的非可缓存 MSRAM 区域)、我们尝试使用 TCM 时几乎没有改进。

性能差的原因是什么?

在 AM6442:Cortex R5F 性能 — 处理器论坛-处理器 — TI E2E 支持论坛中、您可引用 https://www.ti.com/lit/an/spracv1b/spracv1b.pdf?、ts = 1707324024385&ref_url=https://www.253A%252F%252Fwww.bing.com%252F

有一个表格表明 MSRAM 比 DDR 快得多。 不过、我们发现 AM3359 DDR 速度快于 AM6442 MSRAM + DDR。

我假设 MMU / MPU 设置存在问题、请在下面找到 SysConfig。

任何其他提示?

mpu_armv71.$name       =“CONFIG_MPU_REGION0";“;
mpu_armv71.size        = 31;
mpu_armv71.attributes    =“Device";“;
MPU_armv71.accessPermissions =“Supervisor RD+WR、User RD“;
mpu_armv71.allowExecute   = false;

mpu_armv72.$name       =“CONFIG_MPU_REGION1";“;
mpu_armv72.size        =15;
MPU_armv72.accessPermissions =“Supervisor RD+WR、User RD“;

mpu_armv73.$name       =“CONFIG_MPU_Region2";“;
mpu_armv73.baseAddr      = 0x41010000;
mpu_armv73.size        =15;
MPU_armv73.accessPermissions =“Supervisor RD+WR、User RD“;

mpu_armv74.$name    =“CONFIG_MPU_REGION_GPMC2FPGA";“;
mpu_armv74.baseAddr  = 0x50000000;
mpu_armv74.allowExecute = false;
mpu_armv74.isCacheable = false;
mpu_armv74.size     = 25;
mpu_armv74.isBufferable = false;
mpu_armv74.tex      = 0;
mpu_armv74.attributes =“Device";“;

mpu_armv75.$name       =“CONFIG_MPU_Region3";“;
MPU_armv75.accessPermissions =“Supervisor RD+WR、User RD“;
mpu_armv75.baseAddr      = 0x70000000;
mpu_armv75.size        = 21;

MPU_armv76.$name    =“CONFIG_MPU_REGION4";“;
mpu_armv76.baseAddr  = 0x70060000;
mpu_armv76.attributes =“NonCached";“;
mpu_armv76.allowExecute = false;
mpu_armv76.size     =15;

mpu_armv77.$name    =“CONFIG_MPU_REGION5";“;
mpu_armv77.baseAddr  = 0x701D0000;
mpu_armv77.size     =16;
mpu_armv77.attributes =“NonCached";“;
mpu_armv77.allowExecute = false;

mpu_armv78.$name  =“CONFIG_MPU_REGION6";“;
mpu_armv78.baseAddr = 0x80000000;
mpu_armv78.size  = 31;

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

    您好:

    AM64x MSRAM 性能高于 DDR 存储器是有效的。 您分享的参考链接也符合这一理解。

    但是、为了更好地分析所报告的、即与 AM335x 相比、MSRAM 或 DDR 性能似乎更差的观察结果、您能否澄清如何执行性能测试?

    具体而言、它将有助于了解:


    •使用什么测试方法来评估 MSRAM 和 DDR 性能

    是执行的基准测试或应用程序代码、并且是放入的代码和数据  已缓存  或  非缓存  地区?


    如果可能、请共享完整的测试项目(测试代码)。

    根据这些详细信息、我可以查看设置并帮助确定性能可能会下降的原因、尤其是与 AM335x 相比。

    没有这些信息、就很难提供准确的建议或结论。

    此致、
    Anil

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

    您好 Anil、

    感谢您的答复。

    我们发现在 TI SysBIOS 和 FreeRTOS(timestamp、taskP_loadGetTotalCpuLoad 等)中使用 CPU 负载测量工具比较最终应用程序代码时性能有所下降 。

    AM3359 应用完全使用缓存 DDR3(我在第一次发布时发送的 AM6642 存储器配置)中的代码和数据运行。

    因为很难分析整个应用程序、我开始使用我可以发送给您的几个基准来设置较小的项目。 我需要更多的时间来获得合理的结果。

    同时 还有一些其他问题:

    缓存 MSRAM 也是有意义的吗?

    在哪里可以了解有关 AM6442 中几种 MPU 配置的更多信息? 我在 TI 文档中没有找到很多内容。

    我有 ARMRegisteredCortexRegistered-R 系列版本:1.0 程序员指南 ARM DEN 0042A 版权所有Copyright2014 ARM。  ID071714. 这是否适用于 AM6442?

    TI 是否有更多适用于 AM6442 的文档? (我有 TRM SPRUIM2G 和数据表 SPRSP56F,都没有提及高速缓存等)

    谢谢。此致、

    Frank

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

    您好 Anil、

    正如宣布的,我做了一些进一步的调查,你可以找到结果在.pdf 包括。

    我想我找到了我们的应用在 AM6442 R5F 上运行速度缓慢的主要原因:AM3359 A8 具有可用的 256K 字节 L2 高速缓存、该高速缓存为 AM6642 SoC 中的 A53 内核保留。

    请参阅 pdf 文件中的详细信息。

    仍有未决问题:

    为什么 AM6442 需要两倍的时间来缓存来自 DDR4 的代码(更快)? 还存在 L2 缓存现象?

    请参阅我上一篇文章中有关文档的问题。

    恐怕我们必须将所有代码从 R5F 移植到 A53 内核、才能达到合理/类似的性能。 我们的应用程序太大、无法适应 MSRAM(也没有帮助)/ TCM(真的太小)。 我们使用 SDK mcu_plus_sdk_am64x_10_00_00_20、我们 不想在终点线之前更改马匹。 遗憾的是、FreeRTOS 对于 A53 来说是“实验性的“、似乎对 USB 和 LWIP 等没有太多支持。

    您会建议您做什么? 有更好的想法吗?

    谢谢、此致

    Frank

    e2e.ti.com/.../speed_5F00_am3359_5F00_vs_5F00_am6442_5F00_r5f.pdf

    尽管有 Q&A 代码、但我还添加了 CCS 工程:

    e2e.ti.com/.../test_5F00_cpuspeed_5F00_am64x_2D00_sk_5F00_r5fss0_2D00_0_5F00_freertos_5F00_ti_2D00_arm_2D00_clang2.zipe2e.ti.com/.../test_5F00_cpuspeed_5F00_am3359.zip

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

    您好、

    指定的专家目前已离职。 请期待收到延迟的回复。

    感谢您的耐心。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您提供的信息。 主要问题似乎很明显、我们开始迁移到 A53。 不过、我也很高兴能回答我的其他问题。

    我仍然很有耐心。

    此致、

    Frank

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

    您好 Frank、

    对延迟深表歉意。 我可以看到您使用 CycleCounter API 进行时间测量。  

    请使用 GTC 计时器 API 尝试一次并更新结果。

    有关更多信息、请参阅  DRIVERS_GTC可 在此处找到 GTC API。 

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您的答复。 感谢您向我介绍了 GTC、因为我到目前为止还没有找到它。 我认为这是我们时间戳处理的不错选择 — 我们到目前为止使用了 125MHz ECAP 计时器、因此我们可以释放该外设用于其他目的。 已尝试 GTC 并发现它在某个 200MHz 时钟 (MAIN_PLL2_HSDIV5_CLKOUT) 下运行。

    不过、这与我最初提出的问题无关。 GTC 既不会测量 CPU 负载、也不会帮助解决缓存问题。

    我们不是、FreeRTOS 使用  CycleCounter P 进行负载测量。 顺便说一下、带着一些有趣的绑架结果、请参阅 AM6442:R5F FreeRTOS CPU 负载测量非常不正确!? -基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    回到初始问题(请参阅上文):

    在哪里可以了解有关 AM6442 中几种 MPU 配置的更多信息? 我在 TI 文档中没有找到很多内容。

    我有 ARMRegisteredCortexRegistered-R 系列版本:1.0 程序员指南 ARM DEN 0042A 版权所有Copyright2014 ARM。  ID071714. 这是否适用于 AM6442?

    TI 是否有更多适用于 AM6442 的文档? (我有 TRM SPRUIM2G 和数据表 SPRSP56F,都没有提及高速缓存等)

    此致、

    Frank

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

    您好 Frank、

    在哪里可以了解有关 AM6442 中几种 MPU 配置的更多信息? 我在 TI 文档
    中没有找到过多内容

    有关 R5F MPU 设置、请参阅  关于 MPU 以了解详细信息。

    [引用 userid=“4914" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1599039/am6442-am6442-r5f-performance---half-of-am3559/6221473 ]但是、这与我的初始问题无关。 GTC 既不会测量 CPU 负载、也不会帮助解决缓存问题。

    我们看到了与 FreeRTOS 应用相关的周期计数器 (PMU) 问题。 因此、建议使用 GTC 计时器并测量基准测试、看看数字是否有任何改进。

    尝试了 GTC 并发现它在某个 200MHz 时钟 (MAIN_PLL2_HSDIV5_CLKOUT) 下运行。

    我可以看到 MAIN_PLL2_HSDIV5_CLKOUT 提供 225MHz 时钟。 请参阅下图。

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您提供 ARM 文档的链接。

    我们看到了 FreeRTOS 应用的周期计数器 (PMU) 存在问题。 这就是为什么建议使用 GTC 计时器并测量基准测试、以查看数字是否有任何改进。

    我们的应用程序过于复杂、无法在不费力的情况下构建合理的时间测量(多个任务,USB 和 lwip 通信等)。 我认为、_real_良好的 RTOS 应该可以提供可靠的时间和负载测量、不应该吗?

    您能详细介绍一下这些问题吗?

    [引述 userid=“16414" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1599039/am6442-am6442-r5f-performance---half-of-am3559/6223174

    我可以看到 MAIN_PLL2_HSDIV5_CLKOUT 提供 225MHz 时钟。 请参阅下图。

    [/报价]

    图像似乎来自时钟配置工具、在哪里可以找到? (我记得,有一个。)

    在 r5fss0-1 中配置并编程 GTC 后、我会测量 200 和 225MHz、具体取决于 r5fss0-0 是否正在运行。 r5fss0-0 中的某项内容似乎会改变 PLL、是否知道如何找出? (LWIP/USB?)

    详情见下文。

    谢谢、此致

    Frank

    PS:我这里有 2 个不同的账户、因为 TI 到目前为止无法更改我旧账户的电子邮件地址。

    GTC 测量:

      通过 GPIO 结束时、事件“111"会“会以 10us 的周期从 FPGA 触发的 ISR 记录 ECAP(第 1 列、如果由 r5fss0-1 启动)和 GTC(最后两列)。 计算出 10 个事件之间的差值(100us = 12500 / 20000 / 22500 个计数)。

    >> 2376588913 - 2376568897 = 20016

    >> 1902245412 - 1902232902 = 12510

    >> 3704199704 - 3704177207 = 22497

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    图像似乎来自时钟配置工具、从哪里可以找到? (我记得,有一个。)[/报价]

      有关时钟树工具、请参阅 dev.ti.com/.../

      如需了解在每个 Sitara SOC 上进行开发所需的所有工具、请参阅 www.ti.com/.../spradr2.pdf。

    在 r5fss0-1 中配置并编程 GTC 后、我将测量 200 和 225MHz、具体取决于 r5fss0-0 是否正在运行。 r5fss0-0 中的某项内容似乎会改变 PLL、是否知道如何找出? (LWIP / USB?)

    不建议更改 PLL、因为 PLL 的此输出将进入不同的 IP 并会影响功能。  

    我们的应用程序过于复杂、无法在合理的时间测量(多个任务,USB 和 lwip 通信等)中进行构建、而且无需花费大量精力。 我认为、_real_良好的 RTOS 应该能够提供可靠的时间和负载测量、不应该吗?

    有任务 API 可用于获取加载值。   有关详细信息、请参阅任务。

    事件'111'会 在 通过 GPIO 结束时从 FPGA 触发的 ISR 记录 ECAP(第 1 列、如果由 r5fss0-1 启动)和 GTC(最后两列)、周期为 10us。 计算出的 10 个事件之间的差值(100us = 12500 / 20000 / 22500 个计数)。

    你能详细说明一下上述情况吗? 我不明白这里的测试。

    此外、您分享的之前应用会使用一些数学计算、而不是 ePWM。 该基准是否未被使用?

    [/quote]