我正在開發一個適用於Android的本機庫,其中使用了ARM彙編優化和多線程,以便在雙核ARM芯片組MSM8660上獲得最大性能。雖然做了一些測試,我注意到以下幾點:Qualcomm Scorpion雙核ARM NEON代碼存在問題?
- 的單線程庫NEON優化是快比單線程庫的ARMv6優化(如預期)。
- 的多線程庫的ARMv6優化比單線程庫的ARMv6優化(如預期)更快。
- 的多線程庫NEON優化比單線程庫NEON優化慢(絕對不是預期的!)。
我已經嘗試搜索網絡上的所有解釋爲什麼這是但迄今沒有找到任何。看起來好像所有內核都共享相同的NEON管道或類似的東西,但是所有的原理圖似乎都表明每個內核都應該有自己的NEON單元。有誰知道爲什麼會發生這種情況?
另一種方法是,瓶頸可能是外部存儲器帶寬 - 在這種情況下,添加更多內核無濟於事。 –
是的,但是如果只有外部內存帶寬,性能至少應該是相等的。當然,添加更多的線程會引入更多的上下文切換,但我不確定會對性能產生多大影響。 – onemasse