Datalight's FlashFX Tera is quite similar in structure to its predecessor, FlashFX Pro, but there have been some features that have evolved from our experience in working with NAND flash over the years that are reflected in some of the new features you will now find in our FlashFX Tera product, and the Error Policy Manager is one of them.
FlashFX Pro was originally developed in the day where NAND flash was SLC (Single-Level Cell), and required 2-bit detect, single bit correct ECCs. The error rates on these types of flash devices were much lower when compared to today's newer NAND flash memory - both newer, lower lithography SLC flash designs that require higher levels of ECCs than their predecessors, and the introduction of MLC (Multi-Level Cell) NAND flash devices, in which multi-bit errors can be seen as part of normal device operation.
When single bit errors occurred in FlashFX Pro, these errors were eventually "scrubbed" over time as part of wear leveling. With newer, more error-prone NAND flash, a more active role needs to be taken.
The usual recommendation for scrubbing a block on NAND flash is to read the data, correct any bit errors using Error Correcting Codes (ECC), and then write the corrected data to an unused block. The existing block is then marked for erasure and reuse. Erasure clears any charge leakage or disturbance, which can make the cell appear to be inconsistently programmed.
In modern MLC NAND flash, errors occur more frequently. Partial programming and associated pages can also cause errors to occur. The severity of an error (and the recommended response) can also vary among manufacturers. FlashFX Tera needed some feature which would allow customization of how these different levels of errors were handled for different devices.
FlashFX Tera introduced the Error Policy Manager, a layer which can react to bit errors during a read and decide (based on the configured Error Policy) whether or not a page has reached the threshold to require action "soon" or "now". Other functions that the Error Policy Manager can employ in addition to scrubbing include Relocate the Data, Retire the Block and Abandon Operations. Error Policies can be specified for any number of bits, from zero to the maximum supported by the media and NAND controller. This flexibility allows the device designer to completely control how their software works with media from any NAND flash vendor. Error handling requirements can easily be translated from the design document into the software stack.
Datalight's Error Policy Manager works equally well with new higher ECC requirement SLC NAND flash. At present, the Error Policy Manager requires the Datalight VBF layer be present on the media. Correctable errors in any NAND flash exempted from this coverage must currently be handled by the OS read routines.