NAND FLASH wear-out

Mitch Bradley wmb at laptop.org
Fri Dec 28 17:12:13 EST 2007


>
>> I would hate to fill up my 1GB and use all my flash write cycles...
>>     

The probability of wearing out NAND FLASH is much less than people seem 
to think.

The part is rated for 100,000 *erase* cycles per block.  There are 64 
independently-writable 2K pages per block.  Writing doesn't count in the 
wear calculation - just erasing.

Suppose that you pick one block and use it exclusively.  You write one 
page, then write another page, etc, and when you have filled all 64 
pages, you erase the block and start over.

What would it take to wear out that block over the 5-year design 
lifetime of the XO?

100,000 erases / 5 years / 365 days / 24 hours = 2.3 erases/hour.  So 
you can erase the same block every 26 minutes, 24 hours a day, 365 days 
per year, for 5 years before the block is likely to wear out.

But there are 64 pages per block, and you only have to erase after they 
are all written.  26 minutes * 60 secs/min / 64 pages = 24 seconds.   So 
you have to write a page every 24 seconds to wear out that block.

Obviously, if you have a very stupid application that is pounding on one 
block and writing/erasing it as fast as it can, or a filesystem layout 
that has a very bad hot-spot, then you could wear out a block much 
faster.  But even then, if it is possible to spare-out a worn out block, 
you wouldn't be likely to lose enough blocks over 5 years to make a 
significant dent in the device's overall capacity.

Let's look at this another way - how long would it take to wear out the 
entire device if you really tried?  The typical erase time for a block 
is 2 ms, so if you never wrote, just erased over and over, you could do 
100,000 erases in 200 seconds.  There are 8192 erase blocks in a 1 GB 
NAND FLASH, so you could wear out the whole thing in 1.6 million seconds 
= 19 days.  So you could wear out the device intentionally.  But that is 
just erasing, not writing.

If you write all the pages before erasing, it takes typically 0.2 mS to 
write a page, so writing all the pages of a block then erasing takes (64 
* 0.2 mS) + 2 mS = 15 mS.  So it would take 140 days to wear out the 
device by continuous writing/erasing.   Continuous writing/erasing 
doesn't happen in any realistic workload, because most applications 
don't write data then immediately discard it.

Oh, by the way, 100,000 cycles may be pessimistic.  That is the data 
sheet rating, but I have heard that single-level NAND FLASH (like the 
ones we use) are coming in at more like 1 million erase cycles typical 
these days.

The bottom line is that NAND wear-out is not likely to be an issue.  
JFFS2 does a good job of spreading out writes, and even if it only did a 
half-hearted job, that would probably be good enough.



More information about the Devel mailing list