Systems and methods for improving the performance of non-volatile memory operations
First Claim
1. A storage subsystem for storing data provided by a host system, the storage subsystem comprising:
- a non-volatile solid-state memory array; and
a controller comprising;
a characterization module configured to record, in a calibration table, a first set and a second set of execution times of memory access operations performed on a plurality of memory devices in the non-volatile solid-state memory array, the first set of execution times corresponding to a first environmental condition and the second set of execution times corresponding to a second environmental condition; and
a task manager configured to;
determine a first execution time associated with a current memory access operation;
select a set of execution times from the first set and the second set of execution times based on a current environmental condition;
determine, for each task in a plurality of available tasks, a task execution time based on a type of the task and the selected set of execution times, wherein the determined task execution time corresponds to a recorded execution time in the selected set of execution times; and
select from the plurality of available tasks, based on the first execution time and the task execution time for each task in the plurality of available tasks, one or more memory access tasks to be executed on the plurality of memory devices while the controller is performing the current memory access operation, the selected one or more memory access tasks having a total execution time that is less than the first execution time associated with the current memory access operation, wherein the one or more memory access tasks to be executed comprise at least one of;
a read host data operation, a program operation, and an erase operation, and wherein the current environmental condition corresponds to one of the first environmental condition and the second environmental condition.
10 Assignments
0 Petitions
Accused Products
Abstract
Disclosed herein are systems and methods that recognize and recapture potentially unused processing time in typical page program and block erase operations in non-volatile memory (NVM) devices. In one embodiment, a characterization module within a controller executes a characterization procedure by performing page program and block erase operations on one or more NVM devices in an array and storing execution time data of the operations in a calibration table. The procedure may be executed at start-up and/or periodically so that the time values are reflective of the actual physical condition of the individual NVM devices. A task manager uses the stored time values to estimate the time needed for completing certain memory operations in its task table. Based on the estimated time for completion, the task manager assigns tasks to be executed during page program and/or block erase cycles, so that otherwise unused processing time can be utilized.
188 Citations
27 Claims
-
1. A storage subsystem for storing data provided by a host system, the storage subsystem comprising:
-
a non-volatile solid-state memory array; and a controller comprising; a characterization module configured to record, in a calibration table, a first set and a second set of execution times of memory access operations performed on a plurality of memory devices in the non-volatile solid-state memory array, the first set of execution times corresponding to a first environmental condition and the second set of execution times corresponding to a second environmental condition; and a task manager configured to; determine a first execution time associated with a current memory access operation; select a set of execution times from the first set and the second set of execution times based on a current environmental condition; determine, for each task in a plurality of available tasks, a task execution time based on a type of the task and the selected set of execution times, wherein the determined task execution time corresponds to a recorded execution time in the selected set of execution times; and select from the plurality of available tasks, based on the first execution time and the task execution time for each task in the plurality of available tasks, one or more memory access tasks to be executed on the plurality of memory devices while the controller is performing the current memory access operation, the selected one or more memory access tasks having a total execution time that is less than the first execution time associated with the current memory access operation, wherein the one or more memory access tasks to be executed comprise at least one of;
a read host data operation, a program operation, and an erase operation, and wherein the current environmental condition corresponds to one of the first environmental condition and the second environmental condition. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A method for optimizing memory operations executed by a controller for a storage subsystem for storing data provided by a host system, the method comprising:
-
executing a plurality of memory access operations on a plurality of memory devices in a storage subsystem for a first environmental condition and for a second environmental condition; recording a first set of execution times of the plurality of memory access operations corresponding to the first environmental condition; recording a second set of execution times of the plurality of memory access operations corresponding to the second environmental condition; determining a first execution time associated with a current memory access operation; selecting a set of execution times from the first set and the second set of execution times based on a current environmental condition; determining, for each task in a plurality of available tasks, a task execution time based on a type of the task and the selected set of execution times, wherein the determined task execution time corresponds to a recorded execution time in the selected set of execution times; selecting from the plurality of available tasks, based on the first execution time and the task execution time for each task in the plurality of available tasks, one or more memory access tasks with a total recorded execution time that is less than the first execution time associated with the current memory access operation; and executing the selected one or more memory access tasks while the current memory access operation is being executed; wherein the selected one or more memory access tasks comprise at least one of;
a read host data operation, a program operation, and an erase operation, andwherein the current environmental condition corresponds to one of the first environmental condition and the second environmental condition. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. A storage subsystem, comprising:
-
a solid state non-volatile memory array, and a controller configured to write data to, and read data from, the solid state non-volatile memory in response to memory access commands received from a host system, the controller additionally configured to record, for each of a plurality of regions of the non-volatile solid state memory array, execution time data reflective of memory access operation execution times for the respective regions for a first environmental condition and for a second environmental condition, the controller further operative configured to; select a set of execution times from the recorded execution times based on a current environmental condition; determine, for each task in a plurality of available tasks, a task execution time based on a type of the task and the selected set of execution times, wherein the determined task execution time corresponds to a recorded execution time in the selected set of execution times; and select from the plurality of available tasks, based on the task execution time for each task in the plurality of available tasks, memory access tasks to perform concurrently with particular memory access operations initiated by the host system, the selected memory access tasks comprising at least one of;
a read host data operation, a program operation, and an erase operation, and the current environmental condition corresponding to one or the first environmental condition and the second environmental condition.
-
Specification