NVMe è un pro­to­col­lo software per collegare di­spo­si­ti­vi di ar­chi­via­zio­ne di massa non volatili at­tra­ver­so l’in­ter­fac­cia hardware PCI Express. L’ab­bre­via­zio­ne NVMe sta per Non-Volatile Memory Express. Una memoria non volatile è un supporto di me­mo­riz­za­zio­ne il cui contenuto non viene perso quando viene staccata l’ali­men­ta­zio­ne.

NVMe riesce a fornire un accesso veloce ai dati anche se questi sono me­mo­riz­za­ti in modo per­ma­nen­te. Come funziona e quali altri vantaggi comporta la tec­no­lo­gia NVM Express?

Da HDD a SSD

Tra­di­zio­nal­men­te, si distingue tra memoria prin­ci­pa­le volatile (memoria ad accesso casuale, RAM) di un computer e memoria di massa non volatile. Mentre allo spe­gni­men­to del computer la RAM perde il suo contenuto, quello della memoria di massa non volatile viene con­ser­va­to. Dopo le schede perforate usate nei primi anni della tec­no­lo­gia in­for­ma­ti­ca e i sistemi di ar­chi­via­zio­ne su nastro che hanno iniziato a dif­fon­der­si suc­ces­si­va­men­te, il disco rigido (in inglese “Hard Disk Drive”, HDD) si è affermato come di­spo­si­ti­vo standard di ar­chi­via­zio­ne di massa.

In passato, il passaggio dalle memorie prin­ci­pa­li volatili ai dischi rigidi comportò un aumento si­gni­fi­ca­ti­vo dei tempi di accesso ai dati. Per esempio, per accedere ai dati me­mo­riz­za­ti in sequenza su una memoria RAM è ne­ces­sa­rio circa un centesimo del tempo richiesto per leggere invece la stessa quantità di dati da un disco rigido. Solo con la dif­fu­sio­ne dei di­spo­si­ti­vi mobili e il con­se­guen­te avvento delle unità a stato solido (SSD, in inglese “solid state storage”) questa dif­fe­ren­za è stata colmata.

Da allora gli SSD vengono prin­ci­pal­men­te in­stal­la­ti nei computer portatili e desktop. Gli SSD fun­zio­na­no at­tra­ver­so processo di me­mo­riz­za­zio­ne inin­ter­rot­to: dal registro del pro­ces­so­re alle cache L1 e L2 fino alla memoria di massa SSD, la me­mo­riz­za­zio­ne dei dati avviene in modo com­ple­ta­men­te elet­tro­ni­co, senza parti mec­ca­ni­che. Tuttavia, l’accesso ai dati per gli SSD fun­zio­na­va e funziona ancora spesso tramite pro­to­col­li ot­ti­miz­za­ti per i classici HDD a piatti rotanti, come Serial ATA (SATA).

Come funziona NVM Express?

Con NVM Express è stato svi­lup­pa­to per la prima volta un pro­to­col­lo specifico per la memoria di massa basata su SSD. È il suc­ces­so­re delle con­so­li­da­te in­ter­fac­ce software SATA e AHCI. SATA in par­ti­co­la­re, che è stato ini­zial­men­te uti­liz­za­to per la co­mu­ni­ca­zio­ne interna con gli SSD, ha mostrato in fretta i suoi limiti: gli SSD moderni po­treb­be­ro infatti rag­giun­ge­re una capacità di tra­smis­sio­ne dei dati effettiva (th­rou­gh­put) molto più elevata rispetto a quella con­sen­ti­ta dal pro­to­col­lo SATA. Con l’in­ter­fac­cia Non-Volatile Memory Express, ot­ti­miz­za­ta spe­ci­fi­ca­men­te per i supporti SSD, gli SSD possono ora spri­gio­na­re tutto il loro po­ten­zia­le.

Per collegare una memoria di massa SSD alla scheda madre, è comunque pre­fe­ri­bi­le lo standard esistente PCI Express (Pe­ri­phe­ral Component In­ter­con­nect Express, PCIe), uti­liz­za­to, ad esempio, per collegare le schede grafiche e altri hardware. PCIe è un’in­ter­fac­cia fisica, mentre NVMe è un pro­to­col­lo logico ot­ti­miz­za­to per la me­mo­riz­za­zio­ne non volatile a stato solido. In questo modo, per gestire tutti gli SSD dei diversi pro­dut­to­ri com­pa­ti­bi­li con NVM Express, il sistema operativo avrà solo bisogno di un unico driver.

Set di comandi del pro­to­col­lo NVM Express

Un pro­to­col­lo software è uti­liz­za­to per strut­tu­ra­re la co­mu­ni­ca­zio­ne digitale, cioè lo scambio di dati. A tal fine, il pro­to­col­lo definisce un set di comandi che specifica il lin­guag­gio uti­liz­za­to tra i partner di co­mu­ni­ca­zio­ne. Il pro­to­col­lo Non-Volatile Memory Express può vantare un set di comandi snello che comprende appena 13 comandi: dieci comandi di am­mi­ni­stra­zio­ne e tre comandi I/O.

Qui di seguito i dieci comandi di am­mi­ni­stra­zio­ne:

  • Create I/O Sub­mis­sion Queue
  • Delete I/O Sub­mis­sion Queue
  • Create I/O Com­ple­tion Queue
  • Delete I/O Com­ple­tion Queue
  • Get Log Page
  • Identify
  • Abort
  • Set Features
  • Get Features
  • Async Event Requests

