US20180189136A1 - Method for performing data management in memory device, associated memory device and controller thereof - Google Patents
Method for performing data management in memory device, associated memory device and controller thereof Download PDFInfo
- Publication number
- US20180189136A1 US20180189136A1 US15/654,735 US201715654735A US2018189136A1 US 20180189136 A1 US20180189136 A1 US 20180189136A1 US 201715654735 A US201715654735 A US 201715654735A US 2018189136 A1 US2018189136 A1 US 2018189136A1
- Authority
- US
- United States
- Prior art keywords
- matrix
- data
- parity
- predetermined
- check
- Prior art date
- Legal status (The legal status 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 status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1024—Identification of the type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
Definitions
- the present invention relates to flash memory access, and more particularly, to performing data management in a memory device.
- NAND flash memories may comprise single level cell (SLC) and multiple level cell (MLC) flash memories.
- SLC flash memory each transistor used as a memory cell may have any of two electrical charge values, respectively representing the logic values 0 and 1.
- the storage ability of each transistor used as a memory cell in an MLC flash memory may be fully utilized, where the transistor may be driven by a voltage higher than that in the SLC flash memory, and different voltage levels can be utilized to record information of at least two bits (e.g. 00, 01, 11, or 10).
- the recording density of the MLC flash memory may reach at least twice the recording density of the SLC flash memory, and is therefore preferred by manufacturers of NAND flash memories.
- the lower cost and larger capacity of the MLC flash memory means it is more likely to be applied in portable memory devices.
- the MLC flash memory does have instability issues, however.
- a controller of the flash memory is usually configured to have management mechanisms to properly manage the access of data.
- An objective of the present invention is to provide a memory device, a method for performing data management in the memory device, and an associated controller, in order to solve the problems of the related arts.
- Another objective of the present invention is to provide a memory device, a method for performing data management in the memory device, and an associated controller, which can enhance the performance of the memory device.
- At least one embodiment of the present invention provides a method for performing data management in a memory device.
- the memory device comprises a non-volatile memory, the non-volatile memory comprising at least one non-volatile memory chip.
- the method may comprise: receiving a set of data from a host device positioned outside the memory device; encoding the set of data according to a first sub-matrix of a predetermined parity-check matrix to generate a partial parity-check code; performing post-processing upon the partial parity-check code according to a predetermined post-processing matrix to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix; and writing a codeword of the set of data into a non-volatile memory to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the
- the present invention also provides a memory device, and the memory device comprises a non-volatile memory and a controller.
- the non-volatile memory is arranged to store information, wherein the non-volatile memory comprises at least one non-volatile memory chip.
- the controller is coupled to the non-volatile memory, and the controller is arranged to perform data management in the memory device, wherein: the controller receives a set of data from a host device positioned outside the memory device; the controller encodes the set of data according to a first sub-matrix of a predetermined parity-check matrix to generate a partial parity-check code; the controller performs post-processing upon the partial parity-check code according to a predetermined post-processing matrix to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix; and the controller writes a codeword of the set of data into the non-volatile memory to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
- the present invention also provides a controller of a memory device.
- the memory device comprises the controller and a non-volatile memory.
- the non-volatile memory comprises at least one non-volatile memory chip
- the controller comprises a processing circuit and a data protection circuit.
- the processing circuit is arranged to control the controller to receive a set of data from a host device positioned outside the memory device.
- the data protection circuit is coupled to the processing circuit, and is arranged to perform error correction.
- the data protection circuit encodes the set of data according to a first sub-matrix of a predetermined parity-check matrix to generate a partial parity-check code.
- the data protection circuit performs post-processing upon the partial parity-check code according to a predetermined post-processing matrix to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix.
- the processing circuit controls the controller to write a codeword of the set of data into the non-volatile memory to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
- the present invention may properly perform memory access management upon the data accessed by the controller, which thereby reduces the error rate. Further, implementing according to the embodiments of the present invention will not greatly raise the cost.
- FIG. 1 is a diagram of a memory device and a host device according to a first embodiment of the present invention.
- FIG. 2A illustrates a local page address linking table in a block of a flash chip.
- FIG. 2B compares the one-dimensional array illustration and the two-dimensional array illustration of the local page address linking table shown in FIG. 2A .
- FIG. 3 is a flowchart of a method for performing data management in a memory device according to an embodiment of the present invention.
- FIG. 4 illustrates the sizes of related matrices according to an embodiment of the present invention.
- FIG. 5 illustrates a coding circuit according to an embodiment of the present invention.
- FIG. 1 is a diagram of a memory device 100 and a host device 200 according to a first embodiment of the present invention.
- the memory device 100 may be a portable memory device (e.g. a memory card conforming to the SD/MMC, CF, MS or XD specification) or a solid state drive (SSD).
- examples of the host device 200 may comprise (but are not limited to): a multifunctional mobile phone, tablet, wearable device, and a personal computer.
- the memory device 100 may comprise a controller and a non-volatile memory, where the non-volatile memory is arranged to store information, the controller is arranged to access the non-volatile memory, and the non-volatile memory may comprise at least one non-volatile memory chip (e.g. one or more non-volatile memory chips).
- the controller may be a memory controller 110 , and the non-volatile memory may be a flash memory 120 .
- the flash memory 120 may comprise at least one flash memory chip (e.g. one or more flash memory chips), and the memory controller 110 may be arranged to access the flash memory 120 . As shown in FIG.
- the memory controller 110 may comprise a processing circuit such as a microprocessor 112 , a storage unit (e.g. a read-only memory (ROM)) 112 M, a control logic circuit 114 , a buffer memory 116 , and a transmission interface circuit 118 , where the above components may be coupled to one another via a bus.
- the buffer memory 116 is implemented by a random access memory (RAM).
- the read-only memory 112 M of this embodiment is arranged to store a program code 112 C, and the microprocessor 112 is arranged to execute the program code 112 C to control the access of the flash memory 120 .
- the program code 112 C may be stored in the buffer memory 116 or any type of memory.
- a data protection circuit 114 DP in the control logic circuit 114 may protect data and/or perform error correction, and the transmission interface circuit 118 may conform to a specific communications specification (e.g. the Serial Advanced Technology Attachment (SATA) specification, or Universal Serial Bus (USB)) specification), and may perform communications according to the specific communications specification.
- a specific communications specification e.g. the Serial Advanced Technology Attachment (SATA) specification, or Universal Serial Bus (USB) specification
- the host device 200 may transmit commands and corresponding logical addresses to the memory controller 110 to access the memory device 100 .
- the memory controller 110 receives the commands and the logical addresses, and controls the flash memory 120 to perform reading, writing/programing or erasing upon the memory units having physical addresses within the flash memory 120 , where the physical addresses correspond to the logical addresses.
- FIG. 2A illustrates a local page address linking table in a block of a flash chip 0, where the flash chip 0 may be an example of the flash memory chip mentioned above.
- the flash chip 0 comprises a plurality of blocks 0, 1, 2, . . . , and M.
- a block is used as an erasing unit. In other words, when there is a need for erasing data, the microprocessor 112 may simultaneously erase all data stored in the block.
- a block such as the block 0 shown in FIG. 2A , may comprise a plurality of pages.
- the block 0 of the flash chip 0 comprises 128 pages.
- the pages are divided into two areas, where one is a data area for storing data, and the other is a table area for storing a local page address linking table 0.
- the pages in the data area of the block may be called the data pages of the block, where any of the data pages may comprise a data byte region DBR and a spare byte region SBR.
- the page count of the data area and the page count of the table area may be set according to requirements.
- the pages 0, 1, 2, . . . , 126 may be arranged to store data, and the remaining page in the block may be arranged to store the local page address linking table 0.
- the data area may have less than 127 pages, and the table area may comprise two or more pages.
- the respective page counts in the block, the data area and the table area may vary.
- one page is a programming/writing unit. In other words, when programming writing data is required, the microprocessor 112 may program/write a page of data into one page.
- each block in the flash memory 120 shown in FIG. 1 may have a local page address linking table. For brevity, only the local page address linking table 0 of the block 0 of the flash chip 0 is illustrated in FIG. 2A since the functions and associated operations of the local page address linking tables of the blocks are similar to each other.
- the creation time of the local page address linking table 0 is the time point when all data pages in the block 0 are written (i.e. fully programmed).
- the microprocessor 112 may temporarily store a temporary local page address linking table 0 into the random access memory.
- the microprocessor 112 may update the temporary local page address linking table 0.
- the ranking of a field (or entry) in the temporary/non-temporary local page address linking table represents a physical page address, and the content in this field represents an associated logical page address.
- the illustrative table location (i p , j p ) corresponding to the (i p *4+j p ) th field represents a physical page address PPN.
- the physical page address PPN can be expressed as follows:
- PPN (PBN*DPC+ i p *4+ j p );
- PBN physical block number of the above-discussed physical block
- DPC represents the data page count of each block (the data page count is 127 in this embodiment).
- the illustrative table location i p corresponding to the i p th field represents a physical page address (PBN*DPC+i p ). That is, for this one-dimensional array illustration, the above equation can be rewritten as follows:
- PPN (PBN*DPC+ i p ).
- the microprocessor 112 may write the data to the data byte region DBR of the page 0 of the block 0 of the flash chip 0, write the logical page address 0x0002 to the spare byte region SBR of the page 0 of the block 0 of the flash chip 0, and also write the logical page address 0x0002 to the first field of the temporary local page address linking table 0, in order to indicate that the logical page address 0x0002 is linked/mapped to the page 0 of the block 0 of the flash chip 0, where the physical page address thereof is 0x0000.
- the rest may be deduced by analogy.
- the microprocessor 112 may copy the latest version of the temporary local page address linking table 0 in order to create the local page address linking table 0.
- the logical page addresses ⁇ 0x0002, 0x0001, 0x0002, 0x0005, 0x0003, 0x0007, 0x0010, 0x0008, . . . , 0x0000, 0x0009, 0x0004 ⁇ may be taken as an example of the logical addresses.
- the logical addresses may vary.
- the range of the logical page addresses in a local page address linking table may exceed the page count in a block (e.g. the block 0).
- the microprocessor 112 may create a global page address linking table in the random access memory according to multiple local page address linking tables respectively corresponding to multiple blocks, in order to record/update the relationships between the physical addresses and the logical addresses.
- the memory controller 110 may perform data management in the memory device 100 to properly solve problems in the related arts without introducing unwanted side effects, or in a way that is less likely to introduce a side effect.
- the memory controller 110 may provide one or more types of error correction mechanisms to the memory device 100 .
- the memory controller 110 may utilize a low-density parity-check (LDPC) code to protect data and/or perform error correction.
- LDPC low-density parity-check
- FIG. 3 is a flowchart of a method 300 for performing data management in a memory device according to an embodiment of the present invention, where the method 300 is applicable to the memory device 100 , and is applicable to the aforementioned controller such as the memory controller 110 .
- the memory controller 110 may receive a set of data m from the host device 200 positioned outside the memory device 100 .
- the host device 200 may transmit a writing command to the memory device 100 , to request the memory device 100 to store the associated write data.
- the microprocessor 112 may control the memory controller 110 to receive the write data from the host device 200 , where the write data may comprise at least one set of data (e.g. one or more sets of data) such as a plurality of sets of data ⁇ m ⁇ , and the sets of data ⁇ m ⁇ comprise the set of data m.
- the memory controller 110 may encode the set of data m according to a first sub-matrix H 1 of a predetermined parity-check matrix H, in order to generate a partial parity-check code ppc.
- the data protection circuit 114 DP may encode the one or more sets of data such as the sets of data ⁇ m ⁇ according to the first sub-matrix H 1 to generate one or more associated partial parity-check codes such as a plurality of partial parity-check codes ⁇ ppc ⁇ , respectively, where the partial parity-check codes ⁇ ppc ⁇ comprise the partial parity-check code ppc.
- the memory controller 110 may perform post-processing upon the partial parity-check code ppc according to a predetermined post-processing matrix J, in order to generate the parity-check code p of the set of data m, where the predetermined post-processing matrix J is not equivalent to any inverse matrix ((H 2 ) T ) ⁇ 1 of the transpose matrix (H 2 ) T of a second sub-matrix H 2 of the predetermined parity-check matrix H, if the inverse matrix ((H 2 ) T ) ⁇ 1 mentioned above exists.
- the predetermined post-processing matrix J is not equivalent to ((H 2 ) T ) ⁇ 1 .
- the predetermined post-processing matrix J will not be any derivative of the transpose matrix (H 2 ) T .
- the data protection circuit 114 DP may perform post-processing upon the one or more partial parity-check code such as the partial parity-check codes ⁇ ppc ⁇ according to the predetermined post-processing matrix J to generate one or more associated parity-check codes such as a plurality of parity-check codes ⁇ p ⁇ of the sets of data ⁇ m ⁇ , respectively, where the parity-check codes ⁇ p ⁇ comprise the parity-check code p.
- the data protection circuit 114 DP may perform post-processing upon the one or more partial parity-check code such as the partial parity-check codes ⁇ ppc ⁇ according to the predetermined post-processing matrix J to generate one or more associated parity-check codes such as a plurality of parity-check codes ⁇ p ⁇ of the sets of data ⁇ m ⁇ , respectively, where the parity-check codes ⁇ p ⁇ comprise the parity-check code p.
- the memory controller 110 may write a codeword c of the set of data m into the non-volatile memory (e.g. the flash memory 120 ), to allow the memory device 100 to perform error correction when reading the set of data m from the non-volatile memory, where the codeword c comprises the set of data m and the parity-check code p.
- the non-volatile memory e.g. the flash memory 120
- the microprocessor 112 may control the memory controller 110 to write one or more associated codewords such as a plurality of codewords ⁇ c ⁇ of the write data into the non-volatile memory, to allow the memory device 100 to perform error correction when reading the write data from the non-volatile memory, where the codewords ⁇ c ⁇ comprise the sets of data ⁇ m ⁇ and the parity-check codes ⁇ p ⁇ .
- codewords ⁇ c ⁇ comprise the sets of data ⁇ m ⁇ and the parity-check codes ⁇ p ⁇ .
- the controller such as the memory controller 110 (e.g. the data protection circuit 114 DP), may perform a multiplication operation upon the set of data m and the predetermined coding transformation matrix G (e.g. m ⁇ G) to generate the codeword c, and may perform a multiplication operation upon the set of data m and a sub-matrix D of the predetermined coding transformation matrix G (e.g. m ⁇ D), in order to generate the parity-check code p.
- the controller such as the memory controller 110 (e.g. the data protection circuit 114 DP), may generate the parity-check code p according to the following equation:
- the predetermined parity-check matrix H in Step 320 is not the predetermined coding transformation matrix G
- the predetermined post-processing matrix J in Step 330 is not the predetermined coding transformation matrix G.
- the data protection circuit 114 DP adopts the first sub-matrix H 1 of the predetermined parity-check matrix H (rather than the predetermined coding transformation matrix G) during generation of the partial parity-check code ppc, and adopts the predetermined post-processing matrix J (rather than the predetermined coding transformation matrix G) during generation of the parity-check code p.
- the predetermined parity-check matrix H in Step 320 is not the predetermined coding transformation matrix G
- the predetermined post-processing matrix J in Step 330 is not the predetermined coding transformation matrix G.
- the memory controller 110 may generate the parity-check code p.
- the predetermined coding transformation matrix G and the predetermined parity-check matrix H are null space with respect to each other.
- the set of data m may comprise k bits and be denoted as the one-dimensional matrix (m) 1 ⁇ k
- the codeword c may comprise n bits and be denoted as the one-dimensional matrix (c) 1 ⁇ n
- the parity-check code p may comprise (n ⁇ k) bits and be denoted as the one-dimensional matrix (p) 1 ⁇ (n ⁇ k ), where k and n are positive integers and n>k.
- the predetermined coding transformation matrix G may be denoted as the two-dimensional matrix (G) k ⁇ n
- the predetermined parity-check matrix H may be denoted as the two-dimensional matrix (H) (n ⁇ k) ⁇ n .
- the set of data m, the codeword c and the parity-check code p may be denoted as the one-dimensional matrix (m) 1 ⁇ k , the one-dimensional matrix (c) 1 ⁇ n and the one-dimensional matrix (p) 1 ⁇ (n ⁇ k) , respectively, and the predetermined parity-check matrix H may be denoted as the two-dimensional matrix (H) (n ⁇ k) ⁇ n .
- the second sub-matrix H 2 may be a non-full rank matrix, where the inverse matrix ((H 2 ) T ) ⁇ 1 of the transpose matrix (H 2 ) T of the second sub-matrix H 2 does not exist.
- the method 300 shown in FIG. 3 may enhance various performance of the data protection circuit 114 DP, such as the performance of encoding.
- FIG. 4 illustrates the sizes of related matrices according to an embodiment of the present invention.
- the notations “k” and “n” may represent the bit count of the set of data m and the bit count of the codeword c, respectively.
- the bit count of the parity-check code p is equal to the bit count n of the codeword c minus the bit count k of the set of data m; this can be denoted as the difference value (n ⁇ k).
- the size of the predetermined parity-check matrix H is equal to the product of the difference value (n ⁇ k) and the bit count n of the codeword c; this can be denoted as ((n ⁇ k)*n).
- the size of the first sub-matrix H 1 is equal to the product of the difference value (n ⁇ k) and the bit count k of the set of data m; this can be denoted as ((n ⁇ k)*k).
- the size of the second sub-matrix H 2 is equal to the square of the difference value (n ⁇ k); this can be denoted as ((n ⁇ k)*(n ⁇ k)).
- the memory controller 110 may read the codeword c from the non-volatile memory (e.g. the flash memory 120 ) in order to generate the readout data of the codeword c.
- the memory controller 110 e.g. the data protection circuit 114 DP
- the data protection circuit 114 DP may comprise a read-only memory for storing the predetermined parity-check matrix H.
- the predetermined parity-check matrix H may be stored in the read-only memory 112 M or any of other memories.
- the memory controller 110 e.g.
- the processing circuit such as the microprocessor 112
- the processing circuit may control the memory device 100 to output the set of data m carried by the readout data; otherwise, the data protection circuit 114 DP may perform error correction according to the readout data in order to recover the set of data m.
- the microprocessor 112 may control the memory device 100 to output the set of data m (e.g. the set of data m carried by the readout data, or the set of data m recovered via the error correction).
- FIG. 5 illustrates a coding circuit 500 according to an embodiment of the present invention, where the coding circuit 500 may be positioned in the data protection circuit 114 DP shown in FIG. 1 .
- the coding circuit 500 may comprise a first sub-matrix generator 510 (which may also be referred to as the H 1 generator in this embodiment), a multiplication circuit 512 and a post-processing circuit 520 .
- the first sub-matrix generator 510 may comprise a read-only memory storing the first sub-matrix H 1 .
- the first sub-matrix generator 510 may output the elements of the first sub-matrix H 1 to the multiplication circuit 512 according to a predetermined order.
- the post-processing circuit 520 may perform post-processing upon the partial parity-check code ppc according to the predetermined post-processing matrix J, in order to generate the parity-check code p.
- the post-processing may comprise a multiplication operation (e.g. ppc ⁇ J) as well as follow-up operations.
- the post-processing may be denoted as f(ppc ⁇ J), where the symbol f( ) may represent the above-mentioned follow-up operations.
- the architecture shown in FIG. 5 may vary.
- the architecture shown in FIG. 1 and the method 300 shown in FIG. 3 may vary.
- the post-processing may comprise a randomizing operation, a data protection operation similar to that of a redundant array of independent disks (RAID), and any linear transformation, where the post-processing circuit 520 may comprise the associated sub-circuits such as a randomizer circuit, etc.
- the architecture for decoding may be modified correspondingly.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
A method for performing data management in a memory device includes: receiving a set of data from a host device positioned outside the memory device; encoding the set of data according to a first sub-matrix of a predetermined parity-check matrix to generate a partial parity-check code; performing post-processing upon the partial parity-check code according to a predetermined post-processing matrix to generate a parity-check code of the set of data, where the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix; and writing/programming a codeword of the set of data into a non-volatile memory of the memory device to allow the memory device to perform error correction when reading the set of data from the non-volatile memory. An associated memory device and a controller thereof are also provided.
Description
- The present invention relates to flash memory access, and more particularly, to performing data management in a memory device.
- Developments in memory technology have led to the wide application of portable memory devices, such as memory cards which conform to the SD/MMC, CF, MS and XD specifications, respectively. Improving access control of memories in these portable memory devices remains an issue to be solved in the art.
- NAND flash memories may comprise single level cell (SLC) and multiple level cell (MLC) flash memories. In an SLC flash memory, each transistor used as a memory cell may have any of two electrical charge values, respectively representing the
logic values - Compared with the SLC flash memory, the lower cost and larger capacity of the MLC flash memory means it is more likely to be applied in portable memory devices. The MLC flash memory does have instability issues, however. To ensure that access control of the flash memory in the portable memory device meets related specifications, a controller of the flash memory is usually configured to have management mechanisms to properly manage the access of data.
- Related art memory devices with the above management mechanisms still have some disadvantages. The error rate of the MLC flash memory may be greatly increased under some circumstances, such that traditional error correction mechanisms are unable to deal with the resultant burst error. Hence, there is a need for a novel memory access design having both error correction mechanism and data access mechanism.
- An objective of the present invention is to provide a memory device, a method for performing data management in the memory device, and an associated controller, in order to solve the problems of the related arts.
- Another objective of the present invention is to provide a memory device, a method for performing data management in the memory device, and an associated controller, which can enhance the performance of the memory device.
- At least one embodiment of the present invention provides a method for performing data management in a memory device. The memory device comprises a non-volatile memory, the non-volatile memory comprising at least one non-volatile memory chip. The method may comprise: receiving a set of data from a host device positioned outside the memory device; encoding the set of data according to a first sub-matrix of a predetermined parity-check matrix to generate a partial parity-check code; performing post-processing upon the partial parity-check code according to a predetermined post-processing matrix to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix; and writing a codeword of the set of data into a non-volatile memory to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
- In addition to the above method, the present invention also provides a memory device, and the memory device comprises a non-volatile memory and a controller. The non-volatile memory is arranged to store information, wherein the non-volatile memory comprises at least one non-volatile memory chip. The controller is coupled to the non-volatile memory, and the controller is arranged to perform data management in the memory device, wherein: the controller receives a set of data from a host device positioned outside the memory device; the controller encodes the set of data according to a first sub-matrix of a predetermined parity-check matrix to generate a partial parity-check code; the controller performs post-processing upon the partial parity-check code according to a predetermined post-processing matrix to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix; and the controller writes a codeword of the set of data into the non-volatile memory to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
- In addition to the above method, the present invention also provides a controller of a memory device. The memory device comprises the controller and a non-volatile memory. The non-volatile memory comprises at least one non-volatile memory chip, and the controller comprises a processing circuit and a data protection circuit. The processing circuit is arranged to control the controller to receive a set of data from a host device positioned outside the memory device. The data protection circuit is coupled to the processing circuit, and is arranged to perform error correction. The data protection circuit encodes the set of data according to a first sub-matrix of a predetermined parity-check matrix to generate a partial parity-check code. The data protection circuit performs post-processing upon the partial parity-check code according to a predetermined post-processing matrix to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix. The processing circuit controls the controller to write a codeword of the set of data into the non-volatile memory to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
- By properly performing data management, the present invention may properly perform memory access management upon the data accessed by the controller, which thereby reduces the error rate. Further, implementing according to the embodiments of the present invention will not greatly raise the cost.
- These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
-
FIG. 1 is a diagram of a memory device and a host device according to a first embodiment of the present invention. -
FIG. 2A illustrates a local page address linking table in a block of a flash chip. -
FIG. 2B compares the one-dimensional array illustration and the two-dimensional array illustration of the local page address linking table shown inFIG. 2A . -
FIG. 3 is a flowchart of a method for performing data management in a memory device according to an embodiment of the present invention. -
FIG. 4 illustrates the sizes of related matrices according to an embodiment of the present invention. -
FIG. 5 illustrates a coding circuit according to an embodiment of the present invention. -
FIG. 1 is a diagram of amemory device 100 and ahost device 200 according to a first embodiment of the present invention. Thememory device 100 may be a portable memory device (e.g. a memory card conforming to the SD/MMC, CF, MS or XD specification) or a solid state drive (SSD). In addition, examples of thehost device 200 may comprise (but are not limited to): a multifunctional mobile phone, tablet, wearable device, and a personal computer. According to this embodiment, thememory device 100 may comprise a controller and a non-volatile memory, where the non-volatile memory is arranged to store information, the controller is arranged to access the non-volatile memory, and the non-volatile memory may comprise at least one non-volatile memory chip (e.g. one or more non-volatile memory chips). The controller may be amemory controller 110, and the non-volatile memory may be aflash memory 120. Theflash memory 120 may comprise at least one flash memory chip (e.g. one or more flash memory chips), and thememory controller 110 may be arranged to access theflash memory 120. As shown inFIG. 1 , thememory controller 110 may comprise a processing circuit such as amicroprocessor 112, a storage unit (e.g. a read-only memory (ROM)) 112M, acontrol logic circuit 114, abuffer memory 116, and atransmission interface circuit 118, where the above components may be coupled to one another via a bus. Thebuffer memory 116 is implemented by a random access memory (RAM). The read-only memory 112M of this embodiment is arranged to store aprogram code 112C, and themicroprocessor 112 is arranged to execute theprogram code 112C to control the access of theflash memory 120. Note that, in some examples, theprogram code 112C may be stored in thebuffer memory 116 or any type of memory. Further, a data protection circuit 114DP in thecontrol logic circuit 114 may protect data and/or perform error correction, and thetransmission interface circuit 118 may conform to a specific communications specification (e.g. the Serial Advanced Technology Attachment (SATA) specification, or Universal Serial Bus (USB)) specification), and may perform communications according to the specific communications specification. - In this embodiment, the
host device 200 may transmit commands and corresponding logical addresses to thememory controller 110 to access thememory device 100. Thememory controller 110 receives the commands and the logical addresses, and controls theflash memory 120 to perform reading, writing/programing or erasing upon the memory units having physical addresses within theflash memory 120, where the physical addresses correspond to the logical addresses. -
FIG. 2A illustrates a local page address linking table in a block of aflash chip 0, where theflash chip 0 may be an example of the flash memory chip mentioned above. As shown inFIG. 2A , theflash chip 0 comprises a plurality ofblocks microprocessor 112 may simultaneously erase all data stored in the block. In addition, a block, such as theblock 0 shown inFIG. 2A , may comprise a plurality of pages. For example, theblock 0 of theflash chip 0 comprises 128 pages. In the block (such as block 0), the pages are divided into two areas, where one is a data area for storing data, and the other is a table area for storing a local page address linking table 0. The pages in the data area of the block may be called the data pages of the block, where any of the data pages may comprise a data byte region DBR and a spare byte region SBR. - According to this embodiment, the page count of the data area and the page count of the table area may be set according to requirements. For example, the
pages microprocessor 112 may program/write a page of data into one page. According to this embodiment, each block in theflash memory 120 shown inFIG. 1 may have a local page address linking table. For brevity, only the local page address linking table 0 of theblock 0 of theflash chip 0 is illustrated inFIG. 2A since the functions and associated operations of the local page address linking tables of the blocks are similar to each other. - In this embodiment, the creation time of the local page address linking table 0 is the time point when all data pages in the
block 0 are written (i.e. fully programmed). Before the data page in theblock 0 are fully programed, themicroprocessor 112 may temporarily store a temporary local page address linking table 0 into the random access memory. When the linking relationship between a physical page address and a logical page address changes in theblock 0, themicroprocessor 112 may update the temporary local page address linking table 0. - According to this embodiment, the ranking of a field (or entry) in the temporary/non-temporary local page address linking table (e.g. the temporary local page address linking table 0 or the local page address linking table 0) represents a physical page address, and the content in this field represents an associated logical page address. Assume that ip and jp are the row number and the column number of the illustrative table location (ip, jp) of the temporary/non-temporary local page address linking table shown in
FIG. 2A , respectively, where ip may be a non-negative integer (e.g. ip=0, 1, . . . ), and jp may be a non-negative integer (e.g. jp=0, 1, . . . ). In this two-dimensional array illustration of the temporary/non-temporary local page address linking table shown inFIG. 2A , the illustrative table location (ip, jp) corresponding to the (ip*4+jp)th field represents a physical page address PPN. The physical page address PPN can be expressed as follows: -
PPN=(PBN*DPC+i p*4+j p); - where the parameter PBN represents the physical block number of the above-discussed physical block (e.g. PBN=0, 1, 2, . . . , corresponding to the
blocks FIG. 2B . Given that ip still represents the row number and ip=0, 1, . . . , in this one-dimensional array illustration shown in the right half ofFIG. 2B , for the temporary/non-temporary local page address linking table of the block PBN, the illustrative table location ip corresponding to the ip th field represents a physical page address (PBN*DPC+ip). That is, for this one-dimensional array illustration, the above equation can be rewritten as follows: -
PPN=(PBN*DPC+i p). - When the
host device 200 transmits a command to themicroprocessor 112 in order to write some data at a logical page address 0x0002, themicroprocessor 112 may write the data to the data byte region DBR of thepage 0 of theblock 0 of theflash chip 0, write the logical page address 0x0002 to the spare byte region SBR of thepage 0 of theblock 0 of theflash chip 0, and also write the logical page address 0x0002 to the first field of the temporary local page address linking table 0, in order to indicate that the logical page address 0x0002 is linked/mapped to thepage 0 of theblock 0 of theflash chip 0, where the physical page address thereof is 0x0000. The rest may be deduced by analogy. In this way, when all data pages in theblock 0 are written, themicroprocessor 112 may copy the latest version of the temporary local page address linking table 0 in order to create the local page address linking table 0. Note that the logical page addresses {0x0002, 0x0001, 0x0002, 0x0005, 0x0003, 0x0007, 0x0010, 0x0008, . . . , 0x0000, 0x0009, 0x0004} may be taken as an example of the logical addresses. According to some embodiments, the logical addresses may vary. - According to some embodiments, the range of the logical page addresses in a local page address linking table (e.g. the local page address linking table 0) may exceed the page count in a block (e.g. the block 0).
- According to some embodiments, the
microprocessor 112 may create a global page address linking table in the random access memory according to multiple local page address linking tables respectively corresponding to multiple blocks, in order to record/update the relationships between the physical addresses and the logical addresses. - The
memory controller 110 may perform data management in thememory device 100 to properly solve problems in the related arts without introducing unwanted side effects, or in a way that is less likely to introduce a side effect. For example, thememory controller 110 may provide one or more types of error correction mechanisms to thememory device 100. According to some embodiments, thememory controller 110 may utilize a low-density parity-check (LDPC) code to protect data and/or perform error correction. -
FIG. 3 is a flowchart of amethod 300 for performing data management in a memory device according to an embodiment of the present invention, where themethod 300 is applicable to thememory device 100, and is applicable to the aforementioned controller such as thememory controller 110. - In
Step 310, under the control of the processing circuit such as themicroprocessor 112, thememory controller 110 may receive a set of data m from thehost device 200 positioned outside thememory device 100. Thehost device 200 may transmit a writing command to thememory device 100, to request thememory device 100 to store the associated write data. According to the writing command, themicroprocessor 112 may control thememory controller 110 to receive the write data from thehost device 200, where the write data may comprise at least one set of data (e.g. one or more sets of data) such as a plurality of sets of data {m}, and the sets of data {m} comprise the set of data m. - In
Step 320, the memory controller 110 (e.g. the data protection circuit 114DP) may encode the set of data m according to a first sub-matrix H1 of a predetermined parity-check matrix H, in order to generate a partial parity-check code ppc. For example, the data protection circuit 114DP may encode the one or more sets of data such as the sets of data {m} according to the first sub-matrix H1 to generate one or more associated partial parity-check codes such as a plurality of partial parity-check codes {ppc}, respectively, where the partial parity-check codes {ppc} comprise the partial parity-check code ppc. - In
Step 330, the memory controller 110 (e.g. the data protection circuit 114DP) may perform post-processing upon the partial parity-check code ppc according to a predetermined post-processing matrix J, in order to generate the parity-check code p of the set of data m, where the predetermined post-processing matrix J is not equivalent to any inverse matrix ((H2)T)−1 of the transpose matrix (H2)T of a second sub-matrix H2 of the predetermined parity-check matrix H, if the inverse matrix ((H2)T)−1 mentioned above exists. For example, if the inverse matrix ((H2)T)−1 exists, the predetermined post-processing matrix J is not equivalent to ((H2)T)−1. In another example, when the inverse matrix ((H2)T)−1 does not exist, the predetermined post-processing matrix J will not be any derivative of the transpose matrix (H2)T. For example, the data protection circuit 114DP may perform post-processing upon the one or more partial parity-check code such as the partial parity-check codes {ppc} according to the predetermined post-processing matrix J to generate one or more associated parity-check codes such as a plurality of parity-check codes {p} of the sets of data {m}, respectively, where the parity-check codes {p} comprise the parity-check code p. - In
Step 340, under the control of the processing circuit such as themicroprocessor 112, thememory controller 110 may write a codeword c of the set of data m into the non-volatile memory (e.g. the flash memory 120), to allow thememory device 100 to perform error correction when reading the set of data m from the non-volatile memory, where the codeword c comprises the set of data m and the parity-check code p. For example, themicroprocessor 112 may control thememory controller 110 to write one or more associated codewords such as a plurality of codewords {c} of the write data into the non-volatile memory, to allow thememory device 100 to perform error correction when reading the write data from the non-volatile memory, where the codewords {c} comprise the sets of data {m} and the parity-check codes {p}. - According to some embodiments, the codeword c is equal to the multiplication result of the set of data m and a predetermined coding transformation matrix G (i.e. m·G=c). Based on a first method for performing data protection, the controller, such as the memory controller 110 (e.g. the data protection circuit 114DP), may perform a multiplication operation upon the set of data m and the predetermined coding transformation matrix G (e.g. m·G) to generate the codeword c, and may perform a multiplication operation upon the set of data m and a sub-matrix D of the predetermined coding transformation matrix G (e.g. m·D), in order to generate the parity-check code p. For example, G=[I|D], where I is a corresponding identity matrix. According to some embodiments, based on a second method for performing data protection, the controller, such as the memory controller 110 (e.g. the data protection circuit 114DP), may generate the parity-check code p according to the following equation:
-
p=m·(H 1)T((H 2)T)−1 - Note that the predetermined parity-check matrix H in
Step 320 is not the predetermined coding transformation matrix G, and the predetermined post-processing matrix J inStep 330 is not the predetermined coding transformation matrix G. Based on themethod 300 shown inFIG. 3 , the data protection circuit 114DP adopts the first sub-matrix H1 of the predetermined parity-check matrix H (rather than the predetermined coding transformation matrix G) during generation of the partial parity-check code ppc, and adopts the predetermined post-processing matrix J (rather than the predetermined coding transformation matrix G) during generation of the parity-check code p. In the embodiment shown inFIG. 3 , by performing the post-processing upon the partial parity-check code ppc according to the predetermined post-processing matrix J, rather than by performing any multiplication operation upon the set of data m and the predetermined coding transformation matrix G, the memory controller 110 (e.g. the data protection circuit 114DP) may generate the parity-check code p. In some embodiments, the predetermined coding transformation matrix G and the predetermined parity-check matrix H are null space with respect to each other. For example, the set of data m may comprise k bits and be denoted as the one-dimensional matrix (m)1×k, the codeword c may comprise n bits and be denoted as the one-dimensional matrix (c)1×n and the parity-check code p may comprise (n−k) bits and be denoted as the one-dimensional matrix (p)1×(n−k), where k and n are positive integers and n>k. In addition, the predetermined coding transformation matrix G may be denoted as the two-dimensional matrix (G)k×n, and the predetermined parity-check matrix H may be denoted as the two-dimensional matrix (H)(n−k)×n. Further, the inner product of any row of the predetermined coding transformation matrix G and any row of the predetermined parity-check matrix H is equal to zero, which can be denoted as G·HT=0 for better comprehension. In some embodiments, the set of data m, the codeword c and the parity-check code p may be denoted as the one-dimensional matrix (m)1×k, the one-dimensional matrix (c)1×n and the one-dimensional matrix (p)1× (n−k), respectively, and the predetermined parity-check matrix H may be denoted as the two-dimensional matrix (H)(n−k)×n. The inner product of the codeword c and any row of the predetermined parity-check matrix H is equal to zero; this can be denoted as c·HT=0 for better comprehension. According to some embodiments, the second sub-matrix H2 may be a non-full rank matrix, where the inverse matrix ((H2)T)−1 of the transpose matrix (H2)T of the second sub-matrix H2 does not exist. - Compared with the first method and the second method, the
method 300 shown inFIG. 3 may enhance various performance of the data protection circuit 114DP, such as the performance of encoding. -
FIG. 4 illustrates the sizes of related matrices according to an embodiment of the present invention. The notations “k” and “n” may represent the bit count of the set of data m and the bit count of the codeword c, respectively. The bit count of the parity-check code p is equal to the bit count n of the codeword c minus the bit count k of the set of data m; this can be denoted as the difference value (n−k). In addition, the size of the predetermined parity-check matrix H is equal to the product of the difference value (n−k) and the bit count n of the codeword c; this can be denoted as ((n−k)*n). The size of the first sub-matrix H1 is equal to the product of the difference value (n−k) and the bit count k of the set of data m; this can be denoted as ((n−k)*k). The size of the second sub-matrix H2 is equal to the square of the difference value (n−k); this can be denoted as ((n−k)*(n−k)). - According to some embodiments, under the control of the processing circuit such as the
microprocessor 112, thememory controller 110 may read the codeword c from the non-volatile memory (e.g. the flash memory 120) in order to generate the readout data of the codeword c. The memory controller 110 (e.g. the data protection circuit 114DP) may determine whether the readout data is correct according to the predetermined parity-check matrix H. The data protection circuit 114DP may comprise a read-only memory for storing the predetermined parity-check matrix H. In some examples, the predetermined parity-check matrix H may be stored in the read-only memory 112M or any of other memories. When the readout data is determined to be correct, the memory controller 110 (e.g. the processing circuit such as the microprocessor 112) may control thememory device 100 to output the set of data m carried by the readout data; otherwise, the data protection circuit 114DP may perform error correction according to the readout data in order to recover the set of data m. In response to a read command of thehost device 200, themicroprocessor 112 may control thememory device 100 to output the set of data m (e.g. the set of data m carried by the readout data, or the set of data m recovered via the error correction). -
FIG. 5 illustrates a coding circuit 500 according to an embodiment of the present invention, where the coding circuit 500 may be positioned in the data protection circuit 114DP shown inFIG. 1 . The coding circuit 500 may comprise a first sub-matrix generator 510 (which may also be referred to as the H1 generator in this embodiment), amultiplication circuit 512 and apost-processing circuit 520. The firstsub-matrix generator 510 may comprise a read-only memory storing the first sub-matrix H1. The firstsub-matrix generator 510 may output the elements of the first sub-matrix H1 to themultiplication circuit 512 according to a predetermined order. Themultiplication circuit 512 may receive the set of data m and the first sub-matrix H1, and may perform a multiplication operation (e.g. m·(H1)T) in order to generate the partial parity-check code ppc. For example, ppc=m·(H1)T. Thepost-processing circuit 520 may perform post-processing upon the partial parity-check code ppc according to the predetermined post-processing matrix J, in order to generate the parity-check code p. The post-processing may comprise a multiplication operation (e.g. ppc·J) as well as follow-up operations. For better comprehension, the post-processing may be denoted as f(ppc·J), where the symbol f( ) may represent the above-mentioned follow-up operations. According to some embodiments, the architecture shown inFIG. 5 may vary. - According to some embodiments, the architecture shown in
FIG. 1 and themethod 300 shown inFIG. 3 may vary. For example, the post-processing may comprise a randomizing operation, a data protection operation similar to that of a redundant array of independent disks (RAID), and any linear transformation, where thepost-processing circuit 520 may comprise the associated sub-circuits such as a randomizer circuit, etc. In addition, the architecture for decoding may be modified correspondingly. - Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.
Claims (20)
1. A method for performing data management in a memory device, the memory device comprising a non-volatile memory, the non-volatile memory comprising at least one non-volatile memory chip, the method comprising:
receiving a set of data from a host device positioned outside the memory device;
encoding the set of data according to a first sub-matrix of a predetermined parity-check matrix, to generate a partial parity-check code;
performing post-processing upon the partial parity-check code according to a predetermined post-processing matrix, to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix; and
writing a codeword of the set of data into the non-volatile memory, to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
2. The method of claim 1 , wherein the host device transmits a writing command to the memory device to request the memory device to store write data; and the method comprises:
receiving the write data from the host device according to the writing command, wherein the write data comprises a plurality of sets of data, and the plurality of sets of data comprises the set of data;
encoding the plurality of sets of data according to the first sub-matrix to generate a plurality of partial parity-check codes, respectively, wherein the plurality of partial parity-check codes comprises the partial parity-check code;
performing the post-processing upon the plurality of partial parity-check codes according to the predetermined post-processing matrix to generate a plurality of parity-check codes of the plurality of sets of data, respectively, wherein the plurality of parity-check codes comprises the parity-check code; and
writing a plurality of codewords of the write data into the non-volatile memory, to allow the memory device to perform error correction when reading the write data from the non-volatile memory, wherein the plurality of codewords comprises the plurality of sets of data and the plurality of parity-check codes.
3. The method of claim 1 , wherein the codeword is equal to a multiplication result of the set of data and a predetermined coding transformation matrix; and the predetermined parity-check matrix is not the predetermined coding transformation matrix.
4. The method of claim 1 , wherein the codeword is equal to a multiplication result of the set of data and a predetermined coding transformation matrix; and the predetermined post-processing matrix is not the predetermined coding transformation matrix.
5. The method of claim 4 , further comprising:
generating the parity-check code by performing the post-processing upon the partial parity-check code according to the predetermined post-processing matrix, rather than by performing a multiplication operation upon the set of data and the predetermined coding transformation matrix.
6. The method of claim 1 , wherein the codeword is equal to a multiplication result of the set of data and a predetermined coding transformation matrix; and an inner product of any row of the predetermined coding transformation matrix and any row of the predetermined parity-check matrix is equal to zero.
7. The method of claim 1 , wherein an inner product of the codeword and any row of the predetermined parity-check matrix is equal to zero.
8. The method of claim 1 , further comprising:
reading the codeword from the non-volatile memory, to generate readout data of the codeword;
determining whether the readout data is correct according to the predetermined parity-check matrix; and
when it is determined that the readout data is correct, controlling the memory device to output the set of data carried by the readout data; otherwise, performing error correction according to the readout data to recover the set of data.
9. The method of claim 1 , wherein the second sub-matrix is a non-full rank matrix, and the inverse matrix of the transpose matrix of the second sub-matrix does not exist.
10. The method of claim 1 , wherein a bit count of the parity-check code is equal to a difference value calculated from a bit count of the codeword minus a bit count of the set of data, and a size of the predetermined parity-check matrix is equal to a product of the difference value and the bit count of the codeword.
11. The method of claim 10 , wherein when k and n represent the bit count of the set of data and the bit count of the codeword, respectively, a bit count of the parity-check code is equal to (n−k), and the size of the predetermined parity-check matrix is equal to ((n−k)*n), wherein k and n are positive integers and n>k.
12. The method of claim 10 , wherein a size of the first sub-matrix is equal to a product of the difference value and the bit count of the set of data, and a size of the second sub-matrix is equal to a square value of the difference value.
13. The method of claim 12 , wherein when k and n represent the bit count of the set of data and the bit count of the codeword, respectively, the bit count of the parity-check code is equal to (n−k), and the size of the predetermined parity-check matrix is equal to ((n−k)*n), wherein k and n are positive integers and n>k; and the size of the first sub-matrix is equal to ((n−k)*k), and the size of the second sub-matrix is equal to ((n−k)*(n−k)).
14. A memory device, comprising:
a non-volatile memory, arranged to store information, wherein the non-volatile memory comprises at least one non-volatile memory chip; and
a controller, coupled to the non-volatile memory, the controller arranged to perform data management in the memory device, wherein:
the controller receives a set of data from a host device positioned outside the memory device;
the controller encodes the set of data according to a first sub-matrix of a predetermined parity-check matrix, to generate a partial parity-check code;
the controller performs post-processing upon the partial parity-check code according to a predetermined post-processing matrix, to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix; and
the controller writes a codeword of the set of data into the non-volatile memory, to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
15. The memory device of claim 14 , wherein the codeword is equal to a multiplication result of the set of data and a predetermined coding transformation matrix; and the predetermined parity-check matrix is not the predetermined coding transformation matrix.
16. The memory device of claim 14 , wherein the codeword is equal to a multiplication result of the set of data and a predetermined coding transformation matrix; and the predetermined post-processing matrix is not the predetermined coding transformation matrix.
17. The memory device of claim 16 , wherein the controller generates the parity-check code by performing the post-processing upon the partial parity-check code according to the predetermined post-processing matrix, rather than by performing a multiplication operation upon the set of data and the predetermined coding transformation matrix.
18. A controller of a memory device, the memory device comprising the controller and a non-volatile memory, the non-volatile memory comprising at least one non-volatile memory chip, the controller comprising:
a processing circuit, arranged to control the controller to receive a set of data from a host device positioned outside the memory device; and
a data protection circuit, coupled to the processing circuit, the data protection circuit arranged to perform error correction, wherein:
the data protection circuit encodes the set of data according to a first sub-matrix of a predetermined parity-check matrix, to generate a partial parity-check code; and
the data protection circuit performs post-processing upon the partial parity-check code according to a predetermined post-processing matrix, to generate a parity-check code of the set of data, wherein the predetermined post-processing matrix is not equivalent to any inverse matrix of a transpose matrix of a second sub-matrix of the predetermined parity-check matrix;
wherein the processing circuit controls the controller to write a codeword of the set of data into the non-volatile memory, to allow the memory device to perform error correction when reading the set of data from the non-volatile memory, wherein the codeword comprises the set of data and the parity-check code.
19. The controller of claim 18 , wherein the codeword is equal to a multiplication result of the set of data and a predetermined coding transformation matrix; and the predetermined parity-check matrix is not the predetermined coding transformation matrix.
20. The controller of claim 18 , wherein the codeword is equal to a multiplication result of the set of data and a predetermined coding transformation matrix; and the predetermined post-processing matrix is not the predetermined coding transformation matrix.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/431,679 US10860422B2 (en) | 2017-01-03 | 2019-06-04 | Method for performing data management in memory device, associated memory device and controller thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106100011 | 2017-01-03 | ||
TW106100011A TWI602188B (en) | 2017-01-03 | 2017-01-03 | Method for performing data management in memory device, and associated memory device and controller thereof |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/431,679 Continuation US10860422B2 (en) | 2017-01-03 | 2019-06-04 | Method for performing data management in memory device, associated memory device and controller thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
US20180189136A1 true US20180189136A1 (en) | 2018-07-05 |
Family
ID=61011194
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/654,735 Abandoned US20180189136A1 (en) | 2017-01-03 | 2017-07-20 | Method for performing data management in memory device, associated memory device and controller thereof |
US16/431,679 Active 2037-08-11 US10860422B2 (en) | 2017-01-03 | 2019-06-04 | Method for performing data management in memory device, associated memory device and controller thereof |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/431,679 Active 2037-08-11 US10860422B2 (en) | 2017-01-03 | 2019-06-04 | Method for performing data management in memory device, associated memory device and controller thereof |
Country Status (3)
Country | Link |
---|---|
US (2) | US20180189136A1 (en) |
CN (2) | CN113485867A (en) |
TW (1) | TWI602188B (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020023519A1 (en) * | 2018-07-24 | 2020-01-30 | Micron Technology, Inc. | Media scrubber in memory system |
US20220334909A1 (en) * | 2021-04-20 | 2022-10-20 | Hitachi, Ltd. | Anomaly detection apparatus, anomaly detection method, and anomaly detection program |
CN117097559A (en) * | 2023-10-17 | 2023-11-21 | 天津德科智控股份有限公司 | EPS steering angle message transmission verification method |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990175B (en) * | 2018-10-03 | 2023-03-14 | 慧荣科技股份有限公司 | Error handling method, data storage device and controller thereof |
US10884642B2 (en) | 2019-03-27 | 2021-01-05 | Silicon Motion, Inc. | Method and apparatus for performing data-accessing management in a storage server |
US11354231B2 (en) * | 2019-05-30 | 2022-06-07 | Silicon Motion, Inc. | Method for performing access management of memory device with aid of information arrangement, associated memory device and controller thereof, associated electronic device |
US10838811B1 (en) * | 2019-08-14 | 2020-11-17 | Silicon Motion, Inc. | Non-volatile memory write method using data protection with aid of pre-calculation information rotation, and associated apparatus |
US10944429B1 (en) * | 2020-01-02 | 2021-03-09 | Silicon Motion, Inc. | Data accessing method using data protection with aid of parity check matrix having partial sequential information, and associated apparatus |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100809619B1 (en) * | 2003-08-26 | 2008-03-05 | 삼성전자주식회사 | Apparatus and method for coding/decoding block low density parity check code in a mobile communication system |
KR100713371B1 (en) * | 2004-08-10 | 2007-05-04 | 삼성전자주식회사 | Apparatus and method for encoding/decoding a block low density parity check code |
US8196025B2 (en) * | 2005-08-03 | 2012-06-05 | Qualcomm Incorporated | Turbo LDPC decoding |
US8271850B2 (en) * | 2005-12-29 | 2012-09-18 | Intel Corporation | Fast low-density parity-check code encoder |
TW201334425A (en) * | 2007-01-24 | 2013-08-16 | Qualcomm Inc | LDPC encoding and decoding of packets of variable sizes |
JP5203717B2 (en) * | 2007-12-19 | 2013-06-05 | パナソニック株式会社 | Encoder, decoder, encoding method, and decoding method |
US20100332942A1 (en) * | 2008-09-10 | 2010-12-30 | Arm Limited | Memory controller for NAND memory using forward error correction |
US8301979B2 (en) | 2008-10-07 | 2012-10-30 | Sandisk Il Ltd. | Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders |
JP4929342B2 (en) | 2009-12-15 | 2012-05-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Calculation method of sum-product decoding method (belief propagation method) based on scaling of input log likelihood ratio by noise variance |
TWI419481B (en) * | 2009-12-31 | 2013-12-11 | Nat Univ Tsing Hua | Low density parity check codec and method of the same |
TWI633557B (en) * | 2010-04-19 | 2018-08-21 | 慧榮科技股份有限公司 | Method for performing memory access management, and associated memory device and controller thereof |
CN102236585B (en) * | 2010-04-20 | 2015-06-03 | 慧荣科技股份有限公司 | Method for improving error correction capacity and related memory device and controller of memory device |
US9251058B2 (en) | 2010-09-28 | 2016-02-02 | SanDisk Technologies, Inc. | Servicing non-block storage requests |
US8788922B2 (en) * | 2011-02-28 | 2014-07-22 | Apple Inc | Error correction codes for incremental redundancy |
JP5269936B2 (en) * | 2011-03-17 | 2013-08-21 | 株式会社東芝 | Encoder and storage device |
US8924814B2 (en) | 2012-08-28 | 2014-12-30 | Seagate Technology Llc | Write management using partial parity codes |
KR102068030B1 (en) * | 2012-12-11 | 2020-01-20 | 삼성전자 주식회사 | Memory controller and operating method of the same |
US9048874B2 (en) * | 2013-03-15 | 2015-06-02 | Lsi Corporation | Min-sum based hybrid non-binary low density parity check decoder |
US9448877B2 (en) * | 2013-03-15 | 2016-09-20 | Cisco Technology, Inc. | Methods and apparatus for error detection and correction in data storage systems using hash value comparisons |
US9148176B2 (en) * | 2013-06-24 | 2015-09-29 | Micron Technology, Inc. | Circuits, apparatuses, and methods for correcting data errors |
US9213599B2 (en) | 2013-09-18 | 2015-12-15 | Seagate Technology Llc | Method of erase state handling in flash channel tracking |
US9213600B2 (en) | 2013-11-11 | 2015-12-15 | Seagate Technology Llc | Dynamic per-decoder control of log likelihood ratio and decoding parameters |
TWI536749B (en) * | 2013-12-09 | 2016-06-01 | 群聯電子股份有限公司 | Decoding method, memory storage device and memory controlling circuit unit |
US9262268B2 (en) | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
TWI530959B (en) * | 2014-06-17 | 2016-04-21 | 慧榮科技股份有限公司 | Method for controlling a memory apparatus, and associated memory apparatus thereof and associated controller thereof |
US9553611B2 (en) * | 2014-11-27 | 2017-01-24 | Apple Inc. | Error correction coding with high-degree overlap among component codes |
WO2016137234A1 (en) * | 2015-02-24 | 2016-09-01 | Samsung Electronics Co., Ltd. | Transmitter and repetition method thereof |
US10382069B2 (en) * | 2015-08-11 | 2019-08-13 | Apple Inc. | Data encoding by efficient inversion of a parity-check sub-matrix |
US9853661B2 (en) * | 2015-12-08 | 2017-12-26 | Apple Inc. | On-the-fly evaluation of the number of errors corrected in iterative ECC decoding |
CN107370488A (en) * | 2016-05-13 | 2017-11-21 | 中兴通讯股份有限公司 | Error correction/encoding method and device |
US10289348B2 (en) * | 2016-12-30 | 2019-05-14 | Western Digital Technologies, Inc. | Tapered variable node memory |
KR102631407B1 (en) * | 2018-10-24 | 2024-01-31 | 에스케이하이닉스 주식회사 | Ldpc decoder, semiconductor memory system and operating method thereof |
-
2017
- 2017-01-03 TW TW106100011A patent/TWI602188B/en active
- 2017-06-12 CN CN202110757783.8A patent/CN113485867A/en active Pending
- 2017-06-12 CN CN201710440209.3A patent/CN108268337B/en active Active
- 2017-07-20 US US15/654,735 patent/US20180189136A1/en not_active Abandoned
-
2019
- 2019-06-04 US US16/431,679 patent/US10860422B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020023519A1 (en) * | 2018-07-24 | 2020-01-30 | Micron Technology, Inc. | Media scrubber in memory system |
US11221910B2 (en) | 2018-07-24 | 2022-01-11 | Micron Technology, Inc. | Media scrubber in memory system |
US11720439B2 (en) | 2018-07-24 | 2023-08-08 | Micron Technology, Inc. | Media scrubber in memory system |
US20220334909A1 (en) * | 2021-04-20 | 2022-10-20 | Hitachi, Ltd. | Anomaly detection apparatus, anomaly detection method, and anomaly detection program |
US11829226B2 (en) * | 2021-04-20 | 2023-11-28 | Hitachi, Ltd. | Anomaly detection apparatus, anomaly detection method, and anomaly detection program |
CN117097559A (en) * | 2023-10-17 | 2023-11-21 | 天津德科智控股份有限公司 | EPS steering angle message transmission verification method |
Also Published As
Publication number | Publication date |
---|---|
TW201826285A (en) | 2018-07-16 |
CN113485867A (en) | 2021-10-08 |
TWI602188B (en) | 2017-10-11 |
CN108268337B (en) | 2021-07-27 |
US20190286520A1 (en) | 2019-09-19 |
CN108268337A (en) | 2018-07-10 |
US10860422B2 (en) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860422B2 (en) | Method for performing data management in memory device, associated memory device and controller thereof | |
CN108062258B (en) | Cyclically interleaved XOR array for error recovery | |
CN107797882B (en) | Memory system and operating method thereof | |
CN107678695B (en) | Selecting redundant storage configurations based on available memory space | |
US8612836B2 (en) | Non-volatile memory device with uncorrectable information region and operation method using the same | |
US10347349B2 (en) | Method and device for fail-safe erase of flash memory | |
CN108447523B (en) | Method for controlling a memory device, memory device and controller | |
US10283216B2 (en) | Data storage device and data maintenance method thereof | |
CN108108308B (en) | Memory system and operating method thereof | |
US11294589B2 (en) | Method for performing access control in a memory device, associated memory device and controller thereof | |
CN108022611A (en) | Storage system and its operating method | |
US20160283319A1 (en) | Data storage device and encoding method thereof | |
CN111048140A (en) | Error correction circuit, memory controller and memory system | |
US11269725B2 (en) | Storage system and method for direct quad-level cell (QLC) programming | |
TWI698742B (en) | Method for performing access control in a memory device, and associated memory device and controller thereof | |
US20190155507A1 (en) | Method for performing system backup in a memory device, associated memory device and controller thereof, and associated electronic device | |
KR20170012006A (en) | Memory controller and memory system including the same | |
TWI651730B (en) | Method for performing data management in memory device, and associated memory device and controller thereof | |
CN114373500A (en) | Memory system and controller | |
CN117435126A (en) | Method for data management of memory device, electronic device and memory controller of memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SILICON MOTION INC., TAIWAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WANG, YU-LUEN;REEL/FRAME:043049/0336 Effective date: 20170713 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |