Definition

NVMe (Non-Volatile Memory Express)

NVMe (Non-Volatile Memory Express) ist eine Host-Controller-Schnittstelle und ein Speicherprotokoll, das entwickelt wurde, um die Übertragungsgeschwindigkeit von Daten zwischen Unternehmens- und Client-Systemen und Solid-State Drives (SSDs) über den Hochgeschwindigkeits-Bus Peripheral Component Interconnect Express (PCIe) eines Computers zu beschleunigen.

Als die Solid-State-Technologie zum bevorzugten Medium auf dem Speichermarkt wurde, wurde schnell klar, dass die bestehenden Schnittstellen und Protokolle - insbesondere Serial Advanced Technology Attachment (SATA) und Serial-Attached SCSI (SAS) - nicht geeignet waren, insbesondere in Rechenzentrumsumgebungen. Die Arbeit an einem neuen Protokoll, das speziell für NAND-Flash entwickelt wurde, begann bereits 2007, wobei Intel die Führung übernahm. Anfang 2011 wurde die erste NVMe-Spezifikation veröffentlicht - fast 100 Technologieunternehmen waren an der Entwicklung beteiligt.

Die NVMe-Spezifikation definiert eine Registerschnittstelle, einen Befehlssatz und eine Sammlung von Funktionen für PCIe-basierte SSDs mit dem Ziel einer hohen Leistung und Interoperabilität über eine breite Palette von NVM-Subsystemen. Die NVMe-Spezifikation legt nicht das endgültige Nutzungsmodell fest, wie Solid-State-Speicher, Hauptspeicher, Cache-Speicher oder Backup-Memory.

NVMe bietet eine Alternative zum Small Computer System Interface (SCSI)-Standard und zum ATA-Standard für die Verbindung und Übertragung von Daten zwischen einem Host-System und einem peripheren Zielspeichergerät. Der ATA-Befehlssatz, der mit SATA-SSDs verwendet wird, und der SCSI-Befehlssatz für SAS-SSDs wurden zu einer Zeit entwickelt, als Festplattenlaufwerke (HDDs) und Bänder die primären Speichermedien waren. NVMe wurde für die Verwendung mit schnelleren Medien entwickelt.

Die Hauptvorteile von NVMe-basierten PCIe-SSDs gegenüber SAS- und SATA-basierten SSDs sind geringere Latenzzeiten im Host-Software-Stack, höhere Ein-/Ausgabeoperationen pro Sekunde (IOPS) und potenziell geringerer Stromverbrauch, abhängig vom Formfaktor und der Anzahl der verwendeten PCIe-Lanes.

Das NVMe-Protokoll kann SSDs unterstützen, die verschiedene Arten von nichtflüchtigem Speicher verwenden, darunter NAND-Flash und die von Intel und Micron Technology entwickelte 3D XPoint-Technologie. NVMe-Referenztreiber sind für eine Vielzahl von Betriebssystemen (OS) verfügbar, darunter Windows und Linux.

NVMe ermöglicht nicht nur die schnellere und effizientere Ausführung bestehender Anwendungen, sondern ist auch ein wichtiger Wegbereiter für neuere und 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 hohen Leistung von NVMe-attached Storage profitieren können.

Funktionsweise von NVMe

NVMe bildet E/A-Befehle und -Antworten auf das gemeinsam genutzte Memory eines Host-Computers über die PCIe-Schnittstelle ab. Die NVMe-Schnittstelle unterstützt parallele E/As mit Multicore-Prozessoren, um einen hohen Durchsatz zu ermöglichen und Engpässe bei der CPU zu entschärfen.

NVMe bietet einen schlankeren Befehlssatz zur Verarbeitung einer E/A-Anforderung als die Befehlssätze von SCSI und ATA. NVMe benötigt weniger als die Hälfte der CPU-Anweisungen als der SCSI-Befehlssatz bei SAS-Geräten und der ATA-Befehlssatz bei SATA-Laufwerken.

NVMe-SSDs vs. SATA-SSDs

SATA ist ein Kommunikationsprotokoll, das für Computer zur Interaktion mit HDD-Speichersystemen entwickelt wurde. SATA wurde im Jahr 2000 von einer Gruppe großer Technologieunternehmen eingeführt, löste das parallele ATA ab und wurde schnell zum allgegenwärtigen Speichersystemprotokoll für Computer, von Laptops bis zu Servern. Im Laufe der Jahre wurde die Spezifikation immer wieder überarbeitet und läuft derzeit mit 6 Gbit/s bei einem effektiven Durchsatz von bis zu 600 MB/s.

