Definition

NVMe (Non-Volatile Memory Express)

Was ist NVMe (Non-Volatile Memory-Express)

NVMe (Non-Volatile Memory Express) ist ein Übertragungsprotokoll, das entwickelt wurde, um die Übertragungsgeschwindigkeit von Daten in Solid-State-Speichergeräten zu beschleunigen. NVMe wird sowohl in Unternehmens- als auch in Client-Systemen eingesetzt.

Als sich die Solid-State-Technologie auf dem Speichermarkt durchsetzte, wurde schnell klar, dass die bestehenden Schnittstellen und Protokolle, wie Serial ATA (SATA) und Serial-Attached SCSI (SAS), in Rechenzentrumsumgebungen nicht mehr geeignet waren. Anfang 2011 wurde die erste NVMe-Spezifikation veröffentlicht, an deren Entwicklung fast 100 Technologieunternehmen beteiligt waren.

NVMe wird in der Regel für Solid-State-Speicher, Hauptspeicher (Main Memory), Cache-Memory oder Backup-Memory verwendet. NVMe funktioniert durch die Kommunikation zwischen einer Speicherschnittstelle und einer CPU des Systems über einen Hochgeschwindigkeits-PCIe-Bus (Peripheral Component Interconnect Express). Das NVMe-Protokoll wurde für die Verwendung mit schnellen Medien entwickelt. Die Hauptvorteile von NVMe-basierten PCIe-Solid-State Drives (SSDs) gegenüber anderen Speichertypen sind geringere Latenzzeiten und hohe Eingabe-/Ausgabeoperationen pro Sekunde (IOPS).

NVMe ist auch ein wichtiger Wegbereiter für sich entwickelnde Technologien und Anwendungen wie das Internet der Dinge (IoT), künstliche Intelligenz (KI) und maschinelles Lernen (ML), die alle von den niedrigen Latenzzeiten und der verbesserten Leistung von NVMe-verbundenen Speichern profitieren können.

Wie funktioniert NVMe?

Die Logik für NVMe ist in einem NVMe-Controller-Chip gespeichert und wird von diesem ausgeführt, der sich physisch in den verwendeten Speichermedien befindet. Zur Datenübertragung ermöglicht das NVMe-Protokoll SSDs eine direkte Verbindung mit der CPU über einen PCIe-Bus.

Der NVMe-Standard definiert eine Registerschnittstelle, einen Befehlssatz und eine Reihe von Funktionen für PCIe-basierte SSDs mit dem Ziel einer hohen Leistung und Interoperabilität über eine breite Palette von NVM-Systemen.

Das NVMe-Protokoll kann jede Form von NVM unterstützen, einschließlich NAND-Flash-fähiger SSDs. NVMe-Referenztreiber sind für eine Vielzahl von Betriebssystemen verfügbar, darunter Windows und Linux.

Ein NVMe-SSD wird über einen PCIe-Bus und einen M.2- oder U.2-Anschluss angeschlossen. Das mit damit verbundene NVMe-Protokoll ermöglicht geringere Latenzzeiten und höhere IOPS sowie einen geringeren Stromverbrauch.

NVMe-Befehle ordnen Ein-/Ausgabe (E/A) und Antworten dem gemeinsamen Memory eines Host-Computers über eine PCIe-Schnittstelle zu. Die NVMe-Schnittstelle unterstützt parallele I/Os mit Multicore-Prozessoren, um einen hohen Durchsatz zu ermöglichen und CPU-Engpässe zu vermeiden.

Warum ist NVMe wichtig?

NVMe wurde für leistungsstarke nichtflüchtige Speichermedien entwickelt und eignet sich gut für sehr anspruchsvolle, rechenintensive Umgebungen. So kann NVMe beispielsweise Arbeitslasten in Unternehmen bewältigen und benötigt dabei eine kleinere Infrastruktur und weniger Strom als andere Speichertypen, einschließlich SAS und SATA.

Es gibt einen großen Leistungsunterschied zwischen NVMe, SAS und SATA. So ist die Latenzzeit bei NVMe deutlich geringer als bei SAS- und SATA-Protokollen. Das bedeutet, dass NVMe bei Workload-intensiven Anwendungen eingesetzt werden kann, die Echtzeitverarbeitung benötigen, ohne dass es zu Engpässen kommt.

Unternehmensumgebungen und Rechenzentren profitieren von der hohen Leistung, die durch NVMe-basierte Speichergewährleistet wird.

Was sind die Anwendungsfälle von NVMe?

Aufgrund seiner Leistung und der Fähigkeit, eine große Anzahl von Warteschlangen und Befehlen zu verarbeiten, eignet sich NVMe für Folgende Workloads:

  • Professionelle und Prosumer-Anwendungen, die Aufgaben wie die Bearbeitung von Grafiken bewältigen.
  • Anwendungen mit großen Warteschlangentiefen für Speicher-I/O, einschließlich Datenbanken und einiger Weboperationen.
  • Hochleistungscomputer, insbesondere für Anwendungen, bei denen eine niedrige Latenzzeit entscheidend ist.
  • Relationale Datenbanken, bei denen die Leistung von NVMe-Flash-Speichersystemen die Anzahl der benötigten physischen Server verringert.
  • Anwendungen, die Daten in Echtzeit abrufen oder speichern müssen, wie zum Beispiel Finanz- und E-Commerce-Anwendungen.

Was sind die Vorteile von NVMe?

Zu den Vorteilen von NVMe gehören die folgenden:

  • NVMe-Laufwerke können Befehle im Vergleich zu AHCI und SATA-Laufwerken doppelt so schnell senden.
  • PCIe-Sockel können viel mehr Daten übertragen als SATA-Laufwerke.
  • NVMe-SSDs haben eine Latenzzeit von nur wenigen Mikrosekunden, während SATA-SSDs eine Latenzzeit zwischen 30 und 100 Mikrosekunden haben.
  • NVMe bietet effiziente Speicherung, Verwaltung und Datenzugriff.
  • Im Vergleich zu SATA und SAS verfügt es über eine viel höhere Bandbreite.
  • NVMe unterstützt mehrere Formfaktoren, darunter M.2- und U.2-Anschlüsse.
  • Es kann Befehlssätze rationalisieren, um Daten effizient zu parsen.
  • NVMe unterstützt Tunneling-Protokolle für den Datenschutz.
  • Es ist stromsparend, da NVMe-fähige SSDs im Standby-Modus etwa 0,0032 Watt verbrauchen, verglichen mit einer aktiven NVMe-SSD, die etwa 0,08 Watt verbraucht.
  • NVMe funktioniert mit allen gängigen Betriebssystemen und ist dank des M.2-Formfaktors mit mobilen Geräten wie Laptops kompatibel.
  • NVMe-SSDs ermöglichen schnellere Spielstarts, Ladezeiten und Installationszeiten für Spielkonsolen.

Was sind die Nachteile von NVMe?

Zu den möglichen Nachteilen von NVMe gehören die folgenden:

  • Fehlende Unterstützung für Altsysteme.
  • Nicht kosteneffizient bei der Speicherung großer Datenmengen. NVMe ist gemessen an der Speicherkapazität im Vergleich zu bereits etablierten rotierenden Laufwerken teurer.
  • Wird in der Regel mit dem M.2-Format verwendet, was die Auswahl an Laufwerken weiter einschränken kann.

Wie unterscheiden sich SATA, NVMe und SAS?

SATA. SATA ist ein Kommunikationsprotokoll, das für Computer zur Interaktion mit Festplattenspeichersystemen entwickelt wurde. SATA wurde im Jahr 2000 eingeführt, löste das parallele ATA ab und wurde schnell zum allgegenwärtigen Speichersystemprotokoll für Computer. Im Laufe der Jahre wurden die Spezifikationen auf eine Geschwindigkeit von 6 Gigabit pro Sekunde (Gbps) mit einem effektiven Durchsatz von bis zu 600 Megabyte pro Sekunde erhöht.

Obwohl SATA für die Festplattentechnologie mit mechanisch drehenden Platten und aktuatorgesteuerten Lese-/Schreibköpfen entwickelt wurde, wurden frühe SSDs mit SATA-Schnittstellen vermarktet, um die Vorteile des bestehenden SATA-Ökosystems zu nutzen. Es war ein praktisches Design und trug dazu bei, die Einführung von SSDs zu beschleunigen, aber es war nicht die ideale Schnittstelle für NAND-Flash-Speicher und wurde zunehmend zu einem Engpass im System.

