我应该在异构多线程 CPU 上启用 SMP 吗?

Should I enable SMP on heterogeneous multi-threaded CPU's?

我正在为 big.LITTLE 开发板构建 Linux 内核,我一直在想 CONFIG_SMP 选项,它启用了内核的对称处理支持。 Linux 的文档说这应该在多线程处理器上启用,但我想知道对称多处理是否不仅可以在实际上对称的处理器上正常工作。 我了解 SMP 是什么,但我没有找到任何提示或文档说明它在为 ARM big.LITTLE.

构建的 Linux 上的使用

是的,如果您想使用多个内核,则必须启用 CONFIG_SMP。这本身将使所有内核(包括大内核和小内核)都可供内核使用。

然后,您有两个选择(我假设您使用的是主线 Linux 内核或与其差别不大的东西,例如不是 Android 内核):

  1. 如果您还启用 CONFIG_BL_SWITCHER(-> 内核功能 -> big.LITTLE 支持 -> big.LITTLE 切换器支持)和 CONFIG_ARM_BIG_LITTLE_CPUFREQ(-> CPU 电源管理 -> CPU 频率缩放 -> CPU 频率缩放 -> 通用 ARM big LITTLE CPUfreq 驱动程序),SoC 中的每个大内核都会与一个小内核配对,并且每对中只有一个内核在任何给定时间处于活动状态,具体取决于 CPU 负载。所以基本上逻辑核心的数量将是物理核心数量的一半,每个逻辑核心将结合一个物理大核心和一个物理小核心(除非大核心总数与小核心数量不同,在这种情况下将有非配对的物理核心也是逻辑核心)。对于每个逻辑内核,大物理内核和小物理内核之间的切换将由 cpufreq 调控器管理,并且在概念上等同于 CPU 频率切换。
  2. 如果您不启用上述两个配置选项,那么所有物理内核都将作为逻辑内核使用,可以同时处于活动状态,并且被调度程序视为相同。

如果您的目标是低功耗,第一个选项更适合,而第二个选项可以让您充分利用 CPU。

当异构多处理 (HMP) 支持集成到主线内核中时,这将会改变。