Next Article in Journal
Collaborative Service Innovation: A Quantitative Analysis of Innovation Networks in a Multisectoral Setting
Next Article in Special Issue
Improving DFT-Based Image Watermarking Using Particle Swarm Optimization Algorithm
Previous Article in Journal
Orbit Growth of Shift Spaces Induced by Bouquet Graphs and Dyck Shifts
Previous Article in Special Issue
Application of Delaunay Triangulation and Catalan Objects in Steganography
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Integer Codes Correcting Asymmetric Errors in Nand Flash Memory

Institute of Mathematics and Informatics, Bulgarian Academy of Sciences, Acad. G. Bonchev Str., Bl.8, 1113 Sofia, Bulgaria
*
Author to whom correspondence should be addressed.
Mathematics 2021, 9(11), 1269; https://doi.org/10.3390/math9111269
Submission received: 19 May 2021 / Revised: 28 May 2021 / Accepted: 28 May 2021 / Published: 1 June 2021
(This article belongs to the Special Issue Coding and Combinatorics)

Abstract

:
Memory devices based on floating-gate transistor have recently become dominant technology for non-volatile storage devices like USB flash drives, memory cards, solid-state disks, etc. In contrast to many communication channels, the errors observed in flash memory device use are not random but of special, mainly asymmetric, type. Integer codes which have proved their efficiency in many cases with asymmetric errors can be applied successfully to flash memory devices, too. This paper presents a new construction and integer codes over a ring of integers modulo A = 2 n + 1 capable of correcting single errors of type ( 1 , 2 ) , ( ± 1 , ± 2 ) , or ( 1 , 2 , 3 ) that are typical for flash memory devices. The construction is based on the use of cyclotomic cosets of 2 modulo A. The parity-check matrices of the codes are listed for n 10 .

1. Introduction

The NAND (NOT AND) logic type memory devices based on floating-gate transistor have recently become dominant technology for non-volatile storage devices like USB flash drives, memory cards, solid-state disk, etc. This technology has advantages regarding storage density, cost, power consumption and erase and write times but bytes cannot be addressed independently. The hierarchical structure of NAND flash is as follows: A series of NAND cells is connected in strings which are organized in pages, pages are organized in blocks and so on. This architecture requires reading and writing to be done only in pages. Moreover, before writing any data in a page of a block this block must be erased. Hence erasing is block-wise.
Data processing in NAND flash memories is realized by changing the voltage at inputs. The corresponding physical processes in the cells can generates errors in the work of the memory. Recently used technology for 3D NAND memory of vertically stacked cells additionally increases the probability of errors. Therefore, NAND flash memory requires error control coding. In many commercial flash memory devices classical error correcting codes are implemented, e.g., Hamming codes, BCH codes, Reed–Solomon codes. However, these codes are designed for channels where the errors with the same weight are equally probable, which is not true for flash memories.
Abstractly, flash memory can be considered as a device comprising blocks of “cells” that can take on a given number of different states (levels). The process of writing involves an increasing level of the cell or erasing the entire block before increasing the level of a cell in that block. Errors can be a wrong increase of the level or more rarely a decrease during the process of storage.
A mathematical model that describes well the processes in flash memory is the following. Let the cells have A states, that is, store log 2 ( A ) bits. Then we can consider pages and blocks as vectors over the ring Z A of integers modulo A. Then errors can be considered as changes of the values of vectors’ entries. The aforesaid shows that usually changes of the entries of the vectors are in an upward direction but with limited-magnitude values. Moreover, decreasing mainly with 1 is observed. Hence we can say that dominant errors are symmetric of type ± 1 and ( 2 , 3 , l ) for a small l. This fact gives rise to the need to invent and study asymmetric limited-magnitude error correcting codes over Z A (known also as integer codes).
Asymmetric limited-magnitude error-correcting codes were proposed by Varshamov and Tenengolz [1,2] and in a more general form by Ahlswede et al. [3]. Another general method for constructionof asymmetric limited-magnitude error-correcting codes is provided by Cassuto et al. [4]. In 2011, T. Klove and B. Bose [5] proposed systematic codes that correct single limited-magnitude systematic asymmetric errors and achieve a higher rate than the ones given in [4]. They also showed how their code construction can be slightly modified to give codes correcting symmetric errors of limited magnitude. Later T. Klove et al. [6] extended their results and gave a necessary and sufficient condition for the existence of a code over G F ( p ) correcting a single asymmetric error.
In this paper we propose a constructions of codes over Z 2 n + 1 correcting single asymmetric errors of type ( 1 , 2 ) , ( ± 1 , ± 2 ) or ( 1 , 2 , 3 ) . The argument A = 2 n + 1 is chosen due to the fact that it is the closest to, while greater than, a power of two. The choice of A is essential since the use of the unsuitable size of the alphabet can generate problems in implementation of encoding and decoding procedures. Moreover, as we shall see later, the proposed codes are perfect.
The next parts of the paper are organized as follows. A summary of existing results and necessary notations and definitions which are used in this paper are given in Section 2. In Section 3 new constructions of integer codes for flash memory are proposed. Concluding remarks and some open problems are presented and discussed in Section 4. In the Appendix, more detailed information about constructed codes is presented.

2. Preliminaries

Codes over finite alphabets of integers for correcting asymmetric errors are constructed in [1,2]. With the name “integer codes”, such codes are applied to magnetic recording and frame synchronization in [7]. For that, time integer codes have been studied for various purposes and used in many applications. Coding for flash multilevel memory is an area they can be successfully applied to.
Let us recall basic definitions.
Definition 1.
Let Z A be the ring of integers modulo A. An integer code of length n with parity-check matrix H Z A m × n is said to be a subset of Z A n , defined by
C ( H ) = { c Z A n | c H T = 0 }
where all zeros vector 0 Z A m . (We will write only C if there is no possibility for ambiguity.)
We shall say that C is [ n , n m ] A integer code. This notation is widely used for linear code with block length n and dimension n m but in this paper it only means that H has m rows, n columns and entries from Z A . We remind the reader that if A is not a prime then C is not a linear subspace. It is a submodule whose properties, although very close to ones of linear subspaces, are different. In partial, the size of C may differ from A n m . However the differences do not impact correcting properties of considered codes. The aforesaid notation is used only for convenience with no reference to the dimension of the code.
In contrast to conventional codes, integer codes are intended to correct specific types of errors. By choosing a proper parity-check matrix one can construct a code correcting specific types of errors like as given below.
Definition 2.
Let l j and k i be positive integers, j = 1 , , m , i = 1 , , s . The code C ( H ) is said to be a single ( ± k 1 , ± k 2 , , ± k s , l 1 , l 2 , , l m ) error correctable if it can correct any error vector with only one nonzero entry with value l j or ± k i .
In order for C ( H ) to be single ( ± k 1 , ± k 2 , , ± k s , l 1 , l 2 , , l m ) error correctable the corresponding error vectors must have pairwise disjoint syndromes eH T . However, there are ( 2 s + m ) n possible single ( ± k 1 , ± k 2 , , ± k s , l 1 , l 2 , , l m ) error vectors e . Hence, we obtain a lower bound for the size A of the alphabet
A ( 2 s + m ) n + 1 .
Definition 3.
A single ( ± k 1 , ± k 2 , , ± k s , l 1 , l 2 , , l m ) error correctable code C ( H ) of block length n over Z A is called perfect if A = ( 2 s + m ) n + 1 . If the size A of the alphabet is the minimal possible for which a single ( ± k 1 , ± k 2 , , ± k s , l 1 , l 2 , , l m ) error correctable code C ( H ) of block length n over Z A exists, we say that C is optimal.
For many parameters, perfect codes do not exist. In these cases the goal is to construct an optimal code.

3. New Construction of Integer Codes Correcting Single Error of Type ( 1 , 2 ) , ( ± 1 , ± 2 ) , or ( 1 , 2 , 3 )

To construct a single error correctable code it is sufficient to find a parity-check matrix with one row, i.e.,
H = ( h 1 , h 2 , , h n ) , h i Z A
and
C ( H ) = { c Z A n | i = 1 n c i h i = 0 }
Such codes have only one parity-check symbol, i.e., the best possible rate ( n 1 ) / n . The syndrome corresponding to a single error e in position i is e h i . Therefore such a code can correct a single error e if all e h i are distinct.
Theorem 1.
Let A = 2 n + 1 and A s = { s 2 i ( mod A ) i = 0 , 1 , } be the cyclotomic coset of 2 modulo A with leader s. Let A s 0 = { s 2 2 i ( mod A ) i = 0 , 1 , } , A s 1 = { s 2 2 i + 1 ( mod A ) i = 0 , 1 , } . Then | A s | is even with | A s | = 2 n for ( s , A ) = 1 and both the integer codes with H = ( A 1 0 ) and H = ( A 1 1 ) are single ( 1 , 2 ) asymmetric error correctable.
Proof. 
2 n 1 ( mod A ) gives 2 2 n 1 ( mod A ) . Hence the order m of 2 modulo A is a divisor of 2 n . The assumption m n leads to 2 n 1 ( mod A ) , which is a contradiction. Thus m = 2 k , where k | n . Therefore the number of elements | A 1 | of A 1 is even. The same holds for one of any cyclotomic coset A s = { s 2 i ( mod A ) i = 0 , 1 , } with ( s , A ) = 1 .
Now we shall show that the cardinality of A 1 is exactly 2 n . If k < n then A = 2 n + 1 2 2 k + 1 > 2 2 k 1 which contradicts A dividing 2 2 k 1 . Hence k = n . For ( s , A ) = 1 also | A s | = 2 n holds since s 2 2 k s iff 2 2 k 1 ( mod A ) .
The integer code with parity-check matrix H = ( A 1 0 ) has length n and only one parity-check equation, i.e., rate ( n 1 ) / n . The syndrome corresponding to a single error with value 1 is an element of A 1 0 . If the value is 2 the syndrome belongs to 2 A 1 0 = A 1 1 ( mod A ) . Hence the syndromes are distinct. □
Corollary 1.
Under the notations of Theorem 1, let s 1 , s 2 , , s t be all different leaders of cyclotomic cosets of 2 modulo A. Then
H = ( A s 1 0 A s 2 0 A s t 0 )
is a parity-check matrix of a single ( 1 , 2 ) asymmetric error correctable [ 2 n 1 , 2 n 1 1 ] code over A.
Example 1.
Let A = 2 4 + 1 = 17 , i.e., n = 4 . In this case
A 1 = { 1 , 2 , 4 , 8 , 16 , 15 , 13 , 9 } and A 3 = { 3 , 6 , 12 , 7 , 14 , 11 , 5 , 10 }
are all nonzero cyclotomic cosets. Then
A 1 0 = { 1 , 4 , 16 , 13 } { 1 , 4 , 1 4 } , A 1 1 = { 2 , 8 , 15 , 9 } { 2 , 8 , 2 , 8 } ;
A 3 0 = { 3 , 12 , 14 , 5 } { 3 , 12 , 3 , 12 } , A 3 1 = { 6 , 7 , 11 , 10 } { 6 , 7 , 6 , 7 }
The code with a parity-check matrix
H = { 1 , 4 , 16 , 13 , 3 , 12 , 14 , 5 }
is a single ( 1 , 2 ) asymmetric error correctable code and is perfect.
Such codes are also ones with parity-check matrices
H = ( A 1 0 A 3 1 ) , H = ( A 1 1 A 3 1 ) , H = ( A 1 1 A 3 0 ) .
If A 1 00 = { 1 , 4 } and A 3 00 = { 3 , 12 } it is easy to check that the code with
H = ( A 1 00 , A 3 00 ) = ( 1 , 4 , 3 , 12 )
is single ( ± 1 , ± 2 ) error correctable. Such codes are also ones with
H = ( 2 , 8 , 3 , 12 ) , H = ( 2 , 8 , 6 , 7 ) , H = ( 1 , 4 , 6 , 7 ) .
The codes with matrices H = ( A 1 0 ) , ( A 1 1 ) , ( A 3 0 ) , or ( A 3 1 ) are a single ( 1 , 2 , 3 ) asymmetric error correctable.
Corollary 2.
If n > 2 the code with H = ( A 1 0 ) is a single ( 1 , 2 , 3 ) asymmetric error correctable.
Proof. 
Assume 3 A 1 . Then 3 2 n + k ( mod A ) for 1 k n 1 ; thus, 3 2 k ( mod A ) . This means that A divides 2 k + 3 , which is impossible for n > 2 , since A = 2 n + 1 2 k + 2 n 1 + 1 > 2 k + 3 . Therefore, 3 is a leader of a cyclomic coset, namely A 3 . Now arguments similar to ones used in Example 1 complete the proof. □
Theorem 2.
Under the notations of Theorem 1 let A s 00 be the set of first ( | A s 0 | ) / 2 elements of A s 0 . If | A s | 8 then A s 00 is a parity-check matrix of a single ( ± 1 , ± 2 ) error correctable code.
Proof. 
A s modulo A = 2 n + 1 has the structure
A s = { s , 2 s , , 2 k 1 s , s , 2 s , , 2 k 1 s } , k | n , | A s | = 2 k .
k = 2 l + 1 A s 0 = { s , 4 s , , 2 2 l s , 2 s , 2 3 s , , 2 2 l 1 s } A s 1 = A s 0 k = 2 l + 2 A s 0 = { s , 4 s , , 2 2 l , s , 2 2 s , , 2 2 l s } A s 0 = A s 0 .
A s 00 consists of first l elements of A s 0 for k odd and first l + 1 elements when k is even. The condition | A s | 8 guarantees that | A s 00 | 2 (the minimal possible size of H is 1 × 2 ). Hence the multiplication by ( 1 ) maps A s 00 into the negative part of A s 1 when k is odd and into the negative part of A s 0 for even k. Multiplying by 2 maps it into the positive part of A s 1 , while multiplying by 2 maps it into the negative part of A s 0 , or A s 1 for k odd or even, respectively. Therefore syndromes are distinct. □
Corollary 3.
Using notation and conditions of Theorem 2 the code with
H = ( A s 1 00 A s 2 00 A s t 00 )
is a single ( ± 1 , ± 2 ) error correctable code over A when | A s i | 4 and s i are distinct leaders.
Remark 1.
Since t 2 we can allow | A s i 00 | = 1 , i.e., | A s i | = 4 .
In Example 1 A is a prime and A 1 and A 3 are all nontrivial cyclotomic cosets both of length 2 n = 8 . However in general the structure is more complex. We continue with a simple example.
Example 2.
Let A = 2 5 + 1 = 33 = 3 × 11 . The cyclotomic cosets are
A 1 = { 1 , 2 , 4 , 8 , 16 , 32 , 31 , 29 , 25 , 17 } , A 3 = { 3 , 6 , 12 , 24 , 15 , 30 , 27 , 21 , 9 , 18 } ,
A 5 = { 5 , 10 , 20 , 7 , 14 , 28 , 23 , 13 , 26 , 19 } , A 11 = { 11 , 22 } .
Three of them are with length 2 n = 10 and one with length 2. Note that 3 is not coprime with 33 but | A 3 | = 10 . The reason is that 2 2 1 ( mod 3 ) ; thus, 11 × 2 2 11 ( mod 33 ) , while concerning the order of 2 modulo the prime 11 is 10; thus, 3 × 2 10 3 ( mod 33 ) and 10 is the minimal of such a positive integer.
We can construct a single ( 1 , 2 ) asymmetric error correctable code of length 16 over 33 taking
H = { 1 , 4 , 16 , 31 , 25 , 3 , 12 , 15 , 27 , 9 , 5 , 20 , 14 , 23 , 26 , 11 } .
Since
A 1 00 = { 1 , 4 } ; A 3 00 = { 3 , 12 } ; A 5 00 = { 5 , 20 } .
the code with parity-check matrix
H = ( 1 , 4 , 3 , 12 , 5 , 20 )
is ( ± 1 , ± 2 ) error correctable.
We can obtain also a single ( 1 , 2 , 3 ) asymmetric error correctable code of length 10 by taking matrix
H = { A 1 0 , A 5 1 } = { 1 , 4 , 16 , 31 , 25 , 10 , 7 , 28 , 13 , 19 } .
We use A 5 1 instead of A 5 0 because 3 A 5 0 = 3 A 1 0 . The reason is that A 5 0 A 1 0 ( mod 11 ) .
Here are several properties of the numbers of the form 2 n + 1 that can be useful. Their proofs are straightforward and we omit them.
P1.
If n has odd divisor d then 2 n d + 1 divides 2 n + 1 . In partial if n is odd 3 | ( 2 n + 1 ) .
P2.
Let n = 2 a m , where m is odd positive integer. Then
A = 2 n + 1 = 2 2 a m + 1 = ( 2 2 a + 1 ) B = F a B ,
where F a = 2 2 a + 1 is Fermat number. F a is a prime for a = 0 , 1 , 2 , 3 , 4 (no other such primes are known) but even F 4 = 65 , 537 is too large for a divisor of practically interesting value of A.
P3.
If A = 2 n + 1 = ( 2 k + 1 ) B then A B has length 2 k . If there is a cyclotomic coset of length 2 k then 2 k + 1 divides A.
Example 3.
Let A = 2 6 + 1 = 65 = 5 × 13 . The cyclotomic classes of 2 modulo 65 are A 1 , A 3 , A 5 , A 7 , A 11 with cardinality 12 each and
A 13 = { 13 , 26 , 52 , 39 } .
Therefore the code with a parity-check matrix
H = ( A 1 0 , A 3 0 , A 5 0 , A 7 0 , A 11 0 , A 13 0 )
is a single ( 1 , 2 ) error correctable code with length 32.
The code with a parity-check matrix
H = ( 1 , 4 , 16 , 3 , 12 , 48 , 5 , 20 , 15 , 7 , 28 , 47 , 11 , 44 , 46 , 13 )
is a single ( ± 1 , ± 2 ) error correctable [ 16 , 15 ] code.
The code with
H = ( A 1 0 , A 7 0 , 13 ) = ( 1 , 4 , 16 , 64 , 61 , 49 , 7 , 28 , 47 , 58 , 37 , 18 , 13 )
is a single ( 1 , 2 , 3 ) error correctable code with block length 13 since 3 A 1 0 A 3 , 3 A 7 0 A 11 and 2 × 13 3 × 13 A 13 .
Construction of single ( 1 , 2 , 3 ) error correctable codes.
Construction of such codes strongly depends on the value of A = 2 n + 1 and we cannot formulate statement more general than the one in Corollary 2 but can formulate some principles to be followed when one searches such codes. The matrix H = ( A 1 0 ) is the start point for construction. Next we have to enlarge the code by adding some A i 0 or A i 1 , taking into account the following simple observations
  • If A j = 3 A i then A j has to be excluded.
  • For n odd 3 divides A and the situation 3 A j = 3 A i can happen. In this case if A i 0 is included in H then A j 3 A i 0 (which is A j 0 or A j 1 ) can be included. For n even ( 3 , A ) = 1 and the considered situation is impossible.
