TECHTARGET

NVMe vs SATA e SAS: qual è più veloce?

Il protocollo NVMe è fatto su misura per rendere veloci gli SSD, per utilizzarlo al meglio è necessario approfondire le sue funzionalità e le modalità con cui si connette alle interfacce SATA e SAS.

Pubblicato il 11 Nov 2021

NVMe speeds vs. SATA and SAS

​Il protocollo NVMe ( Non-Volatile Memory Express) è diventato lo standard di settore per supportare le unità a stato solido e altri sottosistemi di memoria non volatile grazie anche alle velocità che è in grado di garantire, decisamente più elevate di quelle dei protocolli di archiviazione tradizionali, come SAS e SATA.

Lo standard di memoria non volatile express si fonda sulla specifica di base NVM Express pubblicata da NVM Express Inc, consorzio senza scopo di lucro formato da leader tecnologici che definiscono e custodiscono una serie di specifiche per definire come il software host comunica con la memoria non volatile attraverso i trasporti supportati.

A partire da NVMe 2.0, il set include le seguenti specifiche:

  • Specifica di base NVMe
  • Specifiche NVMe Command Set (NVM Command Set, Zoned Namespaces Command Set e Key Value Command Set)
  • Specifiche del trasporto NVMe (NVMe su trasporto PCIe, trasporto RDMA e trasporto TCP)
  • Specifiche dell’interfaccia di gestione NVMe

La specifica NVM Express Base definisce sia un protocollo di archiviazione che un’interfaccia controller host ottimizzata per i sistemi client e aziendali che utilizzano SSD basati su PCIe, uno standard di bus di espansione seriale che permette ai computer di collegarsi alle periferiche.

Un bus PCIe può offrire latenze più basse e velocità di trasferimento più elevate rispetto alle vecchie tecnologie di bus, come gli standard PCI o PCI Extended (PCI-X), inoltre con PCIe ogni bus ha la sua connessione dedicata, quindi non devono competere per la larghezza di banda.

Gli slot di espansione che aderiscono allo standard PCIe possono scalare da 1 a 32 corsie di trasmissione dati, le configurazioni di corsie fisiche definite al suo interno sono sette e sono basate sul numero di corsie: x1, x2, x4, x8, x12, x16 e x32. Una configurazione x8, ad esempio, utilizza otto corsie, più corsie ci sono, migliori sono le prestazioni ma più alti sono i costi.

La versione del PCIe è un altro fattore che influenza le prestazioni. In generale, in ogni nuova versione si raddoppia la larghezza di banda e la velocità di trasferimento rispetto a quella precedente, quindi più recente è la versione, migliori sono le prestazioni. Per esempio, PCIe 3.0 offre una larghezza di banda di 1 GBps per corsia; PCIe 4.0 raddoppia quella larghezza di banda a 2 GBps; e PCIe 5.0 raddoppia ancora la larghezza di banda a 4 GBps.

Cos’è un SSD?

Un’unità a stato solido (SSD) è un tipo di dispositivo di archiviazione non volatile per la persistenza dei dati elettronici. A differenza di un hard disk o di un nastro magnetico, l’SSD non contiene parti mobili che possono rompersi o danneggiarsi, utilizza infatti microchip di silicio per memorizzare i dati, richiedendo così meno energia e producendo meno calore.

La maggior parte degli SSD di oggi sono basati su tecnologia di memoria flash, in questo caso nei dispositivi viene incluso un controller flash e uno o più chip di memoria flash NAND.

Velocità e prestazioni NVMe

NVMe è stato sviluppato da zero specificamente per gli SSD, per migliorare il throughput e le IOPS, ridurre la latenza e aumentare la velocità. Le unità basate su NVMe possono teoricamente raggiungere throughput fino a 32 GBps, assumendo che le unità siano basate su PCIe 4.0 e usino 16 corsie PCIe. Gli SSD PCIe 4.0 di oggi tendono ad essere dispositivi a quattro corsie con throughput più vicini a 7 GBps. Nonostante alcune unità raggiungano solo 200.000 IOPS, molte hanno superato le 500.000 IOPS, con alcune che arrivano a 10 milioni mentre i tassi di latenza continuano a scendere: molte unità raggiungono livelli inferiori a 20 microsecondi (µs) e alcune inferiori a 10.

Le metriche che misurano le velocità degli SSD NVMe, come il throughput o la velocità di trasferimento, possono variare ampiamente: per via della natura dinamica della tecnologia le cifre che si ottengono sono da considerare più che altro come delle tendenze e non come vere e proprie misure assolute.

