From Flash to Disk

I ask many questions here that I don’t know the answers to. There may be a few useful ideas.

Flash memory is predicated on storing a bit by using a very small piece of metal, the floating gate, surrounded on all sides by insulator. An electric charge on this piece may last for years. The charge can be changed by sufficient voltage on a nearby conductor. Gradually such changes degrade the insulation and this limits how many time a ‘wirte-word’ in flash may be written. Reading flash is by sensing the electric field of the charge and reading is non destructive

There are two difficult tasks that are nearly alike:

The second question does not presume that the task is to emulate a hard disk. There are many accommodations in classic disk drivers to specific hard disks attributes. They cost time and space and possible bugs. Head motion optimization comes to mind. There are contrasting flash attributes, write limits, etc. There are also issues of assuring that overwritten data is in fact gone. Encrypting for flash probably has different requirements than for disk.

Generational garbage collection results in blocks of storage that remain unmodified for significant time spans. I fear the consequences of stacking similar abstractions. Under common situations LRU upon LRU is pessimal instead of optimal. See this for other flash strategies.

I will try to record here the properties of NAND and NOR that are pertinent to the logical design. By “word” I mean the natural and efficient size of the unit of storing or of reading. The write-word may be bigger than the read-word. A large quoted read-word may imply a limitation on how often new addresses may be specified.

Both systems do split cycle big writes—erase followed by small ors-to-memory.
NOR writes are slow.
NOR provides fast reads and small read-words.
Jargon: The erase-word is conventionally called “erase segment”, “block” or “sector”.
The erase-word for NOR is large but the rewrite-word is small.
NAND is cheaper per bit than NOR.
The read-word for NAND is about 29 bits.


Flash memory would be good for accumulating Bloom filters where for long time periods bits are only changed from 0 to 1.
Quote: I think not. I think it is because microcontrollers want data too frequently from different places; too many read addresses per unit time. “Random read rate” might serve as a noun phrase. Today it has become common to write 8 bit bytes into memory and this is difficult for Flash. Once computer instruction sets provided only longer write-words.
This standard may be relevant.