Table 1 presents parameters of the single error correctable codes constructed by our method over A = 2 n + 1 for 3 n 10 (the cases n = 1 , 2 are trivial). The parity-check matrices are given in Examples 1–3 and in Appendix A.

4. Discussion

In this paper we consider only codes over Z A , A = 2 n + 1 , with one parity-check equation that is sufficient for correction of a single error. There are constructions using matrices with more rows but they require more parity-check symbols; thus, they have a lower rate. Herein we construct codes only with a maximal rate.
Encoding is a computation of only one linear expression. Decoding can be done by using a syndrome error table. Both operations are very fast and simple for modern digital devices.
All codes correcting single ( 1 , 2 ) error are perfect. The same holds for codes correcting ( ± 1 , ± 2 ) error but only when n is even.
Parity-check matrices for n > 10 are too large to be presented in the paper although the fast development of technologies makes such parameters interesting for practice. However, the described construction algorithm is simple to realize and interested readers can easily construct and implement such codes.
Our further investigations aim to develop construction of codes over A = 2 n + 1 correcting two or more errors of the considered type. Examples of double error correctable codes can be found, for example, in [8,9], but they are not applicable to flash memories.

Author Contributions

Conceptualization, H.K. and N.M.; investigation, H.K. and N.M.; writing—original draft preparation, H.K. and N.M.; writing—review and editing, H.K. and N.M. Both authors have read and agreed to the published version of the manuscript.

