US20140215175A1 - Efficient suspend-resume operation in memory devices - Google Patents
Efficient suspend-resume operation in memory devices Download PDFInfo
- Publication number
- US20140215175A1 US20140215175A1 US13/755,547 US201313755547A US2014215175A1 US 20140215175 A1 US20140215175 A1 US 20140215175A1 US 201313755547 A US201313755547 A US 201313755547A US 2014215175 A1 US2014215175 A1 US 2014215175A1
- Authority
- US
- United States
- Prior art keywords
- execution
- memory
- memory access
- command
- access operation
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
Definitions
- the present invention relates generally to data storage, and particularly to efficient suspension and resumption of data storage operation.
- erasure and programming commands have a long execution time during which the memory is busy.
- Other commands such as read commands, remain pending until the erasure or programming command is completed, and may therefore suffer long delays.
- Several techniques are known in the art for mitigating the long delay caused by such commands.
- a device manager receives an operation request for a memory device.
- the device manager suspends interrupts to be serviced and determines if there is sufficient time available to perform the requested operation. If there is sufficient time available and the device manager is in an exclusive mode, the state of the memory device is checked to determine if it is currently executing an operation. If so, this operation is suspended and the requested operation is issued to the memory device.
- the device manager polls the memory device to determine when the requested operation has been completed. Upon completion, the interrupts are re-enabled and control of the memory device is returned to the system.
- U.S. Pat. No. 7,110,301 whose disclosure is incorporated herein by reference, describes a non-volatile semiconductor memory device that includes memory blocks and an erase controller configured to control a multi-block erase operation where at least two of the memory blocks are simultaneously erased.
- the erase operation if a suspend command is received by the memory device while selected memory blocks are being erased, the erase operation ceases and another operation, such as a read operation, begins.
- the erase operation resumes.
- U.S. Pat. No. 5,805,501 whose disclosure is incorporated herein by reference, describes a Flash memory device that includes a multiple-checkpoint erase suspend algorithm.
- a user may issue an erase suspend command anytime during an erase process.
- the erase procedure is suspended as fast as possible by allowing the erase procedure to be suspended at the first to occur of a plurality of checkpoints in the process.
- U.S. Patent Application Publication 2012/0254515 describes a method for suspending an erase operation performed on a group of memory cells in a Flash memory circuit.
- One example method includes providing to the memory circuit a command to erase the group of memory cells via a plurality of erase pulses. After applying an erase pulse, if it is determined that another operation has a priority higher than a predetermined threshold, the method suspends the erase operation, performs the other operation, and then resumes the erase operation.
- An embodiment of the present invention that is described herein provides a method including executing a first memory access operation in a memory.
- a progress indication which is indicative of a progress of execution of the first memory access operation, is obtained from the memory. Based on the progress indication, a decision is made whether to suspend the execution of the first memory access operation in order to execute a second memory access operation.
- the first memory access operation includes a programming command or an erasure command
- the second memory command includes a read command.
- deciding whether to suspend the execution includes choosing, based on the progress indication, between suspending the execution, allowing the execution to complete and aborting the execution.
- deciding whether to suspend the execution includes estimating a first time at which the second memory access command will complete if the execution of the first memory access command is suspended, estimating a second time at which the second memory access command will complete if the execution of the first memory access command is not suspended, and choosing to suspend the execution only if the first time is earlier than the second time.
- deciding whether to suspend the execution includes choosing between suspending and completing the execution based on a time overhead incurred by suspension of the first memory access command.
- obtaining the progress indication includes reading the progress indication from a register of the memory that is accessible during the execution of the first memory access operation.
- executing the first memory access operation includes performing a sequence of programming or erasure iterations, and obtaining the progress indication includes obtaining a count of the programming or erasure iterations that have been performed.
- executing the first memory access operation includes performing a sequence of programming or erasure iterations, and obtaining the progress indication includes obtaining a count of memory cells whose programming or erasure has been completed.
- executing the first memory access operation includes erasing a region of the memory, and obtaining the progress indication includes obtaining a portion of the region whose erasure has been completed.
- deciding whether to suspend the execution includes estimating an expected length of the execution, and choosing whether to suspend the execution based on the estimated expected length.
- obtaining the progress indication includes reading from the memory a flag that is set to a first value when suspension of the execution will expedite completion of the second memory access command, and is set to a second value when the suspension of the execution will delay the completion of the second memory access command.
- apparatus including a memory and an interface.
- the interface is configured to communicate with a memory.
- the storage circuitry is configured to execute a first memory access operation in the memory, to obtain from the memory a progress indication that is indicative of a progress of execution of the first memory access operation, and, based on the progress indication, to decide whether to suspend the execution of the first memory access operation in order to execute a second memory access operation.
- apparatus including a memory and storage circuitry.
- the storage circuitry is configured to execute a first memory access operation in the memory, to obtain from the memory a progress indication that is indicative of a progress of execution of the first memory access operation, and, based on the progress indication, to decide whether to suspend the execution of the first memory access operation in order to execute a second memory access operation.
- FIG. 1 is a block diagram that schematically illustrates a memory system, in accordance with an embodiment of the present invention
- FIG. 2 is a diagram that schematically illustrates execution time-lines in a memory system, in accordance with embodiments of the present invention.
- FIG. 3 is a flow chart that schematically illustrates a method for command execution in a memory, in accordance with an embodiment of the present invention.
- Embodiments of the present invention that are described herein provide improved methods and systems for executing memory access commands.
- a memory controller executes memory access commands such as read, program (write) and erase commands in a Flash memory.
- memory access commands such as read, program (write) and erase commands in a Flash memory.
- read commands are relatively short to execute, e.g., on the order of 40-50 ⁇ Sec (sense only, or on the order of 120 ⁇ Sec including data transfer time), whereas program and erase commands are considerably longer, e.g., on the order of 3-5mSec or even 5-10 mSec.
- the memory and the memory controller carry out a conditional suspend-resume scheme that is described in detail hereinbelow.
- the target performance to be optimized is the read command latency, possibly at the expense of the erase or program command latency. If the erase or program command is in its early stages of execution, it will usually be preferable to suspend it temporarily and execute the read command. In the very early stages of execution, it may even be preferable to abort the erase or program command altogether, and restart it after executing the read command. On the other hand, if the erase or program command is already near completion, it may be preferable to allow it to complete rather than suspend. The above trade-offs depend, for example, on the length of the erase or program command, the length of the read command, and the overhead associated with suspending and resuming the erase or program command.
- the memory controller when preparing to execute the read command, assesses the progress of the currently-executed erase or program command. Based on the assessed progress, the memory controller decides whether to suspend, abort or complete the erase or program command before executing the read command. In other embodiments aborting is not considered, and the memory controller chooses between suspending and completing the erase or program command.
- the memory provides a progress indication that is indicative of the execution progress of the erase or program command.
- the progress indication may indicate, for example, the remaining execution time or the portion of the command that has been executed so far.
- the memory controller obtains the progress indication and uses it in making the abort/suspend/complete decision.
- the progress indication may be provided, for example, in a status register that is accessible to the memory controller even when the memory is busy.
- the disclosed techniques enable the memory controller to minimize the latency of read commands, and to avoid unnecessary suspension and resumption of erase or program commands. Memory systems that use these techniques can thus achieve increased readout throughput and reduced latency. As a result, the overall system performance and user experience can be improved.
- FIG. 1 is a block diagram that schematically illustrates a memory system 20 , in accordance with an embodiment of the present invention.
- System 20 can be used in various host systems and devices, such as in computing devices, cellular phones or other communication terminals, removable memory modules (sometimes referred to as “USB Flash Drives”), Solid State Disks (SSD), digital cameras, music and other media players and/or any other system or device in which data is stored and retrieved.
- USB Flash Drives sometimes referred to as “USB Flash Drives”
- SSD Solid State Disks
- System 20 comprises a memory device 24 , which stores data in a memory cell array 28 .
- the memory array comprises multiple memory blocks 34 .
- Each memory block 34 comprises multiple analog memory cells 32 .
- analog memory cell is used to describe any memory cell that holds a continuous, analog value of a physical parameter, such as an electrical voltage or charge.
- Array 28 may comprise analog memory cells of any kind, such as, for example, NAND, NOR and Charge Trap Flash (CTF) Flash cells, phase change RAM (PRAM, also referred to as Phase Change Memory—PCM), Nitride Read Only Memory (NROM), Ferroelectric RAM (FRAM), magnetic RAM (MRAM) and/or Dynamic RAM (DRAM) cells.
- PCM phase change RAM
- NROM Nitride Read Only Memory
- FRAM Ferroelectric RAM
- MRAM magnetic RAM
- DRAM Dynamic RAM
- the charge levels stored in the cells and/or the analog voltages or currents written into and read out of the cells are referred to herein collectively as analog values, analog storage values or storage values.
- the storage values may comprise, for example, threshold voltages or any other suitable kind of storage values.
- System 20 stores data in the analog memory cells by programming the cells to assume respective programming states, which are also referred to as programming levels.
- the programming states are selected from a finite set of possible states, and each programming state corresponds to a certain nominal storage value. For example, a 3 bit/cell MLC can be programmed to assume one of eight possible programming states by writing one of eight possible nominal storage values into the cell.
- Memory device 24 comprises a reading/writing (R/W) unit 36 , which converts data for storage in the memory device to analog storage values and writes them into memory cells 32 .
- the R/W unit does not perform the conversion, but is provided with voltage samples, i.e., with the storage values for storage in the cells.
- R/W unit 36 converts the storage values of memory cells into digital samples having a resolution of one or more bits. Data is typically written to and read from the memory cells in groups that are referred to as pages.
- the R/W unit can erase a group of cells 32 by applying one or more negative erasure pulses to the cells. Erasure is typically performed in entire memory blocks.
- the storage and retrieval of data in and out of memory device 24 is performed by a memory controller 40 .
- the memory controller comprises an interface 44 for communicating with memory device 24 , and a processor 48 that carries out the various memory management functions.
- Memory controller 40 communicates with a host 52 , for accepting data for storage in the memory device and for outputting data retrieved from the memory device.
- Memory controller 40 , and in particular processor 48 may be implemented in hardware. Alternatively, the memory controller may comprise a microprocessor that runs suitable software, or a combination of hardware and software elements.
- FIG. 1 is an exemplary system configuration, which is shown purely for the sake of conceptual clarity. Any other suitable memory system configuration can also be used. Elements that are not necessary for understanding the principles of the present invention, such as various interfaces, addressing circuits, timing and sequencing circuits and debugging circuits, have been omitted from the figure for clarity.
- system 20 may comprise multiple memory devices that are controlled by memory controller 40 .
- memory device 24 and memory controller 40 are implemented as two separate Integrated Circuits (ICs).
- the memory device and the memory controller may be integrated on separate semiconductor dies in a single Multi-Chip Package (MCP) or System on Chip (SoC), and may be interconnected by an internal bus.
- MCP Multi-Chip Package
- SoC System on Chip
- some or all of the memory controller circuitry may reside on the same die on which the memory array is disposed.
- some or all of the functionality of memory controller 40 can be implemented in software and carried out by a processor or other element of the host system.
- host 44 and memory controller 40 may be fabricated on the same die, or on separate dies in the same device package.
- memory controller 40 comprises a general-purpose processor, which is programmed in software to carry out the functions described herein.
- the software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory.
- memory cells 32 are arranged in multiple rows and columns, and each memory cell comprises a floating-gate transistor.
- the gates of the transistors in each row are connected by word lines, and the sources of the transistors in each column are connected by bit lines.
- the memory cells of a given bit line are divided into groups that are referred to as strings.
- the memory cells in each string are connected source-to-drain in series with one another, between the bit line and ground. Each string can typically be connected and disconnected individually to the bit line.
- the memory array is typically divided into multiple pages, i.e., groups of memory cells that are programmed and read simultaneously. Pages are sometimes sub-divided into sectors.
- each page comprises an entire row of the array.
- each row (word line) can be divided into two or more pages. For example, in some devices each row is divided into two pages, one comprising the odd-order cells and the other comprising the even-order cells.
- memory controller 40 programs data in page units, but erases entire memory blocks 34 .
- a memory block is on the order of 10 6 memory cells, whereas a page is on the order of 10 3 -10 4 memory cells.
- the description that follows describes techniques for conditional suspension of memory access commands.
- the disclosed techniques can be carried out by memory controller 40 and/or by R/W unit 36 .
- the description that follows refers to a particular division of functions between R/W unit 36 in the memory device and processor 48 in memory controller 40 .
- the various tasks making-up the disclosed techniques can be divided between the memory controller and the R/W unit in any suitable manner, or performed by any one of these elements.
- memory controller 40 and R/W circuitry 36 are referred to jointly as storage circuitry that carries out the disclosed techniques.
- memory controller 40 initiates a read command while a program or erase command is already in progress.
- memory controller 40 and memory device 24 support a suspend-resume mechanism that suspends the program or erase command, executes the read command and then resumes the programs or erase command.
- the memory controller uses the suspend-resume mechanism selectively, only in cases in which suspending the program or erase command helps to reduce the latency of the read command.
- FIG. 2 is a diagram that schematically illustrates execution time-lines in system 20 , in accordance with embodiments of the present invention.
- the time-lines of FIG. 2 demonstrate why it is not always preferable to suspend the program or erase command.
- the figure refers to an erase command, but the same trade-offs apply to program commands.
- a time-line 60 shows a reference scenario in which an erase command 64 is allowed to complete and only then a read command 68 is executed.
- a time-line 72 shows a scenario in which erase command 64 is suspended in order to execute read command 68 , and then resumed.
- the suspension and resumption incur certain time overheads.
- the time overhead incurred by the suspension of the read command is denoted 76 A, and the time overhead incurred by the resumption of the read command is denoted 76 B.
- the overhead may be caused by various actions, such as storing and retrieving the memory device page buffers in a program command, and storing and retrieving the command status in both program and erase commands. For example, writing a 32 KB multi-plane Most Significant Bit (MSB) page in a NAND Flash device having a 400 MB/S interface incurs an overhead on the order of 80 ⁇ S. For a 200 MB/S interface, or for a 64 KB multi-plane MSB page and a 400 MB/S interface, the suspension overhead is on the order of 160 ⁇ S.
- MSB Most Significant Bit
- the read command in time-line 72 ends before the read command in time-line 60 .
- the erase command is suspended in its early stages of execution, and therefore the suspension helps to reduce the latency of the read command even in the presence of suspension overhead 76 A. In such a situation, the memory controller will typically choose to suspend the erase command.
- a time-line 80 shows a different scenario, which demonstrates that suspending the erase command in a later stage of execution may not reduce the latency of the read command, and may even increase it.
- the read command in time-line 80 ends later than the read command in time-line 60 , because of suspension overhead 76 A. Because of the suspension overhead, if the read command is initiated when the erase command is near completion, it is better to allow the erase command to complete rather than suspend it. In such a situation, the memory controller will typically choose not to suspend the erase command.
- a time-line 84 demonstrates that the above trade-off depends on the length of the suspension overhead.
- the erase command is suspended at the same time as in time-line 80 .
- the read command ends earlier than in time-line 60 , because overhead 76 A is shorter.
- the length of the suspension overhead determines the latest time in which it is still preferable to suspend the erase command.
- the memory controller chooses whether or not to suspend the erase command based on the length of the suspension overhead.
- the read command is initiated in the very early stages of the program or erase command, it may even be preferable to abort the program or erase command and restart the command from the beginning after the read command, instead of suspending and resuming.
- the first programming iterations do not change the state of the memory cells considerably, and it may be faster to abort and restart the command instead of suspending and resuming it.
- the decision whether to suspend the program or erase command may also depend on the length of the command in question.
- the memory controller estimates the average expected length of the program or erase command, and decide whether or not to suspend based on the estimated length.
- the memory controller may estimate the expected command length, for example, by tracking similar commands and measuring their lengths.
- memory controller 40 obtains from memory device 24 a progress indication, which is indicative of the execution progress of the program or erase command.
- R/W unit 36 of the memory device stores the current progress indication in a status register that is accessible to the memory controller.
- the memory controller reads the status register using a “read status” command.
- the status register is accessible using the read status command even when the memory device is busy executing the program or erase command (e.g., even when the ready-busy (RnB) line of the memory device is low).
- the memory controller may obtain the progress indication from the memory device using any other suitable mechanism or interface.
- the status indication provided by the memory device may be of any suitable format, and may indicate the execution progress in any desired manner.
- a program command that programs a group of memory cells 32 by applying a sequence of programming and verification (P&V) iterations, or an erase command that erases a memory block by applying a sequence of erasure iterations.
- the progress indication may be indicative of the number of iterations that were already performed.
- the progress indication may be indicative of the number or percentage of the memory cells that have reached their intended programming or erasure level.
- the progress indication may be indicative of the fraction or percentage of the memory block that has been erased, e.g., the number of bit-lines that have been erased.
- the progress indication may comprise a single flag or bit, which indicates to the memory controller whether it is preferable to suspend the command or not. For example, it is possible to calculate the latest point in time at which it is still beneficial to suspend the program or erase command (based on the known length of the suspension overhead). The memory device toggles the progress indication flag at the pre-computed point in time along the execution of the program or erase command.
- the memory controller and memory device may use any other suitable progress indication.
- FIG. 3 is a flow chart that schematically illustrates a method for command execution in a memory, in accordance with an embodiment of the present invention.
- the description that follows refers to an erase command, but the method can be applied in a similar manner to a program command.
- the method begins with memory controller 40 beginning to execute an erase command that erases a memory block in memory device 24 , at an erase initiation step 90 .
- memory controller 40 receives a read command for execution in memory device 24 , at a read command reception 94 .
- Memory controller 40 reads the progress indication for the erase command from memory device 24 , at a progress readout step 98 .
- the memory controller may issue a “read status” command to read an appropriate status register from the memory device.
- the memory controller estimates the execution progress of the erase command, at a progress estimation step 102 .
- the memory controller instructs the memory device to abort the erase command, then to execute the read command, and then to restart the erase command, at an abortion step 106 .
- the memory controller instructs the memory device to suspend the erase command, then execute the read command, and then resume the erase command, at a suspension step 110 .
- the memory controller allows the erase command to complete without interruption, and then executes the read command, at a completion step 114 .
- the memory controller does not consider aborting the erase command, and only chooses between suspending the command and allowing the command to complete.
- conditional suspension or abortion of program and erase commands in order to execute read commands
- methods and systems described herein can also be used for conditional suspension or abortion of any other suitable command type, in order to execute any other suitable command type.
Abstract
Description
- The present invention relates generally to data storage, and particularly to efficient suspension and resumption of data storage operation.
- In some types of memory, such as Flash memory, erasure and programming commands have a long execution time during which the memory is busy. Other commands, such as read commands, remain pending until the erasure or programming command is completed, and may therefore suffer long delays. Several techniques are known in the art for mitigating the long delay caused by such commands.
- For example, U.S. Pat. No. 7,404,033, whose disclosure is incorporated herein by reference, describes a method for reading while writing to a single-partition Flash memory. A device manager receives an operation request for a memory device. The device manager suspends interrupts to be serviced and determines if there is sufficient time available to perform the requested operation. If there is sufficient time available and the device manager is in an exclusive mode, the state of the memory device is checked to determine if it is currently executing an operation. If so, this operation is suspended and the requested operation is issued to the memory device. The device manager polls the memory device to determine when the requested operation has been completed. Upon completion, the interrupts are re-enabled and control of the memory device is returned to the system.
- U.S. Pat. No. 7,110,301, whose disclosure is incorporated herein by reference, describes a non-volatile semiconductor memory device that includes memory blocks and an erase controller configured to control a multi-block erase operation where at least two of the memory blocks are simultaneously erased. In some embodiments, if a suspend command is received by the memory device while selected memory blocks are being erased, the erase operation ceases and another operation, such as a read operation, begins. When a resume command is received by the memory device, the erase operation resumes.
- U.S. Pat. No. 6,717,852, whose disclosure is incorporated herein by reference, describes a semiconductor memory device that allows concurrent execution of a write/erase operation and a read operation.
- U.S. Pat. No. 5,805,501, whose disclosure is incorporated herein by reference, describes a Flash memory device that includes a multiple-checkpoint erase suspend algorithm. A user may issue an erase suspend command anytime during an erase process. The erase procedure is suspended as fast as possible by allowing the erase procedure to be suspended at the first to occur of a plurality of checkpoints in the process.
- U.S. Patent Application Publication 2012/0254515, whose disclosure is incorporated herein by reference, describes a method for suspending an erase operation performed on a group of memory cells in a Flash memory circuit. One example method includes providing to the memory circuit a command to erase the group of memory cells via a plurality of erase pulses. After applying an erase pulse, if it is determined that another operation has a priority higher than a predetermined threshold, the method suspends the erase operation, performs the other operation, and then resumes the erase operation.
- An embodiment of the present invention that is described herein provides a method including executing a first memory access operation in a memory. A progress indication, which is indicative of a progress of execution of the first memory access operation, is obtained from the memory. Based on the progress indication, a decision is made whether to suspend the execution of the first memory access operation in order to execute a second memory access operation.
- In some embodiments, the first memory access operation includes a programming command or an erasure command, and the second memory command includes a read command. In an embodiment, deciding whether to suspend the execution includes choosing, based on the progress indication, between suspending the execution, allowing the execution to complete and aborting the execution.
- In a disclosed embodiment, deciding whether to suspend the execution includes estimating a first time at which the second memory access command will complete if the execution of the first memory access command is suspended, estimating a second time at which the second memory access command will complete if the execution of the first memory access command is not suspended, and choosing to suspend the execution only if the first time is earlier than the second time.
- In another embodiment, deciding whether to suspend the execution includes choosing between suspending and completing the execution based on a time overhead incurred by suspension of the first memory access command. In yet another embodiment, obtaining the progress indication includes reading the progress indication from a register of the memory that is accessible during the execution of the first memory access operation.
- In still another embodiment, executing the first memory access operation includes performing a sequence of programming or erasure iterations, and obtaining the progress indication includes obtaining a count of the programming or erasure iterations that have been performed. In an embodiment, executing the first memory access operation includes performing a sequence of programming or erasure iterations, and obtaining the progress indication includes obtaining a count of memory cells whose programming or erasure has been completed. In another embodiment, executing the first memory access operation includes erasing a region of the memory, and obtaining the progress indication includes obtaining a portion of the region whose erasure has been completed.
- In a disclosed embodiment, deciding whether to suspend the execution includes estimating an expected length of the execution, and choosing whether to suspend the execution based on the estimated expected length. In an embodiment, obtaining the progress indication includes reading from the memory a flag that is set to a first value when suspension of the execution will expedite completion of the second memory access command, and is set to a second value when the suspension of the execution will delay the completion of the second memory access command.
- There is additionally provided, in accordance with an embodiment of the present invention, apparatus including a memory and an interface. The interface is configured to communicate with a memory. The storage circuitry is configured to execute a first memory access operation in the memory, to obtain from the memory a progress indication that is indicative of a progress of execution of the first memory access operation, and, based on the progress indication, to decide whether to suspend the execution of the first memory access operation in order to execute a second memory access operation.
- There is additionally provided, in accordance with an embodiment of the present invention, apparatus including a memory and storage circuitry. The storage circuitry is configured to execute a first memory access operation in the memory, to obtain from the memory a progress indication that is indicative of a progress of execution of the first memory access operation, and, based on the progress indication, to decide whether to suspend the execution of the first memory access operation in order to execute a second memory access operation.
- The present invention will be more fully understood from the following detailed description of the embodiments thereof, taken together with the drawings in which:
-
FIG. 1 is a block diagram that schematically illustrates a memory system, in accordance with an embodiment of the present invention; -
FIG. 2 is a diagram that schematically illustrates execution time-lines in a memory system, in accordance with embodiments of the present invention; and -
FIG. 3 is a flow chart that schematically illustrates a method for command execution in a memory, in accordance with an embodiment of the present invention. - Embodiments of the present invention that are described herein provide improved methods and systems for executing memory access commands. In some embodiments, a memory controller executes memory access commands such as read, program (write) and erase commands in a Flash memory. Typically, read commands are relatively short to execute, e.g., on the order of 40-50 μSec (sense only, or on the order of 120 μSec including data transfer time), whereas program and erase commands are considerably longer, e.g., on the order of 3-5mSec or even 5-10 mSec.
- In order to prevent erase or program commands from causing long delays to other commands, the memory and the memory controller carry out a conditional suspend-resume scheme that is described in detail hereinbelow.
- Consider an example situation in which a read command is initiated while an erase or program command is already in progress. In this example, the target performance to be optimized is the read command latency, possibly at the expense of the erase or program command latency. If the erase or program command is in its early stages of execution, it will usually be preferable to suspend it temporarily and execute the read command. In the very early stages of execution, it may even be preferable to abort the erase or program command altogether, and restart it after executing the read command. On the other hand, if the erase or program command is already near completion, it may be preferable to allow it to complete rather than suspend. The above trade-offs depend, for example, on the length of the erase or program command, the length of the read command, and the overhead associated with suspending and resuming the erase or program command.
- In some embodiments, when preparing to execute the read command, the memory controller assesses the progress of the currently-executed erase or program command. Based on the assessed progress, the memory controller decides whether to suspend, abort or complete the erase or program command before executing the read command. In other embodiments aborting is not considered, and the memory controller chooses between suspending and completing the erase or program command.
- In an example embodiment, the memory provides a progress indication that is indicative of the execution progress of the erase or program command. The progress indication may indicate, for example, the remaining execution time or the portion of the command that has been executed so far. The memory controller obtains the progress indication and uses it in making the abort/suspend/complete decision. The progress indication may be provided, for example, in a status register that is accessible to the memory controller even when the memory is busy.
- The disclosed techniques enable the memory controller to minimize the latency of read commands, and to avoid unnecessary suspension and resumption of erase or program commands. Memory systems that use these techniques can thus achieve increased readout throughput and reduced latency. As a result, the overall system performance and user experience can be improved.
-
FIG. 1 is a block diagram that schematically illustrates amemory system 20, in accordance with an embodiment of the present invention.System 20 can be used in various host systems and devices, such as in computing devices, cellular phones or other communication terminals, removable memory modules (sometimes referred to as “USB Flash Drives”), Solid State Disks (SSD), digital cameras, music and other media players and/or any other system or device in which data is stored and retrieved. -
System 20 comprises a memory device 24, which stores data in a memory cell array 28. The memory array comprises multiple memory blocks 34. Eachmemory block 34 comprises multipleanalog memory cells 32. In the context of the present patent application and in the claims, the term “analog memory cell” is used to describe any memory cell that holds a continuous, analog value of a physical parameter, such as an electrical voltage or charge. Array 28 may comprise analog memory cells of any kind, such as, for example, NAND, NOR and Charge Trap Flash (CTF) Flash cells, phase change RAM (PRAM, also referred to as Phase Change Memory—PCM), Nitride Read Only Memory (NROM), Ferroelectric RAM (FRAM), magnetic RAM (MRAM) and/or Dynamic RAM (DRAM) cells. Although the embodiments described herein refer mainly to two-dimensional (2D) cell connectivity schemes, the disclosed techniques are applicable to three-dimensional (3D) connectivity schemes, as well. - The charge levels stored in the cells and/or the analog voltages or currents written into and read out of the cells are referred to herein collectively as analog values, analog storage values or storage values. The storage values may comprise, for example, threshold voltages or any other suitable kind of storage values.
System 20 stores data in the analog memory cells by programming the cells to assume respective programming states, which are also referred to as programming levels. The programming states are selected from a finite set of possible states, and each programming state corresponds to a certain nominal storage value. For example, a 3 bit/cell MLC can be programmed to assume one of eight possible programming states by writing one of eight possible nominal storage values into the cell. - Memory device 24 comprises a reading/writing (R/W)
unit 36, which converts data for storage in the memory device to analog storage values and writes them intomemory cells 32. In alternative embodiments, the R/W unit does not perform the conversion, but is provided with voltage samples, i.e., with the storage values for storage in the cells. When reading data out of array 28, R/W unit 36 converts the storage values of memory cells into digital samples having a resolution of one or more bits. Data is typically written to and read from the memory cells in groups that are referred to as pages. In some embodiments, the R/W unit can erase a group ofcells 32 by applying one or more negative erasure pulses to the cells. Erasure is typically performed in entire memory blocks. - The storage and retrieval of data in and out of memory device 24 is performed by a
memory controller 40. The memory controller comprises aninterface 44 for communicating with memory device 24, and aprocessor 48 that carries out the various memory management functions.Memory controller 40 communicates with ahost 52, for accepting data for storage in the memory device and for outputting data retrieved from the memory device.Memory controller 40, and inparticular processor 48, may be implemented in hardware. Alternatively, the memory controller may comprise a microprocessor that runs suitable software, or a combination of hardware and software elements. - The configuration of
FIG. 1 is an exemplary system configuration, which is shown purely for the sake of conceptual clarity. Any other suitable memory system configuration can also be used. Elements that are not necessary for understanding the principles of the present invention, such as various interfaces, addressing circuits, timing and sequencing circuits and debugging circuits, have been omitted from the figure for clarity. - Although the example of
FIG. 1 shows a single memory device 24,system 20 may comprise multiple memory devices that are controlled bymemory controller 40. In the exemplary system configuration shown inFIG. 1 , memory device 24 andmemory controller 40 are implemented as two separate Integrated Circuits (ICs). In alternative embodiments, however, the memory device and the memory controller may be integrated on separate semiconductor dies in a single Multi-Chip Package (MCP) or System on Chip (SoC), and may be interconnected by an internal bus. Further alternatively, some or all of the memory controller circuitry may reside on the same die on which the memory array is disposed. Further alternatively, some or all of the functionality ofmemory controller 40 can be implemented in software and carried out by a processor or other element of the host system. In some embodiments,host 44 andmemory controller 40 may be fabricated on the same die, or on separate dies in the same device package. - In some embodiments,
memory controller 40 comprises a general-purpose processor, which is programmed in software to carry out the functions described herein. The software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory. - In an example configuration of array 28,
memory cells 32 are arranged in multiple rows and columns, and each memory cell comprises a floating-gate transistor. The gates of the transistors in each row are connected by word lines, and the sources of the transistors in each column are connected by bit lines. In some embodiments, the memory cells of a given bit line are divided into groups that are referred to as strings. The memory cells in each string are connected source-to-drain in series with one another, between the bit line and ground. Each string can typically be connected and disconnected individually to the bit line. - The memory array is typically divided into multiple pages, i.e., groups of memory cells that are programmed and read simultaneously. Pages are sometimes sub-divided into sectors. In some embodiments, each page comprises an entire row of the array. In alternative embodiments, each row (word line) can be divided into two or more pages. For example, in some devices each row is divided into two pages, one comprising the odd-order cells and the other comprising the even-order cells.
- Typically,
memory controller 40 programs data in page units, but erases entire memory blocks 34. Typically although not necessarily, a memory block is on the order of 106 memory cells, whereas a page is on the order of 103-104 memory cells. - The description that follows describes techniques for conditional suspension of memory access commands. The disclosed techniques can be carried out by
memory controller 40 and/or by R/W unit 36. For the sake of clarity, the description that follows refers to a particular division of functions between R/W unit 36 in the memory device andprocessor 48 inmemory controller 40. Generally, however, the various tasks making-up the disclosed techniques can be divided between the memory controller and the R/W unit in any suitable manner, or performed by any one of these elements. Thus, in the context of the present patent application and in the claims,memory controller 40 and R/W circuitry 36 are referred to jointly as storage circuitry that carries out the disclosed techniques. - In many practical scenarios,
memory controller 40 initiates a read command while a program or erase command is already in progress. In some embodiments,memory controller 40 and memory device 24 support a suspend-resume mechanism that suspends the program or erase command, executes the read command and then resumes the programs or erase command. The memory controller uses the suspend-resume mechanism selectively, only in cases in which suspending the program or erase command helps to reduce the latency of the read command. -
FIG. 2 is a diagram that schematically illustrates execution time-lines insystem 20, in accordance with embodiments of the present invention. The time-lines ofFIG. 2 demonstrate why it is not always preferable to suspend the program or erase command. The figure refers to an erase command, but the same trade-offs apply to program commands. - A time-
line 60 shows a reference scenario in which an erasecommand 64 is allowed to complete and only then aread command 68 is executed. A time-line 72 shows a scenario in which erasecommand 64 is suspended in order to execute readcommand 68, and then resumed. The first portion of the erase command, which is executed before the suspension, is denoted 64A. The remaining portion of the erase command, which is executed after the resumption, is denoted 64B. - In addition, the suspension and resumption incur certain time overheads. The time overhead incurred by the suspension of the read command is denoted 76A, and the time overhead incurred by the resumption of the read command is denoted 76B. The overhead may be caused by various actions, such as storing and retrieving the memory device page buffers in a program command, and storing and retrieving the command status in both program and erase commands. For example, writing a 32 KB multi-plane Most Significant Bit (MSB) page in a NAND Flash device having a 400 MB/S interface incurs an overhead on the order of 80 μS. For a 200 MB/S interface, or for a 64 KB multi-plane MSB page and a 400 MB/S interface, the suspension overhead is on the order of 160 μS.
- As can be seen in the figure, the read command in time-line 72 ends before the read command in time-
line 60. In time-line 72, the erase command is suspended in its early stages of execution, and therefore the suspension helps to reduce the latency of the read command even in the presence of suspension overhead 76A. In such a situation, the memory controller will typically choose to suspend the erase command. - A time-
line 80 shows a different scenario, which demonstrates that suspending the erase command in a later stage of execution may not reduce the latency of the read command, and may even increase it. As can be seen in the figure, the read command in time-line 80 ends later than the read command in time-line 60, because of suspension overhead 76A. Because of the suspension overhead, if the read command is initiated when the erase command is near completion, it is better to allow the erase command to complete rather than suspend it. In such a situation, the memory controller will typically choose not to suspend the erase command. - A time-line 84 demonstrates that the above trade-off depends on the length of the suspension overhead. In time-line 84 the erase command is suspended at the same time as in time-
line 80. Unlike time-line 80, in time-line 84 the read command ends earlier than in time-line 60, becauseoverhead 76A is shorter. In other words, the length of the suspension overhead determines the latest time in which it is still preferable to suspend the erase command. Thus, in some embodiments the memory controller chooses whether or not to suspend the erase command based on the length of the suspension overhead. - If the read command is initiated in the very early stages of the program or erase command, it may even be preferable to abort the program or erase command and restart the command from the beginning after the read command, instead of suspending and resuming. In a program command, for example, the first programming iterations do not change the state of the memory cells considerably, and it may be faster to abort and restart the command instead of suspending and resuming it.
- In addition to the overhead size, the decision whether to suspend the program or erase command may also depend on the length of the command in question. In some embodiments, the memory controller estimates the average expected length of the program or erase command, and decide whether or not to suspend based on the estimated length. The memory controller may estimate the expected command length, for example, by tracking similar commands and measuring their lengths.
- In some embodiments,
memory controller 40 obtains from memory device 24 a progress indication, which is indicative of the execution progress of the program or erase command. In an example embodiment, R/W unit 36 of the memory device stores the current progress indication in a status register that is accessible to the memory controller. The memory controller reads the status register using a “read status” command. The status register is accessible using the read status command even when the memory device is busy executing the program or erase command (e.g., even when the ready-busy (RnB) line of the memory device is low). Alternatively, the memory controller may obtain the progress indication from the memory device using any other suitable mechanism or interface. - The status indication provided by the memory device may be of any suitable format, and may indicate the execution progress in any desired manner. Consider, for example, a program command that programs a group of
memory cells 32 by applying a sequence of programming and verification (P&V) iterations, or an erase command that erases a memory block by applying a sequence of erasure iterations. In such a program command, the progress indication may be indicative of the number of iterations that were already performed. Alternatively, the progress indication may be indicative of the number or percentage of the memory cells that have reached their intended programming or erasure level. - As another example, in an erasure operation, the progress indication may be indicative of the fraction or percentage of the memory block that has been erased, e.g., the number of bit-lines that have been erased. As yet another example, the progress indication may comprise a single flag or bit, which indicates to the memory controller whether it is preferable to suspend the command or not. For example, it is possible to calculate the latest point in time at which it is still beneficial to suspend the program or erase command (based on the known length of the suspension overhead). The memory device toggles the progress indication flag at the pre-computed point in time along the execution of the program or erase command.
- Further alternatively, the memory controller and memory device may use any other suitable progress indication.
-
FIG. 3 is a flow chart that schematically illustrates a method for command execution in a memory, in accordance with an embodiment of the present invention. The description that follows refers to an erase command, but the method can be applied in a similar manner to a program command. The method begins withmemory controller 40 beginning to execute an erase command that erases a memory block in memory device 24, at an eraseinitiation step 90. At some point during the execution of the erase command,memory controller 40 receives a read command for execution in memory device 24, at aread command reception 94. -
Memory controller 40 reads the progress indication for the erase command from memory device 24, at aprogress readout step 98. For example, the memory controller may issue a “read status” command to read an appropriate status register from the memory device. The memory controller estimates the execution progress of the erase command, at aprogress estimation step 102. - If the execution progress indicates that the erase command is in its early stage of execution, the memory controller instructs the memory device to abort the erase command, then to execute the read command, and then to restart the erase command, at an
abortion step 106. - If the execution progress indicates that the erase command is in an intermediate stage of execution, the memory controller instructs the memory device to suspend the erase command, then execute the read command, and then resume the erase command, at a suspension step 110.
- If the execution progress indicates that the erase command is in its final stage of execution, the memory controller allows the erase command to complete without interruption, and then executes the read command, at a
completion step 114. - In alternative embodiments, the memory controller does not consider aborting the erase command, and only chooses between suspending the command and allowing the command to complete.
- Although the embodiments described herein mainly address conditional suspension or abortion of program and erase commands in order to execute read commands, the methods and systems described herein can also be used for conditional suspension or abortion of any other suitable command type, in order to execute any other suitable command type.
- It will thus be appreciated that the embodiments described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art. Documents incorporated by reference in the present patent application are to be considered an integral part of the application except that to the extent any terms are defined in these incorporated documents in a manner that conflicts with the definitions made explicitly or implicitly in the present specification, only the definitions in the present specification should be considered.
Claims (23)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/755,547 US9779038B2 (en) | 2013-01-31 | 2013-01-31 | Efficient suspend-resume operation in memory devices |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/755,547 US9779038B2 (en) | 2013-01-31 | 2013-01-31 | Efficient suspend-resume operation in memory devices |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140215175A1 true US20140215175A1 (en) | 2014-07-31 |
US9779038B2 US9779038B2 (en) | 2017-10-03 |
Family
ID=51224335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/755,547 Active 2033-07-14 US9779038B2 (en) | 2013-01-31 | 2013-01-31 | Efficient suspend-resume operation in memory devices |
Country Status (1)
Country | Link |
---|---|
US (1) | US9779038B2 (en) |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130198451A1 (en) * | 2009-09-09 | 2013-08-01 | Fusion-Io | Erase suspend/resume for memory |
US20150006786A1 (en) * | 2013-06-28 | 2015-01-01 | Micron Technology, Inc. | Operation management in a memory device |
US8972627B2 (en) | 2009-09-09 | 2015-03-03 | Fusion-Io, Inc. | Apparatus, system, and method for managing operations for data storage media |
US9021158B2 (en) | 2009-09-09 | 2015-04-28 | SanDisk Technologies, Inc. | Program suspend/resume for memory |
KR20160016007A (en) * | 2014-08-01 | 2016-02-15 | 삼성전자주식회사 | Nonvolatile memory device and driving method of the same |
KR20170029775A (en) * | 2015-09-08 | 2017-03-16 | 삼성전자주식회사 | Memory system and method of operating the same |
US9600184B2 (en) | 2007-12-06 | 2017-03-21 | Sandisk Technologies Llc | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US20170132066A1 (en) * | 2014-08-07 | 2017-05-11 | Microsoft Technology Licensing, Llc | Safe data access following storage failure |
US9666244B2 (en) | 2014-03-01 | 2017-05-30 | Fusion-Io, Inc. | Dividing a storage procedure |
US20170168752A1 (en) * | 2015-12-11 | 2017-06-15 | Microsemi Storage Solutions (Us), Inc. | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US9734086B2 (en) | 2006-12-06 | 2017-08-15 | Sandisk Technologies Llc | Apparatus, system, and method for a device shared between multiple independent hosts |
US20170262229A1 (en) * | 2016-03-14 | 2017-09-14 | Kabushiki Kaisha Toshiba | Storage device |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
CN107423227A (en) * | 2016-05-24 | 2017-12-01 | 瑞昱半导体股份有限公司 | Memory device, memory controller and its control method |
US9847918B2 (en) | 2014-08-12 | 2017-12-19 | Microsoft Technology Licensing, Llc | Distributed workload reassignment following communication failure |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US9933950B2 (en) | 2015-01-16 | 2018-04-03 | Sandisk Technologies Llc | Storage operation interrupt |
US10157677B2 (en) | 2016-07-28 | 2018-12-18 | Ip Gem Group, Llc | Background reference positioning and local reference positioning using threshold voltage shift read |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US10423335B2 (en) | 2017-06-30 | 2019-09-24 | Seagate Technology Llc | Enhancing quality of service of a storage device |
CN110503999A (en) * | 2018-05-17 | 2019-11-26 | 希捷科技有限公司 | For managing the method and system of memory access operation |
US10540115B2 (en) * | 2015-04-21 | 2020-01-21 | SK Hynix Inc. | Controller adaptation to memory program suspend-resume |
CN111724827A (en) * | 2019-03-20 | 2020-09-29 | 东芝存储器株式会社 | Memory system and nonvolatile memory |
US20210042037A1 (en) * | 2019-08-05 | 2021-02-11 | Micron Technology, Inc. | Monitoring flash memory erase progress using erase credits |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10643711B1 (en) | 2018-12-20 | 2020-05-05 | Western Digital Technologies, Inc. | Workload based dynamic erase suspend adaptation |
JP2023045879A (en) * | 2021-09-22 | 2023-04-03 | キオクシア株式会社 | Memory device and memory system |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881264A (en) * | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
US6349321B1 (en) * | 1997-04-30 | 2002-02-19 | Kabushiki Kaisha Toshiba | Data processing system and scheduling method |
US20070204270A1 (en) * | 2006-02-28 | 2007-08-30 | Samsung Electronics Co., Ltd. | Apparatus and method for processing operations of nonvolatile memory in order of priority |
US20070239926A1 (en) * | 2006-03-28 | 2007-10-11 | Yevgen Gyl | Method and device for reduced read latency of non-volatile memory |
US7451447B1 (en) * | 1998-08-07 | 2008-11-11 | Arc International Ip, Inc. | Method, computer program and apparatus for operating system dynamic event management and task scheduling using function calls |
US20100049913A1 (en) * | 2008-08-25 | 2010-02-25 | Sandisk Il Ltd. | Managing multiple concurrent operations with various priority levels in a local storage device |
US7844970B2 (en) * | 2006-08-22 | 2010-11-30 | International Business Machines Corporation | Method and apparatus to control priority preemption of tasks |
US20120203986A1 (en) * | 2009-09-09 | 2012-08-09 | Fusion-Io | Apparatus, system, and method for managing operations for data storage media |
US20120254515A1 (en) * | 2011-02-03 | 2012-10-04 | Stec, Inc. | Erase-suspend system and method |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805501A (en) | 1996-05-22 | 1998-09-08 | Macronix International Co., Ltd. | Flash memory device with multiple checkpoint erase suspend logic |
JP2003123488A (en) | 2001-10-11 | 2003-04-25 | Toshiba Corp | Semiconductor memory |
US7155562B2 (en) | 2003-05-08 | 2006-12-26 | Micron Technology, Inc. | Method for reading while writing to a single partition flash memory |
US7110301B2 (en) | 2004-05-07 | 2006-09-19 | Samsung Electronics Co., Ltd. | Non-volatile semiconductor memory device and multi-block erase method thereof |
-
2013
- 2013-01-31 US US13/755,547 patent/US9779038B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881264A (en) * | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
US6349321B1 (en) * | 1997-04-30 | 2002-02-19 | Kabushiki Kaisha Toshiba | Data processing system and scheduling method |
US7451447B1 (en) * | 1998-08-07 | 2008-11-11 | Arc International Ip, Inc. | Method, computer program and apparatus for operating system dynamic event management and task scheduling using function calls |
US20070204270A1 (en) * | 2006-02-28 | 2007-08-30 | Samsung Electronics Co., Ltd. | Apparatus and method for processing operations of nonvolatile memory in order of priority |
US20070239926A1 (en) * | 2006-03-28 | 2007-10-11 | Yevgen Gyl | Method and device for reduced read latency of non-volatile memory |
US7844970B2 (en) * | 2006-08-22 | 2010-11-30 | International Business Machines Corporation | Method and apparatus to control priority preemption of tasks |
US20100049913A1 (en) * | 2008-08-25 | 2010-02-25 | Sandisk Il Ltd. | Managing multiple concurrent operations with various priority levels in a local storage device |
US20120203986A1 (en) * | 2009-09-09 | 2012-08-09 | Fusion-Io | Apparatus, system, and method for managing operations for data storage media |
US20120254515A1 (en) * | 2011-02-03 | 2012-10-04 | Stec, Inc. | Erase-suspend system and method |
Cited By (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847066B2 (en) | 2006-12-06 | 2023-12-19 | Unification Technologies Llc | Apparatus, system, and method for managing commands of solid-state storage using bank interleave |
US9734086B2 (en) | 2006-12-06 | 2017-08-15 | Sandisk Technologies Llc | Apparatus, system, and method for a device shared between multiple independent hosts |
US11573909B2 (en) | 2006-12-06 | 2023-02-07 | Unification Technologies Llc | Apparatus, system, and method for managing commands of solid-state storage using bank interleave |
US11640359B2 (en) | 2006-12-06 | 2023-05-02 | Unification Technologies Llc | Systems and methods for identifying storage resources that are not in use |
US9600184B2 (en) | 2007-12-06 | 2017-03-21 | Sandisk Technologies Llc | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US8972627B2 (en) | 2009-09-09 | 2015-03-03 | Fusion-Io, Inc. | Apparatus, system, and method for managing operations for data storage media |
US9021158B2 (en) | 2009-09-09 | 2015-04-28 | SanDisk Technologies, Inc. | Program suspend/resume for memory |
US20130198451A1 (en) * | 2009-09-09 | 2013-08-01 | Fusion-Io | Erase suspend/resume for memory |
US9223514B2 (en) * | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
KR101711353B1 (en) | 2013-06-28 | 2017-02-28 | 마이크론 테크놀로지, 인크. | Operation management in a memory device |
US9465539B2 (en) | 2013-06-28 | 2016-10-11 | Micron Technology, Inc. | Operation management in a memory device |
KR20160025577A (en) * | 2013-06-28 | 2016-03-08 | 마이크론 테크놀로지, 인크. | Operation management in a memory device |
US9195406B2 (en) * | 2013-06-28 | 2015-11-24 | Micron Technology, Inc. | Operation management in a memory device |
US20150006786A1 (en) * | 2013-06-28 | 2015-01-01 | Micron Technology, Inc. | Operation management in a memory device |
US9666244B2 (en) | 2014-03-01 | 2017-05-30 | Fusion-Io, Inc. | Dividing a storage procedure |
US9401215B2 (en) * | 2014-08-01 | 2016-07-26 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and method for driving the same |
KR102203298B1 (en) * | 2014-08-01 | 2021-01-15 | 삼성전자주식회사 | Nonvolatile memory device and driving method of the same |
KR20160016007A (en) * | 2014-08-01 | 2016-02-15 | 삼성전자주식회사 | Nonvolatile memory device and driving method of the same |
US10545831B2 (en) * | 2014-08-07 | 2020-01-28 | Microsoft Technology Licensing, Llc | Safe data access following storage failure |
US9665432B2 (en) * | 2014-08-07 | 2017-05-30 | Microsoft Technology Licensing, Llc | Safe data access following storage failure |
US20170132066A1 (en) * | 2014-08-07 | 2017-05-11 | Microsoft Technology Licensing, Llc | Safe data access following storage failure |
US9847918B2 (en) | 2014-08-12 | 2017-12-19 | Microsoft Technology Licensing, Llc | Distributed workload reassignment following communication failure |
US11228510B2 (en) | 2014-08-12 | 2022-01-18 | Microsoft Technology Licensing, Llc | Distributed workload reassignment following communication failure |
US9933950B2 (en) | 2015-01-16 | 2018-04-03 | Sandisk Technologies Llc | Storage operation interrupt |
US10540115B2 (en) * | 2015-04-21 | 2020-01-21 | SK Hynix Inc. | Controller adaptation to memory program suspend-resume |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
KR20170029775A (en) * | 2015-09-08 | 2017-03-16 | 삼성전자주식회사 | Memory system and method of operating the same |
US11749326B2 (en) | 2015-09-08 | 2023-09-05 | Samsung Electronics Co., Ltd. | Dynamic random access memory (DRAM) device and memory controller therefor |
US11715507B2 (en) | 2015-09-08 | 2023-08-01 | Samsung Electronics Co., Ltd. | Dynamic random access memory (DRAM) device and memory controller therefor |
KR102401271B1 (en) * | 2015-09-08 | 2022-05-24 | 삼성전자주식회사 | Memory system and method of operating the same |
US10152273B2 (en) | 2015-12-11 | 2018-12-11 | Ip Gem Group, Llc | Nonvolatile memory controller and method for erase suspend management that increments the number of program and erase cycles after erase suspend |
US9886214B2 (en) * | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US20170168752A1 (en) * | 2015-12-11 | 2017-06-15 | Microsemi Storage Solutions (Us), Inc. | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
JP2017168160A (en) * | 2016-03-14 | 2017-09-21 | 株式会社東芝 | Storage device |
US20170262229A1 (en) * | 2016-03-14 | 2017-09-14 | Kabushiki Kaisha Toshiba | Storage device |
US10915266B2 (en) * | 2016-03-14 | 2021-02-09 | Toshiba Memory Corporation | Storage device |
CN107423227A (en) * | 2016-05-24 | 2017-12-01 | 瑞昱半导体股份有限公司 | Memory device, memory controller and its control method |
US10157677B2 (en) | 2016-07-28 | 2018-12-18 | Ip Gem Group, Llc | Background reference positioning and local reference positioning using threshold voltage shift read |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10283215B2 (en) | 2016-07-28 | 2019-05-07 | Ip Gem Group, Llc | Nonvolatile memory system with background reference positioning and local reference positioning |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US10423335B2 (en) | 2017-06-30 | 2019-09-24 | Seagate Technology Llc | Enhancing quality of service of a storage device |
CN110503999A (en) * | 2018-05-17 | 2019-11-26 | 希捷科技有限公司 | For managing the method and system of memory access operation |
US11069413B2 (en) * | 2019-03-20 | 2021-07-20 | Kioxia Corporation | Memory system and nonvolatile memory |
TWI744677B (en) * | 2019-03-20 | 2021-11-01 | 日商東芝記憶體股份有限公司 | Memory system |
CN111724827A (en) * | 2019-03-20 | 2020-09-29 | 东芝存储器株式会社 | Memory system and nonvolatile memory |
US11061578B2 (en) * | 2019-08-05 | 2021-07-13 | Micron Technology, Inc. | Monitoring flash memory erase progress using erase credits |
US20210303172A1 (en) * | 2019-08-05 | 2021-09-30 | Micron Technology, Inc. | Monitoring flash memory erase progress using erase credits |
US20210042037A1 (en) * | 2019-08-05 | 2021-02-11 | Micron Technology, Inc. | Monitoring flash memory erase progress using erase credits |
Also Published As
Publication number | Publication date |
---|---|
US9779038B2 (en) | 2017-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9779038B2 (en) | Efficient suspend-resume operation in memory devices | |
US11031081B2 (en) | Apparatus having memory arrays and having trim registers associated with memory array access operation commands | |
US9230681B2 (en) | Selective activation of programming schemes in analog memory cell arrays | |
US8750046B2 (en) | Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N | |
US8977805B2 (en) | Host-assisted compaction of memory blocks | |
US8832354B2 (en) | Use of host system resources by memory controller | |
US9250814B2 (en) | Command order re-sequencing in non-volatile memory | |
JP5976939B2 (en) | Host assisted memory block compaction | |
US20080263262A1 (en) | Command interface for memory devices | |
KR20120118764A (en) | Programming method for nonvolatile memory device | |
US9236132B2 (en) | Mitigating reliability degradation of analog memory cells during long static and erased state retention | |
US10191683B2 (en) | One-pass programming in a multi-level nonvolatile memory device with improved write amplification | |
US9361951B2 (en) | Statistical peak-current management in non-volatile memory devices | |
US9007835B2 (en) | Enhanced data storage in 3-D memory using string-specific source-side biasing | |
CN111028878B (en) | Flash memory writing method, flash memory chip and nonvolatile storage device | |
US20190250851A1 (en) | Method and apparatus for programming flash based storage using segmented writes | |
US9952779B2 (en) | Parallel scheduling of write commands to multiple memory devices | |
US9423961B2 (en) | Method to enhance programming performance in multilevel NVM devices | |
US20230244615A1 (en) | Memory device, method for controlling memory device and memory system | |
KR20230097169A (en) | Power management of memory systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: APPLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KASORLA, YOAV;SCHUSHAN, ASAF;VEGA, ASAF;AND OTHERS;REEL/FRAME:029731/0221 Effective date: 20130130 Owner name: APPLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GURGI, EYAL;REEL/FRAME:029731/0470 Effective date: 20130130 |
|
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 |