# Open-channel SSD

An open-channel solid state drive is a solid-state drive which does not have a firmware Flash Translation Layer implemented on the device, but instead leaves the management of the physical solid-state storage to the computer's operating system. The Linux 4.4 kernel is an example of an operating system kernel that supports open-channel SSDs which follow the NVM Express specification. The interface used by the operating system to access open-channel solid state drives is called LightNVM.

## NAND Flash Characteristics

Since SSDs use NAND flash memory for storing data, it is important to understand the characteristics of this medium. NAND flash provides a read/write/erase interface. A NAND package is organized into a hierarchy of dies, planes, blocks and pages. There may be one or several dies within a single physical package. A die allows a single I/O command to be executed at a time. A plane allows similar flash commands to be executed in parallel within a die. There are three fundamental programming constraints that apply to NAND:
* a write command must always contain enough data to program one (or several) full flash page(s),
* writes must be sequential within a block,
* an erase must be performed before a page within a block can be (re)written.
The number of program/erase (PE) cycles is limited. Because of these constraints SSD controllers write data to NAND flash memory in another order than the logical block order. This implies that the SSD controller must maintain a mapping table from host (logical) to NAND (physical) addresses. This mapping is usually called the L2P table. The layer that performs the translation from logical to physical addresses is called the flash translation layer or FTL.

## Comparison with Traditional SSDs

Open Channel SSDs provide more flexibility with regard to data placement decisions, overprovisioning, scheduling, garbage collection and wear leveling. Open-Channel SSDs can, however, not be considered a uniform class of devices, as critical device characteristics such as minimum unit of read and minimum unit of write varies from device to device. One can therefore not design an FTL that automatically works on all Open-Channel SSDs.
Traditional SSDs maintain the L2P table in DRAM on the SSD and use their own CPU for maintaining that L2P table. With Open Channel SSDs the L2P table is stored in host memory and the host CPU maintains that table. While the Open Channel SSD approach is more flexible, a significant amount of host memory and host CPU cycles is required for L2P management. With an average write size of 4 KB, almost 3 GB RAM is required for an SSD with a size of 1 TB.
File Systems for Open-Channel SSDs With open-channel SSDs, the L2P mapping can be directly integrated or merged with storage management in file systems. This avoids the redundancy between system software and SSD firmware, and thus improves performance and endurance. Further, open-channel SSDs enables more flexible control over flash memory. The internal parallelism is exploited by coordinating the data layout, garbage collection and request scheduling of both system software and SSD firmware to remove the conflicts, and thus improves and smooths the performance.