Cos’è NVMe?

NVMe è un protocollo software per collegare dispositivi di archiviazione di massa non volatili attraverso l’interfaccia hardware PCI Express. L’abbreviazione NVMe sta per Non-Volatile Memory Express. Una memoria non volatile è un supporto di memorizzazione il cui contenuto non viene perso quando viene staccata l’alimentazione.

NVMe riesce a fornire un accesso veloce ai dati anche se questi sono memorizzati in modo permanente. Come funziona e quali altri vantaggi comporta la tecnologia NVM Express?

Da HDD a SSD

Tradizionalmente, si distingue tra memoria principale volatile (memoria ad accesso casuale, RAM) di un computer e memoria di massa non volatile. Mentre allo spegnimento del computer la RAM perde il suo contenuto, quello della memoria di massa non volatile viene conservato. Dopo le schede perforate usate nei primi anni della tecnologia informatica e i sistemi di archiviazione su nastro che hanno iniziato a diffondersi successivamente, il disco rigido (in inglese “Hard Disk Drive”, HDD) si è affermato come dispositivo standard di archiviazione di massa.

In passato, il passaggio dalle memorie principali volatili ai dischi rigidi comportò un aumento significativo dei tempi di accesso ai dati. Per esempio, per accedere ai dati memorizzati in sequenza su una memoria RAM è necessario circa un centesimo del tempo richiesto per leggere invece la stessa quantità di dati da un disco rigido. Solo con la diffusione dei dispositivi mobili e il conseguente avvento delle unità a stato solido (SSD, in inglese “solid state storage”) questa differenza è stata colmata.

Da allora gli SSD vengono principalmente installati nei computer portatili e desktop. Gli SSD funzionano attraverso processo di memorizzazione ininterrotto: dal registro del processore alle cache L1 e L2 fino alla memoria di massa SSD, la memorizzazione dei dati avviene in modo completamente elettronico, senza parti meccaniche. Tuttavia, l’accesso ai dati per gli SSD funzionava e funziona ancora spesso tramite protocolli ottimizzati per i classici HDD a piatti rotanti, come Serial ATA (SATA).

Come funziona NVM Express?

Con NVM Express è stato sviluppato per la prima volta un protocollo specifico per la memoria di massa basata su SSD. È il successore delle consolidate interfacce software SATA e AHCI. SATA in particolare, che è stato inizialmente utilizzato per la comunicazione interna con gli SSD, ha mostrato in fretta i suoi limiti: gli SSD moderni potrebbero infatti raggiungere una capacità di trasmissione dei dati effettiva (throughput) molto più elevata rispetto a quella consentita dal protocollo SATA. Con l’interfaccia Non-Volatile Memory Express, ottimizzata specificamente per i supporti SSD, gli SSD possono ora sprigionare tutto il loro potenziale.

Per collegare una memoria di massa SSD alla scheda madre, è comunque preferibile lo standard esistente PCI Express (Peripheral Component Interconnect Express, PCIe), utilizzato, ad esempio, per collegare le schede grafiche e altri hardware. PCIe è un’interfaccia fisica, mentre NVMe è un protocollo logico ottimizzato per la memorizzazione non volatile a stato solido. In questo modo, per gestire tutti gli SSD dei diversi produttori compatibili con NVM Express, il sistema operativo avrà solo bisogno di un unico driver.

Set di comandi del protocollo NVM Express

Un protocollo software è utilizzato per strutturare la comunicazione digitale, cioè lo scambio di dati. A tal fine, il protocollo definisce un set di comandi che specifica il linguaggio utilizzato tra i partner di comunicazione. Il protocollo Non-Volatile Memory Express può vantare un set di comandi snello che comprende appena 13 comandi: dieci comandi di amministrazione e tre comandi I/O.

Qui di seguito i dieci comandi di amministrazione:

  • 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

E i tre comandi I/O:

  • Read
  • Write
  • Flush
Fatto

In informatica, l’abbreviazione “I/O” sta per input/output.

Creazione ed elaborazione 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 disposizione fisica, né gli HDD né i protocolli sviluppati a questo scopo sono ottimizzati per l’accesso parallelo di massa ai dati.

Il consolidato protocollo SATA possiede una sola coda di comando (Command Queue) per eseguire i comandi sequenziali indirizzati al disco rigido. Il protocollo Non-Volatile Memory Express, invece, supporta 64.000 code e fino a 64.000 comandi per coda. Questo assicura un elevato parallelismo degli accessi ai dati, con conseguenti alti tassi di throughput dei dati e latenze basse.

A differenza degli HDD, gli SSD non leggono né scrivono i dati in modo sequenziale: l’accesso ai dati negli SSD è ugualmente veloce in ogni posizione, esattamente come nella memoria principale ad accesso casuale. La creazione e l’elaborazione dei comandi del protocollo con NVMe segue il seguente schema:

  1. L’host trasmette le code di invio degli I/O
  2. Il controllore interroga le code di invio degli I/O
  3. Il controllore esegue le code di invio degli I/O
  4. Il controllore trasmette le code di completamento degli I/O
  5. L’host riceve le code di completamento degli I/O

Quali sono i vantaggi di NVMe?

I vantaggi di NVM Express sono da ricondurre principalmente all’uso dello standard PCIe e all’ottimizzazione del protocollo per l’unità moderna allo stato solido. Il ridotto set di comandi del protocollo, fatto su misura per le modalità di funzionamento 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 traduttori di protocollo, che a sua volta comporta una latenza inferiore.

Grazie alle code di comando elaborate massicciamente in parallelo, gli SSD collegati tramite NVMe possono sprigionare il loro pieno potenziale in termini di prestazioni. Nell’hosting professionale e nell’ambiente di calcolo ad alte prestazioni, i dispositivi NVMe possono anche essere collegati tramite multipath. In questo caso, un dispositivo NVMe è collegato tramite diverse linee di dati parallele all’interno dell’infrastruttura del computer. Se una linea non funziona, il dispositivo resta raggiungibile. Inoltre, i dispositivi NVMe supportano l’hot swap, quindi se un supporto di archiviazione si guasta completamente, può essere sostituito durante il funzionamento.

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 utilizzato il protocollo NVMe?

Oggigiorno NVM Express è usato in quasi tutti i sistemi informatici. Dai computer portatili e desktop a server e stazioni di lavoro fino ai supercomputer: il supporto di memoria SSD veloce collegato tramite NVMe viene installato ovunque. Vengono utilizzati vari fattori di forma, tra cui:

  • Schede PCI Express
  • Schede M.2
  • Dispositivi SFF (Small Form Factor) o 2,5" con connettore U.2
  • E1 o NGSFF (Next Generation Small Form Factor)

Un interessante sviluppo del protocollo Non-Volatile Memory Express è NVMe over Fabrics. In questo caso, invece di una connessione fisica diretta, viene utilizzata una connessione di rete per indirizzare l’unità a stato solido NVMe attraverso la rete. Questo permette l’implementazione di array di supporti SSD che forniscono enormi quantità di spazio di archiviazione con tempi di accesso ridotti.

In sintesi

Non-Volatile Memory Express mette a disposizione un protocollo ottimizzato per le moderne esigenze delle unità di memoria a stato solido che è già diventato uno standard per gli SSD.