US20180032282A1 - Systems and methods of memory reads - Google Patents
Systems and methods of memory reads Download PDFInfo
- Publication number
- US20180032282A1 US20180032282A1 US15/223,595 US201615223595A US2018032282A1 US 20180032282 A1 US20180032282 A1 US 20180032282A1 US 201615223595 A US201615223595 A US 201615223595A US 2018032282 A1 US2018032282 A1 US 2018032282A1
- Authority
- US
- United States
- Prior art keywords
- read operation
- data
- context information
- controller
- memory
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
Definitions
- the present disclosure is generally related to reading data from a memory.
- data storage devices are configured to write data to memory and read the data from the memory.
- An access device coupled to a data storage device may send a first read request to read data from a memory address.
- the data storage device may start a read operation responsive to the first read request.
- the data storage device may read data from a memory location corresponding to the address and may perform decode operations on the read data.
- the data storage device may perform one or more stages of decoding and may provide decoded data to the access device in response to detecting that a first decode stage (e.g., error correction code (ECC) decoding) succeeded.
- ECC error correction code
- the data storage device may proceed to a second decode stage (e.g., redundant array of independent disks (RAID) decoding) in response to detecting a failure at the first decode stage.
- a second decode stage e.g., redundant array of independent disks (RAID) decoding
- RAID redundant array of independent disks
- Performing a greater number of the decode stages may use more resources (e.g., time and processing cycles) and increase read latency.
- the access device may issue an abort command to the data storage device in response to determining that the data storage device is taking too long to respond to the first read request. For example, the access device may issue the abort command in response to determining that a higher priority operation is to be performed by the access device.
- the access device may subsequently send a second read request to the data storage device indicating the same address of the memory.
- the data storage device may restart the read operation responsive to the second read request. For example, the data storage device may perform the first decode stage again and the first decode stage may fail again. Interrupting and restarting a read operation to a memory location may use more resources (e.g., time and processing cycles) overall.
- FIG. 1 is a block diagram of an illustrative example of a system including a data storage device coupled to an access device;
- FIG. 2 is a diagram of an illustrative example of a sequence of operations that may be performed by the data storage device and the access device of the system of FIG. 1 ;
- FIG. 3 is a diagram of an illustrative example of decode stages that the data storage device of FIG. 1 may be configured to perform;
- FIG. 4 is a diagram of illustrative examples of sequences of operations that may be performed by the data storage device and the access device of the system of FIG. 1 ;
- FIG. 5 is a flow diagram of a particular example of a method of operation of the access device of the system of FIG. 1 ;
- FIG. 6A is a block diagram of an illustrative example of a non-volatile memory system including a controller that includes a data recovery engine of FIG. 1 ;
- FIG. 6B is a block diagram of an illustrative example of a storage module that includes plural non-volatile memory systems that each may include the data recovery engine of FIG. 1 ;
- FIG. 6C is a block diagram of an illustrative example of a hierarchical storage system that includes a plurality of storage controllers that each may include the data recovery engine of FIG. 1 ;
- FIG. 7A is a block diagram illustrating an example of a non-volatile memory system including a controller that includes the data recovery engine of FIG. 1 ;
- FIG. 7B is a block diagram illustrating exemplary components of a non-volatile memory die that may be coupled to a controller that includes the data recovery engine of FIG. 1 .
- a particular embodiment of a system 100 includes a device 103 (e.g., a data storage device) coupled to an access device 130 .
- the device 103 includes a memory device 104 coupled to a controller 102 .
- the controller 102 is configured to suspend a read operation at the memory device 104 in response to detecting a suspend condition and to store context information associated with the suspended read operation, provide the context information to the access device 130 , or both.
- the controller 102 may resume the read operation based on the stored context information or based on context information received from the access device 130 . Resuming the read operation based on context information (as compared to restarting the read operation independently of the context information) may reduce a read latency at the access device 130 .
- the access device 130 may be configured to provide data to be stored at the memory device 104 or to request data to be read from the memory device 104 .
- the access device 130 may be coupled to the device 103 via a connection (e.g., an interconnect 120 ), such as a bus, a network, or a wireless connection.
- the interconnect 120 may correspond to a peripheral component interconnect (PCIe) bus.
- the device 103 may include an interface 112 (e.g., an access device interface) that enables communication via the interconnect 120 between the device 103 and the access device 130 .
- the access device 130 may operate in compliance with a Joint Electron Devices Engineering Council (JEDEC) industry specification, such as a Universal Flash Storage (UFS) Host Controller Interface specification.
- JEDEC Joint Electron Devices Engineering Council
- UFS Universal Flash Storage
- the access device 130 may operate in compliance with one or more other specifications, such as a Secure Digital (SD) Host Controller specification as an illustrative example.
- SD Secure Digital
- the access device 130 may communicate with the memory device 104 in accordance with any other suitable communication protocol.
- the access device 130 may include a mobile telephone, a computer (e.g., a laptop, a tablet, or a notebook computer), a music player, a video player, a gaming device or console, an electronic book reader, a personal digital assistant (PDA), a portable navigation device, or other device that uses non-volatile memory.
- PDA personal digital assistant
- the device 103 may be a memory card, such as a Secure Digital SD® card, a microSD® card, a miniSDTM card (trademarks of SD-3C LLC, Wilmington, Del.), a MultiMediaCardTM (MMCTM) card (trademark of JEDEC Solid State Technology Association, Arlington, Va.), or a CompactFlash® (CF) card (trademark of SanDisk Corporation, Milpitas, Calif.).
- the device 103 may be configured to be coupled to the access device 130 as embedded memory, such as eMMC® (trademark of JEDEC Solid State Technology Association, Arlington, Va.) and eSD, as illustrative examples.
- the device 103 may correspond to an eMMC (embedded MultiMedia Card) device.
- the device 103 may operate in compliance with a JEDEC industry specification.
- the device 103 may operate in compliance with a JEDEC eMMC specification, a JEDEC Universal Flash Storage (UFS) specification, one or more other specifications, or a combination thereof.
- JEDEC embedded MultiMedia Card
- UFS JEDEC Universal Flash Storage
- the memory device 104 may include a non-volatile memory 106 .
- the non-volatile memory 106 may include a flash memory, such as a NAND flash memory, as an illustrative, non-limiting example.
- the non-volatile memory 106 may have a three-dimensional (3D) memory configuration.
- the non-volatile memory 106 may have a 3D vertical bit line (VBL) configuration.
- VBL vertical bit line
- the non-volatile memory 106 has a 3D memory configuration that is monolithically formed in one or more physical levels of arrays of memory cells having an active area disposed above a silicon substrate.
- the non-volatile memory 106 may have another configuration, such as a two-dimensional (2D) memory configuration or a non-monolithic 3D memory configuration (e.g., a stacked die 3D memory configuration).
- the memory device 104 may include support circuitry, such as memory circuitry 110 (e.g., read/write circuitry), to support operation of one or more memory dies of the memory device 104 .
- memory circuitry 110 e.g., read/write circuitry
- the memory circuitry 110 may be divided into separate components of the memory device 104 , such as read circuitry and write circuitry.
- the memory circuitry 110 may be external to the one or more dies of the memory device 104 .
- one or more individual memory dies of the memory device 104 may include corresponding memory circuitry that is operable to read data from and/or write data to storage elements within the individual memory die independent of any other read and/or write operations at any of the other memory dies.
- the non-volatile memory 106 may include storage elements at one or more dies.
- Each of the one or more dies may include one or more blocks, such as a NAND flash erase group of storage elements.
- Each of the blocks may include one or more groups of storage elements (e.g., flash memory cells).
- Each group of storage elements may include multiple storage elements (e.g., memory cells) and may be configured as a word line.
- a word line may function as a single-level-cell (SLC) word line coupled to storage elements that store one bit per storage element, as a multi-level-cell (MLC) word line coupled to storage elements that store two bits per storage element, or as a tri-level-cell (TLC) word line coupled to storage elements that store three bits per storage element, as illustrative, non-limiting examples.
- SLC single-level-cell
- MLC multi-level-cell
- TLC tri-level-cell
- Each storage element of the non-volatile memory 106 may be programmable to a state (e.g., a threshold voltage in a flash configuration or a resistive state in a resistive memory configuration) that indicates one or more values.
- the controller 102 is configured to receive data and instructions from and to send data to the access device 130 while the device 103 is operatively coupled to the access device 130 .
- the controller 102 is further configured to send data and commands to the memory device 104 and to receive data from the memory device 104 .
- the controller 102 may include a controller memory 124 , a data recovery engine 116 , and an error correction code (ECC) engine 114 .
- ECC error correction code
- the controller 102 is configured to receive data and instructions from the access device 130 and to send data to the access device 130 .
- the controller 102 may send data to the access device 130 via the interconnect 120
- the controller 102 may receive data from the access device 130 via the interconnect 120 .
- the controller 102 is configured to send data and commands to the memory device 104 and to receive data from the memory device 104 .
- the controller 102 is configured to send data and a write command to cause the memory device 104 to store data to an address of the memory device 104 .
- the write command may specify a physical address of a portion of the memory device 104 (e.g., a physical address of a word line of the memory device 104 ) that is to store the data.
- the controller 102 may also be configured to send data and commands to the memory device 104 associated with background scanning operations, garbage collection operations, and/or wear leveling operations, etc., as illustrative, non-limiting examples.
- the controller 102 is configured to send a read command to the memory device 104 to access data from a specified address of the memory device 104 .
- the read command may specify the physical address of a portion of the memory device 104 (e.g., a physical address of a word line of the memory device 104 ).
- the ECC engine 114 may include an encoder configured to encode one or more data words using an ECC encoding technique.
- the ECC engine 114 may include a Reed-Solomon encoder, a Bose-Chaudhuri-Hocquenghem (BCH) encoder, a low-density parity check (LDPC) encoder, a turbo encoder, an encoder configured to encode the data according to one or more other ECC techniques, or a combination thereof, as illustrative, non-limiting examples.
- the ECC engine 114 may also include a decoder.
- the decoder may be configured to decode data read from the memory device 104 to detect and correct, up to an error correction capability of the ECC scheme, bit errors that may be present in the data.
- the decoder may be configured to perform in multiple decoding modes.
- the decoding modes may include a relatively low-power, high-speed decoding mode (e.g., a bit-flipping decoding mode), a full-power LDPC decoding mode with a higher correction capacity than the lower-power decoding mode, one or more other decoding modes, or a combination thereof.
- the decoding modes may correspond to successive decode stages.
- the lower-power decoding mode may correspond to a first decode stage
- the full-power decoding mode may correspond to a second decode stage
- the decoder may be configured to selectively perform the second decode stage in response to detecting that the first decode stage failed.
- the decoder may thus conserve resources (e.g., power) by performing the lower-power decoding mode and not performing the full-power decoding mode when the first decode stage is successful.
- the controller 102 may include multiple decoders.
- the controller 102 may include the decoder of the ECC engine 114 , a RAID decoder, a dynamic read decoder, or a combination thereof.
- decoding modes of the multiple decoders may correspond to successive decode stages.
- the lower-power operating mode of an ECC decoder may correspond to a first decoding stage
- a full-power operating mode of the ECC decoder may correspond to a second decoding stage
- a first mode of the RAID decoder may correspond to a third decoding stage, or a combination thereof.
- the data recovery engine 116 may be configured to initiate a read operation 158 to retrieve data 108 from the non-volatile memory 106 in response to receiving a read request 121 (e.g., a first read request) from the access device 130 .
- the data recovery engine 116 may be configured, in response to detecting a suspend condition 160 , to suspend the read operation 158 and to generate context information 155 .
- the data recovery engine 116 may be configured, in response to detecting a resume condition 162 , to resume the read operation 158 based on the context information 155 . Resuming the read operation 158 based on the context information 155 may result in reduced read latency at the device 103 as compared to restarting the read operation 158 .
- the data recovery engine 116 may receive the read request 121 from the access device 130 .
- the read request 121 may indicate a logical address or a physical address corresponding to a memory location of the non-volatile memory 106 .
- the data recovery engine 116 may initiate a read operation 158 to retrieve the data 108 from the memory location of the non-volatile memory 106 in response to receiving the read request 121 from the access device 130 .
- the data recovery engine 116 may set a state 156 of the read operation 158 to indicate that the read operation 158 is in progress, set a priority 157 of the read operation 158 to indicate a first priority (e.g., an active priority), or both.
- a first priority e.g., an active priority
- the data recovery engine 116 may perform the read operation 158 based on the priority 157 .
- the data recovery engine 116 may perform the read operation 158 in response to determining that the priority 157 corresponds to a particular (e.g., a highest) priority among one or more operations to be performed by the data recovery engine 116 , the controller 102 , or both.
- Performing the read operation 158 may include at least one of sending one or more sense commands (e.g., a sense command 128 ) to the memory device 104 , receiving sense data 134 from the memory device 104 responsive to the sense commands (e.g., the sense command 128 ), or performing one or more decode operations 150 based on the sense data 134 .
- a sense command 128 e.g., a sense command 128
- the data recovery engine 116 performs a first decode operation 151 of the decode operations 150 by providing the sense data 134 to a first decoder (e.g., the ECC engine 114 ).
- the ECC engine 114 e.g., a LDPC decoder
- the ECC engine 114 may generate corrected data 154 based on decoding the sense data 134 .
- the ECC engine 114 may generate the corrected data 154 by performing a first decode stage on the sense data 134 .
- the ECC engine 114 may provide the corrected data 154 , a decoding success indication, or both, to the data recovery engine 116 .
- the data recovery engine 116 may detect that the first decode operation 151 has succeeded in response to receiving the corrected data 154 , the decoding success indication, or both.
- the data recovery engine 116 may, in response to determining that the first decode operation 151 has succeeded, provide the corrected data 154 to the access device 130 and set the state 156 to indicate that the read operation 158 is completed successfully.
- the ECC engine 114 may generate a decoding failure indication and uncorrected data 153 when a number of errors in the sense data 134 exceeds an error detection capacity of the first decode operation 151 .
- the ECC engine 114 may provide the uncorrected data 153 , a failure indication, or both, to the data recovery engine 116 .
- the data recovery engine 116 may detect that the first decode operation 151 has failed in response to receiving the uncorrected data 153 , the failure indication, or both.
- the data recovery engine 116 may, in response to determining that the first decode operation 151 has failed, set the state 156 to indicate that the first decode operation 151 has failed.
- the data recovery engine 116 sets the priority 157 of the read operation 158 to indicate a second priority (e.g., a background priority) in response to determining that the first decode operation 151 has failed. In alternative aspects, the data recovery engine 116 leaves the priority 157 of the read operation 158 unchanged in response to determining that the first decode operation 151 has failed.
- a second priority e.g., a background priority
- the data recovery engine 116 may, in response to determining that the first decode operation 151 has failed, determine whether to perform a second decode operation 152 subsequent to detecting failure of the first decode operation 151 .
- the data recovery engine 116 may, in response to determining that the second decode operation 152 is not available, detect that the read operation 158 has failed and set the state 156 to indicate that the read operation 158 is completed unsuccessfully (e.g., has failed).
- the data recovery engine 116 may initiate the second decode operation 152 in response to determining that the second decode operation 152 is available subsequent to detecting failure of the first decode operation 151 .
- the data recovery engine 116 may, responsive to detecting failure of the first decode operation 151 , update (or generate) the context information 155 .
- the context information 155 may include an indication of a decoder memory state (e.g., a memory state of the ECC engine 114 ), an indication that the first decode operation 151 failed, the uncorrected data 153 , an indication of the first decode stage, or a combination thereof.
- the data recovery engine 116 may, responsive to detecting failure of the first decode operation 151 , provide the context information 155 , an uncorrected data indication 135 , or both, to the access device 130 .
- Performing the second decode operation 152 may include providing the address of the memory location, the sense data 134 , the uncorrected data 153 , or a combination thereof, to the ECC engine 114 or to another decoder (e.g., a redundant array of independent disks (RAID) decoder).
- the data recovery engine 116 may perform the first decode operation 151 by instructing the ECC engine 114 to perform a first decode stage on the sense data 134 .
- the data recovery engine 116 may, in response to determining that the ECC engine 114 is configured to perform a second decode stage subsequent to failure of the first decode stage (e.g., using a higher-power decoding mode), perform the second decode operation 152 by instructing the ECC engine 114 to perform the second decode stage on the sense data 134 or the uncorrected data 153 .
- the data recovery engine 116 may, in response to determining that the ECC engine 114 is not configured to perform any decode stages subsequent to failure of the first decode stage (e.g., the first decode stage corresponds to a higher-power decode stage), perform the second decode operation 152 by instructing a RAID decoder to generate data associated with the address.
- the RAID decoder may generate the corrected data 154 by reading data corresponding to a RAID group from one or more other memory locations of the non-volatile memory 106 .
- the data recovery engine 116 may be configured to detect a suspend condition 160 indicating that the read operation 158 is to be suspended.
- the suspend condition 160 may include failure of the first decode operation 151 , receipt of an abort command 111 , receipt of a suspend command 122 , or a combination thereof.
- the abort command 111 (or the suspend command 122 ) may indicate at least one of the read request 121 or the address of the memory location. Receipt of the suspend command 122 may indicate that the access device 130 is likely to send a resume command 123 associated with the read request 121 .
- the data recovery engine 116 may be configured to suspend the read operation 158 in response to detecting the suspend condition 160 .
- Suspending the read operation 158 may include setting the state 156 to indicate that the read operation 158 is suspended.
- the data recovery engine 116 suspends the read operation 158 by stopping the read operation 158 .
- the data recovery engine 116 may, in response to detecting the suspend condition 160 during performance of the first decode operation 151 , suspend the read operation 158 by instructing the ECC engine 114 to interrupt the first decode stage, by refraining from performing the second decode operation 152 responsive to detecting that the first decode operation 151 failed, or both.
- the data recovery engine 116 suspends the read operation 158 by performing the read operation 158 in the background, reducing a priority associated with the read operation 158 , or both.
- the data recovery engine 116 may update the priority 157 to indicate that the read operation 158 has a second priority (e.g., a background priority).
- the second priority e.g., the background priority
- the first priority e.g., the active priority
- the data recovery engine 116 may perform one or more distinct operations if the suspend condition 160 corresponds to receipt of the suspend command 122 as compared to receipt of the abort command 111 .
- the data recovery engine 116 may update the priority 157 to indicate a first particular priority (e.g., a first background priority) if the suspend condition 160 includes receipt of the suspend command 122 or a second particular priority (e.g., a second background priority) if the suspend condition 160 includes receipt of the abort command 111 .
- the first particular priority e.g., the first background priority
- the data recovery engine 116 may be configured to schedule operations based on priority. To illustrate, the data recovery engine 116 may perform a first read operation having a first priority prior to performing in a second read operation having a second priority that is lower than the first priority.
- the data recovery engine 116 may, responsive to suspending the read operation 158 , update (or generate) the context information 155 to include an indication of a decoder memory state (e.g., a memory state of the ECC engine 114 ), an indication of whether the first decode operation 151 failed or was interrupted, a location of the uncorrected data 153 , an indication of the first decode stage, or a combination thereof.
- the data recovery engine 116 may, responsive to suspending the read operation 158 , store the context information 155 at the controller memory 124 .
- the data recovery engine 116 may provide the context information 155 , the uncorrected data indication 135 , or both, to the access device 130 responsive to suspending the read operation 158 .
- the data recovery engine 116 may have the corrected data 154 available to provide to the access device 130 .
- the data recovery engine 116 may store the corrected data 154 in the controller memory 124 .
- the data recovery engine 116 may also be configured to detect a resume condition 162 indicating that the read operation 158 is to be resumed.
- the resume condition 162 may include receipt of the read request 121 (e.g., a second read request), receipt of the resume command 123 , or both.
- the resume command 123 (or the read request 121 ) corresponds to a request for a corrected version of the uncorrected data 153 .
- the read request 121 (e.g., the second read request) may indicate the address of the memory location.
- the resume command 123 may indicate at least one of the read request 121 (e.g., the first read request) or the address of the memory location.
- the access device 130 may send the context information 155 , in conjunction with the resume command 123 (or the abort command 111 ), to the device 103 .
- the data recovery engine 116 may, in response to detecting the resume condition 162 , determine whether the read operation 158 has been completed. The data recovery engine 116 may, in response to determining that the state 156 indicates that the read operation 158 has completed successfully, provide the corrected data 154 to the access device 130 subsequent to detecting the resume condition 162 . Alternatively, the data recovery engine 116 may, in response to determining that the state 156 indicates that the read operation 158 has completed unsuccessfully (e.g., RAID decoding has been performed in the background and has also failed), provide a failure indication to the access device 130 subsequent to detecting the resume condition 162 .
- RAID decoding has been performed in the background and has also failed
- the data recovery engine 116 may, subsequent to detecting the resume condition 162 , determine that the read operation 158 is not completed. For example, the data recovery engine 116 may determine that the read operation 158 is incomplete in response to determining that the state 156 indicates that the read operation 158 is in-progress or is suspended. The data recovery engine 116 may, in response to detecting the resume condition 162 and determining that the read operation 158 is incomplete, resume the read operation 158 based on the context information 155 .
- Resuming the read operation 158 may include updating the state 156 to indicate that the read operation 158 is in-progress, updating the priority 157 to indicate that the read operation 158 has a first priority (e.g., an active priority), performing one or more of the decode operations 150 based on the context information 155 , or a combination thereof.
- the data recovery engine 116 may resume the read operation 158 based on the context information 155 stored in the controller memory 124 , the context information 155 received from the access device 130 , or both.
- the data recovery engine 116 may, in response to determining that the context information 155 indicates that the first decode operation 151 was interrupted, resume the read operation 158 by instructing the ECC engine 114 to resume decoding of the uncorrected data 153 , the sense data 134 , or both, indicated by the context information 155 .
- the ECC engine 114 may perform the first decode stage based on the decoder memory state indicated by the context information 155 .
- the data recovery engine 116 may, in response to determining that the context information 155 indicates that the first decode operation 151 failed, resume the read operation 158 by performing the second decode operation 152 based on the uncorrected data 153 , the sense data 134 , or both, indicated by the context information 155 .
- the data recovery engine 116 resumes the read operation 158 based on a most recent version of the context information 155 available at the device 103 .
- the context information 155 received from the access device 130 may include an indication of a first version and the context information 155 stored at the controller memory 124 may include an indication of a second version. The second version may be distinct from the first version.
- the data recovery engine 116 may have updated the context information 155 stored at the controller memory 124 subsequent to providing the context information 155 to the access device 130 .
- the data recovery engine 116 may resume the read operation 158 based on the context information 155 stored at the controller memory 124 in response to determining that the second version is the same as or subsequent to the first version.
- the data recovery engine 116 may resume the read operation 158 based on the context information 155 received from the access device 130 in response to determining that the second version is prior to the first version.
- the data recovery engine 116 may be configured to update the uncorrected data 153 or generate the corrected data 154 by performing at least one of the decoding operations 150 (e.g., the second decode operation 152 ).
- the data recovery engine 116 may be configured to provide the uncorrected data 153 or the corrected data 154 to the access device 130 .
- the system 100 may enable the read operation 158 to be resumed based on the context information 155 responsive to detection of the resume condition 162 . Resuming the read operation 158 based on the context information 155 may save time as compared to restarting the read operation 158 independently of the context information 155 . In some aspects, the read operation 158 may continue to be performed in the background subsequent to detection of the suspend condition 160 . A latency associated with the read request 121 (e.g., the second read request) at the access device 130 may be reduced as compared to restarting the read operation 158 (independently of the context information 155 ) responsive to the resume condition 162 .
- receipt of the read request 121 (e.g., the second read request) is described as an example of the resume condition 162
- receipt of the read request 121 instead indicates that the read operation 158 is to be restarted.
- Receipt of the resume command 123 may correspond to the resume condition 162 .
- the data recovery engine 116 may initiate (e.g., restart) the read operation 158 independently of the context information 155 in response to receiving the read request 121 (e.g., the second read request).
- the data recovery engine 116 may resume the read operation 158 based on the context information 155 in response to receipt of the resume command 123 .
- FIG. 2 a diagram illustrates an example of operations generally designated 200 .
- One or more of the operations 200 may be performed by the access device 130 or the device 103 (e.g., a data storage device) of FIG. 1 .
- the operations 200 include a host read, at 202 .
- the access device 130 of FIG. 1 may send the read request 121 to the device 103 .
- the read request 121 may indicate an address of a memory location.
- the operations 200 also include reading and decoding, at 204 .
- the data recovery engine 116 of FIG. 1 may send one or more sense commands (e.g., the sense command 128 ) to the memory device 104 in response to receiving the read request 121 from access device 130 .
- the sense command 128 may indicate the address of the memory location (e.g., the address of the data 108 ).
- the memory circuitry 110 may, in response to receiving the one or more sense commands, generate the sense data 134 by performing one or more sense operations at memory location.
- the memory device 104 may provide the sense data 134 to the controller 102 .
- the operations 200 further include detecting a correctable error and setting a do-not-retry parameter to 0, at 206 .
- the data recovery engine 116 of FIG. 1 may perform the first decode operation 151 based on the sense data 134 , as described with reference to FIG. 1 .
- the data recovery engine 116 may determine that the first decode operation 151 failed and that the read operation 158 is not finished, as described with reference to FIG. 1 .
- the data recovery engine 116 may determine that the read operation 158 is not finished in response to determining that the decode operations 150 include the second decode operation 152 that is to be performed subsequent to failure of the first decode operation 151 .
- the data recovery engine 116 may, in response to determining that the read operation 158 is not finished, determine that recovery may be possible even though a decoding error was encountered in the read operation 158 (e.g., performing the first decode operation 151 ). For example, the data recovery engine 116 may determine that the second decode operation 152 remains to be performed to recover from the failure of the first decode operation 151 .
- the data recovery engine 116 may provide the uncorrected data indication 135 to the access device 130 in response to determining that the first decode operation 151 failed and that the read operation 158 is not finished.
- the uncorrected data indication 135 may indicate that a do-not-retry (DNR) parameter has a first value (e.g., 0 or false).
- the first value of the DNR parameter may indicate that the read operation 158 is not finished and that a retry (or resume) of the read operation 158 may be successful.
- DNR do-not-retry
- the uncorrected data indication 135 may indicate that at least one of the decode operations 150 (e.g., the first decode operation 151 ) has failed and that the decode operations 150 include at least one decode operation (e.g., the second decode operation 152 ) that remains to be performed.
- the operations 200 may also include continuing the read operation, at 208 .
- the data recovery engine 116 of FIG. 1 may continue the read operation 158 subsequent to detecting that the first decode operation 151 failed and providing the uncorrected data indication 135 to the access device 130 .
- the data recovery engine 116 may continue the read operation 158 by performing the second decode operation 152 .
- the data recovery engine 116 updates the priority 157 to indicate that the read operation 158 has a second priority (e.g., a background priority) subsequent to detecting that the first decode operation 151 failed, providing the uncorrected data indication 135 to the access device 130 , or both.
- a second priority e.g., a background priority
- the operations 200 may further include host attempt to read data from other source, at 210 .
- the access device 130 of FIG. 1 may, in response to receiving the uncorrected data indication 135 , determine whether the data to be read by the read operation 158 is also available from another data storage device.
- the access device 130 may perform one or more operations that have higher priority at the access device 130 than a priority associated with the read operation 158 at the access device 130 .
- the operations 200 also include read retry, at 212 .
- the access device 130 of FIG. 1 may send the read request 121 (e.g., a second read request) or the resume command 123 to the device 103 indicating the address of the memory location.
- the access device 130 may send the read request 121 (or the resume command 123 ) to the device 103 in response to determining that the data to be read by the read operation 158 is not available from another data storage device.
- the access device 130 may send the read request 121 (or the resume command 123 ) to the device 103 based at least in part on determining that a particular (e.g., highest) priority is associated with the read operation 158 at the access device 130 among operations to be performed by the access device 130 .
- the operations 200 proceed to 208 , where the data recovery engine 116 of FIG. 1 may continue the read operation 158 in response to receiving the read request 121 (e.g., the second read request) or the resume command 123 .
- the data recovery engine 116 in response to receiving the read request 121 (or the resume command 123 ), updates the priority 157 to indicate that the read operation 158 has a first priority (e.g., an active priority).
- the operations 200 may further include a read abort, at 214 .
- the access device 130 of FIG. 1 may send the abort command 111 to the device 103 .
- the access device 130 sends the abort command 111 to the device 103 in response to determining that one or more higher priority operations are to be performed at the access device 130 .
- the operations 200 may also include aborting read and saving context, at 216 .
- the data recovery engine 116 of FIG. 1 may suspend the read operation 158 in response to receiving the abort command 111 and may store the context information 155 in the controller memory 124 , as described with reference to FIG. 1 .
- the operations 200 may further include read resume, at 218 .
- the access device 130 may send the resume command 123 (or the read request 121 ) to the device 103 subsequent to sending the abort command 111 .
- the access device 130 sends the resume command 123 (or the read request 121 ) to the device 103 in response to determining that the read operation 158 is associated with a particular priority (e.g., a highest priority) among operations to be performed at the access device 130 .
- a particular priority e.g., a highest priority
- the operations 200 may also include resuming read based on saved context, at 220 .
- the data recovery engine 116 of FIG. 1 may, in response to detecting the resume condition 162 (e.g., receiving the resume command 123 or the read request 121 ), resume the read operation 158 based on the context information 155 , as described with reference to FIG. 1 .
- the operations 200 may further include determining successful read or read failure, at 222 .
- the data recovery engine 116 of FIG. 1 may determine whether the read operation 158 has completed successfully or completed unsuccessfully, as described with reference to FIG. 1 .
- the data recovery engine 116 may provide the corrected data 154 to the access device 130 in response to determining that the read operation 158 has completed successfully.
- the data recovery engine 116 may provide the uncorrected data 153 , an indication that the read operation 158 failed, or both, to the access device 130 in response to determining that the read operation 158 completed unsuccessfully.
- the operations 200 may thus enable the device 103 to perform the read operation 158 in the background in response to determining that the first decode operation 151 failed, to perform the read operation 158 based on the context information 155 in response to detecting the resume condition 162 , or both.
- resuming the read operation 158 based on the context information 155 , or both may save time as compared to restarting the read operation 158 .
- the data recovery engine 116 may be configured to perform the decode stages 350 .
- the decode stages 350 may include a decode stage 352 , a decode stage 354 , a decode stage 356 , a decode stage 358 , one or more additional decode stages, or a combination thereof.
- the decode stages 350 may correspond to successive decode stages of the data recovery engine 116 .
- the data recovery engine 116 may be configured to perform a subsequent stage of the decode stages 350 in response to determining that a prior stage of the decode stages 350 failed.
- One or more of the decode stages 350 may correspond to one or more operation modes of the same decoder.
- the decode stage 352 may correspond to a first decode mode (e.g., a lower-power operation mode) of the decoder of the ECC engine 114 .
- the decode stage 354 may correspond to a second decode mode (e.g., a full-power operation mode) of the decoder of the ECC engine 114 .
- the decode stages 350 may correspond to one or more decoders of the controller 102 .
- the decode stage 356 may correspond to a decoder or dedicated circuitry of the controller 102 that is configured to perform heroics (e.g., dynamic reads).
- the decode stage 358 may correspond to another decoder (e.g., a RAID decoder) of the controller 102 .
- the data recovery engine 116 may be configured to generate the context information 155 based on the decode stage associated with the first decode operation 151 .
- the context information 155 may correspond to context information 302 when the first decode operation 151 is associated with the first decode mode (e.g., a lower-power operation mode) of the decoder of the ECC engine 114 .
- the context information 155 may correspond to context information 304 when the first decode operation 151 is associated with the second decode mode (e.g., a full-power operation mode) of the decoder of the ECC engine 114 .
- the context information 155 may correspond to context information 306 when the first decode operation 151 is associated with the decode stage 356 .
- the context information 155 may correspond to context information 308 when the first decode operation 151 is associated with the decode stage 358 .
- the data recovery engine 116 may be configured to resume the read operation 158 in response to detecting the resume condition 162 , as described with reference to FIG. 1 .
- the data recovery engine 116 may resume the read operation 158 by resuming the first decode operation 151 based on the context information 155 , as described with reference to FIG. 1 .
- the data recovery engine 116 may resume the read operation 158 by initiating the second decode operation 152 based on the context information 155 , as described with reference to FIG. 1 .
- the first decode operation 151 may be associated with a decoder (e.g., the decoder of the ECC engine 114 ) that is the same as a decoder associated with the second decode operation 152 .
- the first decode operation 151 may be associated with a first decoder (e.g., the decoder of the ECC engine 114 ) that is distinct from a second decoder (e.g., the RAID decoder) associated with the second decode operation 152 .
- Resuming the read operation 158 based on the context information 155 in response to detecting the resume condition 162 may save time as compared to restarting the read operation 158 at the decode stage 352 independently of the context information 155 .
- Reduced read latency at the access device 130 may be associated with resuming the read operation 158 as compared to restarting the read operation 158 .
- the decode stages 350 may include fewer than or more than four stages.
- one or more of the decode stages 350 may be omitted.
- one or more additional stages may be added to the decode stages 350 .
- the one or more additional stages may include one or more ECC decoding stages or one or more additional heroics stages, as illustrative non-limiting examples.
- the diagram 400 includes ladder diagrams illustrating operations 402 , 404 , 406 , and 408 .
- One or more of the operations 402 - 408 may be performed by the access device 130 or the device 103 (e.g., a data storage device) of FIG. 1 .
- the operations 402 include sending the read request 121 from the access device 130 to the device 103 .
- the data recovery engine 116 of FIG. 1 may initiate the read operation 158 in response to receiving the read request 121 , as described with reference to FIG. 1 .
- the data recovery engine 116 may initiate the first decode operation 151 in response to receiving the read request 121 .
- the operations 402 may also include sending the abort command 111 from the access device 130 to the device 103 .
- the data recovery engine 116 of FIG. 1 may generate (or update) the context information 155 in response to receiving the abort command 111 , as described with reference to FIG. 1 .
- the data recovery engine 116 may store the context information 155 in the controller memory 124 of FIG. 1 .
- the operations 402 may further include sending the read request 121 (e.g., a second read request) from the access device 130 to the device 103 .
- the data recovery engine 116 of FIG. 1 may, in response to receiving the read request 121 (e.g., the second read request) resume the read operation 158 based on the context information 155 , as described with reference to FIG. 1 .
- the operations 402 may also include sending the corrected data 132 from the device 103 to the access device 130 , as described with reference to FIG. 1 .
- the operations 402 may thus enable resuming the read operation 158 based on the context information 155 subsequent to receiving the abort command 111 .
- the operations 404 differ from the operations 402 in that the suspend command 122 (as compared to the abort command 111 ) may be sent subsequent to sending the read request 121 from the access device 130 to the device 103 .
- the data recovery engine 116 may generate (or update) the context information 155 in response to receiving the suspend command 122 , as described with reference to FIG. 1 .
- the access device 130 may send the read request 121 (e.g., a second read request) to the device 103 .
- the data recovery engine 116 may, in response to receiving the read request 121 (e.g., the second read request) resume the read operation 158 based on the context information 155 , as described with reference to FIG. 1 .
- the operations 404 may thus enable resuming the read operation 158 based on the context information 155 subsequent to receiving the suspend command 122 .
- the operations 406 include sending the read request 121 from the access device 130 to the device 103 .
- the data recovery engine 116 may initiate the read operation 158 in response to receiving the read request 121 , as described with reference to FIG. 1 .
- the data recovery engine 116 may initiate the first decode operation 151 in response to receiving the read request 121 .
- the operations 406 may also include generating (or updating) the context information 155 .
- the data recovery engine 116 may generate (or update) the context information 155 in response to determining that the first decode operation 151 failed, as described with reference to FIG. 1 .
- the operations 406 may further include sending the uncorrected data 153 from the device 103 to the access device 130 .
- the data recovery engine 116 may send the uncorrected data 153 to the access device 130 in response to determining that the first decode operation 151 failed, as described with reference to FIG. 1 .
- the operations 406 may also include sending the read request 121 (e.g., a second read request) from the access device 130 to the device 103 .
- the access device 130 may send the read request 121 to the device 103 subsequent to receiving the uncorrected data 153 .
- the access device 130 may determine whether to send the read request 121 (e.g., the second read request) based on the uncorrected data 153 .
- the access device 130 may send the read request 121 (e.g., the second read request) in response to determining that a number of errors associated with the uncorrected data 153 exceeds an error tolerance threshold of the access device 130 .
- the read request 121 may indicate a request for a corrected version of the uncorrected data 153 .
- the operations 406 may further include resuming the read operation 158 based on the context information 155 .
- the data recovery engine 116 of FIG. 1 may, in response to receiving the read request 121 (e.g., the second read request), initiate the second decode operation 152 based on the context information 155 .
- the operations 406 may also include sending the corrected data 154 from the device 103 to the access device 130 .
- the data recovery engine 116 of FIG. 1 may send the corrected data 54 to the access device 130 , as described with reference to FIG. 1 .
- the operations 406 may thus enable sending the uncorrected data 153 to the access device 130 in response to determining that the first decode operation 151 failed.
- the operations 408 differ from the operations 406 in that the context information 155 is sent in addition to the uncorrected data 153 from the device 103 to the access device 130 and that the context information 155 and the uncorrected data 153 are sent in addition to the read request 121 (e.g., a second read request) from the access device 130 to the device 103 .
- the data recovery engine 116 of FIG. 1 may send the context information 155 and the uncorrected data 153 to the access device 130 in response to determining that the first decode operation 151 failed, as described with reference to FIG. 1 .
- the access device 130 may send the context information 155 , the uncorrected data 153 , and the read request 121 (e.g., the second read request) to the device 103 .
- the data recovery engine 116 may, in response to receiving the read request 121 (e.g., the second read request), resume the read operation 158 based on the context information 155 and the uncorrected data 153 received from the access device 130 .
- the data recovery engine 116 may provide the corrected data 154 to the access device 130 .
- the operations 408 may thus enable resuming the read operation 158 based on the context information 155 and the uncorrected data 153 received from the access device 130 .
- a method of operation is shown and generally designated 500 .
- the method 500 may be performed by at least one of the access device 130 or the system 100 of FIG. 1 .
- the method 500 includes sending a command to suspend a read operation to a data storage device, at 502 .
- the access device 130 of FIG. 1 may send the suspend command 122 (or the abort command 111 ) to suspend the read operation 158 to the device 103 (e.g., a data storage device), as described with reference to FIG. 1 .
- the method 500 also includes storing context information corresponding to the read operation, at 504 .
- the access device 130 of FIG. 1 may store the context information 155 received from the device 103 responsive to sending the suspend command 122 (or the abort command 111 ), as described with reference to FIG. 1 .
- the context information 155 may correspond to the read operation 158 , as described with reference to FIG. 1 .
- the method 500 may enable the access device 130 to store the context information 155 subsequent to sending the suspend command 122 (or the abort command 111 ) to suspend the read operation 158 .
- the access device 130 may subsequently send the context information 155 to the device 103 to enable the device 103 to resume the read operation 158 based on the context information 155 .
- FIG. 6A is a block diagram illustrating a non-volatile memory system according to an example of the subject matter described herein.
- a non-volatile memory system 600 includes a controller 602 and non-volatile memory (e.g., the non-volatile memory 106 of FIG. 1 ) that may be made up of one or more non-volatile memory die 604 .
- non-volatile memory e.g., the non-volatile memory 106 of FIG. 1
- the term “memory die” refers to the collection of non-volatile memory cells, and associated circuitry for managing the physical operation of those non-volatile memory cells, that are formed on a single semiconductor substrate.
- the controller 602 may correspond to the controller 102 of FIG. 1 .
- Controller 602 interfaces with a host system (e.g., the access device 130 of FIG. 1 ) and transmits command sequences for read, program, and erase operations to non-volatile memory die 604 .
- the controller 602 may include the data recovery engine 116 of FIG. 1 .
- the controller 602 (which may be a flash memory controller) can take the form of processing circuitry, a microprocessor or processor, and a computer-readable medium that stores computer-readable program code (e.g., firmware) executable by the (micro)processor, logic gates, switches, an application specific integrated circuit (ASIC), a programmable logic controller, and an embedded microcontroller, for example.
- the controller 602 can be configured with hardware and/or firmware to perform the various functions described below and shown in the flow diagrams. Also, some of the components shown as being internal to the controller can be stored external to the controller, and other components can be used. Additionally, the phrase “operatively in communication with” could mean directly in communication with or indirectly (wired or wireless) in communication with through one or more components, which may or may not be shown or described herein.
- a flash memory controller is a device that manages data stored on flash memory and communicates with a host, such as a computer or electronic device.
- a flash memory controller can have various functionality in addition to the specific functionality described herein. For example, the flash memory controller can format the flash memory, map out bad flash memory cells, and allocate spare cells to be substituted for future failed cells. Some part of the spare cells can be used to hold firmware to operate the flash memory controller and implement other features.
- the flash memory controller can convert the logical address received from the host to a physical address in the flash memory.
- the flash memory controller can also perform various memory management functions, such as, but not limited to, wear leveling (distributing writes to avoid wearing out specific blocks of memory that would otherwise be repeatedly written to) and garbage collection (after a block is full, moving only the valid pages of data to a new block, so the full block can be erased and reused).
- wear leveling distributing writes to avoid wearing out specific blocks of memory that would otherwise be repeatedly written to
- garbage collection after a block is full, moving only the valid pages of data to a new block, so the full block can be erased and reused).
- Non-volatile memory die 604 may include any suitable non-volatile storage medium, including NAND flash memory cells and/or NOR flash memory cells.
- the memory cells can take the form of solid-state (e.g., flash) memory cells and can be one-time programmable, few-time programmable, or many-time programmable.
- the memory cells can also be single-level cells (SLC), multiple-level cells (MLC), triple-level cells (TLC), or use other memory cell level technologies, now known or later developed. Also, the memory cells can be fabricated in a two-dimensional or three-dimensional fashion.
- non-volatile memory system 600 may be any suitable flash interface, such as Toggle Mode 200 , 400 , or 800 .
- non-volatile memory system 600 may be a card based system, such as a secure digital (SD) or a micro secure digital (micro-SD) card.
- memory system 600 may be part of an embedded memory system.
- non-volatile memory system 600 (sometimes referred to herein as a storage module) includes a single channel between controller 602 and non-volatile memory die 604
- the subject matter described herein is not limited to having a single memory channel.
- 2, 4, 8 or more NAND channels may exist between the controller and the NAND memory device, depending on controller capabilities.
- more than a single channel may exist between the controller 602 and the non-volatile memory die 604 , even if a single channel is shown in the drawings.
- FIG. 6B illustrates a storage module 700 that includes plural non-volatile memory systems 600 .
- storage module 700 may include a storage controller 702 that interfaces with a host and with storage system 704 , which includes a plurality of non-volatile memory systems 600 .
- the interface between storage controller 702 and non-volatile memory systems 600 may be a bus interface, such as a serial advanced technology attachment (SATA) or peripheral component interface express (PCIe) interface.
- Storage module 700 in one embodiment, may be a solid state drive (SSD), such as found in portable computing devices, such as laptop computers, and tablet computers.
- Each controller 602 of FIG. 6B may include a data recovery engine corresponding to the data recovery engine 116 .
- the storage controller 702 may include a data recovery engine corresponding to the data recovery engine 116 .
- FIG. 6C is a block diagram illustrating a hierarchical storage system.
- a hierarchical storage system 750 includes a plurality of storage controllers 702 , each of which controls a respective storage system 704 .
- Host systems 752 may access memories within the hierarchical storage system 750 via a bus interface.
- the bus interface may be a Non-Volatile Memory Express (NVMe) or fiber channel over Ethernet (FCoE) interface.
- the hierarchical storage system 750 illustrated in FIG. 6C may be a rack mountable mass storage system that is accessible by multiple host computers, such as would be found in a data center or other location where mass storage is needed.
- Each storage controller 702 of FIG. 6C may include a data recovery engine corresponding to the data recovery engine 116 .
- FIG. 7A is a block diagram illustrating exemplary components of the controller 602 in more detail.
- the controller 602 includes a front end module 608 that interfaces with a host, a back end module 610 that interfaces with the one or more non-volatile memory die 604 , and various other modules that perform other functions.
- a module may take the form of a packaged functional hardware unit designed for use with other components, a portion of a program code (e.g., software or firmware) executable by a (micro)processor or processing circuitry that usually performs a particular function of related functions, or a self-contained hardware or software component that interfaces with a larger system, for example.
- a program code e.g., software or firmware
- a buffer manager/bus controller 614 manages buffers in random access memory (RAM) 616 and controls the internal bus arbitration of the controller 602 .
- a read only memory (ROM) 618 stores system boot code. Although illustrated in FIG. 7A as located within the controller 602 , in other embodiments one or both of the RAM 616 and the ROM 618 may be located externally to the controller 602 . In yet other embodiments, portions of RAM and ROM may be located both within the controller 602 and outside the controller 602 .
- Front end module 608 includes a host interface 620 and a physical layer interface (PHY) 622 that provide the electrical interface with the host or next level storage controller.
- PHY physical layer interface
- the choice of the type of host interface 620 can depend on the type of memory being used. Examples of host interfaces 620 include, but are not limited to, SATA, SATA Express, Serial Attached Small Computer System Interface (SAS), Fibre Channel, USB, PCIe, and NVMe.
- SAS Serial Attached Small Computer System Interface
- the host interface 620 typically facilitates transfer for data, control signals, and timing signals.
- Back end module 610 includes an error correction code (ECC) engine 624 that encodes the data received from the host, and decodes and error corrects the data read from the non-volatile memory.
- ECC error correction code
- a command sequencer 626 generates command sequences, such as program and erase command sequences, to be transmitted to non-volatile memory die 604 .
- a RAID (Redundant Array of Independent Drives) module 628 manages generation of RAID parity and recovery of failed data. The RAID parity may be used as an additional level of integrity protection for the data being written into the non-volatile memory die 604 . In some cases, the RAID module 628 may be a part of the ECC engine 624 .
- a memory interface 630 provides the command sequences to non-volatile memory die 604 and receives status information from non-volatile memory die 604 .
- the memory interface 630 may be a double data rate (DDR) interface, such as a Toggle Mode 200 , 400 , or 800 interface.
- DDR double data rate
- a flash control layer 632 controls the overall operation of back end module 610 .
- the back end module 610 may also include the data recovery engine 116 .
- System 600 includes a power management module 612 and a media management layer 638 , which performs wear leveling of memory cells of non-volatile memory die 604 .
- System 600 also includes other discrete components 640 , such as external electrical interfaces, external RAM, resistors, capacitors, or other components that may interface with controller 602 .
- one or more of the physical layer interface 622 , RAID module 628 , media management layer 638 and buffer management/bus controller 614 are optional components that are omitted from the controller 602 .
- FIG. 7B is a block diagram illustrating exemplary components of non-volatile memory die 604 in more detail.
- Non-volatile memory die 604 includes peripheral circuitry 641 and non-volatile memory array 642 .
- Non-volatile memory array 642 includes the non-volatile memory cells used to store data.
- the non-volatile memory cells may be any suitable non-volatile memory cells, including NAND flash memory cells and/or NOR flash memory cells in a two dimensional and/or three dimensional configuration.
- Peripheral circuitry 641 includes a state machine 652 that provides status information to controller 602 , which may include the data recovery engine 116 .
- the peripheral circuitry 641 may also include a power management or data latch control module 654 .
- Non-volatile memory die 604 further includes discrete components 640 , an address decoder 648 , an address decoder 650 , and a data cache 656 that caches data.
- components depicted herein are illustrated as block components and described in general terms, such components may include one or more microprocessors, state machines, or other circuits configured to enable the data recovery engine 116 to initiate the read operation 158 , suspend the read operation 158 , store the context information 155 , resume the read operation 158 , or a combination thereof, as described above with reference to FIGS. 1-7B .
- the data recovery engine 116 may represent physical components, such as hardware controllers, state machines, logic circuits, or other structures, to start the read operation 158 , suspend the read operation 158 , store the context information 155 , provide the context information 155 to the access device 130 , receive the context information 155 from the access device 130 , resume the read operation 158 based on the context information 155 , or a combination thereof.
- the data recovery engine 116 may be implemented using a microprocessor or microcontroller programmed to initiate the read operation 158 , suspend the read operation 158 , store the context information 155 , resume the read operation 158 , or a combination thereof.
- the device 103 may be implemented in a portable device configured to be selectively coupled to one or more external devices.
- the device 103 may be attached or embedded within one or more host devices, such as within a housing of a host communication device.
- the device 103 may be within a packaged apparatus such as a wireless telephone, a personal digital assistant (PDA), a gaming device or console, a portable navigation device, or other device that uses internal non-volatile memory.
- PDA personal digital assistant
- gaming device or console such as a portable navigation device, or other device that uses internal non-volatile memory.
- the device 103 may include a non-volatile memory, such as a three-dimensional (3D) memory, a flash memory (e.g., NAND, NOR, Multi-Level Cell (MLC), a Divided bit-line NOR (DINOR) memory, an AND memory, a high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), or other flash memories), an erasable programmable read-only memory (EPROM), an electrically-erasable programmable read-only memory (EEPROM), a read-only memory (ROM), a one-time programmable memory (OTP), or any other type of memory.
- a non-volatile memory such as a three-dimensional (3D) memory, a flash memory (e.g., NAND, NOR, Multi-Level Cell (MLC), a Divided bit-line NOR (DINOR) memory, an AND memory, a high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), or other flash
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
- The present disclosure is generally related to reading data from a memory.
- Generally, data storage devices are configured to write data to memory and read the data from the memory. An access device coupled to a data storage device may send a first read request to read data from a memory address. The data storage device may start a read operation responsive to the first read request. For example, the data storage device may read data from a memory location corresponding to the address and may perform decode operations on the read data. The data storage device may perform one or more stages of decoding and may provide decoded data to the access device in response to detecting that a first decode stage (e.g., error correction code (ECC) decoding) succeeded. Alternatively, the data storage device may proceed to a second decode stage (e.g., redundant array of independent disks (RAID) decoding) in response to detecting a failure at the first decode stage. Performing a greater number of the decode stages may use more resources (e.g., time and processing cycles) and increase read latency.
- In some circumstances, the access device may issue an abort command to the data storage device in response to determining that the data storage device is taking too long to respond to the first read request. For example, the access device may issue the abort command in response to determining that a higher priority operation is to be performed by the access device. The access device may subsequently send a second read request to the data storage device indicating the same address of the memory. The data storage device may restart the read operation responsive to the second read request. For example, the data storage device may perform the first decode stage again and the first decode stage may fail again. Interrupting and restarting a read operation to a memory location may use more resources (e.g., time and processing cycles) overall.
-
FIG. 1 is a block diagram of an illustrative example of a system including a data storage device coupled to an access device; -
FIG. 2 is a diagram of an illustrative example of a sequence of operations that may be performed by the data storage device and the access device of the system ofFIG. 1 ; -
FIG. 3 is a diagram of an illustrative example of decode stages that the data storage device ofFIG. 1 may be configured to perform; -
FIG. 4 is a diagram of illustrative examples of sequences of operations that may be performed by the data storage device and the access device of the system ofFIG. 1 ; -
FIG. 5 is a flow diagram of a particular example of a method of operation of the access device of the system ofFIG. 1 ; -
FIG. 6A is a block diagram of an illustrative example of a non-volatile memory system including a controller that includes a data recovery engine ofFIG. 1 ; -
FIG. 6B is a block diagram of an illustrative example of a storage module that includes plural non-volatile memory systems that each may include the data recovery engine ofFIG. 1 ; -
FIG. 6C is a block diagram of an illustrative example of a hierarchical storage system that includes a plurality of storage controllers that each may include the data recovery engine ofFIG. 1 ; -
FIG. 7A is a block diagram illustrating an example of a non-volatile memory system including a controller that includes the data recovery engine ofFIG. 1 ; and -
FIG. 7B is a block diagram illustrating exemplary components of a non-volatile memory die that may be coupled to a controller that includes the data recovery engine ofFIG. 1 . - Particular aspects of the disclosure are described below with reference to the drawings. In the description, common features are designated by common reference numbers. As used herein, “exemplary” may indicate an example, an implementation, and/or an aspect, and should not be construed as limiting or as indicating a preference or a preferred implementation.
- Referring to
FIG. 1 , a particular embodiment of asystem 100 includes a device 103 (e.g., a data storage device) coupled to anaccess device 130. Thedevice 103 includes amemory device 104 coupled to acontroller 102. Thecontroller 102 is configured to suspend a read operation at thememory device 104 in response to detecting a suspend condition and to store context information associated with the suspended read operation, provide the context information to theaccess device 130, or both. In response to detecting a resume condition, thecontroller 102 may resume the read operation based on the stored context information or based on context information received from theaccess device 130. Resuming the read operation based on context information (as compared to restarting the read operation independently of the context information) may reduce a read latency at theaccess device 130. - The
access device 130 may be configured to provide data to be stored at thememory device 104 or to request data to be read from thememory device 104. Theaccess device 130 may be coupled to thedevice 103 via a connection (e.g., an interconnect 120), such as a bus, a network, or a wireless connection. For example, theinterconnect 120 may correspond to a peripheral component interconnect (PCIe) bus. Thedevice 103 may include an interface 112 (e.g., an access device interface) that enables communication via theinterconnect 120 between thedevice 103 and theaccess device 130. For example, theaccess device 130 may operate in compliance with a Joint Electron Devices Engineering Council (JEDEC) industry specification, such as a Universal Flash Storage (UFS) Host Controller Interface specification. As another example, theaccess device 130 may operate in compliance with one or more other specifications, such as a Secure Digital (SD) Host Controller specification as an illustrative example. Theaccess device 130 may communicate with thememory device 104 in accordance with any other suitable communication protocol. Theaccess device 130 may include a mobile telephone, a computer (e.g., a laptop, a tablet, or a notebook computer), a music player, a video player, a gaming device or console, an electronic book reader, a personal digital assistant (PDA), a portable navigation device, or other device that uses non-volatile memory. - In some implementations, the
device 103 may be a memory card, such as a Secure Digital SD® card, a microSD® card, a miniSD™ card (trademarks of SD-3C LLC, Wilmington, Del.), a MultiMediaCard™ (MMC™) card (trademark of JEDEC Solid State Technology Association, Arlington, Va.), or a CompactFlash® (CF) card (trademark of SanDisk Corporation, Milpitas, Calif.). In other implementations, thedevice 103 may be configured to be coupled to theaccess device 130 as embedded memory, such as eMMC® (trademark of JEDEC Solid State Technology Association, Arlington, Va.) and eSD, as illustrative examples. For example, thedevice 103 may correspond to an eMMC (embedded MultiMedia Card) device. Thedevice 103 may operate in compliance with a JEDEC industry specification. For example, thedevice 103 may operate in compliance with a JEDEC eMMC specification, a JEDEC Universal Flash Storage (UFS) specification, one or more other specifications, or a combination thereof. - The
memory device 104 may include anon-volatile memory 106. Thenon-volatile memory 106 may include a flash memory, such as a NAND flash memory, as an illustrative, non-limiting example. Thenon-volatile memory 106 may have a three-dimensional (3D) memory configuration. As an example, thenon-volatile memory 106 may have a 3D vertical bit line (VBL) configuration. In a particular implementation, thenon-volatile memory 106 has a 3D memory configuration that is monolithically formed in one or more physical levels of arrays of memory cells having an active area disposed above a silicon substrate. Alternatively, thenon-volatile memory 106 may have another configuration, such as a two-dimensional (2D) memory configuration or a non-monolithic 3D memory configuration (e.g., a stacked die 3D memory configuration). - The
memory device 104 may include support circuitry, such as memory circuitry 110 (e.g., read/write circuitry), to support operation of one or more memory dies of thememory device 104. Although depicted as a single component, thememory circuitry 110 may be divided into separate components of thememory device 104, such as read circuitry and write circuitry. Thememory circuitry 110 may be external to the one or more dies of thememory device 104. Alternatively, one or more individual memory dies of thememory device 104 may include corresponding memory circuitry that is operable to read data from and/or write data to storage elements within the individual memory die independent of any other read and/or write operations at any of the other memory dies. - The
non-volatile memory 106 may include storage elements at one or more dies. Each of the one or more dies may include one or more blocks, such as a NAND flash erase group of storage elements. Each of the blocks may include one or more groups of storage elements (e.g., flash memory cells). Each group of storage elements may include multiple storage elements (e.g., memory cells) and may be configured as a word line. A word line may function as a single-level-cell (SLC) word line coupled to storage elements that store one bit per storage element, as a multi-level-cell (MLC) word line coupled to storage elements that store two bits per storage element, or as a tri-level-cell (TLC) word line coupled to storage elements that store three bits per storage element, as illustrative, non-limiting examples. Each storage element of thenon-volatile memory 106 may be programmable to a state (e.g., a threshold voltage in a flash configuration or a resistive state in a resistive memory configuration) that indicates one or more values. - The
controller 102 is configured to receive data and instructions from and to send data to theaccess device 130 while thedevice 103 is operatively coupled to theaccess device 130. Thecontroller 102 is further configured to send data and commands to thememory device 104 and to receive data from thememory device 104. Thecontroller 102 may include acontroller memory 124, adata recovery engine 116, and an error correction code (ECC)engine 114. - The
controller 102 is configured to receive data and instructions from theaccess device 130 and to send data to theaccess device 130. For example, thecontroller 102 may send data to theaccess device 130 via theinterconnect 120, and thecontroller 102 may receive data from theaccess device 130 via theinterconnect 120. Thecontroller 102 is configured to send data and commands to thememory device 104 and to receive data from thememory device 104. For example, thecontroller 102 is configured to send data and a write command to cause thememory device 104 to store data to an address of thememory device 104. The write command may specify a physical address of a portion of the memory device 104 (e.g., a physical address of a word line of the memory device 104) that is to store the data. Thecontroller 102 may also be configured to send data and commands to thememory device 104 associated with background scanning operations, garbage collection operations, and/or wear leveling operations, etc., as illustrative, non-limiting examples. Thecontroller 102 is configured to send a read command to thememory device 104 to access data from a specified address of thememory device 104. The read command may specify the physical address of a portion of the memory device 104 (e.g., a physical address of a word line of the memory device 104). - The
ECC engine 114 may include an encoder configured to encode one or more data words using an ECC encoding technique. TheECC engine 114 may include a Reed-Solomon encoder, a Bose-Chaudhuri-Hocquenghem (BCH) encoder, a low-density parity check (LDPC) encoder, a turbo encoder, an encoder configured to encode the data according to one or more other ECC techniques, or a combination thereof, as illustrative, non-limiting examples. TheECC engine 114 may also include a decoder. The decoder may be configured to decode data read from thememory device 104 to detect and correct, up to an error correction capability of the ECC scheme, bit errors that may be present in the data. The decoder may be configured to perform in multiple decoding modes. For example, the decoding modes may include a relatively low-power, high-speed decoding mode (e.g., a bit-flipping decoding mode), a full-power LDPC decoding mode with a higher correction capacity than the lower-power decoding mode, one or more other decoding modes, or a combination thereof. The decoding modes may correspond to successive decode stages. For example, the lower-power decoding mode may correspond to a first decode stage, the full-power decoding mode may correspond to a second decode stage, and the decoder may be configured to selectively perform the second decode stage in response to detecting that the first decode stage failed. The decoder may thus conserve resources (e.g., power) by performing the lower-power decoding mode and not performing the full-power decoding mode when the first decode stage is successful. - In a particular aspect, the
controller 102 may include multiple decoders. For example, thecontroller 102 may include the decoder of theECC engine 114, a RAID decoder, a dynamic read decoder, or a combination thereof. In this aspect, decoding modes of the multiple decoders may correspond to successive decode stages. For example, the lower-power operating mode of an ECC decoder may correspond to a first decoding stage, a full-power operating mode of the ECC decoder may correspond to a second decoding stage, a first mode of the RAID decoder may correspond to a third decoding stage, or a combination thereof. - The
data recovery engine 116 may be configured to initiate aread operation 158 to retrievedata 108 from thenon-volatile memory 106 in response to receiving a read request 121 (e.g., a first read request) from theaccess device 130. Thedata recovery engine 116 may be configured, in response to detecting a suspendcondition 160, to suspend the readoperation 158 and to generatecontext information 155. Thedata recovery engine 116 may be configured, in response to detecting aresume condition 162, to resume theread operation 158 based on thecontext information 155. Resuming theread operation 158 based on thecontext information 155 may result in reduced read latency at thedevice 103 as compared to restarting theread operation 158. - During operation, the
data recovery engine 116 may receive the readrequest 121 from theaccess device 130. The readrequest 121 may indicate a logical address or a physical address corresponding to a memory location of thenon-volatile memory 106. Thedata recovery engine 116 may initiate aread operation 158 to retrieve thedata 108 from the memory location of thenon-volatile memory 106 in response to receiving the readrequest 121 from theaccess device 130. Thedata recovery engine 116 may set astate 156 of the readoperation 158 to indicate that the readoperation 158 is in progress, set apriority 157 of the readoperation 158 to indicate a first priority (e.g., an active priority), or both. - The
data recovery engine 116 may perform the readoperation 158 based on thepriority 157. For example, thedata recovery engine 116 may perform the readoperation 158 in response to determining that thepriority 157 corresponds to a particular (e.g., a highest) priority among one or more operations to be performed by thedata recovery engine 116, thecontroller 102, or both. - Performing the read
operation 158 may include at least one of sending one or more sense commands (e.g., a sense command 128) to thememory device 104, receivingsense data 134 from thememory device 104 responsive to the sense commands (e.g., the sense command 128), or performing one ormore decode operations 150 based on thesense data 134. - In a particular aspect, the
data recovery engine 116 performs afirst decode operation 151 of thedecode operations 150 by providing thesense data 134 to a first decoder (e.g., the ECC engine 114). The ECC engine 114 (e.g., a LDPC decoder) may generate correcteddata 154 based on decoding thesense data 134. For example, theECC engine 114 may generate the correcteddata 154 by performing a first decode stage on thesense data 134. TheECC engine 114 may provide the correcteddata 154, a decoding success indication, or both, to thedata recovery engine 116. Thedata recovery engine 116 may detect that thefirst decode operation 151 has succeeded in response to receiving the correcteddata 154, the decoding success indication, or both. Thedata recovery engine 116 may, in response to determining that thefirst decode operation 151 has succeeded, provide the correcteddata 154 to theaccess device 130 and set thestate 156 to indicate that the readoperation 158 is completed successfully. - Alternatively, the
ECC engine 114 may generate a decoding failure indication anduncorrected data 153 when a number of errors in thesense data 134 exceeds an error detection capacity of thefirst decode operation 151. TheECC engine 114 may provide theuncorrected data 153, a failure indication, or both, to thedata recovery engine 116. Thedata recovery engine 116 may detect that thefirst decode operation 151 has failed in response to receiving theuncorrected data 153, the failure indication, or both. Thedata recovery engine 116 may, in response to determining that thefirst decode operation 151 has failed, set thestate 156 to indicate that thefirst decode operation 151 has failed. In some aspects, thedata recovery engine 116 sets thepriority 157 of the readoperation 158 to indicate a second priority (e.g., a background priority) in response to determining that thefirst decode operation 151 has failed. In alternative aspects, thedata recovery engine 116 leaves thepriority 157 of the readoperation 158 unchanged in response to determining that thefirst decode operation 151 has failed. - The
data recovery engine 116 may, in response to determining that thefirst decode operation 151 has failed, determine whether to perform asecond decode operation 152 subsequent to detecting failure of thefirst decode operation 151. Thedata recovery engine 116 may, in response to determining that thesecond decode operation 152 is not available, detect that the readoperation 158 has failed and set thestate 156 to indicate that the readoperation 158 is completed unsuccessfully (e.g., has failed). Alternatively, thedata recovery engine 116 may initiate thesecond decode operation 152 in response to determining that thesecond decode operation 152 is available subsequent to detecting failure of thefirst decode operation 151. - The
data recovery engine 116 may, responsive to detecting failure of thefirst decode operation 151, update (or generate) thecontext information 155. For example, thecontext information 155 may include an indication of a decoder memory state (e.g., a memory state of the ECC engine 114), an indication that thefirst decode operation 151 failed, theuncorrected data 153, an indication of the first decode stage, or a combination thereof. Thedata recovery engine 116 may, responsive to detecting failure of thefirst decode operation 151, provide thecontext information 155, anuncorrected data indication 135, or both, to theaccess device 130. - Performing the
second decode operation 152 may include providing the address of the memory location, thesense data 134, theuncorrected data 153, or a combination thereof, to theECC engine 114 or to another decoder (e.g., a redundant array of independent disks (RAID) decoder). For example, thedata recovery engine 116 may perform thefirst decode operation 151 by instructing theECC engine 114 to perform a first decode stage on thesense data 134. In this example, thedata recovery engine 116 may, in response to determining that theECC engine 114 is configured to perform a second decode stage subsequent to failure of the first decode stage (e.g., using a higher-power decoding mode), perform thesecond decode operation 152 by instructing theECC engine 114 to perform the second decode stage on thesense data 134 or theuncorrected data 153. Alternatively, thedata recovery engine 116 may, in response to determining that theECC engine 114 is not configured to perform any decode stages subsequent to failure of the first decode stage (e.g., the first decode stage corresponds to a higher-power decode stage), perform thesecond decode operation 152 by instructing a RAID decoder to generate data associated with the address. To illustrate, the RAID decoder may generate the correcteddata 154 by reading data corresponding to a RAID group from one or more other memory locations of thenon-volatile memory 106. - The
data recovery engine 116 may be configured to detect a suspendcondition 160 indicating that the readoperation 158 is to be suspended. For example, the suspendcondition 160 may include failure of thefirst decode operation 151, receipt of anabort command 111, receipt of a suspend command 122, or a combination thereof. The abort command 111 (or the suspend command 122) may indicate at least one of the readrequest 121 or the address of the memory location. Receipt of the suspend command 122 may indicate that theaccess device 130 is likely to send a resume command 123 associated with the readrequest 121. - The
data recovery engine 116 may be configured to suspend the readoperation 158 in response to detecting the suspendcondition 160. Suspending theread operation 158 may include setting thestate 156 to indicate that the readoperation 158 is suspended. In a particular aspect, thedata recovery engine 116 suspends the readoperation 158 by stopping theread operation 158. For example, thedata recovery engine 116 may, in response to detecting the suspendcondition 160 during performance of thefirst decode operation 151, suspend the readoperation 158 by instructing theECC engine 114 to interrupt the first decode stage, by refraining from performing thesecond decode operation 152 responsive to detecting that thefirst decode operation 151 failed, or both. - In an alternative aspect, the
data recovery engine 116 suspends the readoperation 158 by performing theread operation 158 in the background, reducing a priority associated with the readoperation 158, or both. For example, thedata recovery engine 116 may update thepriority 157 to indicate that the readoperation 158 has a second priority (e.g., a background priority). The second priority (e.g., the background priority) may be lower than the first priority (e.g., the active priority). - In some implementations, the
data recovery engine 116 may perform one or more distinct operations if the suspendcondition 160 corresponds to receipt of the suspend command 122 as compared to receipt of theabort command 111. For example, thedata recovery engine 116 may update thepriority 157 to indicate a first particular priority (e.g., a first background priority) if the suspendcondition 160 includes receipt of the suspend command 122 or a second particular priority (e.g., a second background priority) if the suspendcondition 160 includes receipt of theabort command 111. The first particular priority (e.g., the first background priority) may be greater than the second particular priority (e.g., the second background priority) and may be lower than the first priority (e.g., the active priority). Thedata recovery engine 116 may be configured to schedule operations based on priority. To illustrate, thedata recovery engine 116 may perform a first read operation having a first priority prior to performing in a second read operation having a second priority that is lower than the first priority. - The
data recovery engine 116 may, responsive to suspending theread operation 158, update (or generate) thecontext information 155 to include an indication of a decoder memory state (e.g., a memory state of the ECC engine 114), an indication of whether thefirst decode operation 151 failed or was interrupted, a location of theuncorrected data 153, an indication of the first decode stage, or a combination thereof. In some implementations, thedata recovery engine 116 may, responsive to suspending theread operation 158, store thecontext information 155 at thecontroller memory 124. Alternatively, or in addition, thedata recovery engine 116 may provide thecontext information 155, theuncorrected data indication 135, or both, to theaccess device 130 responsive to suspending theread operation 158. - Continuing to process the read
operation 158 as a low-priority or background process subsequent to detecting the suspendcondition 160 may result in completion of the readoperation 158. In this case, thedata recovery engine 116 may have the correcteddata 154 available to provide to theaccess device 130. Thedata recovery engine 116 may store the correcteddata 154 in thecontroller memory 124. - The
data recovery engine 116 may also be configured to detect aresume condition 162 indicating that the readoperation 158 is to be resumed. Theresume condition 162 may include receipt of the read request 121 (e.g., a second read request), receipt of the resume command 123, or both. In a particular aspect, the resume command 123 (or the read request 121) corresponds to a request for a corrected version of theuncorrected data 153. The read request 121 (e.g., the second read request) may indicate the address of the memory location. The resume command 123 may indicate at least one of the read request 121 (e.g., the first read request) or the address of the memory location. In a particular aspect, theaccess device 130 may send thecontext information 155, in conjunction with the resume command 123 (or the abort command 111), to thedevice 103. - The
data recovery engine 116 may, in response to detecting theresume condition 162, determine whether the readoperation 158 has been completed. Thedata recovery engine 116 may, in response to determining that thestate 156 indicates that the readoperation 158 has completed successfully, provide the correcteddata 154 to theaccess device 130 subsequent to detecting theresume condition 162. Alternatively, thedata recovery engine 116 may, in response to determining that thestate 156 indicates that the readoperation 158 has completed unsuccessfully (e.g., RAID decoding has been performed in the background and has also failed), provide a failure indication to theaccess device 130 subsequent to detecting theresume condition 162. - In some aspect, the
data recovery engine 116 may, subsequent to detecting theresume condition 162, determine that the readoperation 158 is not completed. For example, thedata recovery engine 116 may determine that the readoperation 158 is incomplete in response to determining that thestate 156 indicates that the readoperation 158 is in-progress or is suspended. Thedata recovery engine 116 may, in response to detecting theresume condition 162 and determining that the readoperation 158 is incomplete, resume theread operation 158 based on thecontext information 155. - Resuming the
read operation 158 may include updating thestate 156 to indicate that the readoperation 158 is in-progress, updating thepriority 157 to indicate that the readoperation 158 has a first priority (e.g., an active priority), performing one or more of thedecode operations 150 based on thecontext information 155, or a combination thereof. Thedata recovery engine 116 may resume theread operation 158 based on thecontext information 155 stored in thecontroller memory 124, thecontext information 155 received from theaccess device 130, or both. Thedata recovery engine 116 may, in response to determining that thecontext information 155 indicates that thefirst decode operation 151 was interrupted, resume theread operation 158 by instructing theECC engine 114 to resume decoding of theuncorrected data 153, thesense data 134, or both, indicated by thecontext information 155. For example, theECC engine 114 may perform the first decode stage based on the decoder memory state indicated by thecontext information 155. As another example, thedata recovery engine 116 may, in response to determining that thecontext information 155 indicates that thefirst decode operation 151 failed, resume theread operation 158 by performing thesecond decode operation 152 based on theuncorrected data 153, thesense data 134, or both, indicated by thecontext information 155. - In some implementations, the
data recovery engine 116 resumes the readoperation 158 based on a most recent version of thecontext information 155 available at thedevice 103. For example, thecontext information 155 received from theaccess device 130 may include an indication of a first version and thecontext information 155 stored at thecontroller memory 124 may include an indication of a second version. The second version may be distinct from the first version. For example, thedata recovery engine 116 may have updated thecontext information 155 stored at thecontroller memory 124 subsequent to providing thecontext information 155 to theaccess device 130. Thedata recovery engine 116 may resume theread operation 158 based on thecontext information 155 stored at thecontroller memory 124 in response to determining that the second version is the same as or subsequent to the first version. Alternatively, thedata recovery engine 116 may resume theread operation 158 based on thecontext information 155 received from theaccess device 130 in response to determining that the second version is prior to the first version. - The
data recovery engine 116 may be configured to update theuncorrected data 153 or generate the correcteddata 154 by performing at least one of the decoding operations 150 (e.g., the second decode operation 152). Thedata recovery engine 116 may be configured to provide theuncorrected data 153 or the correcteddata 154 to theaccess device 130. - The
system 100 may enable the readoperation 158 to be resumed based on thecontext information 155 responsive to detection of theresume condition 162. Resuming theread operation 158 based on thecontext information 155 may save time as compared to restarting theread operation 158 independently of thecontext information 155. In some aspects, theread operation 158 may continue to be performed in the background subsequent to detection of the suspendcondition 160. A latency associated with the read request 121 (e.g., the second read request) at theaccess device 130 may be reduced as compared to restarting the read operation 158 (independently of the context information 155) responsive to theresume condition 162. - Although receipt of the read request 121 (e.g., the second read request) is described as an example of the
resume condition 162, in other implementations, receipt of the read request 121 (e.g., the second read request) instead indicates that the readoperation 158 is to be restarted. Receipt of the resume command 123 may correspond to theresume condition 162. For example, thedata recovery engine 116 may initiate (e.g., restart) theread operation 158 independently of thecontext information 155 in response to receiving the read request 121 (e.g., the second read request). In contrast, thedata recovery engine 116 may resume theread operation 158 based on thecontext information 155 in response to receipt of the resume command 123. - Referring to
FIG. 2 , a diagram illustrates an example of operations generally designated 200. One or more of theoperations 200 may be performed by theaccess device 130 or the device 103 (e.g., a data storage device) ofFIG. 1 . - The
operations 200 include a host read, at 202. For example, theaccess device 130 ofFIG. 1 may send the readrequest 121 to thedevice 103. The readrequest 121 may indicate an address of a memory location. - The
operations 200 also include reading and decoding, at 204. For example, thedata recovery engine 116 ofFIG. 1 may send one or more sense commands (e.g., the sense command 128) to thememory device 104 in response to receiving the readrequest 121 fromaccess device 130. Thesense command 128 may indicate the address of the memory location (e.g., the address of the data 108). Thememory circuitry 110 may, in response to receiving the one or more sense commands, generate thesense data 134 by performing one or more sense operations at memory location. Thememory device 104 may provide thesense data 134 to thecontroller 102. - The
operations 200 further include detecting a correctable error and setting a do-not-retry parameter to 0, at 206. For example, thedata recovery engine 116 ofFIG. 1 may perform thefirst decode operation 151 based on thesense data 134, as described with reference toFIG. 1 . Thedata recovery engine 116 may determine that thefirst decode operation 151 failed and that the readoperation 158 is not finished, as described with reference toFIG. 1 . For example, thedata recovery engine 116 may determine that the readoperation 158 is not finished in response to determining that thedecode operations 150 include thesecond decode operation 152 that is to be performed subsequent to failure of thefirst decode operation 151. Thedata recovery engine 116 may, in response to determining that the readoperation 158 is not finished, determine that recovery may be possible even though a decoding error was encountered in the read operation 158 (e.g., performing the first decode operation 151). For example, thedata recovery engine 116 may determine that thesecond decode operation 152 remains to be performed to recover from the failure of thefirst decode operation 151. - The
data recovery engine 116 may provide theuncorrected data indication 135 to theaccess device 130 in response to determining that thefirst decode operation 151 failed and that the readoperation 158 is not finished. Theuncorrected data indication 135 may indicate that a do-not-retry (DNR) parameter has a first value (e.g., 0 or false). The first value of the DNR parameter may indicate that the readoperation 158 is not finished and that a retry (or resume) of the readoperation 158 may be successful. Theuncorrected data indication 135 may indicate that at least one of the decode operations 150 (e.g., the first decode operation 151) has failed and that thedecode operations 150 include at least one decode operation (e.g., the second decode operation 152) that remains to be performed. - The
operations 200 may also include continuing the read operation, at 208. For example, thedata recovery engine 116 ofFIG. 1 may continue the readoperation 158 subsequent to detecting that thefirst decode operation 151 failed and providing theuncorrected data indication 135 to theaccess device 130. To illustrate, thedata recovery engine 116 may continue the readoperation 158 by performing thesecond decode operation 152. In a particular aspect, thedata recovery engine 116 updates thepriority 157 to indicate that the readoperation 158 has a second priority (e.g., a background priority) subsequent to detecting that thefirst decode operation 151 failed, providing theuncorrected data indication 135 to theaccess device 130, or both. - The
operations 200 may further include host attempt to read data from other source, at 210. For example, theaccess device 130 ofFIG. 1 may, in response to receiving theuncorrected data indication 135, determine whether the data to be read by the readoperation 158 is also available from another data storage device. Theaccess device 130 may perform one or more operations that have higher priority at theaccess device 130 than a priority associated with the readoperation 158 at theaccess device 130. - The
operations 200 also include read retry, at 212. For example, theaccess device 130 ofFIG. 1 may send the read request 121 (e.g., a second read request) or the resume command 123 to thedevice 103 indicating the address of the memory location. For example, theaccess device 130 may send the read request 121 (or the resume command 123) to thedevice 103 in response to determining that the data to be read by the readoperation 158 is not available from another data storage device. In a particular aspect, theaccess device 130 may send the read request 121 (or the resume command 123) to thedevice 103 based at least in part on determining that a particular (e.g., highest) priority is associated with the readoperation 158 at theaccess device 130 among operations to be performed by theaccess device 130. Theoperations 200 proceed to 208, where thedata recovery engine 116 ofFIG. 1 may continue the readoperation 158 in response to receiving the read request 121 (e.g., the second read request) or the resume command 123. In a particular aspect, thedata recovery engine 116, in response to receiving the read request 121 (or the resume command 123), updates thepriority 157 to indicate that the readoperation 158 has a first priority (e.g., an active priority). - The
operations 200 may further include a read abort, at 214. For example, theaccess device 130 ofFIG. 1 may send theabort command 111 to thedevice 103. In a particular aspect, theaccess device 130 sends theabort command 111 to thedevice 103 in response to determining that one or more higher priority operations are to be performed at theaccess device 130. - The
operations 200 may also include aborting read and saving context, at 216. For example, thedata recovery engine 116 ofFIG. 1 may suspend the readoperation 158 in response to receiving theabort command 111 and may store thecontext information 155 in thecontroller memory 124, as described with reference toFIG. 1 . - The
operations 200 may further include read resume, at 218. For example, theaccess device 130 may send the resume command 123 (or the read request 121) to thedevice 103 subsequent to sending theabort command 111. In a particular aspect, theaccess device 130 sends the resume command 123 (or the read request 121) to thedevice 103 in response to determining that the readoperation 158 is associated with a particular priority (e.g., a highest priority) among operations to be performed at theaccess device 130. - The
operations 200 may also include resuming read based on saved context, at 220. For example, thedata recovery engine 116 ofFIG. 1 may, in response to detecting the resume condition 162 (e.g., receiving the resume command 123 or the read request 121), resume theread operation 158 based on thecontext information 155, as described with reference toFIG. 1 . - The
operations 200 may further include determining successful read or read failure, at 222. For example, thedata recovery engine 116 ofFIG. 1 may determine whether the readoperation 158 has completed successfully or completed unsuccessfully, as described with reference toFIG. 1 . Thedata recovery engine 116 may provide the correcteddata 154 to theaccess device 130 in response to determining that the readoperation 158 has completed successfully. Alternatively, thedata recovery engine 116 may provide theuncorrected data 153, an indication that the readoperation 158 failed, or both, to theaccess device 130 in response to determining that the readoperation 158 completed unsuccessfully. - The
operations 200 may thus enable thedevice 103 to perform the readoperation 158 in the background in response to determining that thefirst decode operation 151 failed, to perform the readoperation 158 based on thecontext information 155 in response to detecting theresume condition 162, or both. Continuing the readoperation 158 in the background, resuming theread operation 158 based on thecontext information 155, or both, may save time as compared to restarting theread operation 158. - Referring to
FIG. 3 , a diagram of an illustrative example of decode stages 350 is shown. Thedata recovery engine 116 may be configured to perform the decode stages 350. - The decode stages 350 may include a
decode stage 352, adecode stage 354, adecode stage 356, adecode stage 358, one or more additional decode stages, or a combination thereof. The decode stages 350 may correspond to successive decode stages of thedata recovery engine 116. For example, thedata recovery engine 116 may be configured to perform a subsequent stage of the decode stages 350 in response to determining that a prior stage of the decode stages 350 failed. - One or more of the decode stages 350 may correspond to one or more operation modes of the same decoder. To illustrate, the
decode stage 352 may correspond to a first decode mode (e.g., a lower-power operation mode) of the decoder of theECC engine 114. Thedecode stage 354 may correspond to a second decode mode (e.g., a full-power operation mode) of the decoder of theECC engine 114. - The decode stages 350 may correspond to one or more decoders of the
controller 102. For example, thedecode stage 356 may correspond to a decoder or dedicated circuitry of thecontroller 102 that is configured to perform heroics (e.g., dynamic reads). Thedecode stage 358 may correspond to another decoder (e.g., a RAID decoder) of thecontroller 102. - In a particular aspect, the
data recovery engine 116 may be configured to generate thecontext information 155 based on the decode stage associated with thefirst decode operation 151. For example, thecontext information 155 may correspond tocontext information 302 when thefirst decode operation 151 is associated with the first decode mode (e.g., a lower-power operation mode) of the decoder of theECC engine 114. Thecontext information 155 may correspond tocontext information 304 when thefirst decode operation 151 is associated with the second decode mode (e.g., a full-power operation mode) of the decoder of theECC engine 114. Thecontext information 155 may correspond tocontext information 306 when thefirst decode operation 151 is associated with thedecode stage 356. Thecontext information 155 may correspond tocontext information 308 when thefirst decode operation 151 is associated with thedecode stage 358. - The
data recovery engine 116 may be configured to resume theread operation 158 in response to detecting theresume condition 162, as described with reference toFIG. 1 . For example, thedata recovery engine 116 may resume theread operation 158 by resuming thefirst decode operation 151 based on thecontext information 155, as described with reference toFIG. 1 . As another example, thedata recovery engine 116 may resume theread operation 158 by initiating thesecond decode operation 152 based on thecontext information 155, as described with reference toFIG. 1 . In some aspects, thefirst decode operation 151 may be associated with a decoder (e.g., the decoder of the ECC engine 114) that is the same as a decoder associated with thesecond decode operation 152. In alternative aspects, thefirst decode operation 151 may be associated with a first decoder (e.g., the decoder of the ECC engine 114) that is distinct from a second decoder (e.g., the RAID decoder) associated with thesecond decode operation 152. - Resuming the
read operation 158 based on thecontext information 155 in response to detecting theresume condition 162 may save time as compared to restarting theread operation 158 at thedecode stage 352 independently of thecontext information 155. Reduced read latency at theaccess device 130 may be associated with resuming theread operation 158 as compared to restarting theread operation 158. - Although
FIG. 3 depicts four stages, in other implementations the decode stages 350 may include fewer than or more than four stages. For example, one or more of the decode stages 350 may be omitted. As another example, one or more additional stages may be added to the decode stages 350. The one or more additional stages may include one or more ECC decoding stages or one or more additional heroics stages, as illustrative non-limiting examples. - Referring to
FIG. 4 , a diagram is shown and generally designated 400. The diagram 400 includes ladder 402, 404, 406, and 408. One or more of the operations 402-408 may be performed by thediagrams illustrating operations access device 130 or the device 103 (e.g., a data storage device) ofFIG. 1 . - The
operations 402 include sending the readrequest 121 from theaccess device 130 to thedevice 103. Thedata recovery engine 116 ofFIG. 1 may initiate the readoperation 158 in response to receiving the readrequest 121, as described with reference toFIG. 1 . For example, thedata recovery engine 116 may initiate thefirst decode operation 151 in response to receiving the readrequest 121. - The
operations 402 may also include sending theabort command 111 from theaccess device 130 to thedevice 103. Thedata recovery engine 116 ofFIG. 1 may generate (or update) thecontext information 155 in response to receiving theabort command 111, as described with reference toFIG. 1 . Thedata recovery engine 116 may store thecontext information 155 in thecontroller memory 124 ofFIG. 1 . - The
operations 402 may further include sending the read request 121 (e.g., a second read request) from theaccess device 130 to thedevice 103. Thedata recovery engine 116 ofFIG. 1 may, in response to receiving the read request 121 (e.g., the second read request) resume theread operation 158 based on thecontext information 155, as described with reference toFIG. 1 . - The
operations 402 may also include sending the correcteddata 132 from thedevice 103 to theaccess device 130, as described with reference toFIG. 1 . Theoperations 402 may thus enable resuming theread operation 158 based on thecontext information 155 subsequent to receiving theabort command 111. - The
operations 404 differ from theoperations 402 in that the suspend command 122 (as compared to the abort command 111) may be sent subsequent to sending the readrequest 121 from theaccess device 130 to thedevice 103. Thedata recovery engine 116 may generate (or update) thecontext information 155 in response to receiving the suspend command 122, as described with reference toFIG. 1 . Theaccess device 130 may send the read request 121 (e.g., a second read request) to thedevice 103. Thedata recovery engine 116 may, in response to receiving the read request 121 (e.g., the second read request) resume theread operation 158 based on thecontext information 155, as described with reference toFIG. 1 . Theoperations 404 may thus enable resuming theread operation 158 based on thecontext information 155 subsequent to receiving the suspend command 122. - The
operations 406 include sending the readrequest 121 from theaccess device 130 to thedevice 103. Thedata recovery engine 116 may initiate the readoperation 158 in response to receiving the readrequest 121, as described with reference toFIG. 1 . For example, thedata recovery engine 116 may initiate thefirst decode operation 151 in response to receiving the readrequest 121. - The
operations 406 may also include generating (or updating) thecontext information 155. For example, thedata recovery engine 116 may generate (or update) thecontext information 155 in response to determining that thefirst decode operation 151 failed, as described with reference toFIG. 1 . - The
operations 406 may further include sending theuncorrected data 153 from thedevice 103 to theaccess device 130. For example, thedata recovery engine 116 may send theuncorrected data 153 to theaccess device 130 in response to determining that thefirst decode operation 151 failed, as described with reference toFIG. 1 . - The
operations 406 may also include sending the read request 121 (e.g., a second read request) from theaccess device 130 to thedevice 103. For example, theaccess device 130 may send the readrequest 121 to thedevice 103 subsequent to receiving theuncorrected data 153. In a particular aspect, theaccess device 130 may determine whether to send the read request 121 (e.g., the second read request) based on theuncorrected data 153. For example, theaccess device 130 may send the read request 121 (e.g., the second read request) in response to determining that a number of errors associated with theuncorrected data 153 exceeds an error tolerance threshold of theaccess device 130. The readrequest 121 may indicate a request for a corrected version of theuncorrected data 153. - The
operations 406 may further include resuming theread operation 158 based on thecontext information 155. For example, thedata recovery engine 116 ofFIG. 1 may, in response to receiving the read request 121 (e.g., the second read request), initiate thesecond decode operation 152 based on thecontext information 155. - The
operations 406 may also include sending the correcteddata 154 from thedevice 103 to theaccess device 130. For example, thedata recovery engine 116 ofFIG. 1 may send the corrected data 54 to theaccess device 130, as described with reference toFIG. 1 . Theoperations 406 may thus enable sending theuncorrected data 153 to theaccess device 130 in response to determining that thefirst decode operation 151 failed. - The
operations 408 differ from theoperations 406 in that thecontext information 155 is sent in addition to theuncorrected data 153 from thedevice 103 to theaccess device 130 and that thecontext information 155 and theuncorrected data 153 are sent in addition to the read request 121 (e.g., a second read request) from theaccess device 130 to thedevice 103. For example, thedata recovery engine 116 ofFIG. 1 may send thecontext information 155 and theuncorrected data 153 to theaccess device 130 in response to determining that thefirst decode operation 151 failed, as described with reference toFIG. 1 . Theaccess device 130 may send thecontext information 155, theuncorrected data 153, and the read request 121 (e.g., the second read request) to thedevice 103. Thedata recovery engine 116 may, in response to receiving the read request 121 (e.g., the second read request), resume theread operation 158 based on thecontext information 155 and theuncorrected data 153 received from theaccess device 130. Thedata recovery engine 116 may provide the correcteddata 154 to theaccess device 130. Theoperations 408 may thus enable resuming theread operation 158 based on thecontext information 155 and theuncorrected data 153 received from theaccess device 130. - Referring to
FIG. 5 , a method of operation is shown and generally designated 500. Themethod 500 may be performed by at least one of theaccess device 130 or thesystem 100 ofFIG. 1 . - The
method 500 includes sending a command to suspend a read operation to a data storage device, at 502. For example, theaccess device 130 ofFIG. 1 may send the suspend command 122 (or the abort command 111) to suspend the readoperation 158 to the device 103 (e.g., a data storage device), as described with reference toFIG. 1 . - The
method 500 also includes storing context information corresponding to the read operation, at 504. For example, theaccess device 130 ofFIG. 1 may store thecontext information 155 received from thedevice 103 responsive to sending the suspend command 122 (or the abort command 111), as described with reference toFIG. 1 . Thecontext information 155 may correspond to the readoperation 158, as described with reference toFIG. 1 . - The
method 500 may enable theaccess device 130 to store thecontext information 155 subsequent to sending the suspend command 122 (or the abort command 111) to suspend the readoperation 158. Theaccess device 130 may subsequently send thecontext information 155 to thedevice 103 to enable thedevice 103 to resume theread operation 158 based on thecontext information 155. - Memory systems suitable for use in implementing aspects of the disclosure are shown in
FIGS. 6A-6C .FIG. 6A is a block diagram illustrating a non-volatile memory system according to an example of the subject matter described herein. Referring toFIG. 6A , anon-volatile memory system 600 includes acontroller 602 and non-volatile memory (e.g., thenon-volatile memory 106 ofFIG. 1 ) that may be made up of one or more non-volatile memory die 604. As used herein, the term “memory die” refers to the collection of non-volatile memory cells, and associated circuitry for managing the physical operation of those non-volatile memory cells, that are formed on a single semiconductor substrate. Thecontroller 602 may correspond to thecontroller 102 ofFIG. 1 .Controller 602 interfaces with a host system (e.g., theaccess device 130 ofFIG. 1 ) and transmits command sequences for read, program, and erase operations to non-volatile memory die 604. Thecontroller 602 may include thedata recovery engine 116 ofFIG. 1 . - The controller 602 (which may be a flash memory controller) can take the form of processing circuitry, a microprocessor or processor, and a computer-readable medium that stores computer-readable program code (e.g., firmware) executable by the (micro)processor, logic gates, switches, an application specific integrated circuit (ASIC), a programmable logic controller, and an embedded microcontroller, for example. The
controller 602 can be configured with hardware and/or firmware to perform the various functions described below and shown in the flow diagrams. Also, some of the components shown as being internal to the controller can be stored external to the controller, and other components can be used. Additionally, the phrase “operatively in communication with” could mean directly in communication with or indirectly (wired or wireless) in communication with through one or more components, which may or may not be shown or described herein. - As used herein, a flash memory controller is a device that manages data stored on flash memory and communicates with a host, such as a computer or electronic device. A flash memory controller can have various functionality in addition to the specific functionality described herein. For example, the flash memory controller can format the flash memory, map out bad flash memory cells, and allocate spare cells to be substituted for future failed cells. Some part of the spare cells can be used to hold firmware to operate the flash memory controller and implement other features. In operation, when a host is to read data from or write data to the flash memory, the host communicates with the flash memory controller. If the host provides a logical address to which data is to be read/written, the flash memory controller can convert the logical address received from the host to a physical address in the flash memory. (Alternatively, the host can provide the physical address.) The flash memory controller can also perform various memory management functions, such as, but not limited to, wear leveling (distributing writes to avoid wearing out specific blocks of memory that would otherwise be repeatedly written to) and garbage collection (after a block is full, moving only the valid pages of data to a new block, so the full block can be erased and reused).
- Non-volatile memory die 604 may include any suitable non-volatile storage medium, including NAND flash memory cells and/or NOR flash memory cells. The memory cells can take the form of solid-state (e.g., flash) memory cells and can be one-time programmable, few-time programmable, or many-time programmable. The memory cells can also be single-level cells (SLC), multiple-level cells (MLC), triple-level cells (TLC), or use other memory cell level technologies, now known or later developed. Also, the memory cells can be fabricated in a two-dimensional or three-dimensional fashion.
- The interface between
controller 602 and non-volatile memory die 604 may be any suitable flash interface, such as 200, 400, or 800. In one embodiment,Toggle Mode non-volatile memory system 600 may be a card based system, such as a secure digital (SD) or a micro secure digital (micro-SD) card. In an alternate embodiment,memory system 600 may be part of an embedded memory system. - Although, in the example illustrated in
FIG. 6A , non-volatile memory system 600 (sometimes referred to herein as a storage module) includes a single channel betweencontroller 602 and non-volatile memory die 604, the subject matter described herein is not limited to having a single memory channel. For example, in some NAND memory system architectures (such as the ones shown inFIGS. 6B and 6C ), 2, 4, 8 or more NAND channels may exist between the controller and the NAND memory device, depending on controller capabilities. In any of the embodiments described herein, more than a single channel may exist between thecontroller 602 and the non-volatile memory die 604, even if a single channel is shown in the drawings. -
FIG. 6B illustrates astorage module 700 that includes pluralnon-volatile memory systems 600. As such,storage module 700 may include astorage controller 702 that interfaces with a host and withstorage system 704, which includes a plurality ofnon-volatile memory systems 600. The interface betweenstorage controller 702 andnon-volatile memory systems 600 may be a bus interface, such as a serial advanced technology attachment (SATA) or peripheral component interface express (PCIe) interface.Storage module 700, in one embodiment, may be a solid state drive (SSD), such as found in portable computing devices, such as laptop computers, and tablet computers. Eachcontroller 602 ofFIG. 6B may include a data recovery engine corresponding to thedata recovery engine 116. Alternatively or in addition, thestorage controller 702 may include a data recovery engine corresponding to thedata recovery engine 116. -
FIG. 6C is a block diagram illustrating a hierarchical storage system. Ahierarchical storage system 750 includes a plurality ofstorage controllers 702, each of which controls arespective storage system 704.Host systems 752 may access memories within thehierarchical storage system 750 via a bus interface. In one embodiment, the bus interface may be a Non-Volatile Memory Express (NVMe) or fiber channel over Ethernet (FCoE) interface. In one embodiment, thehierarchical storage system 750 illustrated inFIG. 6C may be a rack mountable mass storage system that is accessible by multiple host computers, such as would be found in a data center or other location where mass storage is needed. Eachstorage controller 702 ofFIG. 6C may include a data recovery engine corresponding to thedata recovery engine 116. -
FIG. 7A is a block diagram illustrating exemplary components of thecontroller 602 in more detail. Thecontroller 602 includes afront end module 608 that interfaces with a host, aback end module 610 that interfaces with the one or more non-volatile memory die 604, and various other modules that perform other functions. A module may take the form of a packaged functional hardware unit designed for use with other components, a portion of a program code (e.g., software or firmware) executable by a (micro)processor or processing circuitry that usually performs a particular function of related functions, or a self-contained hardware or software component that interfaces with a larger system, for example. - Referring again to modules of the
controller 602, a buffer manager/bus controller 614 manages buffers in random access memory (RAM) 616 and controls the internal bus arbitration of thecontroller 602. A read only memory (ROM) 618 stores system boot code. Although illustrated inFIG. 7A as located within thecontroller 602, in other embodiments one or both of theRAM 616 and theROM 618 may be located externally to thecontroller 602. In yet other embodiments, portions of RAM and ROM may be located both within thecontroller 602 and outside thecontroller 602. -
Front end module 608 includes ahost interface 620 and a physical layer interface (PHY) 622 that provide the electrical interface with the host or next level storage controller. The choice of the type ofhost interface 620 can depend on the type of memory being used. Examples ofhost interfaces 620 include, but are not limited to, SATA, SATA Express, Serial Attached Small Computer System Interface (SAS), Fibre Channel, USB, PCIe, and NVMe. Thehost interface 620 typically facilitates transfer for data, control signals, and timing signals. -
Back end module 610 includes an error correction code (ECC)engine 624 that encodes the data received from the host, and decodes and error corrects the data read from the non-volatile memory. Acommand sequencer 626 generates command sequences, such as program and erase command sequences, to be transmitted to non-volatile memory die 604. A RAID (Redundant Array of Independent Drives)module 628 manages generation of RAID parity and recovery of failed data. The RAID parity may be used as an additional level of integrity protection for the data being written into the non-volatile memory die 604. In some cases, theRAID module 628 may be a part of theECC engine 624. Amemory interface 630 provides the command sequences to non-volatile memory die 604 and receives status information from non-volatile memory die 604. For example, thememory interface 630 may be a double data rate (DDR) interface, such as a 200, 400, or 800 interface. AToggle Mode flash control layer 632 controls the overall operation ofback end module 610. Theback end module 610 may also include thedata recovery engine 116. - Additional components of
system 600 illustrated inFIG. 7A include a power management module 612 and amedia management layer 638, which performs wear leveling of memory cells of non-volatile memory die 604.System 600 also includes otherdiscrete components 640, such as external electrical interfaces, external RAM, resistors, capacitors, or other components that may interface withcontroller 602. In alternative embodiments, one or more of thephysical layer interface 622,RAID module 628,media management layer 638 and buffer management/bus controller 614 are optional components that are omitted from thecontroller 602. -
FIG. 7B is a block diagram illustrating exemplary components of non-volatile memory die 604 in more detail. Non-volatile memory die 604 includesperipheral circuitry 641 andnon-volatile memory array 642.Non-volatile memory array 642 includes the non-volatile memory cells used to store data. The non-volatile memory cells may be any suitable non-volatile memory cells, including NAND flash memory cells and/or NOR flash memory cells in a two dimensional and/or three dimensional configuration.Peripheral circuitry 641 includes astate machine 652 that provides status information tocontroller 602, which may include thedata recovery engine 116. Theperipheral circuitry 641 may also include a power management or datalatch control module 654. Non-volatile memory die 604 further includesdiscrete components 640, anaddress decoder 648, anaddress decoder 650, and adata cache 656 that caches data. - Although various components depicted herein are illustrated as block components and described in general terms, such components may include one or more microprocessors, state machines, or other circuits configured to enable the
data recovery engine 116 to initiate the readoperation 158, suspend the readoperation 158, store thecontext information 155, resume theread operation 158, or a combination thereof, as described above with reference toFIGS. 1-7B . For example, thedata recovery engine 116 may represent physical components, such as hardware controllers, state machines, logic circuits, or other structures, to start theread operation 158, suspend the readoperation 158, store thecontext information 155, provide thecontext information 155 to theaccess device 130, receive thecontext information 155 from theaccess device 130, resume theread operation 158 based on thecontext information 155, or a combination thereof. Thedata recovery engine 116 may be implemented using a microprocessor or microcontroller programmed to initiate the readoperation 158, suspend the readoperation 158, store thecontext information 155, resume theread operation 158, or a combination thereof. - In a particular embodiment, the
device 103 may be implemented in a portable device configured to be selectively coupled to one or more external devices. However, in other embodiments, thedevice 103 may be attached or embedded within one or more host devices, such as within a housing of a host communication device. For example, thedevice 103 may be within a packaged apparatus such as a wireless telephone, a personal digital assistant (PDA), a gaming device or console, a portable navigation device, or other device that uses internal non-volatile memory. In a particular embodiment, thedevice 103 may include a non-volatile memory, such as a three-dimensional (3D) memory, a flash memory (e.g., NAND, NOR, Multi-Level Cell (MLC), a Divided bit-line NOR (DINOR) memory, an AND memory, a high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), or other flash memories), an erasable programmable read-only memory (EPROM), an electrically-erasable programmable read-only memory (EEPROM), a read-only memory (ROM), a one-time programmable memory (OTP), or any other type of memory. - The illustrations of the embodiments described herein are intended to provide a general understanding of the various embodiments. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments.
- The above-disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments, which fall within the scope of the present disclosure. Thus, to the maximum extent allowed by law, the scope of the present disclosure is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.
Claims (22)
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/223,595 US9898229B1 (en) | 2016-07-29 | 2016-07-29 | Systems and methods of memory reads |
| PCT/US2017/035115 WO2018022188A1 (en) | 2016-07-29 | 2017-05-31 | Systems and methods of memory reads |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/223,595 US9898229B1 (en) | 2016-07-29 | 2016-07-29 | Systems and methods of memory reads |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20180032282A1 true US20180032282A1 (en) | 2018-02-01 |
| US9898229B1 US9898229B1 (en) | 2018-02-20 |
Family
ID=59054259
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/223,595 Active US9898229B1 (en) | 2016-07-29 | 2016-07-29 | Systems and methods of memory reads |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US9898229B1 (en) |
| WO (1) | WO2018022188A1 (en) |
Cited By (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190310795A1 (en) * | 2018-04-09 | 2019-10-10 | Western Digital Technologies, Inc. | Suspending and resuming a read operation for a non-volatile memory |
| US20210149712A1 (en) * | 2017-08-02 | 2021-05-20 | Felica Networks, Inc. | Information processing apparatus and method for processing information |
| US11145372B2 (en) * | 2019-01-07 | 2021-10-12 | Phison Electronics Corp. | Decoding method, memory controlling circuit unit, and memory storage device |
| CN114429777A (en) * | 2020-10-29 | 2022-05-03 | 美光科技公司 | Program operation execution during program operation suspension |
| US11327839B2 (en) * | 2020-04-06 | 2022-05-10 | SK Hynix Inc. | Storage device and method of operating the same |
| US11416334B2 (en) * | 2019-05-24 | 2022-08-16 | Texas Instmments Incorporated | Handling non-correctable errors |
| WO2022231681A1 (en) * | 2021-04-27 | 2022-11-03 | Microchip Technology Inc. | System and method for double data rate (ddr) chip-kill recovery |
| US20220382486A1 (en) * | 2021-06-01 | 2022-12-01 | SK Hynix Inc. | Storage device and operating method thereof |
| KR20230068683A (en) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | Test method of suspend operation |
| US11663076B2 (en) | 2021-06-01 | 2023-05-30 | Microchip Technology Inc. | Memory address protection |
| EP4220374A1 (en) * | 2022-01-28 | 2023-08-02 | Samsung Electronics Co., Ltd. | Storage device and operating method of storage device |
| US11797421B2 (en) * | 2019-03-12 | 2023-10-24 | Rohm Co., Ltd. | Semiconductor apparatus and debug system |
| CN117157629A (en) * | 2021-04-27 | 2023-12-01 | 微芯片技术股份有限公司 | System and method for Double Data Rate (DDR) chip delete recovery |
| US11843393B2 (en) | 2021-09-28 | 2023-12-12 | Microchip Technology Inc. | Method and apparatus for decoding with trapped-block management |
| US12014068B2 (en) | 2021-04-27 | 2024-06-18 | Microchip Technology Inc. | System and method for double data rate (DDR) chip-kill recovery |
| US12436706B2 (en) | 2022-01-28 | 2025-10-07 | Samsung Electronics Co., Ltd. | Storage device and operating method of storage device |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102679649B1 (en) * | 2018-11-30 | 2024-07-01 | 에스케이하이닉스 주식회사 | Memory system |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150248250A1 (en) * | 2014-02-28 | 2015-09-03 | Samsung Electronics Co., Ltd. | Method of operating data storage device |
| US9274886B2 (en) * | 2013-07-09 | 2016-03-01 | SK Hynix Inc. | Data storage device having a reduced error occurrence, operating method thereof, and data processing system including the same |
| US9304855B2 (en) * | 2013-10-18 | 2016-04-05 | SK Hynix Inc. | Data storage device |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6189070B1 (en) | 1997-08-28 | 2001-02-13 | Intel Corporation | Apparatus and method for suspending operation to read code in a nonvolatile writable semiconductor memory |
| US7062616B2 (en) | 2001-06-12 | 2006-06-13 | Intel Corporation | Implementing a dual partition flash with suspend/resume capabilities |
| US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
| KR100673027B1 (en) | 2006-01-31 | 2007-01-24 | 삼성전자주식회사 | Nonvolatile Memory Device Can Compensate for Reduced Read Margins Due to High Temperature Stress |
| JP4660612B2 (en) | 2009-07-09 | 2011-03-30 | 株式会社東芝 | Information reproducing apparatus and information reproducing method |
| US8751802B2 (en) | 2010-06-30 | 2014-06-10 | Sandisk Il Ltd. | Storage device and method and for storage device state recovery |
| US20120167100A1 (en) | 2010-12-23 | 2012-06-28 | Yan Li | Manual suspend and resume for non-volatile memory |
| KR20160071951A (en) | 2014-12-12 | 2016-06-22 | 에스케이하이닉스 주식회사 | Semiconductor device and operating method thereof |
-
2016
- 2016-07-29 US US15/223,595 patent/US9898229B1/en active Active
-
2017
- 2017-05-31 WO PCT/US2017/035115 patent/WO2018022188A1/en not_active Ceased
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9274886B2 (en) * | 2013-07-09 | 2016-03-01 | SK Hynix Inc. | Data storage device having a reduced error occurrence, operating method thereof, and data processing system including the same |
| US9304855B2 (en) * | 2013-10-18 | 2016-04-05 | SK Hynix Inc. | Data storage device |
| US20150248250A1 (en) * | 2014-02-28 | 2015-09-03 | Samsung Electronics Co., Ltd. | Method of operating data storage device |
Cited By (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210149712A1 (en) * | 2017-08-02 | 2021-05-20 | Felica Networks, Inc. | Information processing apparatus and method for processing information |
| US11625267B2 (en) * | 2017-08-02 | 2023-04-11 | Felica Networks, Inc. | Information processing apparatus and information processing method for changing contents of a process to be performed after an interrupt is detected |
| US10922013B2 (en) * | 2018-04-09 | 2021-02-16 | Western Digital Technologies, Inc. | Suspending and resuming a read operation for a non-volatile memory |
| US20190310795A1 (en) * | 2018-04-09 | 2019-10-10 | Western Digital Technologies, Inc. | Suspending and resuming a read operation for a non-volatile memory |
| US11145372B2 (en) * | 2019-01-07 | 2021-10-12 | Phison Electronics Corp. | Decoding method, memory controlling circuit unit, and memory storage device |
| US11797421B2 (en) * | 2019-03-12 | 2023-10-24 | Rohm Co., Ltd. | Semiconductor apparatus and debug system |
| US11416334B2 (en) * | 2019-05-24 | 2022-08-16 | Texas Instmments Incorporated | Handling non-correctable errors |
| US12572416B2 (en) | 2019-05-24 | 2026-03-10 | Texas Instruments Incorporated | Error correcting codes for multi-master memory controller |
| US12373286B2 (en) | 2019-05-24 | 2025-07-29 | Texas Instruments Incorporated | Handling non-correctable errors |
| US12019514B2 (en) | 2019-05-24 | 2024-06-25 | Texas Instruments Incorporated | Handling non-correctable errors |
| US11327839B2 (en) * | 2020-04-06 | 2022-05-10 | SK Hynix Inc. | Storage device and method of operating the same |
| CN114429777A (en) * | 2020-10-29 | 2022-05-03 | 美光科技公司 | Program operation execution during program operation suspension |
| CN117157629A (en) * | 2021-04-27 | 2023-12-01 | 微芯片技术股份有限公司 | System and method for Double Data Rate (DDR) chip delete recovery |
| US12014068B2 (en) | 2021-04-27 | 2024-06-18 | Microchip Technology Inc. | System and method for double data rate (DDR) chip-kill recovery |
| WO2022231681A1 (en) * | 2021-04-27 | 2022-11-03 | Microchip Technology Inc. | System and method for double data rate (ddr) chip-kill recovery |
| US11669280B2 (en) * | 2021-06-01 | 2023-06-06 | SK Hynix Inc. | Storage device and operating method thereof |
| US11663076B2 (en) | 2021-06-01 | 2023-05-30 | Microchip Technology Inc. | Memory address protection |
| US20220382486A1 (en) * | 2021-06-01 | 2022-12-01 | SK Hynix Inc. | Storage device and operating method thereof |
| US11843393B2 (en) | 2021-09-28 | 2023-12-12 | Microchip Technology Inc. | Method and apparatus for decoding with trapped-block management |
| KR20230068683A (en) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | Test method of suspend operation |
| KR102944768B1 (en) | 2021-11-11 | 2026-03-30 | 삼성전자주식회사 | Test method of suspend operation |
| EP4220374A1 (en) * | 2022-01-28 | 2023-08-02 | Samsung Electronics Co., Ltd. | Storage device and operating method of storage device |
| US12436706B2 (en) | 2022-01-28 | 2025-10-07 | Samsung Electronics Co., Ltd. | Storage device and operating method of storage device |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2018022188A1 (en) | 2018-02-01 |
| US9898229B1 (en) | 2018-02-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9898229B1 (en) | Systems and methods of memory reads | |
| US11854596B2 (en) | Data storage device and operating method thereof | |
| US10019174B2 (en) | Read operation delay | |
| US10002042B2 (en) | Systems and methods of detecting errors during read operations and skipping word line portions | |
| US10567006B2 (en) | Data relocation | |
| US9734009B2 (en) | Data encoding techniques for a device | |
| US9927986B2 (en) | Data storage device with temperature sensor and temperature calibration circuitry and method of operating same | |
| US10055236B2 (en) | Runtime data storage and/or retrieval | |
| US20170322897A1 (en) | Systems and methods for processing a submission queue | |
| US10824523B2 (en) | Data storage device and operating method thereof | |
| US10446254B1 (en) | Method for maximizing power efficiency in memory interface block | |
| KR20190022987A (en) | Data storage device and operating method thereof | |
| US9812209B2 (en) | System and method for memory integrated circuit chip write abort indication | |
| US10466920B2 (en) | Method for maximizing frequency while checking data integrity on a physical interface bus | |
| CN111400082A (en) | Controller and method of operating a controller | |
| CN114341815A (en) | Performing error control operations on memory components for garbage collection | |
| US10198383B2 (en) | Systems and methods of adjusting an interface bus speed | |
| US11961559B2 (en) | Storage device and operating method of storage device | |
| US10379940B2 (en) | Pipeline delay detection during decoding by a data storage device | |
| US20170315943A1 (en) | Systems and methods for performing direct memory access (dma) operations | |
| US12223195B2 (en) | Memory controller and operating method thereof | |
| KR20150072485A (en) | Data storage device and operating method thereof | |
| CN114625309A (en) | Data storage device and method of operating the same |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HAHN, JUDAH GAMLIEL;VISHNE, GADI;LEHMANN, JOSHUA;AND OTHERS;REEL/FRAME:039292/0117 Effective date: 20160728 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SANDISK TECHNOLOGIES LLC;REEL/FRAME:069796/0423 Effective date: 20241227 |
|
| AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: PARTIAL RELEASE OF SECURITY INTERESTS;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS AGENT;REEL/FRAME:071382/0001 Effective date: 20250424 Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, ILLINOIS Free format text: SECURITY AGREEMENT;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:071050/0001 Effective date: 20250424 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |