Prepárense, desarrolladores de Android, se acerca un nuevo compilador de Android
Publicado: 2022-03-11La fragmentación ha sido una fuente de frustración para los desarrolladores y consumidores de Android durante años; ahora parece que las cosas empeorarán antes de mejorar. Se acerca un nuevo compilador de Android, nuevamente, y hay algunos desarrollos notables en el frente del hardware, que podrían afectar a los desarrolladores.
Con Dalvik fuera de escena, muchas personas esperaban que el nuevo tiempo de ejecución ART con capacidad de 64 bits de Google se mantuviera durante años, lo que probablemente sucederá, pero recibirá una revisión importante en el futuro cercano. Además de ofrecer soporte para hardware de 64 bits, ART también introdujo la compilación anticipada (AOT), mientras que Dalvik era un compilador justo a tiempo (JIT). El nuevo compilador optimizado desbloqueará aún más posibilidades.
En cuanto a los desarrollos de hardware, hay algunas tendencias nuevas y algunos actores nuevos y antiguos en la industria de los sistemas en chip para teléfonos inteligentes, pero hablaré de eso más adelante.
Primero, echemos un vistazo a los planes de tiempo de ejecución de Google.
Dalvik, ART, ART con el nuevo compilador de Android
ART se introdujo con Android 5.0 el año pasado y se lanzó en Nexus 9 y Nexus 6, aunque este último usaba una CPU ARMv7-A de 32 bits. Sin embargo, en lugar de estar diseñado desde cero, ART fue en realidad una evolución de Dalvik, que se alejó de JIT.
Dalvik compila aplicaciones sobre la marcha, según sea necesario. Esto, obviamente, agrega más carga de CPU, aumenta el tiempo necesario para iniciar aplicaciones y afecta la duración de la batería. Dado que ART compila todo con anticipación, en el momento de la instalación, no tiene que desperdiciar ciclos de reloj en la compilación cada vez que el dispositivo inicia una aplicación. Da como resultado una experiencia de usuario más fluida, mientras que al mismo tiempo reduce el consumo de energía y aumenta la duración de la batería.
Entonces, ¿qué va a hacer Google a continuación?
Dado que ART se desarrolló para aprovechar los nuevos núcleos de CPU ARMv8 de 64 bits, que comenzaron a estar en línea a fines del año pasado, el compilador original parece haber sido una medida provisional. Esto significaba que el tiempo de comercialización era la prioridad, no la eficiencia y la optimización. No significa que ART fuera solo un trabajo apresurado chapucero, porque no lo fue; el tiempo de ejecución funciona bien y ha sido elogiado por desarrolladores y usuarios.
Sin embargo, hay margen de mejora, y ahora, parece que Google ha estado trabajando en un compilador muy mejorado durante un tiempo, y el esfuerzo probablemente sea anterior al lanzamiento oficial de ART. El diseñador de chips británico, ARM, reveló recientemente algunos hechos interesantes sobre los planes de tiempo de ejecución de Google, apuntando a un nuevo compilador de "optimización" para ART. El nuevo compilador ofrece representaciones intermedias (IR) que permiten la manipulación de la estructura del programa antes de la generación del código. Utiliza un único nivel de representación intermedia, estructurado como un gráfico rico en información, que proporciona mejor información a las partes del compilador que tienen en cuenta la arquitectura.
El compilador "Rápido" utiliza dos niveles de representación intermedia, con listas enlazadas simples de instrucciones y variables, pero pierde información importante durante la creación de IR.
ARM afirma que el nuevo compilador de "optimización" ofrecerá una serie de beneficios significativos, describiéndolo como un "gran salto adelante" en términos de tecnología de compilación. El compilador ofrecerá una mejor infraestructura para futuras optimizaciones y ayudará a mejorar la calidad del código.
Optimización y características clave del compilador rápido
ARM describió la diferencia entre los dos compiladores en una sola diapositiva, afirmando que el compilador de "optimización" permite un uso de registro más eficiente, menos derrames en la pila y necesita menos código para ejecutar.
Así es como lo expresa ARM:
Quick tiene un algoritmo de asignación de registros muy simple.
- Falta de información en el IR
- Velocidad de compilación sobre complejidad: orígenes como JIT
- Rendimiento deficiente: muchos registros se derramaron en la pila
La optimización utiliza la asignación de registro de escaneo lineal.
- Excelente compromiso entre rendimiento y tiempo.
- Se utiliza el análisis de vitalidad
- Minimizar el derrame de registros en la pila”
Aunque el nuevo compilador aún está en desarrollo, ARM compartió algunas cifras de rendimiento; en las pruebas de CPU sintéticas, el compilador produce un aumento de rendimiento en el rango de 15 a 40 por ciento. La velocidad de compilación se incrementa en aproximadamente un 8 por ciento. Sin embargo, la compañía advierte que las cifras “cambian a diario” a medida que madura el nuevo compilador.
La atención se centra en lograr una paridad cercana con el compilador "Rápido", que actualmente tiene una clara ventaja en la velocidad de compilación y el tamaño del archivo.
En este momento, parece una compensación; el nuevo compilador "optimizado" ofrece impresionantes mejoras de rendimiento en aplicaciones vinculadas a la CPU y puntos de referencia sintéticos, pero da como resultado archivos un 10 % más grandes que se compilan aproximadamente un 8 % más lento. Si bien las últimas dos cifras parecen verse superadas por las ganancias en el rendimiento de la CPU, tenga en cuenta que se aplicarán a todas las aplicaciones, independientemente de la carga de la CPU, utilizando recursos aún más limitados, como RAM y almacenamiento. Recuerda que compilar en 64 bits ya ocupa más RAM que compilar en 32 bits.
Cualquier reducción en la velocidad de compilación y los tiempos de lanzamiento también es motivo de preocupación, debido a su efecto en la capacidad de respuesta del dispositivo y la experiencia del usuario.
La carrera ARM multinúcleo
Otra fuente de preocupación, independientemente del tiempo de ejecución y el compilador, es la popularidad de los procesadores multinúcleo basados en arquitecturas ARMv7-A y ARMv8. La locura del octa-core comenzó en 2013 y rápidamente se descartó como un truco de marketing barato. Un ejecutivo de Qualcomm llegó a llamar a los procesadores de ocho núcleos "tontos" y "tontos", y dijo que la empresa no fabricaría ninguno porque sus ingenieros "no son tontos". El mismo ejecutivo también describió el soporte de 64 bits en Apple A7 como un "truco".
Avance rápido dos años, y tengo un teléfono inteligente Qualcomm octa-core Cortex-A53 de 64 bits en mi escritorio, mientras que el ejecutivo en cuestión tiene un cargo diferente en su placa de identificación.
Como si los chips de 8 núcleos no fueran suficientes, el próximo año veremos los primeros dispositivos basados en procesadores de aplicaciones de 10 núcleos. El primer chip para teléfono inteligente de 10 núcleos proviene de MediaTek en forma de Helio X20, y contará con tres grupos de núcleos de CPU, denominados enorme.Medio.TINY. Suena divertido y se pone mejor; pronto comenzaremos a ver los primeros dispositivos Android asequibles basados en una nueva generación de procesadores Intel.
Veamos las guerras principales de ARM y lo que significan para los desarrolladores y los consumidores. Hay dos versiones distintas de diseños ARM SoC octa-core. Las soluciones de gama alta tienden a utilizar el diseño big.LITTLE de ARM, con cuatro núcleos de bajo consumo y cuatro núcleos grandes para cargas elevadas. La segunda forma de colocar ocho núcleos de CPU ARM en un chip es usar núcleos idénticos o núcleos idénticos en dos clústeres con diferentes velocidades de reloj.
Los principales fabricantes de chips móviles tienden a utilizar ambos enfoques, chips big.LITTLE en dispositivos de gama alta, junto con octa-cores regulares en productos convencionales. Ambos enfoques tienen sus pros y sus contras, así que echemos un vistazo más de cerca.
ARM big.LITTLE frente a Octa-Core normal:
El uso de dos clústeres de diferentes núcleos de CPU permite un buen rendimiento y eficiencia de un solo subproceso en diseños big.LITTLE. La contrapartida es que un solo núcleo Cortex-A57 tiene aproximadamente el tamaño de cuatro núcleos Cortex-A53 pequeños y es menos eficiente.
El uso de ocho núcleos idénticos, u ocho núcleos idénticos en dos clústeres con diferentes relojes, es rentable y ahorra energía. Sin embargo, el rendimiento de un solo subproceso es bajo.
La generación actual de diseños big.LITTLE basados en núcleos ARMv8 no puede utilizar el nodo de fabricación de 28 nm más económico. Incluso a 20 nm, algunos diseños exhiben mucha aceleración, lo que limita su rendimiento sostenido. Los octa-cores estándar basados en núcleos de CPU Cortex-A53 se pueden implementar de manera efectiva en 28nm, por lo que los fabricantes de chips no tienen que usar nodos de fabricación de vanguardia como 20nm o 16/14nm FinFET, lo que reduce los costos.
No quiero aburrirlos con las tendencias de diseño de chips, pero es importante tener en cuenta algunos conceptos básicos para los procesadores móviles de 2015 y 2016:
- La mayoría de los chips utilizarán nodos de fabricación de 28 nm y núcleos Cortex-A53, lo que limitará el rendimiento de un solo hilo.
- El gran núcleo Cortex-A57 está implementado en dos diseños principales de Samsung y Qualcomm, pero otros fabricantes de chips parecen estar saltándoselo y esperando el núcleo Cortex-A72.
- El rendimiento de subprocesos múltiples será cada vez más relevante en los próximos 18 meses.
- No se pueden esperar grandes ganancias de rendimiento hasta que los nodos de 20nm y FinFET se vuelvan significativamente más baratos (2016 y más allá).
- También llegarán diseños de 10 núcleos.
Todos estos puntos tienen ciertas implicaciones para los desarrolladores de Android. Mientras los fabricantes de chips estén atascados en procesos de 28nm para la mayoría de los chips de teléfonos inteligentes y tabletas, los desarrolladores tendrán que hacer todo lo posible para aprovechar el rendimiento de subprocesos múltiples y centrarse en la eficiencia.