Funding

This work was partially supported by the National Science Fund of Bulgaria under Grant KP-06-N32/2-2019 and by the Ministry of Education and Science of Bulgaria under the Grant No. D01-271/16.12.2019 “National Centre for High Performance and Distributed Computing”.

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

Not applicable.

Acknowledgments

The authors thank for the provided access to the e-infrastructures of the Centre for Advanced Computing and Data Processing, with the financial support by the Grant No BG05M2OP001-1.001-0003, financed by the Science and Education for Smart Growth Operational Program (2014–2020). The authors thank the anonymous reviewers for their remarks which improved the exposition.

Conflicts of Interest

The authors declare no conflict of interest.

Appendix A. Parity-Check Matrices of the Constructed Codes

Appendix A.1. The Case n = 3

In this case A = 2 3 + 1 = 9 . The cyclotomic cosets of 2 modulo 9 are A 1 = { 1 , 2 , 4 , 8 , 7 , 5 } ; A 3 = { 3 , 6 } . The constructed single error correctable codes are
( 1 , 2 ) : [ 4 , 3 ] H = ( 1 , 4 , 7 , 3 ) ( ± 1 , ± 2 ) : n o n o ( 1 , 2 , 3 ) : [ 2 , 1 ] H = ( 1 , 8 )

Appendix A.2. The Case n = 7