SATA unterstützt bis zu 100.000 IOPS, einen Durchsatz von 6 Gbit/s, eine Latenz von weniger als 1 Millisekunde, eine Warteschlange und 32 Befehle pro Warteschlange. NVMe unterstützt bis zu 10 Millionen IOPS, einen Durchsatz von 16 Gbit/s, eine Latenz von weniger als 10 Mikrosekunden, 65.535 Warteschlangen und 65.536 Befehle pro Warteschlange.

NVMe. NVMe wurde für Flash-Speicher entwickelt und übertrifft mit seiner Geschwindigkeit und geringen Latenz das SATA-Protokoll. Im Allgemeinen übertreffen die Leistungsparameter von NVMe die von SATA um das Fünffache oder mehr.

SATA ist etablierter, mit einer langen Geschichte und niedrigeren Implementierungskosten als NVMe, aber es ist eine Festplattentechnologie, die mit moderneren Speichermedien nachgerüstet wurde.

SAS. NVMe unterstützt 64.000 Befehle in einer einzigen Nachrichtenwarteschlange und maximal 65.535 I/O-Warteschlangen. Im Gegensatz dazu unterstützt die Warteschlangentiefe eines SAS-Geräts in der Regel bis zu 256 Befehle, und ein SATA-Laufwerk unterstützt bis zu 32 Befehle in einer Warteschlange.

Außerdem können High-End-NVMe-SSDs für Unternehmen mehr Strom verbrauchen als SAS- oder SATA-SSDs. Die SCSI Trade Association behauptet, dass die ausgereifteren SAS-SSDs zusätzliche Vorteile gegenüber NVMe-PCIe-SSDs bieten, wie zum Beispiel eine größere SkalierbarkeitHot-Plug-Fähigkeit und bewährte Failover-Funktionen. NVMe-PCIe-SSDs können auch ein Leistungsniveau bieten, das viele Anwendungen nicht benötigen.

Abbildung 1: NVMe bietet im Vergleich zu SAS und SATA höhere IOPS, Durchsatz, Warteschlangen und Befehle pro Warteschlange.
Abbildung 1: NVMe bietet im Vergleich zu SAS und SATA höhere IOPS, Durchsatz, Warteschlangen und Befehle pro Warteschlange.

Entwicklungsgeschichte von NVM Express

