Blog: NVMe als Interface für PCI-basierte SSDs

Starnberg, 18. Juni 2013 – Non-Volatile Memory Host Controller - Standard für sehr hohe I/O-Leistung bei minimierten Kosten pro I/O/s/€/GB ...

Um was es hier geht: wurde bislang die hohe Latenz mechanischer Festplatten (Resultat: max. 150 - 200 IOPS pro HDD) durch den Einsatz von SSDs kompensiert, so taucht bei einer massiven Skalierung von Solid-State-Storage auf der Serverseite ein E/A-Flaschenhals auf: die Industrie-Standard-Schnittstelle SATA. SATA ist eine preiswerte Schnittstellen für hochkapazitative HDDs, wurde jedoch nicht für low-latency Flash-Drives entwickelt (erste Produkte bereits in 2002); sowohl der Protokoll-Overhead als auch die zur Verfügung stehende Bandbreite sprechen dagegen. Eine weitere Option neben FC und SAS im Enterprise-Segment ist deshalb PCIe für SSDs, unterstützt durch die rasche Zunahme von Caching-Applikationen im Host (bzw. Appliances auf x86 Serverbasis).

Speziell in der Kombination DRAM-SSDs mit PCIe kann damit gegenüber NAND Flash nochmals ein Leistungssprung erzielt werden; die Daten bleiben in dieser Konfiguration nach dem Server-RAM in der schnellen Hierarchie-Ebene und werden nicht durch weitere Interface-Latenzen ausgebremst. Aber auch als PCIe Flash – Variante ist die E/A-Leistung höher als bei extern über z.B. SATA angeschlossenen Flash-Arrays*.

Ursprünglich für Desktops-/Server entwickelt, wurde mit der zunehmenden Beliebtheit von NAND-Storage die Leistungsfähigkeit des PCIe-Bus erkannt, obwohl es sich hier per definition um kein Storage-Interface handelt. Nach und nach wurden von verschiedensten Entwicklern deshalb mehr speicherspezifische Funktionen wie RAID, Hot-Plug-Fähigkeit, End-to-End-Data Protection implementiert und aktuell befinden sich die verschiedensten FLASH-PCIe-Varianten am Markt. Die fehlende lineare Skalierung in der Leistung für schnellere FLASH-Memory-Module und eine mangelnde Standardisierung sind jedoch die Kehrseite dieser Entwicklung. PCIe-basierte Flash-Controller benötigen meist herstellerspezifische Treiber und sind auf den Einsatz bestimmter Konfigurationen hin begrenzt.

Ideal wäre es also, einen möglichst allgemein verbindlichen Standard (Treiber) zu besitzen, der unabhängig von herstellerspezifischen Implementierungen arbeitet und low-latency-Devices leistungsgerecht unterstützt. Der Vorschlag lautet NVM Express (NVMe = Non-Volatile Memory): Als skalierbares offenes Host-Controller-Interface wurde es im Designziel von einem hierzu gegründeten Industrie-Consortium bereits im März 2011 als Standard vorgeschlagen; gegenüber Betriebssystemen wie Linux oder Windows soll ein generischer NMVe-Driver zu allen hierzu kompatiblen Controllerchips fungieren. Es wird damit nur mehr ein Standard-NVM Express Treiber für Window-/Linux benötigt, um die Leistungsvorteile des Controllers für Flash voll auszuschöpfen.

Bei 4-KB Blockgröße unterstützt dieses Design in einzelnen vorgestellten Anbieterlösungen bereits 750.000 Reads -und 200.000 Write – IOPS. Bei Sequential Reads wurde eine Performance von max. 3 Gbyte/s (128-KB Blocksize) erreicht. Damit wird NAND-FLASH voll ausgereizt und die Schnittstelle ist nicht mehr der Performance-Engpass. Der neue Standard unterstützt auch Funktionen wie Verschlüsselung, Bootsupport sowie I/O-Virtualisierung für komplexere VM-Konfigurationen. Mehrere I/O-Karten können zusammengefasst werden, um entsprechend hohe Kapazitäten und Durchsatz zu erreichen.

Fazit: NVM Express ist eine Standardschnittstelle für SSDs mit direkter PCI-Express-Anbindung, die mit einem offenen, generischem Treiber unter verschiedenen Betriebssystemen funktioniert. FLASH Storage muss damit in Zukunft nicht mehr über die SATA-Schnittstelle mit dem Chipsatz verbunden werden, sondern direkt mit der PCIe-Schnittstelle. SATA Express hingegen enthält spezifische Funktionen, damit PCIe-SSDs in Multi-Threading-Umgebungen mit n-Core-CPUs leistungsoptimiert betrieben werden können.

NVMe stellt somit einen schnellen und standardisierter Ansatz für den Datenzugriff auf DRAM- und Flash-Storage-Systeme dar und wird – falls von allen wesentlichen Herstellern unterstützt - ein wichtiger Bestandteil einer leistungsfähigen Speicherarchitektur sein. In Verbindung mit hochgradig virtuellen Storage-/Server-Systemen bilden diese Infrastrukturelemente dann flexibel skalierbare Basistechnologien für Software-Defined-Architekturen und die ständig steigenden Anwendungsanforderungen innerhalb moderner Rechenzentren.    

http://nvmexpress.org   

Bildquelle: SNIA - NVMe: The next Generation Interface for Solid State Storage, 2012,

* Flash Industry Report IMEX Research