This U.S. non-provisional patent application claims priority under 35 U.S.C. § 119 of Korean Patent Application No. 10-2016-0105370, filed on Aug. 19, 2016, the entire contents of which are hereby incorporated by reference.
The disclosure relates to storage devices, and more particularly, to a method of operating the same.
In a flash memory, several bits of data are stored per cell to store more bits in the same cell. As the number of bits stored per cell increases, more memory sensing processes are needed to read data and thereby read performance of a NAND flash memory is degraded. To prevent performance degradation, a technology of RIO (random input/output) code has been suggested recently. In a conventional RIO code, a design is performed without considering a noise that occurs in a flash memory channel. Thus, a bit error that occurs in the process of reading a flash memory is amplified while passing through an RIO decoder and thereby the number of error bits greatly increases as compared with the original number of error bits.
Example embodiments of the disclosure provide a method of operating a storage device. The method may include encoding user data using an RIO code, programming the encoded data in multilevel cells, reading a part of the user data from the multilevel cells by a one-time memory sensing operation, and decoding the read date while correcting a channel error using the RIO code. The RIO code comprises a channel code for correcting a channel error.
Example embodiments of the disclosure provide a method of decoding information stored by a storage device including a nonvolatile memory device having k-bit multilevel cells and a memory controller that controls the nonvolatile memory device. The method may include performing fewer than
number of sensing operations (here, └ ┘ is a floor operator) of the multilevel cells, decoding pages corresponding to each of the sensing operations while correcting a channel error using an RIO code, and extracting user data from the decoded pages.
Example embodiments of the disclosure provide a storage device. The storage device may include at least one nonvolatile memory device having k-bit multilevel cells, and a memory controller that controls the at least one nonvolatile memory device. The memory controller comprises an error correction encoder configured to encode user data using a first code to produce first-encoded data, an RIO encoder configured to encode the first-encoded data using a second code, an RIO decoder configured to decode pages read from the k-bit multilevel cells through fewer than
number of sensing operations while recovering a channel error, and an error correction decoder configured to decode each of the decoded pages using the first code to correct an error.
Embodiments of the disclosure will be described below in more detail with reference to the accompanying drawings. The embodiments of the disclosure may, however, be embodied in different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art. Like numbers refer to like elements throughout.
Embodiments of disclosure will be described more fully hereinafter with reference to the accompanying drawings, in which embodiments of the invention are shown. This disclosure may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art. In the drawings, the size and relative sizes of layers and regions may be exaggerated for clarity. Like numbers refer to like elements throughout.
The at least one nonvolatile memory device (NVM) 100 may be embodied to store data. The at least one nonvolatile memory device (NVM) 100 may include a NAND flash memory, a vertical NAND flash memory (VNAND), a NOR flash memory, a resistive random access memory (RRAM), a phase-change random access memory (PRAM), a magneto resistive random access memory (MRAM), a ferroelectric random access memory (FRAM), a spin transfer torque random access memory (STT-RAM), a thyristor random access memory (TRAM), etc.
The nonvolatile memory may be embodied to have a three dimensional (3D) array structure. In an embodiment of the present disclosure, a three dimensional (3D) memory array is provided. The 3D memory array is monolithically formed in one or more physical levels of arrays of memory cells having an active area disposed above a silicon substrate and circuitry associated with the operation of those memory cells, whether such associated circuitry is above or within such substrate. The term “monolithic” means that layers of each level of the array are directly deposited on the layers of each underlying level of the array.
In an embodiment of the present disclosure, the 3D memory array includes vertical NAND strings that are vertically oriented such that at least one memory cell is located over another memory cell. The at least one memory cell may comprise a charge trap layer. Each vertical NAND string may include at least one select transistor located over memory cells, the at least one select transistor having the same structure with the memory cells and being formed monolithically together with the memory cells.
The following patent documents, which are hereby incorporated by reference, describe suitable configurations for three-dimensional memory arrays, in which the three-dimensional memory array is configured as a plurality of levels, with word lines and/or bit lines shared between levels: U.S. Pat. Nos. 7,679,133; 8,553,466; 8,654,587; 8,559,235; and US Pat. Pub. No. 2011/0233648.
The nonvolatile memory (NVM) of the disclosure is applicable to not only a flash memory device of which a charge storage layer is constituted by a conductive floating gate but also a charge trap flash (CTF) memory device of which a charge storage layer is constituted by an insulating layer.
The at least one nonvolatile memory device 100 may include a plurality of memory cells. Each of the nonvolatile memory cells may be a multi-bit cell (MLC) that stores multi-bit data. For example, each of the nonvolatile memory cells may store k-bit data.
The memory controller 200 is connected to the at least one nonvolatile memory device 100 through at least one memory channel and may be embodied to control a program/read operation of the at least one nonvolatile memory device 100.
The memory controller 200 may include an RIO (random input/output) encoder 220 and an RIO decoder 240.
The RIO encoder 220 may be embodied to receive user data and to convert the user data according to an encoding algorithm of an RIO code. Here, the RIO code may encode user data so that user data stored in k (k is an integer greater than 1) bit multilevel cells (MLCs) is extracted by a maximum
number of times of sensing operations (here, └ ┘ is a floor operator) while recovering a bit error inside a memory channel.
The RIO code may include a channel coding for recovering an error of a memory channel and may be embodied using a polar code.
Encoded data may include data bits, RIO code parity, and channel parity. A location of the data bits, the RIO code parity, or the channel parity may be determined by conditional entropy. Alternatively, a location of the data bits, the RIO code parity, or the channel parity may be determined by a Bhattacharyya parameter.
The RIO decoder 240 may be embodied to decode encoded data read by the nonvolatile memory device 100 according to an RIO code algorithm. For example, the RIO decoder 240 may extract a part of user data while recovering a channel error by decoding page data read by one memory sensing operation.
A conventional storage device performs an RIO code and an error correction code (ECC) separately. In a write operation, a parity bit is added to the user data in an ECC encoding operation to correct a bit error of the user data that occurs in the nonvolatile memory device. In a conventional storage device, the number of bit errors that occur in a nonvolatile memory device due to charge loss, read disturbance, etc. may greatly increase when the data passes through the RIO decoder. This is called error propagation. The error propagation means that an error of a specific location is propagated to different locations while performing all sorts of arithmetic operations using data including a bit error. Even if the number of bit errors that occur in the nonvolatile memory device is very small, the number of errors may increase to a level beyond ECC capability while passing through the RIO decoder.
The storage device 10 can reduce or remove error propagation as compared with a conventional storage device by performing an RIO code decoding and a channel code decoding at the same time in the RIO decoder 240. For example, the RIO decoder 240 can greatly reduce or remove error propagation as compared with a conventional RIO decoder by including a function of correction a channel error.
The storage device 10 may be embodied by an RIO code using a polar code. For convenience of description, a method of designing an RIO code using a polar code will be described. However, a channel coding of the disclosure is not limited thereto. First, the method of designing an RIO code may perform an operation of a broadcast channel modeling. After that, a polar encoding method and a polar decoding method may be designed based on the modeled channel.
Referring to
User data may include K number of small data chunks (W1, W2, . . . , WK, or ‘pages’). Here, W1 is a data chunk that can be read through an operation of sensing a valley between the E and the P1 and the WK is a data chunk that can be read through a kth threshold voltage sensing operation.
The K number of data chunks pass through the RIO encoder 220 (refer to
In the case where the YKn passes through the RIO decoder 240 (refer to
The storage device according to example embodiments of the disclosure may further include an error correction code.
The memory controller 200a may further include an ECC encoder 210 and an ECC decoder 250 that perform a memory controller ECC as compared with
The ECC encoder 210 may be configured to receive data, to generate parity corresponding to the data using an ECC code (or, ‘first code’), and to transmit the data including the parity to an RIO encoder 220. The ECC code may be a LDPC (low density parity check), a BCH (Bose-Chaudhuri-Hocquengham) code, a turbo code, a Reed-Solomon code, a convolution code, an RSC (recursive systematic code), a TCM (trellis-coded modulation), a BCM (block coded modulation), or the like.
The ECC decoder 250 may be configured to detect and correct an error of data by receiving data and a parity value from the RIO decoder 240 and decoding the received data and parity value using an ECC code (or, ‘first code’).
In the description that follows, an embodiment of an RIO encoder/decoder using a polar code will be described in more detail. The polar code invented by E. Arikan is a code that uses a channel deflection phenomenon and is a channel code that achieves a margin of an information theory claimed by Shannon. The channel deflection phenomenon indicates a phenomenon where a new vector channel Wvec obtained by multiplying n number of i.i.d. (independent identically distributed) channels W by a matrix Gn (deflection matrix) that can cause a deflection phenomenon is divided into a channel that can perfectly recover a signal and a channel that cannot recover a signal.
Wi:UL→(Ui−1,Yn) i=1,2, . . . n [mathematical formula 2]
The divided n number of channels has an aspect of being converged on a perfectly good channel or a bad channel that cannot recover a signal due to a noise. As the n becomes great, this phenomenon becomes obvious. If indexes of channels deflected toward a good channel are known, a safe communication can be performed by loading information to be transmitted into a corresponding location of a new input signal and loading an already promised bit (e.g., ‘0’) into channels that converge on a bad channel. The maximum amount of messages that can be transmitted through the vector channel Wvec using a deflection phenomenon when n is sufficiently great, that is, the number of channels deflected toward a good channel is nR≈nI(X; Y).
When an input signal of a channel is a binary signal and n is a square number, that is, when n=2m, Arikan proved the deflection phenomenon described above using a deflection matrix Gn according to a mathematical formula below.
Here, ⊗ means a kronecker product operation of a matrix. A design of RIO code scheme of a k+1 level using the polar code is as follows.
A method of extracting data by one time (tR) in a nonvolatile memory device having k+1 number of states was modeled in
A process of encoding a polar code is performed as follows. A bit index having a low error rate expected in a channel is filled with user data as it is. A bit index having a high error rate expected in a channel is filled with a signal known to an encoder and a decoder. A result obtained through the process described above is multiplied by Gn.
Before performing an encoding of RIO code, a characteristic of each bit index in a deflected channel has to be understood and which one is used among user data, RIO data and ECC parity has to be determined. This is known by a Bhattacharyya parameter value. When a binary input signal probability distribution p(x) and a channel transition probability distribution p(y|x) are given, the Bhattacharyya parameter can be calculated by a mathematical formula below.
Using the Bhattachharyya parameter, each bit index can be classified like a mathematical formula below.
HV
LV
HV
LV
HV
LV
Here, an ith bit of a jth page in a set of HV
Indexes that belong to a set LV
A bit index i that belongs to a set HV
Since the Uj,i is completely dependent on(Uj1−1, Yjn), an index i that belongs to LV
A set HV
In the description that follows, a process of generating an RIO code and a process of an RIO encoding will be described. For convenience of description, a transmission method using a polar code will be described with respect to the case where there are two pages. The same method can be applied to the case where there are more three pages. Data to be stored in the first page is determined as follows. Bhattacharyya parameters are obtained by each bit index and the data is classified as three sets like a mathematical formula below.
I(1)=HV
Fr(1)=HV
Fd(1)=HV
The first page determines each channel input signal using an encoding method like a mathematical formula below.
A V1n is calculated by multiplying the determined signal U1n by a reverse deflection matrix Gn−1. After calculating an encoding result V2n of another page, the V1n is mapped to a state of a nonvolatile memory device.
In the bit index classification in the second page, bit indexes that belong to a set Fcr(2), if the bit indexes do not know information VP stored in the first page, have a characteristic which is incapable of being accurately recovered. Since an additional memory sensing operation is needed to know information stored in the first page, this is in violation of the purpose of reading data through one memory sensing operation. Fortunately, when the n is sufficiently great, it can be logically proved that a size of Fcr(2) is 0.
A second page loads user data into indexes that belong to I(2). Here, since i∈I(2) belongs to the HV
An encoding method and a decoding method of the remaining sets Fr(2) and Fd,1(2), Fd,2(2) may be determined depending on a characteristic of sets to which the remaining sets Fr(2) and Fd,1(2), Fd,2(2) belong.
The second page determines each channel input signal using an encoding method according to a mathematical formula below.
A V2n is calculated by multiplying the determined signal U2n by a reverse deflection matrix Gn−1. After obtaining the V1n and the V2n, a Xn is calculated using a reverse mapping of a function x(v1, v2) like a mathematical formula below.
xi∈x−1(v1i)∩x−1(v2i), i=1, 2, . . . , n. [mathematical formula 10]
If x−1 (v1i)∩x−1(v2i) is a null set, a transmitter declares an error.
A process of an RIO decoding is described below.
A decoding process of the first page proceeds like a mathematical formula below.
In the process of the decoding and the encoding, a calculation process with respect to posteriori probability is repeated several times. Using a successive cancellation algorithm or a list successive cancellation algorithm, computational complexity can be reduced.
As an example, the probability of p(u1i|û11:i−1y11:n) can be recursively calculated like mathematical formulas below.
This can be calculated using the same method even in a different posteriori probability such as p(u1i|û11:i−1). Determining each probability recursively shows high complexity of n2. Thus, a graph type algorithm is used.
When 4 bits are transmitted through a channel, assume a transmission in a situation in which second and fourth bits belong to I(1) and first and third bits belong to Fd(1). A y11:4 is a result of an output unit received through a channel.
Nodes above are illustrated in the order of being generated according to an algorithm respectively. 1, 8, 9, and 12 nodes on the left correspond to the case where i is 1, 2, 3 and 4 respectively in p(u1i|û11:i−1y11:n). 3, 4, 6 and 7 nodes on the right can be calculated in a probability distribution of an original channel before a channel deflection is applied.
In the case where a channel that applies a polar code is a binary symmetric channel having crossover probability of p, the p can be calculated to
First, p(u11|y11:4) has to be calculated in a 1 node. At this time, the 1 node generates a 2 node and a 5 node, and the 2, 5 nodes generate 3, 4 nodes and 6, 7 nodes respectively. In this case, after calculating p(u1i=0|y1i) according to an original channel in the 3,4,6,7 nodes, the calculated value is returned to the 1 node through the recursive mathematical formula 12 once more after calculating values of p(u11|y11:2) p(u11|y13:4) needed in the 2, 5 nodes respectively through the recursive mathematical formula 12.
Similarly, p(u1i) may be calculated in the method of constituting a graph. Since a first bit belongs to Fd(1), if the probability of p(u1i=0) is greater ½, the first bit is decoded to û11=0 and except for that, the first bit is decoded to 1.
In a next 8 node, p(u12|û11y11:4) has to be calculated. Since 2, 5 nodes were already calculated, p(u12|û11y11:4) can be calculated by substituting the calculated values of the 2, 5 nodes for the recursive mathematical formula 13. Using the same method, p(u12|û11) can be calculated. Since the second bit belongs to I(1), û12 is decoded based on p(u12|û11y11:4).
In a third bit, p(u13|û11:2y11:4) is calculated. In this case, a 9 node generates 10, 11 nodes and the 10, 11 nodes substitute the values calculated in the 3, 4 nodes and the values calculated in the 6, 7 nodes for the recursive mathematical formula 13 to generate the respective probabilities p(u12=0|(û11⊕û12), y11:2) and p(u12=0|û12, y13:4). After that, the 9 node substitutes the value calculated in the 10, 11 nodes for the recursive mathematical formula 12 to calculate p(u13|û11:2y11:4). Using the same method, p(u13|û11:2) can be calculated. In this case, since the third bit belongs to Fd(1), û13 may be decoded based on p(u13|û11:2).
In a fourth bit, p(u14|û11:3y11:4) is calculated. In this case, a 12 node substitutes the value calculated in the 10, 11 nodes for the recursive mathematical formula 13 to calculate p(u14|û11:3y11:4). Using the same method, p(u14|û11:3) can be calculated. Since the last bit belongs to I(1), û14 is decoded based on p(u14|û11:3y11:4).
Through the method described above, the complexity of the RIO encoding and the RIO decoding of the disclosure may be reduced to o(nlogn). The storage device and the method of operating the same according to example embodiments of the disclosure may perform an RIO encoding/decoding operation that extracts a part of user data while correcting an error that occurred by only a one-time memory sensing operation in a multi-level cell memory.
A storage device including a memory having MLCs according to example embodiments of the disclosure may include an RIO encoder that receives data to be programmed in a memory area and can extract the received data by only a one-time memory sensing operation and recover a bit error at the same time. A storage device according to example embodiments of the disclosure may include an RIO decoder that can recover a bit error and extract a part of user data at the same time using a signal obtained through a one-time memory sensing operation.
The disclosure can be applied to a data server.
The cache server 1200 may include key value storage that maintains and deletes different pairs of key and value in response to an invalidation notice from the data base management system 1100.
At least one of the data base management system (RDBMS) 1100, the cache server 1200, and the application server 1300 may be embodied through the storage device and the method of operating the same described in
The storage device and the method of operating the same can read a part of user data while recovering a channel error by decoding data read by a one-time sensing operation using an RIO code having a channel coding. Accordingly, read performance is improved but at the same time a channel error can be greatly reduced.
As is traditional in the field, embodiments may be described and illustrated in terms of blocks which carry out a described function or functions. These blocks, which may be referred to herein as units or modules or the like, are physically implemented by analog and/or digital circuits such as logic gates, integrated circuits, microprocessors, microcontrollers, memory circuits, passive electronic components, active electronic components, optical components, hardwired circuits and the like, and may optionally be driven by firmware and/or software. The circuits may, for example, be embodied in one or more semiconductor chips, or on substrate supports such as printed circuit boards and the like. The circuits constituting a block may be implemented by dedicated hardware, or by a processor (e.g., one or more programmed microprocessors and associated circuitry), or by a combination of dedicated hardware to perform some functions of the block and a processor to perform other functions of the block. Each block of the embodiments may be physically separated into two or more interacting and discrete blocks without departing from the scope of the disclosure. Likewise, the blocks of the embodiments may be physically combined into more complex blocks without departing from the scope of the disclosure.
The contents described above are specific examples for implementing the disclosure. The disclosure may include not only the embodiments described above but also embodiments in which a design is simply or easily capable of being changed. The disclosure may also include technologies easily changed to be implemented using the aforementioned embodiments.
Number | Date | Country | Kind |
---|---|---|---|
10-2016-0105370 | Aug 2016 | KR | national |
Number | Name | Date | Kind |
---|---|---|---|
7679133 | Son et al. | Mar 2010 | B2 |
7724587 | Song et al. | May 2010 | B2 |
8385117 | Sakurada et al. | Feb 2013 | B2 |
8553466 | Han et al. | Oct 2013 | B2 |
8559235 | Yoon et al. | Oct 2013 | B2 |
8654587 | Yoon et al. | Feb 2014 | B2 |
9070427 | Sharon et al. | Jun 2015 | B2 |
9256522 | Tang et al. | Feb 2016 | B1 |
20110233648 | Seol et al. | Sep 2011 | A1 |
20120210082 | Sharon | Aug 2012 | A1 |
20130318420 | Seol et al. | Nov 2013 | A1 |
20140019820 | Vardy et al. | Jan 2014 | A1 |
20140169102 | Sun et al. | Jun 2014 | A1 |
20150006791 | Yoo et al. | Jan 2015 | A1 |
20150091742 | Ionita | Apr 2015 | A1 |
20150236715 | Alhussien | Aug 2015 | A1 |
20150381208 | Li et al. | Dec 2015 | A1 |
20160299813 | Seol | Oct 2016 | A1 |
20160335156 | En Gad | Nov 2016 | A1 |
20180248567 | Qu | Aug 2018 | A1 |
Entry |
---|
Erdal Arikan et al., “Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary—Input Memoryless Channels”, IEEE Transactions on Information Theory, vol. 55, No. 7, Jul. 2009, pp. 3051-3073. |
Eren Şaşo{hacek over (g)}lu (2012), “Polarization and polar codes”, Foundations and Trends in Communications and Information Theory: vol. 8: No. 4, pp. 259-381. |
Junya Honda et al., “Polar coding without alphabet extension for asymmetric models”, IEEE Trans. Inf. Theory, vol. 59, No. 12, Dec. 2013, pp. 7829-7838. |
Naveen Goela et al.,“Polar Codes for Broadcast Channels”, IEEE Transactions on Information Theory, vol. 61, No. 2, Feb. 2015, pp. 758-782. |
Eran Sharon et al., “Coding Scheme for Optimizing Random I/O Performance”, Feb. 29, 2012, http://arxiv.org/abs/1202.6481, pp. 1-5. |
R. L. Rivest et al., “How to reuse a ‘write-once’ memory”, Information and Control, vol. 55, 1982, pp. 1-19. |
K. Marton, “A coding theorem for the discrete memoryless broadcast channel”, IEEE Trans. Inf. Theory, vol. 25, No. 3, May 1979, pp. 306-311. |
Lanying Zhao et al. “Polar Code Design for Noisy Blackwell Channels”, IEEE Communications Letters Year: 2016, vol. 20, Issue: 8, pp. 1495-1498. |
Number | Date | Country | |
---|---|---|---|
20180052733 A1 | Feb 2018 | US |