WO2017098581A1 - Storage device and data error correction method - Google Patents

Storage device and data error correction method Download PDF

Info

Publication number
WO2017098581A1
WO2017098581A1 PCT/JP2015/084406 JP2015084406W WO2017098581A1 WO 2017098581 A1 WO2017098581 A1 WO 2017098581A1 JP 2015084406 W JP2015084406 W JP 2015084406W WO 2017098581 A1 WO2017098581 A1 WO 2017098581A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
modulated
rank
error correction
electrons
Prior art date
Application number
PCT/JP2015/084406
Other languages
French (fr)
Japanese (ja)
Inventor
顕義 橋本
森野 東海
水島 永雅
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2015/084406 priority Critical patent/WO2017098581A1/en
Publication of WO2017098581A1 publication Critical patent/WO2017098581A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

Definitions

  • the present invention relates to a technique for error correction of data stored in a storage device.
  • flash memory NAND-type flash memory
  • HDD Hard Disk Drive
  • a silicon oxide film is an insulator, and serves as a kind of quantum mechanical potential wall in order to prevent the transmission of electrons. The “height” of this potential wall is said to be about 1 eV.
  • a voltage of about several volts is applied to the cell. Then, the electrons can obtain energy of about several eV and overcome the potential wall. Electrons that cross the potential barrier enter the cell.
  • the flash memory operates as a nonvolatile storage medium that can retain information even when the power is turned off.
  • WAM write asymmetric memory
  • the electrons constituting the crystal of the silicon oxide film can similarly gain energy and jump out of the crystal and enter the cell. it can.
  • the part where the electrons constituting the crystal of the silicon oxide film jump out in this way is called a lattice defect or a hole.
  • the hole behaves like a positively charged electron, so it attracts the electron.
  • electrons in the cell move from hole to hole in the silicon oxide film and jump out of the cell. If the amount of leakage of electrons increases, information cannot be recorded. This is the reason why the flash memory has a long life.
  • erasing applies a higher voltage to the cell than writing, the deterioration of the silicon oxide film further proceeds. This is one of the reasons why writing and erasing are asymmetric.
  • multi-value A technology called “multi-value” which further increases the recording density of flash memory.
  • information is recorded at two levels, “0” where electrons are accumulated and “1” where electrons are not accumulated.
  • multi-value processing the amount of accumulated electrons is divided into four levels, and 2-bit information is recorded in one cell.
  • MLC multi-level cell
  • SLC single level cell
  • TLC flash memory This multi-level processing has further progressed, and a triple level cell (hereinafter referred to as TLC) flash memory has emerged that divides the amount of accumulated electrons into 8 levels and stores 3-bit information in one cell. Compared to the two levels of the SLC flash memory, the difference in the amount of electrons between the levels of the four-level MLC flash memory and the eight-level TLC flash memory is small. Therefore, in the case of multi-value, only a small number of electrons leak from the cell, and the information is changed to another information. Therefore, the MLC and TLC flash memory has a higher data error probability than the SLC flash memory.
  • Patent Document 1 discloses a rank modulation technique.
  • the value after rank modulation is a digital quantity
  • soft decoding that corrects the analog quantity cannot be applied.
  • the digital amount has a shorter code length than the analog amount, the error correction capability of the value after rank modulation is lower than the error correction capability of the analog amount.
  • an object of the present invention is to improve the error correction capability of data in a storage device including rank modulation.
  • a storage device includes a nonvolatile memory, an error checking and correcting (ECC) encoding circuit, a memory control circuit, an ECC decoding circuit, and a rank demodulation circuit.
  • the rank modulation circuit rank-modulates input data to generate modulation data.
  • the ECC encoding circuit generates redundant data based on the error correction code from the modulated data, and rank-modulates the redundant data to generate modulated redundant data.
  • the memory control circuit writes and reads a set of modulated data and modulated redundant data with respect to the nonvolatile memory.
  • the ECC decoding circuit rank-demodulates the modulated redundant data from the set of modulated data and modulated redundant data read from the nonvolatile memory to generate redundant data, and uses the redundant data to correct the error of the modulated data I do.
  • the rank demodulating circuit rank-demodulates the modulated data subjected to error correction.
  • the error correction capability of data in a storage device including rank modulation can be improved.
  • storage device which concerns on an Example is shown. It is a figure which shows the state of a cell. It is a figure for demonstrating matching with the state of a cell, and a numerical value. It is a flowchart which shows the example of a state transition process. An example of a finite state transition diagram is shown. It is a figure for demonstrating quantization. It is a figure for demonstrating the correction capability of a LDPC code.
  • storage device is shown. It is a figure which shows the state of a cell. 6 is a flowchart illustrating an example of a data writing process according to the first embodiment. 3 is a flowchart illustrating an example of a data read process according to the first embodiment. 12 is a flowchart illustrating an example of a data writing process according to the second embodiment. 12 is a flowchart illustrating an example of a data read process according to the second embodiment.
  • the flash memory is assumed to be multi-valued (4, 8, 16 levels,).
  • FIG. 2 shows the states of cell 1 (2002), cell 2 (2003), cell 3 (2004), and cell 4 (2005).
  • One set (2001) includes cell 1 (2002), cell 2 (2003), cell 3 (2004), and cell 4 (2005).
  • One cylindrical shape in FIG. 2 indicates that one level of electrons has accumulated in the cell. Accordingly, in FIG. 2, electrons for three levels are accumulated in the cell 1, electrons for two levels are accumulated in the cell 2, electrons for one level are accumulated in the cell 3, and electrons in the cell 4 are accumulated. Indicates that does not accumulate. The numerical value “1” is associated with this state set (2001).
  • a state set (2006) indicates a state after the rewriting. If another numerical value can be assigned to the state set (2006), the data can be rewritten without performing erasure that causes large damage to the flash memory. Therefore, the lifetime of the flash memory can be extended.
  • FIG. 3 is a diagram for explaining the correspondence between cell states and numerical values.
  • the number of the cell with the most charge is written in the leftmost column 3001.
  • a string of numbers “1234” is created.
  • cell numbers are written in descending order for the amount of electrons.
  • electrons for two levels are injected into the cell 2 (2003), the order is changed.
  • the data can be rewritten by simply injecting electrons from an arbitrary numerical value to another numerical value without erasing.
  • rank modulation is expected to reduce the number of erasures and to rewrite data only by applying a write pulse, thereby extending the life of the flash memory. Then, by injecting electrons into the cell, the order of the cells is changed, which is called permutation in algebraic terms. Hereinafter, the replacement will be described.
  • the expression of the group G is a mapping D from the group G to a reversible N ⁇ N matrix set GL (N) that satisfies the following properties.
  • D (g 1 g 2 ) D (g 1 ) D (g 2 ) holds.
  • the expression can be said to be a homomorphism from the group G to the matrix set GL (N).
  • the matrix D (g) is referred to as an expression matrix of “g”.
  • D (g ⁇ 1 ) D ⁇ 1 (g).
  • GL (N) must be a reversible set of matrices.
  • N-dimensional representation when the size of the matrix is N, it is called N-dimensional representation.
  • the first condition is that if electrons are injected only into a specific cell, the upper limit of the amount of electrons that can be injected immediately is reached and erasure is required, so it is desirable to avoid it.
  • the second condition is that it is desirable to maximize the amount of information stored in a set of cells. That is, an algorithm that cannot make a transition to a specific state cannot assign a numerical value to that state, and the amount of information that can be stored decreases.
  • FIG. 4 is a flowchart showing an example of state transition processing that satisfies the first and second conditions.
  • Step 4001 The controller of the flash memory starts processing.
  • Step 4002 The controller determines whether or not the cell 1 is the head (the largest amount of electrons). If cell 1 is at the top (YES), go to step 4003; otherwise (NO) go to step 4004.
  • Step 4003 The controller determines whether or not the amount of electrons in the cell 2 is minimum. If the amount of electrons in cell 2 is the minimum (YES), the controller proceeds to step 4004, otherwise proceeds to step 4005.
  • Step 4004 The controller injects electrons into the cell with the least amount of electrons to maximize the amount of electrons. Then, this process ends.
  • Step 4005 The controller injects electrons into the cell with the second largest amount of electrons to maximize the amount of electrons. Then, this process ends.
  • FIG. 5 shows a finite state transition diagram of 4 cells obtained as a result of injecting electrons according to the process of FIG.
  • FIG. 5 shows that it is possible to start from the state “1234” and return to the state “1234” again through all the states once.
  • Its mathematical counterpart is the primitive n-th root of 1 (primitive n-th root).
  • cyclic permutation replacement to cycle as this has become subgroup of permutation group S n. Since ⁇ is a scalar and considered as a 1 ⁇ 1 matrix, ⁇ is a one-dimensional representation of a cyclic permutation group.
  • the flash memory has a problem that an error occurs in the data stored in the flash memory. Therefore, an error correction coding technique for correcting an error is used.
  • the encoding circuit Encoder
  • the decoding circuit Decoder
  • the decoding circuit reads the data and the redundant data, estimates the correct data from the redundant data and the above calculation rule, and corrects the error.
  • Non-Patent Documents 2 and 3 for details.
  • the other is a code that corrects an error according to probability, and there is a low density parity check code (Low-Density Parity Check Code, hereinafter referred to as LDPC code). See Non-Patent Document 2 for the low-density parity check code.
  • the data can be obtained as a discrete amount of electrons.
  • the amount of electrons in the flash memory cell is not a discrete amount but a continuous amount.
  • the input / output circuit in the flash memory quantizes the amount of electrons in the flash memory cell and outputs it as a discrete amount.
  • FIG. 6 is a diagram for explaining quantization.
  • FIG. 6 shows the amount of electrons (6001, 6002, 6003, 6004) of the cell.
  • the input / output circuit in the flash memory has threshold values (6005, 6006, 6007, 6008). If the amount of electrons is less than the threshold value (6005), the amount of electrons is zero, the amount of electrons is equal to or greater than the threshold value (6005), and the threshold value (6006). ) Is determined to be 1 level of electron content. The same applies to the threshold values (6007) and (6008).
  • a continuous electron quantity (6001, 6002, 6003, 6004) is converted into a discrete digital quantity (6009, 6010, 6011, 6012).
  • the LDPC code correction capability is higher when the input is an analog amount than when the input is a digital amount. This will be briefly described with reference to FIG.
  • FIG. 7 is a diagram for explaining the correction capability of the LDPC code.
  • the amount of electrons (7001) of the cell 1 is slightly below the threshold (6008), it is quantized to level 3. Since the amount of electrons (7002) in the cell 2 is significantly higher than the threshold (6008), it is quantized to level 4.
  • the electron amount (7001) of the cell 1 is slightly smaller than the threshold value (6008), so it is determined that there is a high possibility that it is actually level 4, and is corrected to level 4. Then, the amount of electrons (7002) in the cell 2 is much higher than the threshold value, so there is little possibility of an error, so it is left as it is.
  • the correction capability of the LDPC code is higher when the input is an analog amount than when the input is a digital amount.
  • Non-Patent Document 4 describes an example of performing error correction of data in a flash memory by narrowing the quantization threshold (6005, 6006, 6007, 6008) to be close to analog input.
  • the LDPC code is applied to error correction of data in the flash memory, soft decoding is necessary.
  • Non-Patent Document 1 describes an example in which an LDPC code is applied to a system in which data is written in a flash memory by rank modulation.
  • FIG. 8 shows a configuration example of a conventional storage device 1011.
  • the memory controller (8002) includes an ECC encoding circuit (8003), a rank modulation circuit (8004), a rank demodulation circuit (8005), and an ECC decoding circuit (8006).
  • the ECC encoding circuit (8003) generates redundant data from the input data and transfers the input data and the redundant data together as a code word to the rank modulation circuit (8004).
  • the rank modulation circuit (8004) converts the above code word into an electron quantity level, and the nonvolatile memory control circuit (8005) changes the electron quantity of the cells of the nonvolatile memory (8001).
  • the nonvolatile memory control circuit (8005) reads the amount of electrons in the nonvolatile memory (flash memory) (8001) and performs rank demodulation.
  • the circuit (8006) converts the amount of electrons into a numerical value as described above and transfers it to the ECC decoding circuit (8007).
  • the ECC decoding circuit (8007) corrects an error in the obtained numerical sequence according to a predetermined algorithm.
  • the amount of electrons (9001) in cell 1 is 3 levels
  • the amount of electrons in cell 2 (9002) is 4 levels
  • the amount of electrons in cell 3 (9003) is 1 level
  • the amount of electrons in cell 4 (9004) is 0. Examples of levels are shown.
  • Non-Patent Document 5 describes a method of encoding before rank modulation and correcting after rank modulation.
  • FIG. 1 shows a configuration example of the storage device (1001).
  • the storage device (1001) includes a nonvolatile memory (1002) and a memory controller (1003).
  • the non-volatile memory (1002) may be a WAM using a flash memory as an example.
  • the memory controller (1003) includes a rank modulation circuit (1004), an ECC encoding circuit (1005), a nonvolatile memory control circuit (1007), an ECC decoding circuit (1008), and a rank demodulation circuit (1010).
  • the ECC encoding circuit (1005) includes a redundant part rank modulation circuit (1006).
  • the ECC demodulation circuit (1008) includes a redundant part rank demodulation circuit (1009).
  • the memory controller also has a data path (1012) that connects these circuits. This is because it is necessary to know the amount of electrons in the previous state when performing rank modulation.
  • the maximum value of the amount of electrons in the nonvolatile memory (1002) is assumed to be q.
  • the rank modulation circuit (1004) receives and modulates the data. At this time, the data is converted into a string of numbers d 1 d 2 ... D k by the rank modulation circuit (1004).
  • d i represents the electron content level of each cell.
  • the rank modulation circuit (1004) passes this numeric string to the ECC encoding circuit (1005).
  • a 1-symbol log 2 q-bit q-element LDPC code is employed as the ECC.
  • the ECC encoding circuit (1005) multiplies d 1 d 2 ... D k by a generation matrix (not shown) to generate redundant data.
  • the redundant data cannot be written in the nonvolatile memory as it is. This is because rank modulation is not performed. Therefore, the redundant part rank modulation circuit (1006) rank-modulates the redundant data to generate the sequence r 1 r 2 ... R N ⁇ k . This rank-modulated redundant data may be referred to as modulated redundant data.
  • the ECC encoding circuit (1005) transfers the codewords d 1 d 2 ... D k r 1 r 2 ... R N ⁇ k to the nonvolatile memory control circuit (1007).
  • the nonvolatile memory control circuit (1007) that has received the code word injects electrons into each cell. Typically, for cell 1, to inject electrons to the level d 1. For cell 2, to inject electrons to a level d 2. The same applies hereinafter.
  • Rank demodulation circuit in the ECC decoding circuit (1008) (1009) is, y 1, y 2, ... , y k, y 'k + 1, ..., y' ranks demodulated in N, y k + 1 y k + 2 ... y n Convert.
  • ECC decoding circuit (1009) the column y 1 y 2 ... of values obtained in this way to correct the y k y k + 1 ... y n.
  • the rank demodulation circuit (1010) demodulates the corrected data, and transfers it to the host device (not shown) via the interface (1011) with the host device.
  • q 2 p
  • is the primitive q-1 power root of 1.
  • a systematic code obtained by adding a redundant part to input data is employed.
  • AWGN communication channel q original target communication channel (q-ary Symmetric Channel) and white Gaussian noise communication channel (Additive White Gaussian Noise Channel, hereinafter referred to as AWGN communication channel).
  • priori probability In the LDPC code, it is assumed that the probability of erroneous data on each communication path is known in advance. In order to emphasize this meaning, the above probability is referred to as a priori probability (a priori probability).
  • the formula for prior probabilities depends on the channel.
  • y 1 , y 2 ,..., Y k are analog quantities because they are the amount of electrons in the cells of the nonvolatile memory (1002).
  • the communication channels y 1 , y 2 ,..., Y k are AWGN communication channels that are typical analog communication channels.
  • the error characteristics of the nonvolatile memory (1002) are not necessarily the same as those of the AWGN communication path. In that case, it is necessary to experimentally measure the characteristics of the nonvolatile memory (1002), create a suitable communication channel model, and apply it to decoding.
  • y k + 1 , y k + 2 ,..., Y n are digital quantities, and a q-ary symmetric channel is assumed.
  • a logarithmic domain Sum-Product method (Logarithmic Domain Sum-Product Algorithm) is used in a decoding method of an LDPC code.
  • a priori log likelihood ratio (a priori log-likelihood ratio) is used based on prior probabilities.
  • the prior log likelihood ratio for y 1 , y 2 ,..., Y k is Given in.
  • F a j represents a prior log likelihood ratio in which the j-th symbol takes the value a.
  • y l j indicates the value of the l-th bit in the binary representation of the j-th received symbol.
  • a l indicates the value of the l-th bit of the binary representation of the symbol a.
  • ⁇ (x) is the Dirac delta function It is. [sigma] is a scale indicating the probability of error in variance of the AWGN channel. y k + 1, y k + 2, ..., with respect to the y n, suppose q-ary symmetric channel. If the error probability per bit is p, So the prior log likelihood ratio is It is.
  • the q-element logarithm domain Sum-Product method may consist of the following steps.
  • Initialization Initialize a post-logarithmic likelihood ratio Q a ij and R a ij . The following processing is executed for each i, j, a. In this way, there are two cases because the data portion is an analog amount and the redundant portion is a digital amount.
  • the memory controller (1001) If the memory controller (1001) has not been corrected even after repeating a predetermined number of times, it outputs a temporary estimated word and ends.
  • Non-Patent Document 1 when correcting an error of rank-modulated WAM, an analog amount can be used for input, and therefore the LDPC code correction capability can be improved as compared with Non-Patent Document 1.
  • FIG. 10 is a flowchart illustrating an example of data write processing in the storage device (1001) according to the first embodiment.
  • Step 10001 Start processing.
  • Step 10002 The storage device (1001) receives data (10011) from the host device.
  • Step 10003 The rank modulation circuit (1004) measures the amount of electrons in the write target cell of the nonvolatile memory (1002). This is because, in rank modulation, it is necessary to measure the amount of electrons in the write target cell once in order to determine which cell the electron is injected into.
  • Step 10004 The rank modulation circuit (1004) determines the amount of electrons in each cell according to a predetermined rule. At this time, the information is information on the amount of electrons in four cells (10012).
  • the rank modulation circuit (1004) transfers the information on the amount of electrons (10012) to the ECC encoding circuit (1005).
  • Step 10005 The ECC encoding circuit (1005) generates redundant data (10013) based on the information on the amount of electrons (10012).
  • Step 10006 The redundant part rank modulation circuit (1006) measures the amount of electrons in the write target cell of the nonvolatile memory (1002). This is because, in rank modulation, it is necessary to measure the amount of electrons in the write target cell once in order to determine which cell the electron is injected into.
  • Step 10007 The redundant part rank modulation circuit (1006) determines the amount of electrons of each cell in accordance with a predetermined rule.
  • the information is information on the amount of electrons in four cells (10014).
  • Step 10008 The ECC encoding circuit (1005) transfers the information on the amount of electrons (10013, 10014) to the nonvolatile memory control circuit (1007).
  • Step 10009 The nonvolatile memory control circuit (1007) injects electrons into the cell to be written in accordance with the information on the amount of electrons (10013, 10014).
  • Step 10010 The process ends.
  • FIG. 11 is a flowchart illustrating an example of data read processing in the storage device (1001) according to the first embodiment.
  • Step 11001 The process is started.
  • Step 11002 The nonvolatile memory control circuit (1007) measures the amount of electrons in the read target cell.
  • FIG. 11 shows that in this measurement result, the amount of electrons in the ECC data portion is 2.8, 4.2, 1.4, 1.1 (11011), and the amount of electrons in the redundant portion is 2, 3, 4, 1
  • An example of (11012) is shown.
  • the amount of electrons (11011) in the data portion is an analog amount
  • the amount of electrons (11012) in the redundant portion is a digital amount.
  • the nonvolatile memory control circuit (1007) transfers these pieces of information to the ECC decoding circuit (1008).
  • Step 11003 The redundant part rank demodulating circuit (1009) built in the ECC decoding circuit (1008) rank-demodulates the information (11012) of the electron quantity of the redundant part.
  • FIG. 11 shows an example in which a numerical value “2” (11013) is obtained by this processing.
  • Step 11004 The ECC decoding circuit (1008) corrects the errors in the information (11011) and (11013) on the amount of electrons according to the processing of the ECC decoding circuit described above. Since the information on the amount of electrons (11011) is an analog amount, the ECC decoding circuit (1008) of this embodiment has a higher correction capability than that of Non-Patent Document 1.
  • Step 11005 The ECC decoding circuit (1008) determines whether or not the correction is successful.
  • the ECC decoding circuit (1008) reports the fact to the upper apparatus (step 11006).
  • the ECC decoding circuit (1009) has obtained information on the amount of electrons (11014).
  • Step 11007 The ECC decoding circuit (1008) transfers the information on the amount of electrons (11014) to the rank demodulation circuit (1010).
  • Step 11008 The rank demodulation circuit (1010) converts the information on the amount of electrons (11014) into a numerical value.
  • FIG. 11 shows an example in which a numerical value “3” (11015) is obtained by this processing.
  • Step 11009 The rank demodulation circuit (1010) transfers the numerical value “3” (11015) obtained by the conversion to the higher-level device.
  • Step 11010 The process ends.
  • FIG. 12 is a flowchart illustrating an example of data write processing in the storage device (1001) according to the second embodiment.
  • Step 12001 Start processing.
  • Step 12002 The storage device (1001) receives data (10011) from the host device.
  • Step 12003 The rank modulation circuit (1004) measures the amount of electrons in the write target cell of the nonvolatile memory (1002). This is because in rank modulation, it is necessary to measure the amount of electrons in the writing target cell once in order to determine which cell the electron is injected into.
  • Step 12004 The rank modulation circuit (1004) determines the amount of electrons in each cell according to a predetermined rule. At this time, the information is information on the amount of electrons in the four cells (12012).
  • the rank modulation circuit (1004) transfers the information on the amount of electrons (12012) to the ECC encoding circuit (1005).
  • Step 12007 The redundant part rank modulation circuit (1006) determines the amount of electrons of each cell according to a predetermined rule.
  • the information is information on the amount of electrons in four cells (12014).
  • Step 12008 The ECC encoding circuit (1005) transfers the information on the amount of electrons (12013, 12014) to the nonvolatile memory control circuit (1007).
  • Step 12009 The nonvolatile memory control circuit (1007) injects electrons into the cell to be written in accordance with the information on the amount of electrons (12013, 12014).
  • Step 12010 The process ends.
  • FIG. 13 is a flowchart illustrating an example of data read processing in the storage device (1001) according to the second embodiment.
  • Step 13001 The process is started.
  • Step 13002 The nonvolatile memory control circuit (1007) measures the amount of electrons in the read target cell.
  • FIG. 13 shows an example in which the amount of electrons in the ECC data portion is 3, 4, 1, 1 (13011) and the amount of electrons in the redundant portion is 2, 3, 4, 1 (13012) in this measurement result. .
  • the amount of electrons in the data portion (13011) is a digital amount, and the amount of electrons in the redundant portion (13012) is also a digital amount.
  • the nonvolatile memory control circuit (1007) transfers these pieces of information to the ECC decoding circuit (1008).
  • Step 13003 The redundant part rank demodulating circuit (1009) built in the ECC decoding circuit (1008) rank-demodulates the information (13012) of the electron quantity of the data in the redundant part.
  • FIG. 11 shows an example in which a numerical value “2” (13013) is obtained by this processing.
  • Step 13004 The ECC decoding circuit (1008) corrects the error in the information on the amount of electrons (13011, 13013) according to the processing of the ECC decoding circuit described above. Since the information (13011) of the amount of electrons is a numerical value of 8 digits, the code length becomes long, and the ECC decoding circuit (1008) of this embodiment has a higher correction capability than that of Non-Patent Document 1.
  • Step 13005 The ECC decoding circuit (1008) determines whether or not the correction is successful. When the correction fails, the ECC decoding circuit (1008) reports the fact to the upper apparatus (step 13006). When the correction is successful, it is assumed that the ECC decoding circuit (1008) has obtained information on the amount of electrons (13014).
  • Step 13007 The ECC decoding circuit (1008) transfers the information on the amount of electrons (13014) to the rank demodulation circuit (1010).
  • Step 13008 The rank demodulation circuit (1010) converts the information on the amount of electrons (13014) into a numerical value.
  • FIG. 11 shows an example in which a numerical value “3” (13015) is obtained by this processing.
  • Step 13009 The rank demodulation circuit (1010) transfers the numerical value “3” (13015) obtained by the conversion to the host device.
  • Step 13010 The process ends.
  • the code word can be composed of a 4-digit numerical value from the one-digit numerical value in Non-Patent Document 1, the code length becomes long and the correction capability is improved.
  • the above-described embodiments are examples for explaining the present invention, and are not intended to limit the scope of the present invention only to the embodiments. Those skilled in the art can implement the present invention in various other modes without departing from the gist of the present invention.
  • the circuit is the execution subject, but software (program) may be the execution subject.
  • Non-volatile memory 1003 Non-volatile memory controller 1004: Rank modulation circuit 1005: ECC encoding circuit 1006: Redundant part rank modulation circuit 1007: Non-volatile memory control circuit 1008: ECC decoding circuit 1009: Redundant part Rank demodulation circuit 1010: Rank demodulation circuit

Abstract

Provided is a storage device, comprising a non-volatile memory, a rank modulation circuit, an error checking and correction (ECC) coding circuit, a memory control circuit, an ECC decoding circuit, and a rank demodulation circuit. The rank modulation circuit rank modulates inputted data so as to generate modulated data. The ECC coding circuit generates redundant data based on error correction coding from the modulated data, and rank modulates the redundant data so as to generate modulated redundant data. The memory control circuit carries out writing and reading upon the non-volatile memory of a set of the modulated data and the modulated redundant data. The ECC decoding circuit rank demodulates the modulated redundant data from among the set of the modulated data and modulated redundant data which has been read from the non-volatile memory so as to generate the redundant data, and carries out error correction of the modulated data using the redundant data. The rank demodulation circuit rank demodulates the modulated data whereupon the error correction has been carried out.

Description

記憶装置、及び、データの誤り訂正方法Storage device and data error correction method
 本発明は、記憶装置に格納されるデータの誤り訂正の技術に関する。 The present invention relates to a technique for error correction of data stored in a storage device.
 近年、NAND型フラッシュメモリ(以下、フラッシュメモリ)は、記録密度が飛躍的に向上し、計算機における二次記憶装置として利用されつつある。フラッシュメモリは、不揮発であり、そのアクセスレイテンシは、HDD(Hard Disk Drive)と比較して非常に短い。しかし、フラッシュメモリは、以下のような欠点がある。 In recent years, NAND-type flash memory (hereinafter referred to as flash memory) has been drastically improved in recording density and is being used as a secondary storage device in computers. Flash memory is non-volatile, and its access latency is very short compared to HDD (Hard Disk Drive). However, the flash memory has the following drawbacks.
