Qualcomm Scorpion双核ARM NEON代码存在问题?

Leo*_*Leo 6 performance assembly arm multicore neon

我正在为Android开发一个本地库,我使用ARM程序集优化和多线程,以便在双核ARM芯片组MSM8660上获得最大性能.在进行一些测量时,我注意到以下内容:

  1. 单线程与库NEON优化是更快单线程与文库的ARMv6优化(如预期).
  2. 多线程与文库的ARMv6优化是更快单线程与文库的ARMv6优化(如预期).
  3. 多线程与库NEON优化是单线程与库NEON优化(绝对不是预期的!).

我试过在网上搜索一下这个原因的解释,但到目前为止还没找到.几乎所有内核都共享相同的NEON管道或类似内容,但所有原理图似乎都表明每个内核都应该有自己的NEON单元.有谁知道为什么会这样?

one*_*sse 0

这可能是因为缓存未命中。如果没有更多信息,很难说。