Проблемы с двухъядерным кодом ARM NEON Qualcomm Scorpion?

Я разрабатываю собственную библиотеку для Android, в которой я использую оптимизацию сборки ARM и многопоточность, чтобы получить максимальную производительность на двухъядерном чипсете ARM MSM8660. Выполняя некоторые измерения, я заметил следующее:

  1. Однопоточная библиотека с оптимизацией NEON на быстрее , чем однопоточная ] с оптимизацией ARMv6 (как и ожидалось).
  2. Многопоточная библиотека с ARMv6 оптимизациями на быстрее , чем однопоточная библиотека с ARMv6 ] оптимизации (как и ожидалось).
  3. Многопоточная библиотека с оптимизацией NEON на медленнее , чем однопоточная библиотека с NEON ] оптимизации (точно не ожидаемые!).

Я попытался найти в сети объяснение, почему это так, но пока не нашел. Кажется, что все ядра используют один и тот же NEON-конвейер или что-то в этом роде, но все схемы, похоже, указывают на то, что каждое ядро ​​должно иметь свой собственный NEON-модуль. Кто-нибудь знает, почему это происходит?

6
задан Phonon 29 September 2011 в 13:27
поделиться