El estándar NVMe define una serie de normas que todos los fabricantes de memoria RAM no volátil, más conocida como NAND Flash, han de seguir para construir sus chips de memoria. No solo para almacenar datos, sino también sobre la forma con la que se comunica este tipo de memoria con el PC. La versión 2.0 del estándar NVMe va a tener cambios muy importantes en los unidades SSD.
Uno de los problemas de la memoria NVMe es que los PC a día de hoy se comunican con todo tipo de memoria NAND Flash como si fuesen abstracciones de un disco duro, lo que no les permite aprovechar todas las características de este tipo de memoria no volátil. Con el estándar NVMe 2.0 se busca solucionar este problema y que el PC vea las unidades SSD NVMe como lo que realmente son, no como discos duros.
PCI Express vs SATA
La base de estas especificaciones es la NVM Express Base (NVMe Base), la cual define una serie de nuevos protocolos para comunicarse con la memoria NVMe. Estos son los que trataremos en este artículo, dado que el resto son opcionales y no forman parte de la especificación base, pero los Key-Values y los Zoned Namespaces sí que forman parte del nuevo estándar.
¿Cuáles son las especificaciones opcionales? Principalmente son tres:
- El NVM Express Management Interface (NVMe-MI) define una interfaz adicional opcional para el manejo de todos los sistemas que hagan uso de las interfaces NVM Express.
- En cambio, las estructuras de datos, características, páginas de log, comandos y valores de estado para la E/S de datos se ven especificadas en el NVM Express I/O Command.
- El NVM Express Transport son una serie de especificaciones para los propiedades del controlador de memoria flash.
Zoned Namespaces
Otra de las mejoras integradas en el NVMe 2.0 es el comando Key-Value o Clave-Valor. El cual se basa en el a los datos almacenados en el SSD a través de una clave única en vez de la dirección virtual del bloque de datos. Es algo que viene del mundo de las bases de datos y esta novedad permite a las aplicaciones comunicarse con la unidad SSD a través de una clave-valor. Lo que significa decir adiós a las tablas de traducción entre las claves emitidas por el procesador y la dirección física de la memoria.
Para entender mejor el concepto hemos de tener en cuenta que tradicionalmente se almacena la información en un SSD por bloques, algo que viene del mundo de los discos duros y que implica lo siguiente:
- Los datos se almacenan en bloques o páginas de memoria de tamaño regular, en cambio un grupo de datos asociados a una clave-valor pueden tener cualquier tamaño.
- Los datos en el sistema de bloques se acceden a partir de una dirección de memoria virtual, mientras que en el NVMe 2.0 lo datos se podrán acceder a partir de conocer la clave-valor de a los mismos.
- Con el almacenamiento haciendo uso de valores clave podemos almacenar cualquier cantidad de bytes, en cambio en el paginado clásico de memoria solo podemos almacenar datos en múltiples del tamaño de cada bloque.
La Clave-Valor se basa en dos valores distintos, el primero es la clave que va asignada a cada dispositivo y puede tener un tamaño entre 1 byte y 32 bytes. Para cada dispositivo NVMe 2.0 se le generará una clave única para poder acceder a sus datos. El segundo en cambio es el valor que permite acceder a un bloque de datos en concreto.
Soporte para unidades de disco convencionales
Tardaremos años en ver desaparecer a los discos duros convencionales y muchos de ellos se siguen utilizando en muchos sistemas en tándem junto a las unidades SSD. No obstante, las nuevas normas de cara al a los datos que trae el estándar NVMe 2.0 difieren enormemente de la forma en la que los datos se almacenan en los discos duros.
El soporte para formatos rotacionales se basa en dos cosas, la primera de ellas es darle la capacidad a los discos duros de acceder al mismo espacio físico en los periféricos de E/S que los discos SSD NVMe M.2, es decir, el puerto PCI Express, lo que no significa que vayamos a ver discos con interfaz PCIe, pero sí que vamos a ver en los PCs del futuro interfaces de traslado de SATA a PCIe que permitirán copiar los datos entre ambos dispositivos de almacenamiento más rápido.
La otra es el soporte para el nuevo direccionamiento de los datos del NVMe 2.0 en forma de Zoned Namespaces y Key Values, para que ambos tipos de almacenamientos se puedan entender dentro del mismo sistema. Es decir, el NVMe 2.0 supone que el SSD deje de hablar en el lenguaje del HDD para que ocurra el revés.
Por último, solo una apreciación que debemos tener en cuenta antes de comprar un SSD NVMe M.2 y no es más que el tipo de conector, ya que no debemos confundir el M o B del A o el E, ya que los dos primeros son los que buscamos, mientras que los segundos son para tarjetas Wi-Fi en portátiles.