1 Generalized Gray Codes for Local Rank Eyal En Gad, Michael Langberg, Member, IEEE, Moshe Schwartz, Senior Member, IEEE, and Jehoshua Bruck, Fellow, IEEE

Abstract—We consider the local rank-modulation cells (slow charge leakage). In addition, if we allow only scheme in which a sliding window going over a sequence of a simple programming (charge-injection) mechanism real-valued variables induces a sequence of . called “push-to-the-top”, whereby a single cell is driven Local rank-modulation is a generalization of the rank- modulation scheme, which has been recently suggested as above all others in terms of charge level, then no over- a way of storing information in flash memory. programming can occur, a problem which considerably We study Gray codes for the local rank-modulation slows down programming in conventional multi-level scheme in order to simulate conventional multi-level flash flash cells. cells while retaining the benefits of rank modulation. Rank modulation has been studied intermittently Unlike the limited scope of previous works, we consider code constructions for the entire range of parameters since the early works of Slepian [17] (later extended in including the code length, sliding window size, and overlap [1]), in which permutations were used to digitize vectors between adjacent windows. We show our constructed codes from a time-discrete memoryless Gaussian source, and have asymptotically-optimal rate. We also provide efficient Chadwick and Kurz [5], in which permutations were encoding, decoding, and next-state . used in the context of signal detection over channels Index Terms—Flash memory, , local rank with non-Gaussian noise (especially impulse noise). modulation, permutations, rank modulation. Other works on the subject include [1]Ð[4], [6], [7]. More recently, permutations were used for communi- I. INTRODUCTION cating over powerlines (for example, see [20]), and for modulation schemes for flash memory [13], [14], [18], With the recent application to flash memories, the [21]. rank-modulation scheme has gained renewed interest as One drawback to the rank-modulation scheme is the evident in the recent series of papers [8], [13], [14], fact that we need to reconstruct the induced [18], [21]. In the conventional modulation scheme used by the relative charge levels of the participating cells. If in flash-memory cells, the absolute charge level of each n cells are involved, at least Ω(n log n) comparisons are q cell is quantized to one of levels, resulting in a single needed, which might be too high for some applications. q demodulated symbol from an alphabet of size .In It was therefore suggested in [8], [21] that only local contrast, in the rank modulation scheme a group of comparisons be made, creating a sequence of small in- n flash cells comprise a single virtual cell storing a duced permutations instead of a single all-encompassing n! symbol from an alphabet of size , where each symbol permutation. This obviously restricts the number of is assigned a distinct configuration of relative charge distinct configurations, and thus, reduces the size of the n levels in the cells. Thus, there is no more need for resulting alphabet as well. In the simplest case, requiring threshold values to distinguish between various stored the least amount of comparisons, the cells are located symbols, which mitigates the effects of retention in flash in a one-dimensional array and each cell is compared The material in this paper was presented in part at the 2011 IEEE with its two immediate neighbors requiring a single International Symposium on Information Theory. comparator between every two adjacent cells [8]. E. En Gad and J. Bruck are with the Department of Electrical Yet another drawback of the rank-modulation scheme Engineering, California Institute of Technology, Pasadena, CA 91125, USA (e-mail: [email protected]; [email protected]). is the fact that distinct n charge levels are required for M. Langberg is with the Computer Science Division, Open Univer- a group of n physical flash cells. Therefore, restricted sity of Israel, Raanana 43107, Israel (email: [email protected]). reading resolution prohibits the use of large values of n. M. Schwartz is with the Department of Electrical and Computer Engineering, Ben-Gurion University, Beer Sheva 84105, Israel (email: However, when only local views are considered, distinct [email protected]). values are required only within a small local set of cells, 2

c0 =5.00 c1 =2.50 c2 =4.25 c3 =6.50 c4 =4.00 c5 =1.00 c6 =1.50 c7 =5.50 c8 =6.00

fc =([3, 0, 2, 4, 1], [4, 2, 0, 1, 3], [0, 3, 4, 2, 1])

Fig. 1. Demodulating a (3, 5, 9)-locally rank-modulated signal.

