Flash-Speicher etabliert sich zunehmend auch im Enterprise-Umfeld. Auf Grund des hohen Preises setzte man Enterprise-SSDs bisher fast nur als Cache-Bereich für File- oder Storage-Systeme ein. Der rapide Preisverfall und die zunehmende Kapazität von Flash-Speicher macht diese Technologie nun zunehmend für den flächendeckenden Einsatz im Rechenzentrum interessant. Flash-Speicher ist sehr viel schneller als drehende Festplatten, sowohl in der Bandbreite als insbesondere auch in der Antwortzeit: Es muss kein Schreib-/Lesekopf mehr mechanisch positioniert werden, was bei herkömmlichen Festplatten die größte Performance-Bremse darstellt. Mit dem schnellem Flash-Speicher wird nun die Schnittstelle zum Datenaustausch der Engpass: SAS und SATA wurden spezifiziert für herkömmliche Festplatten. Für SSDs ist die Schnittstelle zwar grundsätzlich geeignet. Flash-Module könnten aber noch sehr viel schneller angesprochen werden, als das die aktuellen Spezifikationen der SAS- und SATA-Schnittstellen zulassen.
Abhilfe bringt hier NVMe (Non Volattile Memory Express). Flash-Module werden direkt an den PCI-Bus angeschlossen und per PCIe angesprochen. Neben höherer Bandbreite und geringerer Latenz ist damit auch die Strecke zer, welche die Daten vom Flash-Modul zum Hauptspeicher und in die CPU zurücklegen müssen. Neben dem Performance-Gewinn beim Datenzugriff bekommt man mit NVMe nebenbei auch noch einen Performance-Gewinn in der Datenverarbeitung. PCIe und NVMe sind im wesentlichen Protokoll-Definitionen für den Datenaustausch. Sie liefern keine Definition der physischen Ausprägung des Anschlusses. Es gibt für Anbieter also eine gewisse Freiheit für NVMe-Steckverbinder.
Mit NVMe sind neue Anschluss-Typen in die Schnittstellenlandschaft eingezogen, man liest in dem Zusammenhang sehr häufig von U.2 und M.2.
DIE U.2-SCHNITTSTELLE
Zum Anschluss von SAS- und SATA-Festplatten in Servern gibt es einen Stecker, der häufig als SFF-8639 bezeichnet wird. Der wird typischerweise für 2,5″-Festplatten verwendet. Soll der Stecker ausschließlich SATA-Platten aufnehmen, verhindert eine Nase das Einstecken von SAS-Platten. Die Verbindungen für Strom und einige Kontroll-Signale sind für SATA- und SAS-Platten an der selben Stelle. Für die eigentliche Datenübertragung werden aber für SATA andere Pins im Steckergehäuse verwendet, als für SAS.
Das Steckergehäuse hat noch Platz für weitere Kontakte. Diesen Platz nutzen Hersteller, um auch NVMe-Devices anzusprechen. Strom und einige Kontroll-Signale sind identisch zur SATA-/SAS-Belegung Die Signalübertragung für das PCIe-Protokoll passiert über zusätzliche Pins, die ausschließlich für NVMe genutzt werden. Können an einem Port sowohl SSDs als auch NVMe-Devices eingesteckt werden, spricht Supermicro von einem Hybrid Port.
Diese Variante des Anschlusses — alle Pins angeschlossen und Verwendung sowohl für SATA/SAS als auch für NVMe möglich — wird als U.2 bezeichnet.
DIE M.2-SCHNITTSTELLE
Die maximal mögliche Informationsdichte ist bei Flash-Modulen sehr viel höher als bei herkömmlichen magnetisch beschichteten Festplatten. Das bedeutet, bei gleicher Speicherkapazität ist ein Flash-Modul ein vielfaches kleiner als eine Festplatte. Im Zuge weiterer Miniaturisierung ist es daher naheliegend, für NVMe-Module auf eine andere, platzsparendere Steckverbindung zu wechseln. Nach dem NVMe als Protokoll PCIe spricht, liegt die Verwendung von PCIe-Steckkarten nah. Diese Variante ist weit verbreitet, zumal so gut wie jedes Server-Mainboard PCIe-Steckplätze bereits on board hat. Eine zweite, noch mal deutlich kleinere Variante kommt von Intel. Diese Steckverbindung ist als M.2 bekannt, manch mal wird sie auch als NGFF bezeichnet.
Derzeit ist M.2 bis maximal 4 PCIe-Lanes spezifiziert und erreicht damit Bandbreiten bis 32 Gbit/s (zum Vergleich: SATA3 liefert 6 Gbit/s) NVMe bietet damit etwa fünfmal mehr Durchsatz als SATA3. Im Standard sind zahlreiche unterschiedliche Abmessungen für den Steckverbinder und das zugehörige Flash-Modul erlaubt. Aktuell sind ausschließlich Module mit 22mm Breite im Markt. Je nach Kapazität und verwendeten Flash-Chips sind die Module 42mm, 60mm, 80mm oder 110mm lang. Die Bezeichnung M.2 2260 weist auf ein M.2-Modul mit 22mm Breite und 60mm Länge hin. Die elektrischen Kontakte sind auf einer schmalen Seite (Stirnseite) des Moduls.
M.2-Module werden direkt auf dem Mainboard gesteckt und haben dort auch eine Befestigungsschraube. Dazu hat das Modul an der schmalen Seite gegenüber der Kontaktleiste mittig eine passende Einbuchtung. Viele Mainboards sind dafür vorbereitet, mindestens zwei unterschiedlich lange Module aufnehmen zu können. Beim Kauf eines Moduls sollte man deshalb auch auf die Einbaulänge achten, die einem das Mainboard vorgibt. Ein Modul darf einseitig oder zweiseitig bestückt sein. Auch hier gibt es verschiedene Varianten, maximal sind 1.5mm Bauhöhe je Seite erlaubt. Die Spezifikation des M.2-Verbinders erlaubt bis zu 60 Steckzyklen. Das erscheint auf den ersten Blick etwas wenig, aber NVMe-Module wird man im Enterprise-Bereich ähnlich selten austauschen wie Festplatten.
Der Steckverbinder an sich wird für viele verschiedene Anwendungen und Protokolle verwendet. Die Codierung erfolgt durch Aussparungen in der Kontakleiste bzw. Stege im Stecker. Für NVMe gebräuchlich ist der sog. Key M (5 Pins von links, PCIe 4 Lanes) und Key B (6 Pins von rechts, PCIe 2 Lanes). Aktuelle NVMe-Module kommen häufig mit M+B-Codierung, haben also zwei Kerben in der Kontaktleiste. Das bedeutet gleichzeitig, dass ein Modul je nach Mainboard vielleicht nur mit zwei PCIe-Lanes angesteuert wird, und darüber nur noch 16 Gbit/s Durchsatz liefern kann, obwohl das Modul an sich schneller sein könnte. Alle Varianten der Baugrößen, Bauhöhen und die unterschiedlichen Keys des M.2-Verbinders erläutert der entsprechende Artikel in der englischen Wikipedia.
WICHTIGE INFORMATIONEN
1.) Der M.2-Anschluss darf gemäß Spezifikation auch für SATA3 verwendet werden. Dafür gibt es im Handel natürlich auch auch passende Flashmodule. Diese sind i. d. R. deutlich billiger als das NVMe-Pendant. Diese Module sind deutlich kleiner und wesentlich langsamer als NVMe. Das SATA3-Protokoll liefert nur maximal 6 Gbit/s.
2.) NVMe darf nicht verwechselt werden mit NVDIMM. Bei letzterem können Flash-Module direkt in DIMM-Sockel auf dem Motherboard gesteckt werden. Das BIOS muss NVDIMM explizit unterstützen.
Dieser Artikel erschien im Original am 19. August 2016 im Boston-Blog.