(1)書き込み寿命がある。データを書き込むたびに記録素子(以下、セル)にダメージを与えて、一定回数以上書き込むとセルがデータを保持できなくなる。
(2)データの変更ができない。データを変更するためには、消去というセルに大きなダメージを行う操作をしなければならない。
(3)データの誤り確率が、Dynamic Random Access Memory(DRAM)より高い。
(1) There is a writing life. Whenever data is written, the recording element (hereinafter referred to as cell) is damaged, and if the data is written more than a certain number of times, the cell cannot hold the data.
(2) Data cannot be changed. In order to change the data, it is necessary to perform an operation of damaging the cell called erasure.
(3) The error probability of data is higher than that of Dynamic Random Access Memory (DRAM).
 このような欠点は、フラッシュメモリの記録の原理に起因する。フラッシュメモリは、シリコン酸化膜で囲まれた微小な浮遊ゲート(=セル)に電子を溜めることで、情報を記録する。すなわち、電子が溜まった状態を「1」、溜まっていない状態を「0」と解釈する。シリコン酸化膜は、絶縁体であり、電子の透過を阻むため、一種の量子力学的なポテンシャルの壁となる。このポテンシャルの壁の「高さ」は、1eV程度と言われている。セルに「1」を書き込む場合、数V程度の電圧をセルにかける。そうすると、電子は、数eV程度のエネルギーを得て、ポテンシャルの壁を乗り越えられる。ポテンシャルの壁を乗り越えた電子は、セルに入る。十分な量の電子がセルに入ったところで、電圧を元に戻す。そうすると、電子は、ポテンシャルの壁に阻まれてセルに閉じ込められる。このような原理によって、フラッシュメモリは、電源を切断しても情報を保持可能な、不揮発な記憶媒体として動作する。 Such defects are caused by the recording principle of flash memory. The flash memory records information by storing electrons in a minute floating gate (= cell) surrounded by a silicon oxide film. That is, a state where electrons are accumulated is interpreted as “1”, and a state where electrons are not accumulated is interpreted as “0”. A silicon oxide film is an insulator, and serves as a kind of quantum mechanical potential wall in order to prevent the transmission of electrons. The “height” of this potential wall is said to be about 1 eV. When writing “1” to the cell, a voltage of about several volts is applied to the cell. Then, the electrons can obtain energy of about several eV and overcome the potential wall. Electrons that cross the potential barrier enter the cell. When a sufficient amount of electrons enter the cell, the voltage is restored. Then, the electrons are blocked by the potential wall and confined in the cell. Based on such a principle, the flash memory operates as a nonvolatile storage medium that can retain information even when the power is turned off.
 回路の簡略化のため、一旦溜めた電子をセルから取り除く場合は、多数のセルに対して一斉に「-10V」の電圧をかけるようになっている。これによってセルの情報が消去される。この消去動作は時間がかかるため、フラッシュメモリの制御ソフトウェアは、データ変更処理において、変更対象のデータを直接変更することを行わず、何も書かれていないセルに新しいデータを書き込み、古いデータを格納したセルを無効とする。このようなデータを書き込むときと消去するときでオーバーヘッドが大きく異なるメモリのことを、Write Asymmetric Memory(以下WAM)という。 In order to simplify the circuit, when removing the accumulated electrons from the cell, a voltage of “−10V” is applied to many cells at once. As a result, the cell information is erased. Since this erasing operation takes time, the flash memory control software does not directly change the data to be changed in the data change process, writes new data to an empty cell, and writes old data. Invalidate the stored cell. Such a memory having a large overhead difference between writing and erasing data is referred to as a write asymmetric memory (hereinafter referred to as WAM).
 電子は数eVのシリコン酸化膜の壁を越えてセルに入ることができるのだから、シリコン酸化膜の結晶を構成する電子もまた、同様にエネルギーを得て、結晶から飛び出してセルに入ることができる。このようにシリコン酸化膜の結晶を構成する電子が飛び出した部位を、格子欠陥(lattice defect)、又は、ホール(hole)という。ホールはあたかも+の電荷を帯びた電子のように振る舞うので、電子と引き合う。このようなホールが多数あると、セルの中の電子は、ホールからホールへとシリコン酸化膜の中を移動して、セルの外に飛び出してしまう。電子が漏れ出る量が増えると情報が記録できなくなってしまう。これがフラッシュメモリの書き込みに寿命がある原因である。さらに消去は書き込みより高い電圧をセルに加えるため、シリコン酸化膜の劣化はさらに進む。これが書き込みと消去とが非対称である理由の一つである。 Since electrons can enter the cell across the wall of the silicon oxide film of several eV, the electrons constituting the crystal of the silicon oxide film can similarly gain energy and jump out of the crystal and enter the cell. it can. The part where the electrons constituting the crystal of the silicon oxide film jump out in this way is called a lattice defect or a hole. The hole behaves like a positively charged electron, so it attracts the electron. When there are many such holes, electrons in the cell move from hole to hole in the silicon oxide film and jump out of the cell. If the amount of leakage of electrons increases, information cannot be recorded. This is the reason why the flash memory has a long life. Further, since erasing applies a higher voltage to the cell than writing, the deterioration of the silicon oxide film further proceeds. This is one of the reasons why writing and erasing are asymmetric.
 さらに、量子力学の教えるところでは、電子はその持っているエネルギーより高いポテンシャルの壁を、或る確率で透過できるというトンネル効果が存在する。フラッシュメモリの微細化が進むと、フラッシュメモリセルを囲むシリコン酸化膜は薄くなり、トンネル効果で透過できる程度になってしまう。そのため、セルの中に存在する電子がセルの外に漏れ出てしまう。このようにシリコン酸化膜の格子欠陥とトンネル効果とにより、書き込んだデータに誤りが生じてしまう。その誤り確率は、DRAMと比較して非常に高い。そのため、誤り訂正符号(Error Correcting Code、以下ECC)というデータ保護機構を用いて誤りを訂正する必要がある。誤り訂正符号については後述する。 Furthermore, as quantum mechanics teaches, there is a tunnel effect in which electrons can pass through walls with a higher potential than their energy with a certain probability. As the miniaturization of the flash memory proceeds, the silicon oxide film surrounding the flash memory cell becomes thinner and can be transmitted by the tunnel effect. Therefore, electrons existing in the cell leak out of the cell. As described above, errors occur in the written data due to the lattice defects and the tunnel effect of the silicon oxide film. The error probability is very high compared to DRAM. For this reason, it is necessary to correct an error using a data protection mechanism called an error correcting code (ECC). The error correction code will be described later.
 さらにフラッシュメモリの記録密度を上げる、「多値化」という技術が知られている。上記の二値化では、電子が溜まっている「0」、及び、溜まっていない「1」という2レベルで情報を記録していた。多値化では、電子の溜まっている量を4レベルに分けて、1セルに2ビットの情報を記録する。このように4値を記録するフラッシュメモリを、Multi-Level Cell(以下MLC)フラッシュメモリという。これに対して、1セル1ビットを記録するフラッシュメモリを、Single Level Cell(以下SLC)フラッシュメモリという。この多値化はさらに進み、電子の溜まっている量を8レベルに分けて、1セルに3ビットの情報を格納する、Triple Level Cell(以下TLC)フラッシュメモリが出現している。SLCフラッシュメモリの2レベルと比較して、4レベルのMLCフラッシュメモリ、8レベルのTLCフラッシュメモリのレベル間の電子の量の差は小さい。したがって、多値化の場合、少数の電子がセルから漏れでただけで、別の情報に変わってしまう。したがって、MLC、TLCフラッシュメモリは、SLCフラッシュメモリと比較して、データの誤り確率が高い。 A technology called “multi-value” is known which further increases the recording density of flash memory. In the above binarization, information is recorded at two levels, “0” where electrons are accumulated and “1” where electrons are not accumulated. In multi-value processing, the amount of accumulated electrons is divided into four levels, and 2-bit information is recorded in one cell. Such a flash memory that records four values is referred to as a multi-level cell (hereinafter referred to as MLC) flash memory. In contrast, a flash memory that records one bit per cell is referred to as a single level cell (hereinafter SLC) flash memory. This multi-level processing has further progressed, and a triple level cell (hereinafter referred to as TLC) flash memory has emerged that divides the amount of accumulated electrons into 8 levels and stores 3-bit information in one cell. Compared to the two levels of the SLC flash memory, the difference in the amount of electrons between the levels of the four-level MLC flash memory and the eight-level TLC flash memory is small. Therefore, in the case of multi-value, only a small number of electrons leak from the cell, and the information is changed to another information. Therefore, the MLC and TLC flash memory has a higher data error probability than the SLC flash memory.
米国特許第8245094号明細書US Pat. No. 8,245,094
 フラッシュメモリの多値化が進むと、データの誤り確率が増大する。ところで、特許文献1には、ランク変調(Rank Modulation)技術が開示されている。しかし、ランク変調後の値はデジタル量となってしまうため、アナログ量を訂正するソフトデコードを適用することができない。また、デジタル量は、アナログ量と比較して符号長が短くなってしまうため、ランク変調後の値の誤り訂正能力は、アナログ量の誤り訂正能力よりも低くなってしまう。 As the flash memory becomes more multi-valued, the data error probability increases. By the way, Patent Document 1 discloses a rank modulation technique. However, since the value after rank modulation is a digital quantity, soft decoding that corrects the analog quantity cannot be applied. Also, since the digital amount has a shorter code length than the analog amount, the error correction capability of the value after rank modulation is lower than the error correction capability of the analog amount.
 そこで、本発明の目的は、ランク変調を含む記憶装置におけるデータの誤り訂正能力を向上させることにある。 Therefore, an object of the present invention is to improve the error correction capability of data in a storage device including rank modulation.
 一実施例に係る記憶装置は、不揮発性メモリと、Error Checking and Correcting(ECC)符号化回路と、メモリ制御回路と、ECC復号化回路と、ランク復調回路とを有する。ランク変調回路は、入力されたデータをランク変調して変調データを生成する。ECC符号化回路は、変調データから誤り訂正符号に基づく冗長データを生成し、当該冗長データをランク変調して変調冗長データを生成する。メモリ制御回路は、不揮発性メモリに対して、変調データ及び変調冗長データのセットのライト及びリードを行う。ECC復号化回路は、不揮発性メモリからリードされた変調データ及び変調冗長データのセットのうち、当該変調冗長データをランク復調して冗長データを生成し、当該冗長データを用いて変調データの誤り訂正を行う。ランク復調回路は、誤り訂正が行われた変調データをランク復調する。 A storage device according to an embodiment includes a nonvolatile memory, an error checking and correcting (ECC) encoding circuit, a memory control circuit, an ECC decoding circuit, and a rank demodulation circuit. The rank modulation circuit rank-modulates input data to generate modulation data. The ECC encoding circuit generates redundant data based on the error correction code from the modulated data, and rank-modulates the redundant data to generate modulated redundant data. The memory control circuit writes and reads a set of modulated data and modulated redundant data with respect to the nonvolatile memory. The ECC decoding circuit rank-demodulates the modulated redundant data from the set of modulated data and modulated redundant data read from the nonvolatile memory to generate redundant data, and uses the redundant data to correct the error of the modulated data I do. The rank demodulating circuit rank-demodulates the modulated data subjected to error correction.
 本発明によれば、ランク変調を含む記憶装置におけるデータの誤り訂正能力を向上させることができる。 According to the present invention, the error correction capability of data in a storage device including rank modulation can be improved.
