The FTL algorithm directly determines SSD Performance, Reliability, and Endurance. FTL is the core component of SSD firmware.
FTL algorithm the core SSD technology
FTL is the abbreviation of Flash Translation Layer, which completes the Translation, or Mapping, of the logical address space of Host (or user, Host) to the physical address space of Flash. Every time an SSD writes a piece of user logical data to the flash address space, it records the mapping between the logical address and the physical address. The next time the host wants to read the data, the SSD reads the data from the flash and returns it to the user.
Mapping logical address space to physical address space is the most primitive and basic function of FTL. In fact, FTL in SSDS now has a lot to do. SSDS generally uses NAND Flash storage media.
SSD storage media in addition to Flash, RAM, 3D XPoint, and other new storage media. Unless otherwise specified, the following SSD storage media refer to NAND Flash.
Features of Nand Flash
① Flash blocks need to be erased before they can be written, and cannot Update in place.
Unable to cover writing, when writing a new data, not directly in the old place changes directly (flash are not allowed in a repeat on flash memory page (page), once erased only write once), must be written to a new location, therefore, FW (the Firmware and the Firmware) needs to maintain a logical address to physical address mapping table; In addition, writing data to a new location will cause the data in the old location to become invalid, which is junk data. Garbage data will occupy the space of the flash memory. When the available space of the flash memory is insufficient, FTL needs to do garbage collection, that is, write the valid data from several flash blocks to a new flash block, and then erase these flash blocks to get the usable flash block. This is the Garbage Collection (GC), an important thing FTL needs to do.
② Nand Flash blocks have a lifetime
Each time a flash block is erased, it wears out the flash block, so the flash block has a lifetime measured by Program/Erase Count (PE). We don’t want to concentrate on writing data to a few flash blocks that will soon die from RUNNING out of PE. We expect all flash blocks to evenly distribute data writes, not some blocks to death while others watch them die. FTL needed to Wear Leveling so that the data write would be evenly distributed across each flash block so that each block would Wear out equally to ensure the SSD would have the maximum number of writes.
Each flash block can be Read-only a limited number of times. If you read too many, the data on the flash block will also make mistakes — a problem known as Reading interference.
FTL needs to deal with the problem of reading interference. When the number of reading times on a flash block reaches a certain threshold, FTL needs to remove the data from the flash block to avoid data errors.
③ Data Retention of Nand Flash
The data stored on the flash memory is lost due to the loss of charge. This time can be as long as a decade, as short as a few years or even months, or even less. (This is at room temperature; at higher temperatures, the charge drains faster and the data lasts even shorter.)
If the SSD is not powered up, FTL can’t do anything about it. But once it is powered on, FTL needs to do something about it, such as scan flash memory to see if there is a data retention problem and if there is, move the data to prevent it from happening. Good FTL requires the ability to handle data retention issues.
④ The use of SSD also generates new bad blocks
The symptoms of bad blocks are erasure failures or read failures (ECC cannot correct data errors). Bad block management is also a big task for FTL.
⑤ For MLC or TLC, there is the issue of Lower Page corruption
If an abnormal power failure occurs while writing to the Upper Page/Extra Page (the flash Page shared with the Lower Page), the data that was successfully written to the Lower Page will be destroyed. Good FTL, there should be mechanisms to avoid this problem as much as possible;
Neither MLC nor TLC has the same read/write speed as SLC, but both of them can be used in SLC mode.
FTL algorithms take advantage of this feature to improve SSD performance and reliability.
Different flash memory has their own problems. In addition to the basic address mapping, FTL also needed to do Leveling, GC, Wear balancing, bad block management, Read interference, and Data Retention. As the quality of flash deteriorates, FTL not only completes the above routine processing but also needs to do some special processing for specific flash characteristics to achieve good performance and high reliability.
FTL includes Host Based and Device Based
Host-Based means that FTL is implemented on the Host side using your computer’s CPU and memory resources.
In addition to fusion-IO using Host-Based FTL, as far as I know, there are other companies in the industry such as Fangyi Information Technology, Baocun, and CNEXLabs doing Host-Based FTL.
Instead, Device-Based means FTL is implemented on the Device side, using controllers and RAM resources on SSDs.