US20230205627A1 - Data storage device and method for data protection using xor parity - Google Patents
Data storage device and method for data protection using xor parity Download PDFInfo
- Publication number
- US20230205627A1 US20230205627A1 US17/563,533 US202117563533A US2023205627A1 US 20230205627 A1 US20230205627 A1 US 20230205627A1 US 202117563533 A US202117563533 A US 202117563533A US 2023205627 A1 US2023205627 A1 US 2023205627A1
- Authority
- US
- United States
- Prior art keywords
- metablock
- data
- xor
- data storage
- parities
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims description 34
- 230000015654 memory Effects 0.000 claims abstract description 98
- 238000004891 communication Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 101150040844 Bin1 gene Proteins 0.000 description 1
- 101100386054 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CYS3 gene Proteins 0.000 description 1
- SGSXWFDMRKAVLS-UHFFFAOYSA-N [6'-acetyloxy-5-[3-[3-[4-(1-methylindol-3-yl)-2,5-dioxopyrrol-3-yl]indol-1-yl]propylcarbamoyl]-3-oxospiro[2-benzofuran-1,9'-xanthene]-3'-yl] acetate Chemical compound C1=C(C=2C(NC(=O)C=2C=2C3=CC=CC=C3N(C)C=2)=O)C2=CC=CC=C2N1CCCNC(=O)C(C=C1C(=O)O2)=CC=C1C12C2=CC=C(OC(C)=O)C=C2OC2=CC(OC(=O)C)=CC=C12 SGSXWFDMRKAVLS-UHFFFAOYSA-N 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 101150035983 str1 gene Proteins 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Definitions
- This application relates generally to data storage devices, and more particularly, to data storage devices and methods for protecting host data in data storage devices from failures.
- NAND flash memory is commonly used in everyday devices including smart telephones, computers, disk drives, and the like. Compared to other types of memory, NAND flashy memory is less expensive, smaller in size, has relatively low power consumption, and is easier to interface electronically.
- NAND flash memory are, however, susceptible to NAND failures, for example, program failures, silent read failures, and the like. These failures may result in data loss that may reduce the reliability of the data storage device. Accordingly, there is a need to protect host data from failures in the data storage device.
- Various techniques are used to guard or protect against NAND failures or in the alternative detect NAND failures.
- XORs of word lines (WLs) is performed and stored either in the same memory block or in a separate memory block.
- the stored XORs may be used to recover lost data of the memory blocks.
- a shifted dual write scheme is used such that the same host data is written twice, for example, in separate memory block.
- both of the above-noted schemes generally require additional unusable memory space reducing the memory capacity of the data storage devices. Accordingly, there is a need for a data storage device and a corresponding method to reliably protect the host data in data storage device from failure that does not require high amounts of storage space.
- One embodiment provides a data storage device including a non-volatile memory and a data storage controller coupled to the non-volatile memory.
- the data storage controller is configured to generate a first plurality of XOR parities based on first data of a first metablock of the non-volatile memory and store the first plurality of XOR parities in a second metablock of the non-volatile memory.
- the data storage controller is also configured to generate a second plurality of XOR parities based on second data of the second metablock.
- the second data includes two or more XOR parities of the first plurality of XOR parities.
- the data storage controller is further configured to store the second plurality of XOR parities in a reserved portion of the first metablock and detect a failure in the first metablock resulting in data loss.
- the data storage controller is also configured to recover lost data of the first metablock based on the second plurality of XOR parities.
- Another embodiment provides a method for protecting data in a data storage device from failures.
- the method includes generating, using a data storage controller of the data storage device, a first plurality of XOR parities based on first data of a first metablock of a non-volatile memory of the data storage device and storing, using the data storage controller, the first plurality of XOR parities in a second metablock of the non-volatile memory.
- the method includes generating, using the data storage controller, a second plurality of XOR parities based on second data of the second metablock.
- the second data includes two or more XOR parities of the first plurality of XOR parities.
- the method also includes storing, using the data storage controller, the second plurality of XOR parities in a reserved portion of the first metablock and detecting, using the data storage controller, a failure in the first metablock resulting in data loss.
- the method further includes recovering, using the data storage controller, lost data of the first metablock based on the second plurality of XOR parities.
- Another embodiment provides an apparatus including means for generating a first plurality of XOR parities based on first data of a first metablock of a non-volatile memory and means for storing the first plurality of XOR parities in a second metablock of the non-volatile memory.
- the apparatus also includes means for generating a second plurality of XOR parities based on second data of the second metablock.
- the second data includes two or more XOR parities of the first plurality of XOR parities.
- the apparatus further includes means for storing the second plurality of XOR parities in a reserved portion of the first metablock and means for detecting a failure in the first metablock resulting in data loss.
- the apparatus also includes means for recovering lost data of the first metablock based on the second plurality of XOR parities.
- Various aspects of the present disclosure provide for data storage devices configured to perform various index searches based on a received pseudocode file and search key from a host device.
- the present disclosure can be embodied in various forms, including hardware or circuits controlled by software, firmware, or a combination thereof.
- the foregoing summary is intended solely to give a general idea of various aspects of the present disclosure and does not limit the scope of the present disclosure in any way.
- FIG. 1 is a block diagram illustrating one example of a system including a data storage device in accordance with some embodiments.
- FIG. 2 is an illustration of a metablock of the data storage device of FIG. 1 in accordance with some embodiments.
- FIG. 3 is an illustration of a metablock of the data storage device of FIG. 1 in accordance with some embodiments.
- FIG. 4 is a flow chart of an example method for protecting external electronic device data in the data storage device of FIG. 1 from failures in accordance with some embodiments.
- FIG. 1 is a block diagram of one example of a memory system 100 as used in an electronic device.
- the system 100 includes a data storage device 105 in communication with one or more external electronic devices 110 (for example, host devices).
- the data storage device 105 includes one or more memory devices 115 (for example, a non-volatile memory 115 ) that are coupled to a controller 120 (for example, a data storage controller 120 ).
- controller 120 One example of the structural and functional features provided by the controller 120 are illustrated in FIG. 1 .
- the controller 120 is not limited to the structural and functional features provided by the controller 120 in FIG. 1 .
- the controller 120 may include fewer or additional structural and functional features that are not illustrated in FIG. 1 .
- the data storage device 105 and the one or more external electronic devices 110 may be operationally coupled through a connection (for example, a communication path 125 ), such as a bus or a wireless connection.
- a connection for example, a communication path 125
- the data storage device 105 may be embedded within the external electronic device 110 .
- the data storage device 105 may be removable from the external electronic device 110 (i.e., “removably” coupled to the external electronic device 110 ).
- the data storage device 105 may be removably coupled to the external electronic device 110 in accordance with a removable universal serial bus (USB) configuration.
- USB universal serial bus
- the data storage device 105 may include or correspond to a solid state drive (SSD), which may be used as an embedded storage drive (for example, a mobile embedded storage drive), an enterprise storage drive (ESD), a client storage device, a cloud storage drive, or other suitable storage drives.
- SSD solid state drive
- embedded storage drive for example, a mobile embedded storage drive
- ESD enterprise storage drive
- client storage device for example, a tablet, or other suitable storage drives.
- the data storage device 105 may be configured to be coupled to the external electronic device 110 using the communication path 125 , such as a wired communication path and/or a wireless communication path.
- the data storage device 105 may include an interface 130 (for example, a host interface 130 ) that enables communication using the communication path 125 between the data storage device 105 and the external electronic device 110 , such as when the interface 130 is communicatively coupled to the external electronic device 110 .
- the external electronic device 110 may provide power to the data storage device 105 .
- the external electronic device 110 may provide one or more regulated voltages to the data storage device 105 , such as 12 VDC, 5 VDC, 3.3 VDC, etc.
- the external electronic device 110 may include a processor 135 and a memory 140 .
- the memory 140 may be configured to store data and/or instructions that may be executable by the processor 135 .
- the memory 140 may be a single memory or may include one or more memories, such as one or more non-volatile memories, one or more volatile memories, or a combination thereof.
- the external electronic device 110 may issue one or more commands to the data storage device 105 , such as one or more requests to erase data at, read data from, or write data to the memory device 115 of the data storage device 105 .
- the external electronic device 110 may be configured to provide data, such as user data, to be stored at the memory device 115 or to request data to be read from the memory device 115 .
- the external electronic device 110 may include a mobile smartphone, a music player, a video player, a gaming console, an electronic book reader, a personal digital assistant (PDA), a computer, such as a laptop computer or notebook computer, any combination thereof, or other suitable electronic device.
- a mobile smartphone a music player, a video player, a gaming console, an electronic book reader, a personal digital assistant (PDA), a computer, such as a laptop computer or notebook computer, any combination thereof, or other suitable electronic device.
- PDA personal digital assistant
- the external electronic device 110 communicates using a memory interface that enables reading from the memory device 115 and writing to the memory device 115 .
- the external electronic device 110 may operate in compliance with an industry specification, such as a Universal Flash Storage (UFS) Host Controller Interface specification.
- UFS Universal Flash Storage
- the external electronic device 110 may operate in compliance with one or more other specifications, such as a Secure Digital (SD) Host Controller specification or other suitable industry specification.
- SD Secure Digital
- the external electronic device 110 may also communicate with the memory device 115 in accordance with any other suitable communication protocol.
- the memory devices 115 of the data storage device 105 may include a non-volatile memory (for example, NAND, NOR, BiCS family of memories, or other suitable memory).
- the memory device 115 may be any type of flash memory.
- the memory device 115 may be two-dimensional (2D) memory or three-dimensional (3D) flash memory.
- the memory device 115 may include one or more memory dies 150 .
- individual memory dies 150 or groups of memory dies 150 may be referred to as arrays.
- Each of the one or more memory dies 150 may include one or more memory blocks 155 (for example, one or more erase blocks, a plurality of memory blocks).
- the one or more memory blocks 155 may arranged in one or more planes.
- Each memory block 155 may include one or more groups of storage elements, such as a representative group of storage elements 160 A- 160 N.
- the group of storage elements 160 A- 160 N may be configured as a word line or a page.
- the group of storage elements 160 A- 160 N may include multiple storage elements (for example, memory cells that are referred to herein as a “string”), such as a representative storage elements 165 A and 165 N, respectively.
- Data from the host may be written to one or more metablocks.
- a metablock may be selected from a plurality of memory blocks 155 spanning across multiple planes.
- the pages of the plurality of memory blocks 155 may be grouped together and referred to as a metapage.
- the memory device 115 may include support circuitry, such as read/write circuitry 170 . Although depicted as a single component, the read/write circuitry 170 may be divided into separate components of the memory device 115 , such as read circuitry and write circuitry.
- the read/write circuitry 170 may be external to the one or more memory dies 150 of the memory device 115 .
- one or more individual memory dies 150 may include corresponding read/write circuitry 170 that is operable to read from and/or write to storage elements within the individual memory die 150 , independent of any other read and/or write operations at any of the other memory dies 150 .
- the read/write circuitry 170 may be configured to perform various read/write operations such as initial writing to volatile memory, array commit functions, and other functions as required for a given application.
- the controller 120 is coupled to the memory device 115 (for example, the one or more memory dies 150 ) using a bus 175 , an interface (for example, interface circuitry), another structure, or a combination thereof.
- the bus 175 may include multiple distinct channels to enable the controller 120 to communicate with each of the one or more memory dies 150 and/or memory devices 115 in parallel with, and independently of, communication with the other memory dies 150 and/or memory devices 115 .
- the controller 120 is configured to receive data and instructions from the external electronic device 110 and to send data to the external electronic device 110 .
- the controller 120 may send data to the external electronic device 110 using the interface 130
- the controller 120 may receive data from the external electronic device 110 using the interface 130 .
- the controller 120 is configured to send data and commands to the memory device 115 and to receive data from the memory device 115 .
- the controller 120 is configured to send data and a program or write command to cause the memory device 115 to store data to a specified address of the memory device 115 .
- the write command may specify a physical address of a portion of the memory device 115 (for example, a physical address of a word line of the memory device 115 ) that is to store the data, as well as a size (for example, 2 k, 4 k, etc.) of the data to be written.
- a physical address of a portion of the memory device 115 for example, a physical address of a word line of the memory device 115
- a size for example, 2 k, 4 k, etc.
- the controller 120 is further configured to send a read command to the memory device 115 to access data from a specified address of the memory device 115 .
- the read command may specify the physical address of a region of the memory device 115 (for example, a physical address of a word line of the memory device 115 ), as well as a size (for example, 2 k, 4 k, etc.) of the data to be read.
- the controller 120 may further be configured to process received read commands by executing one or more indexing functions in response to one or more search or index keys received from the external electronic devices 110 .
- the controller 120 may also be configured to send data and commands to the memory device 115 associated with background scanning operations, garbage collection operations, and/or wear-leveling operations, or other suitable memory operations.
- FIG. 2 illustrates an example metablock 200 (for example, a first metablock 200 ) of the memory device 115 .
- the first metablock 200 is a host data metablock that is used for storing host data (or referred to as external electronic device data) received from the external electronic device 110 .
- the basic building block of the memory device 115 is a memory cell 210 , which may be a single level cell storing a single bit (for example, 0 or 1) or a multi-level cell (for example, a triple level cell or quad level cell) storing more than a single bit.
- the memory cells 210 are arranged in rows and columns (for illustration purposes) in the first metablock 200 .
- All the memory cells 210 within a row of the first metablock 200 may share a word line address (for example, WL 0 , WL 1 , and so on) and a string address (for example, STR 0 , STR 1 , and so on) or a metapage address (for example metapage 0 , metapage 1 , and so on). All the memory cells 210 within a column of the first metablock 200 may share a plane (for example PL 0 , PL 1 , PL 2 , PL 3 ) and a memory block 155 (for example, Fim 0 , Fim 1 , and so on).
- a word line address for example, WL 0 , WL 1 , and so on
- a string address for example, STR 0 , STR 1 , and so on
- metapage address for example metapage 0 , metapage 1 , and so on
- All the memory cells 210 within a column of the first metablock 200 may share a plane (for
- memory cells 210 across a single row are binned together to create a bin 220 (for example, first data).
- the memory cells 210 across a single row (that is, a bin 220 ) are also XORed to determine an XOR parity of the row.
- memory cells 210 that are binned together are provided a bin label in FIG. 2 .
- memory cells 210 in the first row are labeled Bin 0
- memory cells 210 in the second row are labeled Bin 1 , and so on.
- FIG. 2 illustrates only one example of the first pre-defined set of data.
- the binning may be performed using a different structure, for example, all memory cells 210 of a word line within a single plane may be binned together.
- the combination of memory cells 210 for the first pre-defined set of data may be varied based on the requirements of the data storage device 105 .
- FIG. 3 illustrates an example parity metablock 300 (for example, a second metablock 300 ).
- the second metablock 300 is an XOR parity metablock that is used for temporarily storing XOR parity data of the first metablock 200 .
- the second metablock 300 is part of the same memory device 115 as the first metablock 200 .
- the second metablock 300 is part of the memory 140 of the controller 120 .
- each memory cell 310 of the second metablock 300 stores XOR parity data of a single bin 220 of the first metablock 200 .
- the XOR parity data stored in the second metablock 300 may be used to protect against program failures of the host data.
- the controller 120 detects program failures of the first metablock 200 and uses the XOR parities in the second metablock 300 to recover any lost data.
- a portion (for example, reserved portion 230 ) of the first metablock 200 may be reserved for XOR of XOR parities.
- the non-reserved portion 240 of the first metablock 200 may be referred to as the host data portion 240 .
- Host data from the external electronic device 110 can be written and read from the host data portion 240 .
- the host data is prevented from being written to the reserved portion 230 .
- This restriction may be enforced by the controller 120 .
- the controller 120 stores the XOR of XOR parities in the reserved portion 230 .
- the XOR of XOR parities may be performed on any pre-defined set of data (for example, second data). In the example illustrated in FIGS.
- the XOR of XOR parities is performed on a set of plurality of memory cells 310 separated by a predetermined number of memory cells 310 .
- the second pre-defined set of data includes memory cells separated by ten ( 10 ) memory cells, for example, Bin 0 , Bin 10 , Bin 20 , and so on.
- any combination of memory cells 310 including any different number of memory cells 310 may be used to perform the XOR of XOR parities.
- the second metablock 300 may be erased releasing the second metablock 300 for data storage.
- the second metablock 300 can then be used as a host data metablock or as an XOR parity metablock for a different host data metablock.
- the controller 120 may write additional host data to the second metablock 300 .
- the XOR of XOR parities may be used to protect silent read failures. For example, when the host data is read from the first metablock 200 , the controller 120 may detect a silent read failure resulting in data loss. The data may be recovered using the XOR of XOR parities stored in the reserved portion 230 of the first metablock 200 .
- FIG. 4 illustrates a flowchart of one example method 400 for protecting data in the data storage device 105 from failures.
- the method 400 includes generating, using the controller 120 , a first plurality of XOR parities based on first data of the first metablock 200 (at block 410 ).
- the controller 120 may bin together a row or metapage of memory cells 210 , the data stored in which forms, for example, a subset of first data.
- the controller 120 generates an XOR of each bin 220 (that is, a first plurality of XOR parities corresponding to first data).
- the method 400 also includes storing, using the controller 120 , the first plurality of XOR parities in a second metablock 300 (at block 420 ).
- the controller 120 stores each of the XOR parities in a separate memory cell 310 of the second metablock 300 .
- the first plurality of XOR parities may be used to recover data when the first metablock 200 is open.
- a metablock is considered open when the metablock is currently being used for writing data.
- An open metablock may experience a program failure or enhanced post write read (EPWR) failure.
- the first plurality of XOR parities may be used to recover data lost due after a program failure or EPWR failure.
- the method 400 further includes generating, using the controller 120 , a second plurality of XOR parities based on second data of the second metablock 300 (at block 430 ).
- the second data includes two or more XOR parities of the first plurality of XOR parities.
- the controller 120 generates XORs of data stored in a plurality of memory cells 310 separated by ten cells. That is, an XOR parity of two or more XOR parities of the first plurality of XOR parities is generated.
- the two or more XOR parities include, for example, Bin 0 , Bin 10 , Bin 20 , and so on.
- the controller 120 may generate XORs of a different selection and combination of memory cells 310 .
- the method 400 also includes storing, using the controller 120 , the second plurality of XOR parities in the reserved portion 230 of the first metablock 200 (at block 440 ).
- the controller 120 stores each of the XOR of XOR parities in a separate memory cell 210 of the reserved portion 230 of the first metablock 200 .
- the method 400 further includes detecting, using the controller 120 , a failure in the first metablock 200 resulting in data loss (at block 450 ).
- the failure may include, for example, a program failure, a silent read failure, or the like.
- Failures of the first metablock 200 may be detected in several ways. For example, a program failure may be detected based on NAND status commands from the memory device 115 informing about the program failures. Alternatively, for example, a program failure may be detected by programming data, ignoring NAND status and reading the data back, and decoding the data to determine whether the data passes.
- the method 400 also includes recovering, using the controller 120 , lost data of the first metablock based on the second plurality of XOR parities (at block 460 ).
- the second plurality of XOR parities are used to recover data in a closed metablock.
- a metablock is when data is already written to the metablock and the metablock is not currently being programmed.
- the controller 120 detects that a silent read failure has occurred resulting in a data loss of the first metapage of the first metablock 200 .
- the controller 120 uses the second plurality of XOR parities (for example, bin 0 XOR bin 10 XOR . . . ) to recover the first metapage of the first metablock 200 .
- the controller detects that a program failure has occurred resulting in a data loss of the first metapage of the first metablock 200 .
- the controller 120 uses the first plurality of XOR parities (for example, bin 0 ) to recover the first metapage of the first metablock 200 and reprogram the first metablock 200 based on the recovered data. In some embodiments, the controller 120 may also use the second plurality of XOR parities to recover after detecting program failures.
- first plurality of XOR parities for example, bin 0
- second plurality of XOR parities to recover after detecting program failures.
- the storage requirement of XOR parities is significantly reduced because an additional XOR operation is performed on the first plurality of XOR parities.
- the ability of the data storage device 105 is unaffected as any data loss is still capable of being recovered. Additional storage savings can be obtained by using a different second pre-defined set of data.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
- This application relates generally to data storage devices, and more particularly, to data storage devices and methods for protecting host data in data storage devices from failures.
- NAND flash memory is commonly used in everyday devices including smart telephones, computers, disk drives, and the like. Compared to other types of memory, NAND flashy memory is less expensive, smaller in size, has relatively low power consumption, and is easier to interface electronically.
- NAND flash memory are, however, susceptible to NAND failures, for example, program failures, silent read failures, and the like. These failures may result in data loss that may reduce the reliability of the data storage device. Accordingly, there is a need to protect host data from failures in the data storage device.
- Various techniques are used to guard or protect against NAND failures or in the alternative detect NAND failures. In one example, XORs of word lines (WLs) is performed and stored either in the same memory block or in a separate memory block. The stored XORs may be used to recover lost data of the memory blocks. In another example, a shifted dual write scheme is used such that the same host data is written twice, for example, in separate memory block. However, both of the above-noted schemes generally require additional unusable memory space reducing the memory capacity of the data storage devices. Accordingly, there is a need for a data storage device and a corresponding method to reliably protect the host data in data storage device from failure that does not require high amounts of storage space.
- One embodiment provides a data storage device including a non-volatile memory and a data storage controller coupled to the non-volatile memory. The data storage controller is configured to generate a first plurality of XOR parities based on first data of a first metablock of the non-volatile memory and store the first plurality of XOR parities in a second metablock of the non-volatile memory. The data storage controller is also configured to generate a second plurality of XOR parities based on second data of the second metablock. The second data includes two or more XOR parities of the first plurality of XOR parities. The data storage controller is further configured to store the second plurality of XOR parities in a reserved portion of the first metablock and detect a failure in the first metablock resulting in data loss. The data storage controller is also configured to recover lost data of the first metablock based on the second plurality of XOR parities.
- Another embodiment provides a method for protecting data in a data storage device from failures. The method includes generating, using a data storage controller of the data storage device, a first plurality of XOR parities based on first data of a first metablock of a non-volatile memory of the data storage device and storing, using the data storage controller, the first plurality of XOR parities in a second metablock of the non-volatile memory. The method includes generating, using the data storage controller, a second plurality of XOR parities based on second data of the second metablock. The second data includes two or more XOR parities of the first plurality of XOR parities. The method also includes storing, using the data storage controller, the second plurality of XOR parities in a reserved portion of the first metablock and detecting, using the data storage controller, a failure in the first metablock resulting in data loss. The method further includes recovering, using the data storage controller, lost data of the first metablock based on the second plurality of XOR parities.
- Another embodiment provides an apparatus including means for generating a first plurality of XOR parities based on first data of a first metablock of a non-volatile memory and means for storing the first plurality of XOR parities in a second metablock of the non-volatile memory. The apparatus also includes means for generating a second plurality of XOR parities based on second data of the second metablock. The second data includes two or more XOR parities of the first plurality of XOR parities. The apparatus further includes means for storing the second plurality of XOR parities in a reserved portion of the first metablock and means for detecting a failure in the first metablock resulting in data loss. The apparatus also includes means for recovering lost data of the first metablock based on the second plurality of XOR parities.
- Various aspects of the present disclosure provide for data storage devices configured to perform various index searches based on a received pseudocode file and search key from a host device. The present disclosure can be embodied in various forms, including hardware or circuits controlled by software, firmware, or a combination thereof. The foregoing summary is intended solely to give a general idea of various aspects of the present disclosure and does not limit the scope of the present disclosure in any way.
-
FIG. 1 is a block diagram illustrating one example of a system including a data storage device in accordance with some embodiments. -
FIG. 2 is an illustration of a metablock of the data storage device ofFIG. 1 in accordance with some embodiments. -
FIG. 3 is an illustration of a metablock of the data storage device ofFIG. 1 in accordance with some embodiments. -
FIG. 4 is a flow chart of an example method for protecting external electronic device data in the data storage device ofFIG. 1 from failures in accordance with some embodiments. - In the following description, numerous details are set forth, such as data storage device configurations, controller operations, and the like, in order to provide an understanding of one or more aspects of the present disclosure. It will be readily apparent to one skilled in the art that these specific details are merely exemplary and not intended to limit the scope of this application. In particular, the functions associated with the controller can be performed by hardware (for example, analog or digital circuits), a combination of hardware and software (for example, program code or firmware stored in a non-transitory computer-readable medium that is executed by a processor or control circuitry), or any other suitable means. The following description is intended solely to give a general idea of various aspects of the present disclosure and does not limit the scope of the disclosure in any way. Furthermore, it will be apparent to those of skill in the art that the concepts discussed herein are applicable to any of solid-state memory, such as NOR, NAND, PCM (“Phase Change Memory”), ReRAM, MRAM, DRAM, etc.
-
FIG. 1 is a block diagram of one example of amemory system 100 as used in an electronic device. In the example ofFIG. 1 , thesystem 100 includes adata storage device 105 in communication with one or more external electronic devices 110 (for example, host devices). Thedata storage device 105 includes one or more memory devices 115 (for example, a non-volatile memory 115) that are coupled to a controller 120 (for example, a data storage controller 120). - One example of the structural and functional features provided by the
controller 120 are illustrated inFIG. 1 . However, thecontroller 120 is not limited to the structural and functional features provided by thecontroller 120 inFIG. 1 . Thecontroller 120 may include fewer or additional structural and functional features that are not illustrated inFIG. 1 . - The
data storage device 105 and the one or more externalelectronic devices 110 may be operationally coupled through a connection (for example, a communication path 125), such as a bus or a wireless connection. In some examples, thedata storage device 105 may be embedded within the externalelectronic device 110. Alternatively, in other examples, thedata storage device 105 may be removable from the external electronic device 110 (i.e., “removably” coupled to the external electronic device 110). As an example, thedata storage device 105 may be removably coupled to the externalelectronic device 110 in accordance with a removable universal serial bus (USB) configuration. In some implementations, thedata storage device 105 may include or correspond to a solid state drive (SSD), which may be used as an embedded storage drive (for example, a mobile embedded storage drive), an enterprise storage drive (ESD), a client storage device, a cloud storage drive, or other suitable storage drives. - The
data storage device 105 may be configured to be coupled to the externalelectronic device 110 using thecommunication path 125, such as a wired communication path and/or a wireless communication path. For example, thedata storage device 105 may include an interface 130 (for example, a host interface 130) that enables communication using thecommunication path 125 between thedata storage device 105 and the externalelectronic device 110, such as when theinterface 130 is communicatively coupled to the externalelectronic device 110. In some examples, the externalelectronic device 110 may provide power to thedata storage device 105. For example, the externalelectronic device 110 may provide one or more regulated voltages to thedata storage device 105, such as 12 VDC, 5 VDC, 3.3 VDC, etc. - The external
electronic device 110 may include aprocessor 135 and amemory 140. Thememory 140 may be configured to store data and/or instructions that may be executable by theprocessor 135. Thememory 140 may be a single memory or may include one or more memories, such as one or more non-volatile memories, one or more volatile memories, or a combination thereof. The externalelectronic device 110 may issue one or more commands to thedata storage device 105, such as one or more requests to erase data at, read data from, or write data to thememory device 115 of thedata storage device 105. For example, the externalelectronic device 110 may be configured to provide data, such as user data, to be stored at thememory device 115 or to request data to be read from thememory device 115. The externalelectronic device 110 may include a mobile smartphone, a music player, a video player, a gaming console, an electronic book reader, a personal digital assistant (PDA), a computer, such as a laptop computer or notebook computer, any combination thereof, or other suitable electronic device. - The external
electronic device 110 communicates using a memory interface that enables reading from thememory device 115 and writing to thememory device 115. In some examples, the externalelectronic device 110 may operate in compliance with an industry specification, such as a Universal Flash Storage (UFS) Host Controller Interface specification. In other examples, the externalelectronic device 110 may operate in compliance with one or more other specifications, such as a Secure Digital (SD) Host Controller specification or other suitable industry specification. The externalelectronic device 110 may also communicate with thememory device 115 in accordance with any other suitable communication protocol. - The
memory devices 115 of thedata storage device 105 may include a non-volatile memory (for example, NAND, NOR, BiCS family of memories, or other suitable memory). In some examples, thememory device 115 may be any type of flash memory. For example, thememory device 115 may be two-dimensional (2D) memory or three-dimensional (3D) flash memory. Thememory device 115 may include one or more memory dies 150. In some of the embodiments, individual memory dies 150 or groups of memory dies 150 may be referred to as arrays. Each of the one or more memory dies 150 may include one or more memory blocks 155 (for example, one or more erase blocks, a plurality of memory blocks). The one or more memory blocks 155 may arranged in one or more planes. Eachmemory block 155 may include one or more groups of storage elements, such as a representative group ofstorage elements 160A-160N. The group ofstorage elements 160A-160N may be configured as a word line or a page. The group ofstorage elements 160A-160N may include multiple storage elements (for example, memory cells that are referred to herein as a “string”), such as arepresentative storage elements - The
memory device 115 may include support circuitry, such as read/write circuitry 170. Although depicted as a single component, the read/write circuitry 170 may be divided into separate components of thememory device 115, such as read circuitry and write circuitry. The read/write circuitry 170 may be external to the one or more memory dies 150 of thememory device 115. Alternatively, one or more individual memory dies 150 may include corresponding read/write circuitry 170 that is operable to read from and/or write to storage elements within the individual memory die 150, independent of any other read and/or write operations at any of the other memory dies 150. For example, the read/write circuitry 170 may be configured to perform various read/write operations such as initial writing to volatile memory, array commit functions, and other functions as required for a given application. - The
controller 120 is coupled to the memory device 115 (for example, the one or more memory dies 150) using abus 175, an interface (for example, interface circuitry), another structure, or a combination thereof. For example, thebus 175 may include multiple distinct channels to enable thecontroller 120 to communicate with each of the one or more memory dies 150 and/ormemory devices 115 in parallel with, and independently of, communication with the other memory dies 150 and/ormemory devices 115. - The
controller 120 is configured to receive data and instructions from the externalelectronic device 110 and to send data to the externalelectronic device 110. For example, thecontroller 120 may send data to the externalelectronic device 110 using theinterface 130, and thecontroller 120 may receive data from the externalelectronic device 110 using theinterface 130. Thecontroller 120 is configured to send data and commands to thememory device 115 and to receive data from thememory device 115. For example, thecontroller 120 is configured to send data and a program or write command to cause thememory device 115 to store data to a specified address of thememory device 115. The write command may specify a physical address of a portion of the memory device 115 (for example, a physical address of a word line of the memory device 115) that is to store the data, as well as a size (for example, 2 k, 4 k, etc.) of the data to be written. - The
controller 120 is further configured to send a read command to thememory device 115 to access data from a specified address of thememory device 115. The read command may specify the physical address of a region of the memory device 115 (for example, a physical address of a word line of the memory device 115), as well as a size (for example, 2 k, 4 k, etc.) of the data to be read. As will be described in more detail below, thecontroller 120 may further be configured to process received read commands by executing one or more indexing functions in response to one or more search or index keys received from the externalelectronic devices 110. - The
controller 120 may also be configured to send data and commands to thememory device 115 associated with background scanning operations, garbage collection operations, and/or wear-leveling operations, or other suitable memory operations. -
FIG. 2 illustrates an example metablock 200 (for example, a first metablock 200) of thememory device 115. In the example illustrated, thefirst metablock 200 is a host data metablock that is used for storing host data (or referred to as external electronic device data) received from the externalelectronic device 110. The basic building block of thememory device 115 is amemory cell 210, which may be a single level cell storing a single bit (for example, 0 or 1) or a multi-level cell (for example, a triple level cell or quad level cell) storing more than a single bit. Thememory cells 210 are arranged in rows and columns (for illustration purposes) in thefirst metablock 200. All thememory cells 210 within a row of thefirst metablock 200 may share a word line address (for example, WL0, WL1, and so on) and a string address (for example, STR0, STR1, and so on) or a metapage address (forexample metapage 0,metapage 1, and so on). All thememory cells 210 within a column of thefirst metablock 200 may share a plane (for example PL0, PL1, PL2, PL3) and a memory block 155 (for example, Fim0, Fim1, and so on). - As illustrated in the example of
FIG. 2 ,memory cells 210 across a single row (for example, a single string or a single metapage) are binned together to create a bin 220 (for example, first data). Thememory cells 210 across a single row (that is, a bin 220) are also XORed to determine an XOR parity of the row. For ease of understanding,memory cells 210 that are binned together are provided a bin label inFIG. 2 . For example,memory cells 210 in the first row are labeled Bin0,memory cells 210 in the second row are labeled Bin1, and so on. The XOR of each bin 220 is stored in a separate metablock (for example, an XOR parity metablock).FIG. 2 illustrates only one example of the first pre-defined set of data. The binning may be performed using a different structure, for example, allmemory cells 210 of a word line within a single plane may be binned together. The combination ofmemory cells 210 for the first pre-defined set of data may be varied based on the requirements of thedata storage device 105. -
FIG. 3 illustrates an example parity metablock 300 (for example, a second metablock 300). In the example illustrated, thesecond metablock 300 is an XOR parity metablock that is used for temporarily storing XOR parity data of thefirst metablock 200. In some embodiments, thesecond metablock 300 is part of thesame memory device 115 as thefirst metablock 200. In other embodiments, thesecond metablock 300 is part of thememory 140 of thecontroller 120. As shown inFIG. 3 , eachmemory cell 310 of thesecond metablock 300 stores XOR parity data of asingle bin 220 of thefirst metablock 200. The XOR parity data stored in thesecond metablock 300 may be used to protect against program failures of the host data. Specifically, thecontroller 120 detects program failures of thefirst metablock 200 and uses the XOR parities in thesecond metablock 300 to recover any lost data. - Returning to
FIG. 2 , a portion (for example, reserved portion 230) of thefirst metablock 200 may be reserved for XOR of XOR parities. Thenon-reserved portion 240 of thefirst metablock 200 may be referred to as thehost data portion 240. Host data from the externalelectronic device 110 can be written and read from thehost data portion 240. However, the host data is prevented from being written to the reservedportion 230. This restriction may be enforced by thecontroller 120. Thecontroller 120 stores the XOR of XOR parities in the reservedportion 230. The XOR of XOR parities may be performed on any pre-defined set of data (for example, second data). In the example illustrated inFIGS. 2 and 3 , the XOR of XOR parities is performed on a set of plurality ofmemory cells 310 separated by a predetermined number ofmemory cells 310. In one example, the second pre-defined set of data includes memory cells separated by ten (10) memory cells, for example, Bin0, Bin10, Bin20, and so on. However, it should be noted that any combination ofmemory cells 310 including any different number ofmemory cells 310 may be used to perform the XOR of XOR parities. When the XOR of XOR parities is stored in thefirst metablock 200, thesecond metablock 300 may be erased releasing thesecond metablock 300 for data storage. For example, thesecond metablock 300 can then be used as a host data metablock or as an XOR parity metablock for a different host data metablock. Thecontroller 120 may write additional host data to thesecond metablock 300. The XOR of XOR parities may be used to protect silent read failures. For example, when the host data is read from thefirst metablock 200, thecontroller 120 may detect a silent read failure resulting in data loss. The data may be recovered using the XOR of XOR parities stored in the reservedportion 230 of thefirst metablock 200. -
FIG. 4 illustrates a flowchart of oneexample method 400 for protecting data in thedata storage device 105 from failures. In the example illustrated, themethod 400 includes generating, using thecontroller 120, a first plurality of XOR parities based on first data of the first metablock 200 (at block 410). As discussed above, thecontroller 120 may bin together a row or metapage ofmemory cells 210, the data stored in which forms, for example, a subset of first data. Thecontroller 120 generates an XOR of each bin 220 (that is, a first plurality of XOR parities corresponding to first data). Themethod 400 also includes storing, using thecontroller 120, the first plurality of XOR parities in a second metablock 300 (at block 420). Thecontroller 120 stores each of the XOR parities in aseparate memory cell 310 of thesecond metablock 300. The first plurality of XOR parities may be used to recover data when thefirst metablock 200 is open. A metablock is considered open when the metablock is currently being used for writing data. An open metablock may experience a program failure or enhanced post write read (EPWR) failure. The first plurality of XOR parities may be used to recover data lost due after a program failure or EPWR failure. - The
method 400 further includes generating, using thecontroller 120, a second plurality of XOR parities based on second data of the second metablock 300 (at block 430). The second data includes two or more XOR parities of the first plurality of XOR parities. In the example ofFIGS. 2 and 3 , thecontroller 120 generates XORs of data stored in a plurality ofmemory cells 310 separated by ten cells. That is, an XOR parity of two or more XOR parities of the first plurality of XOR parities is generated. The two or more XOR parities include, for example, Bin0, Bin10, Bin20, and so on. In other examples, thecontroller 120 may generate XORs of a different selection and combination ofmemory cells 310. Themethod 400 also includes storing, using thecontroller 120, the second plurality of XOR parities in the reservedportion 230 of the first metablock 200 (at block 440). Thecontroller 120 stores each of the XOR of XOR parities in aseparate memory cell 210 of the reservedportion 230 of thefirst metablock 200. - The
method 400 further includes detecting, using thecontroller 120, a failure in thefirst metablock 200 resulting in data loss (at block 450). The failure may include, for example, a program failure, a silent read failure, or the like. Failures of thefirst metablock 200 may be detected in several ways. For example, a program failure may be detected based on NAND status commands from thememory device 115 informing about the program failures. Alternatively, for example, a program failure may be detected by programming data, ignoring NAND status and reading the data back, and decoding the data to determine whether the data passes. Themethod 400 also includes recovering, using thecontroller 120, lost data of the first metablock based on the second plurality of XOR parities (at block 460). The second plurality of XOR parities are used to recover data in a closed metablock. A metablock is when data is already written to the metablock and the metablock is not currently being programmed. In one example, thecontroller 120 detects that a silent read failure has occurred resulting in a data loss of the first metapage of thefirst metablock 200. Thecontroller 120 uses the second plurality of XOR parities (for example, bin0 XOR bin10 XOR . . . ) to recover the first metapage of thefirst metablock 200. In one example, the controller detects that a program failure has occurred resulting in a data loss of the first metapage of thefirst metablock 200. Thecontroller 120 uses the first plurality of XOR parities (for example, bin0) to recover the first metapage of thefirst metablock 200 and reprogram thefirst metablock 200 based on the recovered data. In some embodiments, thecontroller 120 may also use the second plurality of XOR parities to recover after detecting program failures. - In the example of
FIGS. 2 and 3 , the storage requirement of XOR parities is significantly reduced because an additional XOR operation is performed on the first plurality of XOR parities. However, the ability of thedata storage device 105 is unaffected as any data loss is still capable of being recovered. Additional storage savings can be obtained by using a different second pre-defined set of data. - With regard to the processes, systems, methods, heuristics, etc. described herein, it should be understood that, although the steps of such processes, etc. have been described as occurring according to a certain ordered sequence, such processes could be practiced with the described steps performed in an order other than the order described herein. It further should be understood that certain steps could be performed simultaneously, that other steps could be added, or that certain steps described herein could be omitted. In other words, the descriptions of processes herein are provided for the purpose of illustrating certain implementations and should in no way be construed to limit the claims.
- Accordingly, it is to be understood that the above description is intended to be illustrative and not restrictive. Many embodiments and applications other than the examples provided would be apparent upon reading the above description. The scope should be determined, not with reference to the above description, but should instead be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. It is anticipated and intended that future developments will occur in the technologies discussed herein, and that the disclosed systems and methods will be incorporated into such future embodiments. In sum, it should be understood that the application is capable of modification and variation.
- All terms used in the claims are intended to be given their broadest reasonable constructions and their ordinary meanings as understood by those knowledgeable in the technologies described herein unless an explicit indication to the contrary in made herein. In particular, use of the singular articles such as “a,” “the,” “said,” etc. should be read to recite one or more of the indicated elements unless a claim recites an explicit limitation to the contrary.
- The Abstract is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in various embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/563,533 US11687409B1 (en) | 2021-12-28 | 2021-12-28 | Data storage device and method for data protection using XOR parity |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/563,533 US11687409B1 (en) | 2021-12-28 | 2021-12-28 | Data storage device and method for data protection using XOR parity |
Publications (2)
Publication Number | Publication Date |
---|---|
US11687409B1 US11687409B1 (en) | 2023-06-27 |
US20230205627A1 true US20230205627A1 (en) | 2023-06-29 |
Family
ID=86897915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/563,533 Active US11687409B1 (en) | 2021-12-28 | 2021-12-28 | Data storage device and method for data protection using XOR parity |
Country Status (1)
Country | Link |
---|---|
US (1) | US11687409B1 (en) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070150790A1 (en) * | 2005-12-27 | 2007-06-28 | Gross Stephen J | Method of storing downloadable firmware on bulk media |
US20160266965A1 (en) * | 2015-03-09 | 2016-09-15 | HGST Netherlands B.V. | Updating exclusive-or parity data |
US20170123682A1 (en) * | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | System and method for precision interleaving of data writes in a non-volatile memory |
US20180287634A1 (en) * | 2017-03-31 | 2018-10-04 | Sandisk Technologies Llc | Use of multiple codebooks for programming data in different memory areas of a storage device |
US20180287632A1 (en) * | 2017-03-31 | 2018-10-04 | Sandisk Technologies Llc | Bit-order modification for different memory areas of a storage device |
US20190354478A1 (en) * | 2018-05-15 | 2019-11-21 | Western Digital Technologies, Inc. | On-Chip Copy with Data Folding in Three-Dimensional Non-Volatile Memory Array |
US20200218605A1 (en) * | 2019-01-08 | 2020-07-09 | Western Digital Technologies, Inc. | Xor recovery schemes utilizing external memory |
US20210279127A1 (en) * | 2020-03-03 | 2021-09-09 | SK Hynix Inc. | Memory controller and method of operating the same |
US20220027233A1 (en) * | 2020-07-24 | 2022-01-27 | Kioxia Corporation | Systems and methods for parity-based failure protection for storage devices |
US20220075559A1 (en) * | 2020-09-09 | 2022-03-10 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
US20220083221A1 (en) * | 2020-09-12 | 2022-03-17 | Western Digital Technologies, Inc. | Mixed Mode Block Cycling for Intermediate Data |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US9354973B2 (en) | 2013-03-13 | 2016-05-31 | Intel Corporation | Data integrity management in memory systems |
US9673840B2 (en) | 2014-12-08 | 2017-06-06 | SK Hynix Inc. | Turbo product codes for NAND flash |
US9830093B2 (en) | 2015-03-27 | 2017-11-28 | Intel Corporation | Method and apparatus for improving immunity to defects in a non-volatile memory |
US10339000B2 (en) | 2016-09-13 | 2019-07-02 | Sandisk Technologies Llc | Storage system and method for reducing XOR recovery time by excluding invalid data from XOR parity |
US9996285B2 (en) | 2016-11-08 | 2018-06-12 | SK Hynix Inc. | Cyclically interleaved XOR array for error recovery |
US11042432B1 (en) | 2019-12-20 | 2021-06-22 | Western Digital Technologies, Inc. | Data storage device with dynamic stripe length manager |
-
2021
- 2021-12-28 US US17/563,533 patent/US11687409B1/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070150790A1 (en) * | 2005-12-27 | 2007-06-28 | Gross Stephen J | Method of storing downloadable firmware on bulk media |
US20160266965A1 (en) * | 2015-03-09 | 2016-09-15 | HGST Netherlands B.V. | Updating exclusive-or parity data |
US20170123682A1 (en) * | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | System and method for precision interleaving of data writes in a non-volatile memory |
US20180287634A1 (en) * | 2017-03-31 | 2018-10-04 | Sandisk Technologies Llc | Use of multiple codebooks for programming data in different memory areas of a storage device |
US20180287632A1 (en) * | 2017-03-31 | 2018-10-04 | Sandisk Technologies Llc | Bit-order modification for different memory areas of a storage device |
US20190354478A1 (en) * | 2018-05-15 | 2019-11-21 | Western Digital Technologies, Inc. | On-Chip Copy with Data Folding in Three-Dimensional Non-Volatile Memory Array |
US20200218605A1 (en) * | 2019-01-08 | 2020-07-09 | Western Digital Technologies, Inc. | Xor recovery schemes utilizing external memory |
US20210279127A1 (en) * | 2020-03-03 | 2021-09-09 | SK Hynix Inc. | Memory controller and method of operating the same |
US20220027233A1 (en) * | 2020-07-24 | 2022-01-27 | Kioxia Corporation | Systems and methods for parity-based failure protection for storage devices |
US20220075559A1 (en) * | 2020-09-09 | 2022-03-10 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
US20220083221A1 (en) * | 2020-09-12 | 2022-03-17 | Western Digital Technologies, Inc. | Mixed Mode Block Cycling for Intermediate Data |
Non-Patent Citations (1)
Title |
---|
L. Zhu et al., "Fault Tolerant Algorithm for NVM to Reuse the Error Blocks," 2016 13th International Conference on Embedded Software and Systems (ICESS), Chengdu, China, 2016, pp. 54-59, doi: 10.1109/ICESS.2016.40. (Year: 2016) * |
Also Published As
Publication number | Publication date |
---|---|
US11687409B1 (en) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10732847B2 (en) | Optimistic read operation | |
CN108694128B (en) | Memory system and method for data storage | |
CN108121669B (en) | Memory system and method of operating the same | |
US10372603B2 (en) | Handling of unaligned writes | |
CN107797882B (en) | Memory system and operating method thereof | |
US9886341B2 (en) | Optimizing reclaimed flash memory | |
US8612836B2 (en) | Non-volatile memory device with uncorrectable information region and operation method using the same | |
US20170300246A1 (en) | Storage System and Method for Recovering Data Corrupted in a Host Memory Buffer | |
US11836354B2 (en) | Distribution of logical-to-physical address entries across multiple memory areas | |
KR20120030816A (en) | Flash memory and self interleaving method thereof | |
CN110308867B (en) | Memory system and method of operating the same | |
US11456050B2 (en) | Relinking scheme in sub-block mode | |
KR20190118030A (en) | Memory system and operation method thereof | |
US20140325126A1 (en) | Data storage device performing atomic write and related method of operation | |
CN111798910A (en) | Storage device and operation method thereof | |
US11508454B2 (en) | Data storage device and method of operating the same | |
US20180239545A1 (en) | Techniques for non-blocking control information and data synchronization by a data storage device | |
US8954653B1 (en) | Mechanisms for efficient management of system data in data storage systems | |
KR20200074647A (en) | Memory system and operating method thereof | |
US11704196B2 (en) | Reduced parity data management | |
CN111338995B (en) | Data storage device and method of operating the same | |
US20130318419A1 (en) | Flash memory system including read counter logic | |
CN111796962A (en) | Storage device and operation method of storage device | |
US11687409B1 (en) | Data storage device and method for data protection using XOR parity | |
US11113205B2 (en) | Die addressing using a reduced size translation table entry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001 Effective date: 20230818 Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067045/0156 Effective date: 20230818 |
|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 |