実施例に係る記憶装置の構成例を示す。The structural example of the memory | storage device which concerns on an Example is shown. セルの状態を示す図である。It is a figure which shows the state of a cell. セルの状態と数値の対応付けを説明するための図である。It is a figure for demonstrating matching with the state of a cell, and a numerical value. 状態遷移処理の例を示すフローチャートである。It is a flowchart which shows the example of a state transition process. 有限状態遷移図の例を示す。An example of a finite state transition diagram is shown. 量子化を説明するための図である。It is a figure for demonstrating quantization. LDPC符号の訂正能力を説明するための図である。It is a figure for demonstrating the correction capability of a LDPC code. 従来の記憶装置の構成例を示す。The structural example of the conventional memory | storage device is shown. セルの状態を示す図である。It is a figure which shows the state of a cell. 実施例1に係るデータ書き込み処理の例を示すフローチャートである。6 is a flowchart illustrating an example of a data writing process according to the first embodiment. 実施例1に係るデータ読み出し処理の例を示すフローチャートである。3 is a flowchart illustrating an example of a data read process according to the first embodiment. 実施例2に係るデータ書き込み処理の例を示すフローチャートである。12 is a flowchart illustrating an example of a data writing process according to the second embodiment. 実施例2に係るデータ読み出し処理の例を示すフローチャートである。12 is a flowchart illustrating an example of a data read process according to the second embodiment.
 以下、図面を参照しながら、ランク変調技術を説明する。なお、フラッシュメモリは多値(4、8、16レベル、・・・)を仮定する。 Hereinafter, the rank modulation technique will be described with reference to the drawings. The flash memory is assumed to be multi-valued (4, 8, 16 levels,...).
 図2は、セル1(2002)、セル2(2003)、セル3(2004)、セル4(2005)の状態を示す。 FIG. 2 shows the states of cell 1 (2002), cell 2 (2003), cell 3 (2004), and cell 4 (2005).
 1つのセット(2001)は、セル1(2002)、セル2(2003)、セル3(2004)、セル4(2005)を有する。図2の1つの円筒形は、1レベル分の電子がセルに溜まっていることを示す。よって、図2は、セル1に3レベル分の電子が溜まっており、セル2に2レベル分の電子が溜まっており、セル3に1レベル分の電子が溜まっており、セル4には電子が溜まっていないことを示す。この状態セット(2001)に数値「1」を対応づける。 One set (2001) includes cell 1 (2002), cell 2 (2003), cell 3 (2004), and cell 4 (2005). One cylindrical shape in FIG. 2 indicates that one level of electrons has accumulated in the cell. Accordingly, in FIG. 2, electrons for three levels are accumulated in the cell 1, electrons for two levels are accumulated in the cell 2, electrons for one level are accumulated in the cell 3, and electrons in the cell 4 are accumulated. Indicates that does not accumulate. The numerical value “1” is associated with this state set (2001).
 この状態から別の数値を書き込みたいとき、従来ならば、セルに大きなダメージを与える消去を行う必要であった。しかし、ランク変調では消去は不要である。図2のセル2に2レベル分の電子を注入するだけで、別のデータに書き換えることができる。状態セット(2006)は、その書き換え後の状態を示す。状態セット(2006)に別の数値を割り当てることができれば、フラッシュメモリに大きなダメージを与える消去を行うことなく、データを書き換えることができる。よって、フラッシュメモリの寿命を延ばすことができる。 When it was desired to write another numerical value from this state, conventionally, it was necessary to perform erasure that caused a large damage to the cell. However, rank modulation does not require erasure. By simply injecting two levels of electrons into the cell 2 of FIG. 2, it can be rewritten to other data. A state set (2006) indicates a state after the rewriting. If another numerical value can be assigned to the state set (2006), the data can be rewritten without performing erasure that causes large damage to the flash memory. Therefore, the lifetime of the flash memory can be extended.
 図3は、セルの状態と数値の対応付けを説明するための図である。 FIG. 3 is a diagram for explaining the correspondence between cell states and numerical values.
 図3において、最も電荷の溜まっているセルの番号を欄3001の最も左に書く。次に電荷が溜まっているセルの番号を先ほど番号を書いた右隣に書く。これを繰り返すと、数字の列「1234」ができる。要するに、電子の量について降順にセルの番号を書いていくのである。次にセル2(2003)に2レベル分だけ電子を注入すると、順番が入れ替わる。欄3002には数字の列「2134」が書かれている。状態「1234」に数値a、状態「2134」に数値bを割り当てていくと、最大で「4!=24」の数値を格納できる。そして、電子を溜められる上限が十分大きければ、消去を行うことなく、任意の数値から別の数値に電子を注入するだけで、データを書き換えることができる。このように、ランク変調は、消去回数を減らし、書き込みパルスの印加だけでデータを書き換えることができるため、フラッシュメモリの寿命を延ばすことができると期待されている。そして、セルに電子を注入することでセルの順序が入れ替わるが、これは代数学の用語で置換(permutation)という。以下、置換について説明する。 In FIG. 3, the number of the cell with the most charge is written in the leftmost column 3001. Next, write the number of the cell where the electric charge is accumulated to the right of the number written earlier. By repeating this process, a string of numbers “1234” is created. In short, cell numbers are written in descending order for the amount of electrons. Next, when electrons for two levels are injected into the cell 2 (2003), the order is changed. In the column 3002, a string of numbers “2134” is written. If a numerical value a is assigned to the state “1234” and a numerical value b is assigned to the state “2134”, a numerical value “4! = 24” can be stored at the maximum. If the upper limit for storing electrons is sufficiently large, the data can be rewritten by simply injecting electrons from an arbitrary numerical value to another numerical value without erasing. As described above, rank modulation is expected to reduce the number of erasures and to rewrite data only by applying a write pulse, thereby extending the life of the flash memory. Then, by injecting electrons into the cell, the order of the cells is changed, which is called permutation in algebraic terms. Hereinafter, the replacement will be described.
 有限個の数の集合を、
Figure JPOXMLDOC01-appb-M000001
とする。そして、Xの元(element)を昇順にならべた状態を考える。この順序を並べ替える写像を置換(Permutation)という。置換の1つを、σとするとさまざまな置換が考えられるので、置換もまた集合をなす。これを、Sと書く。任意のσ,τ∈Sに対して、その合成写像τ・σは、置換を2回施すわけであるから、やはり置換の1つで、Sの元である。これを数学的にいうと
Figure JPOXMLDOC01-appb-M000002
である。明らかに、
Figure JPOXMLDOC01-appb-I000003
である。これを結合律という。Xの順序を入れ替えないという写像もまた置換と考えて良い。ここでは「e」と表記する。明らかに、任意のσ∈Sに対して、
Figure JPOXMLDOC01-appb-M000004
である。このような「e」をSの単位元という。さらに、1回施した置換を元に戻す操作もまた置換である。よって、任意のσ∈Sに対して、σ-1∈Sが存在して、
Figure JPOXMLDOC01-appb-M000005
が成立する。このようなσ-1をσの逆元という。このように、集合Sにおいて、(1)結合律が成り立ち、(2)単位元が存在し、(3)逆元が存在する。このような集合を一般に群(Group)という。すなわち、置換の集合Sは群である。群Sを置換群(Permutation Group)といい、従来からその性質が調べられてきた。
A set of finite numbers
Figure JPOXMLDOC01-appb-M000001
And Then, consider a state in which elements of Xn are arranged in ascending order. This mapping for rearranging the order is called permutation. If one of the permutations is σ, various permutations are possible, so permutations also form a set. This, written as S n. Any sigma, relative Tau∈S n, is the composite mapping tau · sigma, since it is not subjected twice a substituent, which is also one of the substituents, the S n original. Mathematically speaking
Figure JPOXMLDOC01-appb-M000002
It is. clearly,
Figure JPOXMLDOC01-appb-I000003
It is. This is called bond law. A mapping that does not change the order of Xn may also be considered a replacement. Here, it is written as “e”. Clearly, for any σ∈S n
Figure JPOXMLDOC01-appb-M000004
It is. Such an "e" that the unity of the S n. Furthermore, the operation of undoing the replacement performed once is also the replacement. Thus, for any Shiguma∈S n, exist sigma -1 ∈S n,
Figure JPOXMLDOC01-appb-M000005
Is established. Such σ −1 is called an inverse element of σ. Thus, in the set S n, (1) holds the binding law, there are (2) unity, there are (3) inverse. Such a set is generally called a group. That is, the set of substitutions Sn is a group. The group S n permutation group is called the (Permutation Group), the properties have been investigated in the past.
 ここでは、置換群を含む一般の群Gの表現(Representation)について説明する。以降、群の演算記号「・」を省略する。群Gの表現とは、群Gから可逆なN×N行列の集合GL(N)への写像Dであって、以下の性質を満たすものをいう。任意のg,g∈Gに対して、D(g)=D(g)D(g)が成立する。言い換えると、表現とは群Gから行列の集合GL(N)への準同型写像(homomorphism)といえる。また、行列D(g)を「g」の表現行列という。前述のように任意のg∈Gに対して逆元g-1が存在する。したがって、D(g-1)=D-1(g)である。このような事情から、GL(N)は可逆な行列の集合でなければならない。また、行列の大きさがNのとき、N次元表現という。 Here, an expression (Representation) of a general group G including a replacement group will be described. Hereinafter, the group operation symbol “•” is omitted. The expression of the group G is a mapping D from the group G to a reversible N × N matrix set GL (N) that satisfies the following properties. For any g 1 , g 2 εG, D (g 1 g 2 ) = D (g 1 ) D (g 2 ) holds. In other words, the expression can be said to be a homomorphism from the group G to the matrix set GL (N). The matrix D (g) is referred to as an expression matrix of “g”. As described above, there exists an inverse element g −1 for any gεG. Therefore, D (g −1 ) = D −1 (g). For this reason, GL (N) must be a reversible set of matrices. Further, when the size of the matrix is N, it is called N-dimensional representation.
 さて、置換群の表現を考える。数字の列を縦に
Figure JPOXMLDOC01-appb-M000006
と並べることにする。そうすると、置換の表現行列は
Figure JPOXMLDOC01-appb-M000007
Figure JPOXMLDOC01-appb-M000008
Figure JPOXMLDOC01-appb-M000009
Figure JPOXMLDOC01-appb-M000010
Figure JPOXMLDOC01-appb-M000011
Figure JPOXMLDOC01-appb-M000012
の24個からなる。置換の数「4!=24」と一致する。また、「数24」の単位元「e」には単位行列
Figure JPOXMLDOC01-appb-M000013
が対応していることに注意する。さらにこれらは4×4行列なので4次元表現である。このような要素の位置を入れ替える表現を正則表現という。
Now consider the representation of a permutation group. Vertical column of numbers
Figure JPOXMLDOC01-appb-M000006
To line up with. Then the permutation matrix is
Figure JPOXMLDOC01-appb-M000007
Figure JPOXMLDOC01-appb-M000008
Figure JPOXMLDOC01-appb-M000009
Figure JPOXMLDOC01-appb-M000010
Figure JPOXMLDOC01-appb-M000011
Figure JPOXMLDOC01-appb-M000012
It consists of 24 pieces. It matches the number of substitutions “4! = 24”. The unit element “e” of “Equation 24” has a unit matrix.
Figure JPOXMLDOC01-appb-M000013
Note that is supported. Furthermore, since these are 4 × 4 matrices, they are four-dimensional representations. Such an expression that replaces the positions of elements is called a regular expression.
 このようにセルに電子を注入することで、セルの集合の状態を変え、これが数学的には置換にあたることがわかったわけだが、フラッシュメモリの寿命を延ばすためには以下の条件を満たすことが望ましい。
(第1の条件)どのセルの電子量も均等に上昇するようにする。
(第2の条件)置換によりすべての状態に遷移できるようにする。
By injecting electrons into the cell in this way, it was found that this changed the state of the set of cells and this was mathematically replaced. However, in order to extend the life of the flash memory, the following conditions are desirable. .
(First condition) The amount of electrons in any cell is increased uniformly.
(Second condition) It is possible to transition to all states by replacement.
 第1の条件は、特定のセルばかりに電子を注入していては、すぐに注入できる電子量の上限に達し、消去が必要となるため、避けることが望ましいという条件である。 The first condition is that if electrons are injected only into a specific cell, the upper limit of the amount of electrons that can be injected immediately is reached and erasure is required, so it is desirable to avoid it.
 第2の条件は、セルの集合に格納される情報量を最大にすることが望ましいという条件である。すなわち、特定の状態に遷移できないようなアルゴリズムでは、その状態に数値を割り当てることができなく、格納できる情報量が減ってしまう。 The second condition is that it is desirable to maximize the amount of information stored in a set of cells. That is, an algorithm that cannot make a transition to a specific state cannot assign a numerical value to that state, and the amount of information that can be stored decreases.
 図4は、第1及び第2の条件を満たす状態遷移処理の例を示すフローチャートである。 FIG. 4 is a flowchart showing an example of state transition processing that satisfies the first and second conditions.
