AMD presentó hace poco la primera CPU doméstica con caché vertical, la cual consiste en el uso de tecnología 3DIC para conectar un módulo de SRAM encima de un CCD Zen 3. ¿Qué puede aportar la caché vertical al rendimiento en CPUs, GPUs y otro tipo de procesadores y componentes de un PC? Esto es lo que intentaremos desgranar en este artículo.
El añadido de la llamada “V-Cache” por parte de AMD en algunas de las futuras CPUs de AMD basadas en Zen 3 ha traído consigo la siguiente pregunta: ¿Tiene sentido ampliar la caché de una CPU hasta niveles estratosféricos con tal de ganar rendimiento? Obviamente la idea de aplicar memoria caché adicional en vertical no es algo que AMD pueda realizar de manera exclusiva y los sistema de interconexión vertical entre chips permiten conectar un chip de memoria SRAM justo encima de una APU, una CPU o una GPU sin problemas.
Por lo que lo que ha realizado AMD en el fondo no tiene nada de especial, bien es cierto que han sido pioneros en aplicar un sistema de SRAM 3D con tal de ampliar el total de la memoria caché en los CCD Chiplets, se ha de tener en cuenta que la SRAM vertical como caché va a ser siempre la caché de último nivel o LLC de un procesador y por tanto su implementación cambiará según si hablamos del tipo de procesador que hablemos.
Caché vertical solo en el último nivel
La realidad es a que a día de hoy en términos generales, todos los procesadores en el fondo son SoCs, en el sentido que hacen uso de varios elementos de procesamiento que pueden ser homogéneos en el sentido de utilizar todos los mismos núcleos o heterogéneos a la hora de tener diferentes tipos de núcleos. Lo que sí que tienen en común es el northbridge, al que Intel llama “Uncore” y AMD denomina “Data Fabric”. Da igual cual sea el nombre, realmente estamos hablando del mismo concepto.
¿Qué tiene que ver esto con la caché vertical? Pues que la caché vertical por su posición sobre el chip en un SoC no puede situarse jamás de manera anterior el controlador de memoria en la jerarquía. En los CCD Chiplets de Zen 3 no hay controlador de memoria al estar situado en el IOD, el cual se encuentra en otro chip, pero en una hipotética APU, la caché ́vertical se situaría encima del controlador de memoria, aunque justo antes en la jerarquía que la RAM, pero después del nivel de caché más alto de la CPU o la GPU.
Cache vertical en vez de memoria vertical
Bajo esta premisa, lo ideal sería que la memoria RAM se encontrase lo más cercana posible al procesador. ¿Qué tal colocar la memoria RAM al completo encima del procesador en una interfaz 3D? No nos cabría en absoluto debido a la alta capacidad en decenas de gigabytes que requiere la memoria RAM actual. Pero, ¿qué tal poner más y más pisos de memoria encima del procesador? Al fin y al cabo esto se puede hacer a día de hoy.
Suena como una gran idea y es posible hacerlo, pero deja de serlo cuando tenemos en cuenta que con cada nuevo piso de memoria entonces la cantidad de conjuntos completos entre el procesador y la memoria que tienen encima disminuye. Luego no podemos olvidar el fenómeno del calor, cada nuevo piso obliga a bajar la velocidad de reloj tanto de la memoria como del procesador. De repente lo que sonaba como una gran idea ya no lo es, tenemos en nuestras manos un procesador muy caro de fabricar, en pocas unidades y con un rendimiento peor que con los elementos por separado.
Por lo que lo mejor es colocar un solo piso encima del procesador, la memoria no tiene suficiente capacidad para funcionar como memoria RAM a día de hoy, pero si como caché de último nivel.
Rendimiento de la caché vertical en CPUs
La cache de todo procesador tiene cómo único objetivo reducir el tiempo de acceso de la CPU a la memoria RAM, pero en los últimos tiempos la transmisión de datos en las cantidades necesarias se convierte en un coste energético enorme es cuando los arquitectos han de buscar la forma de reducir la cantidad de accesos en los que la CPU o la GPU van a realizar un acceso a su memoria correspondiente. Por que una caché de último nivel de gran tamaño es importante aquí.
La caché vertical por tanto no está pensada para aumentar la capacidad de proceso de una CPU, pero si su rendimiento. Hemos de entender que en un sistema nunca conseguimos el 100% de rendimiento y siempre hay pérdidas, en el caso de un procesador una parte importante de la pérdida de rendimiento se encuentra en la comunicación con la jerarquía de memoria, lo que incluye las cachés.
Dado que la caché vertical es la de último nivel va a incluir todos los datos que requieran las cachés anteriores y con su enorme tamaño reducirá la cantidad de acceso del procesador a la memoria RAM, pero su eficiencia nunca será del 100%, incluso con una caché muy grande puede que el programa haga una petición a una dirección de memoria que no haya sido copiada en la caché de último nivel, obligando al procesador a acceder a la RAM que tenga asignada.
¿Cómo se mide el rendimiento de una caché?
Cuando la CPU busca un dato o una instrucción en la jerarquía de caches del sistema, empieza por aquellas más cercanas a la CPU misma, si encuentra el dato entonces esto es lo que llamamos un “hit”, en referencia a que la CPU ha apuntado en la caché y ha dado al blanco. Pero si no encuentra el dato en ese nivel de caché entonces eso es un miss y necesita mirar en los niveles inferiores. Esto lo llamamos un “miss” en el sentido de que la CPU no ha tenido puntería en encontrar el dato y/o instrucción necesarios, durante ese tiempo en la CPU se produce una parada o “stall”, ya que la CPU o la GPU no tiene datos para procesar.
En el caso de la caché vertical, debido a que la misma no formaría parte de los primeros niveles de caché, entonces su existencia no puede evitar que se recorran los niveles inferior de la propia caché. Ya hemos contado que es imposible convertir los primeros niveles de caché en un caché vertical, en especial en un mundo en el que los procesadores llevan tiempo siendo multinúcleo y los niveles de caché adicionales sirven para comunicar grupos de núcleos entre sí e incluso de diferente naturaleza en algunos casos.
Rendimiento en GPUs y otros tipos de procesadores
En GPUs hemos podido ver la implementación de la Infinity Cache AMD, la cual se trata de un tipo de caché de gran tamaño que podría ser trasladada a la parte superior de la GPU y separada del núcleo principal. Por el momento esto no está dando aumentos considerables de rendimiento, pero una GPU caché vertical tendría una capacidad mucho mayor que los 128 MB de la GPU Navi 21, sumadle esto un nodo de fabricación más avanzado y el no estar limitada en cuanto a área y la cantidad de caché de último nivel se puede ir a los 512 MB e incluso a 1 GB.
¿Qué tendría de especial una GPU con caché de 1 GB? De cara al Ray Tracing se han hecho pruebas y se ha demostrado que la localización cercana de ciertos datos respecto a la GPU aumenta enormemente el rendimiento de estas a la hora de procesar escenas con trazado de rayos. Por lo que es posible que futuras GPUs de NVIDIA, Intel y AMD implementen la caché vertical para aumentar su rendimiento en escenas con Ray Tracing, las cuales cada vez serán más comunes.
Otro mercado importante es el de los controladores de memoria flash, los cuales a día de hoy hacen uso de chips de memoria DDR4 o LPDDR4 como caché. La implementación de caché vertical en estos procesadores sería suficiente para eliminar la DRAM y hacer que los SSD NVMe sean más baratos, ya que gracias a la caché no hará falta el uso de memoria DRAM.
The post Así es como la caché vertical mejora el rendimiento en tu CPU y GPU appeared first on HardZone.