Si hay algo que tiene Apple es una buena colección de zelotes afines capaces de alabar a los altares cualquier vulgaridad con el logo de la manzana y presentarte lo más mundano como si fuese la vacuna del SIDA, la venida del mesías o la fin del hambre en el mundo. Y es que la presentación de los SoC M1 Pro y M1 Max no debería habernos pillado a nadie por sorpresa.

¿El motivo? Me explico, en todos los nodos de fabricación se empiezan fabricando chips de pequeño tamaño para teléfonos inteligentes y tablets para luego hacer chips más complejos en tamaño. Sabemos que en 2022 tanto AMD como NVIDIA utilizaran el nodo de 5 nm de TSMC para sus GPU de gran tamaño y por eso no debería sorprendernos ver un M1 de gran tamaño donde la trampa no es otra que:

  • Aumentar la cantidad de núcleos.
  • Aumentar el ancho de banda de la memoria.

Esto ya lo había hecho Apple con sus AnX para iPad y precisamente lo que permite el uso de un ordenador portátil gracias a sus características es colocar un chip más grande. Ya habíamos visto chips de 250 mm2 por parte de Intel y AMD en portátiles, sinceramente lo que ha hecho Apple con el M1 Pro no tiene nada de especial.

La pieza que destaca más es la GPU, con sus 16 núcleos que en realidad son 16 unidades Shaders o Compute Units de 64 ALU en FP32 y que en tecnologías soportadas equivale a una GTX 1660, no tiene soporte para ninguna de las tecnologías de DirectX 12 Ultimate y ni falta que le hace, ya que a Apple los juegos se la traen al pairo. Bien es cierto que como GPU integrada es mejor que cualquier cosa que Intel o AMD hayan incorporado dentro de un SoC hasta la fecha de hoy. Lo que a mí me sorprende es que la GPU no sea la del A15, con la cual Apple ha pasado de 64 ALU por «Core» de la GPU a 128.

El siguiente punto es la CPU y es aquí donde hay una cosa que matizar. Apple ha pasado de una configuración 4+4 a una configuración 8+2, por lo que obviamente el rendimiento es superior al M1 estándar, pero aquí lo que me gustaría que os fijaseis es el nivel de ignorancia existente de los vomitadores de rumores sin sentido:

Si no entendéis nada os lo voy a explicar, el problema de aumentar la cantidad de núcleos es la comunicación entre ellos, si tienes una infraestructura de pocos, cuatro o menos, entonces puedes hacer servir un Crossbar que se basa en que intercomunicas los núcleos entre ellos de manera directa y normalmente poniendo una caché general para ellos en medio. El problema viene cuando aumentas a 8 núcleos, la cantidad de interconexiones se ha cuadriplicado y con ello el consumo energético de la transferencia de datos, por lo que tienes que utilizar otras opciones y esto es general para toda la industria donde para conectar configuraciones de 8 núcleos se utilizan anillos.

El Crossbar no escala bien por el coste de la infraestructura, por lo que se llega al punto en que se necesita el uso de un anillo, pero este tiene un handicap.

El anillo añade latencia, pero permite intercomunicar 8 núcleos en una misma infraestructura sin problemas, es también lo que hay hecho AMD con sus Zen 3:

El uso de un Crossbar para 8 núcleos es una idea muy mala que nadie quiere seguir, pero esto fuerza tener que rediseñar toda la circuitería de intercomunicación, de ahí que este Apple M1 Pro haya aparecido un año después que el M1. Pensad que en la versión de hace un año teníamos dos clústeres de 4 núcleos y ahora tenemos uno de 8 y otro de 2.

Pero no olvidemos que los medios hablaban de una configuración de 32 núcleos de CPU, al final han resultado ser de GPU, pero es que cualquiera con conocimientos sabía que una CPU de 32 núcleos es imposible, para empezar no puedes hacerla con un anillo por el hecho que añadir elementos a su alrededor aumenta la latencia, por lo que has de buscar una solución y creedme que hay infraestructuras de comunicación más complejas, pero si no se pierde el tiempo con ellas es por algo.

Pe, pero Urian, mira las GPU de NVIDIA y AMD, colocan decenas de Compute Units también llamadas Unidades Shader, una CPU de Apple de 32 núcleos es posible.

Pues yo no lo veo:

Para que lo entendáis mejor, la interconexión de varios núcleos entre sí tanto si hablamos de una CPU como de una GPU se realiza a través de los niveles de caché y memoria intermedias con tal de reducir la cantidad de interconexiones existentes entre las diferentes partes. Por ejemplo si tenemos una configuración de 64 núcleos lo normal es que tengamos 8 grupos de 8 núcleos cada uno con un anillo interno y luego cada uno de esos 8 grupos conectados al anillo externo que tendrá 8 interconexiones y no 64.

El problema es que la infraestructura necesaria para ello en forma de transistores y espacio en el chip es inmensa, en una GPU que está pensada en paralelo cada parte se encarga de una parte diferenciada, pero en una CPU donde hay intercomunicación continua esto es una pesadilla. Es por ello que en el Apple M1 MAX se ha aumentado solo la GPU:

Vale si, el ancho de banda externo se ha duplicado al pasar a un bus de 512bits LPDDR5 y los bloques de caché de último nivel SLC que escalan con la cantidad de memoria también. Aquí la clave es que para tener una GPU de 32 unidades Shader y por tanto de 2048 ALU el tamaño del chip ha aumentado considerablemente por la infraestructura de comunicación interna que se necesita para ello. Y las GPU no tienen la complejidad de una CPU que haría que dicha interconexión se iría por las nubes.

Por lo que en realidad no hay nada de especial en todo esto, solo la obsesión de sobrevalorar a Apple y lo que veo aquí es que a nivel de GPU lo van a pasar muy mal y su tecnologia esta varios años atrasada. Y si han tenido que hacer estos SoC es por el hecho que su estrategia de hacerlo todo en casa y competir contra todo el mundo no renta y no hay recursos ni tiempo.

Y ya para terminar, no olvidemos tampoco que Apple ha ido dejando poco a poco el mercado para servidores y centros de datos desde hace años, los que hablaban de una CPU de 32 núcleos simplemente no sabían ni saben de lo que hablan.