Non-Volatile Memory Express

Mehr Performance bei Flash-Speicher mit NVMe

Innere Funktionsweise von NVMe

Enterprise-I/O-Anfragen laufen lange Zeit durch die Hardware-Infrastruktur wie NAND-Flash-ICs, Flash-Controller, Host-Bus-Controller, da sie nur kurz im Software-I/O-Stack verarbeitet werden. NVMe arbeitet mit einem rationalisierten Stack, der die Stack-Latenzzeiten reduziert und bedeutend mehr Befehle per Warteschlange ausführen kann als andere Legacy-Protokolle. Das SAS-Protokoll kann 254 Befehle pro Warteschlange verarbeiten, während SATA nur 32 unterstützt. NVMe unterstützt 64.000 Befehle pro Warteschlange und 64.000 Warteschlangen, womit ein extrem schneller Hardwarebetrieb möglich ist.

Flinker: NVMe arbeitet mit einem rationalisierten Stack, der die Stack-Latenzzeiten reduziert und bedeutend mehr Befehle per Warteschlange ausführen kann als andere Legacy-Protokolle
Flinker: NVMe arbeitet mit einem rationalisierten Stack, der die Stack-Latenzzeiten reduziert und bedeutend mehr Befehle per Warteschlange ausführen kann als andere Legacy-Protokolle
Foto: NVM Express

In einem Test von Intel reduzierte der Linux-NVMe-Software-Stack im Vergleich zu einem SCSI/SAS-Software-Stack den Software-Overhead um mehr als 50 Prozent (von 6 auf 2,8 µs) und die Anzahl der Befehlszyklen von 19.500 auf 9.100.

NVMe versus AHCI

Das "Advanced Host Controller Interface" AHCI wurde im Jahr 2004 für rotierende Medien mit hohen Latenzzeiten entwickelt und entspricht nicht mehr den heutigen Anforderungen von Permanentspeichern. Daher kann AHCI die SSD-Technologie nicht voll nutzen. NVMe ist für PCIe-SSDs sowie zukünftige Speichertechnologien ausgelegt und bietet dank rationalisiertem Storage Stack niedrige Latenzzeiten. Es können ohne Lesevorgänge Befehle erstellt werden, da AHCI vier nicht-zwischengespeicherte Registerlesevorgänge pro Befehl erfordert, sodass circa 2,5 µs zur Latenzzeit hinzukommen.

Die Hauptvorteile von NVMe im Vergleich zu AHCI umfassen:

NVMe vs. AHCI

Leistungsfähigkeit

NVMe

ACHI

Latenz

2,8 µs

6,0 µs

Max. Warteschlangentiefe / Befehle pro Warteschleife

64.000 / 64.000

1 / 32

Multicore-Unterstützung

Ja

Limitiert

Effizienz für 4-KByte-Befehle

Befehlsparameter erfordern einen 64 B-Abruf

Befehlsparameter erfordern zwei serialisierte Host-DRAM-Abrufe

Bei NVMe ist durch die Unterstützung von etlichen Warteschlangen und hohen Warteschlangentiefen gewährleistet, dass die CPU voll ausgelastet werden kann und die I/O-Situation sich entlastet.