Weißbuch

Aufbau von NVMe Over Fabrics mit BittWare FPGA-Lösungen

Übersicht

Seit der Einführung des Non-Volatile Memory Express (oder NVMe)-Protokolls haben die Kunden von Rechenzentren diese neue Technologie, die Speicheranwendungen eine höhere Leistung und geringere Latenzzeiten bietet, in großem Umfang übernommen (Gupta, 2018). Der Funktionsumfang von NVMe hat diese Technologie zur am schnellsten wachsenden Speicherlösung auf dem Markt gemacht. Bis 2021 prognostiziert die International Data Corporation, dass NVMe-basierte Speicherlösungen mehr als 50 % des Umsatzes im Zusammenhang mit der Lieferung von externen Primärspeichern generieren werden (Burgener, 2019).

BittWare bietet FPGA-Beschleunigungslösungen zur Implementierung grundlegender Hardware-Offloads (Komprimierung, Deduplizierung usw.) sowie anwendungsspezifischer Algorithmen, wie z. B. Anwendungen für maschinelles Lernen, die FPGAs für Inferenzen nutzen. Diese Mischung aus grundlegender und erweiterter Speicherbeschleunigung auf einem Leistungsniveau, das dem von NVMe entspricht, bezeichnen wir als Computational Storage. Unsere 250er-Produktreihe, einschließlich 250S+, 250-SoC und 250-U2, ist auf diesen Markt ausgerichtet.

Vor kurzem hat das NVMe-Konsortium eine Variante des Protokolls namens NVMe over Fabrics (NVMe-oF) eingeführt, um die Vorteile von NVMe über bestehende Netzwerkinfrastrukturen zu nutzen. Da in den Rechenzentren weiterhin eine Ausweitung des NVMe-Speichers vor Ort zu beobachten ist, können Remote-Benutzer mit NVMe-oF mit geringem Overhead auf disaggregierten Speicher zugreifen (Gibb, 2018). Dies erfordert die Implementierung eines speziellen Netzwerkstapels in der Hardware, um die NVMe-Vorteile der geringen Latenz und hohen Bandbreite zu erhalten.

Unsere Lösung verwendet ein FPGA mit On-Chip-ARM-Prozessor, den Xilinx Zynq MPSoC auf unserem 250-SoC-Board. Der FPGA fungiert als NVMe-oF-Controller, der von der CPU entlastet oder bei Verwendung des On-Chip-Prozessors sogar von der CPU entkoppelt ist. Durch die vollständige Implementierung der NVMe-Datenebene in die FGPA-Logik, einschließlich des Netzwerkprotokollstapels, erreichen wir niedrige Latenzzeiten und hohe Bandbreiten. Der ARM-Kern ist so konzipiert, dass die Steuerebene über Software abgewickelt wird, bei der Latenz und Bandbreite weniger ins Gewicht fallen. Diese Application Note beschreibt die Konfiguration des BittWare 250-SoC als NVMe-oF-Controller in einem JBOF.

Was ist NVMe über Fabrics

Das NVMe-oF-Protokoll nutzt die Hochgeschwindigkeits-SSD-Technologie und erweitert sie über einen lokalen Server oder ein Rechenzentrum hinaus.

NVMe-oF ermöglicht es dem Anwendungsentwickler, auf entfernte Speicherknoten in Netzwerken wie Fiber Channel, InfiniBand, RDMA (Remote Direct Memory Access) over Converged Ethernet (RoCE), iWARP und neuerdings TCP/IP zuzugreifen und dabei die Latenzzeit niedrig zu halten (typischerweise zwischen 10us für einen Cluster mit 100 NVMe-Laufwerken und 100 zusätzlichen Mikrosekunden für große Cluster). Kurz gesagt, an einer NVMe-oF-Transaktion sind ein Host und ein Target beteiligt; das Target ist der Server, der die NVMe-Blockspeichergeräte über das Netzwerk für den Zugriff des Host-Servers freigibt (Davis, 2018). Mit RDMAs können die Datenübertragungen zwischen Host und Ziel erfolgen, ohne dass die CPU die Transaktion abwickelt; stattdessen leiten dedizierte RNICs die Daten zwischen den Ressourcen mit geringen Auswirkungen auf die Rechenressourcen weiter, da der Teil der Hardware in der NIC die Transportschicht des Netzwerkstapels verwaltet.

NVMe host software flow
NVMe Transports block diagram

Warum FPGA für NVMe-oF verwenden?

Wenn Sie sich entscheiden, NVMe-OF in eine PCIe-Karte auszulagern, haben Sie grundsätzlich drei Möglichkeiten:

Erstens können Sie eine ASIC-Implementierung verwenden, was die kostengünstigste und latenzärmste Lösung wäre. ASICs erlauben es jedoch nicht, auch Algorithmen zur "rechnerischen Speicherung" auszulagern. ASICs sind außerdem in der Regel nur für die gängigsten Netzbandbreiten verfügbar, bei denen es sich selten um die höchsten Bandbreiten handelt.

Zweitens könnte man ein System-on-a-Chip mit einer hohen Anzahl von Kernen verwenden, was es ermöglichen würde, Algorithmen zur "rechnerischen Speicherung" hinzuzufügen. Dies erfordert jedoch parallele Programmierkenntnisse. Die ultimative Lösung ist in der Regel diejenige mit der höchsten Latenz, was dem NVMe-Wertversprechen einer niedrigen Latenz direkt entgegenwirkt. Wie ASICs sind diese MPP-SOCs in der Regel nur für die gängigsten Netzwerkbandbreiten verfügbar, die selten die höchsten Bandbreiten sind.

Drittens können Sie einen FPGA verwenden. Mit dieser Option können Sie Algorithmen zur "rechnerischen Speicherung" hinzufügen und gleichzeitig eine ASIC-ähnliche Latenz beibehalten. Diese Option ermöglicht auch Netze mit hoher Bandbreite wie 100 oder sogar 400 Gb. Obwohl es sich um die teuerste der drei Optionen handelt, ist der Kostenunterschied nur geringfügig höher, wenn man das Volumen der Speichermärkte berücksichtigt.

Adaptive Speicherung

Durch den Einsatz von Technologien wie FPGAs und SoCs können Rechenzentrumsarchitekten die Datenbewegungen zur/von der CPU für datenintensive Vorgänge weiter reduzieren. Mit hardwaregesteuerter Beschleunigung weisen Benutzeranwendungen eine höhere Leistung und kürzere Antwortzeiten auf. Da die Anzahl der freien CPU-Zyklen zunimmt, nutzen die Prozesse, die die Arbeitslasten verteilen, die Vorteile der hybriden Systemarchitektur unter Verwendung dedizierter Hardware und der CPU effizienter. Die FPGA-Fabric-Architektur, ihr IO-Durchsatz und ihre Programmierflexibilität erleichtern das Design von rekonfigurierbarer Hardware, die eng mit NVMe-Speicher mit hoher Bandbreite gekoppelt ist. FPGAs eignen sich besonders für Komprimierung, Verschlüsselung, RAID und Erasure Code, Datendeduplizierung, Key-Value-Offload, Datenbankabfrage-Offload, Videoverarbeitung oder NVMe-Virtualisierung. FPGA-Hardware bietet die Leistung einer dedizierten Lösung, hat aber auch den Vorteil, dass sie schnell umkonfiguriert werden kann, wenn sich die Anforderungen des Rechenzentrums im Laufe der Zeit ändern.

Verwendung eines Xilinx MPSoC als NVMe-oF-Ziel

