NAND FLASH wear-out
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
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
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