NVMe es un protocolo de software para conectar di­s­po­si­ti­vos de al­ma­ce­na­mie­n­to masivo no volátiles a través de in­te­r­fa­ces 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 al­ma­ce­na­mie­n­to cuyo contenido no se pierde al de­s­co­ne­c­tar­lo.

NVMe permite un rápido acceso a los datos incluso para la te­c­no­lo­gía de memoria pe­r­si­s­te­n­te (PMem). Pero ¿cómo funciona y qué otras ventajas ofrece NVM Express?

De HDD a SSD

Tra­di­cio­na­l­me­n­te se hace una di­s­ti­n­ción entre la memoria principal volátil (memoria de acceso aleatorio, RAM) de un ordenador y el al­ma­ce­na­mie­n­to masivo no volátil. Mientras que la RAM de un ordenador pierde su contenido cuando se apaga, el contenido del di­s­po­si­ti­vo de al­ma­ce­na­mie­n­to masivo no volátil se conserva. Tras el uso de tarjetas pe­r­fo­ra­do­ras durante los primeros días de la te­c­no­lo­gía in­fo­r­má­ti­ca y los po­s­te­rio­res sistemas de al­ma­ce­na­mie­n­to en cinta de uso ge­ne­ra­li­za­do, los discos duros gi­ra­to­rios (unidades de disco duro, HDD) se han co­n­ve­r­ti­do en el di­s­po­si­ti­vo estándar para el al­ma­ce­na­mie­n­to masivo.

La se­pa­ra­ción en memoria principal y disco duro ha ido aco­m­pa­ña­da de tiempos de acceso ra­di­ca­l­me­n­te di­fe­re­n­tes. El tiempo de acceso a los datos al­ma­ce­na­dos se­cue­n­cia­l­me­n­te en la memoria RAM era apro­xi­ma­da­me­n­te una centésima parte del tiempo empleado para leer la misma cantidad de datos en un disco duro giratorio. Está dinámica sólo des­apa­re­ció con el uso ge­ne­ra­li­za­do de los di­s­po­si­ti­vos 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 am­plia­me­n­te in­s­ta­la­das en or­de­na­do­res po­r­tá­ti­les y de es­cri­to­rio y se las conoce como medios de al­ma­ce­na­mie­n­to continuo. El al­ma­ce­na­mie­n­to de datos es co­m­ple­ta­me­n­te ele­c­tró­ni­co, libre de partes móviles: desde el registro del pro­ce­sa­dor y las cachés L1 y L2, hasta el di­s­po­si­ti­vo de al­ma­ce­na­mie­n­to masivo SSD. Sin embargo, el acceso a los datos de las SSD ha dependido en gran medida de pro­to­co­los op­ti­mi­za­dos para discos duros gi­ra­to­rios como el Serial ATA (SATA).

¿Cómo funciona NVM Express?

NVM Express es el primer protocolo de­sa­rro­lla­do es­pe­cí­fi­ca­me­n­te para di­s­po­si­ti­vos de al­ma­ce­na­mie­n­to masivo no gi­ra­to­rios basados en SSD. Es el sucesor de las in­te­r­fa­ces de software am­plia­me­n­te es­ta­ble­ci­das SATA y AHCI. SATA en pa­r­ti­cu­lar, que ini­cia­l­me­n­te se utilizó para la co­mu­ni­ca­ción interna con las SSD, se convirtió rá­pi­da­me­n­te en un obstáculo: las SSD modernas fueron capaces de lograr un re­n­di­mie­n­to de datos mucho mayor que el que permitía el protocolo SATA. Con la interfaz de la Non-Volatile Memory Express, op­ti­mi­za­da es­pe­cí­fi­ca­me­n­te para los medios SSD, las SSD pueden apro­ve­char todo su potencial.

El estándar PCI Express (Pe­ri­phe­ral Component In­te­r­co­n­ne­ct Express, PCIe) existente se utiliza pre­fe­re­n­te­me­n­te para conectar los di­s­po­si­ti­vos de al­ma­ce­na­mie­n­to 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 co­n­tra­pa­r­ti­da lógica op­ti­mi­za­da para las SSD no volátiles. Esto significa que un solo co­n­tro­la­dor del sistema operativo basta para abordar todas las SSD de di­fe­re­n­tes fa­bri­ca­n­tes co­m­pa­ti­bles con NVM Express.

Conjunto de comandos de los pro­to­co­los de NVM Express

Para es­tru­c­tu­rar la co­mu­ni­ca­ción digital, es decir, el in­te­r­ca­m­bio de datos, se utiliza un protocolo de software. El protocolo define un conjunto de comandos que determina el lenguaje utilizado entre los distintos in­te­r­lo­cu­to­res de la co­mu­ni­ca­ción. Este protocolo de Non-Volatile Memory Express se conforma con un conjunto de in­s­tru­c­cio­nes básico que comprende sólo 13 comandos.

