Other Parts Discussed in Thread: SYSBIOS
Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
代表现场团队发布
如以下 wiki 所示
processors.wiki.ti.com/.../BIOS
在 AM572x TI-RTOS 上具有用于 线程调度的 SMP 支持。
跟进问题
- 外设库是否可以识别 SMP? 我只关注 A15内核。
- 文件系统? TCP/IP 堆栈?
- 它对于应用是透明的、还是需要根据应用用例进行本地处理?
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.
Other Parts Discussed in Thread: SYSBIOS
工具/软件:TI-RTOS
代表现场团队发布
如以下 wiki 所示
processors.wiki.ti.com/.../BIOS
在 AM572x TI-RTOS 上具有用于 线程调度的 SMP 支持。
跟进问题
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
[引用用户="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
卡洛、
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