Los ‘benchmarks’ en tiempos del M1: reinterpretando el rendimiento de Apple Silicon

El M1 ya lleva un año entre nosotros. Cuando los primeros compradores y prensa comenzaron a recibir sus unidades de MacBook Pro, Mac mini y MacBook Air, lo primero que muchos hicieron fue comprobar su rendimiento e intentar averiguar por sí mismos si todas esas cifras que Apple nos dio en su presentación de X veces más rápido (que la generación anterior del mismo equipo), son ciertas o no.

Las primeras pruebas del mismo fueron llegando, de discos SSD, de GPUs, tanto por software como Cinebench, GeekBench, o incluso pruebas empíricas de tareas concretas comparadas con otros grandes equipos de la marca y mucho más caros. Sin duda los resultados son espectaculares y nos presentan un chip, un sistema en un chip (SoC, System on a Chip) con unas características increíbles. Más cuando tenemos ya en el mercado los chips M1 Pro y M1 Max.

Pero, ¿cómo podemos interpretar todas estas pruebas? ¿Es cierto que el M1 es el procesador más rápido en procesos de un solo núcleo, por encima de cualquier ordenador Mac presentado hasta la fecha con Intel?

La respuesta es simple: NO. No lo es. El Apple M1 es un chip, que no procesador, de gama consumo. En palabras de Craig Federighi, vicepresidente de ingeniería de software de Apple, gama de entrada del mercado y ese es su objetivo: ser eficiente energéticamente y dar solución a usuarios convencionales o de sector consumo. ¿Entonces? ¿Por qué los tests y pruebas dicen lo contrario? ¿Por qué nos dicen que el M1 es más que esto? Bien, vamos a explicarlo para que entendamos dónde están las virtudes del Apple M1 y por qué ya no sirve la forma convencional de medir el rendimiento de un equipo. Por qué el M1 ha redefinido la informática y la forma de concebirla hasta hoy.

Intel fabrica CPUs. Procesadores. Un tipo de chip que engloba todas las funciones posibles en uno solo. Su arquitectura es CISC o de conjunto complejo de instrucciones. Eso implica que su potencia, su versatilidad, se basa en proporcionar distintos tipos de conjuntos de instrucciones para el procesador, que no solo permitan realizar las tareas básicas. También tiene conjuntos de ayuda a tareas secundarias. Como conjuntos de instrucciones para virtualización de sistemas, de ayuda a la codificación y decodificación de vídeo, de cálculo matemático, de optimización del uso de memoria… en definitiva, es un chip único que lo hace todo, con muchas instrucciones complejas que le permiten hacer muchas cosas en una única llamada. Pero todo lo hace la CPU.

Apple fabrica SoC. Un sistema en un chip. No es solo una CPU, es un conjunto de componentes. Su CPU es de arquitectura RISC o conjunto reducido de instrucciones. Estos, priman el ahorro de energía, teniendo conjuntos más básicos de instrucciones en el procesador. No tienen tanta versatilidad ni pueden hacer tantas cosas en una sola instrucción.

Lo que una CPU de Intel es capaz de hacer en una o pocas instrucciones dada su enorme cantidad de las mismas y en diferentes conjuntos, en una CPU de Apple se necesitarán más instrucciones. Al final, ambos pueden hacer las mismas tareas al 99,9%, pero mientras Intel necesita menos pasos (pero genera más calor y gasto energético porque las instrucciones complejas derivan en procesos más costosos para la CPU), un SoC como el M1 o el A14 requiere de más pasos porque sus instrucciones son más simples. Pero cada instrucción consume menos y en conjunto es más eficiente energéticamente.

Esa diferencia es esencial para entender las capacidades de cada chip y cómo una comparativa de capacidad de proceso, no va a darnos un dato significativo porque aunque un equipo RISC y otro CISC sean capaces de dar la misma cantidad de pasos en el mismo tiempo, un CISC siempre necesitará menos pasos para llegar a la misma tarea. Es como si comparamos los pasos que dan dos personas en el tiempo, sin tener en cuenta la longitud de su paso. Alguien de 2 metros recorrerá más distancia en los mismos pasos en el mismo tiempo, que alguien de 1 metro y medio.

Una CPU Intel es solo ella. E intenta ayudar a tareas concretas con conjuntos de instrucciones como ya hemos comentado. Además, una CPU de Intel no puede tener distintos tipos de núcleos en el mismo chip: todos han de ser exactamente iguales. Pero los chips de Apple no: usan el concepto de la computación heterogénea. Esto implica dos cosas distintas.

La primera es que pueden tener distintos tipos de núcleos con distinta velocidad y configuración dentro de la misma CPU. De esta forma, el Apple M1 nos proporciona 8 núcleos donde 4 tienen un alto rendimiento y mayor velocidad de reloj (aunque consumen más energía), mientras otros 4 son más lentos y están destinados a tareas más livianas.

La segunda característica de la computación heterogénea es la más importante y la que marca una diferencia clave para entender cómo medir el rendimiento de los Apple M1. Hablamos de la incorporación de componentes específicos dentro del SoC que ayuden a tareas concretas del día a día. No es un conjunto de instrucciones como en Intel que se ejecutan todos sobre la misma CPU. Son componentes completamente separados e independientes, que tienen tareas concretas, donde la CPU no hace nada más que coordinar. Este tipo de componentes son mucho más eficientes que cualquier tipo de instrucción dentro de una CPU de uso genérico como las de Intel.

