Bei NVMe handelt es sich um ein Software-Protokoll zur Anbindung von nicht­flüch­ti­gen Mas­sen­spei­chern über die PCI-Express-Hardware-Schnitt­stel­le. Die Abkürzung NVMe steht dabei für Non-Volatile Memory Express, zu Deutsch „nicht­flüch­ti­ger Speicher Express“. Unter einem nicht­flüch­ti­gen (non-volatile) Speicher versteht man ein Spei­cher­me­di­um, dessen Inhalte nicht verloren gehen, wenn der Strom ab­ge­schal­tet wird.

NVMe schafft es, trotz der dau­er­haf­ten Spei­che­rung der Daten schnelle Zugriffe zu er­mög­li­chen. Wie funk­tio­niert die Technik und welche Vorteile bringt NVM Express noch mit sich?

Von der HDD zur SSD

Tra­di­tio­nell wurde zwischen dem flüch­ti­gen Haupt­spei­cher (Random Access Memory, RAM) eines Computers und einem nicht­flüch­ti­gen Mas­sen­spei­cher un­ter­schie­den. Während der RAM eines Computers beim Aus­schal­ten seine Inhalte verliert, bleiben die Inhalte des nicht­flüch­ti­gen Mas­sen­spei­chers erhalten. Nach den in den An­fangs­jah­ren der Com­pu­ter­tech­no­lo­gie ein­ge­setz­ten Loch­kar­ten und den später weit ver­brei­te­ten Band­spei­cher­sys­te­men eta­blier­ten sich die ro­tie­ren­den Fest­plat­ten (engl. Hard Disk Drive, HDD) als Standard-Mas­sen­spei­cher.

Der Me­di­en­bruch zwischen Haupt­spei­cher und Fest­plat­te ging einher mit drastisch un­ter­schied­li­chen Zu­griffs­zei­ten. So lag die Zu­griffs­zeit auf se­quen­zi­ell im RAM ge­spei­cher­te Daten bei etwa einem Hun­derts­tel der Zeit, die benötigt wurde, um dieselbe Menge an Daten von einer ro­tie­ren­den Fest­plat­te zu lesen. Erst mit der weiten Ver­brei­tung von Mo­bil­ge­rä­ten und dem damit ein­her­ge­hen­den Aufkommen der Solid State Drives (SSD, dt. „Fest­kör­per­spei­cher“) wurde diese Dynamik auf­ge­bro­chen.

Mitt­ler­wei­le werden auch in Laptop- und Desktop-Computern haupt­säch­lich SSD verbaut, sodass man von einem durch­ge­hen­den Spei­cher­me­di­um sprechen kann: Vom Prozessor-Register über die L1- und L2-Caches bis zum SSD-Mas­sen­spei­cher erfolgt die Spei­che­rung der Daten komplett elek­tro­nisch, ohne be­weg­li­che Teile. Jedoch lief der Da­ten­zu­griff auf SSDs noch immer über für ro­tie­ren­de HDDs op­ti­mier­te Pro­to­kol­le wie Serial ATA (SATA).

Wie funk­tio­niert NVM Express?

Mit NVM Express wurde erstmalig ein Protokoll speziell für nicht­ro­tie­ren­de, SSD-basierte Mas­sen­spei­cher ent­wi­ckelt. Es handelt sich dabei um den Nach­fol­ger der alt­ein­ge­ses­se­nen Software-Schnitt­stel­len SATA und AHCI. Gerade SATA, das an­fäng­lich für die interne Kom­mu­ni­ka­ti­on mit SSDs genutzt wurde, ent­wi­ckel­te sich schnell zum Fla­schen­hals: Moderne SSDs konnten einen viel höheren Da­ten­durch­satz leisten, als ihn das SATA-Protokoll erlaubte. Mit der nun eigens für SSD-Medien op­ti­mier­ten Non-Volatile-Memory-Express-Schnitt­stel­le können SSDs nun ihr volles Potenzial aus­schöp­fen.

Um SSD-Mas­sen­spei­cher auf dem Mainboard an­zu­bin­den, wird bevorzugt der bereits be­stehen­de Standard PCI Express (Pe­ri­phe­ral Component In­ter­con­nect Express, PCIe) genutzt. Über PCIe werden bei­spiels­wei­se bereits Gra­fik­kar­ten und andere Hardware an­ge­bun­den. Bei PCIe handelt es sich um eine physische Schnitt­stel­le – NVMe bildet als Protokoll ein logisches Pendant dazu, optimiert für nicht­flüch­ti­ge Fest­kör­per­spei­cher. Somit reicht ein einzelner Treiber aufseiten des Be­triebs­sys­tems, um sämtliche mit NVM Express kom­pa­ti­blen SSDs un­ter­schied­li­cher Her­stel­ler an­zu­spre­chen.

Be­fehls­satz des NVM-Express-Pro­to­kolls

Ein Software-Protokoll dient dazu, die digitale Kom­mu­ni­ka­ti­on, also den Austausch von Daten, zu struk­tu­rie­ren. Dazu definiert das Protokoll einen Be­fehls­satz, der die zwischen den Kom­mu­ni­ka­ti­ons­part­nern genutzte Sprache festlegt. Das Non-Volatile-Memory-Express-Protokoll kommt mit einem schlanken, nur 13 Befehle um­fas­sen­den Be­fehls­satz aus.