E i tre comandi I/O:

  • Read
  • Write
  • Flush
Fatto

In in­for­ma­ti­ca, l’ab­bre­via­zio­ne “I/O” sta per input/output.

Creazione ed ela­bo­ra­zio­ne dei comandi con Non-Volatile Memory Express

Un hard disk moderno è composto da diversi piatti rotanti. Di solito ci sono due testine di lettura-scrittura per ogni disco. Le testine di lettura-scrittura sono tutte attaccate a un unico braccio mobile di lettura-scrittura. A causa di questa di­spo­si­zio­ne fisica, né gli HDD né i pro­to­col­li svi­lup­pa­ti a questo scopo sono ot­ti­miz­za­ti per l’accesso parallelo di massa ai dati.

Il con­so­li­da­to pro­to­col­lo SATA possiede una sola coda di comando (Command Queue) per eseguire i comandi se­quen­zia­li in­di­riz­za­ti al disco rigido. Il pro­to­col­lo Non-Volatile Memory Express, invece, supporta 64.000 code e fino a 64.000 comandi per coda. Questo assicura un elevato pa­ral­le­li­smo degli accessi ai dati, con con­se­guen­ti alti tassi di th­rou­gh­put dei dati e latenze basse.

A dif­fe­ren­za degli HDD, gli SSD non leggono né scrivono i dati in modo se­quen­zia­le: l’accesso ai dati negli SSD è ugual­men­te veloce in ogni posizione, esat­ta­men­te come nella memoria prin­ci­pa­le ad accesso casuale. La creazione e l’ela­bo­ra­zio­ne dei comandi del pro­to­col­lo con NVMe segue il seguente schema:

  1. L’host trasmette le code di invio degli I/O
  2. Il con­trol­lo­re interroga le code di invio degli I/O
  3. Il con­trol­lo­re esegue le code di invio degli I/O
  4. Il con­trol­lo­re trasmette le code di com­ple­ta­men­to degli I/O
  5. L’host riceve le code di com­ple­ta­men­to degli I/O

Quali sono i vantaggi di NVMe?

I vantaggi di NVM Express sono da ri­con­dur­re prin­ci­pal­men­te all’uso dello standard PCIe e all’ot­ti­miz­za­zio­ne del pro­to­col­lo per l’unità moderna allo stato solido. Il ridotto set di comandi del pro­to­col­lo, fatto su misura per le modalità di fun­zio­na­men­to degli SSD, risulta in un basso overhead durante la lettura e la scrittura dei dati. L’uso diretto del PCIe invece elimina la necessità di tra­dut­to­ri di pro­to­col­lo, che a sua volta comporta una latenza inferiore.

Grazie alle code di comando elaborate mas­sic­cia­men­te in parallelo, gli SSD collegati tramite NVMe possono spri­gio­na­re il loro pieno po­ten­zia­le in termini di pre­sta­zio­ni. Nell’hosting pro­fes­sio­na­le e nell’ambiente di calcolo ad alte pre­sta­zio­ni, i di­spo­si­ti­vi NVMe possono anche essere collegati tramite multipath. In questo caso, un di­spo­si­ti­vo NVMe è collegato tramite diverse linee di dati parallele all’interno dell’in­fra­strut­tu­ra del computer. Se una linea non funziona, il di­spo­si­ti­vo resta rag­giun­gi­bi­le. Inoltre, i di­spo­si­ti­vi NVMe sup­por­ta­no l’hot swap, quindi se un supporto di ar­chi­via­zio­ne si guasta com­ple­ta­men­te, può essere so­sti­tui­to durante il fun­zio­na­men­to.

Consiglio

Potete sfruttare i vantaggi della Non-Volatile Memory Express per il vostro progetto web grazie a un server dedicato di IONOS con NVMe.

Dove viene uti­liz­za­to il pro­to­col­lo NVMe?

Og­gi­gior­no NVM Express è usato in quasi tutti i sistemi in­for­ma­ti­ci. Dai computer portatili e desktop a server e stazioni di lavoro fino ai su­per­com­pu­ter: il supporto di memoria SSD veloce collegato tramite NVMe viene in­stal­la­to ovunque. Vengono uti­liz­za­ti vari fattori di forma, tra cui:

  • Schede PCI Express
  • Schede M.2
  • Di­spo­si­ti­vi SFF (Small Form Factor) o 2,5" con con­net­to­re U.2
  • E1 o NGSFF (Next Ge­ne­ra­tion Small Form Factor)

Un in­te­res­san­te sviluppo del pro­to­col­lo Non-Volatile Memory Express è NVMe over Fabrics. In questo caso, invece di una con­nes­sio­ne fisica diretta, viene uti­liz­za­ta una con­nes­sio­ne di rete per in­di­riz­za­re l’unità a stato solido NVMe at­tra­ver­so la rete. Questo permette l’im­ple­men­ta­zio­ne di array di supporti SSD che for­ni­sco­no enormi quantità di spazio di ar­chi­via­zio­ne con tempi di accesso ridotti.

In sintesi

Non-Volatile Memory Express mette a di­spo­si­zio­ne un pro­to­col­lo ot­ti­miz­za­to per le moderne esigenze delle unità di memoria a stato solido che è già diventato uno standard per gli SSD.

Vai al menu prin­ci­pa­le