Was ist NVMe? (Non-Volatile-Memory-Express-Protokoll)

Bei NVMe handelt es sich um ein Software-Protokoll zur Anbindung von nichtflüchtigen Massenspeichern über die PCI-Express-Hardware-Schnittstelle. Die Abkürzung NVMe steht dabei für Non-Volatile Memory Express, zu Deutsch „nichtflüchtiger Speicher Express“. Unter einem nichtflüchtigen (non-volatile) Speicher versteht man ein Speichermedium, dessen Inhalte nicht verloren gehen, wenn der Strom abgeschaltet wird.

NVMe schafft es, trotz der dauerhaften Speicherung der Daten schnelle Zugriffe zu ermöglichen. Wie funktioniert die Technik und welche Vorteile bringt NVM Express noch mit sich?

Von der HDD zur SSD

Traditionell wurde zwischen dem flüchtigen Hauptspeicher (Random Access Memory, RAM) eines Computers und einem nichtflüchtigen Massenspeicher unterschieden. Während der RAM eines Computers beim Ausschalten seine Inhalte verliert, bleiben die Inhalte des nichtflüchtigen Massenspeichers erhalten. Nach den in den Anfangsjahren der Computertechnologie eingesetzten Lochkarten und den später weit verbreiteten Bandspeichersystemen etablierten sich die rotierenden Festplatten (engl. Hard Disk Drive, HDD) als Standard-Massenspeicher.

Der Medienbruch zwischen Hauptspeicher und Festplatte ging einher mit drastisch unterschiedlichen Zugriffszeiten. So lag die Zugriffszeit auf sequenziell im RAM gespeicherte Daten bei etwa einem Hundertstel der Zeit, die benötigt wurde, um dieselbe Menge an Daten von einer rotierenden Festplatte zu lesen. Erst mit der weiten Verbreitung von Mobilgeräten und dem damit einhergehenden Aufkommen der Solid State Drives (SSD, dt. „Festkörperspeicher“) wurde diese Dynamik aufgebrochen.

Mittlerweile werden auch in Laptop- und Desktop-Computern hauptsächlich SSD verbaut, sodass man von einem durchgehenden Speichermedium sprechen kann: Vom Prozessor-Register über die L1- und L2-Caches bis zum SSD-Massenspeicher erfolgt die Speicherung der Daten komplett elektronisch, ohne bewegliche Teile. Jedoch lief der Datenzugriff auf SSDs noch immer über für rotierende HDDs optimierte Protokolle wie Serial ATA (SATA).

Wie funktioniert NVM Express?

Mit NVM Express wurde erstmalig ein Protokoll speziell für nichtrotierende, SSD-basierte Massenspeicher entwickelt. Es handelt sich dabei um den Nachfolger der alteingesessenen Software-Schnittstellen SATA und AHCI. Gerade SATA, das anfänglich für die interne Kommunikation mit SSDs genutzt wurde, entwickelte sich schnell zum Flaschenhals: Moderne SSDs konnten einen viel höheren Datendurchsatz leisten, als ihn das SATA-Protokoll erlaubte. Mit der nun eigens für SSD-Medien optimierten Non-Volatile-Memory-Express-Schnittstelle können SSDs nun ihr volles Potenzial ausschöpfen.

Um SSD-Massenspeicher auf dem Mainboard anzubinden, wird bevorzugt der bereits bestehende Standard PCI Express (Peripheral Component Interconnect Express, PCIe) genutzt. Über PCIe werden beispielsweise bereits Grafikkarten und andere Hardware angebunden. Bei PCIe handelt es sich um eine physische Schnittstelle – NVMe bildet als Protokoll ein logisches Pendant dazu, optimiert für nichtflüchtige Festkörperspeicher. Somit reicht ein einzelner Treiber aufseiten des Betriebssystems, um sämtliche mit NVM Express kompatiblen SSDs unterschiedlicher Hersteller anzusprechen.

Befehlssatz des NVM-Express-Protokolls

Ein Software-Protokoll dient dazu, die digitale Kommunikation, also den Austausch von Daten, zu strukturieren. Dazu definiert das Protokoll einen Befehlssatz, der die zwischen den Kommunikationspartnern genutzte Sprache festlegt. Das Non-Volatile-Memory-Express-Protokoll kommt mit einem schlanken, nur 13 Befehle umfassenden Befehlssatz aus.

So sind nur zehn Admin-Befehle zwingend vorgesehen:

  • 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

Dazu kommen noch drei I/O-Befehle, die zwingend notwendig sind:

  • Read
  • Write
  • Flush
