¿Qué significa que un SSD sea NVMe y por qué importa?

¿Qué significa que un SSD sea NVMe y por qué importa?

Rodrigo Alonso

Seguro que llevas ya bastante tiempo escuchando y leyendo acerca de los SSD NVMe. Sabes que son la última tecnología, que son muy rápidos y que, por lo tanto, son el camino a seguir. Pero, ¿sabes qué significa que un SSD sea NVMe? En este artículo te contamos qué es, cómo funciona y por qué es importante de cara al futuro del almacenamiento para PC.

Los primeros SSD basados en memoria flash utilizaban las interfaces que había disponibles en ese momento, SATA y SAS, así como los protocolos y factores de forma que supusieran un menor impacto en los sistemas de almacenamiento existentes. Sin embargo, ninguno de éstos fueron diseñados para almacenamiento de alta velocidad, motivo por el que al final los SSD han terminado utilizando interfaz PCI-Express que, aunque no estaba diseñada inicialmente para ello, es mucho más rápida.

Tomando ventaja de la velocidad de la interfaz PCI Express

SSD NVMe PCIe

La gran ventaja de utilizar la interfaz PCI-Express es que al contrario de otras interfaces no necesita pasar por el IOMMU para comunicarse con la memoria RAM, por lo que es ideal para copiar datos lo más rápido posible a dicha memoria, lo cual combinado con la enorme velocidad de transferencia de esta tipo de memoria le da la capacidad al sistema de tener una capacidad de almacenamiento con la que la CPU puede trabajar de manera directa casi infinita.

Solo hace falta que en la RAM haya un espacio de memoria donde se copien las peticiones al SSD NVMe para acelerar el acceso a los datos. Esto es crucial por ejemplo de cara a aplicaciones que mueven archivos de gran tamaño, como es el caso de los atlas de texturas en en el renderizado 3D o en archivos de edición de vídeo de gran capacidad.

Sin embargo, estos SSD necesitaban un firmware específico para poder tener compatibilidad con los PC y no aprovechaban bien todos los raíles que esta interfaz ofrecía. Por este motivo, se creó el protocolo NVMe. El cual permite la comunicación entre el sistema huesped y el SSD NVMe siguiendo una serie de normas comunes, lo que ha permitido estandarizar este tipo de unidades.

¿Qué es el protocolo NVMe?

NVMe

NVMe son las siglas de «Non-Volatile Memory Express», o memoria exprés no volátil y se trata de un protocolo de almacenamiento de alto rendimiento, NUMA (Non Uniform Memory Access, o de acceso a la memoria no uniforme), optimizado para almacenamiento y altamente escalable que se conecta al host del subsistema de memoria. Este protocolo fue diseñado desde cero y específicamente para sistemas de almacenamiento, con el objetivo de ofrecer siempre el mejor rendimiento.

El protocolo NVMe hace uso de los raíles PCI-Express del sistema, lo cual ofrece no solo un amplio ancho de banda que permite velocidades de vértigo, muchas veces más altas que con las interfaces SATA, sino que los tiempos de acceso se reducen mucho porque le permite acceder de manera directa a la RAM del sistema y por tanto tiene un enlace mucho más rápido con el procesador y, además, las posibilidades de crecer y escalar son enormes.

En otras palabras, este es un protocolo diseñado para que se siga utilizando a largo plazo y es el que seguirá siendo utilizado en las tecnologías de almacenamiento de próximas generaciones durante muchos, muchos años, salvo que salte a la palestra una nueva tecnología que deje atrás todo lo que conocemos hasta ahora (cosa poco probable porque este protocolo se sigue desarrollando y mejorando para adaptarse a las nuevas necesidades de la tecnología).

¿Por qué es tan rápido? Entendiendo las colas I/O

SSD

Para entender cómo funciona este protocolo y, sobre todo, cómo logra alcanzar estas cotas de velocidad, hay que profundizar un poco en su arquitectura y, especialmente, entender cómo funcionan las colas I/O (de entrada y salida).

El estándar NVMe admite múltiples colas de entrada y salida, hasta 64K entradas con 64K peticiones a la memoria NVMe cada una. Para que os hagáis una idea, si lo comparamos con otro estándar como es SATA veremos que este solo admite una cola y de 32 peticiones. De esto se encarga la controladora en la unidad. La cual funciona de manera muy similar al controlador de memoria RAM, pero gestionando el acceso a los chips de memoria RAM no volátil o NAND Flash dentro de la unidad M.2.

La controladora flash en realidad es un microcontrolador que ejecuta en forma de programa interno el protocolo NVMe cada vez que la CPU o la GPU le hace una petición de acceso a la unidad NVMe. Esto significa que no es la CPU la que ejecuta todas las etapas del protocolo y las más pesadas se dejan al hardware interno del SSD.

El software del protocolo NVMe

Diagrama NVMe Controladora

El software host del protocolo NVMe se ejecuta en la controladora y puede crear colas hasta el máximo permitido por la controladora según la configuración del sistema y la carga de trabajo; además, admite dispersión / recopilación de I/S, minimizando el efecto que esto causa en la carga del procesador para la transferencia de datos, e incluso proporciona la capacidad de cambiar su prioridad según los requisitos de la carga de trabajo.

En el diagrama de arriba tenéis una forma muy simplificada de comunicación entre un host y la controladora NVMe. Esta arquitectura permite que las aplicaciones comiencen, ejecuten y finalicen múltiples peticiones de entrada o salida de manera simultánea y sin tener impacto en el rendimiento del procesador, dado que es el controlador flash el que se encarga de realizar todas las peticiones de acceso a los datos dentro de la unidad NVMe.

En conclusión, el protocolo NVMe se creó desde cero específicamente para sistemas de almacenamiento de alto rendimiento, para hacer uso de las enormes velocidades de transferencias de la interfaz PCI Express saturando lo menos posible al procesador durante el acceso. Además, está preparado para poder modificar el firmware fácilmente, lo que significa que seguiremos utilizándolo a medio y largo plazo porque tiene la capacidad de seguir evolucionando sin problema, ya que los fabricantes pueden ampliar las capacidades del SSD NVMe facilmente.

1 Comentario