Optimization of non-volatile solid-state memory by moving data based on data generation and memory wear
AssigneeMicrosoft Corporation
InventorsJames R Hamilton, Michael R Fortin, Mike Neil, Burton J Smith
Life of this patent
Estimating the term…
Abstract
An exemplary method includes writing data to locations in non-volatile solid-state memory and deciding whether to move data written to one location in the memory to another location in the memory based on generation of the data and wear of the other location. Such a method may be used for non-volatile random access memory (NVRAM). Various other methods, devices, systems, etc., are also disclosed.
Claims19
A method implemented at least in part by a computing device, the method comprising:
- determining whether to move an amount of data currently written to a first location in a non-volatile solid state memory to a second location in the non-volatile solid state memory based at least in part on a type-indicator for the amount of data currently written to the first location, the type-indicator being one of a data type-indicator that is indicative of a type of data or a file type-indicator that is indicative of a type of file;
- assessing a current utilization of the non-volatile solid state memory, the current utilization of the non-volatile solid state memory being indicative of a current percentage of the non-volatile solid state memory in which data is currently stored;
- determining to not move the amount of data currently written to the first location if the current utilization of the non-volatile solid state memory exceeds a utilization limit;
- and
- moving the amount of data currently written to the first location in the non-volatile solid state memory to the second location in the non-volatile solid state memory responsive to determining to move the amount of data.
A method implemented by a computer for generational wear-leveling in non-volatile random access memory (NVRAM), the NVRAM comprising multiple blocks, the method comprising:
- maintaining a respective wear value for each block of the NVRAM, and maintaining a respective data generation value for a respective amount of data currently written to a respective block for each block of the NVRAM, wherein the data generation value is indicative of a number of write cycles that the amount of data currently written to a respective block has persisted in the NVRAM;
- determining a total memory utilization value that is indicative of a current amount of blocks of the NVRAM currently storing data;
- determining whether to move a respective amount of data currently written to a first block to a second block based at least in part on the total memory utilization value for the NVRAM being below a utilization limit and the data generation value for the respective amount of data currently written to the first block, wherein the respective amount of data written to the first block is not moved if the total memory utilization value exceeds the utilization limit;
- and
- responsive to determining to move the respective amount of data currently written to the first block to the second block, wear-leveling the NVRAM by moving the respective amount of data currently written to the first block to the second block, wherein the second block has a higher wear value than the first block.
A system comprising:
- non-volatile solid-state memory having locations in which data is written;
- a memory controller to write data to the locations of the non-volatile solid-state memory;
- and
- control logic configured to maintain, for the locations of the memory, a generation value of data written to a location of the non-volatile solid-state memory, and maintain wear values for the locations of the memory, configured to determine whether to move data written to a first location in the memory to a second location in the memory based at least in part on the data attribute information for the data written to the first location in the memory and the wear value for the second location in the memory, wherein the generation value for data written to a respective location of the memory is indicative of a number of write cycles that the data currently written to the respective location of the memory has persisted in the memory, and further configured to determine to not move data written to the first location in the memory to the second location in the memory responsive to the generation value for the data written to the first location in the memory being less than a generation limit.
Dependencies are inferred from the claim text.