Rank modulation

Rank modulation is a data representation scheme for multi-level flash memory cells, in which a set of $n$ cells stores information in the permutation induced by the different charge levels of the individual cells. The scheme eliminates the need for discrete cell levels, as well as overshoot errors, when programming cells.

Motivation
Flash memory is a non-volatile memory technology that is both electrically programmable and electrically erasable. Its reliability, high storage density, and relatively low cost have made flash memory a dominant non-volatile memory technology and a prominent candidate to replace the wellestablished magnetic recording technology in the near future.

The most conspicuous property of flash storage is its inherent asymmetry between cell programming (charge placement) and cell erasing (charge removal). While adding charge to a single cell is a fast and simple operation, removing charge from a single cell is very difficult. In fact, today, most (if not all) flash memory technologies do not allow a single cell to be erased but rather only a large block of cells. Thus, a single-cell erase operation requires the cumbersome process of copying an entire block to a temporary location, erasing it, and then programming all the cells except for the single cell to be erased.

To keep up with the ever-growing demand for denser storage, the multi-level flash cell concept is used to increase the number of stored bits in a cell. Instead of the usual single-bit flash memories, where each cell is in one of two states (erased/programmed), each multi-level flash cell stores one of $q$ levels and can be regarded as a symbol over a discrete alphabet of size $q$. This is done by designing an appropriate set of threshold levels which are used to quantize the charge level readings to symbols from the discrete alphabet.

Fast and accurate programming schemes for multi-level flash memories are a topic of significant research and design efforts. These efforts share the attempt to iteratively program a cell to an exact prescribed charge level in a minimal number of programming cycles. As mentioned above, flash memory technology does not support charge removal from individual cells. As a result, the programming cycle sequence is designed to cautiously approach the target charge level from below so as to avoid undesired global erases in case of overshoots. Consequently, these attempts still require many programming cycles, and they work only up to a moderate number of levels per cell.

In addition to the need for accurate programming, the move to multi-level flash cells also aggravates reliability. The same reliability aspects that have been successfully handled in single-level flash memories may become more pronounced and translate into higher error rates in stored data. One such relevant example is errors that originate from low memory endurance, by which a drift of threshold levels in aging devices may cause programming and read errors.

The basic scheme
The aim of the rank modulation scheme is to eliminate both the problem of overshooting while programming cells, and the problem of memory endurance in aging devices. In this scheme, an ordered set of $n$ multi-level cells stores the information in the permutation induced by the charge levels of the cells. In this way, no discrete levels are needed (i.e., no need for threshold levels) and only a basic charge-comparing operation (which is easy to implement) is required to read the permutation. The technology may allow in the near future the decrease of all the charge levels in a block of cells by a constant amount smaller than the lowest charge level (block deflation), which would maintain their relative values, and thus leave the information unchanged. This can eliminate a designated erase step, by deflating the entire block whenever the memory is not in use.

Local rank-modulation
In the local rank-modulation scheme, only local comparisons are being made, creating a sequence of small induced permutations instead of a single all-encompassing permutation.

Programming operations
The simplest charge-placement mechanism is a “push-to-the-top” operation which takes a single cell of the set and makes it the top-charged cell. If we assume that the only programming operation allowed is push-to-the-top, then the overshoot problem is no longer relevant.

Rewriting codes
When the data stored using a rank modulation code needs to be modified, the flash memory can increase some cells’ charge levels so that the updated cell state represents the new data. The highest charge level increases with each rewriting operation. When it reaches the maximum possible charge level, the next rewriting leads to the block erasure and reprogramming. Since block erasure/reprogramming is expensive – it not only is time/power consuming, but also reduces the reliability and longevity of flash memories, – it is very important to maximize the number of times that data can be rewritten between two block erasure operations.