・ステップ4001:フラッシュメモリのコントローラは、処理を開始する。
・ステップ4002:コントローラは、セル1が先頭(もっとも電子量が大きい)か否かを判断する。セル1が先頭であれば(YES)ステップ4003へ進み、そうでなければ(NO)ステップ4004へ進む。
・ステップ4003:コントローラは、セル2の電子量が最小か否かを判断する。コントローラは、セル2の電子量が最小ならば(YES)ステップ4004へ進み、そうでなければステップ4005へ進む。
・ステップ4004:コントローラは、最も電子量の少ないセルに電子を注入し、電子量を最大にする。そして、本処理を終了する。
・ステップ4005:コントローラは、2番目に電子量の多いセルに電子を注入し、電子量を最大にする。そして、本処理を終了する。
Step 4001: The controller of the flash memory starts processing.
Step 4002: The controller determines whether or not the cell 1 is the head (the largest amount of electrons). If cell 1 is at the top (YES), go to step 4003; otherwise (NO) go to step 4004.
Step 4003: The controller determines whether or not the amount of electrons in the cell 2 is minimum. If the amount of electrons in cell 2 is the minimum (YES), the controller proceeds to step 4004, otherwise proceeds to step 4005.
Step 4004: The controller injects electrons into the cell with the least amount of electrons to maximize the amount of electrons. Then, this process ends.
Step 4005: The controller injects electrons into the cell with the second largest amount of electrons to maximize the amount of electrons. Then, this process ends.
 図5は、図4の処理に従って電子を注入していった結果、得られる4セルの有限状態遷移図を示す。 FIG. 5 shows a finite state transition diagram of 4 cells obtained as a result of injecting electrons according to the process of FIG.
 図5の箱の中の数字がセルの番号の列を示している。電子量の降順に左から右へセルの番号が記載されている。図5において箱の数が「4!=24」個存在するので、図4の処理は、上記の第2の条件を満たす。さらに、図5の状態遷移図が一筆書きの図形になっているので、図4の処理は、どのセルにも均等に電子を注入する。すなわち、図4の処理は、上記の第1の条件を満たす。 The numbers in the box in Fig. 5 indicate cell number columns. Cell numbers are listed from left to right in descending order of the amount of electrons. Since there are “4! = 24” boxes in FIG. 5, the process of FIG. 4 satisfies the above second condition. Further, since the state transition diagram of FIG. 5 is a one-stroke drawing, the process of FIG. 4 uniformly injects electrons into any cell. That is, the process of FIG. 4 satisfies the first condition.
 図5の例は、状態「1234」から出発してすべての状態を1度ずつ経由して再び状態「1234」に戻ってくることができることを示す。これの数学的対応物は、1の原始n乗根である(primitive n-th root)。方程式x―1=0の1でない根をωとする。1にωを掛けるとωになる。ただし、ω≠1である。また、ωω=ω≠ωである。これを繰り返していくと、ωn―1ω=ω=1となり1に戻ってくる。このように考えていくと、図5の各状態にω(k=0,1,…,23)を割り当てていくことも可能である。またこのように巡回する置換を巡回置換といい、置換群Sの部分群になっている。ωはスカラーであり、1×1行列と考えるので、ωは巡回置換群の1次元表現となっている。 The example of FIG. 5 shows that it is possible to start from the state “1234” and return to the state “1234” again through all the states once. Its mathematical counterpart is the primitive n-th root of 1 (primitive n-th root). Let ω be a non-one root of the equation x n −1 = 0. Multiply 1 by ω to get ω. However, ω ≠ 1. Further, ωω = ω 2 ≠ ω. When this is repeated, ω n−1 ω = ω n = 1 and the value returns to 1. In this way, it is possible to assign ω k (k = 0, 1,..., 23) to each state in FIG. Also referred to as cyclic permutation replacement to cycle as this has become subgroup of permutation group S n. Since ω is a scalar and considered as a 1 × 1 matrix, ω is a one-dimensional representation of a cyclic permutation group.
 上記のように、フラッシュメモリには、フラッシュメモリに保存されたデータに誤りが発生するという問題がある。そこで、誤りを訂正する誤り訂正符号化技術を利用する。符号化回路(Encoder)は、データを受け取ると、所定の演算規則に基づいて冗長データを生成し、当該データに冗長データを付加して、フラッシュメモリに書き込む。一方、復号化回路(Decoder)は、データと冗長データを読み出し、冗長データと上記の演算規則とから正しいデータを推定して、誤りを訂正する。 As described above, the flash memory has a problem that an error occurs in the data stored in the flash memory. Therefore, an error correction coding technique for correcting an error is used. When receiving the data, the encoding circuit (Encoder) generates redundant data based on a predetermined calculation rule, adds the redundant data to the data, and writes the data in the flash memory. On the other hand, the decoding circuit (Decoder) reads the data and the redundant data, estimates the correct data from the redundant data and the above calculation rule, and corrects the error.
 誤り訂正符号には大きく分けて2種類がある。一つは代数的な誤り訂正符号で、BCH(Bose-Chaudhuri-Hocquenghem)符号やReed-Solomon符号、代数幾何符号(Algebraic Geometry Code)がある。これらの符号は、概要的には、復号化回路が代数方程式を解くことによって、データ中の誤ったビットあるいはシンボル(ビットの集合)を特定し、正しい値に訂正する符号である。詳細については非特許文献2、3を参照されたい。もう一つは、確率によって誤りを訂正する符号で、低密度パリティ検査符号(Low-Density Parity Check Code、以下LDPC符号)がある。低密度パリティ検査符号については非特許文献2を参照されたい。 There are two types of error correction codes. One is an algebraic error correction code, which includes a BCH (Bose-Chauduri-Hocquenhem) code, a Reed-Solomon code, and an algebraic geometric code (Algebric Geometric Code). In general, these codes are codes that specify a wrong bit or symbol (a set of bits) in data and correct it to a correct value by a decoding circuit solving an algebraic equation. Refer to Non-Patent Documents 2 and 3 for details. The other is a code that corrects an error according to probability, and there is a low density parity check code (Low-Density Parity Check Code, hereinafter referred to as LDPC code). See Non-Patent Document 2 for the low-density parity check code.
 ところで、フラッシュメモリからデータを読み出すとき、図2では、離散的な電子量としてデータが得られると説明した。しかし実際は、フラッシュメモリセルの電子量は、離散的な量でなく、連続的な量である。フラッシュメモリ内の入出力回路がフラッシュメモリセルの電子量を量子化(quantize)して、離散的な量として出力しているのである。 By the way, when reading data from the flash memory, in FIG. 2, it was explained that the data can be obtained as a discrete amount of electrons. However, in practice, the amount of electrons in the flash memory cell is not a discrete amount but a continuous amount. The input / output circuit in the flash memory quantizes the amount of electrons in the flash memory cell and outputs it as a discrete amount.
 図6は、量子化を説明するための図である。 FIG. 6 is a diagram for explaining quantization.
 図6は、セルの電子量(6001、6002、6003、6004)を示す。フラッシュメモリ内の入出力回路は閾値(6005、6006、6007、6008)を有しており、電子量が閾値(6005)未満なら電子量0レベル、電子量が閾値(6005)以上且つ閾値(6006)未満なら電子量1レベルと判断する。閾値(6007)、(6008)についても同様である。このような入出力回路の働きにより、連続的なアナログ量である電子量(6001、6002、6003、6004)は、離散的なデジタル量(6009、6010、6011、6012)に変換される。 FIG. 6 shows the amount of electrons (6001, 6002, 6003, 6004) of the cell. The input / output circuit in the flash memory has threshold values (6005, 6006, 6007, 6008). If the amount of electrons is less than the threshold value (6005), the amount of electrons is zero, the amount of electrons is equal to or greater than the threshold value (6005), and the threshold value (6006). ) Is determined to be 1 level of electron content. The same applies to the threshold values (6007) and (6008). By such an operation of the input / output circuit, a continuous electron quantity (6001, 6002, 6003, 6004) is converted into a discrete digital quantity (6009, 6010, 6011, 6012).
 典型的には、入力がデジタル量の場合よりもアナログ量の場合の方が、LDPC符号の訂正能力は高い。このことを、図7を用いて簡単に説明する。 Typically, the LDPC code correction capability is higher when the input is an analog amount than when the input is a digital amount. This will be briefly described with reference to FIG.
 図7は、LDPC符号の訂正能力を説明するための図である。 FIG. 7 is a diagram for explaining the correction capability of the LDPC code.
 セル1の電子量(7001)は、閾値(6008)をわずかに下回っているため、レベル3と量子化される。セル2の電子量(7002)は、閾値(6008)を大きく上回っているため、レベル4と量子化される。しかし、LDPC符号の原理では、セル1の電子量(7001)は、閾値(6008)よりわずかに小さいため、実はレベル4だった可能性が高いと判断し、レベル4と訂正する。そして、セル2の電子量(7002)は、閾値を大きく上回っているので誤った可能性は小さいため、そのままにする。しかしながら、量子化された後の入力では、このような判断ができない。故に、LDPC符号の訂正能力は、入力が、デジタル量の場合よりもアナログ量の場合の方が高いのである。 Since the amount of electrons (7001) of the cell 1 is slightly below the threshold (6008), it is quantized to level 3. Since the amount of electrons (7002) in the cell 2 is significantly higher than the threshold (6008), it is quantized to level 4. However, according to the principle of the LDPC code, the electron amount (7001) of the cell 1 is slightly smaller than the threshold value (6008), so it is determined that there is a high possibility that it is actually level 4, and is corrected to level 4. Then, the amount of electrons (7002) in the cell 2 is much higher than the threshold value, so there is little possibility of an error, so it is left as it is. However, such a determination cannot be made with the input after quantization. Therefore, the correction capability of the LDPC code is higher when the input is an analog amount than when the input is a digital amount.
 アナログ量の入力を訂正することを、ソフトデコード(soft-decode)という。非特許文献4には、量子化の閾値(6005、6006、6007、6008)の幅を狭くしてアナログ入力に近い形にしてフラッシュメモリ内のデータの誤り訂正を行う例が記載されている。フラッシュメモリ内のデータの誤り訂正にLDPC符号を適用する場合、ソフトデコードが必要となる。非特許文献1には、ランク変調でデータをフラッシュメモリに書き込んだシステムにLDPC符号を適用する例が記載されている。 Correcting the input of the analog quantity is called soft decoding (soft-decode). Non-Patent Document 4 describes an example of performing error correction of data in a flash memory by narrowing the quantization threshold (6005, 6006, 6007, 6008) to be close to analog input. When the LDPC code is applied to error correction of data in the flash memory, soft decoding is necessary. Non-Patent Document 1 describes an example in which an LDPC code is applied to a system in which data is written in a flash memory by rank modulation.
 図8は、従来の記憶装置1011の構成例を示す。 FIG. 8 shows a configuration example of a conventional storage device 1011.
 図8の記憶装置1011は、不揮発性メモリ(8001)と、それを制御するメモリコントローラ(8002)とを有する。メモリコントローラ(8002)は、ECC符号化回路(8003)と、ランク変調回路(8004)と、ランク復調回路(8005)と、ECC復号化回路(8006)とを有する。 8 includes a nonvolatile memory (8001) and a memory controller (8002) for controlling the nonvolatile memory (8001). The memory controller (8002) includes an ECC encoding circuit (8003), a rank modulation circuit (8004), a rank demodulation circuit (8005), and an ECC decoding circuit (8006).
 ECC符号化回路(8003)は、入力データから冗長データを生成し、入力データと冗長データを合わせて符号語としてランク変調回路(8004)に転送する。 The ECC encoding circuit (8003) generates redundant data from the input data and transfers the input data and the redundant data together as a code word to the rank modulation circuit (8004).
 ランク変調回路(8004)は、上記の符号語を電子量のレベルに変換して、不揮発性メモリ制御回路(8005)が不揮発性メモリ(8001)のセルの電子量を変化させる。 The rank modulation circuit (8004) converts the above code word into an electron quantity level, and the nonvolatile memory control circuit (8005) changes the electron quantity of the cells of the nonvolatile memory (8001).
 メモリコントローラ(8002)が不揮発性メモリ(フラッシュメモリ)(8001)からデータを読み出すときは、不揮発性メモリ制御回路(8005)が不揮発性メモリ(フラッシュメモリ)(8001)の電子量を読み出し、ランク復調回路(8006)が前述のように電子量を数値に変換し、ECC復号化回路(8007)に転送する。 When the memory controller (8002) reads data from the nonvolatile memory (flash memory) (8001), the nonvolatile memory control circuit (8005) reads the amount of electrons in the nonvolatile memory (flash memory) (8001) and performs rank demodulation. The circuit (8006) converts the amount of electrons into a numerical value as described above and transfers it to the ECC decoding circuit (8007).
 ECC復号化回路(8007)は、得られた数値の列の誤りを、予め定められたアルゴリズムに従って訂正する。 The ECC decoding circuit (8007) corrects an error in the obtained numerical sequence according to a predetermined algorithm.
 しかし、この方式ではソフトデコードができないため、LDPC符号の訂正能力が大きく低下するという課題がある。なぜなら、ECC復号化回路(8006)は、ランク復調された後の数値だけを受け取るため、アナログ量を得られず、デジタル量だけから復号(訂正)を行わなければならないため、いわゆるソフトデコードができないからである。 However, since this method cannot perform soft decoding, there is a problem that the correction capability of the LDPC code is greatly reduced. This is because the ECC decoding circuit (8006) receives only the numerical value after rank demodulation, and therefore cannot obtain an analog quantity and must perform decoding (correction) from only the digital quantity, so that so-called soft decoding cannot be performed. Because.
 さらに、ECCが、LDPC符号でなく、Reed-Solomon符号などの代数的なECCの場合にも課題がある。以下、図9を参照しながら説明する。 Furthermore, there is a problem when the ECC is not an LDPC code but an algebraic ECC such as a Reed-Solomon code. Hereinafter, a description will be given with reference to FIG.
 図9は、セル1の電子量(9001)が3レベル、セル2(9002)の電子量が4レベル、セル3(9003)の電子量が1レベル、セル4(9004)の電子量が0レベルの例を示す。 In FIG. 9, the amount of electrons (9001) in cell 1 is 3 levels, the amount of electrons in cell 2 (9002) is 4 levels, the amount of electrons in cell 3 (9003) is 1 level, and the amount of electrons in cell 4 (9004) is 0. Examples of levels are shown.
 Reed-Solomon符号ならば、それぞれのセルの電子量を1つのシンボルとして符号化できる。すなわち、「3410」という数列を符号化する。これがランク変調されると、単なる数値「2」となる。すなわち、この数値「2」を符号化することになる。典型的には、符号長が長いほど訂正能力は高くなるので、この例のように、ランク変調によって符号長が1/4になってしまうと、訂正能力は低下してしまう。非特許文献5には、ランク変調前に符号化し、ランク変調後に訂正する方式が記載されている。 With Reed-Solomon code, the amount of electrons in each cell can be encoded as one symbol. That is, the sequence “3410” is encoded. When this is rank-modulated, it is simply a numerical value “2”. That is, this numerical value “2” is encoded. Typically, the longer the code length, the higher the correction capability. Therefore, as shown in this example, when the code length becomes ¼ due to rank modulation, the correction capability decreases. Non-Patent Document 5 describes a method of encoding before rank modulation and correcting after rank modulation.
 すなわち、ランク変調されてしまうと、デジタル情報しか得られないため、ソフトデコードができない上、符号長が短くなってしまい、訂正能力が低下することが課題である。以下、当該課題を解決するための実施例を述べる。 That is, if rank modulation is performed, only digital information can be obtained, so that soft decoding cannot be performed and the code length is shortened, resulting in a decrease in correction capability. Hereinafter, examples for solving the problem will be described.
 図1は、記憶装置(1001)の構成例を示す。 FIG. 1 shows a configuration example of the storage device (1001).
 記憶装置(1001)は、不揮発性メモリ(1002)と、メモリコントローラ(1003)と、を有する。不揮発性メモリ(1002)は、フラッシュメモリを一例とするWAMであってよい。メモリコントローラ(1003)は、ランク変調回路(1004)、ECC符号化回路(1005)、不揮発性メモリ制御回路(1007)、ECC復号化回路(1008)、ランク復調回路(1010)を含む。 The storage device (1001) includes a nonvolatile memory (1002) and a memory controller (1003). The non-volatile memory (1002) may be a WAM using a flash memory as an example. The memory controller (1003) includes a rank modulation circuit (1004), an ECC encoding circuit (1005), a nonvolatile memory control circuit (1007), an ECC decoding circuit (1008), and a rank demodulation circuit (1010).
 ECC符号化回路(1005)は、冗長部ランク変調回路(1006)を含む。ECC復調回路(1008)は、冗長部ランク復調回路(1009)を含む。また、メモリコントローラは、これら各回路を結ぶデータパス(1012)を有する。なぜなら、ランク変調を行う場合、前の状態の電子量を知る必要があるからである。 The ECC encoding circuit (1005) includes a redundant part rank modulation circuit (1006). The ECC demodulation circuit (1008) includes a redundant part rank demodulation circuit (1009). The memory controller also has a data path (1012) that connects these circuits. This is because it is necessary to know the amount of electrons in the previous state when performing rank modulation.
 不揮発性メモリ(1002)の電子量レベルの最大値をqとする。データを不揮発性メモリ(1002)に書き込むとき、当該データをランク変調回路(1004)が受け取り、変調する。このとき、上記データは、ランク変調回路(1004)によって、d…dという数字の列に変換される。dは各セルの電子量レベルを表す。 The maximum value of the amount of electrons in the nonvolatile memory (1002) is assumed to be q. When writing data to the nonvolatile memory (1002), the rank modulation circuit (1004) receives and modulates the data. At this time, the data is converted into a string of numbers d 1 d 2 ... D k by the rank modulation circuit (1004). d i represents the electron content level of each cell.
 ランク変調回路(1004)は、この数字の列をECC符号化回路(1005)に渡す。本実施例では、1シンボルlogqビットのq元LDPC符号を、ECCとして採用する。ECC符号化回路(1005)は、d…dを生成行列(図示せず)に掛けて、冗長データを生成する。しかし、冗長データは、そのままでは不揮発性メモリに書き込めない。なぜなら、ランク変調されていないからである。そこで、冗長部ランク変調回路(1006)が、上記の冗長データをランク変調して、数列r…rN―kを生成する。このランク変調された冗長データを、変調冗長データと呼んでもよい。その後、ECC符号化回路(1005)は、符号語d…d…rN―kを、不揮発性メモリ制御回路(1007)に転送する。 The rank modulation circuit (1004) passes this numeric string to the ECC encoding circuit (1005). In the present embodiment, a 1-symbol log 2 q-bit q-element LDPC code is employed as the ECC. The ECC encoding circuit (1005) multiplies d 1 d 2 ... D k by a generation matrix (not shown) to generate redundant data. However, the redundant data cannot be written in the nonvolatile memory as it is. This is because rank modulation is not performed. Therefore, the redundant part rank modulation circuit (1006) rank-modulates the redundant data to generate the sequence r 1 r 2 ... R N−k . This rank-modulated redundant data may be referred to as modulated redundant data. Thereafter, the ECC encoding circuit (1005) transfers the codewords d 1 d 2 ... D k r 1 r 2 ... R N−k to the nonvolatile memory control circuit (1007).
 上記の符号語を受け取った不揮発性メモリ制御回路(1007)は、各セルに対して電子を注入する。典型的には、セル1に対しては、レベルdまで電子を注入する。セル2に対しては、レベルdまで電子を注入する。以下同様である。 The nonvolatile memory control circuit (1007) that has received the code word injects electrons into each cell. Typically, for cell 1, to inject electrons to the level d 1. For cell 2, to inject electrons to a level d 2. The same applies hereinafter.
 次に、メモリコントローラ(1003)が、不揮発性メモリ(1002)からデータを読み込むときの動作を説明する。 Next, the operation when the memory controller (1003) reads data from the nonvolatile memory (1002) will be described.
 メモリコントローラ(1003)内の不揮発性メモリ制御回路(1007)が、不揮発性メモリ(1002)内の読み込み対象セル(図示せず)の電子量を読み取る。これを、y…yy’k+1…y’とする。y,y,…,y,y’k+1,…,y’はアナログ量である。しかし、このままでは訂正できない。なぜなら、y’k+1,y’k+2,…,y’は、冗長データそのものではなく、ランク変調された値だからである。そこで、不揮発性メモリ制御回路(1007)は、読み取った電子量(=データ)を、ECC復号化回路(1008)に転送する。 A nonvolatile memory control circuit (1007) in the memory controller (1003) reads the amount of electrons in a read target cell (not shown) in the nonvolatile memory (1002). This will be the y 1 y 2 ... y k y 'k + 1 ... y' N. y 1 , y 2 ,..., y k , y ′ k + 1 ,..., y ′ N are analog quantities. However, it cannot be corrected as it is. This is because y ′ k + 1 , y ′ k + 2 ,..., Y ′ N are not redundant data itself but rank-modulated values. Therefore, the nonvolatile memory control circuit (1007) transfers the read amount of electrons (= data) to the ECC decoding circuit (1008).
 ECC復号化回路(1008)内のランク復調回路(1009)は、y,y,…,y,y’k+1,…,y’をランク復調し、yk+1k+2…yに変換する。ECC復号化回路(1009)は、こうして得られた数値の列y…yk+1…yを訂正する。そして、ランク復調回路(1010)は、訂正されたデータを復調し、上位装置とのインタフェース(1011)を経由して、上位装置(図示せず)へ転送する。 Rank demodulation circuit in the ECC decoding circuit (1008) (1009) is, y 1, y 2, ... , y k, y 'k + 1, ..., y' ranks demodulated in N, y k + 1 y k + 2 ... y n Convert. ECC decoding circuit (1009), the column y 1 y 2 ... of values obtained in this way to correct the y k y k + 1 ... y n. Then, the rank demodulation circuit (1010) demodulates the corrected data, and transfers it to the host device (not shown) via the interface (1011) with the host device.
 次に、ECC復号化回路の動作について説明する。 Next, the operation of the ECC decoding circuit will be described.
 本実施例では、符号語の1シンボルがq値をとるため、q元LDPC符号(q-ary LDPC Code)によって復号(訂正)する。 In this embodiment, since one symbol of the code word takes a q value, it is decoded (corrected) by a q-ary LDPC code (q-ary LDPC Code).
 q=2とし、パリティ検査行列を、m×nの行列H=(hij)とする。ここで、i={1,2,…,m}、j={1,2,…,n}とする。さらに、l={0,1,2,…,p}、a={0,1,ω,ω,…,ωq―2}とする。ただし、ωは1の原始q-1乗根である。本実施例では、入力データに冗長部を付け加えた組織符号(systematic code)を採用する。 Let q = 2 p , and the parity check matrix be an m × n matrix H = (h ij ). Here, i = {1, 2,..., M} and j = {1, 2,. Furthermore, l = {0,1,2, ..., p}, a = {0,1, ω, ω 2, ..., ω q-2} to. Where ω is the primitive q-1 power root of 1. In this embodiment, a systematic code obtained by adding a redundant part to input data is employed.
 LDPC符号の復号にあたって、通信路(Channel)を想定する必要がある。q元対象通信路(q-ary Symmetric Channel)や白色ガウスノイズ通信路(Additive White Gaussian Noise Channel、以下AWGN通信路)などがある。 When decoding an LDPC code, it is necessary to assume a communication channel. q original target communication channel (q-ary Symmetric Channel) and white Gaussian noise communication channel (Additive White Gaussian Noise Channel, hereinafter referred to as AWGN communication channel).
 LDPC符号では、各通信路上でデータが誤る確率が予め判明しているという前提をおく。この意味を強調するため、上記の確率を事前確率(a priori Probability)という。事前確率の公式は通信路によって異なる。 In the LDPC code, it is assumed that the probability of erroneous data on each communication path is known in advance. In order to emphasize this meaning, the above probability is referred to as a priori probability (a priori probability). The formula for prior probabilities depends on the channel.
 受信データyのうち、y,y,…,yは、不揮発性メモリ(1002)のセルの電子量であるので、アナログ量である。本実施例では、y,y,…,yの通信路は、典型的なアナログ通信路であるAWGN通信路を仮定する。もちろん、不揮発性メモリ(1002)の誤り特性が、AWGN通信路と同じとは限らない。その場合は、不揮発性メモリ(1002)の特性を実験で測定し、相応しい通信路モデルを作り、復号に適用する必要がある。受信データのうち、yk+1,yk+2,…,yはデジタル量であるので、q元対称通信路(q-ary Symmetric Channel)を仮定する。 Among the received data y, y 1 , y 2 ,..., Y k are analog quantities because they are the amount of electrons in the cells of the nonvolatile memory (1002). In the present embodiment, it is assumed that the communication channels y 1 , y 2 ,..., Y k are AWGN communication channels that are typical analog communication channels. Of course, the error characteristics of the nonvolatile memory (1002) are not necessarily the same as those of the AWGN communication path. In that case, it is necessary to experimentally measure the characteristics of the nonvolatile memory (1002), create a suitable communication channel model, and apply it to decoding. Of the received data, y k + 1 , y k + 2 ,..., Y n are digital quantities, and a q-ary symmetric channel is assumed.
 本実施例では、LDPC符号の復号法の中で、対数領域Sum-Product法(Logarithmic Domain Sum-Product Algorithm)を用いる。対数領域Sum-Product法では、事前確率より事前対数尤度比(a priori Log-Likelihood Ratio)を用いる。受信語のうち、y,y,…,yについての事前対数尤度比は
Figure JPOXMLDOC01-appb-M000014
で与えられる。F は、j番目のシンボルが値aをとる事前対数尤度比を表す。y は、j番目の受信シンボルの2進数表現の第lビットの値を示す。aは、シンボルaの2進数表現の第lビットの値を示す。δ(x)は、Diracのデルタ関数で
Figure JPOXMLDOC01-appb-M000015
である。σは、AWGN通信路の分散(variance)で誤りの確率を示す尺度である。yk+1,yk+2,…,yに関しては、q元対称通信路を仮定する。ビット当たりの誤り確率をpとすると
Figure JPOXMLDOC01-appb-M000016
なので、事前対数尤度比は
Figure JPOXMLDOC01-appb-M000017
である。
In the present embodiment, a logarithmic domain Sum-Product method (Logarithmic Domain Sum-Product Algorithm) is used in a decoding method of an LDPC code. In the log domain Sum-Product method, a priori log likelihood ratio (a priori log-likelihood ratio) is used based on prior probabilities. Of the received words, the prior log likelihood ratio for y 1 , y 2 ,..., Y k is
Figure JPOXMLDOC01-appb-M000014
Given in. F a j represents a prior log likelihood ratio in which the j-th symbol takes the value a. y l j indicates the value of the l-th bit in the binary representation of the j-th received symbol. a l indicates the value of the l-th bit of the binary representation of the symbol a. δ (x) is the Dirac delta function
Figure JPOXMLDOC01-appb-M000015
It is. [sigma] is a scale indicating the probability of error in variance of the AWGN channel. y k + 1, y k + 2, ..., with respect to the y n, suppose q-ary symmetric channel. If the error probability per bit is p,
Figure JPOXMLDOC01-appb-M000016
So the prior log likelihood ratio is
Figure JPOXMLDOC01-appb-M000017
It is.
 q元対数領域Sum-Product法は以下のステップから構成されてよい。 The q-element logarithm domain Sum-Product method may consist of the following steps.
(1)初期化
 事後対数尤度比(a posteori logarithmic likelihood)Q ij,R ijを初期化する。それぞれのi、j、aについて以下の処理を実行する。
Figure JPOXMLDOC01-appb-M000018
このように、2通りの場合が存在するのは、データ部はアナログ量、冗長部はデジタル量だからである。
(1) Initialization Initialize a post-logarithmic likelihood ratio Q a ij and R a ij . The following processing is executed for each i, j, a.
Figure JPOXMLDOC01-appb-M000018
In this way, there are two cases because the data portion is an analog amount and the redundant portion is a digital amount.
(2)列処理
 通常のq元LDPC符号の列処理と同様である。
(2) Column processing This is the same as the column processing of a normal q-element LDPC code.
(3)行処理
 通常のq元LDPC符号の列処理と同様である。
(3) Row processing The same as row processing of a normal q-element LDPC code.
(4)一時推定語の計算
 通常のq元LDPC符号の一時推定語の計算と同様である。
(4) Calculation of temporary estimated word The calculation is the same as the calculation of the temporary estimated word of a normal q-element LDPC code.
(5)パリティチェック
 通常のq元LDPC符号のパリティチェックの計算と同様である。
(5) Parity check This is the same as the parity check calculation of a normal q-element LDPC code.
 メモリコントローラ(1001)は、予め決めた回数だけ反復しても訂正できなかったならば、一時推定語を出力して終了する。 If the memory controller (1001) has not been corrected even after repeating a predetermined number of times, it outputs a temporary estimated word and ends.
 このように、ランク変調したWAMの誤りを訂正する場合、入力にアナログ量を使うことができるため、非特許文献1と比較してLDPC符号の訂正能力を向上させることができる。 Thus, when correcting an error of rank-modulated WAM, an analog amount can be used for input, and therefore the LDPC code correction capability can be improved as compared with Non-Patent Document 1.
 図10は、実施例1に係る記憶装置(1001)におけるデータ書き込み処理の例を示すフローチャートである。 FIG. 10 is a flowchart illustrating an example of data write processing in the storage device (1001) according to the first embodiment.
 以下、1桁の数値を4セルで変調する方式の例を述べる。
・ステップ10001:処理を開始する。
・ステップ10002:記憶装置(1001)が、上位装置からデータ(10011)を受領する。
・ステップ10003:ランク変調回路(1004)が、不揮発性メモリ(1002)の書き込み対象セルの電子量を測定する。ランク変調では、どのセルに電子を注入するかを判断するために、一度書き込み対象セルの電子量を測定する必要があるからである。
・ステップ10004:ランク変調回路(1004)が、予め定められた規則に従って各セルの電子量を決定する。このとき、情報は4セルの電子量の情報(10012)となっている。そして、ランク変調回路(1004)が、電子量の情報(10012)をECC符号化回路(1005)に転送する。
・ステップ10005:ECC符号化回路(1005)は、電子量の情報(10012)に基づいて冗長データ(10013)を生成する。
・ステップ10006:冗長部ランク変調回路(1006)は、不揮発性メモリ(1002)の書き込み対象セルの電子量を測定する。ランク変調では、どのセルに電子を注入するかを判断するために、一度書き込み対象セルの電子量を測定する必要があるからである。
・ステップ10007:冗長部ランク変調回路(1006)が、予め定められた規則に従って各セルの電子量を決定する。このとき、情報は4セルの電子量の情報(10014)となっている。
・ステップ10008:ECC符号化回路(1005)は、電子量の情報(10013、10014)を不揮発性メモリ制御回路(1007)に転送する。
・ステップ10009:不揮発性メモリ制御回路(1007)は、電子量の情報(10013、10014)に従って、書き込み対象のセルに電子を注入する。
・ステップ10010:処理を終了する。
Hereinafter, an example of a method of modulating a single digit value with 4 cells will be described.
Step 10001: Start processing.
Step 10002: The storage device (1001) receives data (10011) from the host device.
Step 10003: The rank modulation circuit (1004) measures the amount of electrons in the write target cell of the nonvolatile memory (1002). This is because, in rank modulation, it is necessary to measure the amount of electrons in the write target cell once in order to determine which cell the electron is injected into.
Step 10004: The rank modulation circuit (1004) determines the amount of electrons in each cell according to a predetermined rule. At this time, the information is information on the amount of electrons in four cells (10012). Then, the rank modulation circuit (1004) transfers the information on the amount of electrons (10012) to the ECC encoding circuit (1005).
Step 10005: The ECC encoding circuit (1005) generates redundant data (10013) based on the information on the amount of electrons (10012).
Step 10006: The redundant part rank modulation circuit (1006) measures the amount of electrons in the write target cell of the nonvolatile memory (1002). This is because, in rank modulation, it is necessary to measure the amount of electrons in the write target cell once in order to determine which cell the electron is injected into.
Step 10007: The redundant part rank modulation circuit (1006) determines the amount of electrons of each cell in accordance with a predetermined rule. At this time, the information is information on the amount of electrons in four cells (10014).
Step 10008: The ECC encoding circuit (1005) transfers the information on the amount of electrons (10013, 10014) to the nonvolatile memory control circuit (1007).
Step 10009: The nonvolatile memory control circuit (1007) injects electrons into the cell to be written in accordance with the information on the amount of electrons (10013, 10014).
Step 10010: The process ends.
 以上の処理により、記憶装置(1001)の不揮発性メモリ1002にデータが書き込まれる。 Through the above processing, data is written in the nonvolatile memory 1002 of the storage device (1001).
 図11は、実施例1に係る記憶装置(1001)におけるデータ読み出し処理の例を示すフローチャートである。 FIG. 11 is a flowchart illustrating an example of data read processing in the storage device (1001) according to the first embodiment.
・ステップ11001:処理を開始する。
・ステップ11002:不揮発性メモリ制御回路(1007)は、読み出し対象セルの電子量を測定する。図11は、この測定結果において、ECCのデータ部の電子量が、2.8、4.2、1.4、1.1(11011)、冗長部の電子量が2、3、4、1(11012)である例を示す。ここで、データ部の電子量(11011)はアナログ量であり、冗長部の電子量(11012)はデジタル量である。不揮発性メモリ制御回路(1007)は、これらの情報をECC復号化回路(1008)に転送する。
・ステップ11003:ECC復号化回路(1008)に内蔵される冗長部ランク復調回路(1009)は、冗長部の電子量の情報(11012)をランク復調する。図11は、この処理により、数値「2」(11013)が得られた例を示す。
・ステップ11004:ECC復号化回路(1008)は、電子量の情報(11011)、(11013)の誤りを、上述のECC復号化回路の処理に従って訂正する。電子量の情報(11011)がアナログ量であるため、非特許文献1と比較して本実施例のECC復号化回路(1008)は、より高い訂正能力を有する。
・ステップ11005:ECC復号化回路(1008)は、訂正に成功したか否かを判断する。訂正に失敗した場合、ECC復号化回路(1008)は、その旨を上位装置に報告(ステップ11006)する。訂正に成功した場合、ECC復号化回路(1009)は、電子量の情報(11014)が得られたとする。
・ステップ11007:ECC復号化回路(1008)は、電子量の情報(11014)をランク復調回路(1010)に転送する。
・ステップ11008:ランク復調回路(1010)は、電子量の情報(11014)を数値に変換する。図11は、この処理により、数値「3」(11015)が得られた例を示す。
・ステップ11009:ランク復調回路(1010)は、その変換によって得られた数値「3」(11015)を上位装置に転送する。
・ステップ11010:処理を終了する。
Step 11001: The process is started.
Step 11002: The nonvolatile memory control circuit (1007) measures the amount of electrons in the read target cell. FIG. 11 shows that in this measurement result, the amount of electrons in the ECC data portion is 2.8, 4.2, 1.4, 1.1 (11011), and the amount of electrons in the redundant portion is 2, 3, 4, 1 An example of (11012) is shown. Here, the amount of electrons (11011) in the data portion is an analog amount, and the amount of electrons (11012) in the redundant portion is a digital amount. The nonvolatile memory control circuit (1007) transfers these pieces of information to the ECC decoding circuit (1008).
Step 11003: The redundant part rank demodulating circuit (1009) built in the ECC decoding circuit (1008) rank-demodulates the information (11012) of the electron quantity of the redundant part. FIG. 11 shows an example in which a numerical value “2” (11013) is obtained by this processing.
Step 11004: The ECC decoding circuit (1008) corrects the errors in the information (11011) and (11013) on the amount of electrons according to the processing of the ECC decoding circuit described above. Since the information on the amount of electrons (11011) is an analog amount, the ECC decoding circuit (1008) of this embodiment has a higher correction capability than that of Non-Patent Document 1.
Step 11005: The ECC decoding circuit (1008) determines whether or not the correction is successful. If the correction fails, the ECC decoding circuit (1008) reports the fact to the upper apparatus (step 11006). When the correction is successful, it is assumed that the ECC decoding circuit (1009) has obtained information on the amount of electrons (11014).
Step 11007: The ECC decoding circuit (1008) transfers the information on the amount of electrons (11014) to the rank demodulation circuit (1010).
Step 11008: The rank demodulation circuit (1010) converts the information on the amount of electrons (11014) into a numerical value. FIG. 11 shows an example in which a numerical value “3” (11015) is obtained by this processing.
Step 11009: The rank demodulation circuit (1010) transfers the numerical value “3” (11015) obtained by the conversion to the higher-level device.
Step 11010: The process ends.
 以上の処理により、記憶装置(1001)の不揮発性メモリ1002からデータが読み出される。 Through the above processing, data is read from the nonvolatile memory 1002 of the storage device (1001).
 非特許文献5では、図8と同様の構成を前提として、Reed-Solomon符号を構成し、その訂正能力などを議論している。例えば、1セルで1シンボルを表すようにランク変調したとする。このとき、符号長nシンボル、次元(dimension)(=データサイズ)kシンボルのReed-Solomon符号の最小距離(minimum distance)は、dmin=n―(k―1)である。一方、本実施例では、1セル1シンボルでReed-Solomon符号を構成できるため、最小距離は、dmin=nl―(kl―1)である。すなわち、本実施例の最小距離は、非特許文献5と比較して、約l倍大きくなる。 In Non-Patent Document 5, a Reed-Solomon code is constructed on the premise of a configuration similar to that in FIG. 8, and its correction capability is discussed. For example, assume that rank modulation is performed so that one cell represents one symbol. At this time, the minimum distance (minimum distance) of the Reed-Solomon code of code length n symbols, dimension (= data size) k symbols is d min = n− (k−1). On the other hand, in this embodiment, since a Reed-Solomon code can be configured with one symbol per cell, the minimum distance is d min = nl− (kl−1). That is, the minimum distance of the present embodiment is about 1 times larger than that of Non-Patent Document 5.
 訂正シンボル数tと最小距離との関係は、t=(dmin―1)/2で与えられる。最小距離がl倍大きくなれば、訂正能力はl/2倍大きくなる。このように、本実施例により訂正能力が向上することがわかる。 The relationship between the correction symbol number t and the minimum distance is given by t = (d min −1) / 2. If the minimum distance increases by a factor of l, the correction capability increases by a factor of l / 2. Thus, it can be seen that the correction capability is improved by this embodiment.
 図12は、実施例2に係る記憶装置(1001)におけるデータ書き込み処理の例を示すフローチャートである。 FIG. 12 is a flowchart illustrating an example of data write processing in the storage device (1001) according to the second embodiment.
 以下、1桁の数値を4セルで変調する方式の例を述べる。
・ステップ12001:処理を開始する。
・ステップ12002:記憶装置(1001)が、上位装置からデータ(10011)を受領する。
・ステップ12003:ランク変調回路(1004)が、不揮発性メモリ(1002)の書き込み対象セルの電子量を測定する。ランク変調ではどのセルに電子を注入するかを判断するために、一度書き込み対象セルの電子量を測定する必要があるからである。
・ステップ12004:ランク変調回路(1004)が、予め定められた規則に従って各セルの電子量を決定する。このとき、情報は、4セルの電子量の情報(12012)となっている。そして、ランク変調回路(1004)が、電子量の情報(12012)をECC符号化回路(1005)に転送する。
・ステップ12005:ECC符号化回路(1005)は、電子量の情報(12012)から冗長部(12013)を生成する。
・ステップ12006:冗長部ランク変調回路(1006)は、不揮発性メモリ(1002)の書き込み対象セルの電子量を測定する。ランク変調では、どのセルに電子を注入するかを判断するために、一度書き込み対象セルの電子量を測定する必要があるからである。
・ステップ12007:冗長部ランク変調回路(1006)が、予め定められた規則に従って各セルの電子量を決定する。このとき、情報は、4セルの電子量の情報(12014)となっている。
・ステップ12008:ECC符号化回路(1005)は、電子量の情報(12013、12014)を、不揮発性メモリ制御回路(1007)に転送する。
・ステップ12009:不揮発性メモリ制御回路(1007)は、電子量の情報(12013、12014)に従って、書き込み対象のセルに電子を注入する。
・ステップ12010:処理を終了する。
Hereinafter, an example of a method of modulating a single digit value with 4 cells will be described.
Step 12001: Start processing.
Step 12002: The storage device (1001) receives data (10011) from the host device.
Step 12003: The rank modulation circuit (1004) measures the amount of electrons in the write target cell of the nonvolatile memory (1002). This is because in rank modulation, it is necessary to measure the amount of electrons in the writing target cell once in order to determine which cell the electron is injected into.
Step 12004: The rank modulation circuit (1004) determines the amount of electrons in each cell according to a predetermined rule. At this time, the information is information on the amount of electrons in the four cells (12012). Then, the rank modulation circuit (1004) transfers the information on the amount of electrons (12012) to the ECC encoding circuit (1005).
Step 12005: The ECC encoding circuit (1005) generates a redundant part (12013) from the information (12012) of the electron quantity.
Step 12006: The redundant part rank modulation circuit (1006) measures the amount of electrons in the write target cell of the nonvolatile memory (1002). This is because, in rank modulation, it is necessary to measure the amount of electrons in the write target cell once in order to determine which cell the electron is injected into.
Step 12007: The redundant part rank modulation circuit (1006) determines the amount of electrons of each cell according to a predetermined rule. At this time, the information is information on the amount of electrons in four cells (12014).
Step 12008: The ECC encoding circuit (1005) transfers the information on the amount of electrons (12013, 12014) to the nonvolatile memory control circuit (1007).
Step 12009: The nonvolatile memory control circuit (1007) injects electrons into the cell to be written in accordance with the information on the amount of electrons (12013, 12014).
Step 12010: The process ends.
 以上の処理により、記憶装置(1001)のにおいてデータが書き込まれる。 Through the above processing, data is written in the storage device (1001).
 図13は、実施例2に係る記憶装置(1001)におけるデータ読み出し処理の例を示すフローチャートである。 FIG. 13 is a flowchart illustrating an example of data read processing in the storage device (1001) according to the second embodiment.
・ステップ13001:処理を開始する。
・ステップ13002:不揮発性メモリ制御回路(1007)は、読み出し対象セルの電子量を測定する。図13は、この測定結果において、ECCのデータ部の電子量が、3、4、1、1(13011)、冗長部の電子量が2、3、4、1(13012)である例を示す。データ部の電子量(13011)はデジタル量であり、冗長部の電子量(13012)もデジタル量である。不揮発性メモリ制御回路(1007)は、これらの情報をECC復号化回路(1008)に転送する。
・ステップ13003:ECC復号化回路(1008)に内蔵される冗長部ランク復調回路(1009)は、冗長部のデータの電子量の情報(13012)をランク復調する。図11は、この処理により数値「2」(13013)が得られた例を示す。
・ステップ13004:ECC復号化回路(1008)は、電子量の情報(13011、13013)の誤りを、上述のECC復号化回路の処理に従って訂正する。電子量の情報(13011)が8桁の数値であるため、符号長が長くなり、非特許文献1と比較して本実施例のECC復号化回路(1008)は、より高い訂正能力を有する。
・ステップ13005:ECC復号化回路(1008)は、訂正に成功したか否かを判断する。訂正に失敗した場合、ECC復号化回路(1008)は、その旨を上位装置に報告する(ステップ13006)。訂正に成功した場合、ECC復号化回路(1008)は、電子量の情報(13014)が得られたとする。
・ステップ13007:ECC復号化回路(1008)は、電子量の情報(13014)をランク復調回路(1010)に転送する。
・ステップ13008:ランク復調回路(1010)は、電子量の情報(13014)を数値に変換する。図11は、この処理により、数値「3」(13015)が得られた例を示す。
・ステップ13009:ランク復調回路(1010)は、その変換によって得られた数値「3」(13015)を上位装置に転送する。
・ステップ13010:処理を終了する。
Step 13001: The process is started.
Step 13002: The nonvolatile memory control circuit (1007) measures the amount of electrons in the read target cell. FIG. 13 shows an example in which the amount of electrons in the ECC data portion is 3, 4, 1, 1 (13011) and the amount of electrons in the redundant portion is 2, 3, 4, 1 (13012) in this measurement result. . The amount of electrons in the data portion (13011) is a digital amount, and the amount of electrons in the redundant portion (13012) is also a digital amount. The nonvolatile memory control circuit (1007) transfers these pieces of information to the ECC decoding circuit (1008).
Step 13003: The redundant part rank demodulating circuit (1009) built in the ECC decoding circuit (1008) rank-demodulates the information (13012) of the electron quantity of the data in the redundant part. FIG. 11 shows an example in which a numerical value “2” (13013) is obtained by this processing.
Step 13004: The ECC decoding circuit (1008) corrects the error in the information on the amount of electrons (13011, 13013) according to the processing of the ECC decoding circuit described above. Since the information (13011) of the amount of electrons is a numerical value of 8 digits, the code length becomes long, and the ECC decoding circuit (1008) of this embodiment has a higher correction capability than that of Non-Patent Document 1.
Step 13005: The ECC decoding circuit (1008) determines whether or not the correction is successful. When the correction fails, the ECC decoding circuit (1008) reports the fact to the upper apparatus (step 13006). When the correction is successful, it is assumed that the ECC decoding circuit (1008) has obtained information on the amount of electrons (13014).
Step 13007: The ECC decoding circuit (1008) transfers the information on the amount of electrons (13014) to the rank demodulation circuit (1010).
Step 13008: The rank demodulation circuit (1010) converts the information on the amount of electrons (13014) into a numerical value. FIG. 11 shows an example in which a numerical value “3” (13015) is obtained by this processing.
Step 13009: The rank demodulation circuit (1010) transfers the numerical value “3” (13015) obtained by the conversion to the host device.
Step 13010: The process ends.
 本実施例によれば、非特許文献1では1桁の数値だったところを、4桁の数値で符号語を構成できるため、符号長が長くなり、訂正能力が向上する。 According to the present embodiment, since the code word can be composed of a 4-digit numerical value from the one-digit numerical value in Non-Patent Document 1, the code length becomes long and the correction capability is improved.
 上述した実施例は、本発明の説明のための例示であり、本発明の範囲を実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。例えば、上述した実施例では、回路が実行主体あるが、ソフトウェア(プログラム)が実行主体であってもよい。 The above-described embodiments are examples for explaining the present invention, and are not intended to limit the scope of the present invention only to the embodiments. Those skilled in the art can implement the present invention in various other modes without departing from the gist of the present invention. For example, in the above-described embodiments, the circuit is the execution subject, but software (program) may be the execution subject.
 1001:記憶装置 1002:不揮発性メモリ 1003:不揮発性メモリコントローラ 1004:ランク変調回路 1005:ECC符号化回路 1006:冗長部ランク変調回路 1007:不揮発性メモリ制御回路 1008:ECC復号化回路 1009:冗長部ランク復調回路 1010:ランク復調回路 1001: Storage device 1002: Non-volatile memory 1003: Non-volatile memory controller 1004: Rank modulation circuit 1005: ECC encoding circuit 1006: Redundant part rank modulation circuit 1007: Non-volatile memory control circuit 1008: ECC decoding circuit 1009: Redundant part Rank demodulation circuit 1010: Rank demodulation circuit

Claims (9)

  1.  不揮発性メモリと、
     入力されたデータをランク変調して変調データを生成するランク変調回路と、
     前記変調データから誤り訂正符号に基づく冗長データを生成し、当該冗長データをランク変調して変調冗長データを生成するError Checking and Correcting(ECC)符号化回路と、
     前記不揮発性メモリに対して、前記変調データ及び変調冗長データのセットのライト及びリードを行うメモリ制御回路と、
     前記不揮発性メモリからリードされた変調データ及び変調冗長データのセットのうち、当該変調冗長データをランク復調して冗長データを生成し、当該冗長データを用いて変調データの誤り訂正を行うECC復号化回路と、
     誤り訂正が行われた変調データをランク復調するランク復調回路と、
    を有する記憶装置。
    Non-volatile memory;
    A rank modulation circuit that rank-modulates input data to generate modulation data;
    An error checking and correcting (ECC) encoding circuit that generates redundant data based on an error correction code from the modulated data and rank-modulates the redundant data to generate modulated redundant data;
    A memory control circuit for writing and reading the set of modulated data and modulated redundant data to the nonvolatile memory;
    ECC decoding that performs rank demodulation on the modulated redundant data to generate redundant data from the set of modulated data and modulated redundant data read from the nonvolatile memory, and performs error correction of the modulated data using the redundant data Circuit,
    A rank demodulating circuit that rank-demodulates the modulated data subjected to error correction;
    A storage device.
  2.  前記不揮発性メモリは、フラッシュメモリである
    請求項1に記載の記憶装置。
    The storage device according to claim 1, wherein the nonvolatile memory is a flash memory.
  3.  前記誤り訂正符号は、前記フラッシュメモリの1セルの電子量を1シンボルとして構成されている
    請求項2に記載の記憶装置。
    The storage device according to claim 2, wherein the error correction code is configured with the amount of electrons in one cell of the flash memory as one symbol.
  4.  前記誤り訂正符号は、低密度パリティ検査符号である
    請求項3に記載の記憶装置。
    The storage device according to claim 3, wherein the error correction code is a low density parity check code.
  5.  前記不揮発性メモリからリードされた変調データ及び変調冗長データのセットは、フラッシュメモリセルの電子量に係るアナログ量であり、
     前記ECC復号化回路は、そのアナログ量を用いて誤り訂正を行う
    請求項4に記載の記憶装置。
    The set of modulated data and modulated redundant data read from the nonvolatile memory is an analog amount related to the amount of electrons in the flash memory cell,
    The storage device according to claim 4, wherein the ECC decoding circuit performs error correction using the analog amount.
  6.  前記誤り訂正符号は、リードソロモン符号である
    請求項3に記載の記憶装置。
    The storage device according to claim 3, wherein the error correction code is a Reed-Solomon code.
  7.  前記誤り訂正符号は、多元Bose-Chaudhuri-Hocquenghem(BCH)符号である
    請求項3に記載の記憶装置。
    The storage device according to claim 3, wherein the error correction code is a multiple Bose-Chaudhuri-Hocquenhem (BCH) code.
  8.  前記誤り訂正符号は、代数幾何学符号である
    請求項3に記載の記憶装置。
    The storage device according to claim 3, wherein the error correction code is an algebraic geometric code.
  9.  記憶装置におけるデータの誤り訂正方法であって、
     前記記憶装置はコントローラと不揮発性メモリとを有し、
     前記コントローラは、
      入力されたデータをランク変調して変調データを生成し、
      前記変調データから誤り訂正符号に基づく冗長データを生成し、当該冗長データをランク変調して変調冗長データを生成し、
      前記変調データ及び変調冗長データのセットを前記不揮発性メモリにライト及びリードし、
      前記不揮発性メモリからリードされた変調データ及び変調冗長データのセットのうち、当該変調冗長データをランク復調して冗長データを生成し、当該冗長データを用いて変調データの誤り訂正を行い、
      誤り訂正が行われた変調データをランク復調する
    データの誤り訂正方法。
    An error correction method for data in a storage device, comprising:
    The storage device includes a controller and a nonvolatile memory,
    The controller is
    The input data is rank-modulated to generate modulation data,
    Generate redundant data based on an error correction code from the modulated data, rank-modulate the redundant data to generate modulated redundant data,
    Writing and reading the set of modulated data and modulated redundant data to the non-volatile memory;
    Of the set of modulated data and modulated redundant data read from the non-volatile memory, the modulated redundant data is rank demodulated to generate redundant data, and the redundant data is used to perform error correction of the modulated data,
    A data error correction method for rank demodulating modulated data subjected to error correction.
PCT/JP2015/084406 2015-12-08 2015-12-08 Storage device and data error correction method WO2017098581A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/084406 WO2017098581A1 (en) 2015-12-08 2015-12-08 Storage device and data error correction method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/084406 WO2017098581A1 (en) 2015-12-08 2015-12-08 Storage device and data error correction method

Publications (1)

Publication Number Publication Date
WO2017098581A1 true WO2017098581A1 (en) 2017-06-15

Family

ID=59012835

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/084406 WO2017098581A1 (en) 2015-12-08 2015-12-08 Storage device and data error correction method

Country Status (1)

Country Link
WO (1) WO2017098581A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113487036A (en) * 2021-06-24 2021-10-08 浙江大学 Distributed training method and device of machine learning model, electronic equipment and medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090132895A1 (en) * 2007-11-20 2009-05-21 California Institute Of Technology Error correcting codes for rank modulation
US20130121084A1 (en) * 2011-11-10 2013-05-16 Sandisk Technologies Inc. Method and apparatus to provide data including hard bit data and soft bit data to a rank modulation decoder
WO2013134735A1 (en) * 2012-03-08 2013-09-12 California Institute Of Technology Rank-modulation rewriting codes for flash memories

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090132895A1 (en) * 2007-11-20 2009-05-21 California Institute Of Technology Error correcting codes for rank modulation
US20130121084A1 (en) * 2011-11-10 2013-05-16 Sandisk Technologies Inc. Method and apparatus to provide data including hard bit data and soft bit data to a rank modulation decoder
WO2013134735A1 (en) * 2012-03-08 2013-09-12 California Institute Of Technology Rank-modulation rewriting codes for flash memories

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113487036A (en) * 2021-06-24 2021-10-08 浙江大学 Distributed training method and device of machine learning model, electronic equipment and medium
CN113487036B (en) * 2021-06-24 2022-06-17 浙江大学 Distributed training method and device of machine learning model, electronic equipment and medium

Similar Documents

Publication Publication Date Title
KR101738173B1 (en) Method and system for adaptive coding in flash memories
US9070453B2 (en) Multiple programming of flash memory without erase
US7533328B2 (en) Method of error correction in a multi-bit-per-cell flash memory
US8671327B2 (en) Method and system for adaptive coding in flash memories
US9294132B1 (en) Dual-stage data decoding for non-volatile memories
US9106264B2 (en) Encoding and decoding in flash memories using convolutional-type low-density parity check codes
US9983808B2 (en) NAND flash reliability with rank modulation
US20160274971A1 (en) Ldpc decoder, semiconductor memory system and operating method thereof
US20100223538A1 (en) Semiconductor memory apparatus and method of decoding coded data
WO2009095902A2 (en) Systems and methods for handling immediate data errors in flash memory
US8839075B2 (en) Interference-aware assignment of programming levels in analog memory cells
JP7039298B2 (en) Memory system
US20210211142A1 (en) Decoding device and decoding method
KR102556479B1 (en) Ldpc decoder, semiconductor memory system and operating method thereof
KR20110028228A (en) Error correction for multilevel flash memory
US9171629B1 (en) Storage device, memory controller and memory control method
US20150317203A1 (en) Code-Based Read Control for Data Storage Devices
KR20210115961A (en) Ldpc decoder and operating method thereof
JP2019057812A (en) Memory system
US9607690B2 (en) High sum-rate write-once memory
WO2017098581A1 (en) Storage device and data error correction method
JP2013045428A (en) Memory device and method of controlling memory device
KR20200098964A (en) Controller and operating method thereof
KR20230019573A (en) Controller and operation method thereof
US11263079B2 (en) Endurance modulation for flash storage

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15910198

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15910198

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP