The disclosure relates in general to a control method for a memory device and a memory controller.
There are several techniques for prolonging the effective lifetime of a storage media. For instance, an error-correcting code (ECC) can be used for each page or sector in order to correct errors. ECC encodes data in a way that a decoder can identify and correct errors in the data. For example, data are encoded by adding a number of redundant bits to them. When the data is reconstructed, the decoder examines the encoded message to correct any errors.
In order to simplify the design of ECC and to improve the error-correcting performance in most storage applications, the states of memory cells are usually assumed to be independent and identically distributed (i.i.d.). However, if the cell states vary with usage time, the error-correcting performance will degrade. In addition, the threshold voltage (Vt) distributions of storage media such as NAND flash memory are different for every single cell due to disturb, random telegraph noise, and charge leakage, and thus the i.i.d. property is not appropriate in real case, which leads to performance loss.
One of the purposes of the present disclosure is to provide a memory controller and a control method thereof, utilizing proactive channel adjustment to arrange data to achieve an uneven and specific wear level distribution for the cells, thereby improving the error-correcting performance.
According to one embodiment, a control method for a memory device is provided. The control method includes the following steps. Convert multiple input bits on multiple bit-channels into a code word through a polar code transformation. Select a boundary bit-channel among the bit-channels according to a first ranking list for the bit-channels. Identify a target memory cell among the memory cells according to the boundary bit-channel and a generator matrix of the polar code transformation. Decrease a raw bit error rate of the target memory cell.
According to another embodiment, a memory controller is provided. The memory controller includes a polar encoder, a ranking unit, and a proactive channel adjustment unit. The polar encoder is configured to convert multiple input bits on multiple bit-channels into a code word through a polar code transformation, wherein the code word is written to multiple memory cells in the memory device. The ranking unit is configured to provide a first ranking list for the bit-channels. The proactive channel adjustment unit is configured to select a boundary bit-channel among the bit-channels according to the first ranking list, identify a target memory cell among the memory cells according to the boundary bit-channel and a generator matrix of the polar code transformation, and decrease a raw bit error rate of the target memory cell.
In the following detailed description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, that one or more embodiments may be practiced without these specific details. In other instances, well-known structures and devices are schematically shown in order to simplify the drawing.
A number of embodiments are disclosed below for elaborating the disclosure. However, the embodiments of the disclosure are for detailed descriptions only, not for limiting the scope of protection of the disclosure. Furthermore, secondary or less relevant elements are omitted in the accompanying diagrams of the embodiments for highlighting the technical features of the disclosure.
The memory device 102 includes multiple memory cells for storing data. For example, a cell has a binary bit X as input and an output Y. In other words, we program a binary bit X to the cell, and we would like to read the binary bit X out when users need to know the value. In addition, for advanced error-correcting, the output value is a (log) likelihood ratio, which is a ratio of probability, instead of a binary bit. The “cell” can be deemed as a “channel” derived from simulated or measured error patterns between the input bit X and the output bit Y.
The memory controller 104 includes a polar encoder 106, a polar decoder 108, a ranking unit 110, and a proactive channel adjustment (PCA) unit 112. The polar encoder 106 encodes data with ECC information before written in the memory device 102. The polar decoder 108 decodes the ECC information of the data read from the memory device 102. The ranking unit 110 may be a hardware circuit such as a storage device. The PCA unit 112 may be a hardware circuit such as a processor or a microcontroller
In one embodiment, the polar encoder 106 is configured to convert multiple input bits on multiple bit-channels into a code word through a polar code transformation. The code word is written to multiple memory cells in the memory device 102. The memory cells in the memory device 102 may be referred as channels, and the input terminals of the polar encoder 106 may be referred as bit-channels.
If a polar code has a sufficiently long code length N, the bit-channels, i.e., virtual channel realizations which include encoding, real channel, and decoding parts, seen by individual input bits through the polar code transformation may be polarized to either highly reliable or highly unreliable, which is known as channel polarization. This suggests the construction of polar codes as follows: put the information bits over the set of good bit-channels, i.e. almost noise-less channels, while put the frozen bits over the set of bad bit-channels, i.e. almost pure-noise channels.
Due to the property of channel polarization, the correction capability of polar code mainly depends on the ranking determined based on the states (for example, raw bit error rate) of the memory cells. Here, the order derived according to the reliability of bit-channels is referred to as “ranking”, which is also known as “code construction”.
The ranking unit 110 may provide a first ranking list R1 for the bit-channels to the polar encoder 106 and the polar decoder 108 to identify the positions of the information bits and the frozen bits in a polar code. As shown in
Based on the property of polar code transformation, the ranking of the bit-channels might change with different states of the cells. For example, different usage rate or process variation between memory cells may result in different raw bit error rate in each memory cell, which leads to different rankings. This “channel-specific” property makes the ranking list change with time, and thus the positions of “information bits” and “frozen bits” in the polar code transformation change with time as well. Encoding with a ranking list that is not corresponding to the current cell states may degrade error-correcting performance.
To avoid using a degraded bit-channel to carry information bit and thus reducing the error-correcting performance, one solution is to maintain several rankings (also called “code constructions”) in advance. For example, the ranking unit 110 may pre-store multiple ranking lists, and provide a specific ranking list for a certain number of P/E cycles. However, the hardware overhead for storing and switching multiple different rankings is relatively high.
According to the present disclosure, the PCA unit 112 is provided to address the abovementioned issues. The PCA unit 112 is configured to select a boundary bit-channel among the bit-channels according to the first ranking list R1, identify a target memory cell among the memory cells according to the boundary bit-channel and a generator matrix of the polar code transformation, and decrease a raw bit error rate of the target memory cell. For example, the PCA unit 112 may perform an uneven wear leveling scheme on the target memory cell to make a ranking of the bit-channels match only one code construction of polar code.
As such, the impact of cell wearing can be alleviated, such that the ranking of the bit-channels can be kept the same. In other words, there is no need for the ranking unit 110 to store multiple ranking lists. A single fixed ranking list R1 is sufficient for the error correction capability, thus effectively reducing the hardware overhead.
A set of input bits U (U1-U8) pass through the polar transformation from the left to the right to form the code word X (X1-X8). The code word X is then written to a set of cells W (W1-W8). The output of the cells W (W1-W8) is represented as Y (Y1-Y8). Note that U and X are binary bits and Y is a binary/non-binary value when hard/soft information is considered. The generator matrix G is described as an N×N matrix (N=8 in this example), which transforms the input data U into the code word X=GU.
The i-th row of the generator matrix G indicates that which cell(s) the i-th input bit Ui will be stored in. For example, according to the 3rd row of the generator matrix G, the input bit U3 will be stored in the cells W1 and W3. The bit-channel seen by input bit U3 is defined by the transformation between the input bit U3 and the relating outputs Y1 and Y3 of the cells W1 and W3 (bit channel of U3: U3→(Y1, Y3)). Likewise, the bit-channel seen by input bit U4 is defined by the transformation between the input bit U4 and the relating outputs Y1, Y3, Y5 and Y7 (bit channel of U4: U4→(Y1, Y3, Y5, Y7)).
Typically, the cells W1-W8 are assumed to be i.i.d.. Given a raw bit error rate (for example, 1%) for the memory cells W1-W8, the ranking of the bit-channels may be derived as [U8, U7, U6, U5, U4, U3, U2, U1] (the first ranking list R1), which is a sequence for U in reliable order. That is, the reliability of the bit-channels of the input bits U5, U6, U7 and U8 are better than that of the input bits U1, U2, U3 and U4. In such situation, consider the information length (data length K) is 4, the input bits U5, U6, U7, U8 are preferably selected as information bits and the input bits U1, U2, U3, U4 are preferably selected as frozen bits. The frozen bits may be set as 0 for example. The values of the frozen bits are known to the decoder beforehand.
Given a different raw bit error rate (for example, 5%) for the memory cells W1-W8, the ranking of the bit-channels may change to [U8, U7, U6, U4, U5, U3, U2, U1] (the second ranking list R2). Following the aforementioned example (data length K=4), U5 now becomes a position for a frozen bit. The bit-channel U5 may be referred as a “boundary bit-channel” because its position is near the boundary between a frozen bit and an information bit. Also, the position of the bit-channel U5 changes under different raw bit error rate conditions.
Then in step S204, the PCA unit 112 identifies one or more target memory cells among the memory cells in the memory device 102 according to the boundary bit-channel and a generator matrix G of the polar code transformation. According to the generator matrix G shown in
There may be several different implementations for the step S206. For example, there may be several noises source for the cells in the NAND flash memory. Decreasing such noise effectively decreases the raw bit error rate for the target memory cell. In one embodiment, the PCA unit 112 may reduce a number of program/erase (P/E) cycles applied to the target memory cell. In other embodiments, the PCA unit 112 may reduce cell-to-cell interference of the target memory cell, reduce program disturb/read disturb, or control data retention of the target memory cell. P/E cycle management will be used as an example in the following description.
One possible implementation for reducing the PIE cycles applied to the target memory cell having a corresponding logical address is: mapping the logical address of target memory cell to another physical memory region other than an original physical region of the target memory cell. As a result, a programming command to the same logical address is mapped to a different physical address, and consequently the P/E cycles applied to the target memory cell can be reduced.
In one embodiment, the step S206 may adopt a basic round-robin approach or an adaptive round-robin approach to reduce the P/E cycles applied to the target memory cell. The description of each approach will be given below.
In this example the number of the target memory cells is two, but the number of the target memory cells may be other different numbers, depending on the number of cells corresponding to the boundary bit-channel. In addition, the number of boundary bit-channel is not limited to one. Also the number of extra memory cells to be grouped in the first round-robin group may also be more than one. The more the number of extra memory cells, the more the P/E cycle reduction can be achieved.
For example, if the boundary bit-channel includes U2 and U3, the target memory cells are cells W1, W3 and W5 according to the generator matrix G shown in
In one embodiment, the method shown in
In one embodiment, some analysis may be performed to find out the boundary bit-channel(s) of the given polar code transformation.
In one embodiment, the boundary bit-channel is an information bit (ranked in the first K positions) in the first ranking list R1, and is a frozen bit (not ranked in the first K positions) in the second ranking list R2. In order to keep using the first ranking list R1 under different cell wearing conditions, the proposed control method decreases the raw bit error rate of the target memory cells corresponding to the boundary bit-channel (step S206 in
The code length is 8 and the data length K is 4 in the previous example. The proposed control method may also be applied to polar code transformation with larger code length. Taking a 32-bit polar code with 23 information bits and 9 frozen bits as an example (N=32, K=23), the first ranking list R1 corresponding to the raw bit error rate 0.001 may be [U31, U30, U29, U23, U27, U15, U28, U26, U25, U22, U21, U14, U19, U13, U11, U7, U24, U20, U18, U12, U17, U10, U9, U6, U5, U3, U16, U8, U4, U2, U1, U0], and the second ranking list R2 corresponding to the raw bit error rate 0.01 may be [U31, U30, U29, U23, U27, U15, U28, U26, U25, U22, U21, U14, U19, U13, U11, U7, U24, U20, U18, U12, U17, U10, U6, U9, U5, U3, U16, U8, U4, U2, U1, U0].
If the first ranking list R1 is the desired fixed ranking list for all possible wearing conditions, the boundary bit-channel U9 may be identified according to the first ranking list R1 and the second ranking list R2 (the bit-channel U9 and the bit-channel U6 change place near the information bit/frozen bit boundary in these two ranking lists). The step S202 selects the boundary bit-channel U9, and the step S204 identifies the target memory cell(s) corresponding to the boundary bit-channel U9. The PCA unit 112 then decreases the raw bit error rate of the target memory cell in the step S206 to 1.0 increase the reliability of the boundary bit-channel U9.
According to the embodiments given above, the proposed control method and the memory controller are able to select a boundary bit-channel and then decrease the raw bit error rate of the memory cell(s) corresponding to the boundary bit-channel, such that a single ranking list is sufficient for different cell wearing conditions. The method for decreasing the raw bit error rate may include reducing the number of P/E cycles. A basic round-robin or an adaptive round-robin approach may be adopted to reduce the number of P/E cycles applied to the target memory cell, such that the reliability of the boundary bit-channel can be enhanced.
It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed embodiments. It is intended that the specification and examples be considered as exemplary only, with a true scope of the disclosure being indicated by the following claims and their equivalents.
This application is a continuation-in-part application of co-pending application Ser. No. 15/376,715, filed on Dec. 13, 2016, the contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 15376715 | Dec 2016 | US |
Child | 15614654 | US |