Then A = 2 7 + 1 = 129 = 3 × 43 . The cyclotomic cosets of 2 modulo 129 are 10: one of length 2, namely A 43 = { 43 , 86 } and 9 of length 14 whose leaders are 1 , 3 , 5 , 7 , 9 , 11 , 13 , 19 , 21 . The subcosets with even powers of 2 are
A 1 0 = { 1 , 4 , 16 , 64 , 127 , 121 , 97 } A 3 0 = { 3 , 12 , 48 , 63 , 123 , 105 , 33 }
A 5 0 = { 5 , 20 , 80 , 62 , 119 , 89 , 98 } A 7 0 = { 7 , 28 , 112 , 61 , 115 , 73 , 34 }
A 9 0 = { 9 , 36 , 15 , 60 , 111 , 57 , 99 } A 11 0 = { 11 , 44 , 47 , 59 , 107 , 41 , 35 }
A 13 0 = { 13 , 52 , 79 , 58 , 103 , 25 , 100 } A 19 0 = { 19 , 76 , 46 , 55 , 91 , 106 , 37 }
A 21 0 = { 21 , 84 , 78 , 54 , 87 , 90 , 102 }
A i 00 consists of the first 3 elements of A i 0 .
The constructed single error correctable codes are
( 1 , 2 ) : [ 64 , 63 ] H = ( A 1 0 , A 3 0 , A 5 0 , A 7 0 , A 9 0 , A 11 0 , A 13 0 , A 19 0 , A 21 0 , 43 ) ( ± 1 , ± 2 ) : [ 27 , 26 ] H = ( A 1 00 , A 3 00 , A 5 00 , A 7 00 , A 9 00 , A 11 00 , A 13 00 , A 19 00 , A 21 00 ) ( 1 , 2 , 3 ) : [ 35 , 34 ] H = ( A 1 0 , A 5 0 , A 7 0 , A 11 1 , A 13 0 )

