2012-02-22 5 views
17

Я хотел бы больше понять процессор, используемый на телефонах Android. Причина в том, что мы создаем библиотеку C, в которой есть определенные флаги архитектуры процессора/математического процессора, которые мы можем установить.Android ARMv6/v7 и VFP/NEON

  1. До сих пор мы обнаружили, что все Android устройства процессоры дизайн ARM и являются либо ARMv6 (более старые устройства, басы, Huawei, ZTE, небольшой SE) или ARMv7 (Honeycomb таблетки и все более дорогие устройства, почти все с разрешением WVGA и выше) Я проверил ~ 20 устройств и все имеют процессор такого типа. Это верно? Есть ли другие?

  2. Теперь, когда дело доходит до мультимедиа и математические операции я думаю, что две единицы важно - VFP для арифметики с плавающей точкой и SIMD - NEON. После тестирования вышеупомянутой группы устройств я обнаружил, что поддержка VFP находится практически во всех устройствах, в то время как NEON нет. Любые комментарии к этому?

  3. Я не знаю, что такое различие ARMv6 и ARMv7 (помимо скорости в целом). Теперь мы создаем мультимедийную библиотеку C, в которой есть пара флагов для строительства. Мой вопрос заключается в том, как настроить максимальное количество устройств на одной стороне и как разрешить пользователям лучших устройств использовать свое оборудование. Мое предложение состоит в том, чтобы подготовить 3 отдельных сборки: ARMv6/VFP, ARMv7/VFP и ARMv7/VFP/NEON. Другие предложения?

  4. ARMv6/VFP Я думаю, что должен работать на всех конфигурациях, за исключением устройств, которые отсутствуют в VFP (например, старый HTC Wildfire) - но те останутся без поддержки.

Это хороший подход? Любые комментарии приветствуются.

С уважением, Sten

ответ

12
  1. Это правильно. В настоящее время существует два типа: ARMv6 и ARMv7. Скорее всего, в ближайшем будущем будет дополнительно цель x86. Новый NDK уже поддерживает сборку для него.

  2. VFP является обязательным на ARMv7, но не на ARMv6. NEON не является обязательным, и не все устройства поддерживают его. Наиболее ярким примером является Nvidia Tegra 2. Он развертывается на большинстве высокопроизводительных планшетов и телефонов, но не поддерживает NEON. Nvidia Tegra 3 поддерживает NEON.

  3. Я думаю, что вы должны придерживаться ARMv6 с эмуляцией с плавающей запятой, ARMv7 + VFP, ARMv7 + NEON.

  4. Точно - VFP не поддерживается на всех устройствах ARMv6. Так что просто не используйте его там. По умолчанию NDK создает цель armeabi, предназначенную для устройств ARMv6, и не использует VFP. armeabi-v7a строит для ARMv7 и использует VFP.

4

Это правда, что большинство Android устройств попадают в эти три категории:

1) ARMv6

2) ARMv7

3) ARMv7 + NEON

НДК не поддерживает это полностью. Там нет целевой сборки ARMv6 ABI, Есть только две цели сборки ARM, поддерживаемых НДК:

1) ARMv5 (который будет работать на всех Android устройств ARM)

2) ARMv7 (с дополнительным использованием VFP и NEON)

Ограничения, налагаемые этим, заключаются в том, что если вы хотите использовать инструкции ARMv6 (из кода C или ASM), вам необходимо настроить ARMv7 ABI в NDK.

7

Я бы сосредоточился на v7.

Есть почти никаких новых продуктов, поставляемых с v6, и к тому времени, когда ваша библиотека готова к производству, v6 не будет выпускаться.

вот некоторая информация: - Неон ВСЕГДА включает VFP - Coretex A8 может отличать либо неон или ни - The VFP на Неон A8 является на самом деле VFP-облегченный, который довольно много медленнее. Гораздо медленнее VFP V6. - Coretex A9 и выше могут использовать Neon, VFP или нет. - У V7 есть много улучшенных инструкций, хорошо подходящих для математических операций, помимо возможности двойного выпуска. - Поставщики чипов могут опускать Neon и даже VFP, но они платят за лицензию ARM независимо от этого. Они только сэкономили бы очень мало на производственных издержках. - Neon чрезвычайно эффективен в умелых руках, но не может выполнять двойную точность. - За исключением тех, у кого есть неоновая Tegra, мне неизвестен телефон Android на базе V7, который не оснащен Neon. (Причина выше) - Tegra3 имеет Neon

 Смежные вопросы

  • Нет связанных вопросов^_^