De estos, solo diez comandos ad­mi­ni­s­tra­ti­vos son obli­ga­to­rios:

  • Create I/O Su­b­mi­s­sion Queue
  • Delete I/O Su­b­mi­s­sion Queue
  • Create I/O Co­m­ple­tion Queue
  • Delete I/O Co­m­ple­tion Queue
  • Get Log Page
  • Identify
  • Abort
  • Set Features
  • Get Features
  • Async Event Requests

Además, tres comandos de I/O son ab­so­lu­ta­me­n­te ne­ce­sa­rios:

  • Read
  • Write
  • Flush
Nota

La abre­via­tu­ra I/O significa Input/Output en in­fo­r­má­ti­ca, que en español equivale a Entrada/Salida

Creación y pro­ce­sa­mie­n­to de comandos con Non-Volatile Memory Express

El disco duro moderno se compone de varios discos gi­ra­to­rios. No­r­ma­l­me­n­te 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 di­s­po­si­ción física, ni los discos duros (HDD) ni sus pro­to­co­los están op­ti­mi­za­dos 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 pa­ra­le­li­s­mo en el acceso a los datos, lo que resulta en altas tasas de re­n­di­mie­n­to de los datos y bajas latencias.

En co­m­pa­ra­ción con las HDD, las SSD no leen y escriben datos de forma se­cue­n­cial. 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:

  1. Host transmite I/O Su­b­mi­s­sion Queues
  2. Co­n­tro­ller recupera I/O Su­b­mi­s­sion Queues
  3. Co­n­tro­ller ejecuta I/O Su­b­mi­s­sion Queues
  4. Co­n­tro­ller transmite I/O Co­m­ple­tion Queues
  5. Host recibe I/O Co­m­ple­tion Queues

¿Cuáles son las ventajas del protocolo NVMe?

NVM Express es ventajoso porque utiliza el estándar PCIe existente y el protocolo op­ti­mi­za­do para el al­ma­ce­na­mie­n­to moderno de estado sólido. El conjunto de comandos del protocolo op­ti­mi­za­do, adaptado para el fu­n­cio­na­mie­n­to de las SSD, conduce a una baja so­bre­ca­r­ga 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 co­ne­c­ta­das a NVMe pueden de­sa­rro­llar todo su potencial de re­n­di­mie­n­to. Los di­s­po­si­ti­vos NVMe también se pueden conectar a través de mu­l­ti­pa­thi­ng en entornos de alo­ja­mie­n­to pro­fe­sio­nal y de co­mpu­tación de alto re­n­di­mie­n­to. En este caso, el di­s­po­si­ti­vo NVMe se conecta a través de múltiples líneas de datos paralelas dentro de la in­frae­s­tru­c­tu­ra in­fo­r­má­ti­ca. Si una línea falla, se puede seguir ac­ce­die­n­do al di­s­po­si­ti­vo. Los di­s­po­si­ti­vos NVMe también admiten el in­te­r­ca­m­bio directo (hot swap), por lo tanto, si un medio de al­ma­ce­na­mie­n­to falla co­m­ple­ta­me­n­te, puede in­te­r­ca­m­biar­se durante el fu­n­cio­na­mie­n­to.

Consejo

Puedes usar NVMe para tu proyecto web. Alquila un servidor IONOS dedicado NVMe.

¿En qué áreas se utiliza NVMe?

NVM Express se utiliza en casi todos los sistemas in­fo­r­má­ti­cos actuales. Desde or­de­na­do­res po­r­tá­ti­les y de sobremesa, se­r­vi­do­res y es­ta­cio­nes de trabajo, hasta su­pe­r­co­mpu­tado­ras. Los rápidos medios de al­ma­ce­na­mie­n­to SSD co­ne­c­ta­dos 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 di­s­po­si­ti­vos de 2,5" con conexión U.2
  • E1 o NGSFF (next ge­ne­ra­tion small form factor)

Es más, otro de­sa­rro­llo in­te­re­sa­n­te 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 im­ple­me­n­tar co­le­c­cio­nes de medios SSD que pro­po­r­cio­nan enormes ca­n­ti­da­des de al­ma­ce­na­mie­n­to con cortos tiempos de acceso.

Co­n­clu­sión

NVMe, Non-Volatile Memory Express, es un protocolo op­ti­mi­za­do para las demandas de la memoria de estado sólido moderna, que ya se ha co­n­ve­r­ti­do en un estándar para las SSD.

Ir al menú principal