Opinión

¿Batería, CPU o sistema? Por qué los iPhone antiguos van más lentos

Apple está en una tormenta perfecta. Una tormenta que ha ido haciéndose más grande semana a semana desde que iOS 11 estuvo disponible para todo el público. Una tormenta que llegó a un estado de ciclogénesis explosiva cuando la propia compañía admitió una actualización en el software de los dispositivos antiguos, para prevenir problemas graves en función de los ciclos de carga de la batería.

Pero, ¿qué pasa realmente con los iPhone? ¿Es un problema realmente de la batería? Porque la pregunta del millón es: si es un problema de la batería, ¿por qué empezó a dar con la llegada de iOS 11? Vamos a intentar arrojar luz a este problema que no parece quedar claro en muchas ocasiones. Porque en realidad es un problema a dos bandas que puede llegar a complementarse.

Baterías

Apple realiza un proceso de software para intentar alargar la vida útil de los dispositivos. Esto es una realidad confirmada por ellos mismos. Esta es la traducción de la declaración oficial por parte de Apple dada a The Verge:

Nuestro objetivo es proporcionar la mejor experiencia a nuestros clientes, lo que incluye el rendimiento general y la prolongación de la vida de sus dispositivos. Las baterías de iones de litio se vuelven menos capaces de proveer picos de energía en condiciones de frío, cuando tienen una carga baja de batería o cuando envejecen con el paso natural del tiempo. Esto puede provocar que un dispositivo se apague inesperadamente para proteger la electrónica de sus componentes.
El último año lanzamos una función para el iPhone 6, el iPhone 6s y el iPhone SE para suavizar los picos instantáneos y evitar que se apaguen inesperadamente en estas condiciones. Y hemos extendido esta función a los iPhone 7 con iOS 11.2 y tenemos planes de añadir este soporte para otros productos en el futuro.

¿Quiere decir que esta función que evita estos comportamientos que pueden dañar la propia electrónica del dispositivo hace que los iPhone vayan más lentos? Según datos extraídos de estudios de rendimiento de varios iPhone con diferentes grados de degradación de la batería, parece ser que sí. Como ejemplo este tuit.

Según parece, un iPhone puede bajar bastante su velocidad de CPU para evitar una demanda excesiva de energía. ¿Por qué? Según Apple porque las baterías con mucho tiempo y lo suficientemente degradadas por los normales ciclos de carga por su uso, pueden provocar si tienen una demanda muy alta de energía, que la vida útil de los mismos se reduzca drásticamente. Para hacer esto, solucionan un problema por el que algunos iPhone se apagaban solos cuando tenían una demanda muy alta de energía. ¿Por qué se apagaban? Para evitar que la electrónica se dañará por un pico de energía muy alto. Básicamente, un cortocircuito interno que era motivo de muerte súbita en dispositivos más antiguos (yo tenía un iPhone 4 que murió así).

¿Hace Apple bien? Es cuestión de opinión. Por un lado alarga la vida del dispositivo, pero por otro su rendimiento puede llegar a bajar tanto que el dispositivo se haga inusable en muchos casos. Pero lo hacen para evitar un mal mayor que es un efecto colateral que le puede suceder a cualquier dispositivo (no solo de Apple) que tenga una batería con la tecnología actual de iones de litio. Desde el punto de vista de Apple, es mejor que tu iPhone siga funcionando aunque más lento a que de pronto muera y te quedes sin él en un segundo.

iPhone 6s Batería

Hasta aquí, hemos visto la mitad del problema. Una mitad muy clara: nuestro smartphone puede ver reducida su velocidad para prolongar la vida de su electrónica. Básicamente la velocidad de la CPU se adapta a la capacidad de la batería. Por esa regla de tres, Apple debería tener un programa oficial de reemplazo de las baterías que permita solventar estos problemas y “rejuvenecer” dispositivos.

