Flash Memory Translation Layers
TargetFTL-NDM
Makes NAND flash ‘look’ like a hard drive, performing dynamic virtual to physical page mapping, wear leveling, and bad block replacement. Takes into account that NAND flash memory is block erasable and page programmable, has bit errors and initial bad blocks, blocks can no longer be programmed or erased after failing a program or erase command, within a block pages should be written in order, and erase commands cause wear which can make blocks fail early if they are erased more often than other blocks.
TargetFTL-NDM has special support for MLC NAND memory. In these devices, each page is paired with another page in the block. If power is lost while programming a page, both the page being programmed and its paired page are corrupted. TargetFTL-NDM’s algorithms provide reliability in spite of paired page corruption.
TargetFTL-NOR
Makes NOR flash ‘look’ like a hard drive, performing dynamic virtual to physical page mapping and wear leveling. Takes into account that NOR flash memory is block erasable and byte programmable, and erase commands cause wear which can make blocks fail early if they are erased more often than other blocks.
Additionally, Blunk supports ‘write-once’ NOR flash. Usually NOR flash can be reprogrammed multiple times as long as new writes only change additional ‘1’s to ‘0’. ‘write-one’ parts apply internal error correction on groups of bytes. This impacts the FTL design because bytes cannot be updated without reducing reliability by invalidating previously calculated ECC check bytes. Blunk has special support for ‘write-once’ NOR that avoids any loss in reliability by ensuring no bytes are written more than once between each block erase command.
Also, though NOR flash bit errors are rare, for extra reliability Blunk offers an FTL for NOR flash that transparently corrects 1 bit error per 512 bytes. NOR flash bit errors appear to be more likely in environments experiencing strong electrical noise. Blunk’s ECC FTL provides reliability in the presence of these errors.