デュアルコア ARM チップセット MSM8660 で最大のパフォーマンスを得るために、ARM アセンブリの最適化とマルチスレッドを使用する Android 用のネイティブ ライブラリを開発しています。いくつかの測定を行っているときに、次のことに気付きました。
- NEON最適化を使用したシングルスレッドライブラリは、 ARMv6最適化を使用したシングルスレッドライブラリよりも高速です(予想どおり)。
- ARMv6最適化を使用したマルチスレッドライブラリは、ARMv6最適化を使用したシングルスレッドライブラリよりも高速です(予想どおり)。
- NEON最適化を使用したマルチスレッドライブラリは、NEON最適化を使用したシングルスレッドライブラリよりも遅くなります(絶対に予想外です!)。
これがなぜなのかについての説明を求めてネット全体を検索してみましたが、これまでのところ何も見つかりませんでした。すべてのコアが同じ NEON パイプラインなどを共有しているように見えますが、すべての回路図は、各コアに独自の NEON ユニットが必要であることを示しているようです。なぜこれが起こっているのか誰にも分かりますか?