¿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 SSDs 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 SSDs 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.

La gran ventaja de utilizar la interfaz PCI-Express es que se conectan directamente al procesador, proporcionando unos tiempos de acceso similares a los de la memoria RAM, y desde hace ya tiempo se empezaron a ver los primeros SSDs PCI-Express. 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.

¿Qué es NVMe?

NVMe son las siglas de «Non-Volatile Memory Express», o memoria exprés no volátil. Es 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.

Diagrama del protocolo NVMeEl protocolo NVMe se establece sobre 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 va enlazado directamente al 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.

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

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).

NVMe puede admitir múltiples colas de entrada y salida, hasta 64K colas y cada una admitiendo 64K entradas (como comparación, SATA solo admite una cola y en cada una puede tener solo 32 entradas). El software host de este protocolo 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.

Diagrama de gestión de colas NVMe

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.

Resumiendo: el protocolo NVMe se creó desde cero específicamente para sistemas de almacenamiento de alto rendimiento, por lo que consiguen unas velocidades que aprovechan al máximo la interfaz PCI-Express sin saturar en ningún momento al procesador. 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.