我正在为 Android 开发一个本机库,我在其中使用 ARM 程序集优化和多线程,以便在双核 ARM 芯片组 MSM8660 上获得最大性能。在进行一些测量时,我注意到以下几点:
- NEON优化的单线程库比ARMv6优化的单线程库更快(如预期的那样)。
- 具有ARMv6优化的多线程库比具有ARMv6优化的单线程库更快(如预期的那样)。
- 具有NEON优化的多线程库比具有NEON优化的单线程库慢(绝对不是预期的!)。
我已经尝试在网上搜索以解释为什么会这样,但到目前为止还没有找到。似乎所有内核都共享相同的 NEON 管道或类似的东西,但所有示意图似乎都表明每个内核都应该有自己的 NEON 单元。有谁知道为什么会这样?