Fattori come il tipo di carico di lavoro – scrittura contro lettura o casuale contro sequenziale – possono impattare in modo significativo sulle velocità massime NVMe ma, anche tenendo conto di tali condizioni, si può continuare ad affermare che NVMe superi protocolli come SAS e SATA su ogni fronte, specialmente quando viene usato con PCIe 4.0.

NVMe utilizza un set di comandi più snello per elaborare le richieste di I/O, che richiede meno della metà del numero di istruzioni della CPU rispetto a quelle generate da SATA o SAS, e prevede anche un sistema di messaggistica più esteso ed efficiente. Per esempio, SATA e SAS supportano solo una coda di I/O alla volta, la coda SATA può contenere fino a 32 comandi in sospeso ad esempio, e la coda SAS può contenerne fino a 256 mentre NVMe può supportare fino a 65.535 code e fino a 64.000 comandi per coda.

Grazie a questo meccanismo di adattamento, NVMe diversamente dagli altri protocolli ottimizza l’impiego delle capacità di elaborazione parallela di un SSD e, per mappare i comandi I/O e le risposte direttamente sulla memoria condivisa dell’host, utilizza l’accesso diretto remoto alla memoria sul bus PCIe riducendo ulteriormente l’overhead della CPU e migliorando le velocità di NVMe. Il risultato è che ogni ciclo di istruzione della CPU riesce a supportare IOPS più elevate e ridurre le latenze nello stack software dell’host.

Velocità e prestazioni di SAS e SATA

SAS e SATA sono protocolli molto diffusi per facilitare la connettività tra software host e unità periferiche e sono basati rispettivamente sugli standard Advanced Technology Attachment e SCSI.

Entrambi questi protocolli sono stati sviluppati specificamente per i dispositivi HDD e possono facilmente gestire i carichi di lavoro HDD anche se SAS è generalmente considerato più veloce e affidabile. In queste circostanze se accade che un sistema si imbatta in blocchi legati allo storage nella maggior parte dei casi è a causa dell’unità stessa o di altri fattori, non a causa del protocollo.

L’arrivo degli SSD ha cambiato le regole del gioco, però, perché con i loro IOPS più elevati riescono a sopraffare rapidamente i vecchi protocolli raggiungendo poi i loro limiti prima di poter trarre pieno vantaggio dalle capacità prestazionali dell’unità. È quindi evidente che i vecchi protocolli non hanno buone performance con gli SSD, SATA e SAS supportano solo una coda di I/O alla volta e ciascuna di esse può contenere solo un piccolo numero di comandi in sospeso rispetto a NVMe. Inoltre, le attuali unità basate su SATA possono raggiungere un throughput di soli 6 Gbps, con IOPS che raggiungono circa 100.000, mentre le latenze superano tipicamente i 100 µs, anche se alcuni SSD più recenti basati su SATA possono raggiungere latenze molto più basse. Le unità SAS offrono prestazioni leggermente migliori: forniscono throughput fino a 12 Gbps e IOPS in media tra 200.000 e 400.000 e anche così, possono registrarsi anche IOPS più basse mentre la latenza, pur scendendo con SAS sotto i 100 µs, ma non cala di molto.

NVMe 2.0

Le specifiche NVMe 2.0 definiscono una serie di caratteristiche nuove che segnano un miglioramento finalizzato a supportare l’ambiente emergente dei dispositivi NVMe mantenendo però la compatibilità con le versioni precedenti. Le specifiche 2.0 includono aggiornamenti di funzionalità e gestione che rendono possibile l’uso di NVMe con supporti a rotazione come gli HDD.

NVMe 2.0, rilasciato nel 2021, ha aggiunto due nuovi set di comandi, il Zoned Namespaces set e il Key Value Command Set. Il primo definisce un’interfaccia del dispositivo di archiviazione che permette a un host e a un SSD di collaborare al posizionamento dei dati favorendo l’allineamento dei dati con il supporto fisico dell’SSD e migliorando le prestazioni e l’uso delle risorse. Il Key Value Command Set, invece, permette alle applicazioni di usare coppie chiave-valore per comunicare direttamente con un SSD, evitando così l’overhead delle tabelle di traduzione tra chiavi e blocchi logici.

NVMe 2.0 ha aggiunto diverse altre caratteristiche importanti e aggiornato molte di quelle esistenti. Per esempio:

  • Namespace Types permette a un controller SSD di supportare diversi set di comandi NVMe.
  • NVMe Endurance Group Management migliora il controllo dell’SSD consentendo ai supporti di essere configurati in gruppi di resistenza e set NVM, il che espone la granularità dell’accesso all’SSD.
  • Multiple Controller Firmware Update definisce il comportamento per l’aggiornamento del firmware su un dominio che contiene più controller.
  • Command Group Control protegge un sistema da modifiche involontarie o dannose dopo il provisioning.
  • Command and Feature Lockdown abilita i controlli dell’host e della gestione per impedire l’esecuzione di certi comandi.
  • Un semplice comando “copy” permette a un host di copiare i dati da più intervalli di blocchi logici a un singolo intervallo di blocchi logici consecutivi.

