2012-02-22 17 views
17

Chciałbym zrozumieć więcej procesorów używanych w telefonach z systemem Android. Powodem jest to, że budujemy bibliotekę C, która ma określone flagi architektury procesora/matematyki, które możemy ustawić.Android ARMv6/v7 i VFP/NEON

  1. tej pory odkryliśmy, że wszystkie urządzenia Android Procesory są projektowanie ARM i są znakami ARMv6 (starsze urządzenia, niskie końcach, Huawei, ZTE, małych SE) lub ARMv7 (tabletki Honeycomb i wszystko więcej drogie urządzenia, prawie wszystkie z rozdzielczością WVGA i wyższą) Sprawdziłem ~ 20 urządzeń i wszystkie mają procesor tego typu. Czy to jest poprawne? Czy są jeszcze jakieś inne?

  2. Teraz, gdy chodzi o multimedia i operacji matematycznych myślę dwie jednostki są ważne - VFP dla arytmetyki zmiennoprzecinkowej oraz SIMD - NEON. Po przetestowaniu powyższej grupy urządzeń stwierdziłem, że obsługa VFP jest prawie we wszystkich urządzeniach, podczas gdy NEON nie. Wszelkie komentarze do tego?

  3. Nie wiem, czym dokładnie jest różnica ARMv6 i ARMv7 (poza ogólną prędkością). 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 ze sprzętu. Moją propozycją jest przygotowanie 3 odrębnych buildów: ARMv6/VFP, ARMv7/VFP i ARMv7/VFP/NEON. Inne propozycje?

  4. ARMv6/VFP myślę powinny działać na wszystkich konfiguracjach, z wyjątkiem urządzeń, których brakuje VFP (np stary HTC Wildfire) - ale te pozostaną obsługiwane.

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

Pozdrawiam, Sten

Odpowiedz

12
  1. Zgadza się. Obecnie istnieją dwa typy - ARMv6 i ARMv7. Najprawdopodobniej w najbliższej przyszłości będzie dodatkowo cel x86. Najnowszy NDK już obsługuje dla niego kompilacje.

  2. VFP jest obowiązkowa na ARMv7, ale nie na ARMv6. NEON jest opcjonalny i nie wszystkie urządzenia go obsługują. Najbardziej wyraźnym przykładem jest Nvidia Tegra 2. Jest ona stosowana na większości wysokiej klasy tabletów i telefonów, ale nie obsługuje NEON. Nvidia Tegra 3 obsługuje NEON.

  3. Myślę, że powinieneś trzymać 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 go tam nie używaj. Domyślnie NDK buduje cel armeabi przeznaczony dla urządzeń ARMv6 i nie używa VFP. armeabi-v7a buduje dla ARMv7 i używa VFP.

4

Prawdą jest, że większość urządzeń Android należą do tych trzech kategorii:

1) ARMv6

2) ARMv7

3) ARMv7 + NEON

NDK nie obsługuje tego w pełni. Nie ma ARMv6 ABI build cel, tam są tylko dwa cele budować ARM obsługiwane przez NDK:

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

2) ARMv7 (z opcjonalnym wykorzystaniem VFP i NEON)

Ograniczenia narzucone przez to, że jeśli chcesz używać instrukcji ARMv6 (z kodu C lub ASM), musisz skierować ARMv7 ABI do NDK.

7

Skoncentruję się na wersji 7.

Nie ma prawie żadnych nowych produktów wysyłanych przy użyciu wersji 6, a do czasu, gdy biblioteka będzie gotowa do produkcji, wersja 6 nie będzie problemem.

oto kilka informacji: - Neon ZAWSZE obejmuje VFP - Coretex A8 można wyposażone są neonówką lub żaden - The VFP na A8 Neon jest rzeczywiście VFP-lite, który jest dość dużo wolniej. Znacznie wolniej niż VFP V6. - Coretex A9 i wyżej mogą zawierać Neon, VFP lub brak. - V7 zawiera wiele rozszerzonych instrukcji dobrze dostosowanych do operacji matematycznych obok funkcji podwójnego problemu. - Sprzedawcy mikroprocesorów mogą pomijać wersje Neon, a nawet VFP, ale niezależnie od tego płacą ARM taką samą opłatę licencyjną. Oszczędziłyby bardzo niewiele w kosztach produkcji. - Neon jest niezwykle potężny w sprawnych rękach, ale nie może zrobić podwójnej precyzji. - Z wyjątkiem tych, w których nie ma neonowej Tegry, nie jest mi znany telefon z Androidem w wersji 7, który nie jest wyposażony w Neon. (Powód jest powyżej) - Tegra3 ma Neon