Así, cuando yo creo o trabajo con un vídeo 4K, la CPU del Apple M1 está liberada de cualquier tarea porque hay un chip específico que se encarga de hacer esta con un rendimiento muy alto. Si hago trabajo criptográfico, como descomprimir un fichero XIP (un ZIP cifrado y firmado digitalmente), hay otro componente que es un acelerador de cálculo criptográfico, que igualmente realiza esa tarea.

En esos componentes es donde radican muchas de las diferencias de rendimiento de un Apple M1 que no pueden ser medidas de una forma convencional. Porque ese es “el truco” que permite tener un rendimiento muy alto en un chip que sea de gama de entrada o consumo como el Apple M1.

Lo que debemos tener presente es que una CPU de Intel de un equipo como un MacBook Pro de 16” o un iMac de 27” 5K, es mucho más potente que un Apple M1. Estamos hablando de gamas muy distintas. Pero cuando intentamos medir su rendimiento, es cuando las diferencias que hemos explicado o la inclusión de componentes para tareas concretas marcan la diferencia. Ese es el nuevo concepto de computación que nos presenta Apple.

Apple nos ofrece una CPU menos potente aunque más eficiente energéticamente. Pero en el SoC tiene un número de componentes claves que suplen esa menor potencia, ayudando en tareas concretas del día a día. Cuando sumamos esto, es cuando tenemos un resultado que reinventa y revoluciona el mundo de la informática de consumo, porque es otro concepto más centrado en un equipo de distintos elementos y no un solo elemento de fuerza bruta como en Intel.

Para que nos hagamos una idea, el Apple M1 incorpora los siguientes componentes de ayuda al sistema:

Y a todo esto hay que sumar la memoria RAM unificada. La memoria RAM convencional del equipo está dentro del SoC en vez de fuera como suele ser lo habitual. Además, en un Apple M1 es más rápida pues usa memoria GDDR de GPU, a una velocidad superior para que la GPU (también integrada en el SoC) pueda trabajar a la velocidad que necesita y no cree cuello de botella. Eso beneficia a todo el sistema al tener una memoria más rápida.

La CPU pone unos datos en la memoria, el acelerador de aprendizaje automático los lee de ahí directamente y cuando acaba, el motor neural los recoge y procesa sobre ese mismo resultado. Al final, el ahorrarnos copiar datos de un lado otro entre diferentes componentes, nos da una mayor velocidad de proceso. Algo que no es medible como tal pero que sí aporta una mejora en el uso del equipo y hace que los benchmarks salga más altos.

El famoso Geekbench mide el rendimiento del equipo en base al resultado de una serie de operaciones que ellos clasifican de uso real del equipo. Lo divide en cargas de criptografía, de valores enteros y de valores de coma flotante.

En criptografía realiza cálculos en AES-XTS, con un peso del 5% a la puntuación. En cargas de números enteros (con un peso del 65% del resultado), valora el rendimiento en compresión de texto (con algoritmos LZMA), de imágenes (JPG a PNG), navegación (calcula rutas entre dos puntos geográficos con más de 200.000 nodos), HTML5 y ejecución de Javascript, uso de SQLite 3 (base de datos), render de ficheros PDF y de texto, compilación con CLang y trabajo de la cámara.

En coma flotante (peso del 30%) hace una carga de simulación gravitacional 3D con físicas N-Body, en 2D con cuerpos rígidos, aplica blur gausiano a una imagen de 24 megapíxeles, detecta caras en fotografías de muestra, detecta el horizonte en una fotografía y lo corrige, corrige una fotografía borrando contenido de ella como haría Photoshop, procesa imágenes con HDR, genera una escena de más de 3.500 triángulos texturizados donde aplica Ray Tracing (rayos de luz que permiten iluminar la escena de forma más realista), realiza una simulación de uso de realidad aumentada, simula una carga de reconocimiento del habla y ejecuta una red neural convolucional (MobileNet v1) sobre una imagen de 224×224.

De todas estas tareas, hay unas cuantas, diría que casi la mitad, que tienen ayudas específicas en los Apple M1. De forma que podemos entender cómo la forma de medir el rendimiento de un equipo ha cambiado. Porque mientras en un Intel todo esto lo hace la propia CPU, con tareas que se le van a dar mejor o peor, en el Apple M1 gran parte de estas tareas tienen componentes específicos que las realizan. Por eso dan esas puntuaciones tan altas, pero que podemos entender que en realidad están desvirtuadas. Básicamente, la forma de medir no sirve si queremos centrarnos solo en la potencia.

Hace mucho que dejó de servir medir los equipos por los ciclos de reloj (los gigahercios) y ahora, tampoco podemos medir el rendimiento de un equipo por la fuerza bruta de su CPU, porque en el caso del M1 tenemos un montón de componentes que ayudan en el día a día.

Esa es la brillante idea que Apple ha aplicado: suplir la falta de potencia bruta de una CPU de gama de entrada, con una serie de ayudas que le asisten en tareas convencionales, que le permiten dar un rendimiento medio más alto que la gama donde se sitúa. ¿Imaginan qué nos puede esperar el futuro si solo acabamos de empezar a ver las posibilidades?

Si quieren saber más, les invito a oír mi análisis en Apple Coding de los chips M1, donde desgrano todo con mucho más detalle, y si les ha gustado el artículo, otro día les hablaré de la GPU del Apple M1 y cómo funciona y se compara con el resto de ellas del mercado.