La potencia no lo es todo. Esa es una frase cierta en todo tipo de contextos, desde coches a ordenadores, tablets, y por supuesto, smartphones. Claro, que no siempre tenemos claro qué significa realmente, hasta que lo comprobamos de primera mano.
Por ejemplo, puede que alguna vez hayas usado dos móviles con el mismo procesador, y te hayas encontrado diferencias notables en el rendimiento. Puede que uno fuese más rápido ejecutando aplicaciones pesadas como videojuegos; o que sea capaz de cargar archivos de manera instantánea comparado con el otro.
Misma potencia, diferente rendimiento, ¿cómo es posible?
En ese sentido, las comparaciones entre móviles Android y los iPhone son inevitables. Cada año que pasa, en cada presentación, Apple presume de potencia en sus dispositivos. Habla de cómo en cada nueva iteración es capaz de obtener un rendimiento un 20%, 30%, o 50% superior respecto al año anterior; y por supuesto, aprovecha para lanzar dardos a la competencia con Android. Sobre todo con los últimos modelos, que usan procesadores diseñados por la propia Apple; unos procesadores que, asegura, son los más potentes del mercado.
Pero aumentar la potencia de un procesador no es la única manera de mejorar su rendimiento. la diferencia de rendimiento que notamos al usar un smartphone no está necesariamente ligada a lo potente que sea el procesador, ni a la cantidad de núcleos que tenga. Hay otros aspectos que son igual o incluso más importantes en la experiencia.
Instrucciones, el secreto para acelerar el rendimiento
Es bien sabido que iOS, el sistema operativo de los iPhone, está muy bien optimizado; pero ese no es el único «truco» que usa Apple. Sus procesadores también están diseñados para ser excelentes en ciertos tipos de operaciones; son especialistas en algunas tareas, en otras palabras. Y lo consiguen gracias a las llamadas «instrucciones».
Las instrucciones son todo lo que el procesador es capaz de ejecutar; son comandos que los programadores usan para desarrollar los sistemas operativos y programas que se ejecutan en el procesador. Podemos definir a las instrucciones como la lista de órdenes que el procesador entiende.
Un ejemplo de instrucción muy simple es realizar una operación aritmética. Por ejemplo, pongamos que quieres sumar dos valores que están guardados en la memoria; usando una instrucción es posible ordenárselo al procesador y recibir un resultado que guardaremos en la memoria.
No todos los procesadores tienen los mismos conjuntos de instrucciones; aunque la mayoría tiene las más simples, que permiten realizar operaciones matemáticas o mover datos de memoria.
Ahora imaginemos que nuestro procesador no tiene una instrucción para multiplicar. No pasa nada, podemos usar la instrucción para sumar y conseguir el mismo resultado, ¿verdad? Si queremos multiplicar 3 por 7, lo podemos hacer simplemente sumando 3 + 3 + 3 + 3 + 3 + 3 + 3; en otras palabras, enviando siete instrucciones de «suma» al procesador.
El problema es que tenemos que dar más pasos, en este caso siete pasos en vez de uno solo. Y cada instrucción que enviamos ocupa completamente al procesador; así que no podemos hacer otra cosa hasta que termine (esto no es del todo cierto en la actualidad, pero nos vale como base).
Si nuestro procesador tuviese una instrucción para multiplicar, podríamos ordenar sólo una instrucción, y usar el resto para otras cosas; de esta manera, se mejora el rendimiento aunque el procesador sea igual de potente.
Nuevas instrucciones para mejorar el rendimiento de la navegación web
Los procesadores actuales son mucho más complejos, con una gran cantidad de instrucciones que los programadores pueden aprovechar. Pero la idea es la misma: realizar acciones de manera más directa que programándolas directamente usando varios pasos. Es muy útil, especialmente para acciones muy comunes.
Pero entonces, ¿por qué no se crean instrucciones para cada necesidad que tienen los programadores? Aparte de la razón obvia (cada día aparecen cientos de aplicaciones, cada una haciendo las cosas a su manera), debemos tener en cuenta la compatibilidad. Ampliar el conjunto de instrucciones de un procesador implica que los modelos anteriores no son compatibles con ellas; imagina que te compras un móvil y un año después no puedes ejecutar nuevas apps porque necesitan las instrucciones de los nuevos procesadores.
Por eso, añadir nuevas instrucciones a un procesador es algo que no se hace a la ligera. A lo largo de la historia de la informática estas decisiones han tenido grandes consecuencias en el mercado. Pero hay veces en las que los fabricantes consideran que tienen que tomar esa decisión; especialmente para dar soporte a métodos de programación comunes.
ARM recibirá instrucciones pensadas para Javascript
Y si hay algo común en la actualidad, eso es Javascript. Este lenguaje se usa en la inmensa mayoría de las páginas web que visitas; es la clave que ha permitido crear páginas más completas, que responden a nuestras acciones y con un diseño más moderno. Pero ejecutar Javascript no es precisamente el lenguaje más optimizado. Y por eso puede que hayas notado problemas en algunas páginas; especialmente en ordenadores o smartphones de gama baja.
Es por eso que ARM va a hacer una excepción, e incluirá instrucciones pensadas específicamente para Javascript. ARM es la arquitectura en la que se basan la mayoría de los procesadores diseñados para móvil; hace décadas fue creada para servidores y equipos que no debían consumir mucho. Con la llegada de los smartphones, se ha convertido prácticamente en la plataforma por defecto.
La próxima versión de ARM, la 8.3, incluirá nuevas instrucciones que manejan valores de la manera en la que Javascript prefiere; por lo tanto, deberíamos notar grandes diferencias en el rendimiento de páginas web y aplicaciones que usen mucho ese lenguaje. Sin embargo, sólo notaremos el cambio en navegadores que se hayan actualizado para usar las nuevas instrucciones.
ARM no es la primera que ha pensado algo parecido. Apple ya incluyó nuevas instrucciones pensadas especialmente para Javascript en el nuevo A12; el procesador que encontramos en la última generación de iPhone, el XS, XS Max y XR. Sin embargo, el navegador Safari aún no hace uso de estas instrucciones.
Esta novedad es llamativa porque está pensada para un tipo concreto de lenguaje; que, de hecho, mucha gente no considera un «verdadero» lenguaje de programación. Es todo un indicador de cómo ha cambiado el desarrollo de aplicaciones en los últimos años.