La respuesta oficial es que Apple te hace un test de tu batería si crees tener un problema con ella. Si tienes el programa AppleCare+ y tu batería retiene menos de un 80% de su capacidad original, te la cambiarán gratuitamente. Si sucede esto mismo, pero no tienes contratado AppleCare+, Apple te cobrará $79/79€ por el cambio. Y si tu dispositivo tiene algún otro problema de energía que no esté relacionado con la batería, te darán un precio de reparación para sustituirte tu dispositivo por otro reacondicionado.

Pero si no cumples ninguna de estas tres condiciones, te mandan a casa y no te cambian la batería, aunque esta función de software ya esté actuando y tu dispositivo vaya más lento para preservar su vida útil. Tu única opción ahí es acudir a otros medios, desde una tienda no oficial a un kit de auto-reparación como los de iFixit.

Cambio de arquitectura en iOS 11

Pero este problema con la batería es uno. Independiente. Solo que se suma a otro provocado por la propia evolución del software y el importante cambio de arquitectura que ha supuesto la incorporación del procesador A11 Bionic.

Por si no lo sabían, iOS 10 usaba Machine Learning para el teclado predictivo. Fue una de las funciones más publicitadas en su momento porque la inteligencia artificial llegaba a iOS, iba a aprender de ti y te facilitaría la vida. En aquel momento, la CPU más potente era el A10 Fusion que básicamente era una unidad central de proceso convencional. Buena, rápida, pero convencional. Esto quiere decir que sus registros (donde se guarda la información que luego va a procesarse en las operaciones que hacen que un dispositivo funcione) admitían valores escalares: números de una sola dimensión.

A11 Bionic

Por lo tanto, todos los procesos de Machine Learning que usaba iOS 10 estaban pensados y concebidos para funcionar por cálculo computacional basado en registros de una sola dimensión. Pero el Machine Learning, cuando es procesado a través de redes neuronales, usa valores de cuatro dimensiones. Valores que denominados tensores. Simplemente convertía esos tensores en valores de una única dimensión, procesándolos uno a uno y todo funcionaba bien.

Además, un A10 Fusion con iOS 10 no tenía ayuda alguna para el cálculo de Machine Learning. Existen algunos chips gráficos (GPU) que permiten realizar operaciones de cálculo complejas aprovechando su potencia, aunque no sean tareas gráficas de por sí. A través del uso de unos shaders especializados, estas GPUs permiten la aceleración y cálculo de operaciones de una alta complejidad computacional como gestionar un modelo de aprendizaje por Machine Learning. Pero el A10 Fusion no tiene esta capacidad, ni ninguno de sus hermanos menores.

Sí es cierto, que iOS 10 incorporó alguna posibilidad en su librería gráfica Metal, para acelerar algunos procesos. Pero esa posibilidad se hacía a nivel de software y por lo tanto, todas las CPUs se enfrentaban a un problema parecido y su rendimiento no se veía afectado en exceso.

Pero entonces llegó el A11 Bionic con dos cambios claves: la incorporación de un procesador neural o TPU (Unidad de Proceso de Tensores) y la incorporación de Metal 2 como librería que incorpora todo su conjunto de instrucciones directamente en el chip gráfico, en la GPU. Y no solo es que Metal 2 esté a nivel de hardware en las nuevas GPU que vienen con el A11 Bionic (la primera vez que Apple hace un chip gráfico propio). Es que Metal 2 sí está preparado para cálculo computacional. Dispone de una serie de shaders que permiten un trabajo óptimo en cálculo como el que necesita un modelo de Machine Learning y acelera por hardware muchísimo cualquier proceso de este tipo.

A11 Bionic Transistores

Por lo tanto, el A11 Bionic tiene dos mejoras claves frente a la inteligencia artificial. Una IA presente en muchos lugares de iOS como el teclado predictivo, Siri, el control de procesos del propio dispositivo, el reparto de tareas a núcleos de alto rendimiento o de alta eficiencia energética, la indexación de la información recopilada por el dispositivo… muchos procesos que forman parte del propio núcleo del sistema y que ahora se han optimizado para sacar el mejor rendimiento de estas nuevas facultades de los chips A11: el cálculo computacional de la GPU con Metal 2 y el uso de redes neuronales con su TPU.

