Writing cosets of a convolutional code to increase the Lifetime of Flash memory
The goal of this paper is to extend the lifetime of Flash memory by reducing the frequency with which a given page of memory is erased. This is accomplished by increasing the number of writes that are possible before erasure is necessary. Redundancy is introduced into the write process to decrease the number of memory cells that are impacted by a given write, and to even out the impact of writing across an entire page of memory. Improvements are expressed in terms of write efficiency and lifetime gain. Write efficiency is the ratio of cells written to cells available, and lifetime gain is the ratio of coded writes to the baseline of uncoded writing. We use a physical model that allows multiple writes to a given region of memory. This can be realized with single level cells or with multi-level cells. Data is written to memory in the form of a coset of a convolutional code. The coset is represented by a binary vector that is selected by the Viterbi algorithm to minimize the number of cells impacted by the write (Hamming weight) and to even out the number of writes to each cell within a given page. Several different Viterbi metrics are evaluated. It is shown that page write efficiencies of over 85% and lifetime gains of over 500% are possible with only modest encoding and decoding complexity. It is also straightforward to integrate lifetime extension with standard methods of error correction by requiring that the coset representative be drawn from an error correcting code. An example is provided where single error correction is provided using a Hamming code. © 2012 IEEE.