thus enabling the use of large groups of cells with local computation. rank modulation. The rest of the paper is organized as follows. In An important application for rank-modulation in the Section II we give preliminary definitions and notation. context of flash memory was described in [13]: A set In Section III we present our construction for optimal of n cells, over which the rank-modulation scheme local rank modulation for general degrees of locality. is applied, is used to simulate a single conventional We conclude with a discussion in Section IV. multi-level flash cell with n! levels corresponding to the alphabet {0, 1,...,n! − 1}. The simulated cell supports II. DEFINITIONS AND NOTATION an operation which raises its value by 1 modulo n!. We shall now proceed to introduce the notation and This is the only required operation in many rewriting definitions pertaining to local rank modulation and Gray schemes for flash memories (see [11], [12], [22]), and codes. We will generally follow the notation introduced it is realized in [13] by a Gray code traversing the in [8]. n! states where, physically, the transition between two adjacent states in the Gray code is achieved by using A. Local Rank Modulation a single “push-to-the-top” operation. In the context of Let us consider a sequence of t real-valued variables, local rank modulation, Gray codes for the local scheme t =(c0,c1,...,ct−1) ∈ R , where we further assume were studied in [8], where necessary conditions as well ci = cj for all i = j. The t variables induce a as constructions were provided. permutation fc ∈ St, where St denotes the set of Having considered the two extremes: full rank modu- all permutations over [t]={0, 1, 2,...,t− 1}. The lation with a single permutation of n cells, and extreme permutation fc is defined as local rank modulation with a sequence of n permu- tations over 2 elements, the question of whether any fc(i)=|{j | cj

where the indices are taken modulo n, and also 0  factoradic notation. We denote this (partial) representa- ¯ p  n − 1, and 1  t  n. We now define the (s,t,n)- tion as fci·s,t . Accordingly, we define, local rank-modulation (LRM) scheme, which we do by ¯f ¯ ¯ ¯ ¯ defining the demodulation process. Let s  t  n c =(fc0,t , fcs,t , fc2s,t ,...,fcn−s,t ), | be positive , with s n. Given a sequence of n and the set of all such presentations as R¯(s, t, n). Thus, c distinct real-valued variables, =(c0,c1,...,cn−1), for example, the configuration of Figure 1 would be c the demodulation maps to the sequence of n/s per- represented by ((3, 0, 1), (4, 2, 0), (0, 2, 2)). mutations from St as follows: Lemma 1. For all 1  s  t  n, f c =(fc0,t ,fcs,t ,fc2s,t ,...,fcn−s,t ). (1)   n   s   t! Loosely speaking, we scan the n variables using win- R¯(s, t, n)  |R(s, t, n)|  (t − s)! · . (t − s)! dows of size t positioned at multiples of s and write     down the permutations from St induced by the local Proof: That R¯(s, t, n)  |R(s, t, n)| is trivial, views of the sequence. since any f ∈R(s, t, n) results in one ¯f ∈ R¯(s, t, n). In the context of flash-memory storage devices, we For the other inequality, assume we fix the permutation shall consider the n variables, c =(c0,c1,...,cn−1), induced by the first t − s cells, where there are (t − s)! to be the charge-level readings from n flash cells. The ways of doing so. It follows that there are t!/(t − s)! fc demodulated sequence, , will stand for the original ways of choosing fcn−s,t , and then the same amount of information which was stored in the n cells. This ways of choosing fcn−2s,t , and continuing all the way approach will serve as the main motivation for this up to fc0,t we get the desired result. paper, as it was also for [8], [13], [14], [18], [21]. See When s = t = n, the (n, n, n)-LRM scheme Figure 1 for an example. degenerates into a single permutation from S n. This We say a sequence f of n/s permutations over St is was the case in most of the previous works using n (s, t, n)-LRM realizable if there exists c ∈ R such that permutations for modulation purposes. A slightly more f = fc, i.e., it is the demodulated sequence of c under general case, s = t Generally speaking, a Gray code, G, is a sequence i | cj

The transition between adjacent states in the Gray (s, t, n)-LRM. A rough description of our construction code is directly motivated by the flash memory applica- follows. First we partition the n cells into m blocks tion, and was first described and used in [13], and later each of√ size m/n. To simplify our presentation we set also used in [8]. This transition is the “push-to-the-top” m = n, implying that we have m blocks, each of operation, which takes a single flash cell and raises its size m. Denote the cells in block i by ci. For each ¯ charge level above all others. block ci we will use the factoradic representation fci to In our case, however, since we are considering a represent permutations in R¯(s, t, m). Namely, each and local rank-modulation scheme, the “push-to-the-top” every block can be thought of an element of an alphabet operation merely raises the charge level of the se- Σ={v0,...,vV −1} of size V . lected cell above those cells which are comparable with Now, consider any de-Bruijn sequence S of order m− it. Thus, we define the set of allowed transitions as 1 over Σ (of period V m−1). Namely, S will consist of { } m−1 T = τ0,τ1,...,τn−1 , which is a set of functions, a sequence of V elements vs0 ,vs1 ,...,vs m−1 R →R V −1 τj : (s, t, n) (s, t, n), where τj represents a over Σ such that the subsequences vsi ,...,vsi+m−2 of S “push-to-the-top” operation performed on the j-th cell. cover all (m − 1)-tuples of Σ exactly once, sub-indices m−1 More precisely, let f be an (s, t, n)-LRM realizable of s are taken modulo V . Here, si ∈ [V ]. Such n sequence of permutations, i.e., there exists c ∈ R sequences S exist, e.g., [10]. such that f = fc. Now define the transition τj acting We are now ready to construct our Gray code G. on f as f = fc realizable by the variables c = The construction will have two phases. First we con- n (c0,...,cn−1) ∈ R such that cj is pushed to a value struct so-called anchor elements in G, denoted as higher than all of it’s comparable cells. We denote r(j) G¯ = {g0,...,gL−1}. The elements of G¯ will consist as the rightmost index (cyclically) among the cells that of a cyclic Gray code over Σm. That is, the difference share a window with cj , and l(j) as the leftmost index between each gi and gi+1 in G¯ will be in only one out (cyclically) among them. We can find r(j) and l(j) by of the m characters (from Σ)ingi. Specifically, the the following expressions: code G¯ will be derived from the de-Bruijn sequence S   j − t +1 as follows: we set g0 to be the first m elements of S, l(j)=s mod n, gi gi+1 vs s and in the transition from to we change i to     vs . The code G¯ is detailed below: j i+m r(j)= s +(t − 1) mod n. s g0 = vsm−1 vsm−2 ... vs1 vs0 Now c is given by the following expression: g1 = vsm−1 vsm−2 ... vs1 vsm

g2 = vs vs ... vs vs  m−1 m−2 m+1 m ci i = j, . ci = . max cl(i),...,cr(i) +1 i = j. gL−2 = vsL−1 vsL−2 ... vs1 vs0

Definition 1. A Gray code G for (s, t, n)-LRM (denoted gL−1 = vsL−1 vsm−2 ... vs1 vs0 (s, t, n)-LRMGC) is a sequence of distinct codewords, G = g0,g1,...,gN−1, where gi ∈R(s, t, n). For all where L =lcm(m, V m−1), the sub-indices of s are 0  i  N − 2, we further require that gi+1 = τj (gi) taken modulo V m−1, and the underline is an imaginary for some j.Ifg0 = τj (gN−1) for some j, then we say marking distinguishing the block which is about to the code is cyclic. We call N the size of the code, and change. |R | say G is optimal if N = (s, t, n) . With the imaginary marking of the underline, the code ∞ ¯ m Definition 2. We say a family of codes, {Gi} , where G is clearly a Gray code over Σ due to the properties i=1 ¯ Gi is an (s, t, ni)-LRMGC of size Ni, ni+1 >ni,is of the de-Bruijn sequence S. However G does not asymptotically optimal if suffice for our construction as the transitions between the anchors gi and gi+1 involve changing the entries of log Ni lim 2 =1. an entire block, which may involve many push-to-the- i→∞ |R | log2 (s, t, ni) top operations. We thus refine G¯ by adding additional elements between each pair of adjacent anchors from G¯ RAY ODES FOR III. G C (s, t, n)-LRM that allow us to move from the block configuration in g i In this section we present efficiently encodable to that in gi+1 by a series of push-to-the-top operations. and decodable asymptotically-optimal Gray codes for Our construction is summarized below formally. 5

As will be seen in our analysis, it is crucial that we In what follows we present 1 that specifies 0 1 i may identify for each each element in G¯ exactly which the sequence gi ,gi ,...,gi that allow us to move from block is being changed. To this end, and for other tech- anchor state gi to state gi+1.Asgi and gi+1 differ nical reasons, we will add some auxiliary digits to each only in a single block (and this block is changed from block. These digits are referred to as non-information vsi to vsi+m ), the same will hold for the sequence 0 1 i j j digits. Loosely speaking, in each block of size m the gi ,gi ,...,gi , i.e., gi and gi will only differ in the 1 last t+1 digits (approximately ) will be non information block in which gi and gi+1 differ. Thus, it suffices digits. The last 2 digits will be used to mark which block to define in Algorithm 1 how to change a block of − is being currently changed, while the t 1 digits before length m with cell values that represent vsi into a block them will act as a buffer zone that allows the successful that represents vsi+m using push-to-the-top operations. transformation between anchors. In our setting, the t+1 However, we call the attention of the reader to the fact non-information digits will be negligible with respect to that while the change in represented value affects only the remaining m − (t +1)information digits, allowing one block, for administrative reasons, in the block to our codes to have asymptotically optimal rate. the left (in cyclic order), we also push cells. We now present Algorithm 1 and describe some of Construction 1. We consider√ the (s, t, n)-LRM, where n is a square, m = n  t +2, and s|m. Let its properties. We then prove that indeed the resulting {v0,v1,...,vV −1} be a set of V distinct mixed-radix code G is an asymptotically-optimal cyclic (s, t, n)- vectors of length m taken from ([t] × [t − 1] ×···× LRMGC. We assume that the following algorithm is m/s { − } [t − s]) . The values of the last s((t +2)/s−1) applied to positions 0, 1,...,m 1 . We further as- ∈ × − ×···× − m/s digits of each vi do not play a role in the rep- sume (r0,r1,...,rm−1) ([t] [t 1] [t s]) resentation of the stored data and are called non- represents the value v, then we say the jth digit of v is information digits, so by abuse of notation, a mixed- radix vector (r0,r1,...,rm−1) actually represents the rj 0  j

Algorithm 1 Transform block vsi to block vsi+m This is an artifact of our example in which we take n In the block to the left (in cyclic order), push the be be small. For large values of n the overhead in each rightmost cell block is negligible with respect to the information bits. aj ⇐ 0 for all j =0, 1,...,m− 3 As an example, the transition between g1 and g2 is j ⇐ 0 (the changed positions are underlined) repeat r(j) g1 = 1010 0010 0000 0010 0 g1 = 1010 0001 0000 0010 if vsi+m (j)= ai and aj =0then 1 i=j+1 g1 = 1010 0000 1000 0010 if cj  max ck then g2 = 1010 0000 1010 0010 l (j)kr (j),ak=1 Push the jth cell of current block. We now address the analysis of Algorithm 1. end if Lemma 2. Assuming the underline is known, all an- aj ⇐ 1 chors used in Construction 1 are distinct. j ⇐ l(j) else Proof: The proof follows directly from the proper- j ⇐ j +1 ties of the de-Bruijn sequence S and the fact that we end if are taking L to be the lcm(m, V m−1). until j = m − 2 Lemma 3. Algorithm 1 maintains the correctness of the Push the next-to-last cell of current block. underline digit in anchors. In addition, between any two adjacent anchors, Algorithm 1 guarantees the underline digits of the changing block and the block to its left Furthermore, when the cell is marked, it is also pushed (cyclically), are both not of maximal value (amoung the to the top if its value is lower than that of a cell that cells with which they share a window). shares a window with it and is already marked. As each time a cell is changed it is pushed to the top, this will Proof: The proof is by induction. The base case ensure that the resulting cell configuration c will have follows from our construction of the first anchor ele- ment g0. Assume gi satisfies the inductive claim. When a factoradic representation corresponding to v si+m . We note that in order to be able to decode a state, we applying Algorithm 1 to move from anchor g i to gi+1, need to have some way to know which block is being we start by pushing the rightmost cell of the block to the currently changed, i.e., the imaginary underline in the left of that being changed. This implies that the value of anchor. We use the last two cells of each block for that the underline cell in both the block being changed and purpose. that to its left are now not maximal. This state of affairs remains until the end of Algorithm 1, in which we push Example 1. Take the case of (1, 2, 16)-LRM with m = the next-to-the last cell in the changed block. At that 4, V =2, and a de-Bruijn sequence S = 00010111 of point in time, the underline cell in the changed block order 3 and alphabet of size 2. The list of anchors is obtains its maximal value, while the block to its left (that to be changed in the next application of Algorithm g0 = 1010 0010 0010 0000 1) is of non-maximal value. All the other underline g1 = 1010 0010 0000 0010 cells remain unchanged throughout the execution of g2 = 1010 0000 1010 0010 Algorithm 1. g3 = 1000 1010 1010 0010 g4 = 1010 1010 1010 0000 Lemma 4. Every word in the Gray code is distinct. g5 = 1010 1010 1000 0010 Proof: First, by lemmas 2 and 3, we know that all g6 = 1010 1000 0010 0010 of the anchors in our construction are distinct. It is left g7 = 1000 0010 0010 0010 to show that adding the auxiliary vectors resulting from The bold (the leftmost bit in each group of four) Algorithm 1, our code remains a Gray code. Here it denotes the information bit, while the rest are non- suffices to focus only on the block being changed. In information bits. The underlined vectors are easily order to show that every word generated by Algorithm 1 recognizable by the next-to-rightmost bit being 0. in a single execution is distinct, we will show that every Notice that in this example the information bit is cell configuration we encounter will never be visited dominated in size by the remaining bits of each block. again. Specifically, given a configuration, we let j be 7

the next cell that will be pushed. Since cell j is going efficiently. That is true since algorithm 1 is efficient, to be pushed, there exists a cell k such that cj ck. But since ak = procedures for de-Bruijn sequences, such as the ones 1, cell k will not be pushed anymore, and thus in all described in [16], [19]. future configurations cell j will be higher than cell k. Corollary 1. For all constants 1  sni, Lemma 5. Algorithm 1 terminates, and when it does, with log Ni all of the cells are marked exactly once. lim 2 =1. i→∞ log2 |R(s, t, ni)| Proof: That Algorithm 1 terminates is easy to see. 2 2 For convenience, we denote z = s((t +2)/s−1). Proof: We set ni = s i for all i  t +2. Then ∈{ − − } si−1 For each k m z,...,m 3 , vsi+m (k)=0, and Ni  Li  Vi . It follows that therefore each of those cells is marked the first time that j = k. Now we assume by induction that for each log2 Ni k  m−z, all of the cells with indices l, k  l  m−3, lim  i→∞ log |R(s, t, ni)| are marked before the algorithm terminates. 2 − The base case, k = m−z, was already proved above.   (si 1) log2 Vi  lim si2 For the induction step, by the induction assumption, we i→∞ t! log2 (t − s)! · (t−s)! know that all the cells in {k,...,m− 3} are eventually i− t+2 +1 marked, and in particular, the cells in {k,...,r (k −  s  − t! } (si 1) log2 (t−s)! 1) are eventually marked. At the point where exactly   = lim  2 vs (k − 1) of them are marked, the index j in the i→∞ si i+m − · t! algorithm is guaranteed to be lowered below k − 1, and log2 (t s)! (t−s)! − so, cell k 1 will be marked the next time it is visited. =1. Since also the algorithm never marks a cell more than once, the claim is proved. Theorem 1. Algorithm 1 changes a block representing

vsi into a block representing vsi+m . IV. CONCLUSION Proof: When cell j is being marked, exactly We presented the framework for (s, t, n)-local rank { } vsi+m (j) cells from j +1,...,r (j) are marked with modulation, and studied Gray codes for the most general aj =1, and thus will not be pushed anymore. The rest case. The codes we present are asymptotically optimal. will be pushed after and above it, and therefore its rank Several questions remain open. For the case is exactly vsi+m (j), as desired. of (1, 2,n)-LRM, a previous work describes asymptotically-optimal codes for which the weight of Lemma 6. The time complexity of algorithm 1 is n O(tm). the codewords is constant and approaches 2 [8]. That property guarantees a bounded charge difference in Proof: Each cell is visited by the algorithm at most any “push-to-the-top” operation. Constant-weight codes t times, once during the first visit of the algorithm, and for the general case are still missing. Of more general once following each of the t−1 cells immediately to its interest is the study of codes that cover a constant right being pushed. Since each cell is pushed at most fraction of the space. once, a full execution of the algorithm takes O(tm) steps. ACKNOWLEDGMENT Combining all of our observations up to now, we are able to summarize with the following theorem for G This work was supported in part by ISF grant 134/10, from Construction 1. ISF grant 480/08, the Open University of Israel’s re- search fund (grant no. 46114), the NSF grant ECCS- Theorem 2. The code G from Construction 1 is a cyclic 0802107, an NSF-NRI award, and the United States Gray code of size at least L. - Israel Binational Science Foundation (BSF) grant We note also that G can be encoded and decoded 2010075. 8

REFERENCES [1] T. Berger, F. Jelinek, and J. K. Wolf, “Permutation codes for sources,” IEEE Trans. on Inform. Theory, vol. IT-18, no. 1, pp. 160Ð169, Jan. 1972. [2] I. F. Blake, “Permutation codes for discrete channels,” IEEE Trans. on Inform. Theory, vol. 20, pp. 138Ð140, 1974. [3] I. F. Blake, G. Cohen, and M. Deza, “Coding with permutations,” Inform. and Control, vol. 43, pp. 1Ð19, 1979. [4] H. Chadwick and I. Reed, “The equivalence of rank permuta- tion codes to a new class of binary codes,” IEEE Trans. on Inform. Theory, vol. 16, no. 5, pp. 640Ð641, 1970. [5] H. D. Chadwick and L. Kurz, “Rank permutation group codes based on Kendall’s correlation statistic,” IEEE Trans. on In- form. Theory, vol. IT-15, no. 2, pp. 306Ð315, Mar. 1969. [6] G. Cohen and M. Deza, “Decoding of permutation codes,” in Intl. CNRS Colloquium, July, France, 1977. [7] M. Deza and P. Frankl, “On maximal numbers of permutations with given maximal or minimal distance,” J. Combin. Theory Ser. A, vol. 22, 1977. [8] E. En Gad, M. Langberg, M. Schwartz, and J. Bruck, “Constant- weight gray codes for local rank modulation,” IEEE Trans. on Inform. Theory, vol. 57, no. 11, pp. 7431Ð7442, Nov. 2011. [9] H. C. Ferriera, A. J. H. Vinck, T. G. Swart, and I. de Beer, “Permutation trellis codes,” IEEE Trans. on Communications, pp. 1782Ð1789, Nov. 2005. [10] S. W. Golomb, Shift Register Sequences. Holden-Day, San Francisco, 1967. [11] A. Jiang, V. Bohossian, and J. Bruck, “Rewriting codes for joint information storage in flash memories,” IEEE Trans. on Inform. Theory, vol. 56, no. 10, pp. 5300Ð5313, Oct. 2010. [12] A. Jiang, M. Langberg, M. Schwartz, and J. Bruck, “Univer- sal rewriting in constrained memories,” in Proceedings of the 2009 IEEE International Symposium on Information Theory (ISIT2009), Seoul, Korea, Jun. 2009, pp. 1219Ð1223. [13] 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. [14] 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. [15] C. A. Laisant, “Sur la num«eration factorielle, application aux permutations,” Bulletin de la Soci«et«e Math«ematique de France, vol. 16, pp. 176Ð183, 1888. [16] C. J. Mitchell, T. Etzion, and K. G. Paterson, “A method for constructing decodable de Bruijn sequences,” IEEE Trans. on Inform. Theory, vol. IT-42, pp. 1472Ð1478, 1996. [17] D. Slepian, “Permutation modulation,” in Proc. of the IEEE, vol. 53, no. 3, 1965, pp. 228Ð236. [18] 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. [19] J. Tuliani, “De Bruijn sequences with efficient decoding algo- rithms,” Discrete Math., vol. 226, no. 1, pp. 313Ð336, Jan. 2001. [20] H. Vinck, J. Haering, and T. Wadayama, “Coded M-FSK for power line communications,” in Proceedings of the 2000 IEEE International Symposium on Information Theory (ISIT2000), Sorrento, Italy, 2000, p. 137. [21] 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. [22] E. Yaakobi, P. H. Siegel, and J. K. Wolf, “Buffer codes for multi-level flash memory,” in Proceedings of the 2008 IEEE International Symposium on Information Theory (ISIT2008), Toronto, Canada, 2008, poster.