We all know that the flash memories have data retention time of around 10..20 years.

But what if we need to design a device that has to work for 1000 years?

The obvious solution is to make a flash reprogramming once every 5..10 years, refreshing the charges in the memory cells. If the flash memory has 100K writing cycles life, it makes 500K..1M years retention time. Almost infinity.

But the obvious way is not always the right way.

So, is it possible to prolong the data retention time of the flash memories almost infinitely, by reflashing it every 5..10 years?

  • 1
    \$\begingroup\$ If you want to retain data for a very long time without changing it, why not a PROM? \$\endgroup\$
    – pjc50
    Nov 19, 2016 at 8:33
  • \$\begingroup\$ The flash memories allows remote updating of the firmware. \$\endgroup\$
    – johnfound
    Nov 19, 2016 at 8:36
  • \$\begingroup\$ Would you be having any wet electrolytic capacitors in the circuit...? \$\endgroup\$
    – Majenko
    Nov 19, 2016 at 8:48
  • \$\begingroup\$ @Majenko Such a choice would be pretty unreasonable. Assume everything else in the circuit have longer life. \$\endgroup\$
    – johnfound
    Nov 19, 2016 at 8:54
  • 2
    \$\begingroup\$ Tin whiskers...? The point I am trying to make is that there are a million and one other things that could and probably would fail in your circuit over a thousand years, and the data retention of your flash is the least of your worries. \$\endgroup\$
    – Majenko
    Nov 19, 2016 at 9:11

2 Answers 2


Rewriting flash is indeed a mechanism to extend flash retention when your device is running in a high-temperature environment (at lower temperatures, flash retention is not so much a problem).

Texas Instrument's application report MSP430 Flash Memory Characteristics (which should also apply to all other NOR flash-based MCUs) says in section 4.2 ("Enhancing Flash Data Retention Time With Flash Refresh"):

As explained in the previous section, data retention time is very much dependent on the ambient temperature of the MSP430 application. One possible solution to enhance flash data retention is refreshing the flash contents from time to time with software.

In an ideal scenario, the application has idle time frames, where no external events must be observed. During such an idle time, the software can copy one flash segment into RAM or any other flash segment. After erasing the original segment, the content is copied back into the original segment. After such a flash refresh cycle, the data retention time for this segment restarts.
The application must ensure that flash refresh of a flash segment is not interrupted by a power failure.

  • 3
    \$\begingroup\$ Systems with dual flash are best at this. Copy from one block to another, perform a verify between the two blocks, switch the boot flag to the newly programmed block, and reboot. Rinse and repeat. \$\endgroup\$
    – Majenko
    Nov 19, 2016 at 9:05

Probably the use of refresh IS a good way to extend lifetime. Ferroelectric nonvolatile memory is said to be more durable, and other nonvolatile forms are in development.

Reflashing won't rejuvenate everything; some systems use dummy cells (which set the thresholds for multilevel discrimination), and aging dummy cells cannot be 'refreshed'. They aren't eraseable, they aren't even addressable, but they might discharge with the years just like data cells.

Spare blocks have also been employed to extend FLASH lifetime in some chips CAT24C256 in combination with self-checking internal codes.

  • \$\begingroup\$ Can you give an example of a flash chip technology using dummy cells? How common is this practice? \$\endgroup\$
    – Slight
    Apr 15, 2022 at 0:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.