Coding techniques to extend the lifetime of non-volatile memories, including Flash memory and solid-state drives, in computer systems
Flash memory is an extremely popular non-volatile memory technology. It is used in a wide range of devices, including USB memory sticks, smartphones, embedded sensors, and solid state disks (SSDs). In particular, SSDs have been gaining ground for replacing hard disk drives (HDDs) as the storage medium of choice for both consumer and enterprise applications. Flash SSDs are popular because of their speed, reliability, and availability. However, a major drawback of Flash is wearout, referring to the fact that Flash cells can only support a limited number of erases before they fail. This shortcoming can be magnified by patterns of writing data that concentrate writes and erases on a small number of cells in a given device. Accordingly, extending the operating life of Flash memory is an area of ongoing research. In particular, Flash lifetime extension is critical for applications where servicing or replacing the device is costly (e.g., in large datacenters or smartphones) or impractical (e.g., space probes and embedded sensors).
Duke researchers have reported a novel method to dramatically extend the lifetime of Flash memory intended to help all potential and current users of Flash, including datacenters. This invention increases the number of writes to a page of non-volatile memory before the page must be erased. Instead of writing a dataword directly to memory, a codeword is written to the memory location. The key innovation is using a coset code that provides flexibility in choosing which codeword to write; that is, every dataword has multiple codewords that are valid representatives of it. This flexibility enables choosing codewords so as to enable a page to be rewritten multiple times before each erase and to maximize the spread of wear across memory cells. The coset coding is also integrated with error correction encoding. This extends the life of the Flash memory and decreases the likelihood of degradation which could lead to errors and system failure. It is shown that lifetime gains of over 500% are possible with only modest encoding and decoding complexity. These methods and techniques can be carried out in any system in order to extend the lifetime of the Flash memory.
- Flash lifetime gains of over 500%
- This invention can be carried out in any system