One limitation of flash memory is that, whilealthough it can be read or programmed a byte or a word at a time in a random access fashion, it must be erased a "block" at a time. Starting with a freshly erased block, any byte within that block can be programmed. However, once a byte has been programmed, it cannot be changed again until the entire block is erased. In other words, flash memory (specifically NOR flash) offers random-access read and programming operations, but cannot offer random-access rewrite or erase operations. When compared to a [[hard disk drive]], a further limitation is the fact that flash memory has a finite number of erase-write cycles, so that care has to be taken when moving hard-drive based applications, such as [[operating systems]], to flash-memory based devices such as [[CompactFlash]]. This effect is partially offset by some chip firmware or filesystem drivers by counting the writes and dynamically remapping the blocks in order to spread the write operations between the sectors, or by write verification and remapping to spare sectors in case of write failure.
Interestingly, the [[Tungsten T5]] [[Personal digital assistant|PDA]] and [[Treo 650]] [[smartphone]] from [[PalmOne]], released in late [[2004]], use NAND flash to back up the contents of main memory during normal operations. PalmOne names this technique "non-volatile file system" ([[NVFS]]). It gives the illusion of a RAM storage pool that does not lose any of its data when power is removed. This [http://kb.palmone.com/SRVS/CGI-BIN/WEBCGI.EXE?New,Kb=PalmSupportKB,ts=Palm_External2001,case=obj(35222) PalmOne knowledge base article] explains how this technique works on the Treo 650.