ART y los nuevos compiladores deberían contribuir en gran medida a mejorar el rendimiento y la eficiencia, pero no podrán romper las leyes de la física. Los diseños antiguos de 32 bits no se utilizarán en muchos dispositivos en el futuro, e incluso los dispositivos más baratos comienzan a distribuirse con silicio de 64 bits y Android 5.0.
Aunque Android 5.x todavía tiene una base de usuarios relativamente pequeña, está creciendo rápidamente y se expandirá aún más rápido ahora que llegan teléfonos de $100 a $150 con chips de 64 bits y Android 5.0. La transición a Android de 64 bits va bien.
La gran pregunta es cuándo obtendrá Dalvik el nuevo compilador optimizado. Podría lanzarse a finales de este año o el próximo con Android 6.0; todavía es demasiado pronto para decirlo con seguridad.
La informática heterogénea llega a los móviles
Hay otra cosa a tener en cuenta; Los gráficos móviles se están volviendo más potentes, especialmente en los procesadores de gama alta, por lo que los fabricantes de chips están trabajando mucho entre bastidores para aprovecharlos para otros usos además de los juegos y la decodificación de video. La computación heterogénea ha existido durante algunos años, lo que permite que las PC descarguen tareas altamente paralelizadas a la GPU.
La misma tecnología ahora está llegando a los procesadores móviles, fusionando efectivamente los núcleos de CPU y GPU. El enfoque permitirá a los desarrolladores desbloquear un mayor rendimiento al ejecutar ciertos tipos de programas, a saber, cargas OpenCL, en la GPU. Los desarrolladores podrán concentrarse en el rendimiento, mientras que los procesadores manejarán automáticamente la ejecución paralela en CPU y GPU.
Por supuesto, esto no funcionará en todas las aplicaciones y reducirá la carga en todas las situaciones, pero en algunos nichos debería desbloquear más rendimiento y ayudar a reducir el consumo de energía. Según la carga, el SoC decidirá automáticamente cómo procesar el código, usando la CPU para algunas tareas mientras descarga otras a la GPU.
Dado que estamos tratando con aplicaciones paralelizadas, se espera que el enfoque produzca las mayores mejoras en el procesamiento de imágenes. Por ejemplo, si necesita usar superresolución y volver a muestrear imágenes, el proceso podría dividirse en diferentes etapas en OpenCL. Si el proceso involucra diferentes etapas, como find_neighbor
, col_upsample
, row_upsample
, sub
y blur2
, el hardware distribuirá la carga entre los núcleos de CPU y GPU de la manera más eficiente, dependiendo de qué tipo de núcleo manejará la tarea dada de la mejor manera. manera. Esto no solo mejorará el rendimiento en un orden de magnitud, sino que también ayudará a reducir el consumo de energía.
Intel ha vuelto de entre los muertos, y se ve bien para un cadáver
Intel perdió el tren de la revolución móvil y prácticamente cedió el mercado a ARM y sus socios de hardware. Sin embargo, el fabricante de chips de EE. UU. tiene el dinero y los recursos para pasar unos años en el banco y regresar.
El año pasado, Intel subvencionó las ventas de sus procesadores Atom para tabletas, logrando cuadriplicar los envíos en menos de un año. Ahora está centrando su atención en el segmento de teléfonos inteligentes con los nuevos procesadores SoFIA Atom x3. Francamente, no estoy del todo seguro de que estos chips deban denominarse procesadores Intel porque en realidad no son producidos por el gigante de los chips. Los procesadores SoFIA están diseñados con un presupuesto ajustado, en cooperación con fabricantes de chips chinos. Se fabrican en el nodo de 28nm, son lentos, diminutos y baratos.
Esto puede sorprender a algunos observadores casuales, pero Intel no se preocupa por las soluciones móviles de gama alta; Las piezas SoFIA de gama baja impulsarán los teléfonos Android comercializados con un precio de entre $ 50 y $ 150. Los primeros diseños deberían comenzar a enviarse a fines del segundo trimestre de 2015, y la mayoría de ellos estarán diseñados para los mercados asiáticos, así como para los mercados emergentes en otras partes del mundo. Si bien es posible que veamos algunos de ellos en América del Norte y Europa, el enfoque de Intel parece estar en China e India.
Intel está cubriendo sus apuestas con los procesadores Atom x5 y x7, que utilizarán una arquitectura completamente nueva más el nodo de fabricación de 14nm de vanguardia de la compañía. Sin embargo, estos productos están destinados a tabletas en lugar de teléfonos inteligentes, al menos por el momento.
La gran pregunta, para la que no tengo una respuesta, es cuántas victorias en diseño Intel puede obtener en su haber. Los analistas están divididos sobre el tema y los pronósticos de envío parecen estimaciones en este momento.
El año pasado, Intel demostró que está dispuesta a soportar pérdidas y gastar miles de millones de dólares para afianzarse en el mercado de las tabletas. Todavía es demasiado pronto para decir si utilizará el mismo enfoque con los nuevos chips Atom, especialmente con los productos SoFIA para teléfonos inteligentes.
Hasta ahora, solo he visto un producto real basado en un procesador Intel SoFIA: una tableta china de $ 69 con conectividad 3G. Es esencialmente un teléfono de gran tamaño, por lo que, como puede imaginar, un teléfono SoFIA de nivel de entrada podría terminar costando mucho menos. Debe ser una propuesta tentadora para los fabricantes de tabletas y teléfonos inteligentes de caja blanca, ya que podrían diseñar fácilmente dispositivos de $ 50- $ 100 con una etiqueta "Intel Inside" en la parte posterior, lo que, desde una perspectiva de marketing, suena bien.
Desafortunadamente, solo podemos adivinar cuántos teléfonos y tabletas Intel se enviarán durante el próximo año más o menos. Obviamente estamos tratando con millones de unidades, decenas de millones, pero la pregunta es: ¿cuántas decenas? La mayoría de los analistas creen que Intel enviará entre 20 y 50 millones de procesadores Atom x3 este año, lo cual es una gota en el océano si se tiene en cuenta que se prevé que los envíos totales de teléfonos inteligentes alcancen los 1.200 millones de dispositivos este año. Sin embargo, Intel es despiadado, tiene dinero para gastar y no tiene que obtener ganancias con ninguno de estos chips. Podría capturar del 3 al 4 por ciento del mercado a fines de 2015, pero la participación de mercado debería seguir creciendo en 2016 y más allá.
¿Qué significa esto para los desarrolladores de Android?
Intel obtuvo una mala reputación entre algunos desarrolladores de Android debido a ciertos problemas de compatibilidad. Este fue un problema real hace un par de años porque el hardware era muy diferente a los núcleos ARM estándar que se usan en la mayoría de los dispositivos.
Afortunadamente, la empresa progresó mucho durante los dos años; ofrece extensos programas de capacitación, documentación completa y más. De hecho, un vistazo rápido a las listas de trabajos de LinkedIn revela que Intel está contratando a docenas de desarrolladores de Android, con algunas nuevas vacantes que se abren cada mes.
Así que todo va bien, ¿verdad? Bueno, eso depende…
La semana pasada tuve la oportunidad de probar un nuevo teléfono Asus basado en el Atom Z3560 de Intel y debo decir que quedé satisfecho con los resultados; es una buena plataforma de hardware capaz de gestionar 4 GB de RAM en un dispositivo económico. Asus cree que puede vender 30 millones de unidades este año, lo que es realmente impresionante dada la cuota de mercado de teléfonos inteligentes de Intel.
El único problema es que algunas aplicaciones de Android todavía se comportan mal en el hardware de Intel . Por lo general, no es nada demasiado grande, pero tiene algunos bloqueos extraños, puntajes de referencia poco realistas y otras peculiaridades de compatibilidad. La mala noticia es que los desarrolladores no pueden hacer mucho para abordar los problemas relacionados con el hardware, aunque sería un buen comienzo obtener algunos dispositivos basados en Intel para realizar pruebas. La buena noticia: Intel está haciendo todo lo posible para resolver todo de su lado, para que usted no tenga que hacerlo.
En cuanto al hardware ARM, veremos más núcleos de CPU en aún más clústeres. El rendimiento de un solo subproceso seguirá siendo limitado en muchos dispositivos convencionales, a saber, teléfonos económicos basados en SoC Cortex-A53 de cuatro y ocho núcleos. Es demasiado pronto para decir si los nuevos compiladores de Google/ARM podrán o no aumentar el rendimiento en dichos dispositivos. Probablemente lo harán, pero ¿por cuánto? La computación heterogénea es otra tendencia a tener en cuenta el próximo año.
En resumen, esto es lo que los desarrolladores de Android deben esperar en términos de software y hardware a finales de 2015 y 2016:
- Más procesadores Intel x86 en los segmentos de mercado principal y básico.
- La cuota de mercado de Intel será insignificante en 2015, pero puede crecer en 2016 y más allá.
- Más diseños multinúcleo ARMv8 en línea.
- Nuevo compilador ART "optimizado".
- Se acerca la computación heterogénea, pero llevará un tiempo.
- La transición a los nodos de fabricación FinFET y Cortex-A72 desbloqueará más rendimiento y funciones.