Организация Linux Foundation представила первый выпуск открытой платформы для программно управляемых Flash-накопителей SEF SDK (Software Enabled Flash), построенной на основе кода, переданного компанией KIOXIA (до переименования Toshiba Memory Corporation), в которой в 1980 году была изобретена Flash-память. Исходные тексты инструментария написаны на языке Си и распространяются под лицензией BSD.
Инструментарий включает в себя набор патчей для ядра Linux, блочный драйвер для устройств SEF (Software Enabled Flash), утилиты для управления из командной строки, паравиртуализированные SEF-драйверы для QEMU, библиотека с API для разработки приложений, патчи для nvme-cli и FIO, добавляющие поддержку SEF. SDK также включает эталонную реализацию программного уровня FTL (Flash Translation Layer), обеспечивающего трансляцию команд блочных устройств в обращения к фактическому чипу Flash-памяти, сборку мусора и распределение данных по ячейкам памяти. FTL реализует поддержку гибкого размещения данных (FDP – Flexible Data Placement), зонирования (ZNS – Zoned Namespace) и спецификации NVMe.
В обычных Flash для внешних систем накопитель представляет собой чёрный ящик, часть памяти в котором резервируется под служебные операции, показатели производительности непостоянны и возникают непредсказуемые задержки из-за внутренней активности контроллера, например, во время сборки мусора. В отличие от традиционных Flash-накопителей, распределением данных, изоляцией сбойных блоков и сборкой мусора в которых занимается прошивка контроллера, накопители с поддержкой SEF позволяют вынести логику низкоуровневой работы с чипом Flash-памяти на сторону программного обеспечения и операционной системы.
SEF даёт возможность напрямую управлять физическим размещением данных, менять алгоритмы распределения нагрузки, управлять приоритетами и QoS, избавиться от дополнительного слоя трансляции блоков, задействовать всю доступную память, добиться предсказуемой работы с накопителем и разделить накопитель на виртуальные устройства, изолированные на уровне ввода/вывода и имеющие разный приоритет в обработке. Предложенный в SEF подход позволяет снизить накладные расходы и повысить эффективность взаимодействия с накопителем за счёт адаптации к текущим потребностям логики сборки мусора, резервирования памяти и распределения блоков для снижения износа.
Например, SEF позволяет нормализовать производительность в условиях использования массива из приобретённых в разное время накопителей с отличающимися характеристиками. Для накопителей, которые преимущественно используются только для чтения, благодаря SEF можно использовать более простые алгоритмы распределения блоков и уменьшить память, резервируемую для служебных целей.