EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

Nand Flash question

Started by Richard Malerba June 23, 2005
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 :)

"Richard Malerba" <r_malerba@hotmail.com> wrote in message 
news:1119540060.756752.266230@g43g2000cwa.googlegroups.com...
> 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.
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
> Thanks in advance :) >
"tim (moved to sweden)" <tim_in_sweden2005@yahoo.co.uk> wrote in message
news:3i04pdFj3imrU1@individual.net...
> > "Richard Malerba" <r_malerba@hotmail.com> wrote in message > news:1119540060.756752.266230@g43g2000cwa.googlegroups.com... > > 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. > > 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.
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

Meindert Sprang wrote:
> "tim (moved to sweden)" <tim_in_sweden2005@yahoo.co.uk> wrote in message > news:3i04pdFj3imrU1@individual.net... > >>"Richard Malerba" <r_malerba@hotmail.com> wrote in message >>news:1119540060.756752.266230@g43g2000cwa.googlegroups.com... >> >>>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. >> >>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. > > > 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
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) HABIT Research (250) 381-9425
"Meindert Sprang" <mhsprang@NOcustomSPAMware.nl> wrote in message 
news:11blnpj6umdr462@corp.supernews.com...
> "tim (moved to sweden)" <tim_in_sweden2005@yahoo.co.uk> wrote in message > news:3i04pdFj3imrU1@individual.net... >> >> "Richard Malerba" <r_malerba@hotmail.com> wrote in message >> news:1119540060.756752.266230@g43g2000cwa.googlegroups.com... >> > 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. >> >> 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. > > 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.
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
> > Meindert > >
"tim (moved to sweden)" wrote:

> If 100,000 writes aren't enough for your application then you > are using the wrong medium.
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

The 2024 Embedded Online Conference