Obwohl für die Festplattentechnologie mit mechanisch drehenden Platten und Aktor-gesteuerten Lese-/Schreibköpfen entwickelt, wurden frühe SSDs mit SATA-Schnittstellen vermarktet, um das bestehende SATA-Ökosystem zu nutzen. Es war ein praktisches Design und trug dazu bei, die Akzeptanz von SSDs zu beschleunigen, aber es war nicht - und ist immer noch nicht - die ideale Schnittstelle für NAND-Flash-Speichergeräte und wurde zunehmend als Systemengpass angesehen.

Entwickelt für Flash, sind die Geschwindigkeit und die niedrige Latenz von NVMe besser als bei SATA, und NVMe ermöglicht viel höhere Speicherkapazitäten in kleineren Formfaktoren wie M.2. Im Allgemeinen übertreffen die Leistungsparameter von NVMe die von SATA um das Fünffache oder mehr.

SATA ist vielleicht etablierter mit einer längeren Geschichte und niedrigeren Implementierungskosten als NVMe, aber es ist eindeutig eine Festplattentechnologie, die auf modernere Speichermedien umgerüstet wurde.

NVMe SSDs vs. SAS SSDs

NVMe unterstützt 64.000 Befehle in einer einzelnen Nachrichtenwarteschlange und maximal 65.535 E/A-Warteschlangen. Im Gegensatz dazu unterstützt die Warteschlangentiefe eines SAS-Geräts typischerweise bis zu 256 Befehle und ein SATA-Laufwerk unterstützt bis zu 32 Befehle in einer Warteschlange.

Allerdings sind NVMe-basierte PCIe-SSDs teurer als SAS- und SATA-basierte SSDs mit gleicher Kapazität; allerdings verringert sich dieses Delta. Außerdem können Highend-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, zum Beispiel größere Skalierbarkeit, Hot-Pluggability und bewährte Failover-Fähigkeiten. NVMe PCIe SSDs können auch ein Leistungsniveau bieten, das viele Anwendungen nicht benötigen.

Abbildung 1: Die Unterschiede von SATA, SAS und NVMe im Überblick.
Abbildung 1: Die Unterschiede von SATA, SAS und NVMe im Überblick.

Geschichte und Entwicklung von NVM Express

Die Non-Volatile Memory Host Controller Interface (NVMHCI) Workgroup begann 2009 mit der Entwicklung der NVMe-Spezifikation und veröffentlichte am 1. März 2011 die Version 1.0. Die 1.0-Spezifikation umfasste die Warteschlangenschnittstelle, den NVM-Befehlssatz, den Verwaltungsbefehlssatz und Sicherheitsfunktionen.

Die NVMHCI Workgroup, auch bekannt als NVM Express Workgroup, veröffentlichte am 11. Oktober 2012 ein Update der NVMe-Spezifikation. NVMe 1.1 fügte Unterstützung für SSDs mit mehreren PCIe-Ports hinzu, um Multipath-I/O und Namespace-Sharing zu ermöglichen. Zu den weiteren neuen Funktionen gehören autonome Power-State-Übergänge während der Leerlaufzeit, um den Energiebedarf zu reduzieren, und Reservierungen, die es zwei oder mehr Hosts ermöglichen, den Zugriff auf einen gemeinsamen Namespace zu koordinieren, um die Fehlertoleranz zu verbessern.

Abbildung 2: Die Entwicklungsgeschichte von NVMe begann bereits 2009.
Abbildung 2: Die Entwicklungsgeschichte von NVMe begann bereits 2009.

Die NVM Express Workgroup veranstaltete ihr erstes Plugfest im Mai 2013, 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.

Im März 2014 gründete sich die NVM Express Workgroup unter dem Organisationsnamen NVM Express. Zu den Gründungsmitgliedern gehörten damals Cisco Systems, Dell, EMC, die Western Digital-Tochter HGST, Intel, LSI, Micron Technology, NetApp, Oracle, PMC-Sierra, Samsung Electronics, SanDisk und Seagate Technology.

Die NVM Express Organisation wurde später einfach als NVM Express Inc. bekannt. Die Non-Profit-Organisation hat mehr als 100 Technologieunternehmen als Mitglieder.

Die NVMe-1.2-Spezifikation erschien am 3. November 2014 mit Verbesserungen wie der Unterstützung von Live-Firmware-Updates, verbessertem Energiemanagement und der Option für End-to-End-Datenschutz.

