FTL is a standard flash translation layer that allows an array of NAND flash to be addressed as a set of standard 512Byte, 2K or 4K logical sectors. FTL Key Features
Up to 4 terabytes in a single wear-leveled array
High performance
Zero copy block read/write
Cache options
528, 2112 and 4224 Byte page support
Safe from unexpected reset
Effective wear-leveling algorithm
Bad block management
Automatic garbage collection
Small code footprint
Small RAM usage
Support for all standard NAND devices
Sample drivers and ECC algorithms
Typically >98% of blocks available
Fast initialization
Fail Safety
FTL is designed and tested to handle unexpected system resets cleanly. If a write had been initiated when the system was reset, and if it was not complete, then the old state of the logical sector being addressed will be presented on start-up. If the write operation was complete, then the new state of the logical sector will be read. No in-between states or complex recovery procedures are required.
Wear
All flash devices suffer from wear, since the repeated use of a particular area of flash increases the likelihood that it will fail. Distributing the usage of blocks across the whole flash array greatly increases the lifetime of NAND devices, but effective wear levelling is a complex task. Seemingly “obvious” algorithms tend to fail in real-world testing. HCC has developed sophisticated wear algorithms (both static and dynamic) that are tuneable to your systems needs. These ensure that all the blocks in a NAND flash array are written to evenly, within a configurable set of specified parameters.
Supported NAND Devices
FTL has been designed and tested to work with most types of NAND flash currently available. NAND flash is constantly evolving and HCC works to ensure that FTL works with the latest technology. The system is tested in-house on Samsung, ST Micro and Micron devices. It has been successfully ported to several other types including Toshiba and Hynix. FTL has been tested extensively with devices that have pages of 528 bytes and 2112 bytes.