NVM Express

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
NVMe-Steckkarte für Serveranwendungen
Eine m.2-SSD in 80 mm Länge, die NVM Express unterstützt

NVM Express (kurz NVMe) ist eine erstmals im Jahr 2011 veröffentlichte Software-Schnittstelle, um SSD, also nichtflüchtige Massenspeicher (engl. nonvolatile memory, kurz NVM), über PCI Express zu verbinden, ohne dass dafür herstellerspezifische Treiber nötig wären. Sie soll besonders bei parallelen Zugriffen, wie sie bei Multithreading häufig vorkommen, die Geschwindigkeit erhöhen, indem die Latenz und der Overhead durch die Befehle verringert werden.[1]

NVMe ist damit bei den Massenspeicherschnittstellen in einer Reihe mit SCSI und Advanced Host Controller Interface zu nennen, da sie aus der Sicht des Computers generische Softwareschnittstellen sind, um unterschiedliche Massenspeicher ohne eigene Treiber anzusprechen.

Treibende Kraft hinter dem Standard ist Intel, daneben sind die Hersteller von Speicherlösungen wie NetApp, Dell, Cisco, EMC, Marvell und die Speicherhersteller SanDisk, Avago Technologies, Micron Technology, HGST, Samsung und Seagate involviert.

Ursprünglich wurde NVMe vornehmlich für Server entwickelt, mittlerweile wird die Technik auch bei Arbeitsstationen genutzt. Deshalb sind mittlerweile sehr unterschiedliche Bauformen von NVMe-Geräten erhältlich:

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


Vergleich AHCI und NVMe[2][Bearbeiten | Quelltext bearbeiten]

AHCI[Bearbeiten | Quelltext bearbeiten]

  • Die AHCI-Schnittstelle ist eine Schnittstelle zur Ansteuerung von SATA-Geräten über einen Controller oder Host-Bus-Adapter (HBA), also einen Bus-Übersetzer PCI(e) zu SATA, es ist damit immer eine Kommandoübersetzung enthalten, die die Latenzen vergrößert (der AHCI-Controller wird auch "Aggregation Point" genannt)
  • Der AHCI-Standard ist ein Softwarestandard für die Nutzung von SATA-Geräten, welche auf den noch älteren ATA-Geräten basieren, die ATA-Kommandos wurden deshalb in AHCI weiter benutzt, für SSD#s um ein Trimm-Kommando (Löschen) erweitert. Dieser Kommandosatz ist für Laufwerke (Magnetfestplatten oder optische Laufwerke) erdacht.
  • unterstützt (Native Command Queueing), die Umsortierung von Kommandostapeln durch das Gerät
  • Hotplug wird unterstützt, wenn das Gerät und die Verbinder dies unterstützten
  • je Controller sind maximal 32 Ports (Geräte) möglich
  • je 32 Kommandos pro Port in der "Command Table" (genannt "Slots") zu je 8 ATA Kommandos (genannt "Command List")
  • Die Geräte liefern Daten in Form von PRDT-Einträgen ("Physical Region Descriptor Table") an den Host zurück. Eine "command table" kann bis zu 65535 PRDT Einträge haben.
  • 6 oder 9 (NCQ) Register Read/Writes je Kommando erforderlich
  • ein Interrupt je Gerät und Transfer erforderlich / möglich

NVMe[Bearbeiten | Quelltext bearbeiten]

  • NVMe wurde für persistente Festkörperspeicher entwickelt mit einem neuen, für diese Geräteklasse (kleinen) Kommandosatz. Es wurde von vornherein darauf geachtet, ein sehr hohes Maß an Parallelität beim Zugriff auf NVMe-Geräte zu ermöglichen:
    • Je Zugriff wird ein IO Channel oder Command Submission Queue mit je einer Command Completion Queue definiert, 65535 Channels sind möglich
    • je Completion Queue ist ein Interrupt möglich / erforderlich
    • je IO Channel sind 65535 Einträge möglich
    • nur 2 Register "Writes" je Kommando erforderlich
  • NVMe-Geräte sind PCIe-Geräte, sie nutzen also direkt das PCIe-Protokoll und brauchen keine Protokollübersetzer, HBA oder Controller (auch "Endpoint" genannt)
  • Hotswapping wird über die PCIe-Funktionen realisiert
  • "NVMe Namespaces" sind als Partitionen eines physischen Gerätes definiert, die "IO Channels" hängen an einem Namespace
  • Multi-Pathing ist definiert

NVMe over Fabrics[Bearbeiten | Quelltext bearbeiten]

Eine Weiterentwicklung des NVMe-Standards ist NVMe over Fabrics (kurz NVMe-oF). Dieser Standard definiert zwischen NVMe-Gerät und Computer bzw. dem PCI-Express-Bus des Computers die Ebene eines Netzwerkverteilers (der "Fabric") und überträgt damit die Möglichkeit zum Aufbau eines Storage Area Network auf die NVMe-Geräte bzw. NVMe-Schnittstelle. [3]

Ähnliche Standards[Bearbeiten | Quelltext bearbeiten]

Überschneidungen gibt es mit folgenden Standards, welche die Steckverbinder definieren und elektrisch PCI-Express übernehmen:

  • mSATA - Hier ist der mechanische Stecker dem Mini-PCI-Express entliehen und kleiner als SATA.
  • M.2 - Nachfolger von mSATA mit nochmals verkleinertem Stecker, basierend auf PCI Express und NVMe[4]
  • U.2 - Nachfolger von M.2, erweitert um die Hot-Swap-Funktion
  • SATA Express, kurz SATAe, ist der aktuelle Nachfolger von SATA 6G, basiert auf PCI Express 3.0 und ist vornehmlich für Desktop-PCs gedacht. Bis auf den Stecker fast identisch zu M.2.

Weblinks[Bearbeiten | Quelltext bearbeiten]

 Commons: NVM Express – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Boi Feddern: Standard für PCI-Express-SSDs verabschiedet. In: heise online. 5. März 2011, abgerufen am 26. September 2015.
  2. NVMe and AHCI. Abgerufen am 16. Mai 2018.
  3. NVMe over Fabrics. Abgerufen am 16. Mai 2018.
  4. Lutz Labs: Samsung bringt neue M.2-SSDs mit NVMe. In: heise online. 22. September 2015, abgerufen am 27. September 2015.