PREEMPTIVE OPERATIONS FOR FASTER XOR RECOVERY AND RELOCATION
Patent Information
- Application Number
- DE112024000236
- Authority / Receiving Office
- DE · DE
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-07-10
- Filing Date
- 2024-05-15
- Publication Date
- 2025-09-11
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This application claims the benefit of U.S. Non-Provisional Application No. 18 / 219,819, entitled "Pre-Emptive Operations For Faster XOR Recovery And Relocation," filed July 10, 2023, in the U.S. Patent and Trademark Office, and hereby incorporates the entire contents thereof by reference for all purposes. BACKGROUND OF REVELATIONArea of Revelation
[0002] Embodiments of the present disclosure relate generally to data storage devices such as solid-state drives (SSDs), and more particularly to improving relocation and restore operations in a data storage device. Description of the state of the art
[0003] When data is received from a host device, a controller of a data storage device can generate protection data for the data before the data is stored in non-volatile memory (NVM) of the data storage device. The protection data can be used to recover associated data from accumulated errors or data corruption to ensure that the data returned to the host device is free of integrity issues. The protection data is stored along with the data in the NVM. When the data is read from the NVM, the relevant protection data is also read from the NVM. Before the data is delivered to a host device or relocated within the NVM, the data is checked for any errors. If errors are present, the relevant protection data is used to recover the data.When the data is restored, it can also be moved to a new location in the NVM.
[0004] An example of protection data is the exclusive-OR (XOR) data signature. For a jumbo block, which is a logical grouping of one or more blocks across multiple NVM dies, an XOR signature is generated by XORing data from a same page of each block. When restoring data from a block of the jumbo block, the block's data can be restored by XORing all contiguous pages of each block belonging to the same XOR signature. Thus, each page of the jumbo block is read a first time during the restore operation and a second time during the relocation operation that may follow the restore operation. Thus, the restore / relocation operation can be time-consuming and require multiple reads from the NVM, which can further impact the jumbo block's performance.
[0005] Therefore, there is a need in the art for an improved relocation / restore operation in a data storage device to ensure data integrity. SUMMARY OF REVELATION
[0006] The present disclosure relates generally to data storage devices, such as solid-state drives (SSDs), and more particularly to improving relocation and restore operations in a data storage device. During operation of the data storage device, data of multiple blocks of a non-volatile storage device logically grouped as a jumbo block may be protected by an exclusive-or (XOR) signature, where the XOR signature may be used to restore data of one of the multiple blocks. During a restore / relocation operation, the jumbo block data is read from the non-volatile storage device during recovery of the lost data and again during data relocation.However, since the data read during operation of the data storage device is temporarily stored in a volatile memory device, the controller uses the relevant data stored in the volatile memory device and the data stored in the non-volatile memory device to recover corrupted data. Thus, the number of read operations from the non-volatile memory device is reduced because the relevant data is read from the volatile memory device, which can improve the performance of the data storage device.
[0007] In one embodiment, a data storage device includes a non-volatile memory device and a controller coupled to the non-volatile memory device and a volatile memory device. The controller is configured to read data from one of a plurality of blocks of the non-volatile memory device in response to executing a read command received from a host device, determine that a health state of one or more blocks of the plurality of blocks of the non-volatile memory device has reached a recovery / relocation threshold, the one or more blocks being in a same exclusive-or (XOR) signature as the block, and store the data of the block in the volatile memory device in response to providing the data read from the block to the host device.
[0008] In another embodiment, a data storage device includes a non-volatile memory device and a controller coupled to the non-volatile memory device and a volatile memory device.The controller is configured to determine that at least one partial block failure has occurred for a block of a plurality of blocks of the non-volatile memory device, the block being part of a set of blocks associated with an exclusive-or (XOR) signature, and the XOR signature being used to recover one or more pages of the block of the set of blocks associated with the XOR signature, to determine that at least one page of the block exists in the volatile memory device, to recover at least one page of the block that has failed using the XOR signature, and to relocate the at least one recovered page of the block, the at least one page of the block that exists in the volatile memory device, and a remaining number of pages of the block of the set of blocks to another block of the non-volatile memory device.
[0009] In another embodiment, a data storage device includes a means for storing non-volatile data and a controller coupled to the means for storing non-volatile data. The controller is configured to store data read from the means for storing non-volatile data in a means for storing volatile data and to use the data stored in the means for storing volatile data and the data stored in the means for storing non-volatile data to recover data with a read error. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] In order that the above-mentioned features of the present disclosure may be understood in detail, a more particular description of the disclosure, briefly summarized above, follows with reference to embodiments, some of which are illustrated in the accompanying drawings. It should be noted, however, that the accompanying drawings illustrate only typical embodiments of this disclosure and are therefore not to be considered limiting of its scope, for the disclosure may admit to other equally effective embodiments. Fig. 1 is a schematic block diagram illustrating a storage system in which a data storage device may function as a storage device for a host device, according to certain embodiments. Fig. 2 is an illustration of a memory device according to certain embodiments. Fig. 3 is an illustration of a jumbo block according to certain embodiments. Fig. 4 is a flowchart illustrating a method for recovering and relocating data in response to detecting a full block error, according to certain embodiments. Fig. 5 is a flowchart illustrating a method for determining whether a restore / relocation operation is occurring for the jumbo block based on analyzing blocks of the jumbo block having the same XOR signature as the read block, according to certain embodiments. Fig. 6 is a flowchart illustrating a method for recovering and relocating data in response to detecting a full block error, according to certain embodiments.
[0011] To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements present in all figures. It is understood that elements disclosed in one embodiment may be advantageously used in other embodiments without specific mention. DETAILED DESCRIPTION
[0012] Reference is made below to embodiments of the disclosure. However, it should be understood that the disclosure is not limited to specifically described embodiments. Rather, any combination of the following features and elements, whether or not related to different embodiments, is intended to implement and practice the disclosure. Furthermore, although embodiments of the disclosure may achieve advantages over other possible solutions and / or over the prior art, whether or not a particular advantage is achieved by a given embodiment does not constitute a limitation of the disclosure.Thus, the following aspects, features, embodiments, and advantages are merely illustrative and are not to be considered elements or limitations of the appended claims unless expressly recited in one or more claims. Likewise, a reference to "the disclosure" is not to be construed as a generalization of any inventive subject matter disclosed herein and should not be considered to be part of or limitation of the appended claims unless expressly recited in one or more claims.
[0013] The present disclosure relates generally to data storage devices, such as solid-state drives (SSDs), and more particularly to improving relocation and restore operations in a data storage device. During operation of the data storage device, data of multiple blocks of a non-volatile storage device logically grouped as a jumbo block may be protected by an exclusive-or (XOR) signature, where the XOR signature may be used to restore data of one of the multiple blocks. During a restore / relocation operation, the jumbo block data is read from the non-volatile storage device during recovery of the lost data and again during data relocation.However, since the data read during operation of the data storage device is temporarily stored in a volatile memory device, the controller uses the relevant data stored in the volatile memory device and the data stored in the non-volatile memory device to recover corrupted data. Thus, the amount of read operations from the non-volatile memory device is reduced because the relevant data is read from the volatile memory device, which can improve the performance of the data storage device.
[0014] Fig. 1 is a schematic block diagram illustrating a storage system 100 including a data storage device 106 that, according to certain embodiments, may function as a storage device for a host device 104. For example, the host device 104 may utilize a non-volatile memory (NVM) 110 included within the data storage device 106 to store and retrieve data. The host device 104 includes a host DRAM 138. In some examples, the storage system 100 may include a plurality of storage devices, such as the data storage device 106, that may function as a storage array. For example, the storage system 100 may include a plurality of data storage devices 106 configured as a redundant array of low-cost / independent disks (RAID) that collectively function as a mass storage device for the host device 104.
[0015] The host device 104 may store and / or retrieve data on one or more storage devices, such as the data storage device 106. As in Fig. 1, the host device 104 may communicate with the data storage device 106 via an interface 114. The host device 104 may include a wide variety of devices, including computer servers, network attached storage (NAS) units, desktop computers, notebook computers (i.e., laptops), tablet computers, set-top boxes, telephone handsets such as so-called "smartphones," so-called "smart pads," televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, or other devices capable of sending or receiving data to or from a data storage device.
[0016] The host DRAM 138 may optionally include a host memory buffer (HMB) 150. The HMB 150 is a portion of the host DRAM 138 dedicated to the data storage device 106 for exclusive use by a controller 108 of the data storage device 106. For example, the controller 108 may store mapping data, buffered instructions, logical-to-physical (L2P) tables, metadata, and the like in the HMB 150. In other words, the HMB 150 may be used by the controller 108 to store data that would normally be stored in a volatile memory 112, a buffer 116, internal memory of the controller 108, such as static random access memory (SRAM), and the like. In examples where the data storage device 106 does not include DRAM (i.e., optional DRAM 118), the controller 108 may use the HMB 150 as the DRAM of the data storage device 106.
[0017] The data storage device 106 includes the controller 108, the NVM 110, a power supply 111, a volatile memory 112, the interface 114, a write buffer 116, and an optional DRAM 118. In some examples, the data storage device 106 may include additional components, which are shown in Fig. 1. For example, the data storage device 106 may include a printed circuit board (PCB) to which components of the data storage device 106 are mechanically attached and which includes electrically conductive traces that electrically interconnect components of the data storage device 106, or the like. In some examples, the physical dimensions and connector configurations of the data storage device 106 may conform to one or more standard form factors. Some examples of standard form factors include, but are not limited to, 3.5-inch data storage devices (e.g., an HDD or SSD), 2.5-inch data storage devices, 1.8-inch data storage devices, Peripheral Component Interconnect (PCI), PCI-Extended (PCI-X), PCI Express (PCIe) (e.g., PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI, etc.).In some examples, the data storage device 106 may be directly coupled to a motherboard of the host device 104 (e.g., directly soldered or plugged into a connector).
[0018] The interface 114 may include a data bus for exchanging data with the host device 104 and / or a control bus for exchanging commands with the host device 104. The interface 114 may operate according to any suitable protocol. For example, the interface 114 may operate according to one or more of the following protocols: Advanced Technology Attachment (ATA) (e.g., Serial ATA (SATA) and Parallel ATA (PATA)), Fibre Channel Protocol (FCP), Small Computer System Interface (SCSI), Serially Attached SCSI (SAS), PCI and PCIe, Non-Volatile Memory Express (NVMe), OpenCAPI, GenZ, Cache Coherent Interface Accelerator (CCIX), Open Channel SSD (OCSSD), or the like. The interface 114 (e.g.,The interface 114 (data bus, control bus, or both) is electrically connected to the controller 108 and provides an electrical connection between the host device 104 and the controller 108 such that data can be exchanged between the host device 104 and the controller 108. In some examples, the electrical connection of the interface 114 may also enable the data storage device 106 to receive power from the host device 104. For example, as shown in FIG. Fig. 1, the power supply 111 may receive power from the host device 104 via the interface 114.
[0019] The NVM 110 may include a plurality of storage devices or storage units. The NVM 110 may be configured to store and / or retrieve data. For example, a storage unit of the NVM 110 may receive data and a message from the controller 108 instructing the storage unit to store the data. Likewise, the storage unit may receive a message from the controller 108 instructing the storage unit to retrieve data. In some examples, each of the storage units may be referred to as a chip. In some examples, the NVM 110 may include a plurality of chips (i.e., a plurality of storage units). In some examples, each storage unit may be configured to store relatively large amounts of data (e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc.).
[0020] In some examples, each memory unit may include any type of non-volatile memory device, such as flash memory devices, phase change memory (PCM), resistive random access memory (ReRAM), magnetoresistive random access memory (MRAM), ferroelectric random access memory (F-RAM), holographic memory devices, and any other type of non-volatile memory device.
[0021] The NVM 110 may include a plurality of flash memory devices or memory units. NVM flash memory devices may include NAND- or NOR-based flash memory devices and may store data based on a charge contained in a floating gate of a transistor for each flash memory cell. In NVM flash memory devices, the flash memory device may be divided into a plurality of dies, where each die of the plurality of dies includes a plurality of physical or logical blocks, which may be further divided into a plurality of pages. Each block of the plurality of blocks within a particular memory device may include a plurality of NVM cells. Rows of NVM cells may be electrically connected using a wordline to define one of a plurality of pages.The respective cells in each of the plurality of pages may be electrically connected to the respective bitlines. Furthermore, NVM flash memory devices may be 2D or 3D devices and may be of the single-level cell (SLC), multi-level cell (MLC), triple-level cell (TLC), or quad-level cell (QLC) type. It is understood that the listed memory architectures are not intended to be limiting, but rather to provide examples of possible embodiments. For example, it is contemplated that higher-level cell memories may be applicable, such as penta-level cell (PLC) memories and the like (e.g., 6-level cell, 7-level cell, etc.). The controller 108 may write and read data to and from NVM flash memory devices at the page level and erase data from NVM flash memory devices at the block level.
[0022] The power supply 111 may supply power to one or more components of the data storage device 106. When operating in the default mode, the power supply 111 may supply power to one or more components using power from an external device, such as the host device 104. For example, the power supply 111 may supply power to the one or more components using power received from the host device 104 via the interface 114. In some examples, the power supply 111 may include one or more power storage components configured to supply power to the one or more components when in the shutdown mode, such as when no longer receiving power from the external device. In this way, the power supply 111 may function as an integrated backup power source.Some examples of the one or more power storage components include capacitors, supercapacitors, batteries, and the like. In some examples, the amount of power that can be stored by the one or more power storage components may depend on the cost and / or size (e.g., area / volume) of the one or more power storage components. In other words, as the amount of power stored by the one or more power storage components increases, the cost and / or size of the one or more power storage components also increases.
[0023] The volatile memory 112 may be used by the controller 108 to store information. The volatile memory 112 may include one or more volatile storage devices. In some examples, the controller 108 may use the volatile memory 112 as a cache. For example, the controller 108 may store cached information in the volatile memory 112 until the cached information is written to the NVM 110. As shown in Fig. 1, the volatile memory 112 may consume power received from the power supply 111. Examples of the volatile memory 112 include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static RAM (SRAM), synchronous dynamic RAM (SDRAM (e.g., DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4, and the like)), pseudo-SRAM (PSRAM), block RAM (BRAM), thyristor RAM (TRAM), accelerator RAM (XRAM), and the like. Likewise, the optional DRAM 118 may be used to store mapping data, buffered instructions, logical-to-physical (L2P) tables, metadata, cached data, and the like in the optional DRAM 118. In some examples, the data storage device 106 does not include the optional DRAM 118, so that the data storage device 106 does not have DRAM.In other examples, the data storage device 106 includes the optional DRAM 118.
[0024] The controller 108 may manage one or more operations of the data storage device 106. For example, the controller 108 may manage reading data from and / or writing data to the NVM 110. In some embodiments, when the data storage device 106 receives a write command from the host device 104, the controller 108 may initiate a data store command to store data in the NVM 110 and monitor the progress of the data store command. The controller 108 may determine at least one operational characteristic of the storage system 100 and store at least one operational characteristic in the NVM 110. In some embodiments, when the data storage device 106 receives a write command from the host device 104, the controller 108 temporarily stores the data associated with the write command in the internal memory or write buffer 116 before sending the data to the NVM 110.
[0025] The controller 108 may include an optional second volatile memory 120 and a parity engine 124. The optional second volatile memory 120 may be similar to the volatile memory 112. For example, the optional second volatile memory 120 may be SRAM. The controller 108 may allocate a portion of the optional second volatile memory 120 to the host device 104 as a controller memory buffer (CMB) 122. The CMB 122 may be directly accessed by the host device 104. For example, instead of maintaining one or more submission queues in the host device 104, the host device 104 may use the CMB 122 to store the one or more submission queues normally maintained in the host device 104.In other words, the host device 104 can generate instructions and store the generated instructions with or without the associated data in the CMB 122, with the controller 108 accessing the CMB 122 to retrieve the stored generated instructions and / or the associated data. The parity engine 124 can be configured to generate protection data, such as an exclusive-or (XOR) signature, for the data programmed into the NVM 110, and use the generated protection data to detect and correct errors in the data read from the NVM 110.
[0026] Fig. 2 is an illustration of a storage device 200 according to certain embodiments. The storage device 200 may be the NVM 110 of Fig. 1. The memory device 200 includes a plurality of dies 202a through 202n, collectively referred to as dies 202, wherein each of the plurality of dies 202a through 202n includes a first level 204a and a second level 204b, collectively referred to as levels 204. Each of the levels 204 includes a plurality of blocks 206a through 206n, collectively referred to as blocks 206. Although 32 dies 202 are shown in the memory device 200, any number of dies may be included.
[0027] A jumbo block (JB) 208 includes one block from each level of each die (e.g., a first block 206a of a first level 204a of a first die 202a, a second block 206b of a second level 204b of a first die 202a, and so on). In some examples, a JB may include one or more blocks from each level of each die (e.g., a first block 206a and a second block of a first level 204a of a first die 202a). Furthermore, in some embodiments, one or more dies 202 of the memory device 200 may be configured to store XOR or parity data. Furthermore, the data in a first JB may be written sequentially from block to block, such that the data is written to B0 206a before the data is written to B1 206b.
[0028] Fig. 3 is an illustration of a jumbo block (JB) 300 according to certain embodiments. The JB 300 may be similar to the JB 208 of Fig. 2. The JB 300 includes one or more blocks of a plurality of dies 302a through 302n, where an n-th die 302n stores parity data. Parity data may be an XOR signature generated by a parity engine, such as the parity engine 124 of Fig. 1, is generated. When an XOR signature is generated for the JB 300, parity is calculated by XORing data from the same die page of each block of the JB 300. For example, parity can be calculated as (Die 0 Page 0) XOR (Die 1 Page 0) XOR (Die 2 Page 0) XOR... (Die n-1, Page 0), where the accumulated parity is the size of a single die page and is programmed on the parity die (i.e., the nth die 302n).
[0029] Each block with the same XOR signature can be referred to as an "XOR neighbor" because the XOR signature can be used to recover a block associated with the XOR signature. For example, if a full block error occurs, the data of the faulty block can be recovered using the accumulated parity (i.e., the XOR signature) for each page of the block. A full block error can signal that the block containing the data has remained in a closed state for an extended period of time and can indicate that other blocks in the same JB may also experience a full block error. Because data can be written sequentially from block to block in the JB 300, blocks in the JB 300 may be closed at or approximately the same time and experience a full block error within the same time period as another block in the JB 300 that experiences a full block error.
[0030] If a full-block error occurs in a block of the JB 300, the pages of the faulty block can be recovered using the XOR signature associated with the JB 300 and relocated to a newly allocated JB. However, since not all pages of the faulty block can be read, the recovery process occurs for each page of the faulty block. The recovery process includes reading the XOR signature for the JB 300, reading each page associated with the XOR signature from the JB 300, and XORing all adjacent pages of the XOR neighbors associated with the XOR signature. Thus, each page of the JB 300 is read twice to recover the data. Each page is read a first time to recover the lost data in the faulty block and a second time to relocate the valid data and recovered data to a newly allocated block of the newly allocated JB.Similarly, if a partial block error occurs (i.e., fewer than all pages of the block are associated with a read error), each page of the block is rebuilt and relocated from the JB 300.
[0031] Fig. 4 is a flowchart illustrating a method 400 for restoring and relocating data in response to detecting a full block error, according to certain embodiments. The method 400 may be implemented by a controller, such as controller 108 of Fig. 1. For example, reference may be made herein to aspects of the storage system 100 of Fig. 1. It should be understood that method 400 may be applicable to recovering and relocating data in response to detecting a partial block error.
[0032] In block 402, the controller 108 determines that a full-block error has occurred in a block of a JB of the NVM 110. In block 404, the controller 108 rebuilds the faulty block (page by page) and programs the rebuilt pages to another location in the NVM 110 (i.e., another allocated JB). In block 406, the controller 108 initiates a relocation process for the other blocks of the JB containing the faulty block. In block 408, the entire JB (i.e., the blocks not yet relocated) is relocated to the other location in the NVM 110 where the rebuilt pages of the faulty block are stored, with the relocation occurring page by page and block by block of the JB.
[0033] Fig. 5 is a flowchart illustrating a method 500 for determining whether a restore / relocation operation is taking place for the jumbo block based on analyzing blocks of the jumbo block with the same XOR signature as the read block, according to certain embodiments. The method 500 may be implemented by a controller, such as the controller 108 of Fig. 1. For example, reference may be made here to aspects of the storage system 100 of Fig. 1.
[0034] In block 502, the controller 108 reads data from a block of a JB. For example, reading data from the block of the JB may occur in response to receiving a read request for the block's data from the host device 104. In block 504, in response to reading the data of the block of the JB, the controller 108 analyzes the other blocks with the same XOR signature as the read block (i.e., the other blocks of the JB).Analyzing the other blocks may include determining a health metric of the other blocks, where the health metric is dependent on one or more of a program erase count (PEC) of each of the other blocks, a bit error rate (BER) of each of the other blocks, a read disturb metric of each of the other blocks, a temperature of each of the other blocks, a cross temperature of each of the other blocks, and an amount of power consumption of each of the other blocks. Based on the health metric, the controller 108 may determine whether one or more blocks of the JB are expected to recover (i.e., the health metric reaches a threshold level) and be relocated.For example, the threshold level may reflect a health metric indicating that a block is expected to fail, but has not yet failed. In other words, the threshold level may be a level that is a predetermined value lower than an actual threshold level for a block that will fail, so that moving data to volatile memory is preemptive.
[0035] In block 506, the controller 108 determines whether a restoration / relocation of one or more blocks of the JB is expected. If the restoration / relocation of one or more blocks of the JB is not expected in block 506, the method 500 continues unchanged in block 508. However, if the restoration / relocation of one or more blocks of the JB is expected in block 506, the controller 108 stores the data read from the block in volatile memory after releasing the read data to the host device as a preemptive operation in block 510 to reduce restoration / relocation latency. The volatile memory may be an SRAM of the controller 108, a DRAM of the data storage device 106, the HMB 150 of the host device 104, or other relevant volatile memory of the storage system 100 to which the controller 108 has access.The data stored in the volatile memory can be used in a restore operation instead of reading the same data from the NVM 110. Thus, fewer than all of the blocks of the JB are read from the NVM 110, and the remaining number of blocks of the JB not read from the NVM 110 are read from the volatile memory during the restore / relocation operation.
[0036] Fig. 6 is a flowchart illustrating a method 600 for restoring and relocating data in response to detecting a full block error, according to certain embodiments. The method 600 may be implemented by a controller, such as controller 108 of Fig. 1. For example, reference may be made herein to aspects of the storage system 100 of Fig.1. It should be understood that method 600 may be applicable to the recovery and relocation of data in response to the detection of a partial block error.
[0037] In block 602, the controller 108 determines that a full-block error has occurred in a block of a JB of the NVM 110. In block 604, the controller 108 sets X equal to 0, where X represents the current page of the faulty block being rebuilt and XMAX is the maximum number of pages of the faulty block. In block 606, the controller 108 determines whether all pages of the faulty block have been rebuilt and relocated. In other words, the controller 108 determines whether X is equal to XMAX. If X is equal to XMAX in block 606, the method 600 exits in block 616.
[0038] However, if X is not equal to XMAX in block 606, the controller 108 reads all pages corresponding to the current page number (i.e., X) from the other dies (i.e., other blocks of the JB) used in the XOR signature in block 608. Reading pages from the other dies used in the XOR signature may include reading one or more pages of one or more blocks from volatile memory and reading one or more other pages of one or more other blocks from the NVM 110. The one or more pages of the one or more blocks stored in the volatile memory may be preemptively stored as part of the method 500 as a result of determining that a restore / relocation was expected after reading the one or more pages of the one or more blocks from the respective JB of the NVM 110.In other words, the controller 108 determines which pages associated with the respective JB and having the same XOR signature as the faulty block are located in the volatile memory. The controller 108 then reads the pages stored in the volatile memory and the remaining pages from the NVM 110 into the volatile memory for use in the recovery operation.
[0039] In block 610, the controller 108 restores the faulty page by XORing the pages read from the other dies used in the XOR signature to restore the faulty page. In block 612, each of the pages, including the restored page, of the die of the XOR signature is relocated to an assigned JB. In block 614, the controller 108 increments X by 1 to continue the restore operation by restoring a next page (if applicable) in the faulty block. In some embodiments, the controller 108 may read the JB data once from the NVM 110 and store the read data in volatile memory, with the restore / relocation operation occurring from volatile memory instead of both the NVM 110 and volatile memory.
[0040] By using a volatile memory to store data of a block of a jumbo block after it has been read in response to a health measurement of one or more blocks of the jumbo block exceeding a rebuild / relocation threshold, the data stored in the volatile memory can be used in the rebuild / relocation operation, which can reduce rebuild / relocation latency, improve the quality of service of the data storage device, and extend a working lifetime of the data storage device.
[0041] In one embodiment, a data storage device includes a non-volatile memory device and a controller coupled to the non-volatile memory device and a volatile memory device. The controller is configured to read data from one of a plurality of blocks of the non-volatile memory device in response to executing a read command received from a host device, determine that a health state of one or more blocks of the plurality of blocks of the non-volatile memory device has reached a recovery / relocation threshold, the one or more blocks being in a same exclusive-or (XOR) signature as the block, and store the data of the block in the volatile memory device in response to providing the data read from the block to the host device.
[0042] Determining the health status of the one or more blocks includes, for each of the one or more blocks, determining one or more of a program erase count (PEC) of each block of the one or more blocks, a bit error rate (BER) of each block of the one or more blocks, a read disturb measurement of each block of the one or more blocks, a temperature of each block of the one or more blocks, a cross temperature of each block of the one or more blocks, and an amount of power consumption of each block of the one or more blocks. The volatile memory device is one of a host memory buffer (HMB) of the host device, a static random access memory (SRAM) of the controller, and a dynamic random access memory (DRAM) of the controller.The restore / relocation threshold is a predetermined value that is less than an actual restore / relocation threshold. The controller is configured to initiate a restore / relocation operation when the actual restore / relocation threshold is reached. The controller is further configured to determine that a block of the one or more blocks has reached the actual restore / relocation threshold, to determine that at least one block of the one or more blocks is stored in the volatile storage device, to restore / relocate the at least one block of the one or more blocks from the volatile storage device, and to restore / relocate any block other than the at least one block of the one or more blocks from the non-volatile storage device.During the restore / relocation operation, fewer than all blocks of the one or more blocks are read from the non-volatile storage device. The XOR signature is used to restore data from one block of the one or more blocks during a restore / relocation operation.
[0043] In another embodiment, a data storage device includes a non-volatile memory device and a controller coupled to the non-volatile memory device and a volatile memory device.The controller is configured to determine that at least one partial block failure has occurred for a block of a plurality of blocks of the non-volatile memory device, the block being part of a set of blocks associated with an exclusive-or (XOR) signature, and the XOR signature being used to recover one or more pages of the block of the set of blocks associated with the XOR signature, to determine that at least one page of the block exists in the volatile memory device, to recover at least one page of the block that has failed using the XOR signature, and to relocate the at least one recovered page of the block, the at least one page of the block that exists in the volatile memory device, and a remaining number of pages of the block of the set of blocks to another block of the non-volatile memory device.
[0044] Relocating the at least one page of the block existing in the volatile memory device includes reading the at least one page of the block existing in the volatile memory device once. Restoring the remaining number of pages of the block of the set of blocks from the non-volatile memory device includes reading the remaining number of pages of the block of the set of blocks twice. The controller is further configured to determine which pages of the block of the set of blocks are stored in the volatile memory device in response to determining that the at least partial block error has occurred on the block of the plurality of blocks of the non-volatile memory device.The controller is further configured to receive a read command for another block of the set of blocks stored in the non-volatile memory device and determine a health measurement for one or more blocks of the set of blocks. The controller is further configured to determine that the health measurement of at least one of the one or more blocks has reached or exceeded a predetermined threshold and store the data of the other block associated with the read command in the volatile memory device.The controller is further configured to erase the at least one page of the block of the set of blocks from the volatile memory device in response to restoring the at least one page of the block of the set of blocks from the volatile memory device and restoring the remaining number of pages of the block of the set of blocks from the non-volatile memory device. The volatile memory device is a host memory buffer (HMB) of a host device. The volatile memory device is either a static random access memory (SRAM) of the controller or a dynamic random access memory (DRAM) coupled to the controller. The at least partial block error is a full block error.
[0045] In another embodiment, a data storage device includes a means for storing non-volatile data and a controller coupled to the means for storing non-volatile data. The controller is configured to store data read from the means for storing non-volatile data in a means for storing volatile data and to use the data stored in the means for storing volatile data and the data stored in the means for storing non-volatile data to recover data with a read error.
[0046] The data stored in the means for storing volatile data and the data stored in the means for storing non-volatile data used to recover data with the read error are linked with the same exclusive-or (XOR) signature. Storing the data read from the means for storing non-volatile data in the means for storing volatile data is responsive to determining that the data stored in the means for storing non-volatile data, linked with a same XOR signature, has reached or exceeded a health measurement threshold.
[0047] While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the following claims. QUOTES CONTAINED IN THE DESCRIPTION
[0000] This list of documents submitted by the applicant was generated automatically and is included solely for the convenience of the reader. This list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions. Cited patent literature
[0000] US 18 / 219,819
[0001]
Claims
[1] Data storage device comprising: a non-volatile storage device; and a controller coupled to the non-volatile memory device and a volatile memory device, the controller configured to: Reading data from one of a plurality of blocks of the non-volatile memory device in response to executing a read command received from a host device; Determining that a health state of one or more blocks of the plurality of blocks of the non-volatile memory device has reached a recovery / relocation threshold, wherein the one or more blocks are in the same exclusive-or (XOR) signature as the block; and Storing the data of the block in the volatile storage device in response to providing the data read from the block to the host device. [2] The data storage device of claim 1, wherein determining that the health state of the one or more blocks comprises determining for each of the one or more blocks one or more of: a program erase count (PEC) of each block of the one or more blocks; a bit error rate (BER) of each block of the one or more blocks; a read disturbance measurement value of each block of the one or more blocks; a temperature of each block of the one or more blocks; a transverse temperature of each block of the one or more blocks; and an amount of power consumption of each block of the one or more blocks. [3] The data storage device of claim 1, wherein the volatile memory device comprises either: a host memory buffer (HMB) of the host device; a static random access memory (SRAM) of the controller; or a dynamic random access memory (DRAM) of the controller. [4] The data storage device of claim 1, wherein the restore / relocation threshold is a predetermined value less than an actual restore / relocation threshold, the controller being configured to initiate a restore / relocation operation upon reaching the actual restore / relocation threshold. [5] The data storage device of claim 4, wherein the controller is further configured to: determining that a block of the one or more blocks has reached the actual recovery / relocation threshold; determining that at least one block of the one or more blocks is stored in the volatile storage device; Restoring / relocating the at least one block of the one or more blocks from the volatile storage device; and Recovering / relocating any other block that is not the at least one block of the one or more blocks from the non-volatile storage device. [6] The data storage device of claim 5, wherein during the restore / relocation operation, less than all of the blocks of the one or more blocks are read from the non-volatile memory device. [7] The data storage device of claim 1, wherein the XOR signature is used to restore data of a block of the one or more blocks during a restore / relocation operation. [8] Data storage device comprising: a non-volatile storage device; and a controller coupled to the non-volatile memory device and a volatile memory device, the controller configured to: Determining that at least one partial block error has occurred on one block of a plurality of blocks of the non-volatile memory device, wherein: the block is part of a set of blocks linked with an exclusive-or (XOR) signature; and the XOR signature is used to recover one or more pages of the block of the set of blocks associated with the XOR signature; determining that at least one page of the block exists in the volatile storage device; Recover at least one page of the faulty block that has failed, using the XOR signature; and Relocating the at least one restored page of the block, the at least one page of the block existing in the volatile storage device, and a remaining number of pages of the block of the set of blocks from the non-volatile storage device to another block of the non-volatile storage device. [9] The data storage device of claim 8, wherein relocating the at least one page of the block existing in the volatile memory device comprises reading the at least one page of the block existing in the volatile memory device once. [10] The data storage device of claim 9, wherein restoring the remaining number of pages of the block of the set of blocks from the non-volatile memory device comprises reading the remaining number of pages of the block of the set of blocks twice. [11] The data storage device of claim 8, wherein the controller is further configured to: Determining which pages of the block of the set of blocks are stored in the volatile memory device in response to determining that the at least partial block error has occurred on the block of the plurality of blocks of the non-volatile memory device. [12] The data storage device of claim 8, wherein the controller is further configured to: Receiving a read command for another block of the set of blocks stored in the non-volatile memory device; and Determining a health measurement of one or more blocks of the set of blocks. [13] The data storage device of claim 12, wherein the controller is further configured to: Determining that the health status measurement of at least one block of the one or more blocks has reached or exceeded a predetermined threshold; and Storing the data of the other block associated with the read command in the volatile storage device. [14] The data storage device of claim 13, wherein the controller is further configured to: Erasing the at least one page of the block of the set of blocks from the volatile storage device in response to restoring the at least one page of the block of the set of blocks from the volatile storage device and restoring the remaining number of pages of the block of the set of blocks from the non-volatile storage device. [15] The data storage device of claim 8, wherein the volatile memory device is a host memory buffer (HMB) of a host device. [16] The data storage device of claim 8, wherein the volatile memory device is either a static random access memory (SRAM) of the controller or a dynamic random access memory (DRAM) coupled to the controller. [17] The data storage device of claim 8, wherein the at least partial block error is a full block error. [18] Data storage device comprising: a means for storing non-volatile data; and a controller coupled to the means for storing non-volatile data, the controller configured to: Storing the data read from the means for storing non-volatile data in a means for storing volatile data; and Using the data stored in the means for storing volatile data and the data stored in the means for storing non-volatile data to recover data having a read error. [19] The data storage device of claim 18, wherein the data stored in the means for storing volatile data and the data stored in the means for storing non-volatile data used to recover data having the read error are linked with a same exclusive-or (XOR) signature. [20] The data storage device of claim 19, wherein storing the data read from the means for storing non-volatile data in the means for storing volatile data is responsive to determining that the data stored in the means for storing non-volatile data associated with a same XOR signature has reached or exceeded a health measurement threshold.
Citation Information
Patent Citations
US-ANMELDUNGNR.18/219,819