Appendix A.3. The Case n = 8

Now A = F 3 = 2 8 + 1 = 257 is a prime. Then all 16 cyclotomic cosets of 2 modulo 257 have length 2 n = 16 . The leaders of the cosets are the numbers
L = { 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 19 , 21 , 23 , 25 , 27 , 37 , 43 , 45 } .
The constructed single error correctable codes are
( 1 , 2 ) : [ 128 , 127 ] H = ( i L A i 0 ) ( ± 1 , ± 2 ) : [ 64 , 63 ] H = ( i L A i 00 ) ( 1 , 2 , 3 ) : [ 48 , 47 ] H = ( A 1 0 , A 5 0 , A 7 0 , A 9 0 , A 13 0 , A 19 0 )

Appendix A.4. The Case n = 9

A = 2 n + 1 = 513 = 3.9.19 . There are two divisors of type 2 k + 1 , namely 3 = 2 1 + 1 and 9 = 2 3 + 1 . Hence there is a coset of length 2 and one of length 6. They are with leaders A / 3 and A / 9 :
A 171 = { 171 , 342 } ; A 57 = { 57 , 114 , 228 , 456 , 399 , 285 }
All other 28 cosets are of length 18. Their leaders are
L = { 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 35 , 37 , 39 , 41 , 43 , 45 , 51 , 53 , 55 , 75 , 77 , 83 , 85 }
For i L we have | A i 0 | = 9 and | A i 00 | = 4 . The constructed single error correctable codes are
( 1 , 2 ) : [ 256 , 255 ] H = ( i L A i 0 , A 57 0 , 171 ) ( ± 1 , ± 2 ) : [ 113 , 112 ] H = ( i L A i 00 , 57 ) ( 1 , 2 , 3 ) : [ 64 , 63 ] H = ( A 1 0 , A 5 0 , A 7 0 , A 9 0 , A 13 0 , A 17 0 , A 25 0 , 57 )

Appendix The Case n = 10

A = 2 n + 1 = 1025 = 5 2 × 41 . There is one coset of length four, namely
A 205 = { 205 , 410 , 820 , 615 }
All other 51 cosets are of length 20. Their leaders are
L = { 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 , 35 , 37 , 39 , 41 , 43 , 45 , 47 , 49 , 51 , 53 , 55 , 57 , 59 , 69 , 71 , 73 , 75 , 77 , 83 , 85 , 87 , 89 , 91 , 93 , 101 , 103 , 105 , 107 , 109 , 147 , 149 , 155 , 171 , 173 , 179 }
For i L we have | A i 0 | = 10 and | A i 00 | = 5 .The constructed single error correctable codes are
( 1 , 2 ) : [ 512 , 511 ] H = ( i L A i 0 , 205 , 820 ) ( ± 1 , ± 2 ) : [ 256 , 255 ] H = ( i L A i 00 , 205 ) ( 1 , 2 , 3 ) : [ 211 , 210 ] H = ( i T A i 0 , 205 )
where
T = { 1 , 5 , 7 , 9 , 11 , 13 , 17 , 19 , 23 , 29 , 35 , 37 , 45 , 47 , 49 , 59 , 73 , 77 , 89 , 93 , 109 }

