Uno de los términos referentes al rendimiento de las unidades SSD NVMe que más habréis oído en los últimos meses es el de la Caché SLC. Es por ello que os hemos preparado este artículo para que podáis entender cuál es su funcionamiento y que beneficios aporta al rendimiento de nuestras unidades de estado sólido de alto rendimiento.
El almacenamiento de datos basado en la tecnología NAND Flash ha resultado un cambio de paradigma en varios sectores de la informática, desde las tarjetas de memoria para dispositivos de bolsillo hasta los discos SSD NVMe en PC. Es precisamente en este último caso que se ha eliminado uno de los cuellos de botella históricos de la historia por no tener las limitaciones tanto en latencia de acceso como en ancho de banda de los discos duros tradicionales, no obstante, no existe la tecnología perfecta que rinda al 100% y siempre hay elementos que lo lastran, obligando a los ingenieros a tener que buscar e implementar soluciones.
NAND Flash y celdas de memoria
La memoria NAND Flash es un tipo de NVRAM o memoria RAM no volátil, esto significa que su funcionamiento es igual al de una RAM convencional, pero con la diferencia de que sus datos no se pierden cuando el sistema deja de recibir alimentación eléctrica. La contrapartida por tener esta capacidad es la de tener una limitada cantidad de escrituras a memoria en su ciclo de vida. Aunque las ventajas en forma de rendimiento a la hora de acceder al almacenamiento compensan, no en vano, todo sistema informático es tan rápido como le deja su parte más lenta, la cual suele ser el almacenamiento.
Cada bit de memoria en una memoria RAM se almacena en lo que se llaman celdas de memoria y en las primeras memorias NAND Flash utilizadas para almacenamiento SSD se utilizaba un bit por celda, lo que encarecía mucho el almacenamiento. ¿La solución? Que cada celda pueda albergar datos de 2 bits (MLC), 3 bits (TLC) o hasta 4 bits (QLC). ¿El problema añadido? A más bits por celda más rápidamente se degradan y por tanto menos vida útil. Tened en cuenta esto porque es la base para entender la Caché SLC.
Las celdas TLC y QLC no solo se degradan en duración
Una vez habéis llegado a este punto, muchos tendréis la idea en la cabeza de que las memorias NAND Flash del tipo MLC, TLC y QLC tienen más capacidad de almacenamiento, aunque menos duración, pero el ancho de banda de todas ellas es el mismo y por tanto el tipo de celda no hace variar el rendimiento. Pues bien, dejad que os digamos que las malas noticias no terminan en ese punto, sino que también la velocidad de acceso se degrada.
Cuando la CPU le hace una petición de acceso a una dirección de memoria en el SSD NVMe este es recibido por la controladora flash que será la que busque el dato en memoria para transmitirlo a través de la interfaz PCI Express o SATA, dependiendo de cuál use la unidad, pero la controladora flash accede a los chips NVMe de la unidad de manera directa para manipular sus datos y no lo hace a través de las interfaces que os hemos comentado.
La forma de almacenar los datos en la memoria NAND Flash es a través de cambios en el voltaje, una memoria SLC solo necesita 1 voltaje, una MLC requiere 3, pero una TLC se va a 7 y si nos vamos a una QLC la cosa se va a los 15. Pues bien, cuanto más alto es el número más tiempo se tarda en realizar una operación de lectura y escritura. ¿Y cuándo empieza a ser esto un problema? Pues a partir de la memoria TLC y si miráis la cantidad de unidades SSD NVMe en las tiendas veréis que todas utilizan dichas celdas como mínimo a día de hoy.
La solución: caché SLC
Lo primero que hemos de tener en cuenta es que la caché SLC no es lo mismo que la caché DRAM que hay también en algunas unidades SSD NVMe, ya que no estamos hablando de la memoria volátil que se encuentra entre la controladora flash y la interfaz PCI Express de la misma, ya que la caché SLC se encuentra también en las unidades DRAM-Less. Por lo general, aunque hay excepciones que veremos más adelante, dentro de cada chip NVMe existen dos tipos de memoria NAND Flash:
- Una memoria TLC o QLC para el almacenamiento de datos
- Una memoria SLC mucho más pequeña que sirve como caché.
Lo primero de todo que hemos de entender es que una caché no es más que una memoria mucho más cercana a un procesador y por tanto de menor latencia que almacena de manera temporal un dato. Si hacemos repaso a lo que os hemos contado tenemos las siguientes premisas:
- Las celdas SLC tienen una vida útil mucho mayor que las TLC y aún más que las QLC, por lo que tardan mucho más en degradarse.
- La velocidad de acceso de las celdas SLC es mucho más alta.
Así pues, la solución es que los datos se vuelquen temporalmente a la memoria SLC, la cual funciona como caché intermedia para que luego un mecanismo de copia de datos modifique las direcciones de memoria en la TLC.
Rendimiento de la caché SLC
Llegamos a la parte más importante, la caché SLC tiene un tamaño fijo y esto significa que, si la utilizamos para enviar o recibir datos de pequeño tamaño su rendimiento se mantendrá, pero si por ejemplo queremos realizar una copia secuencial de datos en forma de un bloque de datos muy grande tan pronto como la SLC se llene el rendimiento decaerá.
Es por ello que, pese a que podemos tener dos unidades SSD NVMe en nuestras manos con el mismo almacenamiento, interfaz de acceso e incluso tipos de celdas, es decir, prácticamente iguales, puede que tengan un rendimiento completamente dispar. ¿El motivo? Obviamente la caché SLC que puede diferir en tamaño.
La caché SLC no solo sirve para almacenar datos de acceso secuencial, sino también aleatorio y hay que tener en cuenta que los programas a la hora de acceder a la información lo hacen con una alta recursividad y en un bloque de información delimitado.
Tipos de caché SLC
Hay dos formas de gestionar la caché SLC, la cual dependerá del algoritmo para ello que el fabricante haya implementado en la controladora flash. Más bien hace referencia a cuanto espacio dentro de la misma puede ser asignado para el almacenamiento temporal.
- En la caché estática el espacio de almacenamiento es fijo y no puede variar en tamaño.
- En la caché dinámica el tamaño asignado es variable.
¿Cómo es posible la caché dinámica si la cantidad de celdas SLC es fija? La trampa está en utilizar las celdas TLC del NVMe como si fueran SLC, es decir, hacer que almacenen un bit en cada una en vez de 3. Por lo que hay algunos chips NVMe que reasignan parte del almacenamiento como caché.
La ventaja de la caché dinámica es que el tamaño de la caché SLC no se agota, pero se corre el peligro que cada vez más celdas TLC dejen de utilizarse para el almacenamiento, afectando a la capacidad global de esta de almacenar datos. Por lo que la mayoría de sistemas caché SLC dinámica hacen uso de sistemas que delimitan el tamaño máximo de esta a través del firmware.