Der BittWare 250-SoC verfügt über einen Xilinx UltraScale+ Zynq ZU19EG MPSoC und kann sowohl über zwei QSFP28-Ports an die Netzwerk-Fabric als auch über eine 16-Lane-Host-Schnittstelle oder vier 8-Lane-OCuLink-Anschlüsse an die PCIe-Fabric angeschlossen werden. Dieser MPSoC-Adapter ist eine perfekte Plattform für die Ansteuerung eines NVMe-oF-Zielknotens, da er Datenstromberechnung in der FPGA-Fabric (auch PL oder Programmable Logic genannt), Netzwerk-IO, PCIe-Konnektivität und einen integrierten ARM-Prozessor kombiniert. Beachten Sie, dass der ARM-Prozessor nicht in der Datenebene liegt, sondern die Arbeit der Steuerebene übernimmt. Durch die Platzierung eines dedizierten Hardware-Beschleunigers zwischen der CPU und den Speicherendpunkten entsteht ein System, das für Berechnungen in größerer Nähe zu den Daten optimiert ist.

2 250-SoC cards with PCIe switch and NVMe SSDs

Die Hardware

Um NVMe-oF zu demonstrieren, platziert BittWare das 250-SoC in einem JBOF-Chassis (Just-A-Bunch-Of-Flash), das mit mehreren NVMe-U.2-Laufwerken bestückt ist, und stellt die QSFP28-Ports der 250-SoC-Karte dem Netzwerk zur Verfügung. Das Celestica Euclid JBOF verfügt über zwei Plug-in-Blades mit einem PCIe-Switch und einem PCIe-Steckplatz; jede Schublade fungiert als Leitung zwischen der Netzwerkstruktur und dem NVMe-Speicher. Die NVMe-Pakete werden von den QSFP28-Ports zur FPGA-Fabric übertragen und durchlaufen dann die PCIe-Host-Schnittstelle, den PCIe-Switch des JBOF, bevor sie schließlich die NVMe-Laufwerke erreichen. In dieser Implementierung werden die 250-SoC-OCuLink-Anschlüsse nicht verwendet, aber in einer anderen Hardwareplattform könnten sie eine kabelgebundene Version dieses Designs aufnehmen, bei der PCIe-Transaktionen über Kabel laufen würden.

Celestia Euclid JBOF illustration

Die Gateware

Das Design implementiert ein NVMe-oF-Ziel für RoCE v2 (NVMe 1.2 und NVMe-oF 1.0 Spezifikation konform), das explizites Staumanagement unterstützt. Die IP für den MPSoC verwendet mehrere IP-Bibliotheksblöcke von Xilinx, die alle über einen 512-Bit AXI-Bus mit 200 MHz für die Datenebene miteinander verbunden sind. Die Xilinx Embedded RDMA NIC verarbeitet den 100 Gb/s-Netzwerkverkehr, während ein PCIe Root Complex IP Core die Konnektivität zur 16-Lane-PCIe-3.0-Schnittstelle zur JBOF-Schaltung verwaltet, die bis zu 24 Laufwerke ansteuert, und ein DMA Core die Hochgeschwindigkeitsdatenübertragungen über den AXI-Bus steuert. Darüber hinaus verwaltet der NVMe-oF-Zielkern bis zu 256 Warteschlangen über den 100 Gb/s-Datenpfad, während die auf dem Quad-Core-A53-ARM-Prozessor laufende Firmware die High-Level-Verwaltung des Speicherknotens übernimmt.

NVMe over fabric block diagram

Maximierung der Leistung

Der MPSoC PL kann die maximale Bandbreite des Datenpfads aufnehmen. Um die maximalen Fähigkeiten des Gesamtsystems zu demonstrieren, muss der Host daher einen Netzwerkverkehr erzeugen, der so nah wie möglich an 100 Gb/s herankommt. Für das Benchmarking werden einige NVMe-oF-Hosts mit einem Netzwerk-Switch verbunden, der dann den maximalen Datendurchsatz an die 250-SoC-MPSoC-Karte weiterleiten kann, auf der das NVMe-oF-Target im JBOF läuft. Dieses Referenzdesign zeigt eine zufällige Leseleistung von etwa 2,5 MIOPS und eine zufällige Schreibleistung von über 1,1 Mio. bei einer Anwendungslatenz von 105 us.

