WO2013134735A1 - Rank-modulation rewriting codes for flash memories - Google Patents

Rank-modulation rewriting codes for flash memories Download PDF

Info

Publication number
WO2013134735A1
WO2013134735A1 PCT/US2013/030043 US2013030043W WO2013134735A1 WO 2013134735 A1 WO2013134735 A1 WO 2013134735A1 US 2013030043 W US2013030043 W US 2013030043W WO 2013134735 A1 WO2013134735 A1 WO 2013134735A1
Authority
WO
WIPO (PCT)
Prior art keywords
cells
wom
vector
rank
new data
Prior art date
Application number
PCT/US2013/030043
Other languages
French (fr)
Inventor
Anxiao Jiang
Eyal EN GAD
Jehoshua Bruck
Eitan Yaakobi
Original Assignee
California Institute Of Technology
Texas A&M University System
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by California Institute Of Technology, Texas A&M University System filed Critical California Institute Of Technology
Publication of WO2013134735A1 publication Critical patent/WO2013134735A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5649Multilevel memory with plate line or layer, e.g. in order to lower programming voltages

Definitions

  • 61/608245 entitled “Compressed Encoding for Rank Modulation” by Anxiao Jiang, Eyal En Gad and Jehoshua Bruck filed March 8, 2012 and claims the benefit of U.S. Provisional Application Serial No. 61/608465 entitled “Multi-Cell memories and compressed Rank Modulation” by Anxiao Jiang, Eyal En Gad, and Jehoshua Bruck filed March 8, 2012 and claims the benefit of U.S. Provisional Application Serial No. 61/725347 entitled “Rank-Modulation Rewriting Codes for Flash Memories” by Anxiao Jiang, Eyal En Gad, Eitan Yaakobie and Jehoshua Bruck filed November 12, 2012. Priority of the filing dates is hereby claimed, and the disclosures of the prior applications are hereby incorporated by reference for all purposes.
  • the present disclosure generally relates to data storage devices, systems and methods.
  • data modulation techniques in data storage devices such as flash memory devices are described.
  • Flash memories are one type of electronic non-volatile memories (NVMs), accounting for nearly 90% of the present NVM market. See, for example, the Web site of Saifun
  • Example applications of flash memories include cell phones, digital cameras, USB flash drives, computers, sensors, and many more.
  • Flash memories are now sometimes used to replace magnetic disks as hard disks, such as the
  • Flash memories may have a limited lifetime due to the quality degradation caused by block erasures; a flash memory can endure only about W ⁇ 10° block erasures before it becomes no longer usable (see S. Aritome et al,
  • a minimum push-up scheme to store data in flash memories is described.
  • v is defined as an element of S where S is defined as a set of symbols in a rank modulation coding scheme.
  • n is defined as a number of ranks in v to be stored in a group of n rank locations in data storage of the data device.
  • each of the n rank locations may comprise a cell of the device data storage.
  • each rank location may comprise a plurality of cells of the device data storage.
  • each rank location may comprise an equal number of cells of the device data storage.
  • programming may comprise increasing the value of all cells in the rank location v, until the value in each of the cells v, is greater than the value in each of the cells in the rank location v,- +1 .
  • NAND flash memory is the most widely used type for general storage purpose.
  • NAND flash several floating gate transistors are connected in series where we can read or write only one of them at a time.
  • Each transistor is replaced with a multi-cell of m transistors connected in parallel.
  • the control gates, the sources and the drains of the transistors are connected together. That way, their current sums together in read operations, and the read precision increases by m times, allowing the storages of mq levels in a single multi-cell.
  • write operations the same value is written to all the transistors, such that the sum of their charge levels provides the desired total level.
  • a plurality of transistors each of which is capable of storing charge, are disposed on a device.
  • Each of the plurality of transistors comprises a gate, a source, and a drain. Connections are formed between the sources, gates and drains of each of the plurality of transistors. Each connection is capable of carrying electrical current.
  • data is stored in the plurality of transistors. The data corresponds to a sum of charges stored in each of the plurality of transistors.
  • connections may be formed between the gates of each of the plurality of transistors.
  • a process for operating a data device is provided. First, a code word is generated that has a plurality of symbols selected from a set of symbols. Each of the plurality of symbols is stored in a data storage location of the data device. Each data storage location comprises a plurality of parallel connected devices. In some embodiments the plurality of parallel connected devices may comprise transistors.
  • multi-permutations used for storing data in flash memories.
  • the paradigm of representing information with permutations is generalized to the case where the number of cells in each level is a constant greater than 1, multi-permutations.
  • the states that the cells can take are no longer permutations of a set, but permutations of a multiset.
  • the two cells in each level do not need to be identical in their analog values, they just need to be distinguishable with other levels (but do not need to be mutually distinguishable).
  • the encoding and decoding use relative levels, and the scheme has good resistance to drift; namely, the advantages of the permutation based relative scheme that we described above still apply.
  • a computer method of operating a data device where a predetermined rank configuration (di, d 2 . . . d n ) is defined. Further, d, is the number of cells in the i th rank.
  • a new multi-permutation is received and defined by e that fits the predetermined rank configuration.
  • a process is then initiated in response to receiving the new multi-permutation, adding charge to each cell in a plurality of memory locations such that the plurality of cells represent the new multi-permutation. The process may be continued.
  • the sequential order of an initial analog level of a stored value in each cell of a plurality of cells in a data device is determined.
  • the sequential order is defined as
  • a predetermined rank configuration (dj, d 2 . . . d n ) is defined, wherein d, is the number of cells in the i th rank.
  • d is the number of cells in the i th rank.
  • the analog levels of cells of a rank n in v are retained.
  • a new data representation and rewrite model used for storing data in flash memories.
  • a construction is illustrated which shows how to construct rank modulation codes achieving rate approaching two on each write. This construction takes advantage of the recently discovered polar codes which were recently used in the construction of WOM codes.
  • a computer method of operating a data device where a data value is received comprising a plurality of data sets wherein each data set is a set of values
  • a new data set for a rank of a plurality of ranks is received to store in the memory device wherein the memory device comprises a plurality of cells.
  • a current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set.
  • a binary representation of the plurality of cells is created and used to store the new data set.
  • a WOM code is used to combine the binary representation with the new data set to create a binary WOM vector.
  • the binary WOM vector is modified to equal quantities of l's and 0's within the candidate cells creating a new data vector.
  • the new data vector is written to the candidate cells. If a new data vector has been written for each rank of the plurality of ranks the process may continue. If all of the data vectors have not been written, then prior steps starting with receiving a new data set may be repeated until all the new data vectors have been written to the memory.
  • FIG. 1 is a representation of a memory cell arrangement using "push to the top” operations in accordance with the description herein.
  • FIG. 2 is a representation of a memory cell arrangement using "minimal push up” operations in accordance with the description herein.
  • FIG. 3 is a representation of a memory cell arrangement using typical "minimal push up" operations in accordance with the description herein.
  • FIG. 4 is a representation of a memory cell arrangement depicting a rare case of "minimal push up" operations in accordance with the description herein.
  • FIG. 5 is a state diagram for the states of three cells in accordance with the description herein.
  • FIG. 6 is a process that depicts a programming approach that minimizes the increase of cell levels in accordance with the description herein.
  • FIG. 7A is a schematic diagram of a traditional arrangement of a NAND flash memory structure accordance with the description herein.
  • FIG. 7B is a schematic diagram of a multi-cell arrangement of a NAND flash memory structure accordance with the description herein.
  • FIG. 8A is a process for manufacturing and operating a data storage device in accordance with the description herein.
  • FIG. 8B is a process for operating a data storage device in accordance with the description herein.
  • FIG. 9 is a representation of a memory cell arrangement in accordance with the description herein.
  • FIG. 10 is a representation of a memory cell arrangement in accordance with the description herein.
  • FIG. 1 1 is a representation of a memory cell arrangement in accordance with the description herein.
  • FIG. 12 is a representation of a memory cell arrangement in accordance with the description herein.
  • FIG. 13 is a representation of system model for compressed rank modulation in accordance with the description herein.
  • FIG. 14A is a process for operating a data device in accordance with the description herein.
  • FIG. 14B is a process for reading a data device in accordance with the description herein.
  • FIG. 15A is a process for writing to a data device in accordance with the description herein.
  • FIG. 15B is a process for operating a data device in accordance with the description herein.
  • FIG. 15C is a process for operating a data device in accordance with the description herein.
  • FIG. 15D is a process for operating a data device in accordance with the description herein.
  • FIG. 15E is a process for operating a data device in accordance with the description herein.
  • FIG. 16 is an illustration of a memory device constructed in accordance with the present invention.
  • FIG. 17 is a block diagram of a computer apparatus to perform the operations of FIGS. 6, 8 A, 8B, 14 and 15 for communicating with a memory device such as depicted in FIG. 16.
  • FIG. 18 is a block diagram that shows data flow in a memory device that operates according to the rank modulation scheme described herein.
  • the amount of charge stored in a flash memory cell can be quantized into q > 2 discrete values in order to represent up to log 2 q bits.
  • the q states of a cell are referred to as its levels: level 0, level 1, . . . , level q— 1.
  • the charge is quantized into discrete levels by an appropriate set of threshold levels.
  • the level of a cell can be increased by injecting charge into the cell, and decreased by removing charge from the cell. Flash memories have a properly that although it is relatively easy to increase a cell's level, it is very costly to decrease it. This results from the structure of flash memory cells, which are organized in blocks of about 10 s ⁇ 10 6 cells.
  • Block erasures are not only slow and energy consuming, but also significantly reduce the longevity of flash memories, because every block can endure only about 10 4 10 5 erasures with guaranteed quality. See, for example, P. Cappelletti, C. Golla, P. Olivo, and E. Zanoni, Flash Memories. Kluwer Academic Publishers, 1999. Therefore, reducing the number of block erasures improves the longevity of flash memories.
  • MLC flash memory In MLC flash memory, the process of programming a cell to a specific level is designed carefully. The target level is approached from below in order to avoid overshooting of the cell, which may result in an undesirable block erasure. Consequently, these attempts use multiple programming cycles, and they work only up to a moderate number of levels per cell, e.g. 8 or 16 levels.
  • a framework of the rank modulation coding was introduced. See, for example, A. Jiang, R. Mateescu, M. Schwartz, and J. Bruck, Rank modulation for flash memories, IEEE Trans, on Inform. Theory, vol. 55, no. 6, pp. 2659-2673, Jun. 2009, hereinafter Rank Modulation for flash memories.
  • This coding scheme is to represent the information by the relative values of the cell levels rather than by their absolute values. Given a set of N cells, their levels induce a permutation which is used to encode the data.
  • One of the features of the rank modulation scheme is that in
  • a cell is charged to a higher level than that of the previous cell in the permutation, and therefore there is reduced risk of overshooting.
  • Another feature of representing data by the ranking of the cells, is that the threshold levels are no longer needed. This mitigates the effects of retention in the cells (slow charge leakage).
  • Rank Modulation for flash memories described rewriting codes for the rank modulation scheme, in order to reuse the memory between block erasures.
  • a motivation behind rewriting codes for flash memories is to increase the number of times data can be rewritten between two erasure operations while preserving the constraint that cells only increase their level.
  • a feature is to minimize the increase in the highest charge level among the cells after a rewriting operation.
  • rewriting of different permutations may increase the highest charge level of the cells by different magnitudes. For example, assume the current permutation be (3,1,2), such that the first cell has the highest level, e.g. its rank is 3, then the third cell (rank 2) and finally the second cell (rank 1). Now assume the cells are rewritten and are to represent the permutation (2,3,1) ⁇ This can be done by adding sufficient charge to cell 2 such that its level is greater than the first cell's level. Now consider a different case, where the cells need to represent the permutation (1,2,3).
  • the level of both cell 2 and cell 3 are raised to be higher than the level of cell l, as shown in FIG. 1. Since some gap may be needed between them, and also some gap between cell 2 and cell 1, it is possible that the increase in the level of the highest cell in the second example, may be twice as much as the increase in the first example.
  • a consequence from the previous operation(s) is, that if every permutation represents different information, then the number of rewrites before incurring a block erasure can vary between different input data sequences.
  • rewriting codes let multiple permutations represent the same information (that is, introducing redundancy).
  • Rank Modulation for flash memories rewriting codes were studied under a strong constraint of push-to-the-top operations. In every push-to-the-top operation, a single cell is set to be the top-charged cell. This scheme provides easy implementation and fast programing, but it suffers a relatively low rate.
  • the data is not represented by a single permutation, but rather, a sequence of permutations of a given size, which may overlap, are used to represent the data.
  • Yet another variation, called partial rank modulation was introduced. See, for example, Z. Wang and J. Bruck, "Partial rank modulation for flash memories," in Proceedings of the 2010 IEEE International Symposium on Information Theory (ISIT2010), Austin, TX, U.S.A., Jun. 2010, pp. 864-868.
  • the data is represented by a single permutation, but only the highest if cell levels, for some fixed k, may be considered for the information representation.
  • the cost of changing the state in the scheme - namely, the cost of the rewriting step - is measured by the number of "push-to-top" operations that are used, because it represents by how much the maximum cell level among the n cells has increased. See, for example, A. Jiang, R.
  • Described in this disclosure is a programming approach that minimizes or otherwise reduces the increase of cell levels as illustrated in FIG. 6.
  • the cells are programed based on their order in v, so that every cell's level increases as little as possible:
  • Example 1 For the rewriting process shown in FIG. l , the virtual levels of cells 1, 2, 3, 4 change as (3,4,2,1) ⁇ (3,4,2,5) ⁇ (6,4,2,5) ⁇ (6,7,2,5). Its cost is 3.
  • the model captures the typical behavior of cell programming. Yet when the minimal- push-up operations are used, the number of cells to push may not always be a constant when the old and new states ix, v are given.
  • An example programming process is shown in
  • FIG. 3 where two cells - cell 4 and then cell 2 - are pushed up sequentially.
  • the rewriting cost is 1. This is consistent with the increase of the maximum cell level here.
  • cell 1 will also be programmed, leading to three minimal-push-up operations in total.
  • we would like to show that above discrete model is still a robust model for the following reasons. First, in this paper we focus on the typical (i.e., most probable) behavior of cell programming, where the rewriting cost matches the actual increase of the maximum cell level well.
  • £ v can be computed as follows:
  • the cost is equal to the maximal increase in rank among the cells.
  • Theorem 1 Theorem 1 .
  • There is a directed edge u ⁇ v if and only if C(n ⁇ v) 1 .
  • G n 2 ra_ 1 — 1.
  • ⁇ 3 ⁇ 41 ( ⁇ ) I n.
  • each state must have an edge in A n to at least one state labeled by each other symbol.
  • a set of vertices D in G n as a dominating set if any vertex not in D is the initial vertex of an edge that ends in a vertex in D. Every denominating set is assigned to one symbol.
  • Construction 1 Divide the 24 states of S 4 into 6 sets of 4 states each, where each set is a coset of ⁇ (1,2,3,4)), the cyclic group generated by (1,2,3,4).
  • Pre/ 3 ⁇ [1A3AS], [1,2,3,5.,4], [1,3,2,4,5] ⁇
  • Pre/ 3 ⁇ [1,2], [1,3] ⁇ .
  • a lower bound is provided to a dominating set's size.
  • This set of prefixes can be partitioned into sets of two members, each sharing the same prefix in Pre 3 (S )3 ).
  • B 2 an d Ps denotes the only member of Pre 3 (i? 2 ). Since D is a dominating set, all of the members of Pre 2 (S n ) are dominated. Therefore, the third prefix p 2 3 g B 2 such that ⁇ 3 ⁇ 4 ⁇ ⁇ * s dominated by some u e D, u - v. Moreover, u dominates also one of the prefixes in B z .
  • X v denotes the set of prefixes in Pre 2 (S W ) that are dominated by v and not by any u ⁇ v such that u E D
  • F v denotes the prefixes in Pre 2 (S n ) that are also dominated by at least one such u ⁇ v.
  • X ⁇ v eD ⁇ X V ⁇ and ⁇ - ⁇ v e 3 [ F v
  • An optimal full assignment code construction is presented with dominating sets of 10 members.
  • Construction 2 Divide the 120 states of S s into 12 sets of 10 states each, where each set is composed of five cosets of ⁇ (4,5)), and two permutations with the same parity are in the same set if and only if they belong to the same coset of ⁇ (1,2,4,3.5)). Map each set to a different symbol.
  • Each set D in Construction 2 is a dominating set.
  • Each coset representative is treated as a representative of the domination over the 4 prefixes in Pre 3 (S 5 ) that are dominated by the coset. According to the construction, a set of
  • D be called C.
  • the subset ⁇ v,g z * v] represents a domination over a single disjoint prefix in Pref 4 (S s ).
  • the rate of the code may be any rate of the code.
  • the constructions studied above can be generalized.
  • the construction begins by dividing the n ⁇ states S n into sets, where two states are in the same set if and only if their first n— S elements are the same.
  • the sets are all dominating sets, because we can get to any set by at most n— 5 "push-to-top" operations.
  • Each of these sets to 12 sets of 10 members is further divided, in the same way as in Construction 2, according to the last 5 elements of the permutations.
  • Method 600 may include one or more operations, actions, or functions as illustrated by one or more of blocks 605, 610, 615, 620, 625, 630 and 635. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • Block 610 can be followed by block 615, where v can be defined as an element of S.
  • Block 615 can be followed by block 620, where S can be defined as a set of symbols in a rank modulation coding scheme.
  • Block 620 can be followed by 625, where n can be defined as a number of ranks in v to be stored in a group of n rank locations in data storage of the data device.
  • Block 630 can be followed by block 635, where the process may be continued.
  • each of the n rank locations may comprise a cell of the device data storage.
  • each rank location may comprise a plurality of cells of the device data storage.
  • each rank location may comprise an equal number of cells of the device data storage.
  • programming may comprise increasing the value of all cells in the rank location v, until the value in each of the cells v, is greater than the value in each of the cells in the rank location /+ i.
  • q may have a moderately small number.
  • Various example methods described herein may achieve high values of q with the existing cell technology. The main idea is to combine several floating gate transistors into a virtual cell, which we call a multi-cell.
  • NAND flash memory is a widely used type of memory for general storage purposes.
  • NAND flash several floating gate transistors are typically coupled in series (see FIG. 7A), where read or write operations occur one at a time.
  • the present disclosure proposes to replace various transistors with a multi-cell of m transistors that are coupled together in parallel, with commonly controlled gates, as shown in FIG. 7B.
  • read operations the currents of the transistors sum together, and the read precision may increase by m times, allowing to store mq levels in a single multi-cell.
  • write operations the same value can be written into all of the transistors coupled together with a common gate, such that the sum of their charge levels gives the desired total level.
  • the resulting error rates of read and write operations of the configuration in Fig. 7B are substantially the same as those error rates found in a traditional flash cell.
  • the number of updates the scheme can take should be greater than the number of cells we use.
  • the number of updates may increase at the expense of the instantaneous capacity, and the total capacity is approached faster.
  • the cells can be programmed based on their order in ⁇ ', so that each cell's level may increase as little as possible.
  • cost (c ⁇ c') denote the cost of changing the cell state from c to c'. The cost can be defined as the difference between the levels of the highest cell, before and after the update operation.
  • cost (c ⁇ c') c' ⁇ , ⁇ — c ⁇ ⁇ y
  • the cost may be a function of ⁇ _1 and ⁇ ' " 1 , where ⁇ _1 is the inverse of the permutation ⁇ . See, for example, E. En
  • the cost is the L ⁇ quasimetric.
  • An update scheme, or update code, C may include a decoding function f and an update function g.
  • the decoding function /: S n ⁇ D may identify the permutation ⁇ E S tl as a representation of the data /( ⁇ ) G D.
  • ⁇ 3 ⁇ 4£? be the instantaneous capacity of an update code C.
  • i w (C) be the maximal number of updates that C can support for all update sequences.
  • a bound is derived for C W (S) and C B (C), when q and n are large numbers, and q is much greater than n.
  • a bound for C t -((?) is derived in the cases where C w (e ⁇ ) and C a (£) are asymptotically optimal.
  • the i-th digit from the right in a factorial number has base i, which means that the digit is less than i. Therefore, the base of digit d t is n/logn— i.
  • Construction 1 Permutation based update code.
  • the decoding function, fV can be used to decode a permutation ⁇ to a data state d.
  • logn permutations
  • each element is the number of elements following the element in the permutation that are greater than it.
  • the decoding function may be composed of a sequence of digit functions
  • Each digit function f f - OX 1 - i ⁇ os * ⁇ ⁇ 0,1, - 1 - i) can be used to decode the digit d t
  • V(i) ⁇ V Q ( ), V ⁇ (i), 3 ⁇ 4 cgii -iCQ ⁇ -
  • the function takes place sequentially from d 0 to d n - losn _
  • the cost of update is the L ⁇ quasimetric: coaL ( ⁇ ⁇ ')— inax ie ⁇ ( ⁇ _ (£)— t ⁇ (t)). Therefore, if all the digits are updated by phase 2, the cost of the update operation is 1.
  • the number of binary sequences of length logn is n, and therefore the algorithm can check all of them in polynomial time. In order to avoid the calculation of the sum for each sequence, the algorithm can use a binary reflected Gray code, and calculate only the difference of one transposition in each step.
  • the cost of the update is 2. The running time of the algorithm remains polynomial in that case.
  • the cost can be determined as n/logn— 1, but the running time remains polynomial, since we can choose the elements of V' j quickly. Since all the steps in the update algorithm take polynomial time, the worst-case complexity is polynomial in n.
  • the probability that at least one digit is updated according to phase 3 is at most (n/logn) (1— (logn/n))". This is the probability that the update cost will be greater than 1. Similarly, the probability that the update cost is greater than 2 is at most (n/logn)(l— (logn/n)j * , since phase 3 uses ternary sequences. We now show that the expected cost of the update algorithm is approaching 1 :
  • FIG. 8A depicts a process 800 for manufacturing and operating a data device.
  • Process 800 may include one or more operations, actions, or functions as illustrated by one or more of blocks 805, 810, 815, 820, 825 and 830. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • the process starts with block 805.
  • a plurality of transistors each of which is capable of storing charge are disposed on a device.
  • Each of the plurality of transistors comprises a gate, a source, and a drain.
  • connections are formed between the sources of each of the plurality of transistors. Each connection is capable of carrying electrical current.
  • connections are formed between the drains of each of the plurality of transistors. Each connection is capable of carrying electrical current.
  • data is stored in the plurality of transistors. The data corresponds to a sum of charges stored in each of the plurality of transistors.
  • the process may continue. In some
  • connections may be formed between the gates of each of the plurality of transistors.
  • FIG. 8B depicts a process 850 for operating a data device.
  • Process 850 may include one or more operations, actions, or functions as illustrated by one or more of blocks 855, 860, 865 and 870. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • the process starts with block 855.
  • a code word is generated that has a plurality of symbols selected from a set of symbols.
  • each of the plurality of symbols is stored in a data storage location of the data device. Each data storage location comprises a plurality of parallel connected devices.
  • the process may be continued.
  • the plurality of parallel connected devices may comprise transistors.
  • the states that the cells can take are no longer permutations of a set, but permutations of a multiset.
  • the encoding and decoding may use relative levels, and the scheme has good resistance to drift; namely, the advantages of the permutation based relative scheme that we described above still apply.
  • Another example is the case where the number of levels is 2, and there are many cells in each level. In this case, the multi-permutations are balance binary sequences.
  • the analog level of a cell may correspond to its charge level or threshold- voltage level.
  • the analog level of a cell may correspond to its resistance level.
  • the x-th cell is said to have rank i.
  • rank i 4 cells induce the permutation [4,2,1,3].
  • Rank modulation may have two advantages:
  • the state of the cells can be read in a simple way. For the n cells, their ranks can be determined by sorting. That is, we just need to measure the order of the cell levels. There may be no need to measure the exact value of the cell levels.
  • n and d lf d z ,— , d n be parameters that are positive integers.
  • d 1 + d 2 +— J- d n cells whose analog levels are denoted by c t , ⁇ 3 ⁇ 4, ⁇ , dt + d ⁇ + ... +& ⁇ . They are assigned n different ranks based on their analog levels, where the d ⁇ cells of the lowest analog levels are assigned rank 1, the next d 2 cells are assigned rank 2, ⁇ ⁇ , and the top d n cells are assigned rank n.
  • cell 4 and cell 6 have rank 1 (the lowest rank), cell 2 and cell 3 have rank 2 (the middle rank), and cell 1 and cell 5 have rank 3 (the highest rank)).
  • Example 4 illustrates that the compressed rank modulation can improve the storage capacity.
  • cells of the same rank can be programmed to arbitrarily close analog levels (just for the sake of explanation).
  • the gap between their analog levels can be assumed to be ⁇ .
  • the compressed rank modulation scheme may have the advantages of the original rank modulation scheme:
  • the state of the cells can be read in a simple way. All we need is still just sorting.
  • the d t cells of the lowest analog levels have rank 1, the next cells have rank 2, ⁇ ⁇ , and the top d n cells have rank n.
  • the programming method is essentially the same as the one for the initial write. It also avoids overshooting programming errors, and is robust and efficient.
  • a compressed rank modulation code has
  • Such a codeword can be easily converted to a vector (v v 7 , ⁇ , v 2n ) G ⁇ 0,1,2,3 ⁇ 20 with the simple mapping: 00 ⁇ 0, 01 ⁇ 1, 10 ⁇ 2, 11 ⁇ 3, and get
  • the mapping used in inverting cell levels is not unique. For example, we can change 0 to 2 instead of 3, or change 1 to 3 instead of 2, etc. (The key is to switch ⁇ 0,1 ⁇ with ⁇ 2,3 ⁇ when inverting cells.)
  • the input data is a vector ( ⁇ ⁇ ' ⁇ ⁇ ' " ' ' v i t +d 2 ⁇ - + d n e ⁇ 0,1, ⁇ " , n— l ⁇ di+ ⁇ :!+ '""+ d « , where each integer v t - can independently be any integer in the alphabet ⁇ 0,1, ⁇ - ,n— I ⁇ .
  • FIG. 14A depicts a process 1400 for operating a data device.
  • the process 1400 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1405, 1410, 1415, 1420, and 1425. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • the process starts with block 1405.
  • a predetermined rank configuration (dj, d 2 . . . d n ) is defined, wherein d; is the number of cells in the i th rank.
  • a process is initiated in response to receiving the new multi-permutation, adding charge to each cell in a plurality of memory locations such that the plurality of cells represent the new multi-permutation.
  • the process may be continued.
  • FIG. 14B depicts a process 1450 for reading a data device.
  • the process 1450 starts with block 1455.
  • block 1460 the sequential order of an initial analog level of a stored value in each cell of a plurality of cells in a data device is determined.
  • the sequential order is defined as a value x comprising
  • FIG. 15A depicts a process 1500 for writing to a data device.
  • the process 1500 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1505, 1507, 1509, 151 1, 1513, and 1515. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • the process starts with block 1505.
  • block 1507 a In block 1507 a
  • predetermined rank configuration (dj, d 2 . . . d n ) is defined, wherein dj is the number of cells in the i th rank.
  • a new multi-permutation is received and defined by
  • v [v lf v 2 , - - , v n ] e 5 mat f lts me predetermined rank configuration.
  • the analog levels of cells of a rank n in v are retained.
  • the cells of rank i in v for I n - 1 , n - 2 . . ., 1 such that the analog levels of cells in a rank are programmed to all be higher than the analog levels of the cells of rank z ' +l in v by at least a minimum rank differentiation.
  • the process may be continued.
  • rank modulation codes that achieve a rate approaching two on each write.
  • One embodiment takes advantage of the recently discovered polar codes which were recently used in the construction of WOM codes. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986.
  • the levels are virtual in the sense that they do not correspond to a discretization of the cell level, but to the resolution of the charge detection and the power of the noise that might affect the relative levels of the cells.
  • the multipermutation ⁇ ( ⁇ (1), ⁇ (2), ..., ⁇ ( ⁇ ')) is derived as follows. First, let i , ... , i N be an order of the cells such that c ⁇ c ⁇ ⁇ ⁇ ⁇ c t ⁇ . Then, the cells f ... , i get the rank 1, the cells ⁇ ⁇ 1 , i z ⁇ z get the rank 2 and so on.
  • the initial state of all the cells is the all-zero vector, 0.
  • the goal is to reuse the memory for T successive rewrites without incurring an erasure operation.
  • the encoder and decoder can use the same code for every cycle, and there are no decoding errors (zero-error case).
  • the code C(f, g) supports any sequence ofT writes (d t , ...,d T ) I T .
  • rank-modulation rewriting codes One goal in the design of rank-modulation rewriting codes is to maximize the sum-rate. For that, we first try to maximize the number of writes and then maximize the instantaneous rate on each write. This is achieved carefully in a way that the maximum level on each write increases with high probability by one level. Another goal we will draw our attention to in the design of such codes is low complexity of the encoding and decoding functions. The design of codes with high rate and low complexities will be the topic of the next chapter, where we explain the construction of our rank-modulation rewriting codes.
  • ⁇ ⁇ ( ⁇ ) is at least cr C 2 (i)— i. That is, in case the rank of a cell decreases, it cannot decrease by more than one rank.
  • the cells in the first rank in c' can only be the ones from the first or second rank of c, i.e. c _(l) is a subset of ⁇ (1) u o c ⁇ 1 (2).
  • the cells in the second rank of c' can only be the ones from the first, second, or third rank of c, which are not already assigned to the first rank of c'.
  • a write-once memory comprises of a number of "write once" cells, where each cell is initially in state “0" and can be irreversibly programmed to state " 1".
  • Rivest and Shamir demonstrated that it is possible to rewrite such a write-once memory multiple times, using coding techniques, called WOM codes. See, for example, R. L. Rivest and A. Shamir, "How to reuse a "write-once” memory,” Inform, and Control, vol. 55, pp. 1-19, 1982.
  • WOM code that writes a constant number of cells in the second write we could use that code to write more than twice, since we know the number of cells which were not programmed after the second write, and we could keep using the same code (with different parameters) for the subsequent writes. So in fact, a WOM code that might be suitable for our problem should be a code which allows more than two writes to the memory. Since we are interested in WOM codes with high rates, it is natural to consider the recently proposed polar WOM codes. Polar WOM codes were introduced by Burshtein and Strugatski, and they are the first WOM codes that allow to write more than twice with sum-rate which asymptotically approaches the sum-capacity, log(£ + 1). See, for example, D. Burshtein and A.
  • the encoder f p ⁇ ⁇ c, d) can have a small probability that the conditions doesn't meet, in which case we say that the encoding fails.
  • N 1 N + msNn 1 (the value of n' will be explained later).
  • hi ⁇ 1,2, JV ⁇ 0,1 ⁇ ⁇ ' which receives an integer between zero and N and returns a balanced vector of length v!.
  • h can be implemented, where in both cases logN ⁇ n' ⁇ 2logN. See, for example, The Art of Computer Programming Volume 4, Fascicle 3. Addison Wesley, 2005 and D. E. Knuth, "Efficient balanced codes," IEEE Trans, on Inform. Theory, vol. 32, no. 1, pp. 51- 53, 1986. We also assume that this function has an inverse function h ⁇ x : lm(h) ⁇ ⁇ 1,2, ... , N ⁇ .
  • the information cells vector c and the redundancy cells vector r are multipermutations with m consecutive levels such that the number of cells in each level is the same.
  • S min be the minimum cell level
  • -i max be the maximum level (note that
  • indices i j for 1 ⁇ j ⁇ ⁇ w k
  • the information vector d' (d , ' «j rf' TO _i) is decoded as follows.
  • the proposed rewrite codes have a different trade-off between the rate and the number of writes.
  • the rewrite codes increase the value of the highest level among the cells by a single level, and allow a rate of 2 bits/cell.
  • the codes can be used such that the value of the highest cell increases by c levels in each write, with a rate of (c+l)log2(c+l)-clog2(c) bits/cell.
  • the redundancy cells vector is a multipermutation ofmsNn 1 cells with ⁇ 1 cells in each of the m consecutive levels:
  • Polar WOM codes were proposed in order to write multiple times over a WOM. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. In the following, we briefly describe the construction of polar WOM codes in order to show the modifications we introduce in these codes to satisfy the conditions of Assumption 1 and to achieve high sum-rate.
  • a set F comprising of the N(l— R) sub-channels with the highest Z(W N ), and denoted as the frozen set.
  • the information is transmitted on the remaining NR sub-channels, while the input on the sub-channels in F is fixed to be some frozen vector u F (the elements of the vector w in the set F).
  • frozen set F is defined by
  • a test channel is considered with binary input X and an output (5, ), where S and V are binary variables as well.
  • the probability transition function of the t-th channel is defined by,
  • a polar code is designed with block length N with a frozen set as in (1).
  • the polar code is used for lossy source coding, with rate where S t is arbitrarily small for N sufficiently large.
  • the t-th encoder uses a common randomness source, also called dither, denoted by g t , sampled from an N dimensional uniformly distributed random binary vector, and known both to the encoder and to the decoder.
  • (z) Ft denotes the elements of the vector z in the set F t .
  • the polar WOM code described above can be used to write this sequence reliably over the WOMw.p. at least 1— 2 ⁇ in encoding and decoding complexities 0(N log N).
  • Theorem is based on the fact that in every write, the WOM property is held, and in addition, the number of written cells in bounded. We bring this result in the following Lemma, that we then use in order to prove Assumption 1. See, for example, D. Burshtein and A.
  • R t defined in (2), a frozen set of sub-channels F t , and some frozen vector u F ⁇ which is uniformly distributed over all ⁇ F t ⁇ dimensional binary vectors.
  • the code is used to encode a random vector
  • Lemma 5 The code € p>s described above satisfies the three properties of Assumption 1 w.p. at least 1— 2 ⁇ N ⁇ .
  • each vector a corresponds to exactly one vector x(ti).
  • Qt/l ⁇ ) be the probability that x(u),y € - * W ( ,F).
  • S fJ35t can take any value below 2 for large enough m and ⁇ , if z/ 3 is large enough as well.
  • the probability of writing failure is achieved by the union bound. Each time f p>s is applied, the probability of encoding failure is at most 2 ⁇ N . is applied m— 1 times in each operation of the rank-modulation encoding, and therefore, for large enough N, the rank- modulation encoding is successful w.p. at least 1— 2 ⁇ . Since the rank-modulation encoding is applied ⁇ ' times, the probability of successful write of the whole information sequence is at least
  • the encoder can take one of two strategies.
  • One option is to use a different dither value. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986.
  • the decoder can realize the correct dither value, either by direct communication (by using extra storage), or by switching to the next dither value upon detection (e.g., using CRC) a decoding failure.
  • the encoder can take a different strategy. We bring here the idea of this strategy, without a formal description and analysis. In case of encoding error, the encoder can recalculate the vector v fc in
  • v k 0 if and only if i E S' k U S 3 ⁇ 4+2 .
  • the expected value of T will not be affected by much if q is large enough compared to N.
  • FIG. 15B depicts a process 1520 for operating a data device.
  • the process 1520 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1525, 1527, 1529, 1531, 1533, 1535, 1537, 1539, and 1541. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • a new data set for a rank of a plurality of ranks is received to store in the memory device wherein the memory device comprises a plurality of cells.
  • a current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set.
  • a binary representation of the plurality of cells is created and used to store the new data set.
  • a binary representation of the plurality of cells is used to store the new data set.
  • a WOM code is used to combine the binary representation with the new data set to create a binary WOM vector.
  • the binary WOM vector is modified to equal quantities of l 's and 0's within the candidate cells creating a new data vector.
  • the new data vector is written to the candidate cells.
  • the process may be continued.
  • the WOM is a Polar WOM.
  • the cost of writing is defined as a maximum level of the plurality of cells after writing the new data vector minus a maximum level of the candidate cells before writing the new data vector. In some embodiments, the cost is one.
  • the method further comprises reading the new data vector from the candidate cells, modifying the new data vector to recreate the binary WOM vector and using a WOM code on the binary WOM vector to separate the binary representation from the data set.
  • FIG. 15C depicts a process 1545 for operating a data device.
  • the process 1545 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1547, 1549, 1551, 1553, 1555, and 1557. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • the process starts with block 1547.
  • a new data set m is received for a rank of a plurality of ranks to store in the memory device wherein the memory device comprises a plurality of cells.
  • a current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set.
  • FIG. 15D depicts a process 1560 for operating a data device.
  • the process 1560 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576, 1578, and 1580. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • a data value is received comprising a plurality of data sets wherein each data set is a set of values representing a rank in a plurality of ranks.
  • a new data set for a rank of a plurality of ranks is received to store in the memory device wherein the memory device comprises a plurality of cells.
  • a current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set.
  • a binary representation of the plurality of cells is created and used to store the new data set.
  • a binary representation of the plurality of cells is created an used to store the new data set.
  • a WOM code is used to combine the binary representation with the new data set to create a binary WOM vector.
  • the binary WOM vector is modified to equal quantities of 1 's and 0's within the candidate cells creating a new data vector.
  • the new data vector is written to the candidate cells.
  • blocks 1566-1578 may be repeated until all the new data vectors have been written.
  • FIG. 15E depicts a process 1584 for operating a data device.
  • the process 1560 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1586-1599. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
  • the process 1560 may include one or more operations, actions, or functions as illustrated by one or more of the blocks.
  • the process starts with block 1586.
  • a plurality of cells are read and a multi-permutation stored in the plurality of cells is determined.
  • a group of cells are identified in the plurality of cells, contained within each rank of a plurality of ranks.
  • a new data vector is read from the rank.
  • the new data vector is modified to recreate a binary WOM vector.
  • a WOM code is used on the binary WOM vector to separate a binary representation from a data set.
  • block 1598 if a WOM code has been used on each rank the process may continue to block 1599. If a WOM code has not been used on each rank the blocks of 1592 through 1596 may be repeated until a WOM code has been used on each rank.
  • FIG. 16 is an illustration of one embodiment of a data device constructed in accordance with the present disclosure.
  • FIG. 16 shows a memory 1602 that is accessed by a memory controller 1604 that communicates with a host device 1606, which may all be operatively or communicatively coupled to each other.
  • the memory 1602 is used for storing data that is represented in accordance with a minimum push up, multi-cell or multi-permutation scheme.
  • the memory may be implemented, for example, as a Flash memory having multilevel cells.
  • the memory 1602 and memory controller 1604 together comprise a data storage device 1608 that may be external to the host device or may be integrated with the host device into a single component or system.
  • the data storage device 1608 may comprise a Flash memory device (sometimes referred to as a "thumb drive”) that communicates with a host computer 1606 via a USB connection, or the data storage device may comprise a solid state drive (SSD) that stores data for a host computer system.
  • the data storage device may be integrated with a suitable host device to comprise a single system or component with memory employing a minimum push up, a multi-cell or a multi-permutation scheme, such as a smart phone, network router, MP3 player, or the like.
  • the memory controller 1604 operates under control of a microcontroller 1610, which manages communications with the memory 1602 via a memory interface 1612 and manages communications with the host device via a host interface 1614. Thus, the memory controller supervises data transfers from the host 1606 to the memory 1602 and from the memory 1602 to the host 1606.
  • the memory controller 1604 also includes a data buffer 1616 in which data values may be temporarily stored for transmission over the data channel controller 1617 between the memory 1602 and the host 1606.
  • the memory controller also includes an Error Correcting code (ECC) block 1618 in which data for the ECC is maintained.
  • ECC Error Correcting code
  • the ECC block 1618 may comprise data and program code to perform error correction operations for a minimum push up, a multi-cell or a multi-permutation scheme. Such error correction operations are described, for example, in the U.S. Patent 8225180 entitled “Error Correcting Codes for Rank Modulation" by Anxiao Jiang et al. issued July 17, 2012.
  • the ECC block 1618 may contain parameters for the error correction code to be used for the memory 1602, such as programmed operations for translating between received symbols and error-corrected symbols, or the ECC block may contain lookup tables for codewords or other data, or the like.
  • the memory controller 1604 performs the operations described above for decoding data and for encoding data.
  • FIGS. 6, 8A, 8B, 14 and 15 The operations described above for operating a data storage device, for reading data from a device, for programming a data storage device, and encoding and decoding, can be carried out by the operations depicted in FIGS. 6, 8A, 8B, 14 and 15 which can be performed by the microcontroller 1610 and associated components of the data storage device 1608.
  • the operations depicted in FIGS. 6, 8A, 8B, 14 and 15 which can be performed by the microcontroller 1610 and associated components of the data storage device 1608.
  • the rank modulation coding scheme in a USB thumb drive all the components of the data storage device 1608 depicted in FIG. 16 are contained within the USB thumb drive.
  • the processing components such as the controller 1604 and microcontroller 1610 may be implemented in the form of control logic in software or hardware or a combination of both, and may comprise processors that execute software program instructions from program memory, or as firmware, or the like.
  • the host device 1606 may comprise a computer apparatus.
  • a computer apparatus also may carry out the operations of FIGS. 6, 8 A, 8B, 14 and 15.
  • FIG. 17 is a block diagram of a computer apparatus 1700 sufficient to perform as a host device and sufficient to perform the operations of FIGS. 6, 8A, 8B, 14 and 15.
  • FIG. 17 is a block diagram of a computer system 1700 that may incorporate
  • the computer system 1700 may include one or more processors 1705, a system bus 1710, storage subsystem 1715 that includes a memory subsystem 1720 and a file storage subsystem 1725, user interface output devices 1730, user interface input devices 1735, a communications subsystem 1740, and the like.
  • the computer system 1700 may include computer components such as the one or more processors 1705.
  • the file storage subsystem 1725 can include a variety of memory storage devices, such as a read only memory (ROM) 1745 and random access memory (RAM) 1750 in the memory subsystem 1720, and direct access storage devices such as disk drives.
  • the direct access storage device may comprise a rank modulation data storage device that operates as described herein.
  • the user interface output devices 1730 can comprise a variety of devices including flat panel displays, touchscreens, indicator lights, audio devices, force feedback devices, and the like.
  • the user interface input devices 1735 can comprise a variety of devices including a computer mouse, trackball, trackpad, joystick, wireless remote, drawing tablet, voice command system, eye tracking system, and the like.
  • the user interface input devices 1735 may allow a user to select objects, icons, text and the like that appear on the user interface output devices 1730 via a command such as a click of a button or the like.
  • Embodiments of the communication subsystem 1740 typically include an Ethernet card, a modem (telephone, satellite, cable, ISDN), (asynchronous) digital subscriber line (DSL) unit, FireWire (IEEE 1394) interface, USB interface, and the like.
  • a modem telephone, satellite, cable, ISDN
  • DSL digital subscriber line
  • FireWire IEEE 1394
  • USB USB interface
  • communications subsystem 1740 may be coupled to communications networks and other external systems 1755 (e.g., a network such as a LAN or the Internet), to a FireWire bus, or the like.
  • the communications subsystem 1740 may be physically integrated on the motherboard of the computer system 1700, may be a software program, such as soft DSL, or the like.
  • the RAM 1750 and the file storage subsystem 1725 are examples of tangible non- transitory media configured to store data such as error correction code parameters, codewords, and program instructions to perform the operations described herein when executed by the one or more processors, including executable computer code, human readable code, or the like.
  • Other types of tangible non-transitory media include program product media such as floppy disks, removable hard disks, optical storage media such as CDs, DVDs, and bar code media, semiconductor memories such as flash memories, read-only-memories (ROMs), battery-backed volatile memories, networked storage devices, and the like.
  • the file storage subsystem 1725 includes reader subsystems that can transfer data from the program product media to the storage subsystem 1715 for operation and execution by the processors 1705.
  • the computer system 1700 may also include software that enables communications over a network (e.g., the communications network 1755) such as the DNS, TCP/IP, UDP/IP, and HTTP/HTTPS protocols, and the like.
  • a network e.g., the communications network 1755
  • DNS Globalstar, GTE, etc.
  • TCP/IP Transmission Control Protocol
  • UDP/IP User Data Management Protocol
  • HTTP/HTTPS protocols HTTP/HTTPS protocols
  • other communications software and transfer protocols may also be used, for example IPX, or the like.
  • the computer system 1700 may be a desktop, portable, rack-mounted, or tablet configuration. Additionally, the computer system 1700 may be a series of networked computers. Further, a variety of microprocessors are contemplated and are suitable for the one or more processors 1705, such as PENTIUMTM microprocessors from Intel
  • the techniques described above may be implemented upon a chip or an auxiliary processing board (e.g., a programmable logic device or graphics processor unit).
  • control logic in software or hardware or a combination of both.
  • the control logic may be stored in an information storage medium as a plurality of instructions adapted to direct an information- processing device to perform the methods or portions thereof disclosed in described herein.
  • Other ways and/or methods to implement the embodiments are possible.
  • the minimum push up, multi-cell and multi-permutation schemes described herein can be implemented in a variety of systems for encoding and decoding data for transmission and storage. That is, codewords are received from a source over an information channel according to a minimum push up, a multi-cell or a multi-permutation scheme and are decoded into their corresponding data values and provided to a destination, such as a memory or a processor, and data values for storage or transmission are received from a source over an information channel and are encoded into a minimum push up, multi-cell or multi-permutation scheme.
  • FIG. 18 shows data flow in a data device 1802 that operates according to the minimum push up, multi-cell or multi- permutation schemes described herein.
  • the device includes a Data Modulation (DM) controller 1804 that stores and retrieves information values 1806 using one of a minimum push up, multi-cell or a multi-permutation scheme.
  • the DM controller 1804 includes an encoder and decoder 1808 for encoding data values into codewords and decoding codewords into data values.
  • the DM controller encodes data values and provides codewords to the source/destination block 1810, and decodes codewords from the source/destination and provides corresponding data values.
  • the two-way nature of the data flow is indicated by the double-ended arrows labeled "data values" and "codewords”.
  • the DM controller includes interfaces through which the DM controller receives and provides the data values and the information values (codewords).
  • the information values 1806 comprise the means for physically representing data comprising the data values and codewords.
  • the information values 1806 may represent charge levels of memory cells, such that multiple cells are configured to operate as a virtual cell in which charge levels of the cells determine a permutation of the minimum push up, multi-cell or multi-permutation schemes. Data values are received and encoded to permutations of a minimum push up, multi-cell or multi-permutation scheme and charge levels of cells are adjusted accordingly, and codewords are determined according to cell charge levels, from which a corresponding data value is determined.
  • the information values 1806 may represent features of a transmitted signal, such as signal frequency, magnitude, or duration, such that the cells or bins are defined by the signal features and determine a permutation of the minimum push up, multi-cell or multi-permutation schemes. For example, rank ordering of detected cell frequency changes over time can determine a permutation, wherein the highest signal frequency denotes the highest cell level. Other schemes for physical representation of the cells may be used.
  • the source/destination 1810 comprises memory cells in which n memory cells provide n cell values whose charge levels define a a minimum push up, multi-cell or multi-permutation scheme.
  • the memory cells receive an encoded codeword and comprise a destination, and for reading a codeword, the memory cells provide a codeword for decoding and comprise a source.
  • the source/destination 1810 may comprise a transmitter/receiver that processes a signal with signal features such as frequency, magnitude, or duration that define cells or bins such that the signal features determine a permutation.
  • signal components comprising signal frequency, magnitude, or duration may be controlled and modulated by the transmitter such that a highest signal frequency component or greatest magnitude component or greatest time component corresponds to a highest cell level, followed by signal component values that correspond to other cell values and thereby define a permutation of the minimum push up, multi-cell or multi-permutation schemes.
  • the source/destination 1810 receives a codeword from the controller 1804, the source/destination comprises a transmitter of the device 1802 for sending an encoded signal.
  • the source/destination provides a codeword to the controller 1804 from a received signal, the source/destination comprises a receiver of the device for receiving an encoded signal.
  • Signal components of the transmitted signal may be suitably modulated or otherwise transformed to define minimum push up, multi-cell or multi-permutation schemes, in view of the description herein.
  • a programming method may substantially reduce rewriting cost for rank modulation, and studied rewrite codes for a worst-case constraint on the cost.
  • Some presented codes may be optimal full-assignment codes, although additional code constructions are contemplated of general code length, non-full assignment codes and average-case cost constraint.
  • Some examples describe a flash cell structure (multi-cell) that may enable a high number of updates between block erasures.
  • Various update codes that are based on permutations of relative levels are also described.
  • ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

Rank modulation has been recently proposed as a scheme for storing information in flash memories. Three improved aspects are disclosed. In one aspect the minimum push-up scheme, for storing data in flash memories is provided. It aims at minimizing the cost of changing the state of the memory. In another aspect, multi-cells, used for storing data in flash memories is provided. Each transistor is replaced with a multi-cell of mm transistors connected in parallel. In yet another aspect, multi-permutations, are provided. The paradigm of representing information with permutations is generalized to the case where the number of cells in each level is a constant greater than one. In yet another aspect, rank-modulation rewriting schemes which take advantage of polar codes, are provided for use with flash memory.

Description

RANK-MODULATION REWRITING CODES FOR FLASH MEMORIES
CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application Serial No.
61/608245 entitled "Compressed Encoding for Rank Modulation" by Anxiao Jiang, Eyal En Gad and Jehoshua Bruck filed March 8, 2012 and claims the benefit of U.S. Provisional Application Serial No. 61/608465 entitled "Multi-Cell memories and compressed Rank Modulation" by Anxiao Jiang, Eyal En Gad, and Jehoshua Bruck filed March 8, 2012 and claims the benefit of U.S. Provisional Application Serial No. 61/725347 entitled "Rank-Modulation Rewriting Codes for Flash Memories" by Anxiao Jiang, Eyal En Gad, Eitan Yaakobie and Jehoshua Bruck filed November 12, 2012. Priority of the filing dates is hereby claimed, and the disclosures of the prior applications are hereby incorporated by reference for all purposes.
BACKGROUND
[0002] The present disclosure generally relates to data storage devices, systems and methods. In various examples, data modulation techniques in data storage devices such as flash memory devices are described.
[0003] Flash memories are one type of electronic non-volatile memories (NVMs), accounting for nearly 90% of the present NVM market. See, for example, the Web site of Saifun
Semiconductors Ltd. (available at www.saifun.com) and Web-Feet Research, Inc. (available at www.web-feetresearch.com). Today, billions of flash memories are used in mobile, embedded, and mass-storage systems, mainly because of their high performance and physical durability.
See, for example, P. Cappelletti et al., Chapter 5, "Memory Architecture and Related Issues" in
Flash memories, Kluwer Academic Publishers, 1st Edition, 1999), and E. Gal and S. Toledo,
ACM Computing Surveys, 37(2): 138-163 (2005). Example applications of flash memories include cell phones, digital cameras, USB flash drives, computers, sensors, and many more.
Flash memories are now sometimes used to replace magnetic disks as hard disks, such as the
64GB hard disk by SanDisk (see "SanDisk launches 64 gigabyte solid state drives for notebook
PCs, meeting needs for higher capacity," available at the Web site URL of
http://biz.yahoo.com/cnw/070604/sandisk.html?.v=l). See also the Web article on the 256GB hard disk by PQI ("PQI unveils 256GB solid state drive," available at the URL of www.guru3d.com/newsitem.php?id=5392). Based on the popular floating-gate technology, the dominance of flash memories is likely to continue.
[0004] Some problems exist that may limit the improvement of flash memories with respect to their speed, reliability, longevity, and storage capacity. Flash memories may have a limited lifetime due to the quality degradation caused by block erasures; a flash memory can endure only about W ~ 10° block erasures before it becomes no longer usable (see S. Aritome et al,
Proceedings of the IEEE, 81(5):776-788 (1993), and P. Cappelletti et al., ibid. Removing charge from any single cell for data modification may require the block to be erased and all the 105 or so cells in it to be reprogrammed (or programmed to another block). The writing speed may be constrained by a conservative cell-programming process that is about ten times slower than reading. One purpose of such conservative programming is to avoid over-programming, a serious error that may only be correctable by block erasure and reprogramming. Data reliability may be limited by errors caused by charge leakage, disturbs, and the like. See S. Aritome et al., ibid; P. Cappelletti et al., ibid; and P. Pavan et al., Proceedings of The IEEE, 85(8): 1248-1271 (August 1997). The errors become more common when multi-level cells are used to increase the storage capacity.
SUMMARY
[0005] In some examples, a minimum push-up scheme to store data in flash memories is described. In some embodiments, the minimum push-up scheme starts with data values v = [ι¾,ΐ¾> " ,vn] e Sn that are received to be stored in data storage containing current values t_ = [u1,¾t2, ·· , unj E Sn. Next, v is defined as an element of S where S is defined as a set of symbols in a rank modulation coding scheme. Further, n is defined as a number of ranks in v to be stored in a group of n rank locations in data storage of the data device. The group of n rank locations are programmed according to the rank modulation coding scheme and the value v such that for i = n - 1, n - 2, . . ., 1 the programmed value of a rank location v, is increased until it is greater than the value of a rank location vi+\ by a minimum cell differentiation amount.
[0006] In some embodiments each of the n rank locations may comprise a cell of the device data storage. In further embodiments, each rank location may comprise a plurality of cells of the device data storage. In other embodiments, each rank location may comprise an equal number of cells of the device data storage. In still further embodiments, programming may comprise increasing the value of all cells in the rank location v, until the value in each of the cells v, is greater than the value in each of the cells in the rank location v,-+1. In other embodiments, the current values of at = [¾,ti2, "',uj e Sn are read from the device data storage before the programming of the group of n rank locations with v.
[0007] In another aspect, a new scheme, multi-cells, used for storing data in flash memories is provided. NAND flash memory is the most widely used type for general storage purpose. In NAND flash, several floating gate transistors are connected in series where we can read or write only one of them at a time. Each transistor is replaced with a multi-cell of m transistors connected in parallel. The control gates, the sources and the drains of the transistors are connected together. That way, their current sums together in read operations, and the read precision increases by m times, allowing the storages of mq levels in a single multi-cell. In write operations, the same value is written to all the transistors, such that the sum of their charge levels provides the desired total level.
[0008] In some embodiments processes for manufacturing and operating a data device are provided. A plurality of transistors, each of which is capable of storing charge, are disposed on a device. Each of the plurality of transistors comprises a gate, a source, and a drain. Connections are formed between the sources, gates and drains of each of the plurality of transistors. Each connection is capable of carrying electrical current. Next, data is stored in the plurality of transistors. The data corresponds to a sum of charges stored in each of the plurality of transistors. In further embodiments connections may be formed between the gates of each of the plurality of transistors.
[0009] In yet further embodiments, a process for operating a data device is provided. First, a code word is generated that has a plurality of symbols selected from a set of symbols. Each of the plurality of symbols is stored in a data storage location of the data device. Each data storage location comprises a plurality of parallel connected devices. In some embodiments the plurality of parallel connected devices may comprise transistors.
[0010] In yet another aspect, multi-permutations, used for storing data in flash memories is provided. The paradigm of representing information with permutations is generalized to the case where the number of cells in each level is a constant greater than 1, multi-permutations.
[0011] Namely, the states that the cells can take are no longer permutations of a set, but permutations of a multiset. For example, if the number of cells at each level is 22, the two cells in each level do not need to be identical in their analog values, they just need to be distinguishable with other levels (but do not need to be mutually distinguishable). Hence, the encoding and decoding use relative levels, and the scheme has good resistance to drift; namely, the advantages of the permutation based relative scheme that we described above still apply.
The case where the multiplicities of all the elements in the multiset are equal, is denoted by∑.
This generalization becomes interesting especially when z is large, and n is still much larger than z. In that case (if q is still much larger than n), it can be proven that the upper bound on the total capacity is 2q bits per cell, and that there exists a construction that approaches this bound. The instantaneous capacity of the construction is approaching 2 bits per cell.
[0012] In some embodiments, a computer method of operating a data device where a predetermined rank configuration (di, d2 . . . dn) is defined. Further, d, is the number of cells in the ith rank. A new multi-permutation is received and defined by
Figure imgf000006_0001
e that fits the predetermined rank configuration. A process is then initiated in response to receiving the new multi-permutation, adding charge to each cell in a plurality of memory locations such that the plurality of cells represent the new multi-permutation. The process may be continued.
[0013] In other embodiments, the sequential order of an initial analog level of a stored value in each cell of a plurality of cells in a data device is determined. The sequential order is defined as
Figure imgf000006_0002
[0014] In further embodiments, a predetermined rank configuration (dj, d2 . . . dn) is defined, wherein d, is the number of cells in the ith rank. A new multi-permutation is received and defined by = lvi>v2> "" >v l e that fits the predetermined rank configuration. The analog levels of cells of a rank n in v are retained. Finally, the cells of rank i in v for I = n -1, n - 2 . . ., 1 such that the analog levels of cells in a rank are programmed to all be higher than the analog levels of the cells of rank i+l in v by at least a minimum rank differentiation. The process may be continued.
[0015] In yet another aspect, a new data representation and rewrite model, used for storing data in flash memories is provided. A construction is illustrated which shows how to construct rank modulation codes achieving rate approaching two on each write. This construction takes advantage of the recently discovered polar codes which were recently used in the construction of WOM codes.
[0016] In some embodiments, a computer method of operating a data device where a data value is received comprising a plurality of data sets wherein each data set is a set of values
representing a rank in a plurality of ranks. A new data set for a rank of a plurality of ranks is received to store in the memory device wherein the memory device comprises a plurality of cells. A current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set. A binary representation of the plurality of cells is created and used to store the new data set. A WOM code is used to combine the binary representation with the new data set to create a binary WOM vector. The binary WOM vector is modified to equal quantities of l's and 0's within the candidate cells creating a new data vector. The new data vector is written to the candidate cells. If a new data vector has been written for each rank of the plurality of ranks the process may continue. If all of the data vectors have not been written, then prior steps starting with receiving a new data set may be repeated until all the new data vectors have been written to the memory.
[0017] The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent by reference to the drawings and the following detailed description.
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] FIG. 1 is a representation of a memory cell arrangement using "push to the top" operations in accordance with the description herein.
[0019] FIG. 2 is a representation of a memory cell arrangement using "minimal push up" operations in accordance with the description herein.
[0020] FIG. 3 is a representation of a memory cell arrangement using typical "minimal push up" operations in accordance with the description herein.
[0021] FIG. 4 is a representation of a memory cell arrangement depicting a rare case of "minimal push up" operations in accordance with the description herein. [0022] FIG. 5 is a state diagram for the states of three cells in accordance with the description herein.
[0023] FIG. 6 is a process that depicts a programming approach that minimizes the increase of cell levels in accordance with the description herein.
[0024] FIG. 7A is a schematic diagram of a traditional arrangement of a NAND flash memory structure accordance with the description herein.
[0025] FIG. 7B is a schematic diagram of a multi-cell arrangement of a NAND flash memory structure accordance with the description herein.
[0026] FIG. 8A is a process for manufacturing and operating a data storage device in accordance with the description herein.
[0027] FIG. 8B is a process for operating a data storage device in accordance with the description herein.
[0028] FIG. 9 is a representation of a memory cell arrangement in accordance with the description herein.
[0029] FIG. 10 is a representation of a memory cell arrangement in accordance with the description herein.
[0030] FIG. 1 1 is a representation of a memory cell arrangement in accordance with the description herein.
[0031] FIG. 12 is a representation of a memory cell arrangement in accordance with the description herein.
[0032] FIG. 13 is a representation of system model for compressed rank modulation in accordance with the description herein.
[0033] FIG. 14A is a process for operating a data device in accordance with the description herein.
[0034] FIG. 14B is a process for reading a data device in accordance with the description herein.
[0035] FIG. 15A is a process for writing to a data device in accordance with the description herein. [0036] FIG. 15B is a process for operating a data device in accordance with the description herein.
[0037] FIG. 15C is a process for operating a data device in accordance with the description herein.
[0038] FIG. 15D is a process for operating a data device in accordance with the description herein.
[0039] FIG. 15E is a process for operating a data device in accordance with the description herein.
[0040] FIG. 16 is an illustration of a memory device constructed in accordance with the present invention.
[0041] FIG. 17 is a block diagram of a computer apparatus to perform the operations of FIGS. 6, 8 A, 8B, 14 and 15 for communicating with a memory device such as depicted in FIG. 16.
[0042] FIG. 18 is a block diagram that shows data flow in a memory device that operates according to the rank modulation scheme described herein.
DETAILED DESCRIPTION
[0043] The contents of this Detailed Description are organized under the following headings:
I. Introduction to Rank Modulation
II. Permutation "Minimum Push Up"
A. Rewrite Model and the Transition Graph
B. Worst-case Decoding Scheme for Rewrite
III. Multi-Cells
A. Multi-Cell Flash Memory
B. Notations and Model Properties
C. Upper Bounds
D. Construction for the Average Case
E. Existence for the Worst Case
IV. Multi-Permutations
A. Compressed Rank Modulation
1. Initial Write
2. Subsequent Rewrites 3. Programming Symmetric Cells
4. Rebalancing Permutations
5. Record Weights
V. Rank-Modulation Rewriting Codes
A. Definitions of the Rewrite Model
B. Description of the Construction
C. Polar WOM Codes
VI. Example Embodiments
VII. Conclusion
Subheadings in the description are not listed above but may be present in the description below.
[0044] I. Introduction to Rank Modulation
[0045] The amount of charge stored in a flash memory cell can be quantized into q > 2 discrete values in order to represent up to log2q bits. (The cell is called a single-level cell (SLC) if q = 2, and called a multi-level cell (MLC) if q > 2). The q states of a cell are referred to as its levels: level 0, level 1, . . . , level q— 1. The charge is quantized into discrete levels by an appropriate set of threshold levels. The level of a cell can be increased by injecting charge into the cell, and decreased by removing charge from the cell. Flash memories have a properly that although it is relatively easy to increase a cell's level, it is very costly to decrease it. This results from the structure of flash memory cells, which are organized in blocks of about 10s~106 cells.
In order to decrease any cell's level, its entire containing block is erased first (which involves removal of the charge from all the cells of the block) and after then it can be reprogrammed. Block erasures are not only slow and energy consuming, but also significantly reduce the longevity of flash memories, because every block can endure only about 104 105 erasures with guaranteed quality. See, for example, P. Cappelletti, C. Golla, P. Olivo, and E. Zanoni, Flash Memories. Kluwer Academic Publishers, 1999. Therefore, reducing the number of block erasures improves the longevity of flash memories.
[0046] In MLC flash memory, the process of programming a cell to a specific level is designed carefully. The target level is approached from below in order to avoid overshooting of the cell, which may result in an undesirable block erasure. Consequently, these attempts use multiple programming cycles, and they work only up to a moderate number of levels per cell, e.g. 8 or 16 levels. In order to avoid the problem of exact programming of a cell level, a framework of the rank modulation coding was introduced. See, for example, A. Jiang, R. Mateescu, M. Schwartz, and J. Bruck, Rank modulation for flash memories, IEEE Trans, on Inform. Theory, vol. 55, no. 6, pp. 2659-2673, Jun. 2009, hereinafter Rank Modulation for flash memories. The main idea of this coding scheme is to represent the information by the relative values of the cell levels rather than by their absolute values. Given a set of N cells, their levels induce a permutation which is used to encode the data. One of the features of the rank modulation scheme is that in
programming, a cell is charged to a higher level than that of the previous cell in the permutation, and therefore there is reduced risk of overshooting. Another feature of representing data by the ranking of the cells, is that the threshold levels are no longer needed. This mitigates the effects of retention in the cells (slow charge leakage).
[0047] Rank Modulation for flash memories described rewriting codes for the rank modulation scheme, in order to reuse the memory between block erasures. In general, a motivation behind rewriting codes for flash memories is to increase the number of times data can be rewritten between two erasure operations while preserving the constraint that cells only increase their level.
In rank modulation, a feature is to minimize the increase in the highest charge level among the cells after a rewriting operation. An observation is that rewriting of different permutations may increase the highest charge level of the cells by different magnitudes. For example, assume the current permutation be (3,1,2), such that the first cell has the highest level, e.g. its rank is 3, then the third cell (rank 2) and finally the second cell (rank 1). Now assume the cells are rewritten and are to represent the permutation (2,3,1)· This can be done by adding sufficient charge to cell 2 such that its level is greater than the first cell's level. Now consider a different case, where the cells need to represent the permutation (1,2,3). In this case, the level of both cell 2 and cell 3 are raised to be higher than the level of cell l, as shown in FIG. 1. Since some gap may be needed between them, and also some gap between cell 2 and cell 1, it is possible that the increase in the level of the highest cell in the second example, may be twice as much as the increase in the first example.
[0048] A consequence from the previous operation(s) is, that if every permutation represents different information, then the number of rewrites before incurring a block erasure can vary between different input data sequences. In order to obtain a large number of rewrites, rewriting codes let multiple permutations represent the same information (that is, introducing redundancy). Thus, when a certain data is to be written, there would be at least one permutation corresponding to that data that could be written without increasing the charge of the highest cell by a large amount. In Rank Modulation for flash memories, rewriting codes were studied under a strong constraint of push-to-the-top operations. In every push-to-the-top operation, a single cell is set to be the top-charged cell. This scheme provides easy implementation and fast programing, but it suffers a relatively low rate.
[0049] The work on rank modulation coding for flash memories paved the way for additional results in this area. First, error-correcting codes in the rank modulation setup attracted a lot of attention. See, for example, A. Barg and A. Mazumdar, "Codes in permutations and error correction for rank modulation," IEEE Trans, on Inform. Theory, vol. 56, no. 7, pp. 3158-3165, Jul. 2010; F. Farnoud, V. Skachek, and O. Milenkovic, "Rank modulation for translocation correction," in Proceedings of the IEEE International Symposiom on Information Theory Wor hop (ISIT), Jun. 2012, pp. 2988-2992; A. Jiang, M. Schwartz, and J. Bruck, "Correcting charge-constrained errors in the rank-modulation scheme," IEEE Trans, on Inform. Theory, vol. 56, no. 5, pp. 2112-2120, May 2010; I. Tamo and M. Schwartz, "Correcting limited-magnitude errors in the rank-modulation scheme," IEEE Trans, on Inform. Theory, vol. 56, no. 6, pp. 2551- 2560, Jun. 2010. Other variations of rank modulation were studied as well. A new concept of bounded/local rank modulation was introduced and its capacity was calculated. See, for example, Z. Wang, A. Jiang, and J. Bruck, "On the capacity of bounded rank modulation for flash memories," in Proc. 2009 IEEE Int. Symp. Information Theory, Jun. 2009, pp. 1234-1238. Here, the data is not represented by a single permutation, but rather, a sequence of permutations of a given size, which may overlap, are used to represent the data. Yet another variation, called partial rank modulation, was introduced. See, for example, Z. Wang and J. Bruck, "Partial rank modulation for flash memories," in Proceedings of the 2010 IEEE International Symposium on Information Theory (ISIT2010), Austin, TX, U.S.A., Jun. 2010, pp. 864-868. Now the data is represented by a single permutation, but only the highest if cell levels, for some fixed k, may be considered for the information representation.
[0050] II. Permutation "Minimum Push Up"
[0051] The cost of changing the state in the scheme - namely, the cost of the rewriting step - is measured by the number of "push-to-top" operations that are used, because it represents by how much the maximum cell level among the n cells has increased. See, for example, A. Jiang, R.
Mateescu, M. Schwartz, and J. Bruck, "Rank modulation for flash memories," IEEE Trans, on Inform. Theory, vol. 55, no. 6, pp. 2659-2673, Jun. 2009. Reducing this cell-level increment may be performed in one embodiment because the cells have a physical limit that upper bounds the cell levels. The less the cell levels are increased, the more rewrites can be performed before a block erasure operation is used, and the longer the lifetime of the memory will be.
[0052] An example is shown in FIG. 1, where the state of n = 4 cells is to be changed from u = [2,1,3,4] to v = [2,1,4,3]. (Here the cells are indexed by 1,2,— , n. And their state is denoted by the permutation [«ι,« ζ, "· ,«η] e Sn , where cell «x has the highest charge level and
un has the lowest charge level. For i = 1,■■· , n, cell ut has rank i.) Three "push-to-top" operations are used, where cell 4, cell 1 and cell 2 are pushed sequentially. They are represented by the three edges in FIG. 1. The cost of this rewriting is 3.
[0053] It can be seen from the above example, however, that the "push-to-top" operation is a conservative approach. To change the state from u = '2,1,3,4] to v = [2,1,4,3], when cell 4 is pushed, the level of cell 4 is pushed to be greater than cell 3. There is no need to make the level of cell 4 to be greater than the levels of all the other n— 1 = 3 cells (i.e., cells 1, 2 and 3).
Similarly, when cell 1 is pushed, its level is pushed to be greater than cell 3 and cell 4, instead of cells 2, 3 and 4. So a more moderate programming approach as shown in FIG. 2 can be taken, and the increment of the cell levels (in particular, the increment of the maximum cell level) can be substantially reduced. So, the cost of rewriting can be reduced, which improves the overall rewriting performance and the longevity of the memories.
[0054] Described in this disclosure is a programming approach that minimizes or otherwise reduces the increase of cell levels as illustrated in FIG. 6. To change the cell state from u— [ ] e Sn to v - [virv2, ~~ , vn] e Sn, the cells are programed based on their order in v, so that every cell's level increases as little as possible:
• For i = n— l,v.— 2,— ,1 perform:
{ Increase the level of cell v., to make it greater than the level of the cell vi41 }.
[0055] Note that in the above programming process, when cell vt is programmed, cell i?f+1 already has the highest level among the cells vi+. , vi+2, "" , vn. The programming operation here is referred to as the "minimal-push-up" operation. (In comparison, if cell vt is programmed to make its level greater than the maximum level among the cells vlf ■■■ , vi+v ■■■ , vn, then it becomes the original "push-to-top" operation.) The "minimal-push-up" approach is robust, as it has reduced risk of overshooting. And it reduces increment of the maximum level of the n cells
(e.g., the rewrite cost).
A. Rewrite Model and the Transition Graph
[0056] For coding schemes, a good robust discrete model is usedfor the rewriting. A discrete model is described herein for measuring the rewriting cost, which is suitable for both the "push- to-top" approach and the "minimal-push-up" approach. To rigorously describe the cost of a rewrite operation (i.e., a state transition), the concept of virtual levels is used. Let
] € M denote the current cell state, and let v = \vitvl t '" ,v„] € S„ denote the new state that the cells change into via increasing cell levels. Let d(u→ v) denote the number of push-up operations that are applied to the cells in order to change the state from u into v. For i = 1,2, " - , d(ii→v , let Pi [n] ½ £1,2, ·■■ , n} denote the integer and let Βέ <= [n]\£pt] denote the subset, such that the ί-th push-up operation is to increase the p-th cell's level to make it greater than the levels of all the cells in Bt. (For example, for the rewriting in FIG. 1, we have d(u→ v) = 3, pt = 4, Bx = {1,2,3}, p2 = 1, ¾ = {2,3,4}, p3 = 2, J53 = {1,3,4}. And for the rewriting in FIG. 2, we have d(u→ v) = 3, pt = 4, B±— {3}, pz = 1, B2 = {3,4}, p3 = 2,
2?3 = {1,3,4}.) Such push-up operations have reduced risk of overshooting.
[0057] For the current state u, we assign the virtual levels n, n— 1, · · -,2, 1 to the cells ux,u , ... , un-i, un, respectively. The greater a cell's level is, the greater its virtual level is. It is noted that when the virtual level increases by one, the increase in the actual cell level is not a constant because it depends on the actual programming process, which is noisy. However, when a cell is programmed to make its level higher than a cell b, the difference between the two cell levels will concentrate around an expected value. (For example, a one-shot programming using hot-electron injection can achieve stable programming performance at high writing speed.) Based on this, a discrete model for rewriting is provided, which may be a usable tool for designing coding schemes. [0058] Consider the ith push-up operation (for i = 1, ... , d → v)), where the level of cell ps is increased to make it greater than the levels of the cells in B For any / ε [n], let -t. denote cell ;"s virtual level before this push-up operation. Then after the push-up operation, the virtual level of cell p£ may be
1 I maxi.-i namely, it is greater than the maximum virtual level of the cells in Bt by one. This increase represents the increment of the level of cell p.. After the d(u.→ v) push-up operations that change the state from u to v, for i = 1, ,., , η, let ·ίέ' denote the virtual level of cell t. The cost of the rewriting process is described as the increase in the maximum virtual level of the n cells, which is
max i — n— $„ '— n.
i e M ½
[0059] Example 1 . For the rewriting process shown in FIG. l , the virtual levels of cells 1, 2, 3, 4 change as (3,4,2,1)→ (3,4,2,5)→ (6,4,2,5)→ (6,7,2,5). Its cost is 3.
[0060] For the rewriting process shown in FIG. 2, the virtual levels of cells 1, 2, 3, 4 change as (3,4,2,1)→ (3,4,2,3)→ (4,4,2,3)→ (4,5,2,3). Its cost is 1.
[0061] The model captures the typical behavior of cell programming. Yet when the minimal- push-up operations are used, the number of cells to push may not always be a constant when the old and new states ix, v are given. An example is shown in FIGS. 3 and 4, where the state changes from ni = [1,2,3.4] to v = [2,1,4,3]. An example programming process is shown in
FIG. 3, where two cells - cell 4 and then cell 2 - are pushed up sequentially. (Note that based on the discrete model, the rewriting cost is 1. This is consistent with the increase of the maximum cell level here.) But as shown in FIG. 4, in the rare case where cell 4's level is significantly over- raised to the extent that it exceeds the level of cell 1, cell 1 will also be programmed, leading to three minimal-push-up operations in total. However, we would like to show that above discrete model is still a robust model for the following reasons. First, in this paper we focus on the typical (i.e., most probable) behavior of cell programming, where the rewriting cost matches the actual increase of the maximum cell level well. In the rare case where cell levels are increased by too much, additional load balancing techniques over multiple cell groups can be used to handle it. Second, the rare case - that a cell's level is overly increased - can happen not only with the minimal-push-up operation but also with the push-to-top operation; and its effect on the increment of the maximal cell level is similar for the two approaches. So the discrete model still provides a fair and robust way to evaluate the rewriting cost of different state transitions.
[0062] This disclosure describes codes based on state transitions using the minimal-push-up operations. Given two states u = [ti(l), (2),••,it(n)] G Sn and v = [ν(ϊ),ν(2), ···, ν(ιί)] £ Sn, let C(u→ v) denote the cost of changing the state from u to v. (Note that «(-),*>(-) are both functions. Let u'1, v_1 be their inverse functions.) The value of C(u→ v) can be computed as follows. Corresponding to the old state u, assign virtual levels n,n - 1,■■·,! to the cells u(l , (2),— ,u(n), respectively. For i = 1,2,— ,η, let £i denote the virtual level of cell ί corresponding to the new state v. Then based on the programming process described previously, £v can be computed as follows:
1. For i = 1,2,— , n perform: {- eo «- n + l - i. )
2. For i = n— l,n - 2,— ,1 do:
Then:
C(u→ v) = ivi i - n.
It can be seen that 0 < C(n→ v)n— 1 . An example of the rewriting cost is shown in FIG. 5.
[0063] The following theorem provides an equivalent definition of the cost. According to the theorem, the cost is equal to the maximal increase in rank among the cells.
Theorem 1 .
C(u→ v)— max 7 _ 1 (i)— u- (£-)).
i ε [«]
[0064] Proof. Assume by induction on k that
^ ) = + 1 - k + max (i - u_1(p(i))). [0065] In the base case, k = n, and
^v(n} = n ' 1 n ' max t e [m...,n] 0 M_1(v(0)) = 1 ' M-1(v(n)). This is the result of the programming process. Now assume that the expression is true for k. For k— 1, by the programming process,
= maxKv,» + l,n + l - tT1 - 1))}
= max{n + 1— fc + max (i— u-1(i?fi))) + 1,
Figure imgf000017_0001
έ>3>· t¾e induction assumption
= n + 1 - (fc - 1) +
max{ max (£— u_1(f(i))),fe - I— — I))'
ί e [k,..„n]
= n + 1 - (k - 1) + max (i - _ 1(ν( )) and the induction is proven.
[0066] Now $V( is assigned in the definition of the cost: C(u→ v)
= n + l— 1 + max (i— t-1(i?(i))) - n
= rnax(i?_1(i)— ¾-1(£))
[0067] Codes for rewriting data based on the "push-to-top" operation have been studied. See, for example, A. Jiang, R. Mateescu, M. Schwartz, and J. Bruck, "Rank modulation for flash memories," IEEE Trans, on Inform. Theory, vol. 55, no. 6, pp. 2659-2673, Jun. 2009. Since the "minimal-push-up" approach has lower rewriting cost than the "push-to-top" operation, rewrite codes can be constructed with higher rates.
[0068] In order to discuss rewriting, a decoding scheme is defined. It is often the case that the alphabet size used by the user to input data and read stored information differs from the alphabet size used as internal representation. In one embodiment, data is stored internally in one of nl different permutations. Assume the user alphabet is Q = {1,2, q}. A decoding scheme is a function D :Sn→ Q mapping internal states to symbols from the user alphabet. Suppose the current internal state is u £ Sn and the user inputs a new symbol a £ Q. A rewriting operation given a is now defined as moving from state it £ Sn to state v £ 5¾ such that D(v) = a. The cost of the rewriting operation is C( → v).
[0069] Next, the transition graph G„ = (Vn,A^) is defined as a directed graph with = Sn, i.e., with n3 vertices representing the permutations in Sn. There is a directed edge u→ v if and only if C(n→ v) = 1 . Note that Gn is a regular digraph. Given a vertex n ^ and an integer r £ [0,1,— : n - 1}, the ball B^r(u) is defined as -?¾r(u) = {v £ V C(u→ v) < r}. Theorem 2.
I^(«) l = ^ (^ + i)n"r
[0070] Proof: Induction is used on n. When n = 2 the statement is trivial. (So is it when w. = r + 1 , where |Brfl/r(u)| = (r + 1)3.) Now the statement is assumed to be true for n≤ «.0, and consider n = nQ + 1 and n > r + 1. Let u = [u(l),u(2) — ,ω(η)] £ 5¾, and without loss of generality (w.l.o.g.) let (l) = n. Let v = [v(l),v(2), - --i v(n)] c B^r(ii). Let ϋ = [u(2),u(3), -" ,u(n)] £ 5„_l5 and let v Sn--1 be obtained from v by removing the element u(l} = 7i. By Theorem 1, the first element in u, namely tt(l) = n, can take one of the first r + 1 positions in v. Given that position, there is a one-to-one mapping between pushing-up the remaining r— 1 elements from u to v ε Sn and pushing-up those n— 1 elements from G to v £ 5¾_1, and C(«→ v) = C(u→ v)r. So the following results:
Figure imgf000018_0001
[0071] Note that given u, |{v £ Sn | - «-1(01 < r /or 1≤ ( < n}[ is the size of the ball under infinity norm. When r = 1, that size is known to be a Fibonacci number. See, for example, T. Klove, "Spheres of permutations under the infinity norm - permutations with limited displacement," University of Bergen, Bergen, Norway, Tech. Rep. 376, Nov. 2008.
[0072] In addition, we note that = 2n~ 1. Therefore, the out-degree of each vertex in
Gn is 2ra_ 1— 1. In comparison, when we allow only the "push-to-the-top" operation, |β¾1(ιι) I = n. Hence we get an exponential increase in the degree, which might lead to an exponential increase in the rate of rewrite codes. In the next section we study rewrite codes under a worst-case cost constraint.
B. Worst-case Decoding Scheme for Rewrite
[0073] Described herein are codes where the cost of the rewrite operation is limited by r. [0074] 1. The case of ji≤4
[0075] The case of r = 1 is evaluated first. The first non-trivial case for r = 1 is n = 3.
However, for this case the additional "minimal-push-up" transitions do not allow for a better rewrite code. An optimal construction for a graph with only the "push-to-top" transitions has been discussed. See, for example, A. Jiang, R. Mateescu, M. Schwartz, and J. Bruck, "Rank modulation for flash memories," IEEE Trans, on Inform. Theory, vol. 55, no. 6, pp. 2659-2673, Jun. 2009. That construction assigns a symbol to each state according to the first element in the permutation, for a total of 3 symbols. This construction may also be optimal for a graph with the "minimal-push-up" transitions.
[0076] For greater values of n, in order to simplify the construction, we limit ourselves to codes that assign a symbol to each of the nl states. We call such codes full assignment codes.
Note that better codes for which not all the states are assigned to symbols might exist. When all of the states are assigned to symbols, each state must have an edge in An to at least one state labeled by each other symbol. We define a set of vertices D in Gn as a dominating set if any vertex not in D is the initial vertex of an edge that ends in a vertex in D. Every denominating set is assigned to one symbol. Our goal is to partition the set of n! vertices into the maximum number of dominating sets. We start by presenting a construction for n = 4.
[0077] Construction 1. Divide the 24 states of S4 into 6 sets of 4 states each, where each set is a coset of {(1,2,3,4)), the cyclic group generated by (1,2,3,4). Here (1.2,3,4] s me permutation in the cycle notation, and = {[ΙΜΑΜΜΑΛΙ [ΖΑΛΛ], Ε4,Ι,2,¾ ap each set to a different symbol.
Theorem 3 . Each set in Construction 1 is a dominating set. [0078] Proof: Let Id be the identity permutation, g = (1,2,3,4) and G = (g). For each G 54, C is a coset of G. For each v = [ν(1),-·· , v(n)] G hG and each u = [u(l),—,«(n)] G 54 such that u(l)— v(l), u has an edge to either v or v * g. For example, in the coset ldG— G, for v = Id and u G 5„ such that = y(l) = 1, if u(2) is 2 or 3, u has an edge to ϊά— [1,2,3,4], and if u{2 — 4, u has an edge to Jd * = [4,1,2,3] . Since G is a cyclic group of order 4, for every n F S4 there exists v F hG such that = and therefore hG is a dominating set.
[0079] For k [n] and B £ Sn, define:
Prefk B") = {t\s = tu for \u\ = k and s G B] where t, it are segments of the permutation s. For example, Pre/3({[1A3AS], [1,2,3,5.,4], [1,3,2,4,5]}) = {[1,2], [1,3]}.
[0080] A lower bound is provided to a dominating set's size.
Theorem 4 . If D is a dominating set of Gn, then
*
[0081] Proof Each pa e P e S{5¾) is a prefix of 3 different prefixes in
Figure imgf000020_0001
For example, for n = 5, [1,2] is a prefix of {[1,2,3], [1,2,4], [1,2,5]]. Each v D dominates 2 ~2 prefixes in Prefz(Sn "). For example, for n = 4, every permutation that start with
[1,2], [1,3], [2,1] or [2,3] has an edge to [1,2,3,4]. This set of prefixes can be partitioned into sets of two members, each sharing the same prefix in Pre 3 (S)3 ). For one such set B2 = and Ps denotes the only member of Pre 3(i?2). Since D is a dominating set, all of the members of Pre 2(Sn) are dominated. Therefore, the third prefix p2 3 g B2 such that {¾} ~
Figure imgf000020_0002
*s dominated by some u e D, u - v. Moreover, u dominates also one of the prefixes in Bz. Therefore, at least half of the prefixes in Pref2{_S.^) that v dominates are also dominated by at least one other member of D. Xv denotes the set of prefixes in Pre 2(SW) that are dominated by v and not by any u≠v such that u E D, and Fv denotes the prefixes in Pre 2(Sn) that are also dominated by at least one such u≠ v. Also defined is X =∑v eD \XV\ and ¥ -∑v e 3 [ Fv |. It has been shown that |A'V | < 2™_s; so A' < Z" ~ \D\ . In addition,
Figure imgf000021_0001
because every element in the above union of sets appears in at least two of the sets. So:
= \ <
Figure imgf000021_0002
(2"~4 + 2n_3) |D | = 3 · 2n_4|D |
. Therefore | D \ > j^.
1 8 ·
[0082] Using the above bound, the rate of any full assignment code C is fl(C) < l- log2 - bits per cell. For the case of n = 4, \D \ > 4. Therefore Construction 1 is an optimal full assignment code.
[0083] 2. The case of = 5
[0084] In the case of n = S, a dominating set comprises of at least ^s '_£ == 10 members. An optimal full assignment code construction is presented with dominating sets of 10 members.
[0085] Construction 2 . Divide the 120 states of Ss into 12 sets of 10 states each, where each set is composed of five cosets of {(4,5)), and two permutations with the same parity are in the same set if and only if they belong to the same coset of {(1,2,4,3.5)). Map each set to a different symbol.
[0086] Let = (4,5) and gz = (1,2,4,3,5). An example of a dominating set where each row is a coset of gt and each column is a coset of g2 is:
{[1,2,3,4,5], [1,2,3,5,4]
[2,4,5,3,1], [2,4,5,1,3]
[4,3,1,5,2], [4,3,1,2,5]
[3,5,2,1,4], [3,5,2,4,1]
[5,1,4,2,3], [5,1,4,3,2]) Theorem 5 . Each set D in Construction 2 is a dominating set.
[0087] Proof: Each coset of gt) dominates 4 prefixes in ref3(Ss). For example, the coset
< i> - Ud - [1,2,3, ,5],^ - [1,2,3,5,4]} dominates the prefixes {[1,2], [1,3], [2,1], [2,3]].
Each coset representative is treated as a representative of the domination over the 4 prefixes in Pre 3(S5) that are dominated by the coset. According to the construction, a set of
representatives in D that share the same parity is a coset of (g^). Let one of the cosets of (g2) in
D be called C. For each v C, the subset {v,gz * v] represents a domination over a single disjoint prefix in Pref4(Ss). For example, for v = Id, the subset {ld = [1,2,3,4, 5], #2 * Id = [2,4,5,3,1]] represent a domination over the prefix [2]. Since \(g2)\ = 5, C represents a complete domination over Pref^(SR), and therefore D is a dominating set.
[0088] The rate of the code may be
R = ilog212 = 0.717 bits per cell
[0089] Recall that optimal codes with "push-to-top" operations use only n symbols for n cells.
Therefore, a rate improvement of (^log212)/(^bg2S) - 1 = 54.4% may be achieved.
[0090] 3. The case of r 2
[0091] When the cost constraint is greater than 1, the constructions studied above can be generalized. For a construction for the case r = n— 4, the construction begins by dividing the n\ states Sn into sets, where two states are in the same set if and only if their first n— S elements are the same. The sets are all dominating sets, because we can get to any set by at most n— 5 "push-to-top" operations. Each of these sets to 12 sets of 10 members is further divided, in the same way as in Construction 2, according to the last 5 elements of the permutations. By the properties of construction 2, each of the smaller sets is still a dominating set. The rate of the code is R =
Figure imgf000022_0001
bits p 1 er cell.
[0092] An example method 600 of operating a data device is illustrated in FIG. 6. Method 600 may include one or more operations, actions, or functions as illustrated by one or more of blocks 605, 610, 615, 620, 625, 630 and 635. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.
At block 605 the process can be started. Block 605 can be followed by block 610, where data values v = - uj e S can be received and are to be stored in data storage containing current values u = iui>u2' ' " > ' lin1 e s. Block 610 can be followed by block 615, where v can be defined as an element of S. Block 615 can be followed by block 620, where S can be defined as a set of symbols in a rank modulation coding scheme. Block 620 can be followed by 625, where n can be defined as a number of ranks in v to be stored in a group of n rank locations in data storage of the data device. Block 625 can be followed by block 630, where the group of n rank locations can be programmed according to the rank modulation coding scheme and the value v such that for i = n - 1, n - 2, . . ., 1 the programmed value of a rank location v, is increased until it is greater than the value of a rank location v,+i by a minimum cell
differentiation amount. Block 630 can be followed by block 635, where the process may be continued.
[0093] In some embodiments each of the n rank locations may comprise a cell of the device data storage. In further embodiments, each rank location may comprise a plurality of cells of the device data storage. In other embodiments, each rank location may comprise an equal number of cells of the device data storage. In still further embodiments, programming may comprise increasing the value of all cells in the rank location v, until the value in each of the cells v, is greater than the value in each of the cells in the rank location /+i. In other embodiments, the current values of u =
Figure imgf000023_0001
are read from the device data storage before the programming of the group of n rank locations with v.
[0094] III. Multi-Cells
[0095] We can store log2<7 bits on a flash cell with q levels. That way, each time we want to update the data on the memory, we would have to erase the whole block. We call this representation method "the trivial scheme". We could also use a bit more sophisticated update schemes. For example, we could store only 1 bit in each cell, according to the parity of the level of the cell. If the cell is in level 3, for example, it stores the value 1. Using this scheme, we can update the data q— 1 times before a block erasure will be required. We call this scheme "the parity scheme". Update schemes like the parity scheme can be especially useful for enterprise applications of flash memory, where the endurance of the memory becomes a major design concern. Update schemes are also known as write once memory (WOM) codes. See, for example, A. Fiat and A. Shamir, "Generalized "write-once" memories," IEEE Trans, on Inform. Theory, vol. IT-30, no. 3, pp. 470-480, May 1984; F.-W. Fu and A. J. Han Vinck, "On the capacity of generalized write-once memory with state transitions described by an arbitrary directed acyclic graph," IEEE Trans, on Inform. Theory, vol. 45, no. 1, pp. 308-313, Jan. 1999; R. L. Rivest and A. Shamir, "How to reuse a "write-once" memory," Inform, and Control, vol. 55, pp. 1-19, 1982.
[0096] While the values of the cells in the relative scheme don't need to be quantized, discrete levels can be used for analysis to simplify the calculations. This is to allow a more easy and useful analysis, and because there should still be a certain charge difference between the cells in order to avoid errors. When the cells have q levels, the data can be stored on a set of q cells according to their relative levels. In other words, \og2(q!) bits can be stored on q cells, or each cell can be used to store
Figure imgf000024_0001
bits. If q is large, the capacity of the trivial scheme described above. However, various update schemes described herein can be employed that may use relative levels, such as n cells of q levels, where n<q. As described further below, a high total capacity can be achieved with update schemes that use relative cell's levels. More specifically, some described examples may achieve an instantaneous capacity of n bits and a total capacity of (q-l)n bits using relative cell's levels.
[0097] Update schemes with high total capacity can become useful when q has a high value.
However, in practical flash memory devices, q may have a moderately small number. Various example methods described herein may achieve high values of q with the existing cell technology. The main idea is to combine several floating gate transistors into a virtual cell, which we call a multi-cell.
[0098] A. Multi-Cell Flash Memory
[0099] NAND flash memory is a widely used type of memory for general storage purposes. In NAND flash, several floating gate transistors are typically coupled in series (see FIG. 7A), where read or write operations occur one at a time. The present disclosure proposes to replace various transistors with a multi-cell of m transistors that are coupled together in parallel, with commonly controlled gates, as shown in FIG. 7B. In read operations, the currents of the transistors sum together, and the read precision may increase by m times, allowing to store mq levels in a single multi-cell. In write operations, the same value can be written into all of the transistors coupled together with a common gate, such that the sum of their charge levels gives the desired total level. The resulting error rates of read and write operations of the configuration in Fig. 7B are substantially the same as those error rates found in a traditional flash cell.
[0100] If data is stored by n transistors that form n/m multi-cells of mq levels each, and if the trivial scheme is used, an instantaneous and total capacity of (n/m)log2(mq) bits results that is less than the nlogzq bits would result using traditional cells. However, if an update scheme such as the relative schemes presented in the present disclosure, then a total capacity may approach n(q - 1) bits both with multi-cells and with traditional cells. In order to use a permutation of cell's levels, the number of levels in each should be at least the number of cells. To approach a total capacity of n(q— 1) bits with permutations, the number of updates the scheme can take should be greater than the number of cells we use. By using multi-cells, the number of updates may increase at the expense of the instantaneous capacity, and the total capacity is approached faster.
[0101] B. Notations and Model Properties
[0102] In order to allow easy and fair analysis, discrete levels for the cell's charge values can be utilized. In practice there is generally no need for threshold levels, and analog values can be used for the cell's charge values. For example, let c = ·» > 0> w'tn c: e — > Q ~ l) as the state of an array of n flash cells, each cell having q discrete levels, where ct≠ Cj for all ί≠ j. The r. variables may induce a permutation such as σ = [σζΐ},σ(2}, ... , σζη)] e Sn, where Sn denotes the set of all permutations over [n] = {1,2, n}. The permutation σ may be uniquely defined by the constraints ca(^ > ca^ for all i > j, i.e., when c is sorted in ascending order as Cj < Cj <■■· < c} , then σ{€) = jt for all 1 i < n.
[0103] To change the permutation from a to σ', the cells can be programmed based on their order in σ', so that each cell's level may increase as little as possible. For example, let c' = (c'- c'2, c'w) denote the new cell's levels to be set. Initially c'^^ = cat ω, and then, for £ = 2,3,— , η, α'σ, = τ 3ΰί{εσι ( ,ε'αίίί_1} + 1}. Given two cell states c and c let cost (c→ c') denote the cost of changing the cell state from c to c'. The cost can be defined as the difference between the levels of the highest cell, before and after the update operation.
Namely, cost (c→ c') = c'^,^— c^^y As illustrated by this example, the cost may be a function of σ_1 and σ'" 1, where σ_1 is the inverse of the permutation σ. See, for example, E. En
Gad, A. Jiang, and J. Bruck, "Compressed encoding for rank modulation," in Proceedings of the 2011 IEEE Int. Symp. on Inform. Theory, ISIT2011, St. Petersburg, Russia, Aug. 201 1, pp. 884- 888. The cost can be written as:
cost (σ→ σ') = max(ff -1(i)— σ'_ 1(έ)).
: e
In other words, the cost is the L quasimetric.
[0104] Example 1 . Let c = (0,1,2,3)· So σ = [1,2,3,4]. Now let σ' = [3,1,4,2]. The levels of the cells to represent σ' can be increased as follows: set c'3 = c3 = 2;
= ΐίΐ ϊ{¾, ί'3 i 1} = max {0,3} = 3 ; and c'4 = 4 and c'2 = S. The cost of the update can be determined as c'2— c4 = 5— 3 = 2. The cost can also be calculated directly from the permutations: σ_1 = [1,23,4], αηά σ1" 1 = [2,4,1,3]. Since σ "1 - σ'_1 = [-1, -2,2,1], and the maximum is 2, so this is the cost.
The set of all the values that the data can take can be denoted as D. An update scheme, or update code, C may include a decoding function f and an update function g. The decoding function /: Sn→ D may identify the permutation σ E Stl as a representation of the data /(σ) G D. The update function (which may represent an update operation), g-. Sn X D→ Sn, may identify the current permutation σ E Sn and the update can change the data to d E D, and the update code can change the permutation to d , where f g(a, d)} may be equal to d. Note that if f er) = d, then g{a, d) = a, which corresponds to the case where w the stored data does not need to change.
[0105] Let <¾£? be the instantaneous capacity of an update code C. The instantaneous capacity can be defined as έ{(?) = (l/n)log|D|, where the binary logarithm can be usedr. Let iw(C) be the maximal number of updates that C can support for all update sequences. The worst- case total capacity per level can be defined as CW(C) = tw(G)Ct(c (q - 1). Similarly, ta(C) can be defined as the average number of times the memory can be modified before a block erasure is required, where we assume that in each update, the data value can be uniformly distributed, Ca(fi) = tc — 1) can be the average total capacity per level of the update code, and see that lim .^n→0_Ca((f} = Ci(C}fE( cost ), where E( cost ) is the expectation of the cost.
[0106] Finally, for a fixed σ E Sn, set
Vnr< ) = ίσ' 6 Sn \ cost (σ→ < ) < r}, k,, = | D¾ (-r) [.
We note that fc is independent of σ. It was shown in [2] that fe = (r + l)B-ir+¾(r + 1)1.
[0107] C. Upper Bounds
[0108] In this section, a bound is derived for CW(S) and CB(C), when q and n are large numbers, and q is much greater than n. In addition, a bound for Ct-((?) is derived in the cases where Cw(e~) and Ca(£) are asymptotically optimal.
[0109] 1. Worst case
[0110] To derive a bound, fe¾r, the size of the ball of radius r can be used. To guarantee that the cost of each update operation is no more than r, | D | < kn> . Otherwise, to write the data state d, there is no guarantee that there is a permutation in Β^(σ that represents d. The resulting instantaneous capacity can be determined as
(l/nJlogO^). Let Kr = limM→0o(l/n)log(I:¾ ). By setting Ct(C) < Kr, we cannot guarantee to write more than (qr - n)/r times, so Cw(6) = tw(C)Ci(C)/(q - 1) is less than Kr/r. In the following Kr/r is decreasing in r, which means that K± is an upper bound to the worst case total capacity.
[0111] Lemma 1 . Kr/r is strictly decreasing in r when r > 1.
Proof.
Figure imgf000027_0001
> (l/nr)(nlDg(r+ 1) - (r + 1)) = (l/r)log(r + 1) - (r + l)/(nr)
→ (l/r)log(r + 1), ri→ co
So js /r > (l/r)log(r + 1). On the other hand,
log((r+2}'
(l/(n(r + l)))log¼
Figure imgf000028_0001
So
Kr+i/(r + 1) < (l/(r + l))log(r + 2)
< (l/r)Iog(r + 1) < JTr/r
So Kr/r is strictly decreasing.
[0112] It also follows that when CW(C) is asymptotically optimal, C^G) is bounded by K as well. And when C^C) is asymptotically optimal, 1^ν 6) is optimal, since r = 1. As noted, both upper bounds are determined as Kv We can calculate Kt quickly:
K = iim31→00(l/n)Io 2¾_1 = 1. In section 6 we show that there exists a code that approaches both of the bounds.
[0113] 2. Average case
[0114] We now find a bound for the average case. Since tw(S} < ta C , the average total capacity is at least that of the worst case. In the following theorem we show that, asymptotically, the average total capacity is also bounded by Kv
[0115] Theorem 1 . Let C be a permutation based update code. Then limq^n n→∞Ca(C' < Kv
Proof: Let r be the largest integer such that ltmi¾→00Cj(i?) > Kr. Therefore, li∞« -fo_. Ci( }≤ ^+1 · Let d e D be a data state that needs to be stored, and σ £ 5„ the current permutation of the cells. Since f(tr) is the decoding function, let f~1(d) be the set of permutations that are decoded to d. We start by bounding E( cost), the expected cost of an update:
i£( cost ) = ^o1 Wr{ cost = i} > (r + l).Pr{ cost > r + 1} = (r -M)Pr[ ~ d Π Β^ίσ) = ø}
≥(r + l)(l - Pr{dfcn,r})
= (r + l)(l - = (r + 1)(1 - 2"^-»)
< {q - - cost j)
Since 1.η½→∞ £)/ .+1,
lini CQ(C) < Hm y + 1/(( + l)(l - 2^-ci^})
= < + i) < ¾
where the last step is due to Lemma 1.
[0116] Once lir¾/e m→∞CQ{e) is optimized, we also want to optimize C c We now derive an upper bound for that case.
[0117] Theorem 2. Let C be a permutation based update code. If Ca(C~)→ A when q/n, n→∞, then .Ι7η„→α)^((?) < A
[0118] Proof. Set r as before. Therefore, lIm →ocCI(C) < Kri V If r > 1, limg/¾n→0-Cc(C) < Kr+1/(r + I) < ϋΓΐ5 since r/r is strictly decreasing, and we have a contradiction, since Ca(C) doesn't approach K So r = 0, and therefore Ηπι^ < [0119] We see that once C((C is asymptotically optimal, ta(C~) is asymptotically optimal as well.
[0120] D. Construction for the Average Case
[0121] We now present a code that achieves both bounds with efficient decoding and update procedures. For convenience, we assume that both logn and n/logn are integers.
[0122] Let each data state be a factorial number (also known as a reflected inversion vector) with n/logn digits, d = {<£„., ..., άηΛθΒη_χ). The i-th digit from the right in a factorial number has base i, which means that the digit is less than i. Therefore, the base of digit dt is n/logn— i. [0123] We can see that the instantaneous capacity of the code is asymptotically optimal. That is because:
Ct(e) = (l/n)log|D| = (l/n)log((n/logn)!)
= 1 Iog(2logn)/logn > 1 ,n > o
[0124] Construction 1 . Permutation based update code.
Decoding:
The decoding function, fV), can be used to decode a permutation σ to a data state d. The permutation σ can be written as a sequence of logn permutations, σ = {σ0, σχ, ... , ojog,„_1}, each taken over n/iogn cells. For the purpose of decoding, we first represent the permutations as factorial numbers. Namely, for each permutation its factorial is
Vj = {^(0),Γ;(1), Vj(n/logn - 1)), with V,(i) = \[k\k > i and o^k) > σ^ι)}. In other words, each element is the number of elements following the element in the permutation that are greater than it.
[0125] The decoding function may be composed of a sequence of digit functions
fe>fi>"> fn/ ga-v eacn decoding a different digit. Each digit function ff- OX 1 - i†os*→ {0,1, - 1 - i) can be used to decode the digit dt
8 1 logn J * logn J
according to the vector V(i) = {VQ ( ), V± (i), ¾cgii-iCQ}- Together, f{a) = f(V) = (fs(V(0 MV(l}-)t
Figure imgf000030_0001
can take the value of the sum of the digits with index i in the logn factorial numbers. The sum can be taken as a modulo of the base of the digit, (n/logn— i):
[0126] Update:
The update function, g{a, if), updates the permutation σ into a permutation such that /(σ') = d. The function takes place sequentially from d0 to dn -losn_ The update function is described by the following algorithm: 1 : Set σ1 = σ, V'j the factorial number of σ' and start with digit d0, i.e. i = 0.
2: Identify a sequence j? = (s0,slf ... ,¾Β„_Χ) oflog bits, such that if, for each /, we perform the transposition (i, i. + s^) on a^, then έ(Κ'(ί)) = dt . If such a sequence is found, perform the transpositions according to s and repeat phase 2 for the next digit, di÷v
3: If there is no binary sequence s such that } (ν'(ί)) = di t identify a ternary sequence s of length logn, i.e., s E {0,1,2}, such that " ((V^ )) = d If such a sequence is identified, the transpositions can be performed according to s and repeat phase 2 for the next digit.
4: If there is still no appropriate binary sequence s, an arbitrary index is selected, and update cr, to an appropriate c' such that = d.
[0127] Example 2. Let n = 16. Let 0j = [1,2,3,4] for j = 0,1,2,3. For each j, V p = 3, since there are 3 elements following the element 1 in oj- that are greater that 1. Now we decode the data from the permutations. f0(V(0))' = 3 + 3 + 3 + 3 mod! (4— 0) = 0, so dQ = 0. Similarly, dx = 2 X 4 mod (4- 1) = 2, dz = 4 mod 2 = 0 and ds = 0. Note that
^"ajlosn-i
[0128] We now assume that we want to update the data state to d = (2,2,0,0). We start with encoding d^ = 2. We look for a binary sequence s such that /0(F'(0)) = 2. We notice that for each /, if s- = 0, then ';(0) = 3, and if s}- = 1, then Vr }-(pi) = 2. So we can choose, for example, the sequence s = (1,1,0,0), and get /0( '(0)) = 2 + 2 + 3 + 3 mod 4 = 2. In the same way we can encode each digit in the data state.
[0129] We remember that the cost of update is the L quasimetric: coaL (υ→ υ')— inaxie Μ(ο _ (£)— t ~ (t)). Therefore, if all the digits are updated by phase 2, the cost of the update operation is 1. The number of binary sequences of length logn is n, and therefore the algorithm can check all of them in polynomial time. In order to avoid the calculation of the sum for each sequence, the algorithm can use a binary reflected Gray code, and calculate only the difference of one transposition in each step. [0130] If at least one digit is updated by phase 3, the cost of the update is 2. The running time of the algorithm remains polynomial in that case. If the algorithm reaches phase 4, the cost can be determined as n/logn— 1, but the running time remains polynomial, since we can choose the elements of V'j quickly. Since all the steps in the update algorithm take polynomial time, the worst-case complexity is polynomial in n.
[0131] We now analyze the expected cost of update. We assume that σ and d are drawn according to uniform distributions, and start with calculating the probability that the cost is greater than 1. For every binary sequence s, Pr(fi{V'(i))' = dt is at least log(n)/n, since the base of dj is at most n/lvgn. So the probability that * is not good is at most 1— (lugn/n). ._.· can take one of n values, and for each different value that probability is independent. Therefore, the probability that there is no good sequence s is at most (1— (logn/n))*. That probability is independent for different digits of d. Therefore, by the union bound, the probability that at least one digit is updated according to phase 3 is at most (n/logn) (1— (logn/n))". This is the probability that the update cost will be greater than 1. Similarly, the probability that the update cost is greater than 2 is at most (n/logn)(l— (logn/n)j * , since phase 3 uses ternary sequences. We now show that the expected cost of the update algorithm is approaching 1 :
E( cost =∑¾^_1 iPr( cost = i)
< XPr( cost = 1) + 2Pr( cost— 2)
Figure imgf000032_0001
< 1 + 2(n/logn) (1 - (logn/n))n
+ («2/!og2n)(l - (logn/n))31"5"
< 1 + (2n/Iogn)exp(— logn) +(nz/logzn) exp(-n,os3_1logn)
→ 1 ,n→ oo
[0132] So Ca(c) - t0Ce (■£?)/(./ - 1)→ 1 when q/η, η→ oo, and the code approaches the bounds for the instantaneous and the average total capacity. [0133] E. Existence for the Worst Case
[0134] In this section we show that there exists a code such that f.{ (<?), Cw (<?) both approach when qfn,n→ oo.
[0135] Theorem 3. There exists a permutation based update code C, such that
Ct{e ,Cw(C)→ Ki for q/n, n→ or*.
Proof- Let \D I = fejj,i/n1+£, where ε is a positive constant. In the following we show that there exists a
{D,n} code with worst case update cost of 1. We first calculate the instantaneous capacity of the code:
q(<?) = (l/n)log:D|
= (l/n)loSkn l - (l/;i)(l + f)logu→ ¾ , n→ oo
So the instantaneous capacity of such a code is asymptotically optimal. If we show that the worst-case cost is 1, it follows that the worst-case total capacity is also asymptotically optimal.
[0136] Suppose f ~l dy is a partition of Sn, i.e., _1(ci) n/-1(if) = 0, d≠ d'; and u[ ii _1(ί£) = Sn. We now show that there exists a partition of Sn, such that for any fc 5„ and any d G D, there exists a vector σ' G f_1(c£), such that cost (σ→ σ') = 1. We use a random coding method. With every a G S„, we connect a random index rh which is uniformly distributed over the data set D, and all these random indices are independent. Then {f forms a random partition of Sn. Fix D and σ e 5W, then
Pr{ -^d) n = 0} = Pr{Va BKir(a),rb≠ d}
Figure imgf000033_0001
Therefore,
Pr{3d G Z) nd σ G 5„, s. t. /_1(<¾ Π Β,„.(σ) = 0} ≤ I D [ |5W [e pC- 1* } < 2nnl exp{-n1+*) < exp{n(l + Inn— ns}}→ 0 ,n→∞ This implies that when n is sufficiently large, there exists a partition of Sn such that the cost of each update is 1.
[0137] FIG. 8A depicts a process 800 for manufacturing and operating a data device. Process 800 may include one or more operations, actions, or functions as illustrated by one or more of blocks 805, 810, 815, 820, 825 and 830. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process starts with block 805. In block 810 a plurality of transistors each of which is capable of storing charge are disposed on a device. Each of the plurality of transistors comprises a gate, a source, and a drain. In block 815 connections are formed between the sources of each of the plurality of transistors. Each connection is capable of carrying electrical current. In block 820 connections are formed between the drains of each of the plurality of transistors. Each connection is capable of carrying electrical current. In block 825 data is stored in the plurality of transistors. The data corresponds to a sum of charges stored in each of the plurality of transistors. In block 830 the process may continue. In some
embodiments connections may be formed between the gates of each of the plurality of transistors.
[0138] FIG. 8B depicts a process 850 for operating a data device. Process 850 may include one or more operations, actions, or functions as illustrated by one or more of blocks 855, 860, 865 and 870. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process starts with block 855. In block 860 a code word is generated that has a plurality of symbols selected from a set of symbols. In block 865 each of the plurality of symbols is stored in a data storage location of the data device. Each data storage location comprises a plurality of parallel connected devices. In block 870 the process may be continued. In some embodiments the plurality of parallel connected devices may comprise transistors.
[0139] IV. Multi-Permutations
[0140] We further generalize the paradigm of representing information with permutations to the case where the number of cells in each level is a constant greater than 1, multi-permutations.
Namely, the states that the cells can take are no longer permutations of a set, but permutations of a multiset. For example, if the number of cells at each level is 2, the two cells in each level do not need to be identical in their analog values, they just need to be distinguishable with other levels (but do not need to be mutually distinguishable). Hence, the encoding and decoding may use relative levels, and the scheme has good resistance to drift; namely, the advantages of the permutation based relative scheme that we described above still apply. Another example is the case where the number of levels is 2, and there are many cells in each level. In this case, the multi-permutations are balance binary sequences.
[0141] We consider the case where the multiplicities of all the elements in the multiset are equal, and denote it by z. This generalization becomes interesting especially when z is large, and n is still much larger than z. In that case (if q is still much larger than n), we can prove that the upper bound on the total capacity is 2q bits per cell, and that there exists a construction that approaches this bound. The instantaneous capacity of the construction is approaching 2 bits per cell. These results can be proved using similar techniques to those we used in the theorems described in this paper. Since the cost of each update is at least 1, the number of updates is at most q— 1. We note that when the number of updates is at most q— 1, it follows that the total capacity of an update scheme, even without relative levels, is no higher than 2q bits per cell, and that there exists a code that achieves this bound. See, for example, F.-W. Fu and A. J. Han Vinck, "On the capacity of generalized write-once memory with state transitions described by an arbitrary directed acyclic graph," IEEE Trans, on Inform. Theory, vol. 45, no. 1, pp. 308-313, Jan. 1999. However, our generalization makes a stronger claim - that there exists a code that uses multisets (relative levels) and achieves the total capacity of 2q bits per cell. It is still an open problem to find a construction that achieves 2q bits per cell.
[0142] A. Compressed Rank Modulation
[0143] We will focus on the new multi-permutations scheme introduced above, which we call Compressed Rank Modulation. Before we do that, let us first review the terms in the original rank modulation scheme. There are π cells, whose analog levels can be denoted by ct, cz, cn.
(For flash memories, the analog level of a cell may correspond to its charge level or threshold- voltage level. For phase-change memories and memristors, the analog level of a cell may correspond to its resistance level.) They induce a permutation [χ12> '·· ,xn] of the set
{1,2,· ,n}, such that c„ < c„ < ·■■ < c„ .
For ϊ— 1,2, ·-· , , the x-th cell is said to have rank i. An example is shown in FIG. 9, where n = 4 cells induce the permutation [4,2,1,3].
[0144] Rank modulation may have two advantages:
• Cell programming is efficient and robust. We can program cells from the lowest level to the highest level, without the risk of overshooting, and there may be no need to accurately control the level of any cell.
• The state of the cells can be read in a simple way. For the n cells, their ranks can be determined by sorting. That is, we just need to measure the order of the cell levels. There may be no need to measure the exact value of the cell levels.
[0145] We now introduce the new scheme called, Compressed Rank Modulation. Let n and dlf dz,— , dn be parameters that are positive integers. There are d1 + d2 +— J- dn cells, whose analog levels are denoted by ct, <¾, ···, dt + d^+...+&^. They are assigned n different ranks based on their analog levels, where the d^ cells of the lowest analog levels are assigned rank 1, the next d2 cells are assigned rank 2,■■·, and the top dn cells are assigned rank n. An example is shown in FIG. 10, where n = 3, d1 = dz = d3 = 2, and the induced permutation is [{4,6}, {2,3}, {1,5}]
(namely, cell 4 and cell 6 have rank 1 (the lowest rank), cell 2 and cell 3 have rank 2 (the middle rank), and cell 1 and cell 5 have rank 3 (the highest rank)).
[0146] Another example is as follows:
Example 3. Let n = 3, dt = 2, dz = 3, d3 = 4. We assign∑=1 dt = 9 cells to n = 3 ranh, such that dx cells are assigned to rank 1, dz cells are assigned to rank 2, and d3 cells are assigned to rank 3. For example, the following permutation is valid:
[{1,5}, {2,3,8}, {4,6,7,9}].
[0147] The main advantage of Compressed Rank Modulation, compared to rank modulation, is that cells of the same rank can be programmed to very close analog levels. In the original rank modulation, in order to tolerate noise, we want there to be a sufficiently large gap between every two analog cell levels. In the compressed rank modulation, however, for cells of the same rank, their analog levels can be arbitrarily close. (And when we program cells, we would like to make cells of the same rank to have very close analog levels, so that the gap between the analog cell levels of different ranks can be large.) This way, we can pack more cells into the group of cells that use rank modulation. And the storage capacity can be increased.
[0148] Example 4. This example illustrates that the compressed rank modulation can improve the storage capacity. In this example, cells of the same rank can be programmed to arbitrarily close analog levels (just for the sake of explanation). For cells of adjacent ranks, in this example, the gap between their analog levels can be assumed to be Δ.
[0149] Consider the compressed rank modulation with n = 3 and d1 — dz - d3 = 2. The rank
Figure imgf000037_0001
[0150] For fair comparison, for the original rank modulation scheme, consider 6 cells that we partition equally into 2 groups, where every group employs the rank modulation scheme. Since each group can represent 3! = 6 symbols, the two groups can together represent
6 x 6 = 36 < 90 symbols. So the compressed rank modulation achieves higher storage capacity.
[0151] The compressed rank modulation scheme may have the advantages of the original rank modulation scheme:
• Cell programming is efficient and robust. When programming cells, we program them from the lowest rank to the highest rank, without the risk of overshooting. Note that for cells of the same rank, the order of their analog levels does not matter. There is no need to accurately control the analog level of any cell.
• The state of the cells can be read in a simple way. All we need is still just sorting. The dt cells of the lowest analog levels have rank 1, the next cells have rank 2, ·■■, and the top dn cells have rank n.
[0152] We emphasize again that for cells of the same rank, their analog levels can have arbitrary orders. That makes programming simple. For example, the examples in FIGS. 1 1 and 12 may induce the same permutation as the example in FIG. 10. Of course, given the
permutation [{4,6}, {2,3}, {1,5}], we prefer to program it as FIG. 10 or FIG. 12 instead of FIG.
1 1, in order to have larger gaps between the analog cell levels of different ranks.
[0153] 1. Initial Write [0154] In this section, we discuss how to write data in the compressed rank modulation scheme.
[0155] For flash memories (or PCMs, etc.), when data are written to cells for the first time, typically, all the cells are in the same initial state. (Typically, they all have the lowest analog levels.) So given a permutation
program the cells from the lowest rank to the highest rank, in the following way:
1. Let Δ > 0 be a parameter we choose. Let cells of rank 1 - namely, the xtth cell, the x2th cell, the xd th cell - retain their analog levels.
2. For i = 2,3, ·- , n, do:
- Program the cells of rank ί such that their analog levels are all higher than the analog levels of the cells of rank ί— 1 by at least Δ.
[0156] It is easy to see that the above programming method has little to no risk of
overshooting, and enables cells to be programmed efficiently without the need to accurately control analog cell levels. It is especially useful for flash memories, where cell levels can only be increased before the very costly block erasure operation is taken.
[0157] 2. Subsequent Rewrites
[0158] After data are written into cells, there are at two scenarios where it may be necessary to program the cells again. In the first scenario, the value of the data needs to be changed. In the second scenario, the analog cell levels of the cells are disturbed by noise, and cells need to be reprogrammed to ensure data reliability. If various cells need to be reprogrammed by increasing cell levels (which is performed for flash memories and sometimes also for PCMs), the cells can be programmed with the following method.
[0159] Let (¾, ¾, ·■· , cdi+di .„+d¾) denote the initial analog levels of the cells. Let
Figure imgf000038_0001
new permutation we need to program into the cells, and let ρ±', c2'1 ' --, cd^dn +_+d^,~) denote the new analog cell levels to be set. We can program the cells from the lowest rank to the highest rank as follows: 1. Let Δ > 0 be a parameter we choose. For cells of rank 1 - namely, the x^t cell, the x2th cell,■■·, the xd t cell - they can either retain their analog levels, or be programmed slightly such that their analog levels become close to each other.
2. For f = 2,3,··· , n, do:
- Program the cells of rank i such that their analog levels are higher than the analog levels of the cells of rank i— 1 by at least Δ. In addition, if desirable, we can also make their analog levels be close to each other.
[0160] It can be seen that the programming method is essentially the same as the one for the initial write. It also avoids overshooting programming errors, and is robust and efficient.
[0161] 3. Programming Symmetric Cells
[0162] For some memories (such as phase-change memories and memristors), their cell levels can be both increased and decreased without block erasures. In such a symmetric case, it becomes even easier to program cells for the compressed rank modulation scheme. Those skilled in the art will understand how to program cells for this case.
[0163] 4. Rebalancing Permutations
[0164] A compressed rank modulation code has
id. + d2 +— + dn fd2 + d3 +·· + dn\ (dn_ + d \
1 l ^ n j i^ £ d^ ) "" \ d J permutations. We can directly use them to encode data, either with a one-to-one mapping or with an error-correcting code. In the following, we describe two additional methods for encoding data, which can be especially useful if the number of cells d1 + d2 -{ 1- dn is large.
[0165] Suppose the input data is a vector
(Vi, vz - , νά +ά^→άη) e {0,1,— ,n - i}di+d2--+dtt, where each integer v. can independently be any integer in the alphabet {0,1, · ·· ," - 1}· (Note that coding schemes for such vectors have been extensively studied in the past.) We would like to change it into a "similar" permutation so that we can store it using the compressed rank modulation scheme, and use a small amount of metadata to remember how the change happened. [0166] The key is to rebalance the vector in an efficient way so that it becomes a permutation with the required weight distribution (dv d2, dn ~). The approach is illustrated with the following example.
[0167] Example 5. Let n = 4 and dt = d2 = d3 = d4 = 5. Suppose we have a codeword of (dt i d2 i d3 I d4)log2n = 40 bits:
1001001101101101111110010110111100000110 Such a codeword can be easily converted to a vector (v v7, ···, v2n) G { 0,1,2,3 }20 with the simple mapping: 00→ 0, 01→ 1, 10→ 2, 11→ 3, and get
21031231332112330012
(Certainly, we may also choose to use a Gray code for the mapping. But that is not related to our discussion here.)
[0168] To get a permutation where each of the n = 4 ranks has 5 cells, we can do it in three steps. First, we transform it to a codeword where the number of Os or Is equals the number of 2s or 3s. By inverting the first i = 1 cell (where we change 0 to 3, change 1 to 2, change 2 to 1, and change 3 to 0), we get
11 3123133211233001
which has 10 Os or Is, and 102s or 3s.
[0169] The subsequence that contains 0s or Is in the above codeword is
1101111001
To make it balanced, we invert the first i = 2 cells (where we change 0 to 1, and change 1 to 0), and get
0001111001
[0170] The subsequence that contains 2s or 3s in the above codeword is
3 3 3233 2
To make it balanced, we invert the first i = 1 cell (where we change 2 to 3, and change 3 to 2), and get
*3 5 J-!!* 3* -2
[0171] We merge the above two subsequences based on their original positions, and get 0 0 0 2 1 2 3 1 3 3 2 1 1 2 3 3 0 0 1 2
We can now store it as a compressed rank modulation code, where each of the n = 4 ranks has 5 cells.
[0172] The additional information about the inverting - namely, ί = 1, i = 2 and i = 1 - can be stored as meta-data in additional cells (possibly using compressed rank modulation as well). (Note that in the above example, the mapping used in inverting cell levels is not unique. For example, we can change 0 to 2 instead of 3, or change 1 to 3 instead of 2, etc. (The key is to switch {0,1} with {2,3} when inverting cells.))
[0173] So we can see that it is feasible to represent existing codes - e.g., BCH codes, Reed- Solomon codes, LDPC codes, and other codes - with compressed rank modulation. The system model is shown in FIG. 13.
[0174] 5. Record Weights
[0175] We now discuss an alternative approach. Suppose the input data is a vector (νΐ' νΖ' " ' ' vit+d2÷ - + dn e {0,1, · " , n— l}di+≤:!+ '""+ d«, where each integer vt- can independently be any integer in the alphabet {0,1,■■- ,n— I}. For i = 0,1,— , n— 1, let denote the number of entries in the vector that are equal to i; that is,
^i+i = IC I 1≤ ≤ + rfz r ^ ' 17 = l- We record the weight distribution
(dlr ά · · ' , άη) as metadata. And then, we can store the vector directly as a compressed rank modulation permutation. (If any of the d-'s happens to be 0, the compressed rank modulation scheme can be extended easily to cover this case.)
[0176] Examples
[0177] FIG. 14A depicts a process 1400 for operating a data device. The process 1400 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1405, 1410, 1415, 1420, and 1425. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process starts with block 1405. In block 1410 a predetermined rank configuration (dj, d2 . . . dn) is defined, wherein d; is the number of cells in the ith rank. In block 1415, a new multi-permutation is received and defined by v =
Figure imgf000041_0001
" ' >vn1 e $ that fits the predetermined rank configuration. In block 1420 a process is initiated in response to receiving the new multi-permutation, adding charge to each cell in a plurality of memory locations such that the plurality of cells represent the new multi-permutation. In block 1425 the process may be continued.
[0178] FIG. 14B depicts a process 1450 for reading a data device. The process 1450 starts with block 1455. In block 1460 the sequential order of an initial analog level of a stored value in each cell of a plurality of cells in a data device is determined. The sequential order is defined as a value x comprising
Figure imgf000042_0001
1465 the process may be continued.
[0179] FIG. 15A depicts a process 1500 for writing to a data device. The process 1500 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1505, 1507, 1509, 151 1, 1513, and 1515. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process starts with block 1505. In block 1507 a
predetermined rank configuration (dj, d2 . . . dn) is defined, wherein dj is the number of cells in the ith rank. In block 1509, a new multi-permutation is received and defined by
v = [vlf v2, - - , vn] e 5 mat flts me predetermined rank configuration. In block 151 1 the analog levels of cells of a rank n in v are retained. In block 1 13 the cells of rank i in v for I = n - 1 , n - 2 . . ., 1 such that the analog levels of cells in a rank are programmed to all be higher than the analog levels of the cells of rank z'+l in v by at least a minimum rank differentiation. In block 1515 the process may be continued.
[0180] VI. Rank-Modulation Rewriting Codes
[0181] Various embodiments disclosed herein construct rank modulation codes that achieve a rate approaching two on each write. One embodiment takes advantage of the recently discovered polar codes which were recently used in the construction of WOM codes. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986.
[0182] A. Definitions of the Rewrite Model [0183] The features of the rank-modulation scheme come from the fact that it avoids the discretization of the cell levels. However, in order to design coding schemes, a discrete model for the rewriting is very helpful. In addition, as demonstrated in the example in Section I, there is a need for a certain gap between the levels of cells in different rankings. Furthermore, remember that the cells can only store a limited amount of charge. Therefore, a limited number of ranks can be represented within a set of cells. We denote the number of "virtual levels" that every cell can represent by q. The levels are virtual in the sense that they do not correspond to a discretization of the cell level, but to the resolution of the charge detection and the power of the noise that might affect the relative levels of the cells. The q virtual levels allow the analysis and comparison of different rewriting methods. If the memory has N cells then we denote c = ( i, ctl cv), where ci {0,1,— , q— 1}, to be the cell-state vector.
[0184] In recent work, the data was encoded by permutations, that is, only a single cell in each rank. See, for example, A. Jiang, R. Mateescu, M. Schwartz, and J. Bruck, "Rank modulation for flash memories," IEEE Trans, on Inform. Theory, vol. 55, no. 6, pp. 2659-2673, Jun. 2009. Here we allow more than one cell in each rank, where the number of cells in each rank is
predetermined, and we call it the multiplicity of the rank. The generalized ranking now becomes a permutation of a multiset of the ranks, which we define to be a multipermutation. Assume there are m ranks, the multiplicity of the έ-th rank is denoted by∑t, and in case that all multiplicities are equal, we denote this number by∑. Remember that when considering the discrete model, we allow to place two cells with the same rank in the same discrete level, since we don't need a gap in order to distinguish their rank or to prevent errors.
[0185] Since there are m ranks in our multipermutations and the multiplicity of the i-th rank, 1 < i < m, is zp we have that N = zt. We let Pm be the set of all N cells multipermutations u— (o(l), Gt (2), ... , 'j(iV)) with -m ranks. That is, for 1 < j < N, u (J) e {1, .„, /«}. For 1 < i < m, er-1(0 is the set of all cells with rank i, i.e., σ _1(ί) = {J | a(J) = £ . We call the vector z = {z1,zz, ..., 2m] a multiplicity vector. The set of all multipermutations of m ranks with multiplicity vector z is denoted by Pmx. Hence, σ = (σ(1), σ(2), ... , σ(Α0) e if and only if for 1 < i < m, |σ_1(ί) [ = zv In case that z = zt for all 1 < ί < m, we denote the set Pma. simply by PmiB, and we will follow the same analogy in the other definitions in the paper which include the multiplicity vector z.
[0186] Given a cell-state vector c. = ( it cz, ... , r.N) and a multiplicity vector z = {∑x,z2, -, zm], the multipermutation σ = (σ(1),σ(2), ..., σ(Λ')) is derived as follows. First, let i , ... , iN be an order of the cells such that c < c < ·■■ < ct^. Then, the cells f ... , i get the rank 1, the cells ίζ 1, iz^z get the rank 2 and so on. More rigorously, for 1 < i < m, the cells im., im. 1 1, ... , iM. get the rank i, where ?η έ = 1 + ¾Ξ i ¾ and £- = ¾=1 ¾, i.e., ff(im.) = + 1} = ·· = σ(ίΜ ') = i. Note that a given cell-state vector can generate different multipermutations in case that there is equality between the levels of cells in adjacent ranks. In this case, we will define the multipermutation to be illegal and denote σββ = F. Given a multiplicity vector z = {zlfzz, ..... zm}, we let Qz be the set of all cell-state vectors which result with a valid multipermutation, that is, (). = {c E {0,1, q— i}N<,^≠ F).
[0187] The other attribute of the model studied previously is its process of programming. See, for example, A. Jiang, R. Mateescu, M. Schwartz, and J. Bruck, "Rank modulation for flash memories," IEEE Trans, on Inform. Theory, vol. 55, no. 6, pp. 2659-2673, Jun. 2009. On every rewrite step, a single cell could be programmed to be only the highest level. Therefore, if the length of the permutation is N, N different permutations could be written without increasing the top level by more than one level (including the original permutation). In this work, however, we introduce a more opportunistic approach for rewriting with the powerful property that the number of permutations (or multipermutations) that can be written without increasing the top level by more than one level becomes exponential in N.
[0188] The programming method we suggest is designed to minimize the increase in the cell charge levels. Let c be the current cell-state, and σβ,Λ the multipermutation we wish to write. For i— 2,3, ... ,m, we increase the level of the cells in σ ~^ ί) to be higher than the highest cell in
°c¾0 1)· 1° the discrete model, the cells in <¾J(i) take the level max{cj \aCIJZ(j) = i - 1} + 1. We can see that writing in this method does not bear a risk of overshooting, since there is no upper threshold for the cell programming. In addition, it is straightforward to observe that the method in fact minimizes the increase in the levels of the cells, and specifically the level of the highest cell.
[0189] The initial state of all the cells is the all-zero vector, 0. The goal is to reuse the memory for T successive rewrites without incurring an erasure operation. We consider only the case where the encoder knows and the decoder does not know the previous state of the memory. The encoder and decoder can use the same code for every cycle, and there are no decoding errors (zero-error case). For the cell states c and c', we denote c < c; if and only if cf <
Figure imgf000045_0001
for all i = 1,2, ... , N. We are now ready to define the rewriting codes.
[0190] Definition I. An (N,q, T, D,z = (∑vz2, ... ,∑m)) rank-modulation rewriting code is a coding scheme 6{f, g~) comprising of N q-level cells and a pair of encoding function f and decoding functions g. Let 1 = {!, ·■· , D] be the set of input information symbols. The encoding function f: I X Qz→ Qz, and the decoding function g-. Qz→ 1 satisfy the following constraints:
1) For any d e and c e Qz, c < f d, c).
2) For any d e l and c E QB, g(f(d, c}) = d.
3) For any cv c2 E Qz, if = then g{Cl) = j(c2).
4) The code C(f, g) supports any sequence ofT writes (dt, ...,dT) IT.
The instantaneous rate of the code is 3linst = (l/M)log2D and the sum-rate is = TJlin3t.
[0191] One goal in the design of rank-modulation rewriting codes is to maximize the sum-rate. For that, we first try to maximize the number of writes and then maximize the instantaneous rate on each write. This is achieved carefully in a way that the maximum level on each write increases with high probability by one level. Another goal we will draw our attention to in the design of such codes is low complexity of the encoding and decoding functions. The design of codes with high rate and low complexities will be the topic of the next chapter, where we explain the construction of our rank-modulation rewriting codes.
[0192] B. Description of the Construction
[0193] Our point of departure in constructing rank-modulation rewriting codes is to design such codes while the increase on each write of the maximum level is no greater than one. That is, given a rank-modulation rewriting code for every d e l and c E ¾, if c' = f(d, c), then
Figure imgf000046_0001
< 1. An important observation to notice here is that if there exists i such that aejZ(i)— arc, (i) > 1, then the value
Figure imgf000046_0002
might be greater than 1.
Consider, for example, the case where m = 4,2 = 1 and c = (1,2,3,4). Here, if σ β,ζ(3)— aci fy = 2> then cell 3 must be the lowest cell in c', and max^cj— ma ^J _ΐ 2.
[0194] To avoid such scenarios we choose to constraint the value of σ^ιΧ(ί) to be at least crC 2(i)— i. That is, in case the rank of a cell decreases, it cannot decrease by more than one rank. Hence, the cells in the first rank in c' can only be the ones from the first or second rank of c, i.e. c _(l) is a subset of ~ (1) u oc ~1 (2). Similarly, the cells in the second rank of c' can only be the ones from the first, second, or third rank of c, which are not already assigned to the first rank of c'. Mathematically speaking, we note that
and in general, for ί = ί, ...,m— 1, given the selection of σ^(1),σ07~ (2), ..., σ~ (ΐ - 1), the set ffc7 (i) satisfies
[0195] Motivated by this observation, the value of c' = f(d, c) is encoded by a sequence of functions, each making a subset choice according to a different part of the input data d. Assume the input data d is partitioned into m— 1 parts and let (dlt d2 dm_t) be the data parts associated with each rank, where rank m doesn't represent any information. The first function determines the cells from U which are assigned to be the set cr^(i) as a function of the input data dv Thus we can write,
Figure imgf000047_0001
U σί! ~1(2)), for some function fv Similarly, for i = 2,3, ... , m— l, there exists a function fi such that
[0196] The decoder will operate in a similar way which will be explained in the sequel as part of the construction details.
[0197] Assume that the multiplicities of all the ranks are the same, so∑1 = ··- = z.m =∑. Then, for each i — 1, ... , m— 1
Hence, in the encoding function fp if we consider the cells in the set
Figure imgf000047_0002
as binary cells of value zero and all other cells of value one, then we can only program the zero cells to be one. Therefore, the key point in designing these encoding functions is to observe the similarity to the binary write-once memory (WOM) problem.
[0198] A write-once memory comprises of a number of "write once" cells, where each cell is initially in state "0" and can be irreversibly programmed to state " 1". Rivest and Shamir demonstrated that it is possible to rewrite such a write-once memory multiple times, using coding techniques, called WOM codes. See, for example, R. L. Rivest and A. Shamir, "How to reuse a "write-once" memory," Inform, and Control, vol. 55, pp. 1-19, 1982. Back to the problem of encoding a single rank, we can think of {Uj= 1 Cc, °c ~,zO*)} as ce^s tnat were not written on the first write of a two-write WOM code, while all other cells were already written as value one on the first write.
[0199] However, there is an important difference between the problem of encoding a second write in a two-write WOM code and our problem of encoding a single rank. While in a two-write WOM code there is no significance to the number of cells that are written on the second write, in our codes we seek to write such that exactly∑i of the cells will remain in level zero. If we have a
WOM code that writes a constant number of cells in the second write, we could use that code to write more than twice, since we know the number of cells which were not programmed after the second write, and we could keep using the same code (with different parameters) for the subsequent writes. So in fact, a WOM code that might be suitable for our problem should be a code which allows more than two writes to the memory. Since we are interested in WOM codes with high rates, it is natural to consider the recently proposed polar WOM codes. Polar WOM codes were introduced by Burshtein and Strugatski, and they are the first WOM codes that allow to write more than twice with sum-rate which asymptotically approaches the sum-capacity, log(£ + 1). See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. The special property that allows high number of writes in polar WOM codes, is that on each write, the distribution of the number of written cells is close to binomial. Thus, for large N, the number of programmed cells on each write is concentrated and can be bounded with some specified value with high probability.
[0200] We use this property of polar WOM codes for our construction in a slightly different manner. Instead of looking at the concentration property as bounding the maximal number of programmed cells, we use it to bound the deviation of the number of non-programmed cells from the constant number we wish to write, zv Now, we know that with high probability, the number of non-programmed cells will be close to∑v Once we have this property, we know that in most cases, after using the polar WOM codes, flipping a small number of cells will result in a binary word with exactly zt zeros.
[0201] So our technique is to flip a small number of cells in order to get a word with the desired weight, and store the indices of the flipped cells in some additional redundancy cells. We will later show that we can choose the number of redundancy cells such that with high probability they will be sufficient to accommodate the storage of all flipped cells, while the asymptotic rate of the code will not be affected.
[0202] While the number of redundancy cells can be made small, we still keep them as part of the cells in the multipermutation. That is, we still want to have a predefined number of cells in each rank. We do this in the following manner. In rank i, for each index of a flipped cell we want to store, we assign n1 redundancy cells, where half of them are in rank i, and the other half in rank ί + 1.
[0203] Let us now describe the construction formally. To simplify the notation and representation of the construction we dropped all floors and ceilings, so some of the values are not necessarily integers as required. This may encounter a small lost in the rate of the code, however this lost will be minor and thus can be neglected.
[0204] First we state a useful assumption in our construction for the existence of WOM codes with the properties we described above.
[0205] Assumption 1. For any 0 < p < 1 and 0 < ε < p/2, there exists a binary WOM code Gp>∑ with encoding function fPt∑ and decoding function gps such that given a cell-state vector c of N cells and weight w(c) = (1— p)N, it is possible to write a binary vector d of(p— 8")N bits, for δ arbitrarily small, such that the updated cell-state vector c1— fp>∑{c, d) satisfies:
1) (1 - p/2 - ε)Ν≤ w(c') < (1 - p/2 + έ)Ν.
Figure imgf000049_0001
[0206] The encoder fp∑{c, d) can have a small probability that the conditions doesn't meet, in which case we say that the encoding fails.
[0207] In Section VI. C, we describe how to construct WOM codes, based on polar codes, that satisfy the conditions of Cp £ in Assumption 1. See, for example, D. Burshtein and A. Strugatski,
"Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. However, while these polar WOM codes are good for our construction, they suffer a small probability of encoding failure, i.e., they don't work in the worst case for any sequence of writes. In this section, for the simplicity of the presentation, we do not consider the case of this encoding failure but will sketch the necessary modifications to adjust these codes to our construction in VI. D. We are now ready to present our construction. [0208] Construction 1. Let m, z, N be positive integers such that N = mz. Let p = 2∑/N,
0 < s < p/2, and CftC is the code from Assumption 1 with encoding function fptC. and decoding function gp s. Let N1 = N + msNn1 (the value of n' will be explained later). The first N cells are called the information cells and are denoted by c = (¾,... , cv). The last r = msNn' cells are called the redundancy cells and are partitioned into msN vectors pk for
1 < k < m— 1,1 < j < εΝ, each of n' bits. We assume that there is a function
hi {1,2, JV}→ 0,1}Β' which receives an integer between zero and N and returns a balanced vector of length v!. h can be implemented, where in both cases logN < n' < 2logN. See, for example, The Art of Computer Programming Volume 4, Fascicle 3. Addison Wesley, 2005 and D. E. Knuth, "Efficient balanced codes," IEEE Trans, on Inform. Theory, vol. 32, no. 1, pp. 51- 53, 1986. We also assume that this function has an inverse function h~x : lm(h)→ {1,2, ... , N}.
[0209] An N',q.,T, D , Z) rank-modulation rewriting code€ is defined according to the following encoding function f and decoding function g. The number of messages on each write is D = 2l-2∑~SN~}im~1^ and each message will be given as m— 1 binary vectors, each of length 2z— SN bits. The number of rewrites satisfies T = q— m + 1, and Z = N'/m = z+ εΝη'.
[0210] On the encoding and decoding functions, on each write we have the following assumptions:
1) The information cells vector c and the redundancy cells vector r are multipermutations with m consecutive levels such that the number of cells in each level is the same. We let Smin be the minimum cell level and -imax be the maximum level (note that
2) We let aCJ∑ be the multipermutation derived from the information cells vector. For 1 < i < m, let Si = (note that |5έ | = z).
3) There are εΝ τη— 1) auxiliary variables, called index variables and are denoted by Ikijfor 1 < k < m— 1,1 < j < vN . These index variables will be stored in the redundancy cells and they will indicate the information cells that their levels was intentionally changed during the encoding process. [0211] Encoding Function f(c, p, d) = (V, p'y.
Let c be the current information cells vector, p = {pl v ... ,ρ,^^^) be the current redundancy cells vector, and d— (d.it— , d^ri_1 ' be the information vector, where each d^ is a vector of (p— S)N = 2z— δΝ bits. The new updated information cells vector c' = (clt, cv,) is determined as follows. Let Sv be the set Sv = Sv
[0212] Encoding of the fe-th rank, 1 < k < m - 1:
1) Let vk = ( k , 6 {0,1}Λ" be the vector defined as follows: v i = 0 if and only if i e S'k u 5k+1.
2) Let uk = p„s(Vfc, tife). (Note that u.k satisfies ) (1 - p/2 - ε Ν < w(w¾} < (1 - p/2 + s)N,
c) vk≤ uk.)
3) et wk = w(uk)— (1— p /2)N (\wk | < sN), and let i±, ... , i( | //ze ^zrat |wk | indices in S'k U Sm w/zose va/we ?« uk is equal to (sign(wk) + l}/2. The vector uf k is defined to be u'kii.— 1— k i .for 1 < j < \w \ and for all other indices i, u'kA = uk>i (note that w( "k) = (1— p/2)N). Set the indices = ijfor 1 < j < \wk | and for \wk | + 1 < < εΝ,
4) Let S* = {ί|*' = 0} and S! k+i = (S'fc U Sfc+1)\S* For every i e 5*. 5et
Finally, for every i e Sm', set = fmax +- 1. [0213] The new redundancy cells vector p' = (p lt .-,p'm ay) is determined as follows to store the (m— 1)εη indices. For 1 < k < m - 1, 1≤ j≤ εΝ, let
Figure imgf000052_0001
Finally, for 1 < j < εη, p'mJ = pm>j + 1.
[0214] Decoding Function gic,p~) = d': Let c = (cir ... , cv) be the information cells vector and p = (piiit—,Ρη,εΝ) be the redundancy cells vectors. The information vector d' = (d , '«j rf'TO_i) is decoded as follows.
First the indices Ik%J-for 1≤ k≤ m.— Λ, 1 ≤ }≤ F.N, are decoded to be
[0215] Decoding of the k-th rank, 1 < fc < m i:
1) Let ' = (ω¾ι, ...,κ^) e {0,1}'V 6e i ze vector defined to be u'kii = 0 if and only ifi e Sk.
2) 7¾e vector «fc w defined as follows. For all 1 < J < εΝ, iflkij≠ 0 then ukjk j = 1— . flJ¾<^ o// ot/zer indices i, uk i = u'k έ
[0216] It is possible to use the proposed rewrite codes with a different trade-off between the rate and the number of writes. In every write, the rewrite codes increase the value of the highest level among the cells by a single level, and allow a rate of 2 bits/cell. Instead, the codes can be used such that the value of the highest cell increases by c levels in each write, with a rate of (c+l)log2(c+l)-clog2(c) bits/cell. To do that, we need to replace the set S_{k+1 } in steps 1,3 and 4 of the encoding of the k-th rank, with the union of the sets S_{k+1 }, S_{k+2},..., S_{k+c} .
We prove the correctness of Construction 1 in the next lemmas. We note that on the first write all the cells are in level zero and thus any multipermutation of m consecutive levels between 0 and m— 1 such that the number of cells in each level is z will be written in the information cells. We also assume that the redundancy cells will be written in a similar way to keep the
multipermutation property of these cells. This will be addressed in the next lemma.
[0217] Lemma 1. For t = 1, ... , T, after the t-th write, the redundancy cells vector is a multipermutation ofmsNn1 cells with εΝη1 cells in each of the m consecutive levels:
0min,t = t 1, ... , -emaXrt = t i m 2. Furthermore, for 1km, IjsN, half of the cells in pkJ are in level fmin c + k— 1 and the other half in level Smin t + (k mod m).
[0218] Proof On the first write, there is no restriction on the index variables and thus we can simply write the redundancy cells in a way that they will satisfy this property. For all subsequent writes, this property is easily verified for all redundancy cells vectors since the output of the function ft( fc ) is a balanced binary vector. Note that one purpose of the redundancy cells vectors are pmJi,— is to keep all the redundancy cells as a multipermutation with the same number of cells in each level. On the first write each of these vectors is written as a vector where n'/2 cells have the value zeros and the other n'/2 cells have the value m— 1. On each following write, each of these cells is incremented by one level which preserves the balanced multipermutation property of all the redundancy cells.
[0219] It is verifiable that the decoded value of every index variable is the same as the one stored during the encoding function, we note here that the index variables could be stored more efficiently, however this will not be significant in the rate analysis of the code. Hence, we tried to keep the redundancy part of the code as simple as possible.
[0220] Next, we prove similar properties for the information cells.
[0221] Next, we prove similar properties for the information cells.
[0222] Lemma 2. Assume the information cells vector r is a multipermutation with m consecutive levels, between -imin and -imax = tmin τ m— 1 such that the number of cells in each level is∑. Then, for any information vector d— {dlt the resulting updated information cells c* from (c',p') = f(c,p, d) satisfies this property as well between the levels
[0223] Proof For every 1 < k≤ m - 1, w(vk) = (1 - p)N and w(w'fe) = (1 -p/2)N. Hence, |S£ | = Np 2 = z and so exactly z cells are programmed to level -£min + fc. Furthermore, |S'OT| = z and thus exactly z cells are programmed to level max + i. This proves that the information cells vector forms a multipermutation of m levels between i„. + 1 and + 1 and the number of cells in each level is∑.
[0224] Lemma 3. On each write the following holds g{f{r, p, d)) = d.
[0225] Proof. For k— % ... ,m— 1, in the encoding function, the cells which were
programmed to have the ifc-th rank are the ones having value zero according to the vector Similarly, the vector uf k was defined to have the value zero if and only if the corresponding cell is in level k. Therefore, we have that u'k = u'k. Since the index variables are correctly decoded by the redundancy cells, we also have that «k— nk. Finally, we get that d'k = 3PA k) = 9P,Auk~) = dk- and together we conclude that g{f{c, p, d)') = d.
[0226] Theorem 1. The code Cfrom Construction 1 is an {M',q,T, D,Z) rank-modulation rewriting code, where N' = N + sNn1, D = 2(^~SN'i(-w~1'i, T = q— m + % and Z = N'/m.
[0227] Proof. It is verifiable that for all (c,p, d), (c,p) < f{c,p, d), and for all
(ci> Pi)>(c 2> P2) e ¾ such that σ(£½,ρ^ = σ(ο^^ we have that g(c1> Pl) = g(cz, v2 ~).
According to Lemma 3, we have that (f(c,p,d)} = d. On the first write the maximum level is m— 1 and according to Lemma 1 and Lemma 2, on each subsequent write the maximum level increases by one level. Hence, the code supports any sequence of T = q— m -f 1 writes. [0228] In order to complete our construction of rank-modulation rewriting codes, we are left with presenting WOM codes which satisfy the conditions of Assumption 1. This will be the topic of the next section.
C. Polar WOM Codes
[0229] In this section we describe the recently proposed polar WOM codes and show how they are used for the implementation of the codes in Assumption 1. Polar WOM codes were proposed in order to write multiple times over a WOM. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. In the following, we briefly describe the construction of polar WOM codes in order to show the modifications we introduce in these codes to satisfy the conditions of Assumption 1 and to achieve high sum-rate.
[0230] We first start with a short overview on polar codes and their usage to lossy source coding as they serve the basis to the construction of polar WOM codes. For more details, see
D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. Polar codes were first introduced by Arikan and were proved to achieve the symmetric capacity of an arbitrary binary-input channel. See, for example, E. Arikan, "Channel polarization: A method for constructing capacity achieving codes for symmetric binary-input memoryless channels," IEEE Trans, on Inform. Theory, vol. 55, no. 7, pp. 3051-
3073, Jul. 2009. Let ¾ = (l 0 ), c n be is its n-th Kronecker product, and N = 2*.
Assume the data is transmitted over a memoryless binary-input channel with transition probability W y\x . The information message t. ε {0,1}Λ' is first encoded to be the vector x = uG® . Then x is transmitted over the channel and the channel output word is y. The main idea of polar codes is to define JV sub-channels
where u^ , for 0 < i < j < N— 1, denotes the subvector (uit ..., ιι^. [0231] Let I(W) denote the symmetric capacity of the channel W and Z(W ) be the
Bhattacharyya parameter of the sub-channels , defined by
Figure imgf000056_0001
It was shown that for N large enough, approximately I W of the sub-channels satisfy that ziWN 3 < 2_ΛΓ ^or an ® < β < I/2- See, for example, E. Arikan and E. Telatar, "On the rate of channel polarization," in Proceedings of the IEEE International Symposiom on Information Theory Workshop (ISIT), Jun. 2009, pp. 1493-1495 and E. Arikan, "Channel polarization: A method for constructing capacity achieving codes for symmetric binary-input memoryless channels," IEEE Trans, on Inform. Theory, vol. 55, no. 7, pp. 3051-3073, Jul. 2009.
Accordingly, for a code rate R, a set F is defined, comprising of the N(l— R) sub-channels with the highest Z(WN ), and denoted as the frozen set. Then, the information is transmitted on the remaining NR sub-channels, while the input on the sub-channels in F is fixed to be some frozen vector uF (the elements of the vector w in the set F). The encoder transmits the word x = uG® and the information u is decoded using the successive cancellation (SC) scheme and by the information of the frozen vector uF. Finally, it was shown that asymptotically, if R < I W), then it is possible to communicate reliably with encoding and decoding complexities of 0(N logN).
[0232] It was shown how to use polar codes for lossy source coding. In this case, the frozen set F is defined by
{0 N - 1}:2¾C )≥ 1 - 2<¾), (1) where δΝ = 2 f(2N),
See, for example, S. B. Korada and R. Urbanke, "Polar codes are optimal for lossy source coding," IEEE Trans, on lnform. Theory, vol. 56, no. 4, pp. 1751-1768, Apr. 2010. The encoder compresses the source vector y by the following SC scheme. For i— 0,1, ... , N— 1, let ui = u( if i e F. Otherwise, let
Figure imgf000057_0001
where
Figure imgf000057_0002
[0233] The decoder, in turn, let x(y) = uG® n be the approximating source codeword. It has been shown that for any compression rate in the rate distortion region (where the distortion is denoted by D), x y) satisfies Ed(x(y),y)/N !) ·+- 0(2→'β for any 0 < β < 1/2 and N sufficiently large. See, for example, S. B. Korada and R. Urbanke, "Polar codes are optimal for lossy source coding," IEEE Trans, on Inform. Theory, vol. 56, no. 4, pp. 1751-1768, Apr. 2010. The result on the average case was further improved to show that \d(x ),y fN— D \ can be made arbitrary small with probability approaching 1 for ,V large enough.
[0234] These results allowed the construction of multiple writes WOM codes. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. Let T be number of writes to the WOM. For each write cycle,
0 < t < T, let 0 < ετ < 1/2 be an estimate of the fraction of unprogrammed cells that will be written on this write, where su = 0 and sr = 1/2. In addition, let
Note that the values of c0, ... , cT come from the expression of the capacity region of WOM, given by
CT - < < (1— ftere 0 < ..., £r_., < 1/2 ana if denotes the binary entropy function}. See, for example, F.-W. Fu and A.
J. Han Vinck, "On the capacity of generalized write-once memory with state transitions described by an arbitrary directed acyclic graph," IEEE Trans, on Inform. Theory, vol. 45, no. 1, pp. 308-313, Jan. 1999 and C. D. Heegard, "On the capacity of permanent memory," IEEE Trans, on Inform. Theory, vol. IT-31, no. 1, pp. 34-42, Jan. 1985.
[0235] For the t-th write, 1 < t < T, a test channel is considered with binary input X and an output (5, ), where S and V are binary variables as well. The probability transition function of the t-th channel is defined by,
Pt((S, ) = (s,v) >X = X) = f(s,x 0 v), where
Figure imgf000058_0001
[0236] For the t-th test channel, a polar code is designed with block length N with a frozen set as in (1). The polar code is used for lossy source coding, with rate
Figure imgf000058_0002
where St is arbitrarily small for N sufficiently large.
[0237] The t-th encoder uses a common randomness source, also called dither, denoted by gt, sampled from an N dimensional uniformly distributed random binary vector, and known both to the encoder and to the decoder. Let st represents the cell-state vector before encoding on the t-th write, and let w( = st + gt. Finally, \et yf = (stif, vtij) and y, = ( v>V -->¾)· [0238] The encoder compresses the vector yt using the t-th polar code with uF = at, where at is the information message on the t-th write. The encoder decompresses the resulting vector ut into xt = titG n, and sets St = xt + gt to be the new cell-state vector.
[0239] The decoder first calculates x. = st + gt, and then estimates at = (^(G®*)"""1)^ , where (z)Ft denotes the elements of the vector z in the set Ft . A few slight modifications for the construction have been described, for the sake of the proof. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. The following theorem summarizes the results of the polar WOM codes.
[0240] Theorem 2. Consider an arbitrary information sequence aL, ... , a T with rates that are inside the capacity region CT of the binary WOM. For any 0 < β < 1/2 and
N sufficiently large, the polar WOM code described above can be used to write this sequence reliably over the WOMw.p. at least 1— 2~Νβ in encoding and decoding complexities 0(N log N).
[0241] The Theorem is based on the fact that in every write, the WOM property is held, and in addition, the number of written cells in bounded. We bring this result in the following Lemma, that we then use in order to prove Assumption 1. See, for example, D. Burshtein and A.
Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986.
[0242] Lemma 4 . Consider a polar code designed for the t-th test channel. The code has rate
Rt defined in (2), a frozen set of sub-channels Ft, and some frozen vector uF{ which is uniformly distributed over all \Ft \ dimensional binary vectors. The code is used to encode a random vector
(s, v drawn by i. i.d. sampling from the distribution
P(s, v — P(i, -c| - 0)/2 + P($, -i'| — l)/2 using the SC encoder. Denote by x the encoded codeword. Then for any S > 0, 0 < ? < l/2 and N sufficiently large, the following holds w.p.
1. \{k: sk = U and xk φ vk = l}| < (etat_._ + δ)Ν,
2. [k: sk = 1 and xk vk = !} = 0.
[0243] Based on this Lemma, we propose the following construction for the code CpiS of
Assumption 1. Assume that a polar WOM code is applied with T = 2 and ε± = 1 - p, that is, 1 = p and ¾ = 1/2. Furthermore, assume that (1 - p)N cells are being written in the first write. Connecting the notations of Assumption 1 to those of the polar WOM code, note that c = s and c' = x 0 v ® s. Now, Cp = {fPiS,gPiS is set to be the encoding and decoding function of the second write of the polar WOM code. In the following Lemma we prove that this code has the properties of Assumption 1.
[0244] Lemma 5. The code€p>s described above satisfies the three properties of Assumption 1 w.p. at least 1— 2~N^ .
[0245] Proof. First, by Lemma 4, the rate of the code is p— 6, as stated in Assumption 1.
Next, note that the second property (the correctness of the decoded value) follows directly from the construction of the WOM code. The third property, c < c', follows from the second property of Lemma 4.
[0246] For the first property of Assumption 1, we write the first property of Lemma 4 in the language of Assumption 1, and get that for any ε > 0, w.p. 1— 2 , w(c') - w(c) < (p/2 + ε)Ν.
In addition, by the proof of Lemma 4 we can also verify that, w(c') - (c) > (p/2 - έ)Ν, and the property is met, completing the proof. 5 Analysis of the Construction
[0247] After we showed how to use polar WOM codes in our construction, we are now left with analyzing the sum-rate of Construction 1.
[0248] By Theorem 1 and remembering that N = mz and n' > 3ogiV = log(mZ), we get that the instantaneous rate of the code is given by inst = (i/N g2-D
_ (jg-&V)(w-l)
Figure imgf000061_0001
< 2 >— - (l - £m/2) ± (3)
[0249] Note that by Assumption 1, δ is a constant, which does not depend on the value of N. However, p is also a constant in this assumption, and since Construction 1 uses p = 2/m, δ can be a function of m as well. Therefore, we can choose for example δ = 2/τη2 in order to let the expression δτη/2 vanish when m is large enough. Similarly, ε can be also taken to be a function of m. However, it cannot be a function of z, and therefore (3) shows that when z is large, unfortunately we get that 3ltnst approaches zero. In order to solve this difficulty, we extend the result in [4, Lemma 1] for the case that ε is a function of N.
Figure imgf000061_0002
[0250] Lemma 6. For any ε > N 0 < β < 1/2 and N sufficiently large, the properties of
β
Assumption 1 hold w.p. at least 1— 2~ .
[0251] Proof. The case of constant ε is proven in section VI. C. The proof of this case is based on on the typical distortion of polar lossy source codes. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. The proof of this Lemma is based on an extension of this result, and therefore, in the following, we presents the definitions used for describing the typical distortion result.
[0252] Similar to the notation employed in other works, define c-strong typical sequences x,y € X'v X N with respect to the distribution p(x, y) on X x y, and denote it by
_ *(w3 (X. F), as follows. See, for example, T. Cover and J. Thomas, Elements of Information
Theory, 2nd ed. New York: Wiley, 2006, pp. 325-326. Let C a, b\x, y) denote the number of occurrences of the symbols a, b in x,y. Then x, y e Α*^' , F) if the following two conditions hold. First, for all a, h 1 X 1/ with p(a, b) > 0, \C (a, b\x, y) / N - p(a, i>) | < ε. Second, for all a, b x y with p{a, b = 0, C{a, b\x,y) = 0.
[0253] In our case, ¾(«) = uG®", and since G®n has a full rank, each vector a corresponds to exactly one vector x(ti). We say that u,y e Af (U,Y) if x(u), y E A (X, Y) with respect to the probability distribution p(x,y) = W(y\x)/2. Let Qt/l^) be the probability that x(u),y€ - *W ( ,F). In [4, Lemma 1], it is shown that Assumption 1 holds if
x(u),y Asj2 {X, F). Therefore, in order to complete the proof of this Lemma, we need to show that for any ε > 2iV , > 1 - ^■
[0254] Define a value β' such that 0 < β' < β . By the proof of [4, Theorem 1], it follows that
Figure imgf000062_0001
31 -t
Taking ? > 2N~ ~, we get:
( (Α ίΝ > 1 - 2-»β' - le-™"' and therefore, for N sufficiently large, the assumption holds w.p. at least l - 2- [0255] Notice that taking large ε decreases 3linst■ Therefore, we choose the smallest ε that meets the conditions of Lemma 6 for any 0 < β < 1/2, meaning ε = N s = 1/N1 4. In some embodiments, ε may be even smaller , depending on an acceptable trade-off between 3lin3t and the probability of encoding failure. The properties of Construction 1 are now described.
[0256] Theorem 3. We note that the decoding can be done with complexity 0(N logN), by performing the decoding of the k ranks in parallel. For T = q— m + 1, consider an arbitrary information sequence lr ..., θγ with rates 3linst < 2. For any 0 < β < 1/2 and q, m and z sufficiently large, the rank modulation rewriting code in Construction 1 can be used to write this information sequence w.p. at least 1— T2~N , in encoding and decoding complexities
0(mNlogN).
[0257] Proof: Setting ε = 1/N1 4 and δ = 2/m2, and remembering that n1 < 2logN, we get that
2 (1 - If my ·—
2 (1 - 1/m)2 itn
[0258] Therefore, SfJ35t can take any value below 2 for large enough m and∑, if z/ 3 is large enough as well. The probability of writing failure is achieved by the union bound. Each time fp>s is applied, the probability of encoding failure is at most 2~N . is applied m— 1 times in each operation of the rank-modulation encoding, and therefore, for large enough N, the rank- modulation encoding is successful w.p. at least 1— 2 . Since the rank-modulation encoding is applied ϊ' times, the probability of successful write of the whole information sequence is at least
1 - Τ2→'β . [0259] We prove the encoding and decoding complexities. By Theorem 2, the complexities of fPiS and gPiS are both O(NlogN). In each rank, we also apply h or A-1, which can be performed in logarithmic time in N. See, for example, The Art of computer Programming volume 4,
Fascicle 3. Addison Wesley, 2005 pp. 5-6 and D. E. Knuth, "Efficient balanced codes," IEEE Trans. On Inform. Theory, vol. 32, no 1, pp. 51-53, 1986. The functions h and h 1 are applied at most εΝ times on each rank, and therefore they don't affect the complexity. Finally, since fPiS and βρ are applied for each rank, the encoding and decoding complexities are n(m.N\ngN).
[0260] In the rare event of an encoding error, the encoder can take one of two strategies. One option is to use a different dither value. See, for example, D. Burshtein and A. Strugatski, "Polar write once memory codes," in Proceedings of the 2012 IEEE International Symposium on Information Theory, ISIT2012, Cambridge, MA, USA, Jul. 2012, pp. 1982-1986. In this case the decoder can realize the correct dither value, either by direct communication (by using extra storage), or by switching to the next dither value upon detection (e.g., using CRC) a decoding failure.
[0261] If the methods for taking a different dither value are too expensive in practice, the encoder can take a different strategy. We bring here the idea of this strategy, without a formal description and analysis. In case of encoding error, the encoder can recalculate the vector vfc in
Step 1 of the encoding function of Construction 1. In the new vector νγ, vk = 0 if and only if i E S'k U S¾+2. This also involves setting c = fmi„ + k + 1 in Step 4 of the decoding for all ranks 1 < k < m— 1, and thus reduce the value of T by 1 (in fact, we do not have to increase the level of the cells with ranks below the one that failed, and perhaps take advantage of this gap in the following writes, but for the simplicity of the construction we seek to keep all the ranks to be in m consecutive levels). However, since the event of encoding error is rare, the expected value of T will not be affected by much if q is large enough compared to N. In the case of repeated errors, a different subset os size 2z of S'k U Sk+1 U Sfe+2 could be taken each time until exhaustion. If that wouldn't be enough, 5fc .3 could be added with the cost of an extra write, and so on until a successful encoding occurs. [0262] FIG. 15B depicts a process 1520 for operating a data device. The process 1520 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1525, 1527, 1529, 1531, 1533, 1535, 1537, 1539, and 1541. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process starts with block 1525. In block 1527 a new data set for a rank of a plurality of ranks is received to store in the memory device wherein the memory device comprises a plurality of cells. In block 1529 a current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set. In block 1531 a binary representation of the plurality of cells is created and used to store the new data set. In block 1533 a binary representation of the plurality of cells is used to store the new data set. In block 1535 a WOM code is used to combine the binary representation with the new data set to create a binary WOM vector. In block 1537 the binary WOM vector is modified to equal quantities of l 's and 0's within the candidate cells creating a new data vector. In block 1539 the new data vector is written to the candidate cells. In block 1541 the process may be continued. In some embodiments the WOM is a Polar WOM. In further embodiments the cost of writing is defined as a maximum level of the plurality of cells after writing the new data vector minus a maximum level of the candidate cells before writing the new data vector. In some embodiments, the cost is one. In further embodiments the method further comprises reading the new data vector from the candidate cells, modifying the new data vector to recreate the binary WOM vector and using a WOM code on the binary WOM vector to separate the binary representation from the data set.
[0263] FIG. 15C depicts a process 1545 for operating a data device. The process 1545 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1547, 1549, 1551, 1553, 1555, and 1557. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process starts with block 1547. In block 1549 a new data set m is received for a rank of a plurality of ranks to store in the memory device wherein the memory device comprises a plurality of cells. In block 1551 a current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set. In block 1553 a new multi-permutation is determined and is to be written to the candidate cells representing the received data set m. In block 1555 the new multi-permutation is written to memory with a predetermined cost wherein the new multi-permutation is determined in accordance with the predetermined cost. In block 1557 the process may be continued. [0264] FIG. 15D depicts a process 1560 for operating a data device. The process 1560 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576, 1578, and 1580. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process starts with block 1562. In block 1564 a data value is received comprising a plurality of data sets wherein each data set is a set of values representing a rank in a plurality of ranks. In block 1566 a new data set for a rank of a plurality of ranks is received to store in the memory device wherein the memory device comprises a plurality of cells. In block 1568 a current state of candidate cells is read within the plurality of cells wherein candidate cells are used to store the new data set. In block 1570 a binary representation of the plurality of cells is created and used to store the new data set. In block 1572 a binary representation of the plurality of cells is created an used to store the new data set. In block 1574 a WOM code is used to combine the binary representation with the new data set to create a binary WOM vector. In block 1576 the binary WOM vector is modified to equal quantities of 1 's and 0's within the candidate cells creating a new data vector. In block 1578 the new data vector is written to the candidate cells. In block 1580, if a new data vector has been written for each rank of the plurality of ranks the process may continue with block 1582. If all of the data vectors have not been written, then blocks 1566-1578 may be repeated until all the new data vectors have been written.
[0265] FIG. 15E depicts a process 1584 for operating a data device. The process 1560 may include one or more operations, actions, or functions as illustrated by one or more of blocks 1586-1599. Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation. The process 1560 may include one or more operations, actions, or functions as illustrated by one or more of the blocks. The process starts with block 1586. In block 1588 a plurality of cells are read and a multi-permutation stored in the plurality of cells is determined. In block 1590 a group of cells are identified in the plurality of cells, contained within each rank of a plurality of ranks. In block 1592 a new data vector is read from the rank. In block 1594 the new data vector is modified to recreate a binary WOM vector. In block 1596 a WOM code is used on the binary WOM vector to separate a binary representation from a data set. In block 1598 if a WOM code has been used on each rank the process may continue to block 1599. If a WOM code has not been used on each rank the blocks of 1592 through 1596 may be repeated until a WOM code has been used on each rank. [0266] VI. Example Embodiments
[0267] FIG. 16 is an illustration of one embodiment of a data device constructed in accordance with the present disclosure. FIG. 16 shows a memory 1602 that is accessed by a memory controller 1604 that communicates with a host device 1606, which may all be operatively or communicatively coupled to each other. The memory 1602 is used for storing data that is represented in accordance with a minimum push up, multi-cell or multi-permutation scheme. The memory may be implemented, for example, as a Flash memory having multilevel cells. The memory 1602 and memory controller 1604 together comprise a data storage device 1608 that may be external to the host device or may be integrated with the host device into a single component or system. For example, the data storage device 1608 may comprise a Flash memory device (sometimes referred to as a "thumb drive") that communicates with a host computer 1606 via a USB connection, or the data storage device may comprise a solid state drive (SSD) that stores data for a host computer system. Alternatively or additionally, the data storage device may be integrated with a suitable host device to comprise a single system or component with memory employing a minimum push up, a multi-cell or a multi-permutation scheme, such as a smart phone, network router, MP3 player, or the like.
[0268] The memory controller 1604 operates under control of a microcontroller 1610, which manages communications with the memory 1602 via a memory interface 1612 and manages communications with the host device via a host interface 1614. Thus, the memory controller supervises data transfers from the host 1606 to the memory 1602 and from the memory 1602 to the host 1606. The memory controller 1604 also includes a data buffer 1616 in which data values may be temporarily stored for transmission over the data channel controller 1617 between the memory 1602 and the host 1606. The memory controller also includes an Error Correcting code (ECC) block 1618 in which data for the ECC is maintained. For example, the ECC block 1618 may comprise data and program code to perform error correction operations for a minimum push up, a multi-cell or a multi-permutation scheme. Such error correction operations are described, for example, in the U.S. Patent 8225180 entitled "Error Correcting Codes for Rank Modulation" by Anxiao Jiang et al. issued July 17, 2012. The ECC block 1618 may contain parameters for the error correction code to be used for the memory 1602, such as programmed operations for translating between received symbols and error-corrected symbols, or the ECC block may contain lookup tables for codewords or other data, or the like. The memory controller 1604 performs the operations described above for decoding data and for encoding data. [0269] The operations described above for operating a data storage device, for reading data from a device, for programming a data storage device, and encoding and decoding, can be carried out by the operations depicted in FIGS. 6, 8A, 8B, 14 and 15 which can be performed by the microcontroller 1610 and associated components of the data storage device 1608. For example, in an implementation of the rank modulation coding scheme in a USB thumb drive, all the components of the data storage device 1608 depicted in FIG. 16 are contained within the USB thumb drive.
[0270] The processing components such as the controller 1604 and microcontroller 1610 may be implemented in the form of control logic in software or hardware or a combination of both, and may comprise processors that execute software program instructions from program memory, or as firmware, or the like. The host device 1606 may comprise a computer apparatus. A computer apparatus also may carry out the operations of FIGS. 6, 8 A, 8B, 14 and 15. FIG. 17 is a block diagram of a computer apparatus 1700 sufficient to perform as a host device and sufficient to perform the operations of FIGS. 6, 8A, 8B, 14 and 15.
[0271] FIG. 17 is a block diagram of a computer system 1700 that may incorporate
embodiments of the present disclosure and perform the operations described herein. The computer system 1700 may include one or more processors 1705, a system bus 1710, storage subsystem 1715 that includes a memory subsystem 1720 and a file storage subsystem 1725, user interface output devices 1730, user interface input devices 1735, a communications subsystem 1740, and the like.
[0272] In various embodiments, the computer system 1700 may include computer components such as the one or more processors 1705. The file storage subsystem 1725 can include a variety of memory storage devices, such as a read only memory (ROM) 1745 and random access memory (RAM) 1750 in the memory subsystem 1720, and direct access storage devices such as disk drives. As noted, the direct access storage device may comprise a rank modulation data storage device that operates as described herein.
[0273] The user interface output devices 1730 can comprise a variety of devices including flat panel displays, touchscreens, indicator lights, audio devices, force feedback devices, and the like. The user interface input devices 1735 can comprise a variety of devices including a computer mouse, trackball, trackpad, joystick, wireless remote, drawing tablet, voice command system, eye tracking system, and the like. The user interface input devices 1735 may allow a user to select objects, icons, text and the like that appear on the user interface output devices 1730 via a command such as a click of a button or the like.
[0274] Embodiments of the communication subsystem 1740 typically include an Ethernet card, a modem (telephone, satellite, cable, ISDN), (asynchronous) digital subscriber line (DSL) unit, FireWire (IEEE 1394) interface, USB interface, and the like. For example, the
communications subsystem 1740 may be coupled to communications networks and other external systems 1755 (e.g., a network such as a LAN or the Internet), to a FireWire bus, or the like. In other embodiments, the communications subsystem 1740 may be physically integrated on the motherboard of the computer system 1700, may be a software program, such as soft DSL, or the like.
[0275] The RAM 1750 and the file storage subsystem 1725 are examples of tangible non- transitory media configured to store data such as error correction code parameters, codewords, and program instructions to perform the operations described herein when executed by the one or more processors, including executable computer code, human readable code, or the like. Other types of tangible non-transitory media include program product media such as floppy disks, removable hard disks, optical storage media such as CDs, DVDs, and bar code media, semiconductor memories such as flash memories, read-only-memories (ROMs), battery-backed volatile memories, networked storage devices, and the like. The file storage subsystem 1725 includes reader subsystems that can transfer data from the program product media to the storage subsystem 1715 for operation and execution by the processors 1705.
[0276] The computer system 1700 may also include software that enables communications over a network (e.g., the communications network 1755) such as the DNS, TCP/IP, UDP/IP, and HTTP/HTTPS protocols, and the like. In other embodiments, other communications software and transfer protocols may also be used, for example IPX, or the like.
[0277] Many other hardware and software configurations are suitable for use with the disclosed embodiments. For example, the computer system 1700 may be a desktop, portable, rack-mounted, or tablet configuration. Additionally, the computer system 1700 may be a series of networked computers. Further, a variety of microprocessors are contemplated and are suitable for the one or more processors 1705, such as PENTIUM™ microprocessors from Intel
Corporation of Santa Clara, California, USA; OPTERON™ or ATHLON XP™ microprocessors from Advanced Micro Devices, Inc. of Sunnyvale, California, USA; and the like. Further, a variety of operating systems are contemplated and are suitable, such as WINDOWS®, WINDOWS XP®, WINDOWS VISTA®, or the like from Microsoft Corporation of Redmond, Washington, USA, SOLARIS® from Sun Microsystems, Inc. of Santa Clara, California, USA, various Linux and UNIX distributions, and the like. In still other embodiments, the techniques described above may be implemented upon a chip or an auxiliary processing board (e.g., a programmable logic device or graphics processor unit).
[0278] The embodiments described herein can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium as a plurality of instructions adapted to direct an information- processing device to perform the methods or portions thereof disclosed in described herein. Other ways and/or methods to implement the embodiments are possible.
[0279] The minimum push up, multi-cell and multi-permutation schemes described herein can be implemented in a variety of systems for encoding and decoding data for transmission and storage. That is, codewords are received from a source over an information channel according to a minimum push up, a multi-cell or a multi-permutation scheme and are decoded into their corresponding data values and provided to a destination, such as a memory or a processor, and data values for storage or transmission are received from a source over an information channel and are encoded into a minimum push up, multi-cell or multi-permutation scheme.
[0280] The operations of encoding and decoding data according to a minimum push up, multi- cell or multi-permutation scheme can be illustrated as in FIG. 18, which shows data flow in a data device 1802 that operates according to the minimum push up, multi-cell or multi- permutation schemes described herein. In FIG. 18, the device includes a Data Modulation (DM) controller 1804 that stores and retrieves information values 1806 using one of a minimum push up, multi-cell or a multi-permutation scheme. The DM controller 1804 includes an encoder and decoder 1808 for encoding data values into codewords and decoding codewords into data values. The DM controller encodes data values and provides codewords to the source/destination block 1810, and decodes codewords from the source/destination and provides corresponding data values. The two-way nature of the data flow is indicated by the double-ended arrows labeled "data values" and "codewords". The DM controller includes interfaces through which the DM controller receives and provides the data values and the information values (codewords).
[0281] The information values 1806 comprise the means for physically representing data comprising the data values and codewords. For example, the information values 1806 may represent charge levels of memory cells, such that multiple cells are configured to operate as a virtual cell in which charge levels of the cells determine a permutation of the minimum push up, multi-cell or multi-permutation schemes. Data values are received and encoded to permutations of a minimum push up, multi-cell or multi-permutation scheme and charge levels of cells are adjusted accordingly, and codewords are determined according to cell charge levels, from which a corresponding data value is determined. Alternatively, the information values 1806 may represent features of a transmitted signal, such as signal frequency, magnitude, or duration, such that the cells or bins are defined by the signal features and determine a permutation of the minimum push up, multi-cell or multi-permutation schemes. For example, rank ordering of detected cell frequency changes over time can determine a permutation, wherein the highest signal frequency denotes the highest cell level. Other schemes for physical representation of the cells may be used.
[0282] For information values 1806 in the case of cell charge levels, the source/destination 1810 comprises memory cells in which n memory cells provide n cell values whose charge levels define a a minimum push up, multi-cell or multi-permutation scheme. For storing a codeword, the memory cells receive an encoded codeword and comprise a destination, and for reading a codeword, the memory cells provide a codeword for decoding and comprise a source. In the case of data transmission, the source/destination 1810 may comprise a transmitter/receiver that processes a signal with signal features such as frequency, magnitude, or duration that define cells or bins such that the signal features determine a permutation. That is, signal components comprising signal frequency, magnitude, or duration may be controlled and modulated by the transmitter such that a highest signal frequency component or greatest magnitude component or greatest time component corresponds to a highest cell level, followed by signal component values that correspond to other cell values and thereby define a permutation of the minimum push up, multi-cell or multi-permutation schemes. When the source/destination 1810 receives a codeword from the controller 1804, the source/destination comprises a transmitter of the device 1802 for sending an encoded signal. When the source/destination provides a codeword to the controller 1804 from a received signal, the source/destination comprises a receiver of the device for receiving an encoded signal. Signal components of the transmitted signal may be suitably modulated or otherwise transformed to define minimum push up, multi-cell or multi-permutation schemes, in view of the description herein.
VII. CONCLUSION [0283] The present disclosure describes various examples that may be embodied as an apparatus, systems, methods, or a combinations thereof.
In some examples, a programming method is described that may substantially reduce rewriting cost for rank modulation, and studied rewrite codes for a worst-case constraint on the cost. Some presented codes may be optimal full-assignment codes, although additional code constructions are contemplated of general code length, non-full assignment codes and average-case cost constraint.
[0284] Some examples describe a flash cell structure (multi-cell) that may enable a high number of updates between block erasures. Various update codes that are based on permutations of relative levels are also described.
[0285] The present disclosure is not to be limited in terms of the particular embodiments described in this application, which are intended as illustrations of various aspects. Many modifications and variations can be made without departing from its spirit and scope.
Functionally equivalent methods and apparatuses within the scope of the disclosure, in addition to those enumerated herein are possible in view of the foregoing descriptions. Such
modifications and variations are intended to fall within the scope of the appended claims. The present disclosure is to be limited only by the terms of the appended claims, along with the full scope of equivalents to which such claims are entitled. It is to be understood that this disclosure is not limited to particular methods, apparatus, articles of manufacture, and/or systems, which can, of course, vary. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only, and is not intended to be limiting.
[0286] With respect to the use of substantially any plural and/or singular terms herein, such terms can be translated from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations may be expressly set forth herein for sake of clarity.
[0287] In general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as "open" terms (e.g., the term "including" should be interpreted as "including but not limited to," the term "having" should be interpreted as "having at least," the term "includes" should be interpreted as "includes but is not limited to," etc.). If a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim recitation to embodiments containing only one such recitation, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an" (e.g., "a" and/or "an" should be interpreted to mean "at least one" or "one or more"); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, such recitation should be interpreted to mean at least the recited number (e.g., the bare recitation of "two recitations," without other modifiers, means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to "at least one of A, B, and C, etc." is used, in general such a construction is intended in the sense as would be understood for the convention (e.g., " a system having at least one of A, B, and C" would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances where a convention analogous to "at least one of A, B, or C, etc." is used, in general such a construction is intended in the sense as would be understood for the convention (e.g., " a system having at least one of A, B, or C" would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). Virtually any disjunctive word and/or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase "A or B" will be understood to include the possibilities of "A" or "B" or "A and B."
[0288] In addition, where features or aspects of the disclosure are described in terms of Markush groups, the disclosure is also thereby described in terms of any individual member or subgroup of members of the Markush group.
[0289] For any and all purposes, such as in terms of providing a written description, all ranges disclosed herein also encompass any and all possible subranges and combinations of subranges thereof. Any listed range can be easily recognized as sufficiently describing and enabling the same range being broken down into at least equal halves, thirds, quarters, fifths, tenths, etc. As a non-limiting example, each range discussed herein can be readily broken down into a lower third, middle third and upper third, etc. All language such as "up to," "at least," "greater than,"
"less than," and the like include the number recited and refer to ranges which can be subsequently broken down into subranges as discussed above. A range includes each individual member. Thus, for example, a group having 1-3 cells refers to groups having 1, 2, or 3 cells. Similarly, a group having 1-5 cells refers to groups having 1, 2, 3, 4, or 5 cells, and so forth.
[0290] While various aspects and embodiments have been disclosed herein, other aspects and embodiments are possible. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.

Claims

WE CLAIM: 1. A method of operating a memory device, the method comprising:
receiving a new data set for a rank of a plurality of ranks to be stored in the memory device wherein the memory device comprises a plurality of cells;
reading a current state of candidate cells within the plurality of cells wherein candidate cells are used to store the new data set;
creating a binary representation of the plurality of cells used to store the new data set;
using a WOM code to combine the binary representation with the new data set to create a binary WOM vector;
modifying the binary WOM vector to equal quantities of 1 's and 0's within the candidate cells creating a new data vector;
writing the new data vector to the candidate cells.
2. A method as in claim 1, wherein the WOM is a Polar WOM.
3. A method as in claim 1, wherein a cost of writing is defined as a maximum level of the plurality of cells after writing the new data vector minus a maximum level of the candidate cells before writing the new data vector.
4. A method as in claim 3, wherein the cost = 1.
5. A method as in claim 1, wherein the method further comprises:
reading the new data vector from the candidate cells;
modifying the new data vector to recreate the binary WOM vector; using a WOM code on the binary WOM vector to separate the binary representation from the data set.
6. A method as in claim 5, wherein the WOM is a Polar WOM.
7. A computer method of operating a memory device, the method comprising:
receiving a new data set m for a rank to store in the memory device wherein the memory device comprises a plurality of cells; reading a current state of the plurality of cells within the plurality of cells are arranged according to a rank modulation scheme and the plurality of cells are used to store the new data set;
determine a new multi-permutation to be written to the plurality of cells representing the received data set m determined in accordance with a predetermined cost;
write the new multi-permutation to memory.
8. A computer method of operating a memory device, the method comprising:
receiving a data value comprising a plurality of data sets wherein each data set is a set of values representing a rank in a plurality of ranks and repeating for the data sets in the data value, operations comprising:
receiving a new data set for a rank of the plurality of ranks to be stored in the memory device wherein the memory device comprises a plurality of cells;
reading a current state of candidate cells within the plurality of cells wherein candidate cells are used to store the new data set;
creating a binary representation of the plurality of cells used to store the new data set;
using a WOM code to combine the binary representation with the new data set to create a binary WOM vector;
modifying the binary WOM vector to equal quantities of l 's and 0's within the candidate cells creating a new data vector;
writing the new data vector to the candidate cells.
9. A method as in claim 8, wherein the WOM is a Polar WOM.
10. A computer method of operating a memory device, the method comprising:
reading a plurality of cells and determining a multi-permutation stored in the plurality of cells;
identifying a group of cells in the plurality of cells, contained within each rank of a plurality of ranks;
for each rank, performing the steps of:
reading a new data vector from the rank;
modifying the new data vector to recreate a binary WOM vector; using a WOM code on the binary WOM vector to separate a binary representation from a data set.
11. A method as in claim 10, wherein the WOM is a Polar WOM.
12. A memory controller comprising:
an interface that receives a new data set for a rank of a plurality of ranks to be stored in a memory comprising a plurality of cells;
a processor configured to perform operations of:
reading a current state of candidate cells within the plurality of cells wherein candidate cells are used to store the new data set;
creating a binary representation of the plurality of cells used to store the new data set;
using a WOM code to combine the binary representation with the new data set to create a binary WOM vector;
modifying the binary WOM vector to equal quantities of l 's and 0's within the candidate cells creating a new data vector;
writing the new data vector to the candidate cells.
13. A memory controller as in claim 12, wherein the WOM is a Polar WOM.
14. A memory controller as in claim 12, wherein a cost of writing is defined as a maximum level of the plurality of cells after writing the new data vector minus a maximum level of the candidate cells before writing the new data vector.
15. A memory controller as in claim 14, wherein the cost = 1.
16. A memory controller as in claim 12, wherein the processor is configured to perform operations further comprising:
reading the new data vector from the candidate cells;
modifying the new data vector to recreate the binary WOM vector;
using a WOM code on the binary WOM vector to separate the binary representation from the data set.
17. A memory controller as in claim 16, wherein the WOM is a Polar WOM.
18. A memory controller comprising: an interface that receives a new data set m for a rank to be stored in a memory device wherein the memory device comprises a plurality of cells;
a processor configured to perform operations of:
reading a current state of the plurality of cells within the plurality of cells are arranged according to a rank modulation scheme and the plurality of cells are used to store the new data set;
determine a new multi-permutation to be written to the plurality of cells representing the received data set m determined in accordance with a predetermined cost;
write the new multi-permutation to memory.
19. A memory controller comprising:
an interface that receives a data value comprising a plurality of data sets wherein each data set is a set of values representing a rank in a plurality of ranks;
a processor configured to perform operations repeated for the data sets in the data value, the operations comprising:
receiving a new data set for a rank of the plurality of ranks to be stored in the memory device wherein the memory device comprises a plurality of cells;
reading a current state of candidate cells within the plurality of cells wherein candidate cells are used to store the new data set;
creating a binary representation of the plurality of cells used to store the new data set;
using a WOM code to combine the binary representation with the new data set to create a binary WOM vector;
modifying the binary WOM vector to equal quantities of l 's and 0's within the candidate cells creating a new data vector;
writing the new data vector to the candidate cells.
20. A memory controller as in claim 19, wherein the WOM is a Polar WOM.
21. A memory controller comprising:
an interface that provides access to a plurality of cells in a memory device; a processor that accesses the plurality of cells through the interface and reads the plurality of cells and performs operations comprising determining a multi- permutation stored in the plurality of cells, and identifying a group of cells in the plurality of cells contained within each rank of a plurality of ranks and, for each rank, performing the operations of:
reading a new data vector from the rank;
modifying the new data vector to recreate a binary WOM vector; using a WOM code on the binary WOM vector to separate a binary representation from a data set.
22. A memory controller as in claim 21, wherein the WOM is a Polar WOM.
23. A data device comprising:
a memory configured to store data values:
a memory controller that is configured to store the data values in the memory by performing operations comprising:
receiving a new data set for a rank of a plurality of ranks to be stored in the memory device wherein the memory device comprises a plurality of cells;
reading a current state of candidate cells within the plurality of cells wherein candidate cells are used to store the new data set;
creating a binary representation of the plurality of cells used to store the new data set;
using a WOM code to combine the binary representation with the new data set to create a binary WOM vector;
modifying the binary WOM vector to equal quantities of 1 's and 0's within the candidate cells creating a new data vector;
writing the new data vector to the candidate cells.
24. A data device as in claim 23, wherein the WOM is a Polar WOM.
25. A data device as in claim 23, wherein a cost of writing is defined as a maximum level of the plurality of cells after writing the new data vector minus a maximum level of the candidate cells before writing the new data vector.
26. A data device as in claim 25, wherein the cost = 1.
27. A data device as in claim 23, wherein the method further comprises: reading the new data vector from the candidate cells;
modifying the new data vector to recreate the binary WOM vector; using a WOM code on the binary WOM vector to separate the binary
representation from the data set.
28. A data device as in claim 27, wherein the WOM is a Polar WOM.
29. A data device comprising:
a memory configured to store data values:
a memory controller that is configured to store the data values in the memory by performing operations comprising:
receiving a new data set m for a rank to store in the memory device wherein the memory device comprises a plurality of cells;
reading a current state of the plurality of cells within the plurality of cells are arranged according to a rank modulation scheme and the plurality of cells are used to store the new data set;
determine a new multi-permutation to be written to the plurality of cells representing the received data set m determined in accordance with a predetermined cost- write the new multi-permutation to memory.
30. A data device comprising:
a memory configured to store data values:
a memory controller that is configured to store the data values in the memory by performing operations comprising:
receiving a data value comprising a plurality of data sets wherein each data set is a set of values representing a rank in a plurality of ranks and repeating for the data sets in the data value, operations comprising:
receiving a new data set for a rank of the plurality of ranks to be stored in the memory device wherein the memory device comprises a plurality of cells;
reading a current state of candidate cells within the plurality of cells wherein candidate cells are used to store the new data set;
creating a binary representation of the plurality of cells used to store the new data set;
using a WOM code to combine the binary representation with the new data set to create a binary WOM vector; modifying the binary WOM vector to equal quantities of Fs and 0's within the candidate cells creating a new data vector;
writing the new data vector to the candidate cells.
31. A data device as in claim 30, wherein the WOM is a Polar WOM.
32. A data device comprising:
reading a plurality of cells and determining a multi-permutation stored in the plurality of cells;
identifying a group of cells in the plurality of cells, contained within each rank of a plurality of ranks;
for each rank, performing the steps of:
reading a new data vector from the rank;
modifying the new data vector to recreate a binary WOM vector; using a WOM code on the binary WOM vector to separate a binary representation from a data set.
33. A data device as in claim 32, wherein the WOM is a Polar WOM.
PCT/US2013/030043 2012-03-08 2013-03-08 Rank-modulation rewriting codes for flash memories WO2013134735A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261608245P 2012-03-08 2012-03-08
US201261608465P 2012-03-08 2012-03-08
US61/608,465 2012-03-08
US61/608,245 2012-03-08
US201261725347P 2012-11-12 2012-11-12
US61/725,347 2012-11-12

Publications (1)

Publication Number Publication Date
WO2013134735A1 true WO2013134735A1 (en) 2013-09-12

Family

ID=49117416

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2013/030043 WO2013134735A1 (en) 2012-03-08 2013-03-08 Rank-modulation rewriting codes for flash memories

Country Status (2)

Country Link
US (2) US9086955B2 (en)
WO (1) WO2013134735A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017098581A1 (en) * 2015-12-08 2017-06-15 株式会社日立製作所 Storage device and data error correction method
CN107077886A (en) * 2014-01-17 2017-08-18 加州理工学院 Asymmetric error correction and flash memory using polar code are rewritten

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9086955B2 (en) 2012-03-08 2015-07-21 California Institute Of Technology Rank-modulation rewriting codes for flash memories
US9602241B2 (en) 2013-12-17 2017-03-21 Samsung Electronics Co., Ltd. Computing system with polar processing mechanism and method of operation thereof
US9772935B2 (en) * 2014-09-16 2017-09-26 Empire Technology Development Llc Data storage based on rank modulation in single-level flash memory
WO2016094741A1 (en) * 2014-12-10 2016-06-16 California Institute Of Technology Improving nand flash reliability with rank modulation
CA2918136C (en) 2015-01-19 2023-08-15 Queen's University At Kingston High sum-rate write-once memory
US9479291B2 (en) 2015-02-13 2016-10-25 Samsung Electronics Co., Ltd. Apparatus and method of constructing polar code
US9772899B2 (en) * 2015-05-04 2017-09-26 Texas Instruments Incorporated Error correction code management of write-once memory codes
US9690517B2 (en) * 2015-05-22 2017-06-27 Texas Instruments Incorporated Dual-mode error-correction code/write-once memory codec
TWI587638B (en) * 2015-10-15 2017-06-11 旺宏電子股份有限公司 Method and device for performing polar codes channel-aware procedure on bit-channels
US10963429B2 (en) 2017-10-11 2021-03-30 Lognovations Holdings, Llc Method and system for content agnostic file indexing
US11138152B2 (en) 2017-10-11 2021-10-05 Lognovations Holdings, Llc Method and system for content agnostic file indexing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090132758A1 (en) * 2007-11-20 2009-05-21 California Institute Of Technology Rank modulation for flash memories
WO2011156750A2 (en) * 2010-06-10 2011-12-15 The Regents Of The University Of California Efficient two and multiple write wom-codes, coding methods and devices

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4107550A (en) 1977-01-19 1978-08-15 International Business Machines Corporation Bucket brigade circuits
US4686554A (en) 1983-07-02 1987-08-11 Canon Kabushiki Kaisha Photoelectric converter
US4701884A (en) 1985-08-16 1987-10-20 Hitachi, Ltd. Semiconductor memory for serial data access
JP2846822B2 (en) 1994-11-28 1999-01-13 モトローラ株式会社 Non-volatile memory having multi-bit-capable cells having two-layer floating gate structure and method of programming the same
JP3001409B2 (en) 1996-02-19 2000-01-24 モトローラ株式会社 Non-volatile memory having multi-bit-adaptive cell having two-layer floating gate structure and method for programming / erasing / reading the same
US7184307B2 (en) 2001-08-28 2007-02-27 Samsung Electronics Co., Ltd. Flash memory device capable of preventing program disturbance according to partial programming
JP4274734B2 (en) 2002-03-15 2009-06-10 三洋電機株式会社 Transistor circuit
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
WO2008086233A1 (en) * 2007-01-05 2008-07-17 The Texas A & M University System, A Texas State Agency Storing information in a memory
US8225180B2 (en) * 2007-11-20 2012-07-17 California Institute Of Technology Error correcting codes for rank modulation
CN102484627B (en) 2009-09-16 2014-07-23 日本电气株式会社 Communication Device and communication control method
US8880783B2 (en) 2011-07-05 2014-11-04 Kandou Labs SA Differential vector storage for non-volatile memory
US8456919B1 (en) 2011-11-10 2013-06-04 Sandisk Technologies Inc. Method and apparatus to provide data including hard bit data and soft bit data to a rank modulation decoder
US9230652B2 (en) 2012-03-08 2016-01-05 California Institute Of Technology Flash memories using minimum push up, multi-cell and multi-permutation schemes for data storage
US9086955B2 (en) 2012-03-08 2015-07-21 California Institute Of Technology Rank-modulation rewriting codes for flash memories

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090132758A1 (en) * 2007-11-20 2009-05-21 California Institute Of Technology Rank modulation for flash memories
WO2011156750A2 (en) * 2010-06-10 2011-12-15 The Regents Of The University Of California Efficient two and multiple write wom-codes, coding methods and devices

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
FAN, ZHANG ET AL.: "LDPC Codes for Rank Modulation in Flash Memories", IEEE ISIT., 13 June 2010 (2010-06-13), AUSTIN, TEXAS, pages 859 - 863, XP031710641 *
JIANG, ANXIAO ET AL.: "Universal rewriting in constrained memories", IEEE ISIT., 28 June 2009 (2009-06-28), SEOUL, KOREA., pages 1219 - 1223, XP031513703 *
MAZUMDAR, ARYA ET AL.: "Constructions of Rank Modulation Codes", IEEE ISIT., 31 July 2011 (2011-07-31), ST. PETERSBURG, pages 869 - 873 *
WU, YUNNAN ET AL.: "Position Modulation Code for Rewriting Write-Once Memories", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. 57, no. 6, June 2011 (2011-06-01), pages 3692 - 3697, XP011326358, DOI: doi:10.1109/TIT.2011.2134370 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077886A (en) * 2014-01-17 2017-08-18 加州理工学院 Asymmetric error correction and flash memory using polar code are rewritten
WO2017098581A1 (en) * 2015-12-08 2017-06-15 株式会社日立製作所 Storage device and data error correction method

Also Published As

Publication number Publication date
US9916197B2 (en) 2018-03-13
US20130254466A1 (en) 2013-09-26
US9086955B2 (en) 2015-07-21
US20150324253A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
US9916197B2 (en) Rank-modulation rewriting codes for flash memories
US9666280B2 (en) Flash memories using minimum push up, multi-cell and multi-permutation schemes for data storage
US9985651B2 (en) Read threshold calibration for LDPC
US9632866B2 (en) Systems for and methods of extending lifetime of non-volatile memory
KR101508890B1 (en) Apparatuses and methods of operating for memory endurance
KR101753498B1 (en) Updating Reliability Data
US8296623B2 (en) Codes for limited magnitude asymmetric errors in flash memories
US20230231579A1 (en) Data storage device
KR20150106270A (en) List decoding method for polar codes and memory system adopting the same
WO2009067624A1 (en) Error correcting codes for rank modulation
WO2009067633A1 (en) Rank modulation for memory devices
JP7051887B2 (en) Non-binary context mixing methods, non-binary context mixing data storage systems with compressors and decompressors, and computer programs.
US11050438B2 (en) Memory controller
CN110673979B (en) Memory controller and method of operating the same
KR101926608B1 (en) Hard decision decoding method and low density parity check decoder using method thereof
CN107634764B (en) Decoder and memory controller using low density parity check code
CN110415753B (en) Error correction circuit and method for operating the same
CN104283570A (en) Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders
KR20160144960A (en) Asymmetric error correction and flash-memory rewriting using polar codes
US10326473B2 (en) Symbol-based coding for NAND flash devices
Zhou et al. Balanced modulation for nonvolatile memories
CN111049530A (en) Error correction circuit and method of operating the same
US9985647B2 (en) Encoder and decoder design for near-balanced codes
Wang Data Representation for Efficient and Reliable Storage in Flash Memories

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13758602

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13758602

Country of ref document: EP

Kind code of ref document: A1