Getty Images/iStockphoto

How Software-Enabled Flash could aid SSD management

A new development in flash storage could be a flexible option for any large-scale installation, as well as systems with custom software that's tuned for optimum performance.

In 2020, Kioxia pioneered a new concept in flash storage, creating an open standard that catered to the specific needs of the hyperscale data center. The standard, called Software-Enabled Flash, permits the host to better manage flash storage in a way that should improve performance and boost data security.

Software-Enabled Flash supports the host system taking as much or as little control of the flash chips within the storage as the programmer deems appropriate. Kioxia developed the Software-Enabled Flash API and has made it into an open source software package available through The Linux Foundation.

According to Kioxia, Software-Enabled Flash delivers capabilities that organizations can customize according to the needs of each application, system or data center. It can also adapt or modify those capabilities as needed. Admins should understand how Software-Enabled Flash works and how to use it.

Advantages of Software-Enabled Flash

Software-Enabled Flash aims to eliminate the possibility of system stalls caused by spurious garbage collection routines. In extreme cases, a garbage collection routine can cause seconds-long stalls while the application waits for the routine to complete.

This flash provides the flexibility for a programmer to manage which data goes into which chips in an SSD. It isolates programs from one another, either for security concerns or to avoid the noisy neighbor problem.

Software-Enabled Flash achieves this work by enabling the host to assume control over nearly every aspect of the SSD, including the flash transition layer, write buffering, garbage collection and wear leveling. It does not force the programmer to take on these tasks, however, and the API provides the ability for the program to treat the SSD, or even part of the SSD, as if it were a standard self-managed model.

Diagram of Software-Enabled Flash host software model

How Software-Enabled Flash works with hardware

Admins can control this flash at an even more intimate level than was possible on open-channel SSDs but only because it must pair with a special kind of flash storage device. This device, the Software-Enabled Flash hardware unit, at its simplest, doesn't need to do as much as a standard NVMe SSD controller. It can be built without DRAM. The controller is mainly responsible for abstracting the flash chips so they look just like any other chip in any other hardware unit.

As a result, the hardware unit itself takes care of its own write and erase timing, page length, and certain health and extension algorithms that make the bit cells last longer. From the perspective of the software, all hardware units look the same except for their capacity. The controller hides all the differences relating to the chip supplier or chip generation in the unit.

Software-Enabled Flash hardware unit block diagram

The controller also presents the flash chips to the host as individual chips and identifies which channel each chip is on. This enables the host to manage the channels for speed. It also manages the exact location of various bits of data to assure that different users' tasks are isolated from one another to improve the system's security. Further security enhancements include the use of virtual devices and quality of service domains.

The open source software manages these hardware units to a comfortable degree for the program developer. Coders can either treat the unit as an SSD or manage each flash chip individually. This provides flexibility and should enable careful coders to squeeze the last drop of performance out of their systems.

Software-Enabled Flash can run on a single hardware unit or scale across thousands of units.

Some companies have reason to justify developing custom device software to realize the performance improvements Software-Enabled Flash can provide.

Where Software-Enabled Flash stands today

Software-Enabled Flash breaks down simply into two parts: software and hardware.

In mid-2020, Kioxia released the open source API software on GitHub, and it was later taken over by The Linux Foundation. In September 2023, Kioxia followed on by providing the full command set specification to The Linux Foundation.

Finally, in December 2023, Kioxia provided The Linux Foundation with an SDK. The SDK incorporates write amplification factor reduction, latency control and support for multiple protocols.

On the hardware side, Kioxia donated the Software-Enabled Flash hardware unit command set specification to the Software-Enabled Flash Project in August 2023. It demonstrated hardware unit samples at the 2023 Flash Memory Summit. Although Software-Enabled Flash hardware units are not on the commercial market, they will become available as the standard is deployed.

Software-Enabled Flash not for everyone

The technology provides flexibility to potential users, but is that what they need?

If customers use off-the-shelf software in a standard system, they may as well use industry-standard NVMe SSDs since Software-Enabled Flash provides the same service without any noticeable difference. In fact, Software-Enabled Flash hardware units are less widely sourced than NVMe SSDs, so the market is less competitive, which likely translates to a higher price.

Hyperscale data centers, however, are interested in Software-Enabled Flash and are promoting the effort in league with Kioxia.

These facilities often update their software to tightly manage the hardware and optimize cost, performance, and power and cooling requirements. Such data centers can see a financial return on relatively costly software development if that software, when spread across tens of thousands of servers, can reduce Capex and Opex by more than the cost of the software development.

Between these two extremes, some companies have reason to justify developing custom device software to realize the performance improvements Software-Enabled Flash can provide.

Since the API enables each of its customizations to be selected one by one, many applications are likely to use only those optimizations the application requires. They allow the API's library to manage the other aspects of the flash. It's up to each application's development team to determine the degree of control to incorporate into the application and what to leave as is.

Jim Handy is a semiconductor and SSD analyst at Objective Analysis in Los Gatos, Calif.

Dig Deeper on Flash memory and storage