The present disclosure relates to reducing errors caused by inter-cell interference in a memory device.
Storage density of a memory device can be increased by decreasing the size of individual memory cells, decreasing the distance between adjacent (neighboring) memory cells, or both. However, decreasing the size of individual memory cells or decreasing the distance between adjacent memory cells may increase inter-cell interference (ICI) between adjacent memory cells.
The present disclosure describes systems and methods for reducing errors caused by inter-cell interference in a memory device. In one aspect, a method includes performing a read operation on a wordline of a memory device, wherein the wordline comprises a plurality of cells that are expected to be in a first state. Based on the read operation, one or more of the plurality of cells that are determined to be in a second state that differs from the first state is identified. Data is encoded using information pertaining to the identified cells to generate a codeword that includes a plurality of bits to be written to the wordline, with at least one of the plurality of bits, which are to be written to at least one of the identified cells, having a value corresponding to the second state. The generated codeword is written to the wordline.
Implementations of the disclosure can include one or more of the following features. Performing the read operation on the wordline of the memory device may include performing a pre-read operation using a pre-read voltage on the wordline of the memory device, wherein the plurality of cells of the wordline are expected to be in a first state, and identifying the one or more of the plurality of cells comprises identifying the one or more of the plurality of cells that are determined to be in a second state by determining that a threshold voltage of the one or more of the plurality of cells is higher than the pre-read voltage. The pre-read voltage may differ from a voltage used to read data previously written to the memory device. The memory device may include a flash memory device, and the method may include receiving the data to be written to the wordline of the flash memory device. The flash memory device may include a single-level cell flash memory device, and the method may include receiving the data to be written to the wordline of the single-level cell flash memory device. The memory device may include a phase change memory device, and the method may include receiving the data to be written to the wordline of the phase change memory device. The memory device may include a resistive memory device, and the method may include receiving the data to be written to the wordline of the resistive memory device. Encoding the data may include generating the codeword using a partitioned linear block code. Encoding the data may include determining whether a first parity vector for generating the at least one of the plurality of bits based on locations of all of the one or more identified cells exists; when the first parity vector exists, determining the first parity vector based on the locations of all of the one or more identified cells; when the first parity vector does not exist, selecting a subset of the one or more identified cells; and determining a second parity vector for generating the at least one of the plurality of bits based on locations of the selected subset of the one or more identified cells. A number of elements in the selected subset may be less than a minimum distance for masking defects of a partitioned linear block code. Determining the first or second parity vector for masking defects may include determining the first or second parity vector for masking defects using
G0Ψd=G1Ψm−(s+)Ψ,
where Ψ indicates the locations of all of the one or more identified cells or the locations of the selected subset, G0Ψ is a first generator matrix, G1Ψ is a second generator matrix, (s+)Ψ represents side information corresponding to the locations, m is the data to be encoded, and d denotes the first or second parity vector for generating the at least one of the plurality of bits.
All or part of the foregoing may be implemented as a computer program product including instructions that are stored on one or more non-transitory machine-readable storage media, and that are executable on one or more processing devices. All or part of the foregoing may be implemented as an apparatus, method, or system that may include one or more processing devices and memory to store executable instructions to implement the stated functions.
The details of one or more implementations are set forth in the accompanying drawings and the description below. While specific implementations are described, other implementations exist that include operations and components different than those illustrated and described below. Other features, objects, and advantages will be apparent from the description, the drawings, and the claims.
Each memory cell may be a floating gate transistor having a threshold voltage that can be configured by controlling the amount of electron charges in the floating gate. Increasing the electron charges in the floating gate will increase the cell's threshold voltage. For a B-bits per cell memory device, each WL stores B-pages of data. To store B-bits per cell, each cell's threshold voltage distribution is divided into 2B states.
Referring again to
The positions of program states are determined by verify levels, and the tightness of each program state depends on the incremental step voltage ΔVpp. By reducing ΔVpp, the threshold voltage distribution can be made tighter, but the write time may increase.
To perform a read operation, the threshold voltages of cells in the same WL are compared with a given read level. After the read operation, a page of binary data is transferred to the page buffer 104. The binary data indicates whether the threshold voltage of each cell in the WL is lower or higher than the read level. Because the read operation of flash memory is a binary decision, multiple read operations are required to obtain a soft decision value, which lowers the read speed. The degradation of read speed may be a challenge for soft decision decoding and signal processing.
The threshold voltage of a flash memory cell can be reduced by an erase operation. In a flash memory device, all memory cells in the same flash memory block, e.g., block 100, may be erased at the same time. The erase operation moves the threshold voltage of the cells into the lowest state S0.
As described above, a page of data (within a WL) can be written, and a block of data can be erased at the same time. In addition, the threshold voltage of cell is moved into the lowest state S0 by an erase operation, whereas a slight increase of threshold voltage is possible by ISPP during a write operation. These unique properties of flash memory cause asymmetry between write and erase operations.
In flash memory, the threshold voltage shift of one cell, e.g., as a result of being programmed, affects the threshold voltage of its adjacent cell because of inter-cell interference (ICI). The ICI may be attributed to parasitic capacitances coupling effect between adjacent cells.
The threshold voltage shift ΔICIV(i,j) of the (i,j) cell due to the ICI may be given by
ΔICIV(i,j)=γx(ΔV(i,j−1)+ΔV(i,j+1))+γy(ΔV(i−1,j)+ΔV(i+1,j))+γxy(ΔV(i−1,j−1)+ΔV(i−1,j+1)+ΔV(i+1,j−1)+ΔV(i+1,j+1))
where ΔV(i±1,j±1) in the right hand side of the above equation represent the threshold voltage shifts of adjacent cells after the (i,j) cell has been programmed. The ICI that happens before writing to the (i,j) cell can be compensated by several write schemes so long as the (i,j) cell is being written into a programmed state. Note that the ICI to the (i,j) cell that is to remain in state S0 cannot be compensated by these write schemes since a cell that is to remain in S0 is never programmed.
In a memory device where state S0 denotes the data “0” and state S1 denotes the data “1”, only a “1” can be written into a cell. If a “0” is attempted to be written to a cell, an error will result. Thus, the threshold voltage of flash memory cells cannot be reduced using a write operation. To decrease the threshold voltage of a cell in the i-th WL, an erase operation may be performed on the whole flash memory block that includes the i-th WL, which may not be desirable. Thus, cells in the i-th WL with threshold voltages that are higher than the read level η cannot be programmed into state S0 and are thus always in state S1. Such cells may be regarded as stuck-at 1 defects.
A binary memory cell may be called a defective cell if its cell value is stuck-at a particular value regardless of the channel input.
Suppose that Sn represents the ICI of n memory cells. Because it may be a challenge to determine Sn due to properties of the memory device, the channel 806 with the ICI may be modelled using a channel with defective cells. The encoder 802 may use the side information of defects (S+)n, rather than the side information of ICI Sn, to improve the decoding failure probability.
The side information of defects (S+)n for the i-th WL may be obtained by a pre-read operation performed by the pre-read unit 808 (
The side information of defects (S+)n may contain partial information about the ICI of n memory cells, referred to as Sn. (S+)n is binary because it is obtained from one pre-read operation. In addition, (S+)n does not reveal the ICI from the (i+1)-th WL and the x-directional ICI, which are subsequent ICI since the pre-read operation is performed before the write operation of the i-th WL and the (i+1)-th WL. However, this partial knowledge of (S+)n may improve the probability of decoding failure.
Referring to
Referring again to
By using one pre-read operation before writing, the flash memory channel 806 with the ICI may be represented by the following channel model of binary memory with defective cells:
Y=X∘S++Z
where X, Y, and Z are the binary channel input, output, and additive noise, respectively. The binary channel input X and the ternary defect information S1 are shown in
where x∈X and s+∈S+.
Referring to
y=x∘s++z
where x, y, z∈{0,1}n are the binary channel input vector (e.g., the data vector to be stored in the memory), output vector, and random error vector, respectively. Also, the defect vector s+∈(S+)n represents the side information, or channel state information, of defect locations and stuck-at values. Both ∘ and + are the vector component-wise operators. + denotes the addition over Galois field (GF) which may be replaced by XOR.
The number of defects in n cells is equal to the number of non-λ components in s+. The number of errors due to defects is given by
∥x∘s+−x∥
where ∥·∥ is the Hamming weight (the number of non-zero elements) of the vector. The [n,k,l] PLBC is a pair of linear subspaces 1⊂{0,1}n and 0⊂{0,1}n of dimension k and l such that 1∩0⊂{0}. Then the direct sum is given by
=1+0={c=c1+c0|c1∈1,c0∈0}.
The encoder 802 encodes a message M represented by vector m∈{0,1}k to a corresponding codeword X represented by vector c∈ using
where c1=G1m∈1 and c0=G0d∈0. The generator matrix G1 is an n×k matrix, and the generator matrix G0 is an n×l matrix. Thus, can be regarded as an [n,k+l] linear block code (LBC) with the generator matrix {tilde over (G)}=[G1G0].
The parity vector d∈{0,1}t for masking defects determines the binary vector c0 masking stuck-at defects. The encoder 802 may select d by considering both c1 and s+. The optimal d may be selected to minimize the number of errors due to defects, given by ∥c∘s+−c∥ where ∥z∥ denotes the number of nonzero elements in z.
A pair of minimum distances (d1,d0) of an [n,k,l] PLBC are given by
where d1 is greater than or equal to the minimum distance of the [n,k+l] LBC with parity check matrix H, while d0 is the minimum distance of the [n,k+r] LBC with parity check matrix G0. The minimum distance d1 may be used to correct random errors, and the minimum distance d0 may be used to mask defects. An [n,k,l] PLBC with minimum distances (d1,d0) is a u defect, t error correcting code if u<d0 and 2t<d1 or if u≥d0 and 2(u+t+1−d0)<d1. If u<d0, all defects will be successfully masked and ∥c∘s+−c∥=0. Otherwise, it may be that ∥c∘s+−c∥≠0 which may result in a masking failure. The unmasked defects may be regarded as random errors in the decoder 804.
The encoding of PLBC includes an implicit optimization problem where d may be found by solving
G0Ψ
where Ψu={i1, . . . , iu} indicates the set of locations of u defects obtained from the side information (s+)Ψ
where g0,i and g1,i are the i-th row of G0 and G1, respectively. If the number of defects u<d0, the optimal d may be found by Gaussian elimination or another suitable method for linear equations. However, the PLBC encoding algorithm for more than d0−1 defects is an optimization problem with exponential computational complexity.
Since the computational complexity for finding the optimal d may be exponential, the encoder 802 may use the following two-step encoding scheme for determining d:
Step 1:
Step 2:
End
If d is found in step 1, the number of unmasked defects will be zero and ∥c∘s+−c∥=0. If d is found in step 2, 0<∥c∘s+−c∥<u−(d0−1). The d0−1 locations may be selected in descending order from higher degree element because unmasked defects of higher degree than G0 result in error multiplication during the decoding operation.
To decode the codeword, the decoder 804 retrieves Y represented by the vector y=x∘s++z where x=c and where z denotes the random errors. The decoder 804 computes the syndrome w−{tilde over (H)}Ty (where superscript T denotes transpose) and selects {circumflex over (z)}∈{0,1}n which minimizes ∥z∥ subject to {tilde over (H)}Tz=w. Then the decoder 804 computes an estimated message {circumflex over (M)} represented by the vector {circumflex over (m)}={tilde over (G)}1Tĉ where ĉ=y+{circumflex over (z)}. The parity check matrix {tilde over (H)} is an n×r matrix such that {tilde over (H)}T{tilde over (G)}=0r,k+l (the r×(k+l) zero matrix) and k+l+r=n. The message inverse matrix {tilde over (G)}1 is defined as an n×k matrix such that {tilde over (G)}1TG1=Ik (the k-dimensional identity matrix) and {tilde over (G)}1TG1=0k,l.
Interference can happen in nonvolatile memory devices as well as other high-density data storage systems. For example, phase change memories suffer from thermal interference between adjacent cells. Also, magnetic recording systems suffer from inter-symbol interference, which is similar to ICI. Thus, the techniques described in this specification can be applied to any data storage system suffering from interference, such as flash memory, phase change memory, and resistive memory.
Systems can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations thereof. An apparatus can be implemented in a computer program product tangibly embodied or stored in a machine-readable storage device for execution by a programmable processor; and method actions can be performed by a programmable processor executing a program of instructions to perform functions by operating on input data and generating output. The implementations described herein, and other implementations, can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language.
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random-access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. Computer readable media for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
Other implementations are within the scope and spirit of the description and the claims. Additionally, due to the nature of software, functions described above can be implemented using software, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations. The use of the term “a” herein and throughout the application is not used in a limiting manner and therefore is not meant to exclude a multiple meaning or a “one or more” meaning for the term “a.” Additionally, to the extent priority is claimed to a provisional patent application, it should be understood that the provisional patent application is not limiting but includes examples of how the techniques described herein may be implemented.
This application is a § 371 National Stage Application of and claims priority to PCT/US2015/053269, filed Sep. 30, 2015, which, in turn, claims the benefit of priority under 35 U.S.C. § 119(e) to provisional U.S. Patent Application No. 62/071,698, filed Sep. 30, 2014, the entire contents of each of which are hereby incorporated by reference.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2015/053269 | 9/30/2015 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2016/054241 | 4/7/2016 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
20110307670 | Franceshini et al. | Dec 2011 | A1 |
20120144272 | Franceshini et al. | Jun 2012 | A1 |
20130088923 | Kang | Apr 2013 | A1 |
20130238959 | Birk et al. | Sep 2013 | A1 |
20130279249 | Yun et al. | Oct 2013 | A1 |
20140119113 | Xia | May 2014 | A1 |
20150117097 | Cai | Apr 2015 | A1 |
Number | Date | Country |
---|---|---|
WO016054241 | Apr 2016 | WO |
Entry |
---|
Kim et al. “Coding for Memory with Stuck-at Defects”; Electrical and Computer Engineering, Data Storage Systems Center (DSSC), Carnegie Mellon University; Publication [online]. Apr. 17, 2013 [retrieved Nov. 23, 2015]. Retrieved from the Internet: <URL: http://arxiv.org/ftp/arxiv/papers/1304/1304.4821.pdf>; pp. 1-6. |
International Search Report and Written Opinion for Int'l. Appln. No. PCT/US15/53269 dated Dec. 28, 2015 (12 pgs.). |
Number | Date | Country | |
---|---|---|---|
20170345503 A1 | Nov 2017 | US |
Number | Date | Country | |
---|---|---|---|
62071698 | Sep 2014 | US |