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.

[参考译文] RTOS/AM5726:SMP 支持

Guru**** 3001220 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/678860/rtos-am5726-smp-support

器件型号:AM5726
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

代表现场团队发布

如以下 wiki 所示

processors.wiki.ti.com/.../BIOS

在 AM572x TI-RTOS 上具有用于 线程调度的 SMP 支持。

跟进问题  

  • 外设库是否可以识别 SMP? 我只关注 A15内核。
  • 文件系统? TCP/IP 堆栈?
  • 它对于应用是透明的、还是需要根据应用用例进行本地处理?

 

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

    SMP 模式将不适用于 AM571x、因为它需要超过1A15内核。

    平台软件:驱动程序和 NDK/NIMU 未通过 SMP 配置验证。 默认使用 AMP。 如果从固定到特定内核的任务运行、则总体驱动程序应该起作用。

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

    Mukul/Clo、

    下面是摘要介绍 SysBIOS 中 SMP 模式功能的公共文档幻灯片。 它表示所有 SYSBIOS 线程类型和功能均已在 SMP 模式下进行了测试、某些运行时模块提供了一个特殊的 SMP 感知版本。
    processors.wiki.ti.com/.../Public_SmpBiosSlides.pdf

    幻灯片13至幻灯片16上的性能和基准显示了在 BIOS 内核中启用该功能时在 DRA7x/J6 (A15和 M4)和 K2H (A15)上测试的 SMP 和非 SMP 功能。通常、您会看到 SMP 编号更高、因为涉及的开销更大。 内核 API 需要获取内核间锁定、而不是在执行关键段之前简单地禁用中断。 如 Eric 所n`t、LLD 驱动程序默认仅在 AMP 模式下进行测试、因此可能需要进行其他完整性测试、以确保其不会影响功能。

    幻灯片17提供了一种将现有单核 AMP 模式应用移植到 SMP 模式的好方法、我将在这里进行总结:

    步骤1:启用 SMP 模式:

    BIOS.smpEnabled = true;

    注:将运行时模块更改为 inlcude SMP 感知版本。

    步骤2:对于初始完整性测试、强制所有任务在核心0上运行:

    Task.defaultAffinity = 0;  

    步骤3:演示合并的应用程序的基本功能后、

    对于使用的非实时/后台任务、请删除 Task.defaultAffinity 设置或将其替换为   

    Task.defaultAffinity = Task.Affinity_none;

    注意:为需要实时性能的关键任务提供默认关联性= 0。

    如果您对您的评估还有任何疑问、请告知我们。

    此致、
    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    卡洛
    >SMP 模式将不适用于 AM571x,因为它需要超过1A15内核。

    出于完整性考虑、Rogerio 希望我补充一点、虽然您最初的问题主要是针对 SMP 支持的 A15。
    AM572x 在 A15上支持 SMP、因为我们使用双路 A15 (+2 DSP)。
    AM571x/70x 不支持 A15上的 SMP、因为它们是单个 A15 (+DSP)器件
    但是、所有 AM57x 系列器件都具有两个双核 Cortex M4 (IPU1和2)-它们确实支持 SMP (如 wiki 中列出的)。

    希望这对您有所帮助。
    此致
    Mukul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Rahul /Mukul
    非常感谢
    我想再澄清一下对社区成员也有用的 SMP:
    -考虑到 AM572x 的情况,并且关注的是 A15内核上的 SMP,我担心的是内核如何管理队列、信标等。

    详情如下:

    1.如果在不同内核上调用 POST / Get、消息队列和信标是否正常工作? 我们可以启用它吗?
    2.如果从内核0中的 ISR 发出并在内核1上接收到信号量(二进制)或消息,是否会正常工作? 是否有任何限制/建议?
    3.建议使用哪些工具在多个内核之间实现数据同步、例如自旋锁、内存障碍等?
    4.在生成者和使用者运行不同 CPU 时,内核间的高速缓存一致,或需要显式失效以保持数据一致性。

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

    请参阅以下我的回答。 我还通知了 TI RTOS SMP BIOS 专家、以进一步了解内存限制。

    1.如果在不同内核上调用 POST / Get、消息队列和信标是否正常工作? 我们可以启用它吗?
    2.如果从内核0中的 ISR 发出并在内核1上接收到信号量(二进制)或消息,是否会正常工作? 是否有任何限制/建议?
    ->信标、n`t 队列没有任何内核关联。 如果您有任务和不具有核心关联性的 HWI、则可以在任何内核上的信标上发布和挂起。 为了获得更大的灵活性、可以为 HWI 和任务设置核心关联性、以强制在给定的内核上执行、但 SWI 始终执行内核0


    3.建议使用哪些工具在多个内核之间实现数据同步、例如自旋锁、内存障碍等?
    有关数据同步和内存限制、请参阅下面有关 SMP 模式执行问题的 E2E 讨论:
    e2e.ti.com/.../432673

    正如 Ashish 提到的:
    在 Cortex-A15上、需要设置障碍来保证正确的运行、而我们在 BIOS 内核中也有必要设置障碍。 所有 SYS/BIOS 同步原语在内部禁用中断(调用 Hwi_disable/enable)以保证相互排除。 在 SMP 模式下运行时、除了禁用中断外、基元还会获取内核间锁定。 Cortex-A15的内核间锁定实现执行必要的隔离指令。

    内核之间具有缓存一致性、或者需要在生成者和使用者运行不同 CPU 时显式失效以保持数据一致性。

    ->我需要与 TI RTOS 团队核实 SMP 模式配置是否提供了缓存一致的环境。 目前、我可以找到的有关此主题的唯一指导是时间关键型任务在 SMP 模式环境中利用热缓存的方案、如下所述:
    processors.wiki.ti.com/.../BIOS

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

    [引用用户="Rahul Prabhu"]

    内核之间具有缓存一致性、或者需要在生成者和使用者运行不同 CPU 时显式失效以保持数据一致性。

    ->我需要与 TI RTOS 团队核实 SMP 模式配置是否提供了缓存一致的环境。 目前、我可以找到的有关此主题的唯一指导是时间关键型任务在 SMP 模式环境中利用热缓存的方案、如下所述:
    processors.wiki.ti.com/.../BIOS
    [/报价]

    是的、高速缓存由多处理器 A15子系统中的 SCU 硬件保持一致。

    [引用用户="Rahul Prabhu"]

    3.建议使用哪些工具在多个内核之间实现数据同步、例如自旋锁、内存障碍等?
    有关数据同步和内存限制、请参阅下面有关 SMP 模式执行问题的 E2E 讨论:
    e2e.ti.com/.../432673

    [/报价]

    我想补充的是、诸如 GateMutexPri、GateHwi、信标等的 SYS/BIOS 同步基元也可以在 SMP 环境中使用。 例如、如果要保护数据结构不受在不同内核上运行的两个任务同时进行读-修改-写操作的影响、可以使用 GateMutexPri 来保护数据结构。

    最棒的

    Ashish

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

    你(们)好、Ashish

    谢谢你

    请考虑使用 RTOS,在哪里可以找到 SMP 示例 ?  有关如何将 API 用于 存储器的信息?

    是否可以获得代码示例,以显示如何通过 共享存储器共享信息?

    任何建议/信息都非常受欢迎

    有格栅

    卡洛

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

    卡洛、

    Processor SDK 中针对 A15内核的唯一 SMP 模式示例是 DRA7xx IPC 示例 、这些示例位于 IPC_3_47_01_00\examples\DRA7XX_BIOS_elf (主机配置使用启用的 SMP 模式)和 POSIX SMP 演示示示示例:

    POSIX n`t 显示了如何将 pthreads_barrier 用于任务同步、但据我所知、它没有任何内存限制。

    在 SMP 模式下、内核的单个副本在两个内核上运行、因此、正如 Ashish 提到的、应用开发人员可以使用门、信标等来实现任务之间的障碍和同步。 有关这些门的文档,请访问:

    请注意、逻辑门只能用于任务、不能用于 HWI 和 SWI、因为这些线程类型必须运行到完成而不会阻塞。

    此致、

    Rahul