Android ARMv6 / v7 i VFP / NEON

Chciałbym bardziej zrozumieć procesor używany w telefonach z Androidem. Powodem jest to, że budujemy bibliotekę C, która ma pewne flagi architektury procesora CPU / math, które możemy ustawić.

  1. Do tej pory okazało się, że wszystkie procesory urządzeń z Androidem są projekt ARM i są albo ARMv6 (starsze urządzenia, niskie końce, Huawei, ZTE, mały SE) lub ARMv7 (Tablety O Strukturze Plastra Miodu i wszystkie droższe urządzenia, prawie wszystkie z rozdzielczością WVGA i wyższą) sprawdziłem ~20 urządzenia i wszystkie mają procesor tego typu. Zgadza się? Są jeszcze inni?

  2. Teraz, jeśli chodzi o operacje multimedialne i matematyczne, myślę, że ważne są dwie jednostki - VFP dla arytmetyki zmiennoprzecinkowej i SIMD - NEON. Po przetestowaniu wyżej wymienionej grupy urządzeń stwierdziłem, że obsługa VFP jest w prawie wszystkich urządzeniach, podczas gdy NEON Nie. Jakieś uwagi do tego?

  3. Nie wiem co to dokładnie jest ARMv6 i ARMv7 różnica (oprócz prędkości w ogóle). Teraz budujemy multimedialną bibliotekę C, która ma kilka flag do budowania. Moje pytanie brzmi, jak kierować największą liczbę urządzeń po jednej stronie i jak umożliwić użytkownikom lepszych urządzeń korzystanie z ich sprzętu. Moja propozycja to przygotowanie 3 odrębnych buildów: ARMv6/VFP, ARMv7/VFP oraz ARMv7/VFP / NEON. Inne propozycje?

  4. ARMv6 / VFP myślę, że powinien działać na wszystkich konfiguracjach, z wyjątkiem urządzeń, których brakuje VFP – np. Stary HTC Wildfire) - ale te pozostaną nieobsługiwane.

Czy to dobre podejście? Wszelkie uwagi są mile widziane.

Pozdrawiam, STeN

Author: Tamar E. Granor, 2012-02-22

3 answers

  1. Zgadza się. Obecnie istnieją dwa typy-ARMv6 i ARMv7. Najprawdopodobniej w najbliższej przyszłości pojawi się dodatkowo cel x86. Najnowszy NDK już wspiera jego Kompilacje.

  2. VFP jest obowiązkowy na ARMv7, ale nie na ARMv6. NEON jest opcjonalny i nie wszystkie urządzenia go obsługują. Najbardziej wyróżniającym się przykładem jest Nvidia Tegra 2. Jest on wdrażany na większości wysokiej klasy tabletów i telefonów, ale nie obsługuje neonu. Nvidia Tegra 3 obsługuje NEON.

  3. Myślę, że powinieneś trzymaj się ARMv6 z emulacją zmiennoprzecinkową, ARMv7+VFP, ARMv7 + NEON.

  4. Dokładnie-VFP nie jest obsługiwany na wszystkich urządzeniach ARMv6. Więc po prostu nie używaj go tam. Domyślnie NDK buduje cel armeabi, który jest przeznaczony dla urządzeń ARMv6 i nie używa VFP. armeabi - v7a buduje dla ARMv7 i używa VFP.

 12
Author: Mārtiņš Možeiko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-22 18:13:22

Skoncentrowałbym się na v7.

Nie ma prawie żadnych nowych produktów wysyłanych z v6, a zanim Twoja biblioteka będzie gotowa do produkcji, v6 nie będzie wydaniem.

Oto kilka informacji: - Neon zawsze zawiera VFP - Coretex A8 może być wyposażony w Neon lub brak - VFP na neonie A8 jest w rzeczywistości VFP-lite, który jest dość dużo wolniejszy. Znacznie wolniejszy od V6 VFP. - Coretex A9 i nowsze mogą być wyposażone w Neon, VFP lub brak. - V7 posiada wiele ulepszonych instrukcji dobrze nadających się do operacji matematycznych oprócz możliwości podwójnego wydania. - Sprzedawcy chipów mogą pominąć Neon, a nawet VFP, ale płacą taką samą opłatę licencyjną, aby uzbroić się bez względu na to. Zaoszczędziliby tylko niewiele na kosztach produkcji. - Neon jest niezwykle potężny w zdolnych rękach, ale nie może zrobić podwójnej precyzji. - Poza tymi z neonless Tegra, nie jest mi znany telefon z Androidem oparty na v7, który nie ma neonu. (Powód jest powyżej) - Tegra3 ma Neon

 7
Author: Jake 'Alquimista' LEE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-23 03:52:20

To prawda, że większość urządzeń z Androidem należy do tych trzech kategorii:

1) ARMv6

2) ARMv7

3) ARMv7 + NEON

NDK nie wspiera tego w pełni. Nie ma celu budowania ARMv6 ABI, są tylko dwa cele budowania ARM obsługiwane przez NDK:

1) ARMv5 (który będzie działał na wszystkich urządzeniach Android ARM)

2) ARMv7 (z opcjonalnym użyciem VFP i neonu)

Ograniczenia narzucone przez to są takie, że jeśli chcesz użyć ARMv6 instrukcje (z kodu C lub ASM), musisz kierować ARMv7 ABI w NDK.

 4
Author: BitBank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-22 18:56:06