US10133664B2 - Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips - Google Patents
Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips Download PDFInfo
- Publication number
- US10133664B2 US10133664B2 US15/497,217 US201715497217A US10133664B2 US 10133664 B2 US10133664 B2 US 10133664B2 US 201715497217 A US201715497217 A US 201715497217A US 10133664 B2 US10133664 B2 US 10133664B2
- Authority
- US
- United States
- Prior art keywords
- flash memory
- parity check
- data
- check codes
- word line
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1072—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 multilevel memories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Definitions
- the present invention relates to a flash memory, and more particularly to a method for accessing a flash memory module, a corresponding flash memory controller, and a memory device.
- 3D flash memory manufacture becomes more important, and a variety of 3D NAND-type flash memory manufactures have been developed.
- manufacture structure becomes totally different and positions of floating gates are changed, it becomes more complicated for data writing and reading compared to a traditional 2D NAND-type flash memory, and thus some serious problems arise.
- multiple word lines may be defined as one word line set, and such word lines within the same word line set share the same control circuit.
- the flash memory module is a 3D NAND-type flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks.
- Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines, and floating transistors on each bit line form at least one page among the plurality of data pages.
- the method comprises: performing encoding upon data to generate at least one set of parity check codes, wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips; programming the data into the super block; writing and buffering the at least one set of parity check codes into a buffer memory; and, reading the at least one set of parity check codes from the buffer memory, then encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block.
- a flash memory controller for accessing a flash memory module.
- the flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks.
- Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages.
- the flash memory controller comprises a memory, a microprocessor, and a codec.
- the memory is configured for storing a program code.
- a memory device comprising a flash memory module and a flash memory controller.
- the flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks.
- Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages.
- the flash memory controller is configured for accessing the flash memory module.
- the flash memory controller When receiving a programming/writing instruction from a host device to program data into the flash memory module, the flash memory controller is arranged for: performing encoding upon data to generate at least one set of parity check codes wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips, for programming the data into the super block, for writing and buffering the at least one set of parity check codes into a buffer memory, for reading the at least one set of parity check codes from the buffer memory, encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then for programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block.
- a method for accessing a flash memory module is further disclosed.
- the flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks.
- Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages.
- the method comprises: configuring and planning the flash memory chips so that the flash memory chips include at least one super block; and allocating a buffer memory space for storing multiple sets of temporary parity check codes generated by an encoding procedure during programming data into the at least one super block.
- a flash memory controller for accessing a flash memory module.
- the flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks.
- Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line format least one page among the plurality of data pages.
- the flash memory controller comprises a memory, a microprocessor, and a codec.
- the memory is configured for storing a program code.
- the microprocessor is configured for executing the program code to control access of the flash memory module.
- the microprocessor configures and plans the flash memory chips so that the flash memory chips include at least one super block, and allocates a buffer memory space for storing multiple sets of temporary parity check codes generated by an encoding procedure during programming data into the at least one super block.
- a memory device comprises a flash memory module and a flash memory controller.
- the flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks.
- Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages.
- the flash memory controller is configured for accessing the flash memory module.
- the flash memory controller is further arranged for configuring and planning the flash memory chips so that the flash memory chips include at least one super block, and for assigning a buffer memory space for storing multiple sets of temporary parity check codes generated by an encoding procedure during programming data into the at least one super block.
- FIG. 1 is a diagram of a memory device according to an embodiment of the present invention.
- FIG. 2 is a diagram of a 3D NAND-type flash memory.
- FIG. 3 is a schematic diagram illustrating floating gate transistors.
- FIG. 4 is a diagram illustrating multiple word line sets in one block.
- FIG. 5 is a diagram illustrating an example of the flash memory controller programming data into the flash memory module.
- FIG. 6 is a diagram illustrating an example of flash memory controller programming data into the super block according to a first embodiment of the present invention.
- FIG. 7 is a diagram showing an example of adopting RS encoding operation as the RAID encoding operation to generate eight sets of final parity check codes SF 0 -SF 7 according to the parity check codes S 0 -S 191 shown in FIG. 6 .
- FIG. 8 is a diagram showing an example of adopting XOR calculation as the RAID encoding operation to generate eight sets of final parity check codes SF 0 -SF 7 according to the parity check codes S 0 -S 191 shown in FIG. 6 .
- FIG. 9 is a diagram illustrating an example of flash memory controller programming data into the super block according to a second embodiment of the present invention.
- FIG. 10 is a diagram showing an example of adopting RS encoding operation as the RAID encoding operation to generate eight sets of final parity check codes SF 0 -SF 7 according to the parity check codes S 0 -S 191 shown in FIG. 9 .
- FIG. 11 is a diagram showing an example of adopting XOR calculation as the RAID encoding operation to generate eight sets of final parity check codes SF 0 -SF 7 according to the parity check codes S 0 -S 191 shown in FIG. 9 .
- FIG. 1 is a diagram of a memory device 100 according to an embodiment of the present invention.
- the memory device 100 can be a portable memory device such as a memory card conforming to the standards of SD/NMC, CF, MS, and XD.
- the memory device 100 comprises a flash memory module 120 and a flash memory controller 110 .
- the flash memory controller 110 is used for accessing the flash memory module 120 .
- the flash memory controller 110 comprises a microprocessor 112 , read-only memory (ROM) 112 M, control logic 114 , buffer memory 116 , and an interface logic 118 .
- the read-only memory is used for storing program codes 112 C.
- the microprocessor 112 is used for executing the program codes 112 C to control the access of flash memory module 120 .
- the buffer memory 116 can be configured outside of the controller 110 , and is implemented with a storage space allocated by a dynamic random access memory.
- the flash memory module 120 may include multiple flash memory chips each including a plurality of blocks.
- the controller e.g. flash memory controller 110 executing the program codes 112 C by using microprocessor 112
- the controller is arranged to perform copy, erase, and merge operations upon the flash memory module 120 wherein the copy, erase, and merge operations are performed block by block.
- a block can record a particular number of data pages wherein the controller, e.g. flash memory controller 110 executing the program codes 112 C by using microprocessor 112 , is arranged to perform data programming upon the flash memory module 120 page by page.
- the flash memory controller 110 executing the program codes 112 C by using the microprocessor 112 can perform a variety of control operations by using its internal circuit elements.
- the controller 110 can use the control logic 114 to control the access of flash memory module 120 (more particularly to control the access of at least one block or at least one data page), use the buffer memory 116 to buffer data, and use the interface logic 118 to communicate with a host device (not shown in FIG. 1 ).
- the flash memory module 120 is a 3D NAND-type flash memory module.
- FIG. 2 is a diagram of a 3D NAND-type flash memory.
- the 3D NAND-type flash memory comprises multiple floating gate transistors 202 , and the structure of 3D NAND-type flash memory is made up of multiple bit lines (e.g. BL 1 -BL 3 ) and multiple word lines (e.g. WL 0 -WL 2 and WL 4 -WL 6 ).
- One bit line can be also called one string.
- At least one data page constitutes all floating gate transistors on the word line WL 0
- another at least one data page constitutes all floating gate transistors on the word line WL 1
- another at least one data page constitutes all floating gate transistors on the word line WL 2 , and other so on.
- the definition of one data page (logic data page) and the relation between such data page and word line WL 0 may be different, and which may depend on different data programming types adopted by the flash memory.
- all floating gate transistors on the word line WL 0 correspond to one single logic data page when the flash memory adopts single-level cell (SLC) data programming.
- SLC single-level cell
- one data page is a minimum data unit which is programmed by the controller 110 into the module 120
- one block is a minimum data unit which is erased by the controller 110 ; that is, the controller 110 programs at least one data page for one data programming operation, and erases at least one block for one erase operation.
- 3D NAND-type flash memory and floating gate transistors 202 shown in FIG. 2 and FIG. 3 are not meant to be limitations of the present invention.
- 3D NAND-type flash memory may be designed or configured as different structures; for example, a portion of word lines may be mutually connected.
- the design or configuration of floating gate transistor 202 may be modified as different structures.
- multiple word lines are defined as or classified into a word line set, i.e. a set of word lines, and such word line set correspond to or include a common control circuit.
- a word line set i.e. a set of word lines
- the word lines disposed/positioned on the same plane is configured as or classified into a word line set. Refer back to FIG. 2 .
- Word lines WL 0 -WL 3 are classified into a first word line set, and word lines WL 4 -WL 7 are classified into a second word line set; and other so on.
- floating gate transistors on word line WL 0 included by the word line set WL_G 0 can be used for storing lower data page P 0 L, middle data page P 0 M, and upper data page P 0 U.
- the floating gate transistors on word line WL 1 included by the word line set WL_G 0 can be used for storing lower data page P 1 L, middle data page P 1 M, and upper data page P 1 U.
- the floating gate transistors on word line WL 2 included by the word line set WL_G 0 can be used for storing lower data page P 2 L, middle data page P 2 M, and upper data page P 2 U.
- the data cannot be readout from word line set WL_G 0 or reading errors occur. For instance, the data cannot be read if one word line open occurs; all the data of one word line set will become erroneous if one word line in such word line set is open. Further, if two word lines in different word line sets are shorted (e.g. word lines WL 3 and WL 4 are shorted), then all the data of two word line sets WL_G 0 and WL_G 1 cannot be read successfully. That is, the two word line sets WL_G 0 and WL_G 1 are equivalently shorted.
- a method/mechanism for accessing flash memory module 120 is provided.
- One of the advantages is that the method/mechanism merely consumes less resource (i.e. occupies less memory space). The description of the method/mechanism is detailed in the following.
- FIG. 5 is a diagram illustrating an example of the flash memory controller 110 programming data into the flash memory module 120 .
- the flash memory module 120 comprises multiple channels (in the embodiment, two channels 510 and 520 ), and each channel corresponds to a sequencer of flash memory controller 110 and comprises multiple flash memory chips.
- the channel 510 comprises flash memory chips 512 and 514
- the channel 520 comprises flash memory chips 522 and 524 .
- a super block consists of one block of each flash memory chip 512 , 514 , 522 , and 524 .
- the flash memory controller 110 is arranged for programming data by super blocks.
- the control logic 114 of flash memory controller 110 is arranged for temporarily storing temporary and partial parity check codes generated by the second codec 134 in the buffer memory 116 and reading the temporary and partial parity check codes from the buffer memory 116 by accessing the buffer memory 116 .
- the buffer memory 116 can be implemented with a dynamic random access memory (DRAM), and the circuit cost can be reduced correspondingly.
- DRAM dynamic random access memory
- a DRAM can be adopted to store data by a general data area, a lookup table data area, and to temporarily store parity check codes or partial parity check codes by further allocating a memory storage space of the DRAM; the allocated memory storage space can be a space with a fixed physical address or a logic address.
- the second data unit is programmed into the lower data page P 1 L, middle data page P 1 M, and upper data page P 1 U of respective second data page P 1 of flash memory chips 512 , 514 , 522 , and 524 ; and others so on.
- the (N)-th data unit is programmed into the lower data page P(N ⁇ 1)L, middle data page P(N ⁇ 1)M, and upper data page P(N ⁇ 1)U of respective (N)-th data page P(N ⁇ 1) of flash memory chips 512 , 514 , 522 , and 524 ; for example, N is equal to 192.
- the first codec 132 encodes different portions of the first data unit to generate corresponding error correction codes, and then the first data unit with the corresponding error correction codes generated by the first codec 132 are to be programmed into a first data page P 0 of each of flash memory chips 512 , 514 , 522 , and 524 .
- the first codec 132 encodes a first data portion of the first data unit to generate an error correction code, and the first data portion with the generated error correction code are to be programmed into lower data page P 0 L, middle data page P 0 M, and upper data page P 0 U of the first data page P 0 of flash memory chip 512 .
- the first codec 132 then encodes a second data portion of the first data unit to generate an error correction code, and the second data portion with the generated error correction code are to be programmed into lower data page P 0 L, middle data page P 0 M, and upper data page P 0 U of the first data page P 0 of flash memory chip 514 .
- the first codec 132 then encodes a third data portion of the first data unit to generate an error correction code, and the third data portion with the generated error correction code are to be programmed into lower data page P 0 L, middle data page P 0 M, and upper data page P 0 U of the first data page P 0 of flash memory chip 522 .
- the second codec 134 of flash memory controller 110 is arranged for performing RAID encoding upon the first data unit with the error correction codes to generate a first set of parity check codes S 0 .
- the second codec 134 can employ RS (Reed-Solomon) encoding operation or XOR (exclusive-OR) encoding operation upon the data content to be programmed into the first data page P 0 of each of flash memory chips 512 , 514 , 522 , and 524 , to generate the first set of parity check codes S 0 .
- the second codec 134 can be arranged to perform an XOR encoding operation upon data content of lower data pages P 0 L of first data pages P 0 of flash memory chips 512 , 514 , 522 , and 524 to generate a first partial parity check code SOL in the first set of parity check codes S 0 , to perform an XOR encoding operation upon data content of middle data pages P 0 M of first data pages P 0 of flash memory chips 512 , 514 , 522 , and 524 to generate a second partial parity check code S 0 M in the first set of parity check codes S 0 , and to perform an XOR encoding operation upon data content of upper data pages P 0 U of first data pages P 0 of flash memory chips 512 , 514 , 522 , and 524 to generate a third partial parity check code S 0 U in the first set of parity check codes S 0 .
- the first set of parity check codes S 0 comprises first partial parity check code S 0 L, second partial parity check code S 0 M, and third partial parity check code S 0 U, and these three partial parity check codes are generated by distinct XOR encoding operations.
- the second codec 134 may comprise three codec engines used for generating the three partial parity check codes.
- the three codec engines of second codec 134 can be employed for respectively generating corresponding three different partial parity check codes.
- the second codec 134 can directly perform the RS encoding operation upon the data content of first data pages P 0 of flash memory chips 512 , 514 , 522 , and 524 to generate the first set of parity check codes S 0 without using the three codec engines.
- the first set of parity check codes S 0 generated by second codec 134 is used for correcting error(s) occurring at first data page P 0 of anyone flash memory chip among the flash memory chips 512 , 514 , 522 , and 524 .
- the second codec 134 can be arranged to read data content of lower data pages P 0 L of all first data pages P 0 of other flash memory chips 514 , 522 , 524 and the first partial parity check code SOL of first set of parity check codes S 0 from the module 120 to perform error correction so as to determine correct data content of lower data page P 0 L of first data page P 0 of flash memory chip 512 .
- the second codec 134 can be arranged to read data content of middle data pages P 0 M of all first data pages P 0 of other flash memory chips 514 , 522 , 524 and the second partial parity check code S 0 M of first set of parity check codes S 0 from the module 120 to perform error correction so as to determine correct data content of middle data page P 0 M of first data page P 0 of flash memory chip 512 .
- the second codec 134 can be arranged to read data content of upper data pages P 0 U of all first data pages P 0 of other flash memory chips 514 , 522 , 524 and the third partial parity check code S 0 U of first set of parity check codes S 0 from the module 120 to perform error correction so as to determine correct data content of upper data page P 0 U of first data page P 0 of flash memory chip 512 .
- the second codec 134 can be arranged to read data content of all first data pages P 0 of other flash memory chips 514 , 522 , 524 and the first set of parity check codes S 0 from the module 120 to perform error correction so as to determine correct data content of first data page P 0 of flash memory chip 512 .
- first set of parity check codes S 0 generated by second codec 134 can be temporarily stored in the buffer memory 116 of flash memory controller 110 .
- the flash memory controller 110 can be arranged to read and then check the data to determine whether the data has been programmed successfully.
- the second codec 134 can directly use the first set of parity check codes S 0 stored in the buffer memory 116 to correct the data which has been read for checking. Since the flash memory module 120 does not directly correct/modify data which has been programmed, the corrected data (i.e. the first data unit has been corrected) with other data of super block 530 can be programmed into another super block after a waiting time period.
- the first codec 132 encodes different portions of the first data unit to generate corresponding error correction codes, and then the second data unit with the corresponding error correction codes generated by the first codec 132 are to be programmed into a second data page P 1 of each of flash memory chips 512 , 514 , 522 , and 524 .
- the second codec 134 of flash memory controller 110 is arranged for performing RAID encoding upon the second data unit with the error correction codes to generate a second set of parity check codes S 1 .
- the second codec 134 can employ RS (Reed-Solomon) encoding operation or XOR (exclusive-OR) encoding operation upon the data content to be programmed into the second data page P 1 of each of flash memory chips 512 , 514 , 522 , and 524 , to generate the second set of parity check codes S 1 .
- RS Random-Solomon
- XOR exclusive-OR
- the second codec 134 can be arranged to perform an XOR encoding operation upon data content of lower data pages P 1 L of second data pages P 1 of flash memory chips 512 , 514 , 522 , and 524 to generate a first partial parity check code S 1 L in the second set of parity check codes S 1 , to perform an XOR encoding operation upon data content of middle data pages P 1 M of second data pages P 1 of flash memory chips 512 , 514 , 522 , and 524 to generate a second partial parity check code S 1 M in the second set of parity check codes S 1 , and to perform an XOR encoding operation upon data content of upper data pages P 1 U of second data pages P 1 of flash memory chips 512 , 514 , 522 , and 524 to generate a third partial parity check code S 1 U in the second set of parity check codes S 1 .
- the second set of parity check codes S 1 comprises first partial parity check code S 1 L, second partial parity check code S 1 M, and third partial parity check code S 1 U, and these three partial parity check codes are generated by distinct XOR encoding operations.
- the second codec 134 may comprise three codec engines used for generating the three partial parity check codes.
- the three codec engines of second codec 134 can be employed for respectively generating corresponding three different partial parity check codes.
- the second codec 134 can directly perform the RS encoding operation upon the data content of second data pages P 1 of flash memory chips 512 , 514 , 522 , and 524 to generate the second set of parity check codes S 1 without using the three codec engines.
- the second set of parity check codes S 1 generated by second codec 134 can be temporarily stored in the buffer memory 116 of flash memory controller 110 .
- the flash memory controller 110 can be arranged to read and then check the data to determine whether the data has been programmed successfully.
- the second codec 134 can directly use the second set of parity check codes S 1 stored in the buffer memory 116 to correct the data which has been read for checking. Since the flash memory module 120 does not directly correct/modify data which has been programmed, the corrected data (i.e. the second data unit has been corrected) with other data of super block 530 can be programmed into another super block after a waiting time period.
- the data pages P 0 of flash memory chips 512 , 514 , 522 , and 524 may be damaged when data is erroneously programmed during data programming of the second data unit since the data pages P 0 and P 1 belong into the same word line set WL_G 0 . For instance, if data is erroneously programmed into the data page P 1 of flash memory chip 514 during data programming of the second data unit, then errors will occur at the data page P 0 in flash memory chip 514 , which has been successfully programmed.
- the first set of parity check codes S 0 may be not stored in the buffer memory 116 , and thus the flash memory controller 110 can read the first set of parity check codes S 0 from the super block 530 to correct the first data unit which is read out from the super block 530 .
- the flash memory controller 110 programs/writes a third data unit into the third data pages P 2 of flash memory chips 512 , 514 , 522 , and 524 and generates a corresponding third set of parity check codes S 2 , and then programs/writes a fourth data unit into the fourth data pages P 3 of flash memory chips 512 , 514 , 522 , and 524 and generates a corresponding fourth set of parity check codes S 3 .
- data programming for the word line set WL_G 0 is completed.
- the flash memory controller 110 is arranged to respectively program/write the fifth, sixth, seventh, and eighth data units into the respective data pages P 4 , P 5 , P 6 , and P 7 of flash memory chips 512 , 514 , 522 , and 524 , and to generate the first, second, third, and fourth sets of parity check codes S 4 , S 5 , S 6 , and S 7 of the corresponding word line set WL_G 1 , so as to complete the data programming of word line set WL_G 1 .
- the buffer memory 116 can be implemented by using a DRAM which can allocate a storage space for temporarily storing parity check codes of RAID encoding operations of the flash memory controller 110 .
- the controller 110 can be arranged to immediately store a set of parity check codes in the buffer memory 116 after generating such set of parity check codes, or to not temporarily store eight sets of parity check codes in the buffer memory 116 until generating the eight sets of parity check codes.
- the flash memory controller 110 then is arranged for respectively programming/writing the fifth, sixth, seventh, . . . , and (184)-th data units into flash memory chips 512 , 514 , 522 , and 524 wherein the second codec 134 is arranged for performing RAID encoding operation upon the fifth, sixth, seventh, . . . , and (184)-th data units to respectively generate different sets of parity check codes S 8 , S 9 , S 10 , . . . , and S 183 corresponding to word line sets WL_G 2 , . . . , WL_G 45 and is storing the different sets of parity check codes S 8 , S 9 , S 10 , . . . , and S 183 in the buffer memory 116 .
- the controller 110 is arranged for processing corresponding parity check codes and programming the processed parity check codes into data pages P 184 -P 191 of the last chip (i.e. chip 524 ).
- the controller 110 is arranged to classify all word line sets into a group of multiple odd word line sets (i.e. WL_G 0 , WL_G 2 , WL_G 4 , WL_G 6 , . . .
- the flash memory controller 110 is arranged for programming/writing the (185)-th data unit with the error correction code generated by first codec 132 into the data pages P 184 of flash memory chips 512 , 514 , and 522 (i.e.
- the second codec 134 is arranged for encoding the (185)-th data unit and the corresponding error correction code to generate the (185)-th set of parity check codes S 184 .
- the flash memory controller 110 is arranged for reading the first sets of parity check codes (S 0 , S 8 , S 16 , . . . , S 176 ) of each word line set among the group of odd word line sets (i.e.
- WL_G 0 , WL_G 2 , WL_G 4 , WL_G 6 , . . . , WL_G 44 from the buffer memory 116
- the second codec 134 is arranged for performing RS encoding operation upon the parity check codes (S 0 , S 8 , S 16 , . . . , S 176 ) with parity check codes S 184 to generate/obtain a final/resultant parity check code SF 0
- the flash memory controller 110 programs the final/resultant parity check code SF 0 into the data page P 184 of flash memory chip 524 .
- the second codec 134 is arranged for using the second encoding engine to perform one XOR operation upon all the second partial parity check codes (S 0 M, S 8 M, S 16 M, . . . , S 176 M, S 184 M) of parity checks (S 0 , S 8 , S 16 , . . . , S 176 , S 184 ) to generate a second partial parity check code of the final parity check code SF 0 .
- the second codec 134 is arranged for using the third encoding engine to perform one XOR operation upon all the third partial parity check codes (S 0 U, S 8 U, S 16 U, . . .
- the first, second, and third partial parity check codes of final parity check code SF 0 are respectively programmed by the controller 110 into the lower data page, middle data page, and upper data page of the data page P 184 of flash chip 524 .
- the flash memory controller 110 is arranged for respectively programming/writing the (186)-th, (187)-th, (188)-th data units with the corresponding error correction codes generated by first codec 132 into the data pages P 185 , P 186 , P 187 of flash memory chips 512 , 514 , and 522 (i.e. the last word line set WL_G 46 among the group of odd word line sets), and does not program the data into the data pages P 185 , P 186 , P 187 of flash memory chip 524 .
- the second codec 134 is arranged for encoding the (186)-th data unit and the corresponding error correction code to generate the (186)-th set of parity check codes S 185 .
- the flash memory controller 110 is arranged for reading the second sets of parity check codes (S 1 , S 9 , S 17 , . . . , S 177 ) of each word line set among the group of odd word line sets (i.e. WL_G 0 , WL_G 2 , WL_G 4 , WL_G 6 , . . .
- the second codec 134 is arranged for performing RS encoding operation upon the parity check codes (S 1 , S 9 , S 17 , . . . , S 177 ) with parity check codes S 185 to generate/obtain a final/resultant parity check code SF 1 .
- the flash memory controller 110 programs the final/resultant parity check code SF 1 into the data page P 185 of flash memory chip 524 .
- the second codec 134 is arranged for using the first encoding engine to perform one XOR operation upon all the first partial parity check codes (S 1 L, S 9 L, S 17 L, . . . , S 177 L, S 185 L) of parity checks (S 1 , S 9 , S 17 , . . . , S 177 , S 185 ) to generate a first partial parity check code of the final parity check code SF 1 .
- the second codec 134 is arranged for using the second encoding engine to perform one XOR operation upon all the second partial parity check codes (S 1 M, S 9 M, S 17 M, .
- the second codec 134 is arranged for using the third encoding engine to perform one XOR operation upon all the third partial parity check codes (S 1 U, S 9 U, S 17 U, . . . , S 177 U, S 185 U) of parity checks (S 1 , S 9 , S 17 , . . .
- the first, second, and third partial parity check codes of final parity check code SF 1 are respectively programmed by the controller 110 into the lower data page, middle data page, and upper data page of the data page P 185 of flash chip 524 .
- the flash memory controller 110 is arranged for programming/writing the (189)-th, (190)-th, (191)-th, and (192)-th data units with corresponding error correction codes generated by first codec 132 into data pages P 188 , P 189 , P 190 , and P 191 of flash memory chips 512 , 514 , and 522 .
- the second codec 134 also generates first, second, third, and fourth final parity check codes (SF 4 , SF 5 , SF 6 , and SF 7 ) of each of the group of even word line sets based on similar operations, and respectively programs/writes the final parity check codes (SF 4 , SF 5 , SF 6 , and SF 7 ) into data pages P 188 , P 189 , P 190 , and P 191 of flash memory chip 524 .
- first, second, third, and fourth final parity check codes SF 4 , SF 5 , SF 6 , and SF 7
- FIG. 7 is a diagram showing an example of adopting RS encoding operation as the RAID encoding operation.
- FIG. 8 is a diagram showing an example of adopting XOR calculation as the RAID encoding operation.
- the above-mentioned final parity check codes SF 0 -SF 7 are correspondingly generated based on the parity check codes S 0 -S 191 .
- the final parity check codes SF 0 -SF 7 substantially carry information of each of the parity check codes S 0 -S 191 . That is, each of multiple sets of parity check codes S 0 -S 191 can be obtained according to corresponding data pages of flash memory chips.
- the set of parity check codes S 1 can be obtained by reading data from the data pages P 1 of flash memory chips 512 , 514 , 522 , and 524 .
- the final parity check codes SF 0 -SF 7 can be used to correct errors if data errors occur.
- the flash memory controller 110 can re-generate parity check codes S 8 , S 16 , . . . , S 184 and final parity check codes SF 0 by reading data from other word line sets so as to re-generate the set of parity check codes S 0 , and then can use the set of parity check codes S 0 and data content read from the data pages P 0 of flash memory chips 512 , 522 , and 524 to generate data of the data pages P 0 of flash memory chip 514 .
- the flash memory controller 110 can re-generate parity check codes S 9 , S 17 , . . . , S 185 and final parity check codes SF 1 by reading data from other word line sets so as to re-generate the set of parity check codes S 1 , and then can use the set of parity check codes S 1 and data content read from the data pages P 1 of flash memory chips 512 , 522 , and 524 to generate data of the data pages P 1 of flash memory chip 514 . Also, the flash memory controller 110 can re-generate data of data pages P 2 and P 3 of flash memory chip 514 similarly. As mentioned above, by the above operation, the data errors can be properly corrected to recover the data only if no multiple word lines in super block 530 are open simultaneously.
- the corresponding data can be also properly corrected to recover the data content of word line sets WL_G 0 and WL_G 1 .
- each of data pages P 0 -P 191 as shown in FIG. 6 in other embodiments may indicate to comprise two or four data pages and is not limited to comprise only three data pages.
- each of data pages P 0 -P 191 has two data pages; in the QLC flash memory structure, each of data pages P 0 -P 191 has four data pages.
- the super block 530 consists of one TLC block of each of flash memory chips 512 , 514 , 522 , and 524 .
- the flash memory module 120 may be configured as two block planes, and the super block 530 consists of two TLC blocks of each of flash memory chips 512 , 514 , 522 , and 524 .
- FIG. 9 is a diagram showing an example of flash memory controller 110 programming/writing data into the super block 530 .
- FIG. 10 is a diagram showing an example of generating eight sets of final parity check codes SF 0 -SF 7 by using RS encoding operation according to the multiple sets of parity check codes S 0 -S 191 as shown in FIG.
- FIG. 11 is a diagram showing an example of generating eight sets of final parity check codes SF 0 -SF 7 by using XOR encoding operation according to the multiple sets of parity check codes S 0 -S 191 as shown in FIG. 9 .
- the operations of the embodiment in FIGS. 9, 10 , and 11 are similar to those described in FIGS. 6, 7, and 8 ; the detailed description is not described for brevity.
- the second codec is arranged for sequentially performing encoding operations for multiple different data of multiple-layer blocks in one super block and storing temporary parity check codes, which are correspondingly generated, in a buffer memory.
- the buffer memory for example is a storage space allocated from a DRAM to avoid the usage of a static random access memory (SRAM) so as to reduce circuit costs as far as possible.
- the second codec then is arranged for reading the temporary parity check codes stored in the buffer memory to generate final parity check codes having less data amount, and for storing the final parity check codes in last data pages of the last set among the group of odd word line sets and in last data pages of the last set among the group of even word line sets.
- the needed storage space of buffer memory in the flash memory controller can be significantly decreased, and it is not required to employ too much storage space to store the parity check codes. That is, the circuit costs of flash memory controller can be reduced, and the efficiency for using the flash memory module is improved greatly.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
A method for accessing a flash memory module is provide. The flash memory module is a 3D flash memory module including a plurality of flash memory chips, each flash memory chip includes a plurality of blocks, each block includes a plurality of pages, and the method includes: configuring the flash memory chips to set at least one super block of the flash memory chips; and allocating a buffer memory space to store a plurality of temporary parities generated when data is written into the at least one first super block.
Description
This application claims priority of U.S. provisional application Ser. No. 62/328,025 filed on Apr. 27, 2016 and priority of U.S. provisional application Ser. No. 62/328,027 filed on Apr. 27, 2016, which are entirely incorporated herein by reference.
The present invention relates to a flash memory, and more particularly to a method for accessing a flash memory module, a corresponding flash memory controller, and a memory device.
In order to make a flash memory with higher storage density and more capacity, the 3D flash memory manufacture becomes more important, and a variety of 3D NAND-type flash memory manufactures have been developed. For a conventional 3D NAND-type flash memory, since the manufacture structure becomes totally different and positions of floating gates are changed, it becomes more complicated for data writing and reading compared to a traditional 2D NAND-type flash memory, and thus some serious problems arise. For example, for a certain 3D NAND-type flash memories, multiple word lines may be defined as one word line set, and such word lines within the same word line set share the same control circuit. This inevitably causes that data errors also occur at floating gate transistors on the other word lines within a word line set if program fail occurs at floating gate transistors on one word line of the same word line set. In addition, data errors also occur at floating gate transistors on the other word lines within a word line set if one word line is open or two word lines are short for the same word line set. Accordingly, it is important to provide an effective error correction mechanism to maintain data integrity and accuracy as well as achieving the advantage of lower circuit costs.
Therefore one of the objectives of the present invention is to provide a method for accessing a flash memory module, a corresponding flash memory controller, and a memory device. The method employs RAID-like (Redundant Array of Independent Disks-like) error correction mechanism without occupying more flash memory space and merely with less buffer memory space, to solve the problems mentioned above.
According to one embodiment of the present invention, a method for accessing a flash memory module is provided. The flash memory module is a 3D NAND-type flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks. Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines, and floating transistors on each bit line form at least one page among the plurality of data pages. The method comprises: performing encoding upon data to generate at least one set of parity check codes, wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips; programming the data into the super block; writing and buffering the at least one set of parity check codes into a buffer memory; and, reading the at least one set of parity check codes from the buffer memory, then encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block.
According to one embodiment of the present invention, a flash memory controller for accessing a flash memory module is provided. The flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks. Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages. The flash memory controller comprises a memory, a microprocessor, and a codec. The memory is configured for storing a program code. The microprocessor is configured for performing the program code to control access of the flash memory module. The codec is configured for performing encoding upon data to generate at least one set of parity check codes, wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips. The microprocessor is arranged for programming the data into the super block, writing and buffering the at least one set of parity check codes into a buffer memory, reading the at least one set of parity check codes from the buffer memory, encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block.
According to one embodiment of the present invention, a memory device is disclosed. The memory device comprises a flash memory module and a flash memory controller. The flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks. Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages. The flash memory controller is configured for accessing the flash memory module. When receiving a programming/writing instruction from a host device to program data into the flash memory module, the flash memory controller is arranged for: performing encoding upon data to generate at least one set of parity check codes wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips, for programming the data into the super block, for writing and buffering the at least one set of parity check codes into a buffer memory, for reading the at least one set of parity check codes from the buffer memory, encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then for programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block.
According to one embodiment of the present invention, a method for accessing a flash memory module is further disclosed. The flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks. Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages. The method comprises: configuring and planning the flash memory chips so that the flash memory chips include at least one super block; and allocating a buffer memory space for storing multiple sets of temporary parity check codes generated by an encoding procedure during programming data into the at least one super block.
According to one embodiment of the present invention, a flash memory controller for accessing a flash memory module is further disclosed. The flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks. Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line format least one page among the plurality of data pages. The flash memory controller comprises a memory, a microprocessor, and a codec. The memory is configured for storing a program code. The microprocessor is configured for executing the program code to control access of the flash memory module. The microprocessor configures and plans the flash memory chips so that the flash memory chips include at least one super block, and allocates a buffer memory space for storing multiple sets of temporary parity check codes generated by an encoding procedure during programming data into the at least one super block.
According to one embodiment of the present invention, a memory device is further disclosed. The memory device comprises a flash memory module and a flash memory controller. The flash memory module is a 3D flash memory module including a plurality of flash memory chips, and each flash memory chip includes a plurality of blocks which include a plurality of multiple-level cell blocks. Each block includes a plurality of data pages and includes a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines. Floating transistors on each bit line form at least one page among the plurality of data pages. The flash memory controller is configured for accessing the flash memory module. The flash memory controller is further arranged for configuring and planning the flash memory chips so that the flash memory chips include at least one super block, and for assigning a buffer memory space for storing multiple sets of temporary parity check codes generated by an encoding procedure during programming data into the at least one super block.
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.
Please refer to FIG. 1 , which is a diagram of a memory device 100 according to an embodiment of the present invention. In the embodiment, the memory device 100 can be a portable memory device such as a memory card conforming to the standards of SD/NMC, CF, MS, and XD. The memory device 100 comprises a flash memory module 120 and a flash memory controller 110. The flash memory controller 110 is used for accessing the flash memory module 120. In the embodiment, the flash memory controller 110 comprises a microprocessor 112, read-only memory (ROM) 112M, control logic 114, buffer memory 116, and an interface logic 118. The read-only memory is used for storing program codes 112C. The microprocessor 112 is used for executing the program codes 112C to control the access of flash memory module 120. In other embodiments, the buffer memory 116 can be configured outside of the controller 110, and is implemented with a storage space allocated by a dynamic random access memory.
Typically, the flash memory module 120 may include multiple flash memory chips each including a plurality of blocks. For example, the controller, e.g. flash memory controller 110 executing the program codes 112C by using microprocessor 112, is arranged to perform copy, erase, and merge operations upon the flash memory module 120 wherein the copy, erase, and merge operations are performed block by block. Additionally, a block can record a particular number of data pages wherein the controller, e.g. flash memory controller 110 executing the program codes 112C by using microprocessor 112, is arranged to perform data programming upon the flash memory module 120 page by page.
In practice, the flash memory controller 110 executing the program codes 112C by using the microprocessor 112 can perform a variety of control operations by using its internal circuit elements. For instance, the controller 110 can use the control logic 114 to control the access of flash memory module 120 (more particularly to control the access of at least one block or at least one data page), use the buffer memory 116 to buffer data, and use the interface logic 118 to communicate with a host device (not shown in FIG. 1 ).
Additionally, in the embodiment, the control logic 114 comprises a first codec 132 and a second codec 134. The first codec 132 is used for encoding data which is to be programmed/written into a block of flash memory module 120 to generate a corresponding error correction code wherein the first codec 132 can generate the corresponding error correction code by referring to content of a sector of a data page. The generated error correction code with the content of the sector of the data page is written/programmed into the data page. Additionally, the second codec 134 is a RAID (Redundant Array of Independent Disks) compressor/decompressor used for encoding data to be programmed into multiple flash memory chips to generate corresponding parity check codes; the description is detailed later.
In the embodiment, the flash memory module 120 is a 3D NAND-type flash memory module. Please refer to FIG. 2 , which is a diagram of a 3D NAND-type flash memory. As shown in FIG. 2 , the 3D NAND-type flash memory comprises multiple floating gate transistors 202, and the structure of 3D NAND-type flash memory is made up of multiple bit lines (e.g. BL1-BL3) and multiple word lines (e.g. WL0-WL2 and WL4-WL6). One bit line can be also called one string. In FIG. 2 , taking an example of a top plane, at least one data page constitutes all floating gate transistors on the word line WL0, and another at least one data page constitutes all floating gate transistors on the word line WL1; another at least one data page constitutes all floating gate transistors on the word line WL2, and other so on. Further, for example, the definition of one data page (logic data page) and the relation between such data page and word line WL0 may be different, and which may depend on different data programming types adopted by the flash memory. Specifically, all floating gate transistors on the word line WL0 correspond to one single logic data page when the flash memory adopts single-level cell (SLC) data programming. All floating gate transistors on the word line WL0 may correspond to two, three, or four logic data pages when the flash memory adopts multi-level cell (MLC) data programming. For example, a triple-level cell (TLC) memory structure means that all floating gate transistors on the word line WL0 correspond to three logical data pages. Instead, a quad-level cell (QLC) memory structure means that all floating gate transistors on the word line WL0 correspond to four logical data pages. The description for the TLC memory structure or QLC memory structure is not detailed here for brevity. Additionally, for the program/erase operation of flash memory controller 110, one data page is a minimum data unit which is programmed by the controller 110 into the module 120, and one block is a minimum data unit which is erased by the controller 110; that is, the controller 110 programs at least one data page for one data programming operation, and erases at least one block for one erase operation.
Please refer to FIG. 3 , which is a schematic diagram illustrating floating gate transistors 202. As shown in FIG. 3 , the gate and floating gate of each floating gate transistor are disposed all around its source and drain, to improve the capability of channel sensing.
It should be noted that the examples of 3D NAND-type flash memory and floating gate transistors 202 shown in FIG. 2 and FIG. 3 are not meant to be limitations of the present invention. In other embodiments, 3D NAND-type flash memory may be designed or configured as different structures; for example, a portion of word lines may be mutually connected. Also, the design or configuration of floating gate transistor 202 may be modified as different structures.
As mentioned above, in some conventional 3D NAND-type flash memory structure, multiple word lines are defined as or classified into a word line set, i.e. a set of word lines, and such word line set correspond to or include a common control circuit. This inevitably causes that data errors occur at other floating gate transistors on the other word lines of such word line set when programming data to the floating gate transistors on a word line of such word line set fails. In the embodiment, the word lines disposed/positioned on the same plane is configured as or classified into a word line set. Refer back to FIG. 2 . Word lines WL0-WL3 are classified into a first word line set, and word lines WL4-WL7 are classified into a second word line set; and other so on. Refer to FIG. 4 , which is a diagram illustrating multiple word line sets in one block. As shown in FIG. 4 , it is assumed that the block has forty-eight 3D stacked planes, i.e. 48 word line sets. Each word line set has four word lines and thus has all transistors on total one hundred and ninety-two word lines. As shown in FIG. 4 , the block has forty-eight word line sets which are represented by WL_G0-WL_G47. Additionally, in this figure, the block is a TLC block. That is, floating gate transistors on each word line can be used for storing data content of three data pages. As shown by FIG. 4 , for example, floating gate transistors on word line WL0 included by the word line set WL_G0 can be used for storing lower data page P0L, middle data page P0M, and upper data page P0U. The floating gate transistors on word line WL1 included by the word line set WL_G0 can be used for storing lower data page P1L, middle data page P1M, and upper data page P1U. The floating gate transistors on word line WL2 included by the word line set WL_G0 can be used for storing lower data page P2L, middle data page P2M, and upper data page P2U. The floating gate transistors on word line WL3 included by the word line set WL_G0 can be used for storing lower data page P3L, middle data page P3M, and upper data page P3U. When the controller 110 programs or writes data into the data pages of word line set WL_G0, the controller 110 is arranged for sequentially programs data into the floating gate transistors on word lines WL0, WL1, WL2, and WL3. Even if data is successfully programmed into word lines WL0 and WL1 but programming other data into word line WL2 fails (i.e. program fail), programming fail will occur at the word line set WL_G0 since the program fail of word line WL2 causes errors at the word lines WL0 and WL1.
Further, in some situations, even data has been successfully programmed into the word line set WL_G0, there is a possibility that the data cannot be readout from word line set WL_G0 or reading errors occur. For instance, the data cannot be read if one word line open occurs; all the data of one word line set will become erroneous if one word line in such word line set is open. Further, if two word lines in different word line sets are shorted (e.g. word lines WL3 and WL4 are shorted), then all the data of two word line sets WL_G0 and WL_G1 cannot be read successfully. That is, the two word line sets WL_G0 and WL_G1 are equivalently shorted.
As mentioned above, since data errors may occur at one or two adjacent word line set(s) due to the program fail, word line open, and word line short when programming data into or reading data from a flash memory, to solve the problems, in the embodiment a method/mechanism for accessing flash memory module 120 is provided. One of the advantages is that the method/mechanism merely consumes less resource (i.e. occupies less memory space). The description of the method/mechanism is detailed in the following.
Please refer to FIG. 1 in conjunction with FIG. 5 . FIG. 5 is a diagram illustrating an example of the flash memory controller 110 programming data into the flash memory module 120. As shown in FIG. 5 , the flash memory module 120 comprises multiple channels (in the embodiment, two channels 510 and 520), and each channel corresponds to a sequencer of flash memory controller 110 and comprises multiple flash memory chips. In the embodiment, the channel 510 comprises flash memory chips 512 and 514, and the channel 520 comprises flash memory chips 522 and 524. Additionally, a super block consists of one block of each flash memory chip 512, 514, 522, and 524. The flash memory controller 110 is arranged for programming data by super blocks. During data programming, the control logic 114 of flash memory controller 110 is arranged for temporarily storing temporary and partial parity check codes generated by the second codec 134 in the buffer memory 116 and reading the temporary and partial parity check codes from the buffer memory 116 by accessing the buffer memory 116. In practice, the buffer memory 116 can be implemented with a dynamic random access memory (DRAM), and the circuit cost can be reduced correspondingly. For example, a DRAM can be adopted to store data by a general data area, a lookup table data area, and to temporarily store parity check codes or partial parity check codes by further allocating a memory storage space of the DRAM; the allocated memory storage space can be a space with a fixed physical address or a logic address. In the embodiment, the super block 530 comprises one TLC block of each flash memory chip 512, 514, 522, and 524. In other embodiments, the super block 530 may comprise one QLC block of each flash memory chip 512, 514, 522, and 524. This is not meant to be a limitation.
Refer to FIG. 6 , which is a diagram illustrating an example of flash memory controller 110 programming data into the super block 530 according to a first embodiment of the present invention. Each data unit is programmed into respective one page of flash memory chips 512, 514, 522, and 524. For instance, the first data unit is programmed into the lower data page P0L, middle data page P0M, and upper data page P0U of respective first data page P0 of flash memory chips 512, 514, 522, and 524. The second data unit is programmed into the lower data page P1L, middle data page P1M, and upper data page P1U of respective second data page P1 of flash memory chips 512, 514, 522, and 524; and others so on. The (N)-th data unit is programmed into the lower data page P(N−1)L, middle data page P(N−1)M, and upper data page P(N−1)U of respective (N)-th data page P(N−1) of flash memory chips 512, 514, 522, and 524; for example, N is equal to 192.
When the flash memory controller 110 is arranged to program the first data unit into the super block 530, the first codec 132 encodes different portions of the first data unit to generate corresponding error correction codes, and then the first data unit with the corresponding error correction codes generated by the first codec 132 are to be programmed into a first data page P0 of each of flash memory chips 512, 514, 522, and 524. Specifically, the first codec 132 encodes a first data portion of the first data unit to generate an error correction code, and the first data portion with the generated error correction code are to be programmed into lower data page P0L, middle data page P0M, and upper data page P0U of the first data page P0 of flash memory chip 512. The first codec 132 then encodes a second data portion of the first data unit to generate an error correction code, and the second data portion with the generated error correction code are to be programmed into lower data page P0L, middle data page P0M, and upper data page P0U of the first data page P0 of flash memory chip 514. The first codec 132 then encodes a third data portion of the first data unit to generate an error correction code, and the third data portion with the generated error correction code are to be programmed into lower data page P0L, middle data page P0M, and upper data page P0U of the first data page P0 of flash memory chip 522. The first codec 132 then encodes a fourth data portion (a last data portion) of the first data unit to generate an error correction code, and the fourth data portion with the generated error correction code are to be programmed into lower data page P0L, middle data page P0M, and upper data page P0U of the first data page P0 of flash memory chip 524. It should be noted that the operation of first codec 132 can be performed upon one sector data each time, and each data page consists of multiple sectors.
Before programming/writing the first data unit with the error correction codes generated by the first codec 132 into the super block 530, the second codec 134 of flash memory controller 110 is arranged for performing RAID encoding upon the first data unit with the error correction codes to generate a first set of parity check codes S0. In one embodiment, the second codec 134 can employ RS (Reed-Solomon) encoding operation or XOR (exclusive-OR) encoding operation upon the data content to be programmed into the first data page P0 of each of flash memory chips 512, 514, 522, and 524, to generate the first set of parity check codes S0. For example, the second codec 134 can be arranged to perform an XOR encoding operation upon data content of lower data pages P0L of first data pages P0 of flash memory chips 512, 514, 522, and 524 to generate a first partial parity check code SOL in the first set of parity check codes S0, to perform an XOR encoding operation upon data content of middle data pages P0M of first data pages P0 of flash memory chips 512, 514, 522, and 524 to generate a second partial parity check code S0M in the first set of parity check codes S0, and to perform an XOR encoding operation upon data content of upper data pages P0U of first data pages P0 of flash memory chips 512, 514, 522, and 524 to generate a third partial parity check code S0U in the first set of parity check codes S0. That is, the first set of parity check codes S0 comprises first partial parity check code S0L, second partial parity check code S0M, and third partial parity check code S0U, and these three partial parity check codes are generated by distinct XOR encoding operations. In practice, the second codec 134 may comprise three codec engines used for generating the three partial parity check codes. Similarly, for each of other sets of parity check codes, the three codec engines of second codec 134 can be employed for respectively generating corresponding three different partial parity check codes. Further, if an RS encoding operation is adopted in another embodiment, the second codec 134 can directly perform the RS encoding operation upon the data content of first data pages P0 of flash memory chips 512, 514, 522, and 524 to generate the first set of parity check codes S0 without using the three codec engines.
The first set of parity check codes S0 generated by second codec 134 is used for correcting error(s) occurring at first data page P0 of anyone flash memory chip among the flash memory chips 512, 514, 522, and 524. Taking the example of XOR encoding operation, if errors occur at the lower data page P0L of first data page P0 of flash memory chip 512 and cannot be corrected by the error correction codes generated by first codec 132, the second codec 134 can be arranged to read data content of lower data pages P0L of all first data pages P0 of other flash memory chips 514, 522, 524 and the first partial parity check code SOL of first set of parity check codes S0 from the module 120 to perform error correction so as to determine correct data content of lower data page P0L of first data page P0 of flash memory chip 512. Similarly, if errors occur at the middle data page P0M of first data page P0 of flash memory chip 512 and cannot be corrected by the error correction codes generated by first codec 132, the second codec 134 can be arranged to read data content of middle data pages P0M of all first data pages P0 of other flash memory chips 514, 522, 524 and the second partial parity check code S0M of first set of parity check codes S0 from the module 120 to perform error correction so as to determine correct data content of middle data page P0M of first data page P0 of flash memory chip 512. Similarly, if errors occur at the upper data page P0U of first data page P0 of flash memory chip 512 and cannot be corrected by the error correction codes generated by first codec 132, the second codec 134 can be arranged to read data content of upper data pages P0U of all first data pages P0 of other flash memory chips 514, 522, 524 and the third partial parity check code S0U of first set of parity check codes S0 from the module 120 to perform error correction so as to determine correct data content of upper data page P0U of first data page P0 of flash memory chip 512.
Further, taking the example of RS encoding operation, if errors occur at the first data page P0 of flash memory chip 512 and cannot be corrected by the error correction codes generated by first codec 132, the second codec 134 can be arranged to read data content of all first data pages P0 of other flash memory chips 514, 522, 524 and the first set of parity check codes S0 from the module 120 to perform error correction so as to determine correct data content of first data page P0 of flash memory chip 512.
Further, the first set of parity check codes S0 generated by second codec 134 can be temporarily stored in the buffer memory 116 of flash memory controller 110.
Further, during data programming of the first data unit, the flash memory controller 110 can be arranged to read and then check the data to determine whether the data has been programmed successfully. When the data is erroneously programmed or program fails, the second codec 134 can directly use the first set of parity check codes S0 stored in the buffer memory 116 to correct the data which has been read for checking. Since the flash memory module 120 does not directly correct/modify data which has been programmed, the corrected data (i.e. the first data unit has been corrected) with other data of super block 530 can be programmed into another super block after a waiting time period.
When the flash memory controller 110 is arranged to program a second data unit into the super block 530, the first codec 132 encodes different portions of the first data unit to generate corresponding error correction codes, and then the second data unit with the corresponding error correction codes generated by the first codec 132 are to be programmed into a second data page P1 of each of flash memory chips 512, 514, 522, and 524. Before programming/writing the second data unit with the error correction codes generated by the first codec 132 into the super block 530, the second codec 134 of flash memory controller 110 is arranged for performing RAID encoding upon the second data unit with the error correction codes to generate a second set of parity check codes S1. In one embodiment, the second codec 134 can employ RS (Reed-Solomon) encoding operation or XOR (exclusive-OR) encoding operation upon the data content to be programmed into the second data page P1 of each of flash memory chips 512, 514, 522, and 524, to generate the second set of parity check codes S1. For example, the second codec 134 can be arranged to perform an XOR encoding operation upon data content of lower data pages P1L of second data pages P1 of flash memory chips 512, 514, 522, and 524 to generate a first partial parity check code S1L in the second set of parity check codes S1, to perform an XOR encoding operation upon data content of middle data pages P1M of second data pages P1 of flash memory chips 512, 514, 522, and 524 to generate a second partial parity check code S1M in the second set of parity check codes S1, and to perform an XOR encoding operation upon data content of upper data pages P1U of second data pages P1 of flash memory chips 512, 514, 522, and 524 to generate a third partial parity check code S1U in the second set of parity check codes S1. That is, the second set of parity check codes S1 comprises first partial parity check code S1L, second partial parity check code S1M, and third partial parity check code S1U, and these three partial parity check codes are generated by distinct XOR encoding operations. In practice, the second codec 134 may comprise three codec engines used for generating the three partial parity check codes. Similarly, for each of other sets of parity check codes, the three codec engines of second codec 134 can be employed for respectively generating corresponding three different partial parity check codes. Further, if an RS encoding operation is adopted in another embodiment, the second codec 134 can directly perform the RS encoding operation upon the data content of second data pages P1 of flash memory chips 512, 514, 522, and 524 to generate the second set of parity check codes S1 without using the three codec engines.
Further, the second set of parity check codes S1 generated by second codec 134 can be temporarily stored in the buffer memory 116 of flash memory controller 110. Similarly, during data programming of the second data unit, the flash memory controller 110 can be arranged to read and then check the data to determine whether the data has been programmed successfully. When the data is erroneously programmed or program fails, the second codec 134 can directly use the second set of parity check codes S1 stored in the buffer memory 116 to correct the data which has been read for checking. Since the flash memory module 120 does not directly correct/modify data which has been programmed, the corrected data (i.e. the second data unit has been corrected) with other data of super block 530 can be programmed into another super block after a waiting time period.
It should be noted that the data pages P0 of flash memory chips 512, 514, 522, and 524 may be damaged when data is erroneously programmed during data programming of the second data unit since the data pages P0 and P1 belong into the same word line set WL_G0. For instance, if data is erroneously programmed into the data page P1 of flash memory chip 514 during data programming of the second data unit, then errors will occur at the data page P0 in flash memory chip 514, which has been successfully programmed. In this situation, the first set of parity check codes S0 may be not stored in the buffer memory 116, and thus the flash memory controller 110 can read the first set of parity check codes S0 from the super block 530 to correct the first data unit which is read out from the super block 530.
Based on the same operation, the flash memory controller 110 programs/writes a third data unit into the third data pages P2 of flash memory chips 512, 514, 522, and 524 and generates a corresponding third set of parity check codes S2, and then programs/writes a fourth data unit into the fourth data pages P3 of flash memory chips 512, 514, 522, and 524 and generates a corresponding fourth set of parity check codes S3. After that, data programming for the word line set WL_G0 is completed. Similarly, the flash memory controller 110 is arranged to respectively program/write the fifth, sixth, seventh, and eighth data units into the respective data pages P4, P5, P6, and P7 of flash memory chips 512, 514, 522, and 524, and to generate the first, second, third, and fourth sets of parity check codes S4, S5, S6, and S7 of the corresponding word line set WL_G1, so as to complete the data programming of word line set WL_G1. In addition, to reduce the circuit costs, the buffer memory 116 can be implemented by using a DRAM which can allocate a storage space for temporarily storing parity check codes of RAID encoding operations of the flash memory controller 110. The controller 110 can be arranged to immediately store a set of parity check codes in the buffer memory 116 after generating such set of parity check codes, or to not temporarily store eight sets of parity check codes in the buffer memory 116 until generating the eight sets of parity check codes.
Similarly, the flash memory controller 110 then is arranged for respectively programming/writing the fifth, sixth, seventh, . . . , and (184)-th data units into flash memory chips 512, 514, 522, and 524 wherein the second codec 134 is arranged for performing RAID encoding operation upon the fifth, sixth, seventh, . . . , and (184)-th data units to respectively generate different sets of parity check codes S8, S9, S10, . . . , and S183 corresponding to word line sets WL_G2, . . . , WL_G45 and is storing the different sets of parity check codes S8, S9, S10, . . . , and S183 in the buffer memory 116.
For the last two word line sets WL_G46 and WL_G47 of super block 530, the controller 110 is arranged for processing corresponding parity check codes and programming the processed parity check codes into data pages P184-P191 of the last chip (i.e. chip 524). In order to solve the problems generated due to program fail, word line open, and word line short of word line set (s), the controller 110 is arranged to classify all word line sets into a group of multiple odd word line sets (i.e. WL_G0, WL_G2, WL_G4, WL_G6, . . . , WL_G44, and WL_G46) and a group of multiple even multiple word line sets (i.e. WL_G1, WL_G3, WL_G5, WL_G7, . . . , WL_G45, and WL_G47) according to the order of data programming when processing corresponding parity check codes. For the (185)-th data unit, the flash memory controller 110 is arranged for programming/writing the (185)-th data unit with the error correction code generated by first codec 132 into the data pages P184 of flash memory chips 512, 514, and 522 (i.e. the last word line set WL_G46 among the group of odd word line sets), and does not program the data into the data page P184 of flash memory chip 524. Before programming/writing the (185)-th data unit into super block 530, the second codec 134 is arranged for encoding the (185)-th data unit and the corresponding error correction code to generate the (185)-th set of parity check codes S184. Taking an example of RS encoding, the flash memory controller 110 is arranged for reading the first sets of parity check codes (S0, S8, S16, . . . , S176) of each word line set among the group of odd word line sets (i.e. WL_G0, WL_G2, WL_G4, WL_G6, . . . , WL_G44) from the buffer memory 116, and the second codec 134 is arranged for performing RS encoding operation upon the parity check codes (S0, S8, S16, . . . , S176) with parity check codes S184 to generate/obtain a final/resultant parity check code SF0. The flash memory controller 110 then programs the final/resultant parity check code SF0 into the data page P184 of flash memory chip 524. Additionally, taking an example of XOR operation as the RAID encoding scheme, in one embodiment, the second codec 134 is arranged for using the first encoding engine to perform one XOR operation upon all the first partial parity check codes (S0L, S8L, S16L, . . . , S176L, S184L) of parity checks (S0, S8, S16, . . . , S176, S184) to generate a first partial parity check code of the final parity check code SF0. The second codec 134 is arranged for using the second encoding engine to perform one XOR operation upon all the second partial parity check codes (S0M, S8M, S16M, . . . , S176M, S184M) of parity checks (S0, S8, S16, . . . , S176, S184) to generate a second partial parity check code of the final parity check code SF0. The second codec 134 is arranged for using the third encoding engine to perform one XOR operation upon all the third partial parity check codes (S0U, S8U, S16U, . . . , S176U, S184U) of parity checks (S0, S8, S16, . . . , S176, S184) to generate a third partial parity check code of the final parity check code SF0. The first, second, and third partial parity check codes of final parity check code SF0 are respectively programmed by the controller 110 into the lower data page, middle data page, and upper data page of the data page P184 of flash chip 524.
Similarly, For the (186)-th, (187)-th, (188)-th data units, the flash memory controller 110 is arranged for respectively programming/writing the (186)-th, (187)-th, (188)-th data units with the corresponding error correction codes generated by first codec 132 into the data pages P185, P186, P187 of flash memory chips 512, 514, and 522 (i.e. the last word line set WL_G46 among the group of odd word line sets), and does not program the data into the data pages P185, P186, P187 of flash memory chip 524. For the (186)-th data unit, before programming/writing the (186)-th data unit into super block 530, the second codec 134 is arranged for encoding the (186)-th data unit and the corresponding error correction code to generate the (186)-th set of parity check codes S185. Taking an example of RS encoding, the flash memory controller 110 is arranged for reading the second sets of parity check codes (S1, S9, S17, . . . , S177) of each word line set among the group of odd word line sets (i.e. WL_G0, WL_G2, WL_G4, WL_G6, . . . , WL_G44) from the buffer memory 116, and the second codec 134 is arranged for performing RS encoding operation upon the parity check codes (S1, S9, S17, . . . , S177) with parity check codes S185 to generate/obtain a final/resultant parity check code SF1. The flash memory controller 110 then programs the final/resultant parity check code SF1 into the data page P185 of flash memory chip 524. Additionally, taking an example of XOR operation as the RAID encoding scheme, in one embodiment, the second codec 134 is arranged for using the first encoding engine to perform one XOR operation upon all the first partial parity check codes (S1L, S9L, S17L, . . . , S177L, S185L) of parity checks (S1, S9, S17, . . . , S177, S185) to generate a first partial parity check code of the final parity check code SF1. The second codec 134 is arranged for using the second encoding engine to perform one XOR operation upon all the second partial parity check codes (S1M, S9M, S17M, . . . , S177M, S185M) of parity checks (S1, S9, S17, . . . , S177, S185) to generate a second partial parity check code of the final parity check code SF1. The second codec 134 is arranged for using the third encoding engine to perform one XOR operation upon all the third partial parity check codes (S1U, S9U, S17U, . . . , S177U, S185U) of parity checks (S1, S9, S17, . . . , S177, S185) to generate a third partial parity check code of the final parity check code SF1. The first, second, and third partial parity check codes of final parity check code SF1 are respectively programmed by the controller 110 into the lower data page, middle data page, and upper data page of the data page P185 of flash chip 524.
Based on the similar operation, for the (189)-th, (190)-th, (191)-th, and (192)-th data units, the flash memory controller 110 is arranged for programming/writing the (189)-th, (190)-th, (191)-th, and (192)-th data units with corresponding error correction codes generated by first codec 132 into data pages P188, P189, P190, and P191 of flash memory chips 512, 514, and 522. The second codec 134 also generates first, second, third, and fourth final parity check codes (SF4, SF5, SF6, and SF7) of each of the group of even word line sets based on similar operations, and respectively programs/writes the final parity check codes (SF4, SF5, SF6, and SF7) into data pages P188, P189, P190, and P191 of flash memory chip 524.
The operations for generating the final parity check codes SF0-SF7 of the group of odd word line sets and group of even word line sets according to the multiple sets of parity check codes S0-S191 are illustrated in FIG. 7 and FIG. 8 . FIG. 7 is a diagram showing an example of adopting RS encoding operation as the RAID encoding operation. FIG. 8 is a diagram showing an example of adopting XOR calculation as the RAID encoding operation.
It should be noted that the above-mentioned final parity check codes SF0-SF7 are correspondingly generated based on the parity check codes S0-S191. The final parity check codes SF0-SF7 substantially carry information of each of the parity check codes S0-S191. That is, each of multiple sets of parity check codes S0-S191 can be obtained according to corresponding data pages of flash memory chips. For example, the set of parity check codes S1 can be obtained by reading data from the data pages P1 of flash memory chips 512, 514, 522, and 524. Thus, the final parity check codes SF0-SF7 can be used to correct errors if data errors occur. For instance, if one word line in the word line set WL_G0 is open (e.g. a word line corresponding to data pages P0 of flash memory chip 514 is open), the flash memory controller 110 can re-generate parity check codes S8, S16, . . . , S184 and final parity check codes SF0 by reading data from other word line sets so as to re-generate the set of parity check codes S0, and then can use the set of parity check codes S0 and data content read from the data pages P0 of flash memory chips 512, 522, and 524 to generate data of the data pages P0 of flash memory chip 514. The flash memory controller 110 can re-generate parity check codes S9, S17, . . . , S185 and final parity check codes SF1 by reading data from other word line sets so as to re-generate the set of parity check codes S1, and then can use the set of parity check codes S1 and data content read from the data pages P1 of flash memory chips 512, 522, and 524 to generate data of the data pages P1 of flash memory chip 514. Also, the flash memory controller 110 can re-generate data of data pages P2 and P3 of flash memory chip 514 similarly. As mentioned above, by the above operation, the data errors can be properly corrected to recover the data only if no multiple word lines in super block 530 are open simultaneously.
Additionally, if two word lines respectively positioned at word line sets WL_G0 and WL_G1 are short (e.g. two word lines correspondingly to the data pages P3 and P4 of flash memory chip 514 are short), the corresponding data can be also properly corrected to recover the data content of word line sets WL_G0 and WL_G1.
It should be noted that each of data pages P0-P191 as shown in FIG. 6 in other embodiments may indicate to comprise two or four data pages and is not limited to comprise only three data pages. For example, in the MLC flash memory structure, each of data pages P0-P191 has two data pages; in the QLC flash memory structure, each of data pages P0-P191 has four data pages.
Additionally, in the embodiment of FIG. 5 , the super block 530 consists of one TLC block of each of flash memory chips 512, 514, 522, and 524. However, in other embodiments, the flash memory module 120 may be configured as two block planes, and the super block 530 consists of two TLC blocks of each of flash memory chips 512, 514, 522, and 524. FIG. 9 is a diagram showing an example of flash memory controller 110 programming/writing data into the super block 530. FIG. 10 is a diagram showing an example of generating eight sets of final parity check codes SF0-SF7 by using RS encoding operation according to the multiple sets of parity check codes S0-S191 as shown in FIG. 9 . FIG. 11 is a diagram showing an example of generating eight sets of final parity check codes SF0-SF7 by using XOR encoding operation according to the multiple sets of parity check codes S0-S191 as shown in FIG. 9 . The operations of the embodiment in FIGS. 9, 10 , and 11 are similar to those described in FIGS. 6, 7, and 8 ; the detailed description is not described for brevity.
To simply describe the spirits of the present invention, for the method for accessing the flash memory module, the second codec is arranged for sequentially performing encoding operations for multiple different data of multiple-layer blocks in one super block and storing temporary parity check codes, which are correspondingly generated, in a buffer memory. The buffer memory for example is a storage space allocated from a DRAM to avoid the usage of a static random access memory (SRAM) so as to reduce circuit costs as far as possible. The second codec then is arranged for reading the temporary parity check codes stored in the buffer memory to generate final parity check codes having less data amount, and for storing the final parity check codes in last data pages of the last set among the group of odd word line sets and in last data pages of the last set among the group of even word line sets. By doing so, in addition to being capable of properly correcting data errors generated due to program fail, word line open, and word line short, the needed storage space of buffer memory in the flash memory controller can be significantly decreased, and it is not required to employ too much storage space to store the parity check codes. That is, the circuit costs of flash memory controller can be reduced, and the efficiency for using the flash memory module is improved greatly.
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 (15)
1. A method for accessing a flash memory module, the flash memory module being a 3D NAND-type flash memory module including a plurality of flash memory chips, each flash memory chip including a plurality of blocks which include a plurality of multiple-level cell blocks, each block including a plurality of data pages and including a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines, floating transistors on each bit line forming at least one page among the plurality of data pages, and the method comprises:
performing encoding upon data to generate at least one set of parity check codes, wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips;
programming the data into the super block;
writing and buffering the at least one set of parity check codes into a buffer memory; and
reading the at least one set of parity check codes from the buffer memory, then encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block;
wherein each flash memory chip of the 3D NAND-type flash memory module has a plurality of 3D stacked planes; all word lines disposed on a same 3D stacked plane are classified into a same word line set all word line sets are classified into a group of multiple odd word line sets and a group of multiple even word line sets; and, the at least one set of parity check codes is generated for data disposed on particular word lines associated with a same order respectively comprised within different non-adjacent word line sets, the different non-adjacent word line sets being the multiple odd word line sets or the multiple even word line sets.
2. The method of claim 1 , further comprising:
when error(s) occurring due to programming for the data or program fail, directly using the at least one set of parity check codes temporarily stored in the buffer memory to correct the error(s) of the data.
3. The method of claim 1 , further comprising:
during the data being programmed into the super block:
reading a portion of the data, which has been written into the super block, from the super block; and
reading at least one portion of parity check codes from the buffer memory and using the at least one portion of parity check codes to perform error correction upon the portion of the data when an error occurs and cannot corrected during reading the portion of the data.
4. The method of claim 1 , wherein the step of performing encoding upon the data to generate the at least one set of parity check codes comprises:
sequentially performing encoding upon first to N-th data units to generate first to N-th sets of parity check codes; and
the step of programming the data into the super block comprises:
respectively programming the first to N-th data units into first data pages to N-th data pages corresponding to the flash memory chips of the super block; and
the step of programming the at least one set of parity check codes into the buffer memory comprises:
programming the first to N-th sets of parity check codes into the buffer memory.
5. The method of claim 4 , wherein the at least one set of parity check codes is an at least one set of temporary parity check codes, and the method further comprises:
reading the first to N-th sets of parity check codes from the buffer memory to generate multiple sets of final parity check codes according to the first to N-th sets of parity check codes; and
programming the multiple sets of final parity check codes into the super block.
6. The method of claim 5 , wherein multiple word lines positioned on a same plane of each block forms a word line set, and the step of programming the multiple sets of final parity check codes into the super block comprises:
programming the multiple sets of final parity check codes into data pages of a flash memory chip corresponding to last two word line sets of the super block.
7. The method of claim 1 , wherein the multiple-level cell blocks are triple-level cell (TLC) blocks or quad-level cell (QLC) blocks.
8. A flash memory controller for accessing a flash memory module, the flash memory module being a 3D flash memory module including a plurality of flash memory chips, each flash memory chip including a plurality of blocks which include a plurality of multiple-level cell blocks, each block including a plurality of data pages and including a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines, floating transistors on each bit line forming at least one page among the plurality of data pages, and the flash memory controller comprises:
a memory, configured for storing a program code:
a microprocessor, configured for performing the program code to control access of the flash memory module; and
a codec, configured for performing encoding upon data to generate at least one set of parity check codes, wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips;
wherein the microprocessor is arranged for programming the data into the super block, writing and buffering the at least one set of parity check codes into a buffer memory, reading the at least one set of parity check codes from the buffer memory, encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block; each flash memory chip of the 3D NAND-type flash memory module has a plurality of 3D stacked planes; all word lines disposed on a same 3D stacked plane are classified into a same word line set all word line sets are classified into a group of multiple odd word line sets and a group of multiple even word line sets; and, the at least one set of parity check codes is generated for data disposed on particular word lines associated with a same order respectively comprised within different non-adjacent word line sets, the different non-adjacent word line sets being the multiple odd word line sets or the multiple even word line sets.
9. The flash memory controller of claim 8 , wherein when error(s) occurring due to programming for the data or program fail, the codec is arranged for directly using the at least one set of parity check codes temporarily stored in the buffer memory to correct the error(s) of the data.
10. The flash memory controller of claim 8 , wherein during the data being programmed into the super block: the microprocessor is arranged for reading a portion of the data, which has been written into the super block, from the super block, and reading at least one portion of parity check codes from the buffer memory; and the codec is arranged for using the at least one portion of parity check codes to perform error correction upon the portion of the data when an error occurs and cannot corrected during reading the portion of the data.
11. The flash memory controller of claim 8 , wherein the codec is arranged for sequentially performing encoding upon first to N-th data units to generate first to N-th sets of parity check codes, and respectively programming the first to N-th data units into first data pages to N-th data pages corresponding to the flash memory chips of the super block; and the microprocessor is arranged for programming the first to N-th sets of parity check codes into the buffer memory.
12. The flash memory controller of claim 11 , wherein the at least one set of parity check codes is a at least one set of temporary parity check codes, and the microprocessor is arranged for reading the first to N-th sets of parity check codes to generate multiple sets of final parity check codes according to the first to N-th sets of parity check codes, and programming the multiple sets of final parity check codes into the super block.
13. The flash memory controller of claim 12 , wherein multiple word lines positioned on a same plane of each block forms a word line set, and the microprocessor is arranged for programming the multiple sets of final parity check codes into data pages of a flash memory chip corresponding to last two word line sets of the super block.
14. The flash memory controller of claim 8 , wherein the multiple-level cell blocks are TLC blocks or QLC blocks.
15. A memory device, comprising:
a flash memory module being a 3D flash memory module including a plurality of flash memory chips, each flash memory chip including a plurality of blocks which include a plurality of multiple-level cell blocks, each block including a plurality of data pages and including a plurality of word lines respectively disposed on a plurality of different planes and a plurality of floating transistors controlled by a plurality of bit lines, floating transistors on each bit line forming at least one page among the plurality of data pages; and
a flash memory controller, configured for accessing the flash memory module;
wherein when receiving a programming/writing instruction from a host device to program data into the flash memory module, the flash memory controller is arranged for: performing encoding upon data to generate at least one set of parity check codes wherein the data is to be programmed into a super block of the flash memory chips and the super block includes one multiple-level cell block of each flash memory chip among the flash memory chips, for programming the data into the super block, for writing and buffering the at least one set of parity check codes into a buffer memory, for reading the at least one set of parity check codes from the buffer memory, encoding the at least one set of parity check codes to generate at least one set of final parity check codes, and then for programming the at least one set of final parity check codes into a plurality of data pages of one flash memory chip of the super block; each flash memory chip of the 3D NAND-type flash memory module has a plurality of 3D stacked planes; all word lines disposed on a same 3D stacked plane are classified into a same word line set all word line sets are classified into a group of multiple odd word line sets and a group of multiple even word line sets; and, the at least one set of parity check codes is generated for data disposed on particular word lines associated with a same order respectively comprised within different non-adjacent word line sets, the different non-adjacent word line sets being the multiple odd word line sets or the multiple even word line sets.
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/497,217 US10133664B2 (en) | 2016-04-27 | 2017-04-26 | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
| US15/979,467 US10510430B2 (en) | 2016-04-27 | 2018-05-15 | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
| US16/159,723 US10643733B2 (en) | 2016-04-27 | 2018-10-15 | Method, flashing memory controller, memory device for accessing 3D flash memory having multiple memory chips |
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201662328027P | 2016-04-27 | 2016-04-27 | |
| US201662328025P | 2016-04-27 | 2016-04-27 | |
| TW106100010A | 2017-01-03 | ||
| TW106100010 | 2017-01-03 | ||
| TW106100010A TWI614759B (en) | 2016-04-27 | 2017-01-03 | Method, flash memory controller, memory device for accessing flash memory |
| US15/497,217 US10133664B2 (en) | 2016-04-27 | 2017-04-26 | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
Related Child Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/979,467 Division US10510430B2 (en) | 2016-04-27 | 2018-05-15 | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
| US16/159,723 Continuation US10643733B2 (en) | 2016-04-27 | 2018-10-15 | Method, flashing memory controller, memory device for accessing 3D flash memory having multiple memory chips |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20170315909A1 US20170315909A1 (en) | 2017-11-02 |
| US10133664B2 true US10133664B2 (en) | 2018-11-20 |
Family
ID=60158929
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/497,217 Active US10133664B2 (en) | 2016-04-27 | 2017-04-26 | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
| US15/979,467 Active US10510430B2 (en) | 2016-04-27 | 2018-05-15 | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
| US16/159,723 Active US10643733B2 (en) | 2016-04-27 | 2018-10-15 | Method, flashing memory controller, memory device for accessing 3D flash memory having multiple memory chips |
Family Applications After (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/979,467 Active US10510430B2 (en) | 2016-04-27 | 2018-05-15 | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
| US16/159,723 Active US10643733B2 (en) | 2016-04-27 | 2018-10-15 | Method, flashing memory controller, memory device for accessing 3D flash memory having multiple memory chips |
Country Status (2)
| Country | Link |
|---|---|
| US (3) | US10133664B2 (en) |
| CN (1) | CN107391296B (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12300339B2 (en) * | 2021-03-03 | 2025-05-13 | Micron Technology, Inc. | Performing memory testing using error correction code values |
Families Citing this family (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI643201B (en) | 2017-11-27 | 2018-12-01 | 慧榮科技股份有限公司 | Encoder and associated encoding method and flash memory controller |
| US10372355B2 (en) * | 2017-12-29 | 2019-08-06 | Micron Technology, Inc. | Managing partial superblocks in a NAND device |
| KR102469174B1 (en) * | 2018-01-11 | 2022-11-23 | 에스케이하이닉스 주식회사 | Data storage device and operating method thereof |
| EP3766070B1 (en) | 2018-03-16 | 2025-12-10 | Micron Technology, Inc. | Nand data placement schema |
| CN112074816B (en) * | 2018-03-16 | 2025-02-21 | 美光科技公司 | Cluster parity for NAND data placement patterns |
| TWI658364B (en) * | 2018-03-20 | 2019-05-01 | 慧榮科技股份有限公司 | Method for accessing flash memory module and associated flash memory controller and electronic device |
| CN108595125A (en) * | 2018-04-27 | 2018-09-28 | 江苏华存电子科技有限公司 | A kind of correction flash memory write-in error handling method |
| US10789126B2 (en) * | 2018-10-09 | 2020-09-29 | Micron Technology, Inc. | Multiple memory devices having parity protection |
| US10802750B2 (en) * | 2019-02-28 | 2020-10-13 | Silicon Motion Inc. | Universal flash storage memory module, controller and electronic device with advanced turbo write buffer and method for operating the memory module |
| CN110326047A (en) * | 2019-05-17 | 2019-10-11 | 长江存储科技有限责任公司 | The data buffering operation of three-dimensional storage part with static random access memory |
| US11029874B2 (en) * | 2019-07-30 | 2021-06-08 | Western Digital Technologies, Inc. | Rolling XOR protection in efficient pipeline |
| CN111124290A (en) * | 2019-12-06 | 2020-05-08 | 合肥沛睿微电子股份有限公司 | Redundancy method applied to flash memory storage device and flash memory storage device |
| US11321173B2 (en) | 2019-12-31 | 2022-05-03 | Micron Technology, Inc. | Managing storage of multiple plane parity data in a memory sub-system |
| KR20210089804A (en) * | 2020-01-08 | 2021-07-19 | 삼성전자주식회사 | Memory module and memory system including the same |
| US11269725B2 (en) * | 2020-06-29 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for direct quad-level cell (QLC) programming |
| US11841794B2 (en) * | 2020-12-16 | 2023-12-12 | Micron Technology, Inc. | Memory sub-system write sequence track |
| US11966607B2 (en) | 2021-09-29 | 2024-04-23 | Silicon Motion, Inc. | Method and non-transitory computer-readable storage medium and apparatus for accessing to encoding-history information |
Citations (53)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6903972B2 (en) | 2003-07-30 | 2005-06-07 | M-Systems Flash Disk Pioneers Ltd. | Different methods applied for archiving data according to their desired lifetime |
| US20060050314A1 (en) | 2004-09-03 | 2006-03-09 | Hitoshi Shiga | Memory system which copies successive pages, and data copy method therefor |
| US20080244356A1 (en) | 2007-04-02 | 2008-10-02 | Broadcom Corporation | SUPER BLOCK ERROR CORRECTION CODE (ECC) ADAPTABLE TO COMMUNICATION SYSTEMS INCLUDING HARD DISK DRIVES (HDDs) AND OTHER MEMORY STORAGE DEVICES |
| TWM369528U (en) | 2008-08-05 | 2009-11-21 | Super Talent Electronics Inc | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
| US7710777B1 (en) | 2006-12-20 | 2010-05-04 | Marvell International Ltd. | Semi-volatile NAND flash memory |
| US20100259983A1 (en) | 2009-04-08 | 2010-10-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and data randomizing method thereof |
| US20100332922A1 (en) | 2009-06-30 | 2010-12-30 | Mediatek Inc. | Method for managing device and solid state disk drive utilizing the same |
| US20110283166A1 (en) | 2010-05-14 | 2011-11-17 | Samsung Electronics Co., Ltd | Storage device having a non-volatile memory device and copy-back method thereof |
| US20120173920A1 (en) | 2010-12-30 | 2012-07-05 | Seong Hun Park | Memory system and method of operating the same |
| US20120213005A1 (en) | 2011-02-22 | 2012-08-23 | Samsung Electronics Co., Ltd. | Non-volatile memory device, memory controller, and methods thereof |
| US20120246540A1 (en) | 2011-03-24 | 2012-09-27 | Samsung Electronics Co., Ltd. | Memory controller, devices including the same, and operating method thereof |
| US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
| US20130117620A1 (en) | 2011-11-04 | 2013-05-09 | Sang-Hyun Joo | Memory system and operating method thereof |
| US20130297984A1 (en) * | 2008-02-29 | 2013-11-07 | Kabushiki Kaisha Toshiba | Semiconductor storage device, method of controlling the same, and error correction system |
| US20130322171A1 (en) | 2012-05-29 | 2013-12-05 | Ji-Sang LEE | Methods of operating nonvolatile memory devices that support efficient error detection |
| US20140068319A1 (en) | 2012-09-06 | 2014-03-06 | International Business Machines Corporation | Error Detection And Correction In A Memory System |
| US20140101372A1 (en) | 2012-10-05 | 2014-04-10 | Young Woo Jung | Memory system and read reclaim method thereof |
| US20140129874A1 (en) | 2012-11-07 | 2014-05-08 | Apple Inc. | Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks |
| US20140149828A1 (en) | 2012-11-27 | 2014-05-29 | Lite-On It Corporation | Solid state drive and joint encoding/decoding method thereof |
| US20140185376A1 (en) | 2012-12-31 | 2014-07-03 | Alan Welsh Sinclair | Method and system for asynchronous die operations in a non-volatile memory |
| US8792277B2 (en) | 2003-06-24 | 2014-07-29 | Micron Technology, Inc. | Split data error correction code circuits |
| US20140226400A1 (en) | 2013-02-12 | 2014-08-14 | Kabushiki Kaisha Toshiba | Semiconductor device |
| US20140245105A1 (en) | 2013-02-26 | 2014-08-28 | Hoi-Ju CHUNG | Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices |
| US20140325124A1 (en) | 2013-04-30 | 2014-10-30 | International Business Machines Corporation | Memory system and method for operating a memory system |
| US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
| US20150058661A1 (en) | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
| US20150058700A1 (en) | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
| US20150058699A1 (en) | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
| US8972776B2 (en) * | 2013-03-06 | 2015-03-03 | Seagate Technology, Llc | Partial R-block recycling |
| US20150067439A1 (en) | 2013-09-03 | 2015-03-05 | Kabushiki Kaisha Toshiba | Memory controller |
| US20150169402A1 (en) | 2012-08-04 | 2015-06-18 | Seagate Technology Llc | Soft-decision compensation for flash channel variation |
| US20150178149A1 (en) | 2013-12-20 | 2015-06-25 | Lsi Corporation | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
| US20150248328A1 (en) | 2011-12-06 | 2015-09-03 | Samsung Electronics Co., Ltd. | Memory Systems and Block Copy Methods Thereof |
| TW201535114A (en) | 2013-12-09 | 2015-09-16 | Ibm | Recording dwell time in a non-volatile memory system |
| US20150293713A1 (en) | 2014-04-15 | 2015-10-15 | Jung-Min Seo | Storage controller, storage device, storage system and method of operating the storage controller |
| US20150347229A1 (en) | 2014-05-30 | 2015-12-03 | Sandisk Technologies Inc. | Method and System for Dynamic Word Line Based Configuration of a Three-Dimensional Memory Device |
| TW201603047A (en) | 2013-08-23 | 2016-01-16 | 慧榮科技股份有限公司 | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
| US20160062829A1 (en) | 2014-08-29 | 2016-03-03 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
| TW201612908A (en) | 2014-07-03 | 2016-04-01 | Sandisk Technologies Inc | On-chip copying of data between NAND flash memory and ReRAM of a memory die |
| US20160104539A1 (en) | 2014-10-08 | 2016-04-14 | Kyungryun Kim | Storage device and reliability verification method |
| US20160110249A1 (en) | 2014-10-20 | 2016-04-21 | Fusion-Io, Inc. | Adaptive storage reliability management |
| US20160110102A1 (en) | 2014-10-20 | 2016-04-21 | Samsung Electronics Co., Ltd. | Hybrid memory module structure and method of driving the same |
| US20160260489A1 (en) | 2015-03-02 | 2016-09-08 | Cheon An LEE | Nonvolatile memory device, storage device having the same, and operation method thereof |
| US20160306553A1 (en) | 2015-04-14 | 2016-10-20 | Sandisk Enterprise Ip Llc | High-Priority NAND Operations Management |
| US20160313931A1 (en) | 2015-04-27 | 2016-10-27 | SK Hynix Inc. | Memory system and operating method thereof |
| US20160342345A1 (en) | 2015-05-20 | 2016-11-24 | Sandisk Enterprise Ip Llc | Variable Bit Encoding Per NAND Flash Cell to Improve Device Endurance and Extend Life of Flash-Based Storage Devices |
| US20170031751A1 (en) * | 2015-07-31 | 2017-02-02 | SK Hynix Inc. | Data storage device and operating method thereof |
| US20170046225A1 (en) * | 2015-08-10 | 2017-02-16 | Silicon Motion Inc. | Flash memory controller and memory device for accessing flash memory module, and associated method |
| US20170060425A1 (en) | 2015-08-27 | 2017-03-02 | Kabushiki Kaisha Toshiba | Memory system and method of controlling nonvolatile memory |
| US9685242B2 (en) | 2014-03-11 | 2017-06-20 | Kabushiki Kaisha Toshiba | Memory system |
| US9767913B2 (en) | 2009-11-06 | 2017-09-19 | Toshiba Memory Corporation | Memory system performing read of nonvolatile semiconductor memory device |
| US20170317693A1 (en) | 2016-04-27 | 2017-11-02 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
| US20180018091A1 (en) | 2016-07-18 | 2018-01-18 | SK Hynix Inc. | Memory system and operation method for the same |
Family Cites Families (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100377119C (en) | 2003-06-20 | 2008-03-26 | 深圳市朗科科技有限公司 | Protection method for data in flash memory media |
| ITRM20040418A1 (en) | 2004-08-25 | 2004-11-25 | Micron Technology Inc | COMPRESSION READING METHOD OF DATA AT MULTIPLE LEVELS FOR TESTING MEMORIES. |
| JP4498370B2 (en) | 2007-02-14 | 2010-07-07 | 株式会社東芝 | Data writing method |
| JP5032155B2 (en) | 2007-03-02 | 2012-09-26 | 株式会社東芝 | Nonvolatile semiconductor memory device and nonvolatile semiconductor memory system |
| JP2008257773A (en) | 2007-04-02 | 2008-10-23 | Toshiba Corp | Nonvolatile semiconductor memory device, control method of nonvolatile semiconductor memory device, nonvolatile semiconductor memory system, and memory card |
| CN101281492B (en) | 2007-04-04 | 2011-02-02 | 扬智科技股份有限公司 | How to restore the comparison table of flash memory |
| KR101398212B1 (en) | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | Memory device and encoding and/or decoding method |
| CN101593156B (en) | 2008-05-28 | 2011-09-21 | 群联电子股份有限公司 | Management method, system and controller of various memories |
| TWI364661B (en) * | 2008-09-25 | 2012-05-21 | Silicon Motion Inc | Access methods for a flash memory and memory devices |
| CN101727976B (en) | 2008-10-15 | 2012-09-19 | 晶天电子(深圳)有限公司 | Multi-layer flash-memory device, a solid hard disk and a segmented non-volatile memory system |
| KR20110073932A (en) | 2009-12-24 | 2011-06-30 | 주식회사 하이닉스반도체 | Semiconductor storage system including ECC circuit and control method thereof |
| US8726126B2 (en) | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
| CN102236585B (en) | 2010-04-20 | 2015-06-03 | 慧荣科技股份有限公司 | Method for improving error correction capability and related memory device and controller thereof |
| KR101962786B1 (en) | 2012-03-23 | 2019-03-27 | 삼성전자주식회사 | Non-volatile memory device, non-volatile memory system, and program method of the same |
| US9110824B2 (en) | 2012-06-08 | 2015-08-18 | Silicon Motion Inc. | Method, controller, and memory device for correcting data bit(s) of at least one cell of flash memory |
| US8924820B2 (en) | 2012-07-27 | 2014-12-30 | Kabushiki Kaisha Toshiba | Memory controller, semiconductor memory system, and memory control method |
| US8958244B2 (en) | 2012-10-16 | 2015-02-17 | Conversant Intellectual Property Management Inc. | Split block decoder for a nonvolatile memory device |
| US9007860B2 (en) | 2013-02-28 | 2015-04-14 | Micron Technology, Inc. | Sub-block disabling in 3D memory |
| KR102252379B1 (en) | 2013-06-24 | 2021-05-14 | 삼성전자주식회사 | Memory System and Reading Method of the same |
| US9684568B2 (en) | 2013-12-26 | 2017-06-20 | Silicon Motion, Inc. | Data storage device and flash memory control method |
| TWI541819B (en) | 2013-12-30 | 2016-07-11 | 慧榮科技股份有限公司 | Method for performing error correction, and associated memory apparatus thereof and associated controller thereof |
| US9319073B2 (en) | 2014-02-11 | 2016-04-19 | Seagate Technology Llc | Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding |
| JP2015152502A (en) * | 2014-02-18 | 2015-08-24 | パナソニックIpマネジメント株式会社 | Temperature detection device |
| TWI530959B (en) | 2014-06-17 | 2016-04-21 | 慧榮科技股份有限公司 | Method for controlling a memory apparatus, and associated memory apparatus thereof and associated controller thereof |
| TWI554944B (en) | 2014-06-20 | 2016-10-21 | 慧榮科技股份有限公司 | Flash memory controlling apparatus, flash memory controlling system and flash memory controlling method |
| US10395753B2 (en) | 2014-08-28 | 2019-08-27 | Winbond Electronics Corp. | Semiconductor memory device and programming method thereof |
| TWI556254B (en) | 2014-10-14 | 2016-11-01 | 慧榮科技股份有限公司 | Data storage device and data accessing method thereof |
| US9984768B2 (en) | 2014-10-20 | 2018-05-29 | Sandisk Technologies Llc | Distributing storage of ECC code words |
| US10725860B2 (en) | 2016-03-04 | 2020-07-28 | Sandisk Technologies Llc | Storage system and method for handling a burst of errors |
| US9910772B2 (en) | 2016-04-27 | 2018-03-06 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
| CN106504796A (en) | 2016-10-28 | 2017-03-15 | 东南大学 | A Polar Code Error Correction Scheme Applied to NAND Flash Memory |
| JP6709180B2 (en) | 2017-02-28 | 2020-06-10 | キオクシア株式会社 | Memory system and control method |
-
2017
- 2017-04-26 US US15/497,217 patent/US10133664B2/en active Active
- 2017-04-26 CN CN201710284344.3A patent/CN107391296B/en active Active
-
2018
- 2018-05-15 US US15/979,467 patent/US10510430B2/en active Active
- 2018-10-15 US US16/159,723 patent/US10643733B2/en active Active
Patent Citations (56)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8792277B2 (en) | 2003-06-24 | 2014-07-29 | Micron Technology, Inc. | Split data error correction code circuits |
| US6903972B2 (en) | 2003-07-30 | 2005-06-07 | M-Systems Flash Disk Pioneers Ltd. | Different methods applied for archiving data according to their desired lifetime |
| US20060050314A1 (en) | 2004-09-03 | 2006-03-09 | Hitoshi Shiga | Memory system which copies successive pages, and data copy method therefor |
| US7710777B1 (en) | 2006-12-20 | 2010-05-04 | Marvell International Ltd. | Semi-volatile NAND flash memory |
| US20080244356A1 (en) | 2007-04-02 | 2008-10-02 | Broadcom Corporation | SUPER BLOCK ERROR CORRECTION CODE (ECC) ADAPTABLE TO COMMUNICATION SYSTEMS INCLUDING HARD DISK DRIVES (HDDs) AND OTHER MEMORY STORAGE DEVICES |
| US20110283167A1 (en) | 2007-04-02 | 2011-11-17 | Broadcom Corporation | Super block error correction code (ECC) adaptable to communication systems including hard disk drives (HDDs) and other memory storage devices |
| US20130297984A1 (en) * | 2008-02-29 | 2013-11-07 | Kabushiki Kaisha Toshiba | Semiconductor storage device, method of controlling the same, and error correction system |
| TWM369528U (en) | 2008-08-05 | 2009-11-21 | Super Talent Electronics Inc | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
| US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
| US20100259983A1 (en) | 2009-04-08 | 2010-10-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and data randomizing method thereof |
| US20100332922A1 (en) | 2009-06-30 | 2010-12-30 | Mediatek Inc. | Method for managing device and solid state disk drive utilizing the same |
| US9767913B2 (en) | 2009-11-06 | 2017-09-19 | Toshiba Memory Corporation | Memory system performing read of nonvolatile semiconductor memory device |
| US20110283166A1 (en) | 2010-05-14 | 2011-11-17 | Samsung Electronics Co., Ltd | Storage device having a non-volatile memory device and copy-back method thereof |
| US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
| US20120173920A1 (en) | 2010-12-30 | 2012-07-05 | Seong Hun Park | Memory system and method of operating the same |
| US20120213005A1 (en) | 2011-02-22 | 2012-08-23 | Samsung Electronics Co., Ltd. | Non-volatile memory device, memory controller, and methods thereof |
| US20120246540A1 (en) | 2011-03-24 | 2012-09-27 | Samsung Electronics Co., Ltd. | Memory controller, devices including the same, and operating method thereof |
| US20130117620A1 (en) | 2011-11-04 | 2013-05-09 | Sang-Hyun Joo | Memory system and operating method thereof |
| US20150248328A1 (en) | 2011-12-06 | 2015-09-03 | Samsung Electronics Co., Ltd. | Memory Systems and Block Copy Methods Thereof |
| US20130322171A1 (en) | 2012-05-29 | 2013-12-05 | Ji-Sang LEE | Methods of operating nonvolatile memory devices that support efficient error detection |
| US20150169402A1 (en) | 2012-08-04 | 2015-06-18 | Seagate Technology Llc | Soft-decision compensation for flash channel variation |
| US20140068319A1 (en) | 2012-09-06 | 2014-03-06 | International Business Machines Corporation | Error Detection And Correction In A Memory System |
| US20140101372A1 (en) | 2012-10-05 | 2014-04-10 | Young Woo Jung | Memory system and read reclaim method thereof |
| US20140129874A1 (en) | 2012-11-07 | 2014-05-08 | Apple Inc. | Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks |
| US20140149828A1 (en) | 2012-11-27 | 2014-05-29 | Lite-On It Corporation | Solid state drive and joint encoding/decoding method thereof |
| US20140185376A1 (en) | 2012-12-31 | 2014-07-03 | Alan Welsh Sinclair | Method and system for asynchronous die operations in a non-volatile memory |
| US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
| US20140226400A1 (en) | 2013-02-12 | 2014-08-14 | Kabushiki Kaisha Toshiba | Semiconductor device |
| US9286985B2 (en) | 2013-02-12 | 2016-03-15 | Kabushiki Kaisha Toshiba | Semiconductor device with power mode transitioning operation |
| US20140245105A1 (en) | 2013-02-26 | 2014-08-28 | Hoi-Ju CHUNG | Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices |
| US8972776B2 (en) * | 2013-03-06 | 2015-03-03 | Seagate Technology, Llc | Partial R-block recycling |
| US20140325124A1 (en) | 2013-04-30 | 2014-10-30 | International Business Machines Corporation | Memory system and method for operating a memory system |
| US20150058700A1 (en) | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
| TW201603047A (en) | 2013-08-23 | 2016-01-16 | 慧榮科技股份有限公司 | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
| US20150058661A1 (en) | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
| US20150058699A1 (en) | 2013-08-23 | 2015-02-26 | Silicon Motion, Inc. | Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same |
| US20150067439A1 (en) | 2013-09-03 | 2015-03-05 | Kabushiki Kaisha Toshiba | Memory controller |
| TW201535114A (en) | 2013-12-09 | 2015-09-16 | Ibm | Recording dwell time in a non-volatile memory system |
| US20150178149A1 (en) | 2013-12-20 | 2015-06-25 | Lsi Corporation | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
| US9685242B2 (en) | 2014-03-11 | 2017-06-20 | Kabushiki Kaisha Toshiba | Memory system |
| US20150293713A1 (en) | 2014-04-15 | 2015-10-15 | Jung-Min Seo | Storage controller, storage device, storage system and method of operating the storage controller |
| US20150347229A1 (en) | 2014-05-30 | 2015-12-03 | Sandisk Technologies Inc. | Method and System for Dynamic Word Line Based Configuration of a Three-Dimensional Memory Device |
| TW201612908A (en) | 2014-07-03 | 2016-04-01 | Sandisk Technologies Inc | On-chip copying of data between NAND flash memory and ReRAM of a memory die |
| US20160062829A1 (en) | 2014-08-29 | 2016-03-03 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
| US20160104539A1 (en) | 2014-10-08 | 2016-04-14 | Kyungryun Kim | Storage device and reliability verification method |
| US20160110102A1 (en) | 2014-10-20 | 2016-04-21 | Samsung Electronics Co., Ltd. | Hybrid memory module structure and method of driving the same |
| US20160110249A1 (en) | 2014-10-20 | 2016-04-21 | Fusion-Io, Inc. | Adaptive storage reliability management |
| US20160260489A1 (en) | 2015-03-02 | 2016-09-08 | Cheon An LEE | Nonvolatile memory device, storage device having the same, and operation method thereof |
| US20160306553A1 (en) | 2015-04-14 | 2016-10-20 | Sandisk Enterprise Ip Llc | High-Priority NAND Operations Management |
| US20160313931A1 (en) | 2015-04-27 | 2016-10-27 | SK Hynix Inc. | Memory system and operating method thereof |
| US20160342345A1 (en) | 2015-05-20 | 2016-11-24 | Sandisk Enterprise Ip Llc | Variable Bit Encoding Per NAND Flash Cell to Improve Device Endurance and Extend Life of Flash-Based Storage Devices |
| US20170031751A1 (en) * | 2015-07-31 | 2017-02-02 | SK Hynix Inc. | Data storage device and operating method thereof |
| US20170046225A1 (en) * | 2015-08-10 | 2017-02-16 | Silicon Motion Inc. | Flash memory controller and memory device for accessing flash memory module, and associated method |
| US20170060425A1 (en) | 2015-08-27 | 2017-03-02 | Kabushiki Kaisha Toshiba | Memory system and method of controlling nonvolatile memory |
| US20170317693A1 (en) | 2016-04-27 | 2017-11-02 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
| US20180018091A1 (en) | 2016-07-18 | 2018-01-18 | SK Hynix Inc. | Memory system and operation method for the same |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12300339B2 (en) * | 2021-03-03 | 2025-05-13 | Micron Technology, Inc. | Performing memory testing using error correction code values |
Also Published As
| Publication number | Publication date |
|---|---|
| CN107391296A (en) | 2017-11-24 |
| US20190050326A1 (en) | 2019-02-14 |
| US20180260322A1 (en) | 2018-09-13 |
| US10510430B2 (en) | 2019-12-17 |
| US20170315909A1 (en) | 2017-11-02 |
| CN107391296B (en) | 2020-11-06 |
| US10643733B2 (en) | 2020-05-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10643733B2 (en) | Method, flashing memory controller, memory device for accessing 3D flash memory having multiple memory chips | |
| US10846173B2 (en) | Method for accessing flash memory module and associated flash memory controller and memory device | |
| US10324789B2 (en) | Flash memory controller and memory device for accessing flash memory module, and associated method | |
| US10348332B2 (en) | Method for accessing flash memory module and associated flash memory controller and memory device | |
| TWI650764B (en) | Method, flash memory controller, memory device for accessing flash memory | |
| CN112463433B (en) | Method for accessing flash memory module, and related flash memory controller and memory device | |
| CN113342577B (en) | Storage devices and data recovery methods | |
| CN111951855B (en) | Method for accessing flash memory module and related flash memory controller and memory device | |
| US12511229B2 (en) | Method for accessing flash memory module and associated flash memory controller and memory device | |
| CN112214348B (en) | Method for accessing flash memory module and related flash memory controller and memory device | |
| TWI575530B (en) | Method for accessing flash memory module and associated flash memory controller and memory device |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: SILICON MOTION INC., TAIWAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YANG, TSUNG-CHIEH;HSU, HONG-JUNG;REEL/FRAME:042143/0852 Effective date: 20170421 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |