Sunday, March 23, 2014

Bad Block Managment


With use, memory cells that forms blocks of the NAND Flash memory array can wear out. Most of the NAND Flash devices contain some initial bad blocks within the memory array. These blocks are typically marked as bad by the manufacturer, indicating that they should not be used in any system.

Bad Blocks are blocks that contain one or more invalid bits whose reliability is not guaranteed. BadBlocks may be present when the device is shipped, or may develop during the lifetime of the device.

Devices with Bad Blocks have the same quality level and the same AC and DC characteristics as devices here all the blocks are valid. A Bad Block does not affect the performance of valid blocks because it is isolated from the bit line and common source line by a select transistor.

Bad Block Management, Block Replacement and the Error Correction Code software are necessary to manage the error bits in NAND Flash devices.


Recognizing Bad Blocks
After the original bad-block table is created, if in the time span any other blocks go bad those should also be included in the “invalid block list”. In general, for SLC large page (2112- byte) devices, any block, where the 1st and 6th bytes/1st word in the spare area of the 1st page, does not contain FFh is a bad block. So new block which come under permanent failure has to place in bad block table, if the error is temporary then can be corrected by Flash controller i.e., if Flash Translation layer addresses one of the Bad Blocks, then Bad Block Management program directs it to a good block.



Block Replacement
NAND devices have READ STATUS command after an READ/ERASE operation. This reports a failure in PROGRAM (ERASE) if at least on bit in the programmed (erased) page did not change from “1” to a “0”state (“0” to a “1” state). The additional bad blocks are identified when attempts to program or erase give errors in the status register. As the failure of a page program operation does not affect the data in other pages in the same block, the block can be replaced by reprogramming the current data and copying the rest of the replaced block to an available valid block.

The Bad Block Table is created by reading all the spare areas in the NAND Flash memory. The table is then saved to a good block so that on rebooting the NAND Flash memory, the Bad Block Table is loaded into RAM. The blocks contained in the Bad Block Table are not addressable. So, if the Flash Translation Layer addresses one of the Bad Blocks, the Bad Block Management software redirects it to a good block.

Blocks can be marked as bad and new blocks allocated using two general methods.

Skip Block Method
In the skip block method the algorithm creates the bad block table and when the target address corresponds to a bad block address, the data is stored in the next good block, skipping the bad block. When a bad block is generated during the lifetime of the NAND Flash device, its data is also stored in the next good block. In this case, the information that indicates which good block corresponds to each developed bad block also has to be stored in the NAND Flash device.

Reserve Block Method:
In the reserve block method, bad blocks are not skipped but replaced by good blocks by redirecting the FTL to a known free good block. For that purpose, the bad block management software creates two areas in the NAND Flash: the user addressable block area and the reserved block area as shown in Fig .6. The FTL can use the user addressable block area to store data whereas the reserved block area is only used for bad block replacement and to save the bad block table that also keeps track of the remapped developed bad blocks.

No comments:

Post a Comment