Am 17. November 2015 ratifizierte die NVM Express-Organisation die Version 1.0 des NVM Express Management Interface (NVMe-MI), um eine Architektur und einen Befehlssatz zur Verwaltung eines nichtflüchtigen Speichersubsystems im Modus Out-of-Band bereitzustellen. NVMe-MI ermöglicht es einem Management-Controller, Aufgaben wie SSD-Geräte- und -Fähigkeitserkennung, Zustands- und Temperaturüberwachung sowie unterbrechungsfreie Firmware-Updates durchzuführen. Ohne NVMe-MI waren IT-Manager im Allgemeinen auf proprietäre, herstellerspezifische Managementschnittstellen angewiesen, um die Verwaltung von PCIe-SSDs zu ermöglichen.

NVMe 1.3 Funktionserweiterungen

NVM Express hat NVMe 1.3 im Juni 2017 veröffentlicht. Die Highlights sind Sanitize-Operationen, ein neues Framework, bekannt als Directives, und Virtualisierungsverbesserungen.

Bei einer Sanitize-Operation werden alle Nutzdaten im NVMe-Subsystem so verändert, dass eine Wiederherstellung aus einem Cache, einem nichtflüchtigen Medium oder dem Controller-Speicherpuffer nicht möglich ist, heißt es in einem NVM Express-Referenzblatt. Sanitize-Vorgänge werden empfohlen, wenn eine SSD ausgemustert oder für einen neuen Anwendungsfall wiederverwendet wird. Zu den Sanitize-Modi gehören Low-Level-Block-Löschen auf NAND-Medien, Krypto-Löschen zum Ändern eines Medienverschlüsselungs-Keys und Überschreiben.

Das Directives-Framework definiert einen Mechanismus für den Austausch von Daten zwischen einem Host und einem NVMe-Subsystem. Dies ermöglicht das Tagging von Befehlen pro I/O und gibt IT-Administratoren die Möglichkeit, überwachte Attribute und Einstellungen zu konfigurieren.

Die erste Anwendung von Directives ist eine Funktion namens Streams zur Optimierung der Datenplatzierung, um die Ausdauer und Leistung von NAND-SSDs zu steigern. Traditionell müssen große Datenblöcke erst gelöscht werden, bevor neue Daten auf die SSD geschrieben werden können.

Die Streams-Funktion ermöglicht es einem Host, einen „Stream Identifier“ zu verwenden, um die spezifischen logischen Blöcke des Speichers zu kennzeichnen, die zu einer Gruppe verbundener Daten gehören. Dadurch kann ein Lese- oder Schreibvorgang mit verwandten Daten, die an anderen Stellen gespeichert sind, verknüpft werden.

Virtualisierungserweiterungen definieren, wie NVMe-Flash in einer gemeinsam genutzten Speicherumgebung eingesetzt werden kann, in der sowohl physische als auch virtuelle Controller vorhanden sind, einschließlich primärer und sekundärer Speicher-Controller. Laut NVM Express ist es das Ziel, Entwicklungsteams in die Lage zu versetzen, eine bestimmte SSD einer bestimmten virtuellen Maschine (VM) zuzuordnen.

NVMe 1.4 Funktionserweiterungen

NVMe 1.4 wurde im Juli 2019 eingeführt. Diese neueste Version enthält eine Reihe von Verbesserungen und neuen Funktionen, darunter:

  • Rebuild Assist verbessert die Datenwiederherstellung und erweitert die Datenmigrationsvorgänge.
  • Persistent Event Log führt eine detaillierte Laufwerkshistorie, die zur Fehlersuche und zur Ermittlung der Ursachen von Problemen verwendet werden kann.
  • NVM-Sets und IO-Determinismus verbessern die Leistung und die Dienstgüte (QoS).
  • Asymmetric Namespace Access (ANA) verbessert das Multipathing für hohe Verfügbarkeit.
  • Host Memory Buffer (HMB) reduziert die Latenz und hilft beim SSD-Design.
  • Persistent Memory Region (PMR) ermöglicht es Hostsystemen, direkt auf dem DRAM zu lesen und zu schreiben, den SSDs zusammen mit ihrem Core-Flash enthalten, der bisher hauptsächlich für das Caching verwendet wurde.

Die neuen Funktionen erfordern, dass die Hersteller von Flash-Laufwerken ihre Produkte aktualisieren, um die Verbesserungen zu integrieren. Auch für Betriebssysteme werden neue Treiber erforderlich sein.

NVMe-Formfaktoren und Standards