Die Non-Volatile Memory Host Controller Interface Work Group begann mit der Entwicklung der NVMe-Spezifikation im Jahr 2009 und veröffentlichte die Version 1.0 am 1. März 2011. Diese Spezifikation umfasste die Warteschlangenschnittstelle, den NVM-Befehlssatz, den Verwaltungsbefehlssatz und Sicherheitsfunktionen. Weitere erwähnenswerte Zeitpunkte sind die folgenden:

  • Nov. 8, 2012. Die NVM Express Work Group veröffentlicht NVMe 1.1, das Unterstützung für SSDs mit mehreren PCIe-Ports bietet, um Multipath I/O und Namespace zu ermöglichen. Zu den weiteren neuen Funktionen gehörten autonome Stromversorgungsübergänge während der Leerlaufzeit, um den Energiebedarf zu senken, und Reservierungen, das heißt, dass zwei oder mehr Hosts den Zugriff auf einen gemeinsamen Namespacekoordinieren können, um die Fehlertoleranz zu verbessern.
  • Mai 2013. Die NVM Express Work Group veranstaltet ihr erstes Plugfest, um Unternehmen die Möglichkeit zu geben, die Konformität ihrer Produkte mit der NVMe-Spezifikation zu testen und die Interoperabilität mit anderen NVMe-Produkten zu überprüfen.
  • März 2014. Die NVM Express Work Group wird unter dem Namen NVM Express Organisation gegründet. Später wurde die Gruppe einfach als NVM Express Inc. bekannt. Die gemeinnützige Organisation hat mehr als 100 Technologieunternehmen als Mitglieder.
  • 3. November 2014. Die NVMe 1.2-Spezifikation wird veröffentlicht, mit Verbesserungen wie der Unterstützung von Live-Firmware-Updates, verbessertem Energiemanagement und der Option für End-to-End-Data-Protection.
  • Nov. 17, 2015. Die NVM Express-Organisation ratifiziert die Version 1.0 des NVM Express Management Interface (NVMe-MI), um eine Architektur und einen Befehlssatz zur Verwaltung eines nichtflüchtigen Speichersubsystems außerhalb des Bandes bereitzustellen. NVMe-MI ermöglicht es einem Management-Controller, Aufgaben wie die Erkennung von SSD-Geräten und -Funktionen, die Überwachung von Zustand und Temperatur sowie unterbrechungsfreie Firmware-Updates durchzuführen. Ohne NVMe-MI waren IT-Manager im Allgemeinen auf proprietäre, herstellerspezifische Verwaltungsschnittstellen angewiesen, um die Verwaltung von PCIe-SSDs zu ermöglichen.
  • Juni 2017. NVM Express veröffentlicht NVMe 1.3. Im Mittelpunkt stehen Sanitize-Operationen, ein neues Framework namens Directives und Virtualisierung.
  • Juli 2019. NVMe 1.4 wurde zusammen mit Verbesserungen und neuen Funktionen eingeführt, darunter ein Rebuild-Assistent, ein persistentes Ereignisprotokoll, asymmetrischer Namespace-Zugriff, Host-Memory-Puffer und persistente Memory-Region.
  • 2020. Die Spezifikation des NVMe Zoned Namespaces (ZNS) Command Set wird ratifiziert. Diese Spezifikation ermöglicht es NVMe, Befehlssätze für aufkommende Technologien zu isolieren und weiterzuentwickeln, einschließlich ZNS, Key Value und Computational Storage.
  • 3. Juni 2021. NVMe 2.0 wird veröffentlicht. Die Spezifikation wurde umstrukturiert, um eine schnellere und einfachere Entwicklung von NVMe zu ermöglichen und eine vielfältigere NVMe-Umgebung zu unterstützen.
  • 2022. Die NVMe-2.0-Spezifikationen werden zweimal umstrukturiert: im Januar 2022 zu NVMe 2.0b und im Oktober 2022 zu 2.0c. Diese Aktualisierungen wurden vorgenommen, um eine schnellere und einfachere Entwicklung der NVMe-Technologie zu ermöglichen und Funktionen wie ZNS und Endurance Group Management hinzuzufügen.
Abbildung 2: Das NVMe-Protokoll hat sich seit seiner ersten Veröffentlichung im Jahr 2011 ständig verändert und weiterentwickelt.
Abbildung 2: Das NVMe-Protokoll hat sich seit seiner ersten Veröffentlichung im Jahr 2011 ständig verändert und weiterentwickelt.

NVMe-Formfaktoren und -Standards

Der Bedarf an einer Speicherschnittstelle und einem Protokoll zur besseren Nutzung des Leistungspotenzials von NAND-Flash in Unternehmensumgebungen war die treibende Kraft hinter der Entwicklung von NVMe. Die Neugestaltung des Verbindungsstandards öffnete jedoch die Tür für verschiedene Arten von Schnittstellen-Implementierungen, die innerhalb der Grenzen der neuen Spezifikation bleiben und gleichzeitig eine Vielzahl von Implementierungsoptionen bieten.

