Nuestros compañeros de Xakata Android han hecho un artículo que habla sobre el tema de los 64 bits. Dejamos el artículo a continuación:
Si eres lector habitual de Xataka Android seguro que ya leíste nuestro artículo “64 bits en Android, aún queda mucho camino por recorrer“ en el que exponíamos el estado actual del mercado Android y lallegada de los 64 bits a la plataforma.
En él analizamos las piezas necesarias para que eso se lleve a cabo y dimos unas pinceladas que dejaron entrever que hasta el próximo año no veríamos la llegada de esta tecnología a Android.
En el pasado MWC 2014 ha habido novedades al respecto en el mundo de los fabricantes de chips, con Qualcomm presentando sus nuevos Snapdragon 610 y 615, así que queremos recapitular y volver a echar un ojo al estado Android y los 64 bits: cuándo, cómo y por qué.
Android y los 64 bits: ¿cuándo?
Como bien comentamos en nuestro anterior artículo la llegada de la tecnología de los 64 bits requiere el movimiento de muchos participantes y, si bien, disponer de hardware que soporte 64 bits, ya se han anunciado procesadores Snapdragon o Mediatek, es Google la siguiente que tiene que mover ficha.
Es probable que la próxima gran actualización de Android, quizá Android 5.0, sea la versión definitiva en la que veamos la llegada del kernel con soporte de 64 bits de manera estándar.
A día de hoy Intel está trabajando en una versión de Android con soporte de 64 bits, perfecto para sus últimos Atom, pero es un caso muy aislado.
Android y los 64 bits: ¿cómo?
Android debe implementar un kernel con soporte de 64 bits así como también Dalvik VM o bien la máquina virtual que acabe implantándose, por ejemplo ART. Una aplicación escrita en Java correrá sin ningún problema en un sistema de 64 bits siempre y cuando la máquina virtual, bien Dalvik VM o ART, esté optimizada para aprovechar chips de 64 bits, de esta manera se podrá recompilar la misma con soporte para esa plataforma.
En caso de aplicaciones nativas, habría que adaptarlas para ofrecer soporte de las características inherentes de los 64 bits, lo que es un esfuerzo más costoso en tiempo para un desarrollador ya que, según el tipo de aplicación podría incluso correr más lenta en procesadores de 64 bits si no está bien optimizada.
Es complicado dar una ventana de tiempo para que suceda ello, pero, si bien Google podría mover ficha en cuestión de meses, el paso mastodóntico de este proceso, el desarrollo y adaptación de los millones de aplicaciones Android podría llevar años.
Android y los 64 bits: ¿por qué?
Esta pregunta es una de las grandes preguntas de la tecnología actual y vamos a intentar responderla de manera sencilla empezando por es una transición que está sucediendo a nivel hardware y el software puede aprovechar sus ventajas, ofreciendo un mejor rendimiento final para el usuario.
Samsung, Qualcomm y Mediatek están empezando a ofrecer procesadores con soporte de 64 bits y, si bien a un nivel genérico no hay muchas diferencias entre procesadores de 32 y 64 bits, sí que hay habitualmente un rango de mejora en el tiempo de ejecución de la aplicación cuando nos movemos a un entorno de 64 bits.
No hablamos del doble de velocidad como muchos creen ya que 64 bits es el doble de 32 bits, pero sí que hay un margen de mejora lo suficientemente grande como para que los desarrolladores se preocupes de él.
Para entender el primer punto de esta mejora de la llegada de los 64 bits nos tenemos que centrar en la arquitectura CPU y memoria. Las operaciones que se realizan desde y hacia la memoria RAM son muy lentas en comparación con la velocidad con la que procesa la CPU. Vamos a hacer una comparación:
Suponed que la CPU es un bibliotecario cuya labor es organizar los libros en estanterías (la memoria). Ordenar libros de forma alfabética es algo que el bibliotecario hace muy rápido, de cabeza (registros internos de la CPU), y el cuello de botella de esa operación viene a ser el acercarse a la estantería de libros desordenados y llevarlos a las estanterías correspondientes.
Todas esas transacciones con la memoria son lo que ralentizan el proceso y cuantas más veces tenga que acercarse a las estanterías (tanto la desordenada como la final) más tiempo llevará la operación.
Ahora es cuando el sistema de 64 bits entra, que permite obtener por cada paseo a la estantería de origen, transportar más libros para que el bibliotecario pueda ordenarlos (más rápido mentalmente gracias a los registros y extensiones 64 bits), También los llevará a las estanterías finales más rápido dando la opción de agruparlos en pequeños grupos, ahorrándole paseos y haciendo más rápida la operación general.
El ritmo de mejora a la hora de pasar de 32 a 64 bits en un programa en cuestión dependerá del tipo de aplicación y de cómo se optimice el compilador para utilizar este nuevo entorno, hay mejoras en la mayoría de casos de entre un 30% y un 60%.
Como ejemplo vamos a menciona el caso de Apple, quien ha dado el primer paso en smartphones hacia 64 bits con su último iPhone 5S que ya integra un chip y S.O. con esta arquitectura. Se ha comprobado que una aplicación de 32 bits y su versión de 64 bits tienen una diferencia de rendimiento del 33%, es decir, correrá un tercio más rápido o, lo que es lo mismo, si antes tardaba un 10 segundos en realizar una operación concreta, ahora tardaría 6,6 segundos.
La segunda mejora de esta nueva arquitectura es que los punteros de 64 bits permiten redireccionar más memoria RAM, es decir, si bien un sistema con procesador de 32 bits puede manejar sin problema hasta 3 GB de RAM, con un sistema de 64 bits se puede manejar mucha más memoria.
No hay que recordar que ya hay en el mercado dispositivos Android que están utilizando el máximo deRAM manejable por los sistemas de 32 bits, Galaxy Note 3, por ejemplo. Esto hace que la llegada de 64 bits de un respiro a nivel de hardware para fabricantes, que se encuentran con esta barrera de direccionamiento de RAM con el entorno tradicional de 32 bits.
La mayoría de programas utilizarán más memoria en 64 bits que en 32 bits
Sin embargo, no es oro todo lo que reluce con los punteros de 64 bits. La mayoría de programas utilizarán más memoria que la que utilizaban en 32 bits. Por norma general una aplicación de 64 bits ocupa más espacio en memoria que una de 32 bits y, según la optimización de la misma, podría incluso correr más lento como sucedió en PC con Oracle JVM.
Como se puede ver, es un tema que depende de muchos factores y, si bien ofrece una mejora de rendimiento notable gracias a los tres puntos mencionados:
- Mejora en los registros de la CPU
- Mayor espacio de memoria direccionable
- Soporte de más cantidad de RAM (>3GB de 32 bits)
Además de ello también hay que comentar que los procesadores de 64 bits son capaces de correr aplicaciones de 32 bits por lo que no se daría de lado todo el ecosistema actual de aplicaciones, sino que, correrían sin aprovechar las ventajas de este entorno 64 bits.