So sind nur zehn Admin-Befehle zwingend vor­ge­se­hen:

  • Create I/O Sub­mis­si­on Queue
  • Delete I/O Sub­mis­si­on Queue
  • Create I/O Com­ple­ti­on Queue
  • Delete I/O Com­ple­ti­on 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 Com­pu­ter­tech­no­lo­gie für Input/Output, zu Deutsch „Eingabe/Ausgabe“.

Kommando-Er­stel­lung und -Ver­ar­bei­tung mit Non-Volatile Memory Express

Eine moderne Fest­plat­te verfügt über mehrere ro­tie­ren­de Scheiben. Pro Scheibe kommen für ge­wöhn­lich zwei Schreib-Lese-Köpfe zum Einsatz. Die Schreib-Lese-Köpfe sind allesamt an einem einzigen, be­weg­li­chen Schreib-Lese-Arm befestigt. Durch diese physische Anordnung bedingt sind weder HDDs noch die dafür ent­wi­ckel­ten Pro­to­kol­le für den mas­sen­haft par­al­le­len Zugriff auf Daten optimiert.

Das alt­ge­dien­te SATA-Protokoll verfügt über nur eine Kommando-War­te­schlan­ge (Command Queue), um hin­ter­ein­an­der an die Fest­plat­te ge­rich­te­te Befehle aus­zu­füh­ren. Das Non-Volatile-Memory-Express-Protokoll hingegen un­ter­stützt 64.000 War­te­schlan­gen, mit bis zu 64.000 Befehlen pro Schlange. Dadurch wird eine hohe Par­al­le­li­tät der Da­ten­zu­grif­fe ge­währ­leis­tet, was zu hohen Da­ten­durch­satz­ra­ten und geringen Latenzen führt.

Anders als HDDs lesen und schreiben SSDs Daten nicht se­quen­zi­ell; der Da­ten­zu­griff auf SSDs erfolgt wie beim Random-Access-Haupt­spei­cher an jeder Position glei­cher­ma­ßen schnell. Die Er­stel­lung und Ver­ar­bei­tung der Protokoll-Kommandos mit NVMe läuft nach dem folgenden Muster ab:

  1. Host über­mit­telt I/O Sub­mis­si­on Queues
  2. Con­trol­ler ruft I/O Sub­mis­si­on Queues ab
  3. Con­trol­ler führt I/O Sub­mis­si­on Queues aus
  4. Con­trol­ler über­mit­telt I/O Com­ple­ti­on Queues
  5. Host empfängt I/O Com­ple­ti­on Queues

Welche Vorteile hat NVMe?

Die Vorteile von NVM Express sind bedingt durch die Nutzung des exis­tie­ren­den PCIe-Standards und die Op­ti­mie­rung des Pro­to­kolls für moderne Fest­kör­per­spei­cher. Der schlanke, für die Ar­beits­wei­se von SSDs zu­ge­schnit­te­ne Protokoll-Kom­man­do­satz führt zu geringem Overhead beim Lesen und Schreiben von Daten. Durch die direkte Nutzung von PCIe kann auf Pro­to­koll­über­set­zer ver­zich­tet werden, was wiederum geringere Latenzen bedingt.

Durch die massiv parallel ver­ar­bei­te­ten Kommando-War­te­schlan­gen können über NVMe an­ge­bun­de­ne SSDs ihr volles Leis­tungs­po­ten­zi­al entfalten. Im pro­fes­sio­nel­len Hosting- und High-Per­for­mance-Computing-Umfeld lassen sich NVMe-Geräte ferner über Multi-Pathing anbinden. Dabei wird innerhalb der Rechner-In­fra­struk­tur ein NVMe-Gerät über mehrere, parallele Da­ten­lei­tun­gen an­ge­schlos­sen. Fällt eine Leitung aus, bleibt das Gerät er­reich­bar. Ferner un­ter­stüt­zen NVMe-Geräte Hot Swapping; fällt ein Spei­cher­me­di­um komplett aus, kann es im laufenden Betrieb aus­ge­tauscht werden.

Tipp

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

Wo kommt NVMe zum Einsatz?

NVM Express wird heut­zu­ta­ge in fast allen Rech­ner­sys­te­men ein­ge­setzt. Von Laptop- und Desktop-Rechnern über Server und Work­sta­tions bis hin zu Su­per­com­pu­tern: Überall werden schnelle, über NVMe an­ge­bun­de­ne SSD-Spei­cher­me­di­en verbaut. Dabei kommen ver­schie­de­ne Form­fak­to­ren 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 Ge­ne­ra­ti­on Small Form Factor)

Eine in­ter­es­san­te Wei­ter­ent­wick­lung des Non-Volatile-Memory-Express-Pro­to­kolls ist NVMe over Fabrics. Dabei wird statt einer direkten phy­si­schen Ver­bin­dung eine Netz­werk­ver­bin­dung genutzt, um NVMe-Fest­kör­per­spei­cher über das Netzwerk an­zu­spre­chen. So lassen sich Verbünde von SSD-Medien rea­li­sie­ren, die enorme Spei­cher­men­gen mit geringen Zu­griffs­zei­ten zur Verfügung stellen.

Fazit

Mit Non-Volatile Memory Express steht ein für die Ansprüche moderner Fest­kör­per­spei­cher op­ti­mier­tes Protokoll zur Verfügung, das sich de facto bereits als Standard für SSDs durch­ge­setzt hat.

Zum Hauptmenü