Optimized decryption scheduling in joint LDPC and RAID decryption schemes
The ECC ordering system optimizes the decoding schedule for joint LDPC and RAID schemes by prioritizing pages with higher success likelihood, reducing latency and improving error correction efficiency in data storage devices.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-11-13
- Publication Date
- 2026-04-13
Smart Images

Figure 0007844593000005 
Figure 0007844593000006 
Figure 0007844593000007
Abstract
Description
[Technical Field]
[0001] Data storage devices typically include error correction features to correct errors that occur when data is read from the device. For example, when data is written to a data storage device, the data is encoded by an error correction code (ECC) or low-density parity check (LDPC) encoder to generate redundant information. This redundant information is known as parity bits. The parity bits and data are stored as an ECC codeword.
[0002] When an ECC codeword is read from a data storage device, a decoder, such as an LDPC decoder, decodes the codeword and corrects any errors that may exist. Typically, LDPC decoders are used to correct random errors that occur on the data storage device.
[0003] However, LDPC decoders cannot handle the vast number of errors that may result from memory defects and / or failures. Therefore, data storage devices can also incorporate a redundant array of independent die (RAID) storage scheme designed to handle errors resulting from physical defects. For example, a RAID storage scheme distributes data in stripes across multiple different solid-state drives (SSDs) or multiple different memory dies within a single SSD, along with first and second parity information. The parity information allows for the recovery of data in the stripe if one of the SSDs or memory dies fails.
[0004] In some cases, LDPC decryption and RAID decryption are combined to increase the likelihood that errors can be corrected. For example, if multiple pages fail to decrypt, a RAID-based decryption method is implemented for those pages, followed by an LDPC decryption method. This process is repeated for each failed page.
[0005] However, if the initial decryption process fails to decrypt or correct a particular failure page, that page may be successfully decrypted during another iteration. For example, if another failure page is successfully decrypted, the information corresponding to the now-corrected page can be used to correct the error in that particular failure page. Therefore, multiple decryption operations may be performed on the same failure page. However, each time a decryption operation is performed on the same page, the decryption latency increases.
[0006] Therefore, it is beneficial to reduce the latency of the decoding process by implementing two different decoding schemes. [Overview of the project]
[0007] This disclosure describes an error correction code (ECC) ordering system for a data storage device. In one example, the ECC ordering system is part of or otherwise associated with an error correction code (ECC) system for a data storage device. The ECC ordering system determines a decoding order or decoding schedule in which two or more flash memory units (FMUs) that failed the initial decoding process are decoded using a joint decoding scheme. In one example, the joint decoding scheme includes a first decoding scheme (e.g., an LDPC decoding scheme) and a second decoding scheme (e.g., a RAID decoding scheme).
[0008] For example, an FMU may be associated with or included in a RAID stripe or XOR stripe of a second decoding scheme. If two or more FMUs fail the initial decoding process, the ECC ordering system determines the order in which the FMUs are decoded using a joint decoding scheme, based on one or more metrics associated with the two or more FMUs. Once the order is determined, the ECC system performs the joint decoding scheme on the FMUs in the determined order.
[0009] In one example, the metric on which the decoding schedule is based is the syndrome weight of each FMU. In another example, the metric on which the decoding schedule is based is the combined bit error rate (BER) of each FMU. In one example, the combined BER represents the quality of one or more soft bits associated with each FMU and the quality of the FMU.
[0010] Accordingly, an example of the present disclosure describes a method that includes identifying two or more FMUs associated with a data storage device that have failed an initial decoding operation performed by an error code correction system for the data storage device. The method also includes determining a metric associated with each of the two or more FMUs. A decoding schedule is generated for the two or more FMUs. In one example, the decoding schedule is based at least in part on the metric associated with each of the two or more FMUs. A joint decoding operation is then performed on a first FMU of the two or more FMUs based on the generated decoding schedule, using a joint decoding scheme. In one example, the joint decoding scheme includes a first decoding scheme and a second decoding scheme.
[0011] Another example describes a data storage device that includes a controller and an error correction code (ECC) system associated with the controller. In one example, the ECC system is operable to perform an initial decoding operation on the FMUs associated with the stripe and to determine whether any of the FMUs failed the initial decoding operation. If the ECC system determines that two or more FMUs failed the initial decoding operation, the ECC system determines the metric associated with each of the two or more FMUs and determines the order in which each of the two or more FMUs undergoes a joint decoding operation using a joint decoding scheme. In one example, the order in which the two or more FMUs are decoded is based at least in part on the metric associated with each of the two or more FMUs. Furthermore, the joint decoding scheme includes a first decoding scheme and a second decoding scheme. The ECC system also performs the joint decoding operation on the two or more FMUs in the determined order.
[0012] Further examples describe a data storage device including a control means and an error correction means associated with the control means. In one example, the error correction means determines whether two or more memory means associated with the data storage device have failed an initial decoding operation. Based at least in part on the determination that two or more memory means have failed an initial decoding operation, the error correction means determines a first metric associated with a first memory means among the two or more memory means and a second metric associated with a second memory means among the two or more memory means. The control means compares the first metric and the second metric and generates a decoding schedule based at least in part on the comparison between the first metric and the second metric. The error correction means also, at least in part on the decoding schedule, performs a joint decoding operation on at least one of the first and second memory means using a joint decoding scheme. In one example, the joint decoding scheme includes a first decoding scheme and a second decoding scheme.
[0013] This summary is provided in a simplified form to introduce the selection of concepts further described below in the “Modes for Carrying Out the Invention.” This summary is not intended to identify the main or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. [Brief explanation of the drawing]
[0014] Non-exclusive and non-exclusive examples are illustrated with reference to the following diagram. [Figure 1] This is a block diagram of a system including a host device and a data storage device, as an example. [Figure 2A] This example illustrates how a memory device can contain multiple memory blocks. [Figure 2B] This example illustrates how a memory block can contain one or more pages. [Figure 2C] An example illustrates how a memory block contains multiple bit lines and word lines. [Figure 3A] This example illustrates how multiple pages within a stripe are combined to form parity information. [Figure 3B] This example demonstrates that pages 2 and 4 within the stripe failed the decryption process. [Figure 3C] This example illustrates how a joint decoding scheme is used to correct errors within a striped page. [Figure 4A] This example illustrates how multiple pages within a stripe are combined to form parity information. [Figure 4B] This example shows how pages 2 and 4 in the stripe are ordered based on the determination that pages 2 and 4 failed the decryption process. [Figure 4C] This example illustrates how a joint decoding scheme is used to correct errors in pages based on a determined order. [Figure 5] A method of performing a joint decoding scheme on two or more FMUs of stripes according to an example is shown. [Figure 6] A perspective view of a memory device including a three-dimensional (3D) stacked non-volatile memory according to an example. [Figure 7] A block diagram of a memory device according to an example.
Best Mode for Carrying Out the Invention
[0015] In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which are shown by way of illustration specific embodiments or examples. Without departing from the scope of the present disclosure, these aspects may be combined, other aspects may be utilized, and structural changes may be made. Accordingly, the following detailed description should not be construed in a limiting sense, and the scope of the present disclosure is defined by the appended "claims" and their equivalents.
[0016] Typically, a data storage device includes error correction capabilities to correct errors that occur when data is read from the data storage device. For example, as previously described, when data is written to a data storage device, the data is encoded by an error correction code (ECC) encoder (e.g., an LDPC encoder) to generate parity bits. The parity bits are combined with the data and stored as an ECC codeword.
[0017] When an ECC codeword is read from the data storage device, a decoder (e.g., an LDPC decoder) decodes the codeword and corrects any errors that may exist. Typically, an LDPC decoder is used to correct random errors that occur on the data storage device. For example, an LDPC decoder corrects errors up to a specific bit error rate (BER).
[0018] Data storage devices can also incorporate RAID encoding / decoding schemes. For example, a RAID encoding / decoding scheme distributes data in stripes across multiple different solid-state drives (SSDs) or multiple memory dies within a single SSD, along with first and second parity information. The parity information allows for the recovery of data in the stripes if one of the SSDs or memory dies fails, or if the BER of one flash memory unit (FMU) exceeds the maximum BER that the LDPC decoder can handle.
[0019] As previously explained, some data storage devices implement joint LDPC and RAID decoding schemes that have the ability to correct multiple FMUs that failed the initial decoding process. For example, if multiple FMUs fail the initial decoding operation, the joint decoding scheme is implemented for the first failed FMU and iterated over for each failed FMU in an order based on the stripe index.
[0020] While joint decoding may have the ability to correct more errors compared to separate RAID decoding and separate LDPC decoding methods, it is not without its drawbacks. For example, if multiple FMUs fail the initial decoding process, joint decoding is performed based on the FMU index. Therefore, if FMU2 (located at index 2 in the stripe) and FMU4 (located at index 4 in the stripe) fail the initial decoding process, joint decoding will be performed on FMU2 first, followed by FMU4.
[0021] However, if the initial pass of the joint decoding scheme fails to decode or correct FMU2, FMU2 may be successfully decoded during another iteration. For example, if the joint decoding scheme successfully decodes FMU4, the corrected information in FMU4 may be used to correct errors in FMU2. Therefore, multiple decoding processes may be performed on the same failed FMU, which increases the latency of the decoding process.
[0022] To address the above, this disclosure describes an ECC ordering system for a data storage device. In one example, the ECC ordering system is part of or otherwise associated with an ECC system for a data storage device. The ECC ordering system determines the order or schedule in which two or more FMUs that failed the initial decryption process should be decrypted using a joint decryption scheme. In one example, the joint decryption scheme includes a first decryption scheme (e.g., an LDPC decryption scheme) and a second decryption scheme (e.g., a RAID decryption scheme).
[0023] For example, an FMU may be associated with or otherwise included in a stripe of a second decoding scheme (e.g., a RAID or XOR stripe). If two or more FMUs fail the initial decoding process (e.g., the BER of an FMU exceeds the correction capability of the first decoding scheme), the ECC ordering system determines the order in which the FMUs are decoded using a joint decoding scheme, based on one or more metrics of the two FMUs. Once the order is determined, the ECC system performs the joint decoding scheme on the FMUs in the determined order.
[0024] In one example, the metric on which the schedule order is based is the syndrome weight of each FMU. In another example, the metric on which the schedule order is based is at least partially based on the combined BER of the FMUs. In one example, the combined BER represents the quality of one or more soft bits associated with each FMU and / or the quality of the FMU. For example, the combined BER indicates the likelihood that an FMU will be successfully decoded. Thus, FMUs are ordered from those most likely to be decoded to those least likely to be decoded. However, as more FMUs are successfully decoded, subsequent FMUs become more likely to be decoded. Therefore, repeated attempts to decode failed FMUs are reduced or eliminated.
[0025] Based on the above, many technical benefits can be realized, but are not limited to, improving the quality of service in data storage devices, reducing decoding latency by reducing the number of joint decoding iterations for failed FMUs, and improving the effective error correction capability of data storage devices.
[0026] These advantages, along with other examples, will be shown and explained in more detail with respect to Figures 1 to 7.
[0027] Figure 1 is a block diagram of a system 100 including a host device 105 and a data storage device 110, as an example. In this example, the host device 105 includes a processor 115 and memory 120 (e.g., main memory). Memory 120 includes or is otherwise associated with an operating system 125, a kernel 130, and / or applications 135.
[0028] The processor 115 can execute various instructions, such as instructions from the operating system 125 and / or application 135. The processor 115 includes circuits such as microcontrollers, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), hardwired logic, analog circuits, and / or various combinations thereof. In one example, the processor 115 includes a system on a chip (SoC).
[0029] In one example, memory 120 is used by the host device 105 to store data used or executed by the processor 115. The data stored in memory 120 includes instructions provided by the data storage device 110 via the communication interface 140. The data stored in memory 120 also includes data used to execute instructions from the operating system 125 and / or one or more applications 135. Memory 120 may be a single memory or may include multiple memories, such as one or more non-volatile memories, one or more volatile memories, or a combination thereof.
[0030] In one example, the operating system 125 creates a virtual address space for application 135 and / or other processes run by processor 115. The virtual address space maps to locations in memory 120. The operating system 125 also includes, or is otherwise associated with, a kernel 130. The kernel 130 manages various resources of the host device 105 (e.g., memory allocation) and includes instructions for handling read and write requests, etc.
[0031] The communication interface 140 connects the host device 105 and the data storage device 110 in a communicative manner. The communication interface 140 may be a Serial Advanced Technology Attachment (SATA), PCI Express (PCIe) bus, Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Ethernet, Fibre Channel, or Wi-Fi. Therefore, the host device 105 and the data storage device 110 do not need to be located in the same physical location and can communicate over a network such as a Local Area Network (LAN) or a Wide Area Network (WAN) such as the Internet. Furthermore, the host device 105 can interface with the data storage device 110 using logical interface standards such as Non-Volatile Memory Express (NVMe) or Advanced Host Controller Interface (AHCI).
[0032] The data storage device 110 includes a controller 150 and a memory device 155. In one example, the controller 150 is communicatively coupled to the memory device 155. The memory device 155 includes one or more memory dies (e.g., a first memory die 165 and a second memory die 170). Although memory dies are specifically mentioned, the memory device 155 may include any non-volatile memory device, storage device, storage element, or storage medium, including NAND flash memory cells and / or NOR flash memory cells.
[0033] Memory cells can take the form of solid-state (e.g., flash) memory cells and may be once-programmable, multiple-programmable, or many-times-programmable. Furthermore, memory cells may be single-level cells (SLC), multi-level cells (MLC), triple-level cells (TLC), quad-level cells (QLC), penta-level cells (PLC), and / or any other memory technology may be used. In one example, the memory cells are arranged in a two-dimensional configuration. In another example, the memory cells are arranged in a three-dimensional configuration.
[0034] In one example, the data storage device 110 is attached to or embedded within the host device 105. In another example, the data storage device 110 is implemented as an external or portable device that can be communicatively or selectively coupled to the host device 105 and detached from the host device 105. In yet another example, the data storage device 110 is a component of a network-accessible data storage system, a network-attached storage system, a cloud data storage system, etc. (e.g., a solid-state drive (SSD)).
[0035] As described above, the memory device 155 of the data storage device 110 includes a first memory die 165 and a second memory die 170. Although two memory dies are shown, the memory device 155 may include any number of memory dies (e.g., one memory die, two memory dies, eight memory dies, or any other number of memory dies).
[0036] The memory device 155 also includes support circuitry. In one example, the support circuitry includes a read / write circuit 160. The read / write circuit 160 supports the operation of the memory die of the memory device 155. Although the read / write circuit 160 is shown as a single component, it may be divided into separate components, such as a read circuit and a write circuit. The read / write circuit 160 may be located outside the memory die of the memory device 155. In another example, one or more of the memory dies may include a corresponding read / write circuit 160 that can operate to read data from and / or write data to a storage element within an individual memory die, independently of other read and / or write operations to any of the other memory dies.
[0037] In one example, one or more of the first memory die 165 and the second memory die 170 contain one or more memory blocks. In one example, each memory block contains one or more memory cells. A block of memory cells is the smallest number of memory cells that can be physically erased together. In one example, to increase parallelism, each block may be operated or organized into a larger block or metablock. For example, a block from different dies of memory may be logically linked together to form a metablock.
[0038] For example, referring to Figure 2A, Figure 2A shows, in one example, how a memory device 200 includes multiple memory blocks. For example, a memory device 200 (e.g., a storage element, memory die, non-volatile memory device) includes four planes or subarrays (e.g., a first plane 205, a second plane 210, a third plane 215, and a fourth plane 220). In one example, the planes are integrated on a single memory die. In another example, the planes are provided on two different memory dies (e.g., two planes on each memory die). In yet another example, the planes are provided on four separate memory dies. Although four planes are shown and described, a memory device 200 can have any number of planes and / or memory dies.
[0039] In one example, each plane is divided into memory blocks that constitute memory cells. As shown in Figure 2A, the rectangles represent memory blocks such as memory block 225, memory block 230, memory block 235, and memory block 240. Each plane of the memory device 200 may contain tens or hundreds of memory blocks. In one example, each memory block is a unit of erasure and may also be referred to as an erase block. For example, memory blocks 225, 230, 235, and 240 contain the minimum number of memory cells that are erased together.
[0040] In addition, various memory blocks are logically linked or grouped together (for example, using a table in controller 150 (Figure 1), or otherwise a table accessible by controller 150) to form a metablock. The metablock is written to, read from, and / or erased as a single unit. For example, memory blocks 225, 230, 235, and 240 form a first metablock, and memory blocks 245, 250, 255, and 260 form a second metablock. The memory blocks used to form a metablock do not need to be limited to the same relative location within their respective planes.
[0041] In one example, each memory block is divided into pages of memory cells for operational purposes. Referring to Figure 2B, for example, Figure 2B illustrates how a memory block contains one or more pages in one example. For instance, the memory cells of memory blocks 225, 230, 235, and 240 are divided into N distinct pages (indicated as P0 to PN). While Figure 2B shows a specific number of pages, a memory block can have any number of pages of memory cells within each memory block.
[0042] In one example, a page is a unit of data programming within a memory block. Each page contains the smallest amount of data that can be programmed at one time. The smallest unit of data that can be read at one time may be less than a page. For example, each page can be further divided into segments or units, each segment containing the smallest number of memory cells that can be written at one time as a basic programming operation. The data stored in a segment or unit of memory cells is referred to herein as a flash memory unit (FMU). An FMU may be a page, an ECC page, a codeword, or otherwise, and may include the amount of data written at one time during a basic programming operation, and / or the amount of data that can be encoded and / or decoded by an ECC system (e.g., ECC system 185 (Figure 1)) during a single encoding and / or decoding operation.
[0043] Metapage 270 is shown in Figure 2B as being formed from one physical page from memory blocks 225, 230, 235, and 240. In the illustrated example, metapage 270 contains page P1 in each of the four memory blocks. However, the pages of metapage 270 do not need to have the same relative position within each memory block. Metapage 270 can be the largest unit of programming within a memory block.
[0044] The memory blocks disclosed in Figures 2A and 2B are referred to herein as physical memory blocks because they relate to a group of physical memory cells as described above. As used herein, a logical memory block is a virtual unit of address space defined to have the same size as a physical memory block. Each logical memory block includes a range of logical memory block addresses (LBAs) associated with data received from a host. The LBAs are then mapped to one or more physical memory blocks in the data storage device 110 where the data is physically stored.
[0045] As described above, each memory block may contain any number of memory cells. The design, size, and organization of a memory block may depend on the desired architecture, design, and application for each memory die. In one example, a memory block may contain a contiguous set of memory cells sharing multiple word lines and bit lines.
[0046] Figure 2C illustrates, in one example, how a memory block contains multiple bit lines 275 and word lines 280. For example, as shown in Figure 2C, memory block 225 contains bit lines BL0 to BLN (collectively, bit lines 275), where N is the total number of bit lines. In addition, memory block 225 contains word lines WL0 to WLN (collectively, word lines 280), where N is the total number of word lines. In one example, multiple memory blocks can share the same bit lines.
[0047] Word lines 280 can function as single-level cell (SLC) word lines, multi-level cell (MLC) word lines, tri-level cell (TLC) word lines, quad-level cell (QLC) word lines, penta-level cell (PLC) word lines, etc. In addition, each memory cell may be programmable to exhibit one or more values (e.g., threshold voltage in a flash configuration or resistance state in a resistive memory configuration).
[0048] In the example shown in Figure 2C, four memory cells are connected in series to form a NAND string. Although four memory cells are illustrated, any number of memory cells (e.g., 16, 32, 64, 128, 256, or any other number of memory cells) can be used. One terminal of the NAND string is connected to the corresponding bit line via a drain-selection gate (connected to the drain line SGD), and the other terminal of the NAND string is connected to the source line via a source-selection gate (connected to the source line SGS). Furthermore, although eight bit lines are shown in Figure 2C, any number of bit lines can be used.
[0049] Referring again to Figure 1, as previously mentioned, the data storage device 110 also includes a controller 150. Although a single controller 150 is shown and described, the data storage device 110 may include multiple controllers. In such an example, a first controller performs a first operation or set of operations, and a second controller performs a second operation or set of operations. In one example, the first set of operations and the second set of operations are performed on the same memory die. In another example, the first set of operations is performed on a first memory die or a first set of memory dies, and the second set of operations is performed on a second memory die or a second set of memory dies.
[0050] The controller 150 is communicatively coupled to the memory device 155 via a bus, interface, or other communication circuit. In one example, the communication circuit includes one or more channels to enable the controller 150 to communicate with the first memory die 165 and / or the second memory die 170 of the memory device 155. In another example, the communication circuit includes multiple separate channels to enable the controller 150 to communicate with the first memory die 165 independently of and / or in parallel with the second memory die 170 of the memory device 155.
[0051] The controller 150 receives data and / or commands from the host device 105. The controller 150 also sends data to the host device 105. For example, the controller 150 sends data to and / or receives data from the host device 105 via the communication interface 140. The controller 150 also sends data and / or commands to and / or receives data from the memory device 155.
[0052] The controller 150 sends data and corresponding write commands to the memory device 155 to cause the memory device 155 to store the data at a specified address on the memory device 155. In one example, the write command specifies the physical address of a portion of the memory device 155. The controller 150 also sends data and / or commands associated with one or more background scan operations, garbage collection operations, and / or wear leveling operations.
[0053] The controller 150 also sends one or more read commands to the memory device 155. For example, a read command specifies a physical address of the memory device 155 where the data is stored. The controller 150 also tracks the number of program / erase cycles or other programming operations performed on or by the memory device and / or the memory die of the memory device 155.
[0054] The controller 150 also includes, or is otherwise associated with, an ECC system 185 and / or an ECC ordering system 180. In one example, the ECC system 185 and / or the ECC ordering system 180 are packaged functional hardware units designed for use with other components / systems. In another example, the ECC system 185 and / or the ECC ordering system 180 are part of program code (e.g., software or firmware) executable by a processor or processing circuit. In yet another example, the ECC system 185 and / or the ECC ordering system 180 are self-contained hardware and / or software components that interface with other components and / or systems. Although the ECC system 185 and the ECC ordering system 180 are shown as part of the controller 150, the ECC system 185 and / or the ECC ordering system 180 may be separate from the controller 150.
[0055] In one example, the ECC system 185 receives data to be stored in the memory device 155 and generates a codeword. For example, the ECC system 185 includes an encoder that encodes the data using a first encoding scheme. In one example, the first encoding scheme is an ECC encoding scheme such as a Reed-Solomon encoder, a Bose-Chaudhuri-Hocquenghem (BCH) encoder, a Low-Density Parity Check (LDPC) encoder, a TurboCode encoder, an encoder configured to encode one or more other ECC encoding schemes, or any combination thereof.
[0056] For example, when data is received, the ECC system 185 of the controller 150 encodes the data into one or more codewords. The codewords are then stored in the memory device 155 (or another location). For example, when data is received, the data is divided into N datawords. The first part of the data corresponds to the first dataword, and the Nth dataword corresponds to the last dataword of the data. The ECC system 185 encodes the first dataword to generate the first codeword (including the data and associated parity bits), and encodes the second dataword to generate the second codeword. This is repeated for all N datawords.
[0057] Furthermore, the ECC system 185 includes an encoder that encodes data according to a second encoding scheme. For example, the second encoding scheme is a RAID or XOR encoding scheme that generates steep parity data. For example, if codewords corresponding to N data words are generated (e.g., resulting in N codewords), the ECC system 185 uses the second encoding scheme to generate striped parity data corresponding to multiple sequences of multiple bits from each of the N codewords. For example, the ECC system 185 is configured to generate first parity data corresponding to a first striped codeword by encoding a first portion of each of the N codewords. The ECC system 185 generates a second striped codeword by encoding a second portion of each of the N codewords. This process is repeated for each portion of the codewords.
[0058] The ECC system 185 also includes a first decoder that decodes data using a first decoding scheme and a second decoder that decodes data using a second decoding scheme. In one example, the first decoding scheme is an LDPC decoding scheme, and the second decoding scheme is a RAID or XOR decoding scheme. In one example, the first decoding scheme is used to decode a generated codeword, and the second decoding scheme is used to decode a striped codeword.
[0059] In one example, when a codeword is decoded, the ECC system 185 may determine that the codeword contains various errors. In some examples, the number of errors may exceed the correction capability of the first decoding scheme. In another example, the number of failed codewords may exceed the correction capability of the first and / or second decoding schemes. In such examples, a joint decoding scheme is used to correct the errors. In one example, the joint decoding scheme utilizes the first and second decoding schemes to correct the various errors detected by the ECC system 185.
[0060] Figure 3A shows, in one example, how multiple pages within a stripe 300 are combined to form parity information 360. In this example, the pages within the stripe 300 are FMUs that are equivalent to a codeword or a portion of a codeword encoded using a first encoding scheme.
[0061] For example, stripe 300 contains data corresponding to N pages, namely page 1 310, page 2 320, page 3 330, page 4 340, and page N 350. In this example, each page is XORed together (e.g., during a write or encoding operation) using a RAID or XOR type encoding scheme to generate parity information 360 (represented as an XOR page).
[0062] During the decryption process, the ECC system (e.g., ECC system 185 (Figure 1)) determines that two of the pages within stripe 300 were not successfully decrypted. For example, referring to Figure 3B, Figure 3B shows that pages 2 320 and 4 340 within stripe 300 failed the decryption process. In one example, the failed decryption process is the LDPC decryption process.
[0063] Figure 3C illustrates, in one example, how a joint decoding scheme is used to correct errors within pages of stripe 300. For example, when the ECC system determines that pages 2 320 and 4 340 have failed the decoding process, and / or otherwise determine that the pages are uncorrectable, the ECC system implements a joint decoding scheme. For example, as shown in Figure 3C, when page 2 320 is decoded, the ECC system determines the hard bits and two soft bits to be provided to the LDPC decoder 390.
[0064] In one example, the hard bit (represented as HB in Figure 3C) is a copy of page 2 320 (for example, an uncorrected copy). The first soft bit (represented as soft bit page 380 or SB1) is the natural soft bit page (or soft bit representation) of page 2 320. The second soft bit (SB2) is the XOR representation of page 2 370.
[0065] For example, to generate the XOR representation of page 2 370, the ECC system XORs page 1 310, page 3 330, page 4 340, and page N 350 with parity information 360 (e.g., XOR page) generated when the data was written / encoded. The XOR representations of page 2 320, page 2 370, and soft bit page 380 are provided to the LDPC decoder 390 to generate the corrected page 2 395.
[0066] For example, if the ECC system determines that page 2 320 has been successfully decoded (resulting in, for instance, a corrected page 2 395), the corrected page 2 395 is then used by the ECC system to correct an error in page 4 340. This process is repeated for each failed page in the stripe.
[0067] However, in some cases, page 2 320 may not decode successfully during the initial iteration. Therefore, the ECC system attempts to decode and correct page 4 340 using a similar procedure. If the decoding and correction of page 4 340 is successful, the ECC system attempts to decode and correct page 2 320 using the now corrected page 4.
[0068] A detailed description of the joint decoding method is provided in detail in U.S. Patent No. 9,940,194, entitled "ECC Decoding Using RAID-Type Parity," the entire disclosure of which is incorporated herein by reference.
[0069] Referring again to Figure 1, as briefly described above, the ECC system 185 includes or is otherwise associated with the ECC ordering system 180. The ECC ordering system 180 determines one or more metrics associated with each failed FMU or page (e.g., page 2320 (Figure 3B)) and, based on one or more metrics, determines a schedule or sequence in which the pages are decoded and / or corrected using a joint decoding scheme. In one example, the schedule or sequence is based at least in part on the likelihood that the FMU will be decoded and corrected.
[0070] For example, the ECC ordering system 180 might determine, based on one or more metrics associated with page 4 340 and page 2 320 (Figure 3B), that page 4 340 is more likely to be corrected using parity information (e.g., XOR page) compared to page 2 320. Therefore, the ECC ordering system 180 would perform a joint decoding scheme on page 4 340 before page 2 320.
[0071] In this example, page 4 340 is corrected by the joint decoding method. Therefore, the error in page 2 320 can be corrected using the corrected page 4. Because page 4 340 has been corrected, the likelihood that page 2 320 can also be corrected by the joint decoding method increases.
[0072] Compared to current solutions that may require multiple iterations to determine whether one or more FMUs are correctable, the latency of the decoding operation associated with this disclosure is reduced because the FMU order is based on the likelihood of success. Therefore, if page 4 340 is not decodeable and / or correctable using the joint decoding scheme, it may not be necessary to try and correct page 2 320 (for example, because page 4 340 was not corrected). However, even if the joint decoding scheme fails to correct the error in page 4 340, it is intended that the joint decoding scheme can still be performed on page 2 320.
[0073] In one example, the metric is the syndrome weight associated with the FMU. The syndrome weight is an estimate of the underlying bit error rate (BER) of the FMU. For example, the syndrome weight identifies the number of errors that can be corrected by the ECC system 185. Thus, when determining the order in which the joint decoding scheme should be applied to various failed FMUs, the ECC ordering system 180 determines the syndrome weight of each failed FMU and orders the FMUs from the lowest syndrome weight to the highest syndrome weight. The ECC system 180 then initiates the joint decoding scheme for the failed FMUs in the determined order.
[0074] In another example, the metric is at least partially based on the combined BER of the FMU. In one example, the combined BER of the FMU is at least partially based on the quality of the decoded FMU and the quality of the soft bit information generated from all FMUs in the stripe (e.g., page 2 370 or SB2 (Figure 3C)).
[0075] For example, referring back to Figure 3C, the combined BER associated with page 2 320 is determined by joining page 2 320 with the XOR representation of page 2 370. Once the combined BER is determined for each FMU, the ECC ordering system 180 initiates a joint decoding operation using the combined BER.
[0076] In one example, the combined BER of a failed FMU is determined by measuring the syndrome weights of the failed FMU. Once the syndrome weights are determined, the BER of the failed FMU is determined. XOR This is determined. For example, the BER of a failed FMU. XOR is, the formula BER XOR = 1 / 2·(1-(1-2·BER) t-1 It is calculated using ), where t is the number of failures in the XOR page.
[0077] BER XOR Once determined, the ECC ordering system 180 uses syndrome weights to estimate the BER of the failed FMU. For example, the syndrome weight of the failed FMU is σ = 1 / 2Q -1 (BER1) is used to derive the Gaussian sigma ("σ") of BER using the assumption of a Gaussian distribution of sigma ("σ"), where
[0078]
number
[0079] In one example, the soft bit pages of a failed FMU are generated by reading the ± delta ("Δ") around the hard bit level associated with the failed FMU. In one example, the delta indicates the number of cells in the soft bit region and the number of cells outside the soft bit region. For example, the delta indicates the number of reliable bits and the number of unreliable bits. Thus, BER1 = α·BER HIGH +(1-α)·BER LOW =Q(1 / 2σ).
[0080] When BER is estimated, alpha ("α") is calculated from the syndrome weights and a Gaussian distribution. In one example, α is calculated using the following formula:
[0081]
Number
[0082] When α is calculated, BER HIGH and BER LOW are calculated using the formula
[0083]
Number
[0084] Next, the ECC ordering system calculates the combined BER from α, BER LOW , and BER XOR using the following formula.
[0085]
Number
[0086] FIG. 4A shows, by way of example, how a plurality of pages within stripe 400 are combined to form parity information 460. In one example, the pages within stripe 400 are combined in a similar manner to the pages within stripe 300 shown and described with respect to FIG. 3A. For example, stripe 400 includes data corresponding to N pages, namely page 1 410, page 2 420, page 3 430, page 4 440, and page N 450. Each of the pages is XORed together (e.g., during a write or encoding operation) to generate parity information 460.
[0087] As illustrated and described with respect to Figure 3B, during the decoding operation, the ECC system (e.g., ECC system 185 (Figure 1)) determines that two of the pages in stripe 400 have failed the initial decoding operation and / or are uncorrectable using the first or second decoding method. For example, referring to Figure 4B, Figure 4B shows that pages 2 420 and 4 440 have failed the decoding operation.
[0088] When the ECC system determines that a page in a stripe has failed its initial decoding operation, the ECC ordering system generates or otherwise determines one or more metrics associated with each failed page. For example, as mentioned above, the ECC ordering system determines the BER associated with each failed page. In another example, the ECC ordering system determines the combined BER associated with each failed page.
[0089] Once one or more metrics associated with each failed page are determined, the ECC ordering system generates schedule 415 based on the one or more metrics associated with each failed page. For example, the ECC ordering system compares metric N425 associated with page 440 with metric M associated with page 2420, and based on the comparison, determines that page 440 has a higher probability of being successfully decoded compared to page 2420. Therefore, when a joint decoder scheme is performed on the failed pages, page 440 will be decoded before page 2420.
[0090] Figure 4C illustrates, in an example, how a joint decoding scheme is used to correct errors within pages of stripe 400 based on a determined metric. For example, if the ECC system determines that pages 2 420 and 4 440 failed the initial decoding process and / or otherwise determine that the pages are uncorrectable, the ECC system implements the joint decoding scheme in the order determined by schedule 415.
[0091] For example, since page 440 is more likely to be successfully decoded, the ECC system provides the LDPC decoder 490 with an uncorrected copy of page 4420. The ECC system also provides the LDPC decoder 490 with a first soft bit page (represented as soft bit page 480 or SB1). As previously described, soft bit page 480 is a natural soft bit page read from memory (or soft bit representation) of page 4400. The ECC system also provides the LDPC decoder 490 with a second soft bit page (SB2). In one example, the second soft bit page is the XOR representation of page 4470.
[0092] If the LDPC successfully decodes and / or corrects page 440, the process is repeated for page 2420. However, in some cases, if page 440 is not successfully decoded, the ECC system does not attempt to decode and / or correct page 2420. In other cases, even if page 440 is not corrected, the ECC system attempts to decode and / or correct page 2420. However, in such cases, the ECC system does not attempt to decode page 440 a second time. For example, the ECC system implements a "one-shot" joint decoding scheme in which the ECC system attempts to recover each failed page once.
[0093] Figure 5 shows an example of a method 500 for performing a joint decoding scheme on two or more FMUs of a stripe. In this example, method 500 is performed by an ECC system and / or ECC ordering system of a data storage device. For example, method 500 is performed by an ECC system 185 and / or ECC ordering system 180 illustrated and described with respect to Figure 1. Furthermore, in this example, method 500 is performed on pages of stripe 400 shown and described with respect to Figure 4A.
[0094] Method 500 begins when the ECC system identifies two or more FMUs in a stripe that failed in the initial decoding process (510). For example, the ECC system identifies two or more FMUs that failed in the initial decoding process performed by a first decoding scheme (e.g., an LDPC decoding scheme). In another example, the ECC system identifies two or more FMUs that have a BER above a threshold or otherwise are identified as containing errors and / or being uncorrectable.
[0095] Based at least in part on identifying two or more failed FMUs, the ECC system determines one or more metrics associated with each failed FMU (520). In one example, one or more metrics represent the syndrome weight or BER associated with each failed FMU. In another example, one or more metrics represent the combined BER associated with each failed FMU. In one example, the combined BER is determined using various operations described herein.
[0096] Once one or more metrics associated with each failed FMU are determined, the ECC system generates a decryption schedule or, otherwise, orders the failed FMUs based on the determined metric(s) (530). In one example, the one or more metrics associated with each failed FMU represent the likelihood or probability that the failed FMU will be successfully decrypted during a joint decryption scheme. As previously described, in one example, the joint decryption scheme utilizes a first decryption scheme (e.g., an LDPC decryption scheme) and a second decryption scheme (e.g., a RAID or XOR decryption scheme).
[0097] The ECC system also initiates a joint decoding scheme for failed FMUs based on the determined decoding schedule (540). For example, if one or more metrics indicate that a first FMU is more likely to be successfully decoded using a joint decoding scheme than a second FMU, the ECC system will initiate a joint decoding scheme for the first FMU.
[0098] If the joint decoding scheme is performed on a failed FMU, the ECC system determines whether the FMU was successfully decoded (550). If the ECC system determines that the FMU was not successfully decoded, the ECC system terminates the current decoding operation (560). For example, since failed FMUs are ordered from those most likely to be decoded to those least likely to be decoded, if the joint decoding scheme fails to decode a failed FMU, there is no need to continue attempting to decode other failed FMUs, as they are less likely to be decoded. However, in other examples, even if an FMU is not successfully decoded, method 500 is repeated for other failed FMUs.
[0099] However, if the ECC system determines that the FMU has been successfully decrypted (550), the ECC system also determines whether the decryption schedule includes any additional FMUs that failed in the initial decryption process (570). If the ECC system determines that there are other FMUs that need to be decrypted in the schedule, the ECC system initiates a joint decryption scheme for the next FMU in the schedule (540), and the process is repeated. In one example, the newly decrypted FMU is available for use in a subsequent joint decryption operation.
[0100] However, if the ECC system determines that there are no more failed FMUs in the decryption schedule (570), the ECC system terminates the current decryption operation (560).
[0101] Figures 6 and 7 illustrate exemplary storage devices that may be used with or otherwise implement the various features described herein. For example, the storage devices illustrated and described with respect to Figures 6 and 7 may include various systems and components similar to those illustrated and described with respect to Figure 1. For example, the controller 722 shown and described with respect to Figure 7 may be similar to the controller 150 in Figure 1. Similarly, the memory die 708 may be similar to the first memory die 165 and / or the second memory die 170 in Figure 1.
[0102] Figure 6 is a perspective view of a storage device 600 including a three-dimensional (3D) stacked non-volatile memory according to an example. In this example, the storage device 600 includes a substrate 610. Blocks of memory cells are included on or above the substrate 610. The blocks include a first block (BLK0 620) and a second block (BLK1 630). Each block consists of memory cells (e.g., non-volatile memory elements). The substrate 610 also includes a peripheral region 640 having support circuits used by the first and second blocks.
[0103] The substrate 610 also supports the circuitry beneath the blocks, along with one or more lower metal layers patterned into conductive paths to carry signals from the circuitry. In one example, the blocks are formed in the intermediate region 650 of the memory device 600. The memory device also includes an upper region 660. The upper region 660 includes one or more upper metal layers patterned into conductive paths to carry signals from the circuitry. Each block of the memory cell includes a stacked region of the memory cell. In one example, the alternating levels of the stack represent word lines. Two blocks are shown, but additional blocks may be used and extend in the x and / or y directions.
[0104] In one example, the plane length of the substrate 610 in the x-direction represents the direction in which the signal path for word lines or control gate lines extends (e.g., the direction of word lines or drain-end select gate (SGD) lines), and the plane width of the substrate 610 in the y-direction represents the direction in which the signal path for bit lines extends (e.g., the direction of bit lines). The z-direction represents the height of the storage device 600.
[0105] Figure 7 is a functional block diagram of an example memory device 700. In this example, the memory device 700 is similar to the 3D stacked non-volatile memory device 600 shown and described with respect to Figure 6. In this example, the components shown in Figure 7 are electrical circuits. In this example, the memory device 700 includes one or more memory dies 705. Each memory die 705 includes a three-dimensional memory structure 710 of memory cells (e.g., a 3D array of memory cells), a control circuit 715, and a read / write circuit 720. In another example, a two-dimensional array of memory cells may be used. The memory structure 710 is addressable by word lines using a first decoder 725 (e.g., a row decoder) and addressable by bit lines using a second decoder 730 (e.g., a column decoder). The read / write circuit 720 may also include a plurality of sensing blocks 735, including SB1, SB2, ..., SBp (e.g., sensing circuits) that allow pages of memory cells to be read or programmed in parallel. The sensing blocks 735 may include bit line drivers.
[0106] In one example, the controller 740 is included in the same storage device 700 as one or more memory dies 705. In another example, the controller 740 is formed on a die bonded to the memory dies 705, in which case each memory die 705 may have its own controller 740. In yet another example, the controller die controls all of the memory dies 705. Although a single controller 740 is shown, the storage device 700 may contain multiple controllers, each controller responsible for a different operation as described herein.
[0107] Commands and data are transferred between the host 745 and the controller 740 using the data bus 750. In addition, commands and data are transferred between the controller 740 and one or more memory dies 705 via line 755. For example, the memory die 705 includes a set of input and / or output (I / O) pins connected to line 755.
[0108] The memory structure 710 also includes one or more arrays of memory cells. The memory cells are arranged in a three-dimensional or two-dimensional array. The memory structure 710 includes any type of non-volatile memory formed on one or more physical levels of arrays of memory cells having active regions located above a silicon substrate. The memory structure 710 may be in a non-volatile memory device having circuits associated with the operation of memory cells, whether the associated circuits are above or within the substrate.
[0109] The control circuit 715 works together with the read / write circuit 720 to perform memory operations (e.g., erase, program, read, etc.) on the memory structure 710. The control circuit 715 may include registers, ROM fuses, and other devices for storing default values such as base voltage and other parameters.
[0110] The control circuit 715 also includes a state machine 760, an on-chip address decoder 765, and a power control module. The state machine 760 provides chip-level control of various memory operations, such as selecting memory blocks for programming. The state machine 760 is programmable by software. In another example, the state machine 760 is implemented entirely in hardware (e.g., electrical circuitry) without the use of software.
[0111] The on-chip address decoder 765 provides an address interface between the addresses used by the host 745 and / or the controller 740 and the hardware addresses used by the first decoder 725 and the second decoder 730. The power control module 770 controls the power and voltage supplied to the word lines and bit lines during memory operation. The power control module 770 may include a word line layer in a 3D configuration, selection transistors (e.g., SGS and SGD transistors), and drivers for the source lines. The power control module 770 may include one or more charge pumps for generating voltage.
[0112] The control circuit 715, state machine 760, on-chip address decoder 765, first decoder 725, second decoder 730, power control module 770, sensing block 735, read / write circuit 720, and / or controller 740 may be considered as one or more control circuits and / or management circuits that perform some or all of the operations described herein.
[0113] In one example, the controller 740 is an electrical circuit that may be on-chip or off-chip. Furthermore, the controller 740 may include one or more processors 780, a ROM 785, a RAM 790, a memory interface 795, and a host interface 797, all of which can be interconnected. In one example, one or more processors 780 are an example of a control circuit. In other examples, a state machine or other custom circuit designed to perform one or more functions may be used. Devices such as the ROM 785 and RAM 790 may contain code, such as a set of instructions. One or more of the processors 780 may be operable to execute a set of instructions to provide some or all of the functions described herein.
[0114] Alternatively or additionally, one or more of the processors 780 may access code from memory devices within the memory structure 710, such as reserved areas of memory cells connected to one or more word lines. A memory interface 795 communicating with one or more of the ROM 785, RAM 790, and processors 780 may be an electrical circuit providing an electrical interface between the controller 740 and the memory die 705. For example, the memory interface 795 may modify the format or timing of signals, provide buffers, isolate from surges, and latch I / O.
[0115] One or more processors 780 can issue commands to the control circuit 715 or any other component of the memory die 705 using the memory interface 795. The ROM 785, RAM 790, and host interface 797 communicating with one or more processors 780 may be electrical circuits providing an electrical interface between the controller 740 and the host 745. For example, the host interface 797 may modify the format or timing of signals, provide buffers, isolate from surges, and latch I / O. Commands and data from the host 745 are received by the controller 740 via the host interface 797. Data sent to the host 745 may be transmitted using the data bus 750.
[0116] Multiple memory elements within the memory structure 710 may be configured to be connected in series or so that each element is individually accessible. As a non-limiting example, a flash memory device with a NAND configuration (e.g., NAND flash memory) typically includes memory elements connected in series. A NAND string is an example of a set of memory cells and selection gate transistors connected in series.
[0117] NAND flash memory arrays can also be configured such that the array includes multiple NAND strings. In one example, a NAND string contains multiple memory cells sharing a single bit line and is accessed as a group. Alternatively, the memory elements may be configured such that each memory element is individually accessible (e.g., a NOR memory array). The NAND and NOR memory configurations are examples, and memory cells may have other configurations.
[0118] Memory cells can be arranged in an ordered array, such as multiple rows and / or columns, at the level of a single memory device. However, memory elements may be arranged in a random or non-orthogonal configuration, or in a structure that is not considered an array.
[0119] For example, a 3D memory structure can be arranged vertically as a stack of multiple 2D memory devices. As another, less restrictive example, a 3D memory array can be arranged as multiple vertical columns (e.g., columns extending substantially perpendicular to the main plane of the substrate, such as in the y-direction), each having multiple memory cells. The vertical columns may be arranged in a two-dimensional configuration of memory cells, which rest on multiple vertically stacked memory planes. Other configurations of three-dimensional memory elements can also construct 3D memory arrays.
[0120] In another example, in a 3D NAND memory array, memory elements may be coupled together to form vertical NAND strings that traverse multiple horizontal memory device levels. Other 3D configurations may be conceived, where some NAND strings contain memory elements at a single memory level, and others contain memory elements across multiple memory levels. 3D memory arrays may also be designed in NOR and ReRAM configurations.
[0121] Based on the foregoing, an example of the present disclosure describes a method comprising: identifying two or more flash memory units (FMUs) associated with a data storage device that have failed an initial decoding operation performed by an error code correction system of the data storage device; determining a metric associated with each of the two or more FMUs; generating a decoding schedule for the two or more FMUs based at least in part on the metric associated with each of the two or more FMUs; and performing a joint decoding operation on a first FMU of the two or more FMUs based on the generated decoding schedule using a joint decoding scheme, wherein the joint decoding scheme includes a first decoding scheme and a second decoding scheme. In one example, the first decoding scheme is a low-density parity check (LDPC) decoding scheme. In one example, the second decoding scheme is an independent die redundant array (RAID) decoding scheme. In one example, the method also includes determining whether the joint decoding operation on the first FMU of the two or more FMUs was successful; and performing a joint decoding operation on a second FMU of the two or more FMUs based at least in part on the determination that the joint decoding operation on the first FMU of the two or more FMUs was successful. In one example, the method also includes determining whether a joint decoding operation on the first of two or more FMUs was successful, and terminating the joint decoding operation at least in part based on the determination that the joint decoding operation on the first of two or more FMUs was unsuccessful. In one example, the metric is the syndrome weight associated with each of the two or more FMUs. In one example, the metric is the combined bit error rate (BER) associated with each of the two or more FMUs. In one example, each of the two or more FMUs is associated with a stripe.
[0122] Another example describes a data storage device comprising a controller and an error correction code (ECC) system associated with the controller, wherein the ECC system can perform an initial decoding operation on the flash memory units (FMUs) associated with the stripe, determine whether any FMU failed the initial decoding operation, determine a metric associated with each of the two or more FMUs, at least in part on the determination that two or more FMUs failed the initial decoding operation, determine the order in which the joint decoding operation will be performed using the joint decoding scheme, which includes a first decoding scheme and a second decoding scheme, at least in part on the metric associated with each of the two or more FMUs, and perform the joint decoding operation on the two or more FMUs in the determined order. In one example, the ECC system can further determine whether the joint decoding operation on the first of the two or more FMUs was successful, and perform the joint decoding operation on the second of the two or more FMUs, at least in part on the determination that the joint decoding operation on the first of the two or more FMUs was successful. In one example, the ECC system can determine whether a joint decoding operation on the first of two or more FMUs was successful, and, at least in part, terminate the joint decoding operation based on the determination that the joint decoding operation on the first of two or more FMUs was unsuccessful, and can further operate to do so. In one example, the first decoding scheme is a low-density parity check (LDPC) decoding scheme. In one example, the second decoding scheme is an independent die redundant array (RAID) decoding scheme. In one example, the metric is the syndrome weight associated with each of two or more FMUs. In one example, the metric is the combined bit error rate (BER) associated with each of two or more FMUs.
[0123] The example also describes a data storage device comprising control means and error correction means associated with the control means, wherein the error correction means is operable to determine whether two or more memory means associated with the data storage device have failed an initial decoding operation, and at least in part based on the determination that two or more memory means have failed an initial decoding operation, it determines a first metric associated with a first memory means among the two or more memory means, determines a second metric associated with a second memory means among the two or more memory means, compares the first metric with the second metric, generates a decoding schedule at least in part based on the comparison of the first metric with the second metric, and at least in part based on the decoding schedule, it performs a joint decoding operation on at least one of the first and second memory means using a joint decoding scheme, the joint decoding scheme includes a first decoding scheme and a second decoding scheme. In one example, the error correction means is further operable to determine whether a joint decoding operation was successful for at least one of the first and second memory means, and to perform a joint decoding operation on another memory means, at least in part, based on the determination that the joint decoding operation was successful for at least one of the first and second memory means. In one example, the error correction means is further operable to determine whether a joint decoding operation was successful for at least one of the first and second memory means, and to terminate the joint decoding operation, at least in part, based on the determination that the joint decoding operation was unsuccessful for at least one of the first and second memory means. In one example, the first decoding scheme is a low-density parity check (LDPC) decoding scheme, and the second decoding scheme is an independent die redundant array (RAID) decoding scheme. In one example, the metric is the combined bit error rate (BER) associated with each of the two or more failed memory means.
[0124] Those skilled in the art will recognize that the technology described herein is not limited to a single specific memory structure, but rather encompasses many relevant memory structures within the spirit and scope of the technology described herein and understood by those skilled in the art.
[0125] The descriptions and examples of one or more embodiments provided in this disclosure are not intended in any way to limit or restrict the scope of this disclosure. The embodiments, examples, and details provided in this disclosure are considered sufficient to convey ownership and enable others to create and use the best form of the claimed disclosure.
[0126] The claimed disclosure should not be construed as being limited to any aspects, examples, or details provided herein. Various features (both structural and methodological), whether shown and described together or separately, are intended to be selectively rearranged, included, or omitted to produce embodiments having a particular set of features. While the description and examples of this disclosure have been provided, those skilled in the art can envision variations, modifications, and alternatives that do not deviate from the broader scope of the claimed disclosure but fall within the spirit of the broader aspects of the general inventive concept embodied herein.
[0127] Aspects of the present disclosure are described above with reference to schematic flowcharts and / or schematic block diagrams of methods, apparatus, systems, and computer program products according to embodiments of the present disclosure. Each block in the schematic flowcharts and / or schematic block diagrams, and combinations of blocks in the schematic flowcharts and / or schematic block diagrams, are understood to be implementable by computer program instructions. These computer program instructions may be provided to a processor of a computer or other programmable data processing device to generate a machine such that instructions executed through the processor or other programmable data processing device create means for implementing the functions and / or operations specified in the blocks of the schematic flowcharts and / or schematic block diagrams.
[0128] References to elements in this specification using designations such as "first," "second," etc., generally do not limit the quantity or order of those elements. Rather, these designations can be used as a way to distinguish two or more elements, or instances of elements. Thus, references to the first and second elements do not mean that only two elements can be used, or that the first element precedes the second element. In addition, unless otherwise specified, a set of elements may include one or more elements.
[0129] Terms of the form "at least one of A, B, or C" or "A, B, C, or any combination thereof" used in a description or claim mean "A, B, or C or any combination of these elements." For example, this term may include A, or B, or C, or A and B, or A and C, or A and B and C, or 2A, or 2B, or 2C, or 2A and B, etc. As a further example, "at least one of A, B, or C" is intended to include A, B, C, AB, AC, BC, and ABC, as well as multiple of the same members. Similarly, "at least one of A, B, and C" is intended to include A, B, C, AB, AC, BC, and ABC, as well as multiple of the same members.
[0130] Similarly, as used herein, a phrase referring to a list of linked items with "and / or" refers to any combination of items. For example, "A and / or B" is intended to include A only, B only, or a combination of A and B. Another example is "A, B, and / or C" is intended to include A only, B only, C only, a combination of A and B, a combination of A and C, a combination of B and C, or a combination of A, B, and C.
Claims
1. It is a method, Identifying two or more flash memory units (FMUs) associated with the data storage device that failed the initial decoding operation performed by the error code correction system of the data storage device, Determining the metrics associated with each of the two or more FMUs, To generate a decoding schedule for the two or more FMUs, based at least in part on the metric associated with each of the two or more FMUs, The method includes performing a joint decoding operation on a first FMU among the two or more FMUs based on the generated decoding schedule using a joint decoding scheme, wherein the joint decoding scheme includes a first decoding scheme and a second decoding scheme. The first decoding method is a low-density parity check (LDPC) decoding method, and the second decoding method is an independent die redundant array (RAID) decoding method or an XOR decoding method. The metric is at least one of the syndrome weight and the combined bit error rate (BER) associated with each of the two or more FMUs. Regarding the decryption schedule for the two or more FMUs, the two or more FMUs are ordered from the one most likely to be decrypted to the one least likely to be decrypted. The aforementioned method, To determine whether the joint decoding operation for the first FMU among the two or more FMUs was successful, Based at least in part on the determination that the joint decoding operation for the first FMU among the two or more FMUs was successful, the joint decoding operation is performed on the second FMU among the two or more FMUs. The joint decoding operation is terminated, at least in part, based on the determination that the joint decoding operation for the first FMU among the two or more FMUs was unsuccessful. Methods that further include the above.
2. The method according to claim 1, wherein each of the two or more FMUs is associated with a stripe.
3. A data storage device, Controller and An error correction code (ECC) system associated with the controller, The ECC system is equipped with, Perform an initial decoding operation on the flash memory unit (FMU) associated with the stripe. Determine whether any FMU failed the initial decoding operation. Based at least in part on the fact that two or more FMUs have determined that the initial decoding operation has failed, Determine the metrics associated with each of the two or more FMUs mentioned above. Based at least in part on the metric associated with each of the two or more FMUs, each of the two or more FMUs is a joint decoding scheme, and the joint decoding scheme determines the order in which joint decoding operations are performed using a joint decoding scheme, which includes a first decoding scheme and a second decoding scheme. The joint decoding operation is performed on the two or more FMUs in the order determined above. It is possible to operate in this manner, The first decoding method is a low-density parity check (LDPC) decoding method, and the second decoding method is an independent die redundant array (RAID) decoding method or an XOR decoding method. The metric is at least one of the syndrome weight and the combined bit error rate (BER) associated with each of the two or more FMUs. The ECC system determines the order in which the two or more FMUs undergo joint decoding using the joint decoding method, by ordering the two or more FMUs from the one with the highest probability of being decoded to the one with the lowest probability of being decoded. The ECC system is Determine whether the joint decoding operation for the first FMU among the two or more FMUs was successful. Based at least in part on the determination that the joint decoding operation on the first FMU among the two or more FMUs was successful, the joint decoding operation is performed on the second FMU among the two or more FMUs. The joint decoding operation is terminated, at least in part, based on the determination that the joint decoding operation for the first FMU among the two or more FMUs was unsuccessful. A data storage device that is even more operational.
4. A data storage device, Control means and Error correction means associated with the control means, The error correction means includes, Determine whether two or more memory means associated with the data storage device have failed the initial decoding operation. Based at least partially on the determination that two or more memory means have failed the initial decoding operation, Determine the first metric associated with the first memory means among the two or more memory means, Determine the second metric associated with the second memory means among the two or more memory means, The first metric and the second metric are compared, A decoding schedule is generated, at least in part, based on a comparison of the first metric and the second metric. The system is operable to perform a joint decoding operation on at least one of the first memory means and the second memory means using a joint decoding scheme, at least in part on the decoding schedule, wherein the joint decoding scheme includes a first decoding scheme and a second decoding scheme. The first decoding method is a low-density parity check (LDPC) decoding method, and the second decoding method is an independent die redundant array (RAID) decoding method or an XOR decoding method. The metric is at least one of the syndrome weight and the combined bit error rate (BER) associated with each of the two or more memory means. Regarding the decoding schedule for the two or more memory means, the two or more memory means are ordered from the one most likely to be decoded to the one least likely to be decoded. The error correction means is Determine whether the joint decoding operation was successful for at least one of the first memory means and the second memory means. Based at least partially on the determination that the joint decoding operation on at least one of the first memory means and the second memory means has been successful, the joint decoding operation is performed on another memory means. The joint decoding operation is terminated, at least in part, based on the determination that the joint decoding operation for at least one of the first memory means and the second memory means was unsuccessful. A data storage device that is even more operational.