Vorteile von rekonfigurierbaren Hardware-Lösungen

Eine MPSoC-basierte NVMe-oF-Lösung bietet mehrere Vorteile gegenüber einer Software (CPU + externe NIC + SPDK) oder einer RNIC-Lösung (CPU + integrierte NIC). Auch wenn eine MPSoC-basierte Lösung im Vergleich zu anderen Produkten relativ hohe Kosten und einen hohen Stromverbrauch hat, ist eine solche Technologie in Bezug auf Bandbreite, Konfigurierbarkeit und Latenzzeiten besser als die Konkurrenz. Ähnlich wie bei einer RNIC-Lösung wird die MPSoC-NVMe-oF den Durchsatz der Netzwerkschnittstelle sättigen. Allerdings bietet die MPSoC-Hardware-Implementierung ein Maß an Flexibilität und Anpassungsfähigkeit, das andere Lösungen nicht haben. Diese anpassungsfähige Hardware kann daher auf domänenspezifische Anwendungen abzielen und ermöglicht es Systemarchitekten, kundenspezifische Funktionen (RAID oder neue NVMe-Funktionen im Zuge der Weiterentwicklung der Spezifikation) mit der primären IP zu kombinieren und den gesamten Funktionsumfang des Systems zu erweitern. Eine weitere Option ist das Hinzufügen von benutzerdefinierten Beschleunigern, wie z. B. Verschlüsselung oder Komprimierung, um zwei Funktionen in einem Gehäuse zu kombinieren. Schließlich können Lösungsanbieter anwendungsspezifische Hardwareprodukte entwickeln, die für einen bestimmten Zweck optimiert sind, z. B. für die Videoverarbeitung (z. B. Videocodec) oder künstliche Intelligenz-Workloads. Durch die Kombination einer IT-Funktion wie der Speicherverwaltung mit einer Aufgabe, die normalerweise von einem teuren Rechenknoten ausgeführt wird, wird die CPU von der Durchführung von IO-Transfers mit hoher Bandbreite entlastet und kann für rechenintensivere Operationen eingesetzt werden. Was die Latenz angeht, so bietet die MPSoC-basierte Lösung eine niedrige und vorhersehbare Latenz im Vergleich zu CPU-gesteuerten Alternativen.

illustration of Euclid JBOF solution

Schlussfolgerung

Als NVMe in den letzten Jahren ausgereift war, hat es den Weg für NVMe-oF geebnet, das nun ähnliche Vorteile wie NVMe für disaggregierte Speicherumgebungen bietet (Weaver, 2019). Die Technologie hat die Auslastung von Rechen- und Speicherknoten verbessert und gleichzeitig die Agilität und Leistung im Rechenzentrum erhöht (Waever, 2019). NVMe-oF ermöglicht es Entwicklern, Anwendungen auf neuartige Weise auszurichten, z. B. werden KI-Workloads, die zufällige Lesevorgänge über große Datensätze (mehrere 100 PB) erfordern, erheblich von dieser Technologie profitieren (Hemsoth, 2019). FPGA und MPSoC bieten eine zusätzliche Innovationsebene über dem NVMe-oF-Protokoll; die programmierbare Logik in diesen Geräten ermöglicht die Entwicklung einer Systemarchitektur, die Datenübertragungen mit hoher Bandbreite und geringer Latenz bewältigen kann und gleichzeitig für Optimierungen oder anwendungsspezifische Anpassungen konfigurierbar bleibt. BittWare bietet eine Reihe von NVMe-Beschleunigungsoptionen, auch für NVMe-oF - nehmen Sie Kontakt mit uns auf, um mehr zu erfahren.

Referenzen