Fakt

Die Abkürzung „I/O“ steht in der Computertechnologie für Input/Output, zu Deutsch „Eingabe/Ausgabe“.

Kommando-Erstellung und -Verarbeitung mit Non-Volatile Memory Express

Eine moderne Festplatte verfügt über mehrere rotierende Scheiben. Pro Scheibe kommen für gewöhnlich zwei Schreib-Lese-Köpfe zum Einsatz. Die Schreib-Lese-Köpfe sind allesamt an einem einzigen, beweglichen Schreib-Lese-Arm befestigt. Durch diese physische Anordnung bedingt sind weder HDDs noch die dafür entwickelten Protokolle für den massenhaft parallelen Zugriff auf Daten optimiert.

Das altgediente SATA-Protokoll verfügt über nur eine Kommando-Warteschlange (Command Queue), um hintereinander an die Festplatte gerichtete Befehle auszuführen. Das Non-Volatile-Memory-Express-Protokoll hingegen unterstützt 64.000 Warteschlangen, mit bis zu 64.000 Befehlen pro Schlange. Dadurch wird eine hohe Parallelität der Datenzugriffe gewährleistet, was zu hohen Datendurchsatzraten und geringen Latenzen führt.

Anders als HDDs lesen und schreiben SSDs Daten nicht sequenziell; der Datenzugriff auf SSDs erfolgt wie beim Random-Access-Hauptspeicher an jeder Position gleichermaßen schnell. Die Erstellung und Verarbeitung der Protokoll-Kommandos mit NVMe läuft nach dem folgenden Muster ab:

  1. Host übermittelt I/O Submission Queues
  2. Controller ruft I/O Submission Queues ab
  3. Controller führt I/O Submission Queues aus
  4. Controller übermittelt I/O Completion Queues
  5. Host empfängt I/O Completion Queues

Welche Vorteile hat NVMe?

Die Vorteile von NVM Express sind bedingt durch die Nutzung des existierenden PCIe-Standards und die Optimierung des Protokolls für moderne Festkörperspeicher. Der schlanke, für die Arbeitsweise von SSDs zugeschnittene Protokoll-Kommandosatz führt zu geringem Overhead beim Lesen und Schreiben von Daten. Durch die direkte Nutzung von PCIe kann auf Protokollübersetzer verzichtet werden, was wiederum geringere Latenzen bedingt.

Durch die massiv parallel verarbeiteten Kommando-Warteschlangen können über NVMe angebundene SSDs ihr volles Leistungspotenzial entfalten. Im professionellen Hosting- und High-Performance-Computing-Umfeld lassen sich NVMe-Geräte ferner über Multi-Pathing anbinden. Dabei wird innerhalb der Rechner-Infrastruktur ein NVMe-Gerät über mehrere, parallele Datenleitungen angeschlossen. Fällt eine Leitung aus, bleibt das Gerät erreichbar. Ferner unterstützen NVMe-Geräte Hot Swapping; fällt ein Speichermedium komplett aus, kann es im laufenden Betrieb ausgetauscht werden.

Tipp

Sie können die Vorteile von Non-Volatile Memory Express für Ihr eigenes Webprojekt nutzen. Buchen Sie dafür den IONOS Dedicated Server mit NVMe.

Wo kommt NVMe zum Einsatz?

NVM Express wird heutzutage in fast allen Rechnersystemen eingesetzt. Von Laptop- und Desktop-Rechnern über Server und Workstations bis hin zu Supercomputern: Überall werden schnelle, über NVMe angebundene SSD-Speichermedien verbaut. Dabei kommen verschiedene Formfaktoren zum Einsatz, u. a.:

  • PCI-Express-Karten
  • M.2-Karten
  • SFF- (Small Form Factor) oder 2,5"-Geräte mit U.2-Anschluss
  • E1 oder NGSFF (Next Generation Small Form Factor)

Eine interessante Weiterentwicklung des Non-Volatile-Memory-Express-Protokolls ist NVMe over Fabrics. Dabei wird statt einer direkten physischen Verbindung eine Netzwerkverbindung genutzt, um NVMe-Festkörperspeicher über das Netzwerk anzusprechen. So lassen sich Verbünde von SSD-Medien realisieren, die enorme Speichermengen mit geringen Zugriffszeiten zur Verfügung stellen.

Fazit

Mit Non-Volatile Memory Express steht ein für die Ansprüche moderner Festkörperspeicher optimiertes Protokoll zur Verfügung, das sich de facto bereits als Standard für SSDs durchgesetzt hat.