¿Qué pasa entonces? Que el propio software ha de poner una capa intermedia en el sistema, para que cuando un dispositivo no tenga TPU, emule una transformando los datos de los tensores a valores de una sola dimensión para ser procesados por una CPU convencional. Y esto obviamente hace que la CPU tenga mayor actividad, consuma más energía y le cueste más realizar esta tarea. Tareas que están en el propio núcleo del sistema. Tareas que hacen que cuando ponemos iOS 11 en nuestro dispositivo que NO tiene un A11 Bionic, la batería dure menos y parece que se arrastra (o directamente se arrastra y va a tirones con pausas injustificadas).

De igual forma, cuando hay que procesar un modelo de Machine Learning, si el dispositivo es un A10 Fusion, podrá hacer uso de Metal 2 y sus capacidades de aceleración de cálculo computacional de las que dispone la librería. Pero ojo: Metal 2 en un A10 Fusion no está en el chip. Metal 2 en un A10 Fusion es una librería de software que funciona contra una GPU genérica que no es de Apple. Esto significa que un A10 Fusion podrá beneficiarse de las mejoras en proceso de modelos de Machine Learning, pero va a ir obviamente más lento, le costará más y el consumo de energía será mayor porque lo que en un A11 Bionic se hace por hardware, en un A10 Fusion ha de hacerse por software.

¿Y si tenemos un procesador A9 o anterior? No soportamos Metal 2, por lo que ni siquiera tenemos aceleración en cálculo computacional y, por lo tanto, habrá un pequeña capa de “emulación” en el software, que haga las operaciones a través de la CPU convencional. ¿Efecto colateral? Mayor lentitud y mayor consumo energético. Un consumo energético que si pide picos grandes de energía en condiciones en que la batería no esté bien, puede provocar que el dispositivo dure menos y por eso Apple hace que vaya más lento.

Motor Neuronal

Por lo tanto el sistema baja su rendimiento para preservar la vida del iPhone pero si todo iba ya lento, ahora va aún más. Es la pescadilla que se muerde la batería.

Una posible solución

¿Dónde está el problema con el software? En que Apple ha hecho y diseñado iOS 11 para sacar el máximo rendimiento de su nueva arquitectura del A11 Bionic. Y ha obviado el resto. Les ha dado una pequeña capa de compatibilidad emulada para que sigan funcionando, pero nada más. En conclusión: al actualizar todo para sacar el mejor rendimiento del A11 Bionic ha condenado el rendimiento de los dispositivos más antiguos.

¿Hay solución? Sí. Una muy simple. No darle las nuevas capacidades basadas en el uso de TPU y GPU con Metal 2 a los dispositivos que no tienen estas capacidades. El iPhone 7 no se verá resentido porque tiene la suficiente potencia (aunque sí pierda algo de autonomía) y el resto de dispositivos tendrán las mismas capacidades y funcionamiento que tenían en iOS 10.

Basta poner una serie de directivas de compilación para que se usen unos u otros algoritmos en función del tipo de dispositivo o de las capacidades hardware de los mismos. Bajo mi punto de vista es más fácil entender que mi dispositivo más antiguo tiene menos funciones que uno más nuevo, a el hecho que por ponerle las nuevas funciones hagas que mi dispositivo antiguo sea inusable. Creo que ese es el quid de la cuestión.

¿Hará Apple este arreglo? Yo espero que sí. Más aún con la tormenta perfecta que ha caído sobre ellos. Pero está claro que tal vez tardará un poco.

Así que estos son los motivos por los que su dispositivo iOS va más lento. No intento defender ni a Apple ni a nadie. Me limito a contar los hechos: suyas son las conclusiones. Un saludo y Good Apple Coding.

Etiquetas

Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Artículos relacionados

Close
Close