Nand Flash question

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View
Hi guys, I have a litte question for this group. The erasure/programing
cycles in the Nand Flash devices are normaly  100.000 cycles. Suppose
that my NAND Flash has 32 pages per block and one block was previously
erased, Is the individual page programming counted like a cycle or is
only the erase block operation taken into account.
Thanks in advance :)


Re: Nand Flash question

Quoted text here. Click to load it

No-one does any counting, it's just an average.  When a block goes
bad it is marked and the data is moved elsewhere.

Apparently, a block almost always goes bad when erasing or writing
so the number of times you will risk losing any data is negligible, and
most of those will be correctable by the error correction.

In a file system moving a block is a task that you will do often as you
cannot easily just add to a page.  So when you need to do this you
rewrite the complete block and then erase the old one.  To avoid
failures you should rotate around all the blocks rather than swap
between some predefined ones.

If 100,000 writes aren't enough for your application then you
are using the wrong medium.

tim



Quoted text here. Click to load it



Re: Nand Flash question
Quoted text here. Click to load it

But to really answer the question: the 100.000 cycles are erase cycles. So
if you can fit 32 pages in one block, you can store a block 3.200.000 times.

Meindert



Re: Nand Flash question


Quoted text here. Click to load it



If you write or erase to any section more than the 100k times, then that
section is going to start to exhibit weird and intermittent behaviour.
You CANNOT rely on the manufacturer to put in error correction for bad
sections. You're going to write data there and you'll think it's fine
until you read it. Some parts will fail while others will be fine. You
might have just one bit in a block that always reads a '0', so you may
not even notice it for a long time.

I think the OP is asking if there's a counter to keep track of how many
times the section is accessed. There isn't one. The probability exists
that as you approach 100k writes to any section that the little wires
inside have had it and die. It's an electrical failure, not a counter.

That's 100k writes to the same place. You can probably write 100k times
to one section and 100k writes to another section and be fine. You may
not be, since a failure in one set of wires could get another nearby
section to fail as well.

If you're going to be writing to the Flash lots and lots of times
(anywhere NEAR 100k, e.g. 50k or more) then you MUST choose another
medium or you WILL have failures. Remember, it's not a dead-on number.
Some of the Flash chips will be happy to erase/write 150k times and keep
going, some will stop dead after 47,212 times.

--
Magnus McElroy
Electrical Engineer (EIT)
We've slightly trimmed the long signature. Click to see the full one.
Re: Nand Flash question

Quoted text here. Click to load it

No you can't.  It's an average expected life (mean or median).

Some will fail before this, some after.

But you're right, each page can be written separately (and if you're
sure that you are only writing new zeros you can write the same
block again, (though quite how you ensure that the error code
only has new zeros I don't know).

So you could write 32 pages and then do one block erase, but as
I poined out earlier, you don't actually do this in practice because
many of your writes will be block moves and then you'll be writing
the whole block at the same time.

tim


Quoted text here. Click to load it



Re: Nand Flash question

Quoted text here. Click to load it

That depends on what you mean by a "write".  I wrote an application
with a custom
flash interface.  The addressable units were small data blocks.  When
I added or changed a data block, I simply wrote the block at the end
of the previous data in the sector, then added a pointer to point to
the new block in front of a pointer to the old block.  After the
sector filled, I copied all the live data to an erase sector and
continued filling the new sector.  This significantly reduced the
number of writes and erasures to each page.

Thad

Site Timeline