Der Bedarf an einer Speicherschnittstelle und einem Protokoll, um das Leistungspotenzial von NAND-Flash in Unternehmensumgebungen besser auszuschöpfen, war der Hauptimpuls für die Entwicklung der NVMe-Spezifikation. Die Neugestaltung des Verbindungsstandards öffnete jedoch die Türen für verschiedene Arten von Schnittstellenimplementierungen, die innerhalb der Grenzen der neuen Spezifikation bleiben und gleichzeitig eine Vielzahl von Implementierungsoptionen bieten konnten.

In kürzester Zeit entstand eine Reihe von Flash-Formfaktoren, die den NVMe-Spezifikationen entsprechen, einschließlich konventioneller Add-in-Karten (AIC) für den PCIe-Bus und neuer Formfaktoren für SSDs, die als M.2 und U.2 bezeichnet werden.

  • Der AIC-Formfaktor ermöglicht es Herstellern, ihre eigenen Karten zu entwickeln, die in den PCIe-Bus gesteckt werden können, ohne sich um Speicherschachtdesigns oder ähnliche Einschränkungen kümmern zu müssen. Die Karten sind oft für spezielle Anwendungsfälle konzipiert und können zusätzliche Prozessoren und andere Chips enthalten, um die Leistung des Solid-State-Speichers zu erhöhen.
  • 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-Geräte nicht dafür gedacht, in herkömmliche Laufwerksschächte zu passen, 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 mm breit und im Allgemeinen 80 mm lang, obwohl einige Produkte länger oder kürzer sein können.
  • 2. Im Gegensatz zum M.2-Formfaktor wurden U.2-SSDs so entwickelt, dass sie in vorhandene Speicherschächte passen, die ursprünglich für Standard-SATA- oder SAS-Geräte vorgesehen waren. U.2-SSDs sehen diesen älteren Medien sehr ähnlich, da sie typischerweise die 2,5-Zoll- oder 3,5-Zoll-Gehäuse verwenden, die als Gehäuse für HDDs bekannt sind. Die Idee war natürlich, es so einfach wie möglich zu machen, die NVMe-Technologie mit so wenig Umgestaltung wie möglich zu implementieren.

Ein weiterer, weniger weit verbreiteter NVMe-Formfaktor ist der SSD-Formfaktor für Unternehmen und Rechenzentren (EDSFF). Er wird von wichtigen Unternehmen der Speicherbranche wie Intel, Dell EMC, Hewlett Packard Enterprise (HPE), Lenovo, Samsung und anderen unterstützt. Das Ziel von EDSFF ist es, höhere Leistung und Kapazitäten für Speichersysteme der Enterprise-Klasse bereitzustellen. Das vielleicht bekannteste Beispiel 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.

NVMe over Fabrics (NVMe-oF)

Die 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 leistungsstarken und latenzarmen Vorteile von NVMe über Netzwerk-Fabrics zu erweitern, die Server und Speichersysteme verbinden, wie Fibre Channel (FC), Ethernet und InfiniBand.

Abbildung 3: Die Funktionsweise von NVMe schematisch erklärt.
Abbildung 3: Die Funktionsweise von NVMe schematisch erklärt.

Zu den Fabric-Transporten gehören NVM-oF mit Remote Direct Memory Access (RDMA) und NVMe-oF, das auf FC abgebildet wird. Eine technische Untergruppe von NVM Express Inc. arbeitete an NVMe-oF mit RDMA, und das T11-Komitee des International Committee for Information Technology Standards (INCITS) ist für die Entwicklung von NVMe over FC (FC-NVMe) zuständig.

Die NVMe-oF-Spezifikation ist weitgehend identisch mit der NVMe-Spezifikation. Einer der Hauptunterschiede zwischen NVMe-oF und NVMe ist die Methodik zum Senden und Empfangen von Befehlen und Antworten. NVMe ist für den lokalen Einsatz konzipiert und bildet Befehle und Antworten über PCIe auf den gemeinsamen Speicher eines Computers ab. Im Gegensatz dazu verwendet NVMe-oF ein nachrichtenbasiertes System zur Kommunikation zwischen dem Host-Computer und dem Zielspeichergerät.

Das erklärte Designziel 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 um nicht mehr als 10 Mikrosekunden zu erhöhen, im Vergleich zu der Latenzzeit, die mit einem NVMe-Speichergerät verbunden ist, das den PCIe-Bus eines lokalen Computers nutzt.

Diese Definition wurde zuletzt im Januar 2021 aktualisiert

Erfahren Sie mehr über Flash Storage und SSD

ComputerWeekly.de
Close