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 PDF

Info

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
Application number
US15/654,735
Inventor
Yu-Luen Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Assigned to SILICON MOTION INC. reassignment SILICON MOTION INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WANG, YU-LUEN
Publication of US20180189136A1 publication Critical patent/US20180189136A1/en
Priority to US16/431,679 priority Critical patent/US10860422B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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/1024Identification of the type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1044Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix 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

    BACKGROUND OF THE INVENTION 1. Field of the Invention
  • The present invention relates to flash memory access, and more particularly, to performing data management in a memory device.
  • 2. Description of the Prior Art
  • 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 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). In theory, 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.
  • 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.
  • SUMMARY OF THE INVENTION
  • 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.
  • BRIEF DESCRIPTION OF THE 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 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.
  • DETAILED DESCRIPTION I. The Memory System
  • 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). In addition, examples of the host device 200 may comprise (but are not limited to): a multifunctional mobile phone, tablet, wearable device, and a personal computer. According to this embodiment, 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. 1, the memory controller 110 may comprise a processing circuit such as a microprocessor 112, a storage unit (e.g. a read-only memory (ROM)) 112M, 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 112M of this embodiment is arranged to store a program code 112C, and the microprocessor 112 is arranged to execute the program code 112C to control the access of the flash memory 120. Note that, in some examples, the program code 112C may be stored in the buffer memory 116 or any type of memory. Further, a data protection circuit 114DP 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.
  • In this embodiment, 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.
  • II. Page Address Linking Table
  • 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. As shown in FIG. 2A, the flash chip 0 comprises a plurality of blocks 0, 1, 2, . . . , and M. Note that 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. In addition, a block, such as the block 0 shown in FIG. 2A, may comprise a plurality of pages. For example, the block 0 of the flash 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 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. According to some embodiments, the data area may have less than 127 pages, and the table area may comprise two or more pages. In another example, the respective page counts in the block, the data area and the table area may vary. Note that 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. According to this embodiment, 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.
  • 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 the block 0 are fully programed, the microprocessor 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 the block 0, the microprocessor 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 in FIG. 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 0, 1, 2, . . . , respectively), and the parameter DPC represents the data page count of each block (the data page count is 127 in this embodiment). This is merely for illustrative purposes, rather than a limitation of the present invention. For better comprehension, the temporary/non-temporary local page address linking table may be illustrated with a single column as shown in the right half of 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 of FIG. 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 the microprocessor 112 in order to write some data at a logical page address 0x0002, 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. In this way, when all data pages in the block 0 are written, 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. 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.
  • III. Error Correction
  • 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. For example, the memory controller 110 may provide one or more types of error correction mechanisms to the memory device 100. According to some embodiments, the memory 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 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.
  • In Step 310, under the control of the processing circuit such as the microprocessor 112, 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. According to the writing command, 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.
  • 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 the microprocessor 112, 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. For example, 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}.
  • 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 in Step 330 is not the predetermined coding transformation matrix G. Based on the method 300 shown in FIG. 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 in FIG. 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 in FIG. 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, 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 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 the memory 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 the host device 200, 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 114DP shown in FIG. 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), 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 H1. The first sub-matrix generator 510 may output the elements of the first sub-matrix H1 to the multiplication circuit 512 according to a predetermined order. The multiplication 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. 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. 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 in FIG. 5 may vary.
  • According to some embodiments, the architecture shown in FIG. 1 and the method 300 shown in FIG. 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 the post-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)

What is claimed is:
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.
US15/654,735 2017-01-03 2017-07-20 Method for performing data management in memory device, associated memory device and controller thereof Abandoned US20180189136A1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
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