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.

[参考译文] AM6548:关于两个集群之间的 STREX/LDREX。

Guru**** 2487055 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1435192/am6548-about-strex-ldrex-between-two-clusters

器件型号:AM6548

工具与软件:

您好、支持团队!

STREX/LDREX 指令无疑应在 CC_ARMSS0中有效工作、但它们在 CC_ARMSS0和 CC_ARMSS1之间是否可以正常工作?

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

    是的,当设置相干 SMP 时,像我们的 Linux 一样,负载存储独家使用 A53 L2控制器。 Linux SMP 依赖于这些指令。

     Pekka

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

    感谢您的 答复。

    我们已在 CPUECTLR 中为每个内核启用了 SMP 设置、并在 MMU 的"Page Table"条目中启用了可共享性位、这是相干 SMP 配置的一部分。 然而、这是否不足?

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

    那么、你有一致性工作、但你是说 LDREX STREX 对不起作用吗? 您是否遇到总线错误或问题是什么? 对于标有"正常可缓存"和"共享"的内存、独家内容应起作用。

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

    很抱歉这么晚才回复。

    我们已经确认 STREX/LDREX 指令本身执行正常、没有出现任何异常。 但是、根据使用 STREX/LDREX 在模块中观察到的行为、一个内核上存储的 STREX 值可能会被另一个内核上的 LDREX 读取为意外值。 换言之、缓存一致性似乎没有得到维持。

    到目前为止、我们一直使用 MSMC SRAM 作为 SRAM、但当我们尝试将整个 MSMC SRAM 区域设置为 L3高速缓存(值设置为8)时、有些情况下它可以正常运行、而有些情况下不能正常运行。

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

    对于同一集群上的两个内核、您是否具有与预期相同的工作顺序? 因此、一个 A53集群、两个不同内核上的两个线程可以正常工作、但如果是跨集群、则不能正常工作。

    无论天气如何、三级高速缓存都不会影响从逻辑上来说正确的一致性工作。

    请附上您正在运行的代码序列以及如何确保它们按照您认为的顺序在两个内核上运行的说明。

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

    很抱歉这么晚才回复。

    我们使用的测试程序有问题。 我们修复之后、测试程序就能正常运行。

    目前、测试程序在所有四个内核上都能按预期正常运行。

    感谢您的支持!