Apple lleva la delantera a todo el mercado de procesadores móviles, o SoCs, ya que lleva algo más de seis meses su procesador ARM de 64 bits a la venta dentro del iPhone 5s. Es una arquitectura que también llegó a los procesadores Intel Atom el año pasado.

Pero por supuesto la presentación de Apple del iPhone 5s y su procesadores de 64 bits se la tildó de truco de marketing: "¿Arquitectura de 64 bits? Sólo sirve para tener más de 3GB de RAM en un dispositivo". Es el comentario más habitual que se puede leer en las webs de Android y escuchar a los lectores de esas webs.

Es una excesiva simplificación de lo que realmente ocurre con las arquitecturas de 64 bits. Por que si no fueran por ellas, juegos actuales como Watch Dogs, whoops Black Flag no tendrían la calidad gráfica a la que ya estamos acostumbrados, y ciertos tipos de aplicaciones serían más lentas.

32 vs 64 bits

Por un lado, proporciona lo que ya he explicado: poder manejar más memoria. Es 2^32 direcciones en una arquitectura de 32 bits frente a 2^64 en una arquitectura de 64 bits. Si echáis las cuenta son 4GB frente a 16 EB (exabytes). Una enorme cantidad de memoria que difícilmente va a ser de utilidad en un dispositivo móvil (por ahora).

Las conexiones internas de un procesador son de tantos bits como su arquitectura, y es la cantidad de información que puede mover por sus buses en un momento dado. Puesto que la información se mueve de memoria al procesador en "bloques" de 64 bits en vez de 32 en el mismo espacio de tiempo, se aceleran cierto tipo de operaciones. No se aceleran todas por que hay mucha más historia detrás de esta simplificación.

Si queremos realizar una operación entre dos números de 128 bits, en una arquitectura de 32 bits (cuatro "bloques" de 32 bits) requeriría realizar dos veces más accesos a memoria que en una de 64 bits (2 bloques de 64 bits). No es que este tipo de operaciones se hagan mucho, pero en operaciones de cifrado son muy habituales. Aplicaciones como las de reconocimiento de huellas dactilares (Touch ID), o pago seguro a través de Internet también se benefician, así como otras que tengan que procesar audio.

Pero también se necesita mover más rápido de memoria al procesador la información gráfica, por lo que llevar de una vez 64 bits de datos en vez tenerla que llevar en dos veces es evidentemente más rápido. La información gráfica, cuanta más se pueda manejar de una tacada, más fps (frames per second) nos dará el juego. Sobre todo por que procesar la información gráfica implica realizar una elevada cantidad de operaciones en coma flotante y estas se benefician mucho de la arquitectura de 64 bits. También en las ventajas de ejecución paralela de este tipo de procesadores. Bastante más útil en tabletas que en teléfonos, aunque también se beneficien: tardar la mitad en realizar operaciones gráficas lleva a reducir el consumo de batería.

Por eso es imprescindible para las tarjetas gráficas actuales que el sistema operativo sea de 64bits para que no sea un cuello de botella en el desempeño de las mismas. Al menos hasta que lleguen las DirectX 12 y Mantle sea usado en más juegos, que liberan al procesador y la memoria principal del sistema de trabajo. Puesto que las GPUs de los dispositivos móviles están integradas en los SoCs y comparten acceso a la memoria, es imprescindible que todo el conjunto sea de 64 bits. A parte influye la velocidad de la memoria, o rapidez con la que lleva esos bloques de datos a memoria, pero ya el que el bloque sea más grande es "hasta" dos veces más rápido con un mero cambio de arquitectura.

En una arquitectura de 64 bits también hay más registros en el procesador (el espacio al que se mueven los "bloques" de datos desde memoria o en los que se guarda información variada como simplemente direcciones de memoria), además de que se pueden enviar hasta cuatro argumentos a esos registros al mismo tiempo. Los registros son el tipo de memoria más rápida que hay en un procesador, y por tanto que haya más registros implica una mejora general del rendimiento del procesador. Algo que sólo se puede conseguir en sistemas de 64 bits.

En el caso de la arquitectura ARMv8 de 64 bits, además de doblar el número de registros para disminuir la necesidad de liberarlos para nuevas operaciones, también tienen un tamaño mayor de 128 bits, que son los causantes de la mejora considerable en ciertas operaciones. Estos procesadores también pueden ejecutar más instrucciones fuera de orden que sus contrapartidas de 32 bits, por lo que se aprovechan más los ciclos de CPU. El Apple A7 cuenta con un búfer de reordenación de 192 instrucciones frente a los 45 del A6, comparable a los procesadores de sobremesa.

