2012-01-30 5 views
9

El proyecto libjpeg-turbo "usa instrucciones SIMD (MMX, SSE2, NEON) para acelerar la compresión y descompresión JPEG de línea de base en los sistemas x86, x86-64 y ARM".¿Qué parte de los dispositivos Android se beneficia de las optimizaciones de Libjpeg-turbo?

¿Qué tipo de espacio de dispositivo Android admite estas instrucciones y, por lo tanto, obtendría un beneficio de velocidad al usar esta biblioteca?

(voy a descomprimir archivos JPEG en código nativo se accede a través NDK.)

Respuesta

11

La gran mayoría de los dispositivos Android en el mercado utilizan algún tipo de CPU ARM. Los teléfonos de gama alta (por ejemplo, HTC Sensation) tienden a usar CPU ARM que son compatibles con NEON (Qualcomm Snapdragon, OMAP4, Samsung Exynos, Tegra3). Los teléfonos más antiguos/menos capacitados generalmente tienen algún conjunto de chips ARMv6, como la serie Qualcomm MSM72xx. Algunos buenos ejemplos son el Google G1 y el Motorola Droid original.

Las tabletas con Android son una historia ligeramente diferente. Un gran porcentaje de los dispositivos de tableta existentes se basan en el chipset nVidia Tegra2 que no incluye soporte de NEON. Las tabletas más nuevas basadas en Tegra3 (Asus Transformer Prime) incluyen soporte para NEON. Algunas tabletas raras están basadas en el SOC de Qualcomm (por ejemplo, HTC Flyer) y también son compatibles con NEON. También hay algunas tabletas de bajo costo basadas en MIPS e incluso algunas con chips x86. Luego está la categoría relativamente nueva de dispositivos Google-TV. Durante el año pasado, estos han sido principalmente x86, pero la última generación próximamente tendrá muchos que usan CPU ARM.

-3

Actualmente todos los dispositivos Android utiliza el conjunto de instrucciones ARM. Y la mayoría de ellos (pero no todos) admite el conjunto de instrucciones NEON. Las instrucciones de NEON son como SSE2 a x86.

+0

Disculpa, esto no es cierto. Hay muchos dispositivos Android sin usar arquitecturas x86 y mips. –

5

para el puerto libjpeg-turbo que lo hice (y todavía estoy trabajando en) existen las siguientes cosas a considerar:

conjunto de instrucciones (ARMv6, ARMv7), SIMD (con o sin NEON)

Libjpeg-turbo realmente brilla en armv7 con NEON. NEON es el soporte SIMD del brazo.

Tegra, Tegra2 no tiene NEON pero es armv7, por ejemplo. Entonces, libjpeg-turbo se puede construir ahora mismo, desactivando el soporte de NEON pero aún usando algunas de las optimizaciones de armv7 ... simplemente no será tan rápido. Todavía será más rápido que el libjpeg que se encuentra actualmente en Android.

Hay chips armv6 por ahí que se ponen en los teléfonos nuevos con Android. Especialmente para los mercados más baratos. En lugar de entrar en una lista exhaustiva, lo que debe suceder en la lib (y este es el tipo de WIP para mí actualmente) es conseguir varias optimizaciones de armv6 en libjpeg-turbo, así que hay una buena historia para libjpeg-turbo en Android. Manténganse al tanto.

Cuestiones relacionadas