In kürzester Zeit entstanden die folgenden Flash-Formfaktoren, die den NVMe-Spezifikationen entsprechen:

  • AIC. Der Formfaktor Add-In Card (AIC) ermöglicht es Herstellern, eigene Karten zu entwickeln, die in den PCIe-Bus passen, ohne sich um Speicherschachtdesigns oder ähnliche Einschränkungen kümmern zu müssen. Die Karten werden oft für spezielle Anwendungsfälle entwickelt und können zusätzliche Prozessoren und andere Chips enthalten, um die Leistung von Solid-State-Speichern zu verbessern.
  • M.2. Der M.2-Formfaktor wurde entwickelt, um die Vorteile der kompakten Größe von NAND-Flash und der geringen Wärmeabgabe zu nutzen. Daher sind M.2-NVMe-Geräte nicht für den Einbau in herkömmliche Laufwerksschächte gedacht, sondern eher für den Einsatz in viel kleineren Räumen. M.2-SSDs, die oft als etwa so groß wie ein Kaugummi beschrieben werden, sind 22 Millimeter breit und etwa 80 mm lang, obwohl einige Produkte länger oder kürzer sein können.
  • U.2. Im Gegensatz zum M.2-Formfaktor wurden U.2-SSDs so konzipiert, dass sie in vorhandene Speicherschächte passen, die ursprünglich für Standard-SATA- oder SAS-Geräte vorgesehen waren. U.2-SSDs sehen älteren Medien ähnlich, da sie in der Regel die 2,5-Zoll- oder 3,5-Zoll-Gehäuse verwenden, die auch für Festplattenlaufwerke vorgesehen sind. Die Idee war, die Implementierung der NVMe-Technologie so einfach wie möglich zu machen, mit so wenig Umstrukturierung wie möglich.
  • EDSFF. Ein weiterer, weniger weit verbreiteter NVMe-Formfaktor ist der Enterprise and Data Center Standard Form Factor (EDSFF). Das Ziel von EDSFF ist es, Speichersysteme der Unternehmensklasse mit höherer Leistung und Kapazität auszustatten. Die vielleicht bekanntesten Beispiele für EDSFF-Flash sind Intels E1.L long und E1.S short Flash-Geräte, die in dem ursprünglich als Lineal (Ruler) bezeichneten Formfaktor angeboten werden.
  • U.3. Dieser Formfaktor kann NVMe-, SAS- und SATA-Laufwerke im selben Serversteckplatz unterbringen. U.3 wurde auf der Grundlage der U.2-Spezifikation entwickelt und arbeitet mit einem Tri-Mode-Controller, SFF-8639-Anschlüssen und einem universellen Backplane-Management-Framework. Mit U.3 benötigen Unternehmen keine separaten NVMe-, SAS- oder SATA-Adapter.

NVMe over Fabrics (NVMe-oF)

NVM Express Inc. hat am 5. Juni 2016 die Version 1.0 der NVMe over Fabrics (NVMe-oF) Spezifikation veröffentlicht. NVMe-oF wurde entwickelt, um die Vorteile von NVMe in Bezug auf hohe Leistung und niedrige Latenz über Netzwerkstrukturen zu erweitern, die Server und Speichersysteme verbinden. Die 2019 veröffentlichte Spezifikation NVMe-oF 1.1 bietet eine verbesserte Fabric-Kommunikation, eine granulare I/O-Ressourcenverwaltung sowie eine End-to-End-Flusskontrolle und Unterstützung für NVMe/TCP. Beide Spezifikationen bieten außerdem geringere Latenzzeiten, verbesserte Verwaltung und Bereitstellung von Flash-Speicher sowie Remote-Storage-Zugriff.

Zu den Fabric-Transporten gehören NVMe-oF RDMA und NVMe-oF. Eine technische Untergruppe von NVM Express Inc. arbeitete an NVMe-oF RDMA, während der T11-Ausschuss des International Committee for Information Technology Standards NVMe über Fibre Channel entwickelte.

Abbildung 3: NVMe-oF nutzt Fabric, um Daten von einem Anwendungsserver zum Storage zu senden.
Abbildung 3: NVMe-oF nutzt Fabric, um Daten von einem Anwendungsserver zum Storage zu senden.

Die NVMe-oF-Spezifikation ist weitgehend identisch mit der NVMe-Spezifikation. Einer der Hauptunterschiede besteht jedoch in der Methodik für das Senden und Empfangen von Befehlen und Antworten. NVMe ist für den lokalen Einsatz konzipiert und überträgt Befehle und Antworten über PCIe in das gemeinsame Memory eines Computers. Im Gegensatz dazu verwendet NVMe-oF ein nachrichtenbasiertes System für die Kommunikation zwischen dem Host-Computer und dem Zielspeichergerät.

Das Entwicklungsziel für NVMe-oF war es, die Latenzzeit für die Kommunikation zwischen einem NVMe-Host-Computer und einem mit dem Netzwerk verbundenen NVMe-Speichergerät auf höchstens 10 Mikrosekunden zu begrenzen.

Diese Definition wurde zuletzt im Juni 2024 aktualisiert

Erfahren Sie mehr über Flash Storage und SSD