Otra mejora instantánea es la velocidad de acceso a periféricos, y eso incluye tarjetas microSD y memoria interna del dispositivo móvil. Puesto que los datos se llevan de 64 en 64 bits a memoria, la velocidad de lectura aumenta inmediatamente (siempre que los drivers lo aprovechen siendo también de 64 bits, y en muchos casos de no ser así simplemente no funcionarían).

Convivencia entre 32 y 64 bits

De manera ideal los dispositivos deberían usar sólo aplicaciones de 32 ó 64 bits. De otra forma hay que mantener en memoria compiladores y otras herramientas que permitan traducir el código compilado de 32 a 64 bits. Es lo que ocurre con iOS, pero curiosamente el beneficiado sería Android al usar Java.

Puesto que en Java el código de las aplicaciones se interpretan y traducen a la arquitectura del procesador en el momento en que se necesitan, no sería necesario mantener ningún tipo de intérprete de código compilado de 32 a 64 bits. Quizás sí que lo sea para aplicaciones que hagan usos muy específicos del equipo (dispositivos de entrada/salida, etc.). Pero con el compilador ART no será necesario, ya que en el momento de bajarnos la aplicación de Google Play se compila para nuestro equipo específico y se queda ya listo como aplicación de 32 ó 64 bits.

Como digo, quizás no totalmente optimizada puesto que los desarrolladores tendrán que realizar ciertos cambios a algunas de sus aplicaciones (sobre todo juegos) si quieren mejorar el rendimiento de las mismas, pero otros podrán seguir funcionando sin problemas sin tener que tocarlas.

Conclusión

No todo es bonito e idílico en el mundo de los 64 bits. Por un lado, las aplicaciones ocupan más espacio en disco. No grandes cantidades, pero en dispositivos móviles actuales sí que puede notarse. Además, en términos generales está establecido que la mejora de rendimiento en las aplicaciones que usamos más comúnmente en nuestros equipos tiende al 10%, y en juegos y operaciones concretas (cifrado) pueden llegar al 100% ó 200%.

Pero estos últimos datos son ciertos para los primeros compases en la vida de las arquitecturas de 64 bits. Desde entonces ha llovido mucho y con las arquitecturas de 64 bits han llegado otra infinidad de mejoras en cómo trata la información los procesadores y otras técnicas para acelerar y tomar partido lo máximo posible a esta arquitectura.

Si cogemos los procesadores Apple A6 y A7, 32 y 64 bits respectivamente, y los comparamos, veremos que ambos tienen dos núcleos funcionando a la misma velocidad de 1,3GHz. Sin embargo el A7 es el doble de rápido que el A6, e igual o más rápido que procesadores de cuatro núcleos como los Snapdragon 800 y 801. Esto es gracias a esa arquitectura interna de 64 bits que si le preguntas a algunos te dirán que no sirve de nada, pero que en la práctica sí que sirve.

Cuando digo que las tareas gráficas mejoran en rendimiento, hay que fijarse mucho en Android L. Las transiciones "bonitas" usan la GPU para realizarse fluidamente, y el poder mover más datos al mismo tiempo para generar esas transiciones implica menos consumo de batería. Puede que no sean evidentes al usuario los beneficios de una arquitectura de 64 bits. Es posible que en los terminales de gama alta de Android no lo sea en absoluto puesto que incluyen ya procesadores de cuatro núcleos a velocidades tan elevadas (y poco amigables para la batería) como los 2,2 hasta los 2,7 GHz. Pero la llegada de los 64 bits puede significar que empresas como Qualcomm se planteen mejorar sus procesadores para hacerlos más eficientes una vez que lleguen antes de lo que esperaban al mercado espoleados por el Apple y su A7.

Sólo os digo una cosa a los excépticos: cuando todos los fabricantes quieren poner en la calle su procesador de 64 bits, será por algo. Y no es para vender más, si no para no quedarse atrás. La mejora de rendimiento en procesadores móviles de 64 bits es totalmente real, y sólo os pediría que investiguéis un poco más sobre este asunto, pero no en páginas de Android o tecnológicas de segunda.