¿Qué es NVMe?
NVMe es un protocolo de software para conectar dispositivos de almacenamiento masivo no volátiles a través de interfaces de hardware PCI Express. NVMe se desglosa como “Non-Volatile Memory Express” y significa memoria no volátil exprés. Una memoria no volátil es un medio de almacenamiento cuyo contenido no se pierde al desconectarlo.
NVMe permite un rápido acceso a los datos incluso para la tecnología de memoria persistente (PMem). Pero ¿cómo funciona y qué otras ventajas ofrece NVM Express?
De HDD a SSD
Tradicionalmente se hace una distinción entre la memoria principal volátil (memoria de acceso aleatorio, RAM) de un ordenador y el almacenamiento masivo no volátil. Mientras que la RAM de un ordenador pierde su contenido cuando se apaga, el contenido del dispositivo de almacenamiento masivo no volátil se conserva. Tras el uso de tarjetas perforadoras durante los primeros días de la tecnología informática y los posteriores sistemas de almacenamiento en cinta de uso generalizado, los discos duros giratorios (unidades de disco duro, HDD) se han convertido en el dispositivo estándar para el almacenamiento masivo.
La separación en memoria principal y disco duro ha ido acompañada de tiempos de acceso radicalmente diferentes. El tiempo de acceso a los datos almacenados secuencialmente en la memoria RAM era aproximadamente una centésima parte del tiempo empleado para leer la misma cantidad de datos en un disco duro giratorio. Está dinámica sólo desapareció con el uso generalizado de los dispositivos móviles y la aparición de las unidades de estado sólido: Solid State Drives (SSD).
Hoy en día, las SSD están ampliamente instaladas en ordenadores portátiles y de escritorio y se las conoce como medios de almacenamiento continuo. El almacenamiento de datos es completamente electrónico, libre de partes móviles: desde el registro del procesador y las cachés L1 y L2, hasta el dispositivo de almacenamiento masivo SSD. Sin embargo, el acceso a los datos de las SSD ha dependido en gran medida de protocolos optimizados para discos duros giratorios como el Serial ATA (SATA).
¿Cómo funciona NVM Express?
NVM Express es el primer protocolo desarrollado específicamente para dispositivos de almacenamiento masivo no giratorios basados en SSD. Es el sucesor de las interfaces de software ampliamente establecidas SATA y AHCI. SATA en particular, que inicialmente se utilizó para la comunicación interna con las SSD, se convirtió rápidamente en un obstáculo: las SSD modernas fueron capaces de lograr un rendimiento de datos mucho mayor que el que permitía el protocolo SATA. Con la interfaz de la Non-Volatile Memory Express, optimizada específicamente para los medios SSD, las SSD pueden aprovechar todo su potencial.
El estándar PCI Express (Peripheral Component Interconnect Express, PCIe) existente se utiliza preferentemente para conectar los dispositivos de almacenamiento masivo SSD a la placa base. Las tarjetas gráficas y otro hardware, por ejemplo, se conectan a través del PCIe. Este último es una interfaz física. Como protocolo, NVMe se presenta como una contrapartida lógica optimizada para las SSD no volátiles. Esto significa que un solo controlador del sistema operativo basta para abordar todas las SSD de diferentes fabricantes compatibles con NVM Express.
Conjunto de comandos de los protocolos de NVM Express
Para estructurar la comunicación digital, es decir, el intercambio de datos, se utiliza un protocolo de software. El protocolo define un conjunto de comandos que determina el lenguaje utilizado entre los distintos interlocutores de la comunicación. Este protocolo de Non-Volatile Memory Express se conforma con un conjunto de instrucciones básico que comprende sólo 13 comandos.
De estos, solo diez comandos administrativos son obligatorios:
- Create I/O Submission Queue
- Delete I/O Submission Queue
- Create I/O Completion Queue
- Delete I/O Completion Queue
- Get Log Page
- Identify
- Abort
- Set Features
- Get Features
- Async Event Requests
Además, tres comandos de I/O son absolutamente necesarios:
- Read
- Write
- Flush
La abreviatura I/O significa Input/Output en informática, que en español equivale a Entrada/Salida
Creación y procesamiento de comandos con Non-Volatile Memory Express
El disco duro moderno se compone de varios discos giratorios. Normalmente se utilizan dos cabezales de lectura/escritura por disco. Estos cabezales de lectura/escritura están unidos a un único brazo móvil de lectura/escritura. Debido a esta disposición física, ni los discos duros (HDD) ni sus protocolos están optimizados para el acceso paralelo masivo a los datos.
El protocolo SATA dispone solo de una única cola de comandos (command queue) para ejecutar los comandos del disco duro. El protocolo NVMe, en cambio, soporta 64 000 colas, con hasta 64 000 comandos por cola. Esto asegura un alto grado de paralelismo en el acceso a los datos, lo que resulta en altas tasas de rendimiento de los datos y bajas latencias.
En comparación con las HDD, las SSD no leen y escriben datos de forma secuencial. El acceso a los datos de las SSD es igual de rápido en cada posición que con la memoria principal de acceso aleatorio.
Los comandos de protocolo en NVMe se crean y procesan según el siguiente patrón:
- Host transmite I/O Submission Queues
- Controller recupera I/O Submission Queues
- Controller ejecuta I/O Submission Queues
- Controller transmite I/O Completion Queues
- Host recibe I/O Completion Queues
¿Cuáles son las ventajas del protocolo NVMe?
NVM Express es ventajoso porque utiliza el estándar PCIe existente y el protocolo optimizado para el almacenamiento moderno de estado sólido. El conjunto de comandos del protocolo optimizado, adaptado para el funcionamiento de las SSD, conduce a una baja sobrecarga al leer y escribir datos. El uso directo de PCIe implica que no hay necesidad de un traductor de protocolo, lo que a su vez conlleva latencias más bajas.
Debido a que las colas de comandos se procesan en paralelo, las SSD conectadas a NVMe pueden desarrollar todo su potencial de rendimiento. Los dispositivos NVMe también se pueden conectar a través de multipathing en entornos de alojamiento profesional y de computación de alto rendimiento. En este caso, el dispositivo NVMe se conecta a través de múltiples líneas de datos paralelas dentro de la infraestructura informática. Si una línea falla, se puede seguir accediendo al dispositivo. Los dispositivos NVMe también admiten el intercambio directo (hot swap), por lo tanto, si un medio de almacenamiento falla completamente, puede intercambiarse durante el funcionamiento.
¿En qué áreas se utiliza NVMe?
NVM Express se utiliza en casi todos los sistemas informáticos actuales. Desde ordenadores portátiles y de sobremesa, servidores y estaciones de trabajo, hasta supercomputadoras. Los rápidos medios de almacenamiento SSD conectados a través de NVMe se instalan en todas partes. Sin embargo, se utilizan diversos factores de forma, los cuales incluyen:
- Tarjetas PCI Express
- Tarjetas M.2
- SFF (small form factor) o dispositivos de 2,5" con conexión U.2
- E1 o NGSFF (next generation small form factor)
Es más, otro desarrollo interesante del protocolo Non-Volatile Memory Express es NVMe over fabric. Aquí, en lugar de una conexión física directa, se utiliza una conexión de red para dirigir la memoria de estado sólido NVMe a través de la red. De esta manera, se pueden implementar colecciones de medios SSD que proporcionan enormes cantidades de almacenamiento con cortos tiempos de acceso.
NVMe, Non-Volatile Memory Express, es un protocolo optimizado para las demandas de la memoria de estado sólido moderna, que ya se ha convertido en un estándar para las SSD.