NVMe (non-Volatile Memory Express) ist eine Host-Controller-Schnittstelle und ein Speicherprotokoll, das entwickelt wurde, um die Übertragungsgeschwindigkeit von Daten zwischen Unternehmens- und Client-Systemen und Solid-State-Laufwerken (SSDs) über den Hochgeschwindigkeits-PCIe-Bus (Peripheral Component Interconnect Express) eines Computers zu beschleunigen.Als die Solid-State-Technologie zum bevorzugten Medium auf dem Speichermarkt wurde, wurde schnell klar, dass bestehende Schnittstellen und Protokolle – insbesondere Serial Advanced Technology Attachment (SATA) und Serial Attached SCSI (SAS) – nicht geeignet waren, insbesondere in Rechenzentrumsumgebungen. Die Arbeit an einem neuen Protokoll, das speziell für NAND-Flash entwickelt wurde, begann bereits 2007, wobei Intel die Führung übernahm. Anfang 2011 wurde die erste NVMe-Spezifikation veröffentlicht – fast 100 Technologieunternehmen waren an der Entwicklung beteiligt.Die NVMe-Spezifikation definiert eine Registerschnittstelle, einen Befehlssatz und eine Sammlung von Funktionen für PCIe-basierte SSDs mit den Zielen hoher Leistung und Interoperabilität über eine breite Palette von NVM-Subsystemen hinweg. Die NVMe-Spezifikation legt nicht das ultimative Nutzungsmodell wie Solid-State-Speicher, Hauptspeicher, Cache-Speicher oder Backup-Speicher fest.NVMe bietet eine Alternative zum Small Computer System Interface (SCSI) -Standard und dem ATA-Standard zum Verbinden und Übertragen von Daten zwischen einem Hostsystem und einem peripheren Zielspeichergerät. Der ATA-Befehlssatz für SATA-SSDs und der SCSI-Befehlssatz für SAS-SSDs wurden zu einer Zeit entwickelt, als Festplatten (HDDs) und Band die primären Speichermedien waren. NVMe wurde für den Einsatz mit schnelleren Medien entwickelt.
Die Hauptvorteile von NVMe-basierten PCIe-SSDs gegenüber SAS-basierten und SATA-basierten SSDs sind eine reduzierte Latenz im Host-Software-Stack, höhere Ein- / Ausgabevorgänge pro Sekunde (IOPS) und möglicherweise ein geringerer Stromverbrauch, abhängig vom Formfaktor und der Anzahl der verwendeten PCIe-Lanes.
Das NVMe-Protokoll kann SSDs unterstützen, die verschiedene Arten von nichtflüchtigem Speicher verwenden, einschließlich NAND-Flash und der von Intel und Micron Technology entwickelten 3D XPoint-Technologie. NVMe-Referenztreiber sind für eine Vielzahl von Betriebssystemen (OSes) verfügbar, einschließlich Windows und Linux.
NVMe ermöglicht nicht nur eine schnellere und effizientere Ausführung bestehender Anwendungen; es ist tatsächlich ein Schlüsselfaktor für neuere und sich entwickelnde Technologien und Anwendungen wie das Internet der Dinge (IoT), künstliche Intelligenz (KI) und maschinelles Lernen (ML), die alle von der geringen Latenz und der hohen Leistung von NVMe-Attached Storage profitieren können.
Funktionsweise von NVMe
NVMe ordnet E/A-Befehle und -Antworten (Input/Output) dem gemeinsam genutzten Speicher in einem Hostcomputer über die PCIe-Schnittstelle zu. Die NVMe-Schnittstelle unterstützt parallele E / A mit Multicore-Prozessoren, um einen hohen Durchsatz zu ermöglichen und Engpässe bei der Zentraleinheit (CPU) zu verringern.
NVMe bietet einen schlankeren Befehlssatz zur Verarbeitung einer E / A-Anforderung als die SCSI- und ATA-Befehlssätze. NVMe benötigt weniger als die Hälfte der CPU-Anweisungen als der SCSI-Befehlssatz bei SAS-Geräten und der ATA-Befehlssatz bei SATA-Laufwerken.
NVMe SSDs vs. SATA SSDs
SATA ist ein Kommunikationsprotokoll, das für Computer zur Interaktion mit Festplattenspeichersystemen entwickelt wurde. SATA wurde im Jahr 2000 von einer Gruppe großer Technologieunternehmen eingeführt und löste Parallel ATA ab und wurde schnell zum allgegenwärtigen Speichersystemprotokoll für Computer, die von Laptops bis zu Servern reichen. Im Laufe der Jahre wurden Überarbeitungen der Spezifikation vorgenommen, die derzeit mit 6 Gbit / s und einem effektiven Durchsatz von bis zu 600 Mbit / s ausgeführt wird.Obwohl sie für die Festplattentechnologie mit mechanisch rotierenden Platten und aktuatorgesteuerten Lese- / Schreibköpfen entwickelt wurden, wurden frühe SSDs mit SATA-Schnittstellen vermarktet, um das bestehende SATA-Ökosystem zu nutzen. Es war ein praktisches Design und trug zur Beschleunigung der SSD-Einführung bei, aber es war und ist nicht die ideale Schnittstelle für NAND-Flash-Speichergeräte und wurde zunehmend als Systemengpass angesehen.
Entwickelt für flash, NVMe der geschwindigkeit und niedrige latenz lassen SATA in die staub, und NVMe ermöglicht für viel höhere speicher kapazitäten in kleinere form faktoren wie M.2. Im Allgemeinen übertreffen NVMe-Leistungsparameter die von SATA um das Fünffache oder mehr.SATA mag mit einer längeren Historie und niedrigeren Implementierungskosten etablierter sein als NVMe, aber es ist eindeutig die Festplattentechnologie, die auf modernere Speichermedien umgerüstet wurde.
NVMe SSDs vs. SAS SSDs
NVMe unterstützt 64.000 Befehle in einer einzigen Nachrichtenwarteschlange und maximal 65.535 E/A-Warteschlangen. Im Gegensatz dazu unterstützt die Warteschlangentiefe eines SAS-Geräts normalerweise bis zu 256 Befehle und ein SATA-Laufwerk bis zu 32 Befehle in einer Warteschlange.
Allerdings sind NVMe-basierte PCIe-SSDs derzeit teurer als SAS- und SATA-basierte SSDs gleicher Kapazität; obwohl, dass Delta verengt. Außerdem verbrauchen High-End-Enterprise-NVMe-SSDs möglicherweise mehr Strom als SAS- oder SATA-SSDs. Die SCSI Trade Association behauptet, dass die ausgereifteren SAS-SSDs zusätzliche Vorteile gegenüber NVMe-PCIe-SSDs bieten, wie z. B. größere Skalierbarkeit, Hot-Pluggability und bewährte Failover-Funktionen. NVMe PCIe SSDs können auch ein Leistungsniveau bieten, das viele Anwendungen nicht benötigen.
Geschichte und Entwicklung von NVM Express
Die Arbeitsgruppe Non-Volatile Memory Host Controller Interface (NVMHCI) begann 2009 mit der Entwicklung der NVMe-Spezifikation und veröffentlichte die Version 1.0 am 1. März 2011. Die 1.Die Spezifikation umfasste die Warteschlangenschnittstelle, den NVM-Befehlssatz, den Verwaltungsbefehlssatz und Sicherheitsfunktionen.
Die NVMHCI-Arbeitsgruppe, allgemein bekannt als NVM Express Workgroup, hat am Okt. ein Update der NVMe-Spezifikation veröffentlicht. 11, 2012. NVMe 1.1 Unterstützung für SSDs mit mehreren PCIe-Ports hinzugefügt, um Multipath-E / A und Namespace-Sharing zu ermöglichen. Weitere neue Funktionen waren autonome Stromzustandsübergänge während der Leerlaufzeit, um den Energiebedarf zu senken, und Reservierungen, die es zwei oder mehr Hosts ermöglichen, den Zugriff auf einen gemeinsam genutzten Namespace zu koordinieren, um die Fehlertoleranz zu verbessern.
Die NVM Express Workgroup veranstaltete im Mai 2013 ihr erstes Plugfest, um es Unternehmen zu ermöglichen, die Konformität ihrer Produkte mit der NVMe-Spezifikation zu testen und die Interoperabilität mit anderen NVMe-Produkten zu überprüfen.
Die NVM Express Arbeitsgruppe wurde im März 2014 unter dem Namen NVM Express Organisation gegründet. Zu den damaligen Gründungsmitgliedern gehörten Cisco Systems, Dell, EMC, die HGST-Tochtergesellschaft von Western Digital, Intel, LSI, Micron Technology, NetApp, Oracle, PMC-Sierra, Samsung Electronics, SanDisk und Seagate Technology.
Die NVM Express Organisation wurde später einfach als NVM Express Inc. bekannt. Die gemeinnützige Organisation hat mehr als 100 Technologieunternehmen als Mitglieder.
Die NVMe 1.2-Spezifikation wurde am Nov. 3, 2014, mit Verbesserungen wie Unterstützung für Live-Firmware-Updates, verbessertes Power-Management und die Option für End-to-End-Datenschutz.
Am Nov. 17, 2015, die NVM Express-Organisation hat die 1.0-Version der NVM Express Management Interface (NVMe-MI) ratifiziert, um eine Architektur und einen Befehlssatz für die Verwaltung eines nichtflüchtigen Speichersubsystems außerhalb des Bandes bereitzustellen. Mit NVMe-MI kann ein Management Controller Aufgaben wie die Erkennung von SSD-Geräten und -Funktionen, die Integritäts- und Temperaturüberwachung sowie unterbrechungsfreie Firmware-Updates ausführen. Ohne NVMe-MI verließen sich IT-Manager im Allgemeinen auf proprietäre, herstellerspezifische Verwaltungsschnittstellen, um die Verwaltung von PCIe-SSDs zu ermöglichen.
NVMe 1.3 Funktionsverbesserungen
NVM Express veröffentlicht NVMe 1.3 im Juni 2017. Die Highlights konzentrieren sich auf Sanitize Operations, ein neues Framework, das als Direktiven und Virtualisierungsverbesserungen bekannt ist.
Bei einem Bereinigungsvorgang werden alle Benutzerdaten im NVMe-Subsystem so geändert, dass eine Wiederherstellung „aus keinem Cache, nichtflüchtigen Medium oder Controller-Speicherpuffer“ möglich ist, so ein NVM Express-Referenzblatt. Bereinigungsvorgänge werden empfohlen, wenn eine SSD zurückgezogen oder für einen neuen Anwendungsfall wiederverwendet wird. Sanitize-Modi umfassen Low-Level-Blocklöschung auf NAND-Medien, Crypto-Erase zum Ändern eines Medienverschlüsselungsschlüssels und Überschreiben.
Das NVMe-Framework definiert einen Mechanismus für den Datenaustausch zwischen einem Host und einem NVMe-Subsystem. Dies ermöglicht das Tagging von Befehlen pro E / A und gibt IT-Administratoren die Möglichkeit, berichtspflichtige Attribute und Einstellungen zu konfigurieren.
Die erste Verwendung von Direktiven ist eine Funktion namens Streams zur Optimierung der Datenplatzierung, um die Ausdauer und Leistung von NAND-SSDs zu steigern. Traditionell müssen große Datenblöcke zuerst gelöscht werden, bevor neue Daten auf die SSD geschrieben werden können.
Mit der Streams-Funktion kann ein Host einen „Stream-Bezeichner“ verwenden, um die spezifischen logischen Speicherblöcke anzugeben, die zu einer Gruppe zugeordneter Daten gehören. Dadurch kann ein Lese- oder Schreibvorgang mit verwandten Daten versehen werden, die an anderen Orten gespeichert sind.
Virtualisierungsverbesserungen definieren, wie NVMe-Flash in einer gemeinsam genutzten Speicherumgebung verwendet werden kann, in der sowohl physische als auch virtuelle Controller vorhanden sind, einschließlich primärer Speichercontroller und sekundärer Speichercontroller. NVM Express sagte, das Ziel sei es, Entwicklungsteams zu ermöglichen, eine bestimmte SSD einer bestimmten virtuellen Maschine (VM) zuzuweisen.
NVMe 1.4 Funktionsverbesserungen
NVMe 1.4 wurde im Juli 2019 eingeführt. Diese neueste Version enthält eine Reihe von Verbesserungen und neuen Funktionen, darunter:
- Rebuild Assist verbessert die Datenwiederherstellung und verbessert die Datenmigration.
- Das persistente Ereignisprotokoll verwaltet einen detaillierten Laufwerksverlauf, der zum Debuggen und Ermitteln der Ursachen von Problemen verwendet werden kann.
- NVM-Sets und IO-Determinismus verbessern Performance und Quality of Service (QoS).
- Asymmetrischer Namespace-Zugriff (ANA) verbessert Multipathing für hohe Verfügbarkeit.
- Host Memory Buffer (HMB) reduziert die Latenz und unterstützt das SSD-Design.
- Die persistente Speicherregion (Persistent Memory Region, PMR) ermöglicht es Hostsystemen, direkt in den dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) zu lesen und zu schreiben, den SSDs zusammen mit ihrem Core Flash enthalten, der hauptsächlich für das Caching verwendet wurde.
Die neuen Funktionen erfordern, dass Hersteller von Flash-Laufwerken ihre Produkte aktualisieren, um die Verbesserungen zu integrieren. Neue Treiber werden auch für Betriebssysteme benötigt.
NVMe-Formfaktoren und -standards
Die Notwendigkeit einer Speicherschnittstelle und eines Speicherprotokolls, um das Leistungspotenzial von NAND-Flash in Unternehmensumgebungen besser auszuschöpfen, war der Hauptimpuls für die Entwicklung der NVMe-Spezifikation. Die Neugestaltung des Verbindungsstandards öffnete jedoch die Türen für verschiedene Arten von Schnittstellenimplementierungen, die innerhalb der Grenzen der neuen Spezifikation bleiben und gleichzeitig eine Vielzahl von Implementierungsoptionen bieten konnten.In kurzer Zeit entstanden eine Reihe von Flash-Formfaktoren, die den NVMe-Spezifikationen entsprachen, darunter konventionelle Add-In-Karten (AIC) für den PCIe-Bus und neue Formfaktoren für SSDs, die als M.2 und U.2 bezeichnet werden.In:
- AIC. Der AIC-Formfaktor ermöglicht es Herstellern, ihre eigenen Karten zu erstellen, die in den PCIe-Bus geschoben werden, ohne sich Gedanken über Speicherschachtdesigns oder ähnliche Einschränkungen machen zu müssen. Die Karten sind häufig für spezielle Anwendungsfälle ausgelegt und können zusätzliche Prozessoren und andere Chips enthalten, um die Leistung des Festkörperspeichers zu verbessern.
- M.2. Das M.Der Formfaktor 2 wurde entwickelt, um die kompakte Größe und die geringe Wärmeabfuhr von NAND Flash zu nutzen. Daher sollen M.2-Geräte nicht in herkömmliche Laufwerksschachtfächer passen, sondern in viel kleineren Räumen eingesetzt werden. M.2 SSDs werden oft als etwa so groß wie ein Kaugummi beschrieben und sind 22 mm breit und im Allgemeinen 80 mm lang, obwohl einige Produkte länger oder kürzer sein können.
- U.2. Im Gegensatz zum M.2-Formfaktor wurden U.2-SSDs so konzipiert, dass sie in vorhandene Speicherschächte passen, die ursprünglich für Standard-SATA- oder SAS-Geräte vorgesehen waren. U.2 SSDs sehen diesen älteren Medien sehr ähnlich, da sie normalerweise die 2,5-Zoll- oder 3,5-Zoll-Gehäuse verwenden, die für Festplatten bekannte Gehäuse sind. Die Idee war natürlich, es so einfach wie möglich zu machen, die NVMe-Technologie mit so wenig Reengineering wie möglich zu implementieren.Ein weiterer, weniger weit verbreiteter NVMe-Formfaktor ist der Enterprise and data Center SSD Form Factor (EDSFF). Es wird von wichtigen Akteuren der Speicherindustrie wie Intel, Dell EMC, Hewlett Packard Enterprise (HPE), Lenovo, Samsung und anderen unterstützt. Das Ziel von EDSFF ist es, Speichersystemen der Enterprise-Klasse eine höhere Leistung und Kapazität zu bieten. Das vielleicht bekannteste Beispiel für EDSFF-Flash ist Intels E1.L (lang) und E1.S (kurz) Flash-Geräte, die in dem ursprünglich als „Lineal“ -Formfaktor bezeichneten Format bereitgestellt werden.
NVMe über Fabrics
NVM Express Inc. am 5. Juni 2016 wurde die Version 1.0 der Spezifikation NVMe over Fabrics (NVMe-oF) veröffentlicht. NVMe-oF wurde entwickelt, um die Vorteile von NVMe mit hoher Leistung und geringer Latenz auf Netzwerkstrukturen auszudehnen, die Server und Speichersysteme wie Fibre Channel (FC), Ethernet und InfiniBand verbinden.
Fabric-Transporte umfassen NVM-Of mit Remote Direct Memory Access (RDMA) und NVMe-Of, die dem FC zugeordnet sind. Eine technische Untergruppe von NVM Express Inc. arbeitete an NVMe-oF mit RDMA, und das T11-Komitee des International Committee for Information Technology Standards (INCITS) ist verantwortlich für die Entwicklung von NVMe over FC (FC-NVMe).
Die NVMe-Of-Spezifikation entspricht weitgehend der NVMe-Spezifikation. Einer der Hauptunterschiede zwischen NVMe-oF und NVMe ist die Methode zum Senden und Empfangen von Befehlen und Antworten. NVMe ist für den lokalen Gebrauch konzipiert und ordnet Befehle und Antworten über PCIe dem gemeinsam genutzten Speicher eines Computers zu. Im Gegensatz dazu verwendet NVMe over Fabrics ein nachrichtenbasiertes System zur Kommunikation zwischen dem Hostcomputer und dem Zielspeichergerät.
Das erklärte Designziel für NVMe-oF bestand darin, nicht mehr als 10 Mikrosekunden Latenz für die Kommunikation zwischen einem NVMe-Hostcomputer und einem mit dem Netzwerk verbundenen NVMe-Speichergerät hinzuzufügen, im Vergleich zu der Latenz, die mit einem NVMe-Speichergerät verbunden ist, das den PCIe-Bus eines lokalen Computers verwendet.