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 :)
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.
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.
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.
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.