Wie Software-Enabled Flash das SSD-Management unterstützt
Eine neue Entwicklung der Flash-Speicher könnte eine flexible Option für Großinstallationen und für Systeme mit spezifischer Software sein, die für optimale Leistung konzipiert ist.
Im Jahr 2020 leistete Kioxia Pionierarbeit bei der Entwicklung eines neuen Konzepts für Flash-Speicher und schuf einen offenen Standard, der auf die speziellen Anforderungen von Hyperscale-Rechenzentren zugeschnitten ist. Der Standard mit der Bezeichnung Software-Enabled Flash ermöglicht dem Host eine bessere Verwaltung des Flash-Speichers, wodurch die Leistung verbessert und die Datensicherheit erhöht werden soll.
Software-Enabled Flash unterstützt das Host-System dabei, so viel oder so wenig Kontrolle über die Flash-Chips innerhalb des Speichers zu übernehmen, wie der Programmierer für angemessen hält. Kioxia hat die Software-Enabled-Flash-API entwickelt und sie als Open-Source-Softwarepaket über die Linux Foundation verfügbar gemacht.
Laut Kioxia bietet Software-Enabled Flash Funktionen, die Unternehmen je nach den Anforderungen der einzelnen Anwendungen, Systeme oder Rechenzentren anpassen können. Außerdem können diese Funktionen bei Bedarf abgestimmt oder verändert werden. Administratoren sollten verstehen, wie Software-Enabled Flash funktioniert und wie man es einsetzt.
Vorteile von Software-enabled Flash
Software-Enabled Flash soll die Möglichkeit von Systemstillständen durch fehlerhafte Garbage-Collection-Routinen ausschließen. In extremen Fällen kann eine Garbage-Collection-Routine zu sekundenlangen Systemstillständen führen, während die Anwendung auf den Abschluss des Vorgangs wartet.
Dieser Flash-Speicher bietet dem Programmierer die Flexibilität, zu verwalten, welche Daten in welche Chips in einer SSD gelangen. Es isoliert Programme voneinander, entweder aus Sicherheitsgründen oder um das Problem der Noisy Neighbors zu vermeiden.
Software-Enabled Flash erreicht dies, indem es dem Host ermöglicht, die Kontrolle über nahezu jeden Aspekt des SSD zu übernehmen, einschließlich der Flash-Übergangsschicht (Transition Layer), der Schreibpufferung, der Garbage Collection und des Wear Leveling. Der Programmierer wird jedoch nicht gezwungen, diese Aufgaben zu übernehmen, und die API bietet dem Programm die Möglichkeit, die SSD oder sogar einen Teil der SSD so zu behandeln, als ob es sich um ein selbstverwaltetes Standardmodell handeln würde.
Abbildung 1: Das Host-Software-Modell in der grafischen Veranschaulichung.
Wie Software-Enabled Flash mit Hardware funktioniert
Administratoren können diesen Flash-Speicher auf einer noch genaueren Ebene steuern, als dies bei Open-Channel-SSDs möglich war, aber nur, weil er mit einer speziellen Art von Flash-Speichergerät gekoppelt werden muss. Dieses Gerät, die Software-Enabled Flash-Hardwareeinheit, muss im einfachsten Fall nicht so viel leisten wie ein Standard-NVMe-SSD-Controller. Sie kann ohne DRAM gebaut werden. Der Controller ist hauptsächlich dafür verantwortlich, die Flash-Chips zu abstrahieren, damit sie wie jeder andere Chip in jeder anderen Hardwareeinheit aussehen.
Infolgedessen kümmert sich die Hardwareeinheit selbst um ihr eigenes Schreib- und Lösch-Timing, die Page-Länge und bestimmte Zustands- und Erweiterungsalgorithmen, die die Lebensdauer der Bitzellen verlängern. Aus der Sicht der Software sehen alle Hardwareeinheiten gleich aus, mit Ausnahme ihrer Kapazität. Der Controller verbirgt alle Unterschiede in Bezug auf den Chiplieferanten oder die Chipgeneration in der Einheit.
Abbildung 2: Das Block-Diagramm der Hardwareeinheit eines Software-Enabled Flash.
Der Controller stellt die Flash-Chips dem Host auch als einzelne Chips dar und gibt an, auf welchem Kanal sich jeder Chip befindet. Dadurch kann der Host die Kanäle im Hinblick auf die Geschwindigkeit verwalten. Außerdem verwaltet er den genauen Speicherort der verschiedenen Datenbits, um sicherzustellen, dass die Aufgaben der verschiedenen Benutzer voneinander getrennt sind, um die Sicherheit des Systems zu verbessern. Zu den weiteren Sicherheitsverbesserungen gehören die Verwendung virtueller Geräte und Quality-of-Service-Domains.
Die Open-Source-Software verwaltet diese Hardwareeinheiten in einem für den Programmentwickler komfortablen Maß. Der Programmierer kann die Einheit entweder als eine SSD behandeln oder jeden Flash-Chip einzeln verwalten. Dies bietet Flexibilität und sollte es sorgfältigen Programmierern ermöglichen, das Maximum an Leistung aus ihren Systemen herauszuholen.
Software-Enabled Flash kann auf einer einzigen Hardwareeinheit laufen oder über Tausende von Einheiten skaliert werden.
Wo steht Software-Enabled Flash?
Software-Enabled Flash lässt sich einfach in zwei Teile aufteilen: Software und Hardware.
Mitte 2020 veröffentlichte Kioxia die Open-Source-API-Software auf GitHub, und später wurde sie von der Linux Foundation übernommen. Im September 2023 stellte Kioxia der Linux Foundation die vollständige Spezifikation des Befehlssatzes zur Verfügung.
Im Dezember 2023 schließlich stellte Kioxia der Linux Foundation ein SDK zur Verfügung. Das SDK umfasst eine Reduzierung des Schreibverstärkungsfaktors (Write Amplification), eine Latenzkontrolle und Unterstützung für mehrere Protokolle.
Auf der Hardwareseite stellte Kioxia dem Software-Enabled Flash Project im August 2023 die Spezifikation für den Befehlssatz der Software-Enabled-Flash-Hardwareeinheit zur Verfügung. Auf dem Flash Memory Summit 2023 wurden Muster der Hardwareeinheiten vorgestellt. Obwohl Software-Enabled Flash-Hardwareeinheiten derzeit nicht auf dem kommerziellen Markt erhältlich sind, werden sie mit der Einführung des Standards verfügbar sein.
Software-Enabled Flash eignet sich nicht für jede Umgebung
Die Technologie bietet potenziellen Nutzern Flexibilität, aber ist es das, was sie brauchen?
Wenn Kunden Software von der Stange in einem Standardsystem verwenden, können sie genauso gut NVMe-SSDs nach Industriestandard einsetzen, da Software-Enabled Flash denselben Service ohne spürbare Unterschiede bietet. Tatsächlich sind Software-Enabled-Flash-Hardwareeinheiten weniger weit verbreitet als NVMe-SSDs, sodass der Markt weniger wettbewerbsfähig ist, was sich wahrscheinlich in einem höheren Preis niederschlägt.
Hyperscale-Rechenzentren sind jedoch an Software-Enabled Flash interessiert und fördern die Bemühungen in Zusammenarbeit mit Kioxia.
Für einige Unternehmen ist es gerechtfertigt, eigene Gerätesoftware zu entwickeln, um die Leistungsverbesserungen zu nutzen, die Software-Enabled Flash bieten kann.
Diese Rechenzentren aktualisieren häufig ihre Software, um die Hardware genau zu verwalten und die Kosten, die Leistung sowie die Energie- und Kühlungsanforderungen zu optimieren. Solche Rechenzentren können einen finanziellen Gewinn aus der relativ kostspieligen Softwareentwicklung ziehen, wenn diese Software Capex und Opex um mehr als die Kosten für die Softwareentwicklung reduzieren kann. Dies wird durch eine hohe Skalierung erreicht, wenn die Software auf Zehntausende von Servern verteilt wird,
Zwischen diesen beiden Extremen gibt es einige Unternehmen, die die Entwicklung kundenspezifischer Gerätesoftware rechtfertigen, um die Leistungsverbesserungen zu erzielen, die Software-Enabled Flash bieten kann.
Da die API es ermöglicht, jede ihrer Anpassungen einzeln auszuwählen, werden viele Anwendungen wahrscheinlich nur die Optimierungen verwenden, die die Anwendung benötigt. Sie überlassen es der Bibliothek der API, die anderen Aspekte des Flash zu verwalten. Das Entwicklungsteam einer jeden Anwendung muss selbst entscheiden, welchen Grad an Kontrolle es in die Anwendung einbauen und welchen es unverändert lassen möchte.