References

  1. Varshamov, R.; Tenegolz, G. A code for correcting a single asymmetric error. Autom. Telemat. 1965, 26, 288–292. (In Russian) [Google Scholar]
  2. Varshamov, R. A class of codes for asymmetric channels and a problem from the additive theory of numbers. IEEE Trans. Inf. Theory 1973, 19, 92–95. [Google Scholar] [CrossRef]
  3. Ahlswede, R.; Aydinian, H.; Khachatrian, L. Undirectional error control codes and related combinatorial problems. In Proceedings of the Eighth International Workshop on Algebraic and Combinatorial Coding Theory (ACCT0’2002), Tsarskoe Selo, Russia, 8–14 September 2002; pp. 6–9. [Google Scholar]
  4. Cassuto, Y.; Schwartz, M.; Bohossian, V.; Burck, J. Codes for asymmetric limited-magnitude errors with application to multi-level flash memories. IEEE Trans. Inf. Theory 2010, 56, 1582–1595. [Google Scholar] [CrossRef] [Green Version]
  5. Klove, T.; Bose, B. Systematic, single limited magnitude error correcting codes for flash memories. IEEE Trans. Inf. Theory 2011, 57, 4477–4487. [Google Scholar] [CrossRef]
  6. Klove, T.; Lou, J.; Naydenova, I.; Yari, S. Some codes correcting asymmetric errors of limited magnitude. IEEE Trans. Inf. Theory 2011, 57, 7459–7472. [Google Scholar] [CrossRef]
  7. Han Vinck, A.J.; Morita, H. Codes over the ring of integers modulo m. IEICE Trans. Fundam. 1998, E81-A, 2013–2018. [Google Scholar]
  8. Khachatrian, G.; Khachatryan, H. Construction of Linear Codes over Rings Z m Correcting Double ±1 or ±2. Errors Math. Probl. Comput. Sci. 2018, 49, 66–73. [Google Scholar] [CrossRef]
  9. Kostadinov, H.; Morita, H.; Manev, N.L. On (−1,+1) Error Correctable Integer Codes. IEICE Trans. Fundam. 2010, E93-A, 2758–2761. [Google Scholar] [CrossRef] [Green Version]
Table 1. Single ( 1 , 2 ) , ( ± 1 , ± 2 ) , or ( 1 , 2 , 3 ) errors correctable codes over A = 2 n + 1 .
Table 1. Single ( 1 , 2 ) , ( ± 1 , ± 2 ) , or ( 1 , 2 , 3 ) errors correctable codes over A = 2 n + 1 .
nA ( 1 , 2 ) ( ± 1 , ± 2 ) ( 1 , 2 , 3 )
39[4,3]no[2,1]
417[8,7][4,3][4,3]
533[16,15][6,5][10,9]
665[32,31][16,15][13,12]
7129[64,63][27,26][35,34]
8257[128,127][64,63][48,47]
9513[256,255][113,112][64,63]
101025[512,511][256,255][211,210]
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Kostadinov, H.; Manev, N. Integer Codes Correcting Asymmetric Errors in Nand Flash Memory. Mathematics 2021, 9, 1269. https://doi.org/10.3390/math9111269

AMA Style

Kostadinov H, Manev N. Integer Codes Correcting Asymmetric Errors in Nand Flash Memory. Mathematics. 2021; 9(11):1269. https://doi.org/10.3390/math9111269

Chicago/Turabian Style

Kostadinov, Hristo, and Nikolai Manev. 2021. "Integer Codes Correcting Asymmetric Errors in Nand Flash Memory" Mathematics 9, no. 11: 1269. https://doi.org/10.3390/math9111269

APA Style

Kostadinov, H., & Manev, N. (2021). Integer Codes Correcting Asymmetric Errors in Nand Flash Memory. Mathematics, 9(11), 1269. https://doi.org/10.3390/math9111269

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop