Nadie sabe exactamente cómo funciona el almacenamiento en caché dinámico del M3, pero tengo una teoría

Una diapositiva de una presentación de Apple que dice "Almacenamiento en caché dinámico".
Manzana

Durante el evento "Scary Fast" de Apple , una característica me llamó la atención como ninguna otra: el almacenamiento en caché dinámico. Probablemente, como la mayoría de las personas que vieron la presentación, tuve una reacción: "¿Cómo aumenta la asignación de memoria el rendimiento?"

Apple basó el debut del nuevo chip M3 en una característica "piedra angular" que llama almacenamiento en caché dinámico para la GPU. La explicación simplificada de Apple no deja claro exactamente qué hace el almacenamiento en caché dinámico y mucho menos cómo mejora el rendimiento de la GPU en el M3.

Profundicé en las arquitecturas típicas de GPU y envié algunas preguntas directas para descubrir qué es exactamente el almacenamiento en caché dinámico. Aquí está mi mejor comprensión de lo que sin duda es la característica técnicamente más densa que Apple jamás haya implementado en una marca.

¿Qué es exactamente el almacenamiento en caché dinámico?

Familia de chips M3 de Apple.
Manzana

El almacenamiento en caché dinámico es una característica que permite que los chips M3 utilicen solo la cantidad precisa de memoria que necesita una tarea en particular. Así lo describe Apple en el comunicado de prensa oficial: “Dynamic Caching, a diferencia de las GPU tradicionales, asigna el uso de memoria local en el hardware en tiempo real. Con el almacenamiento en caché dinámico, solo se utiliza la cantidad exacta de memoria necesaria para cada tarea. Esta es una novedad en la industria, transparente para los desarrolladores y la piedra angular de la nueva arquitectura de GPU. Aumenta drásticamente la utilización promedio de la GPU, lo que aumenta significativamente el rendimiento de las aplicaciones y juegos profesionales más exigentes”.

Al estilo típico de Apple, muchos de los aspectos técnicos se ocultan intencionalmente para centrarse en el resultado. Hay suficiente allí para captar la esencia sin revelar la salsa secreta o confundir al público con jerga técnica. Pero la conclusión general parece ser que el almacenamiento en caché dinámico permite que la GPU tenga una asignación de memoria más eficiente. Bastante simple, ¿verdad? Bueno, todavía no está exactamente claro cómo la asignación de memoria "aumenta la utilización promedio" o "aumenta significativamente el rendimiento".

Incluso para intentar comprender el almacenamiento en caché dinámico, debemos dar un paso atrás para examinar cómo funcionan las GPU. A diferencia de las CPU, las GPU destacan por manejar cargas de trabajo masivas en paralelo. Estas cargas de trabajo se denominan sombreadores, que son los programas que ejecuta la GPU. Para utilizar eficazmente una GPU, los programas deben ejecutar una gran cantidad de sombreadores a la vez. Desea utilizar tantos núcleos disponibles como sea posible.

Esto conduce a un efecto que Nvidia llama "cola". Se ejecuta una gran cantidad de sombreadores a la vez, y luego hay una caída en la utilización mientras se envían más sombreadores para ejecutarse en subprocesos (o más exactamente, bloques de subprocesos en una GPU). Este efecto se reflejó en la presentación de Apple cuando explicó el almacenamiento en caché dinámico, ya que la utilización de la GPU aumentó antes de tocar fondo.

Dos gráficos que muestran la utilización de GPU uno al lado del otro.
Imagen utilizada con permiso del titular de los derechos de autor.

¿Cómo influye esto en la memoria? Las funciones de su GPU leen instrucciones de la memoria y escriben la salida de la función en la memoria. Muchas funciones también necesitarán acceder a la memoria varias veces mientras se ejecutan. A diferencia de una CPU donde la latencia de la memoria a través de la RAM y el caché es extremadamente importante debido al bajo nivel de funciones paralelas, la latencia de la memoria en una GPU es más fácil de ocultar. Estos son procesadores altamente paralelos, por lo que si algunas funciones están buscando en la memoria, otras pueden estar ejecutándose.

Esto funciona cuando todos los sombreadores son fáciles de ejecutar, pero las cargas de trabajo exigentes tendrán sombreadores muy complejos. Cuando se programe la ejecución de estos sombreadores, se asignará la memoria necesaria para ejecutarlos, incluso si no es necesaria. La GPU está dividiendo muchos de sus recursos en una tarea compleja, incluso si esos recursos se desperdician. Parece que Dynamic Caching es el intento de Apple de utilizar de manera más efectiva los recursos disponibles para la GPU, asegurando que estas tareas complejas tomen solo lo que necesitan.

En teoría, esto debería aumentar la utilización promedio de la GPU al permitir que se ejecuten más tareas a la vez, en lugar de tener un conjunto más pequeño de tareas exigentes que devoran todos los recursos disponibles para la GPU. La explicación de Apple se centra primero en la memoria, haciendo que parezca que la asignación de memoria por sí sola aumenta el rendimiento. Según tengo entendido, parece que la asignación eficiente permite ejecutar más sombreadores a la vez, lo que luego conduciría a una mayor utilización y rendimiento.

Usado versus asignado

Un aspecto importante que es clave para comprender mi intento de explicar el almacenamiento en caché dinámico es cómo se ramifican los sombreadores. Los programas que ejecuta su GPU no siempre son estáticos. Pueden cambiar dependiendo de diferentes condiciones, lo cual es especialmente cierto en sombreadores grandes y complejos como los necesarios para el trazado de rayos. Estos sombreadores condicionales necesitan asignar recursos para el peor escenario posible, lo que significa que algunos recursos podrían desperdiciarse.

Así es como Unity explica los sombreadores de ramificación dinámica en su documentación: “Para cualquier tipo de ramificación dinámica, la GPU debe asignar espacio de registro para el peor de los casos. Si una rama es mucho más costosa que la otra, esto significa que la GPU desperdicia espacio de registro. Esto puede dar lugar a menos invocaciones del programa de sombreado en paralelo, lo que reduce el rendimiento”.

Parece que Apple está apuntando a este tipo de ramificación con Dynamic Caching, permitiendo que la GPU solo use los recursos que necesita en lugar de desperdiciarlos. Es posible que la característica tenga implicaciones en otros lugares, pero no está claro dónde y cuándo se activa el almacenamiento en caché dinámico mientras una GPU ejecuta sus tareas.

Sigue siendo una caja negra

Apple revela nuevas Mac en un evento.
Manzana

Por supuesto, debo señalar que todo esto es solo mi entendimiento, improvisado a partir de cómo funcionan tradicionalmente las GPU y lo que Apple ha declarado oficialmente. Apple puede publicar más información sobre cómo funciona todo eventualmente, pero en última instancia, las minucias técnicas del almacenamiento en caché dinámico no importan si Apple es, de hecho, capaz de mejorar la utilización y el rendimiento de la GPU.

Al final, Dynamic Caching es un término comercial para una característica que profundiza en la arquitectura de una GPU. Tratar de entender eso sin ser alguien que diseña GPU conducirá inevitablemente a conceptos erróneos y explicaciones reduccionistas. En teoría, Apple podría simplemente haber rechazado la marca y dejar que la arquitectura hablara por sí misma.

Si estaba buscando una mirada más profunda a lo que podría hacer el almacenamiento en caché dinámico en la GPU del M3, ahora tiene una posible explicación. Sin embargo, lo importante es el rendimiento del producto final, y no tendremos que esperar mucho hasta que los primeros dispositivos M3 de Apple estén disponibles para el público para que todos lo descubramos. Pero según las afirmaciones y demostraciones de rendimiento que hemos visto hasta ahora, ciertamente parece prometedor.