Die Organisation Linux Foundation hat die erste Version einer offenen Plattform für softwaregesteuerte Flash-Speicher SEF (Software Enabled Flash) vorgestellt, die auf dem Code basiert, der von KIOXIA (früher Toshiba Memory Corporation) zur Verfügung gestellt wurde, wo 1980 der Flash-Speicher erfunden wurde. Die Quelltexte des Werkzeugkästs sind in C geschrieben und unter der BSD-Lizenz veröffentlicht.
Das Werkzeugkästchen umfasst eine Reihe von Patches für den Linux-Kernel, einen Blocktreiber für SEF-Geräte (Software Enabled Flash), Kommandozeilen-Utilities, paravirualisierte SEF-Treiber für QEMU, eine Bibliothek mit API für die Anwendungsentwicklung, Patches für nvme-cli und FIO, die die Unterstützung für SEF hinzufügen. Das SDK enthält auch eine Referenzimplementierung der Software-Ebene FTL (Flash Translation Layer), die die Übersetzung von Befehlen von Blockgeräten in Zugriffe auf den tatsächlichen Flash-Speicherchip, die Sortierung von Daten und die Verteilung der Daten in den Memory-Zellen ermöglicht. FTL unterstützt flexibles Daten-Placement (FDP – Flexible Data Placement), Zoning (ZNS – Zoned Namespace) und die NVMe-Spezifikation.
Bei herkömmlichen Flash-Speichern für externe Systeme fungiert der Speicher als schwarze Box, wobei ein Teil des Speichers für Systemoperationen reserviert ist. Die Leistungskennzahlen sind inkonsistent, und es treten unpredictable Verzögerungen aufgrund interner Controlleraktivitäten auf, beispielsweise während der Garbage Collection. Im Gegensatz zu traditionellen Flash-Speichern, bei denen die Datenverteilung, die Isolation fehlerhafter Blöcke und die Garbage Collection durch die Firmware des Controllers verwaltet werden, ermöglichen Speicher mit SEF-Unterstützung, die logischen Prozesse für die niedrigstufige Verarbeitung von Flash-Speicherchips auf die Software und das Betriebssystem zu verlagern.
SEF ermöglicht eine direkte Steuerung der physischen Datenplatzierung, Anpassung von Lastverteilungsalgorithmen, Verwaltung von Prioritäten und QoS, sowie die Beseitigung zusätzlicher Schichten zur Blocktransformation. Sie können den gesamten verfügbaren Speicher nutzen, eine vorhersehbare Interaktion mit dem Speicher erreichen und den Speicher in virtuelle Geräte unterteilen, die auf der I/O-Ebene isoliert sind und unterschiedliche Prioritäten in der Verarbeitung haben. Der in SEF verfolgte Ansatz reduziert die Overheadkosten und verbessert die Speicherinteraktion, indem er sich an die aktuellen Bedürfnisse der Garbage Collection, der Speicherreservierung und der Blockverteilung zur Verringerung des Verschleißes anpasst.
SEF ermöglicht beispielsweise die Normalisierung der Leistung bei der Nutzung eines Arrays von zu unterschiedlichen Zeitpunkten erworbenen Laufwerken mit unterschiedlichen Eigenschaften. Für Laufwerke, die hauptsächlich nur zum Lesen verwendet werden, kann SEF einfachere Blockverteilungsalgorithmen nutzen und den für Verwaltungszwecke reservierten Speicher reduzieren.
Quelle: opennet.ru
