The Linux Foundation has introduced the first release of open platforms for the Software Enabled Flash (SEF) SDK, developed based on code transferred by kioxia (formerly Toshiba Memory Corporation), the company that invented Flash memory in 1980. The initial texts of the tools are written in the language and distributed under the BSD license.
The SEF SDK includes a set of patches for the Linux kernel, a block driver for SEF devices, command line utilities, paravirtualized SEF drivers for QEMU, and an API library for application development. It also includes patches for NVME-CLI and Fio to add SEF support. The SDK provides a reference implementation of the Flash Translation Layer (FTL) program, which handles commands from block devices to the Flash memory chip, garbage collection, and data distribution. The FTL also supports flexible data placement, zoning, and NVMe specifications.
In traditional Flash drives, the drive operates as a black box with part of the memory reserved for official operations. This can result in unstable performance indicators and unpredictable delays due to internal controller activity, such as garbage collection. However, SEF support drives enable low-level control of the Flash memory chip through software and the operating system.
SEF allows for direct control over data placement, load distribution algorithms, priorities, and quality of service. It eliminates the need for an additional layer of block broadcasts and enables the use of all available memory. This approach improves drive efficiency, allows for division into virtual devices with different processing priorities, and reduces wear by adapting to the current needs of garbage collection, memory reservation, and block distribution.
SEF also offers normalization of performance for arrays of drives with different characteristics acquired at different times. For drives mainly used for reading, SEF enables the use of simpler block distribution algorithms and reduces the amount of reserved memory for official purposes.