Así es como la tecnología ZNS mejora el rendimiento de tu SSD

Las unidades SSD ZNS empezarán a ser una realidad en poco tiempo. No son un tipo de hardware distinto, pero varían en la forma en la que acceden a los datos que hay en los chips de memoria NAND Flash y adoptan un método más optimizado para el uso de la memoria NAND Flash. Por lo que suponen cambios en el Controlador Flash integrado en cada SSD.

El estándar SSD ZNS fue aprobado como estándar dentro del NVMe y forma parte de la versión 2.0 del mismo. Supone cambios importantes en la forma de acceder y organizar los datos que almacena en su interior. Hasta el momento al SSD se ha accedido como si fuese un disco duro convencional, lo cual no es el mejor método para este tipo de memoria

¿Qué es un SSD?

Disco SSD

Un SSD convencional a nivel de hardware son un conjunto de memorias RAM no volátiles, en concreto memoria NAND Flash, que se encuentran conectadas a un controlador flash, el cual funciona igual que un controlador de memoria normal y se encarga de gestionar las peticiones de acceso a la memoria que tiene conectada.

Los SSD hasta el momento han utilizado la misma forma de gestionar sus datos que un disco duro convencional, lo cual no es muy eficiente de cara a la vida útil de estos y la forma de utilizar sus capacidades. El motivo es que la memoria NAND Flash pese a no ser volátil como la de un disco duro es más parecida a la RAM de cara al acceso a los datos. Lo que hace que sea mejor adoptar una nueva forma de acceder a este tipo de memoria que más avanzada y por tanto acorde con sus capacidades.

El ZNS es precisamente esa forma, veamos ahora sus características.

¿Qué es un SSD ZNS?

ZNS Controller

En primer lugar, ¿qué significa ZNS? Pues son las siglas de Zoned NameSpaces. La cual es una forma de organizar el almacenamiento en un disco y por tanto estamos hablando de la forma en la que los datos se almacenan en la unidad SSD. En los discos duros lo que se hace es organizar la información en páginas, las cuales se almacenan en tablas y estas últimas en directorios. El sistema de paginación se utiliza para organizar los datos en un disco duro convencional en el que cada página tiene un espacio fijo y concreto.

En cambio en un SSD ZNS lo que se hace es dividir el espacio por zonas de diferente tamaño. El objetivo es que cuando la CPU, la GPU o cualquier otro elemento necesita escribir los datos en memoria en vez de apuntar a una dirección de memoria virtual lo que hará será apuntar a esa zona. La cual habrá sido definida previamente en cuanto a tamaño. ¿Cuál es su funcionamiento? Simple, cada vez que se quiera escribir en la memoria flash se invoca el Namespace asignado a esa zona. El controlador flash entonces escribirá el dato en esa zona y no fuera de la misma. Lo hará además de forma secuencial, para no dejar espacios muertos en el disco y optimizar su uso.

SSD ZNS

Lo que se consigue con esta técnica es que el controlador de la memoria flash no tenga que gestionar escrituras a direcciones de memoria aleatoria y se optimiza el uso del espacio en el SSD. Simplemente la CPU reserva una parte delimitada del almacenamiento como zona para almacenar los datos. Cuando se necesite acceder a dicha zona, el PC le dirá al controlador de la memoria flash que quiere acceder a los datos de esa zona en concreto invocando a dicho Namespace en concreto.

Los SSD ZNS utilizan lo que llamamos direccionamiento de bloque lógico, todas y cada una de las zonas están formadas por bloques lógicos o LBAs. Cada zona puede tener cualquier número de bloques lógicos para almacenar datos, pero ha de ser un mínimo de 2 en tamaño y cuando se han escrito los datos de un bloque lógico o LBA entonces se llena la información del siguiente de manera secuencial.

La principal ventaja es que no crea espacios muertos en el SSD al no reservar más memoria de la necesaria en cada momento. Esto hace que los ciclos de escritura sean mucho más cortos y nos permite además predecir de manera más fácil la latencia en el acceso de los datos al estar estos organizados secuencialmente en vez de estar repartidos por la unidad.

Máquina de estado en un SSD ZNS y comandos

Máquina Estado ZNS

Para soportar las Zones NameSpaces entonces el controlador de memoria flash ha de poder realizar una serie de instrucciones para manejar la información y el acceso al SSD de manera adecuada. Es por ello que se utilizan una serie de máquinas de estado finito para controlar la información que hay en el SSD. Las máquinas de estado finito es código microcableado en el hardware, en este caso del controlador flash, que a partir de una información de entrada le marcan como ha de trabajar con esa zona de la memoria flash.

  • Empty: se pueden escribir datos al no haber nada, si se le hace una lectura devolverá los datos que estén predefinidos por el fabricante. La mayoría de veces basura. Una zona se puede borrar por completo a través del comando de reset, esto destruye la organización de las diferentes zonas.
  • Full: la zona está llena de datos y no puede almacenar más información, pero sí que se puede utilizar para solo lectura.
  • Open: permite la lectura y escritura de los datos en el LBA activo actual de la zona. Cada zona puede ser implícitamente abierta o explicitamente abierta. La primera se refiere a que podemos abrirla invocando el comando Open del controlador flash. El modo explícito en cambio tiene la misma función, pero desde la propia aplicación.
  • Closed: cuando una zona está cerrada sólo acepta comandos de lectura y no permite la entrada de nuevos datos.
  • Finish: no borra los datos, pero marca la zona como completa. Independiente de que se le haya asignado originalmente más memoria para almacenamiento en forma de varios LBA, ya no se podrán almacenar más datos en esa zona.

Al principio de cada zona, lo que hace el controlador flash es colocar una etiqueta que le recordará cuál es el estado de esa zona en la memoria.

1 Comentario