Le specifiche NVMe 2.0 migliorano anche la telemetria, includono capacità che consentono ambienti su larga scala con diversi domini, definiscono una nuova struttura di identità che può abbracciare più namespace e aggiornano il Command Effects Log.

NVMe 1.3 e NVMe 1.4

Nel 2019, il gruppo NVM Express ha rilasciato la specifica NVMe 1.4 e ha migliorato NVMe 1.3, che è stato rilasciata nel 2017. In NVMe 1.4 sono state introdotte diverse caratteristiche nuove e altre sono state migliorate, ad esempio, una specifica tra quelle riviste ha definito una regione di persistent memory PCIe in cui i contenuti persistono attraverso i cicli di alimentazione e una modalità di latenza prevedibile che consente a un host esperto di ottenere una latenza di lettura deterministica.

NVMe 1.4 ha anche reso possibile implementare un event log persistente nei sottosistemi NVMe, segnalare all’host le caratteristiche di accesso asimmetrico allo spacename e permettere all’host di associare un set NVM e una coda di presentazione I/O. Nella revisione sono stati aggiunti anche un comando di verifica per controllare l’integrità dei dati e dei metadati memorizzati e alcuni suggerimenti relativi alle prestazioni e alla resistenza che permettono al controller di specificare le granularità e gli allineamenti preferiti per le operazioni di scrittura e deallocazione.

NVMe 1.4 ha aggiornato molte caratteristiche esistenti, migliorando il buffer di memoria dell’host e permettendo ai flussi di scrittura di essere condivisi tra più host. È stato anche definito un meccanismo del controller per comunicare all’host le granularità di allocazione dello spacename e impedire la deallocazione dopo un’operazione di sanitizzazione.

NVMe over fabric

Nel giugno 2016, il consorzio NVM Express ha pubblicato la specifica NVMe over fabrics (NVMe-oF), che ha esteso i vantaggi di NVMe su tecnologie di reti come Ethernet, InfiniBand e Fibre Channel. Il consorzio ha stimato che NVMe-oF era simile NVMe per il 90% dei suoi contenuti, la differenza principale tra i due era la modalità con cui i protocolli gestivano i comandi e le risposte tra l’host e il sottosistema NVM.

Nell’ottobre 2019, NVM Express ha rilasciato la specifica NVMe-oF 1.1, che ha aggiunto il supporto per il binding di trasporto TCP, NVMe su TCP ha reso possibile utilizzare NVMe-oF su reti Ethernet standard senza apportare modifiche all’hardware o alla configurazione. Ad oggi il consorzio non ha piani di ulteriore sviluppo di NVMe-oF mentre il suo contenuto è stato inserito nella versione 2.0 della specifica NVM Express Base.

What is NVMe-oF (NVMe Over Fabrics)?

What is NVMe-oF (NVMe Over Fabrics)?

Guarda questo video su YouTube

Considerazioni sull’acquisto

Una delle principali considerazioni sull’acquisto di un SSD riguarda la scelta di unità basate sul protocollo SATA, SAS o NVMe. La maggior parte dei data center aziendali preferisce NVMe rispetto agli altri due per via delle sue prestazioni di gran lunga superiori.

Se si opta per NVMe è necessario considerare quattro fattori importanti, specifici per PCIe:

  • Versione PCIe. Ogni nuova generazione della specifica PCIe prevede migliori prestazioni, quindi è meglio optare per SSD che aderiscono alla versione più recente.
  • Numero di corsie PCIe. La maggior parte degli SSD NVMe sono limitati a quattro corsie PCIe, ma non tutti. Più corsie utilizza un’unità, meglio performa.
  • Fattore di forma SSD. Gli SSD PCIe sono disponibili in quattro fattori di forma: M.2, U.2, schede aggiuntive e EDSFF. Per scegliere si dovrebbero considerare elementi come il budget, la posizione dell’host delle unità e la quantità di spazio disponibile e il fatto che EDSFF è una tecnologia emergente che offre diversi vantaggi rispetto ad altri fattori di forma in termini di prestazioni, capacità e scalabilità.
  • Ambiente di storage. L’hardware che ospita le SSD dovrebbe supportare la stessa versione PCIe delle unità per ottenere i maggiori benefici. Per esempio, se gli utenti eseguono un SSD PCIe 4.0 su un server PCIe 3.0, l’unità funzionerà a velocità PCIe 3.0, non PCIe 4.0.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati