Advanced management of a non-volatile memory
First Claim
1. A method of managing a non-volatile memory device, the method comprising:
- computing, for each suggested number of memory space subsets out of multiple suggested numbers, a quantity thereby providing multiple quantities to the multiple suggested numbers;
wherein each quantity is calculated in response to;
(a) a number of transaction timeout durations required to perform a merge of a logical memory block;
(b) an instantaneous number of logical memory blocks which have at least one associated data sectors in a buffer;
(c) a number of data sectors in a data block of the buffer;
(d) the suggested number of memory space subsets;
(e) a time duration for writing a data sector;
(f) a number of data blocks in the buffer, and (g) a time duration for performing a merge of a logical memory block;
selecting, out of the multiple suggested numbers of memory space subsets, a selected suggested number that yields a highest value quantity out of the multiple quantities;
partitioning, in response to the selected suggested number, the memory space to multiple memory space subsets;
receiving data sectors;
wherein each data sector belongs to a memory space subset out of the multiple memory space subsets;
wherein the multiple memory space subsets comprise a plurality of logical memory blocks;
writing each data sector into a data block that is allocated to a memory space subset that is associated with the data sector;
wherein the data block belongs to a buffer of the non-volatile memory device;
maintaining a management data structure that comprises location metadata about a location of each data sector in the buffer; and
merging, if a criterion is fulfilled and before the buffer becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer.
10 Assignments
0 Petitions
Accused Products
Abstract
A method of managing a non-volatile memory device, the method comprising: receiving data sectors; writing each data sector into a data block that is allocated to a memory space subset that is associated with the data sector; wherein the data block belongs to a buffer of the non-volatile memory device; maintaining a management data structure that comprises location metadata about a location of each data sector in the buffer; and merging, if a criterion is fulfilled and before the buffer becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer.
-
Citations
19 Claims
-
1. A method of managing a non-volatile memory device, the method comprising:
-
computing, for each suggested number of memory space subsets out of multiple suggested numbers, a quantity thereby providing multiple quantities to the multiple suggested numbers;
wherein each quantity is calculated in response to;
(a) a number of transaction timeout durations required to perform a merge of a logical memory block;
(b) an instantaneous number of logical memory blocks which have at least one associated data sectors in a buffer;
(c) a number of data sectors in a data block of the buffer;
(d) the suggested number of memory space subsets;
(e) a time duration for writing a data sector;
(f) a number of data blocks in the buffer, and (g) a time duration for performing a merge of a logical memory block;selecting, out of the multiple suggested numbers of memory space subsets, a selected suggested number that yields a highest value quantity out of the multiple quantities; partitioning, in response to the selected suggested number, the memory space to multiple memory space subsets; receiving data sectors;
wherein each data sector belongs to a memory space subset out of the multiple memory space subsets;
wherein the multiple memory space subsets comprise a plurality of logical memory blocks;writing each data sector into a data block that is allocated to a memory space subset that is associated with the data sector;
wherein the data block belongs to a buffer of the non-volatile memory device;maintaining a management data structure that comprises location metadata about a location of each data sector in the buffer; and merging, if a criterion is fulfilled and before the buffer becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of managing a non-volatile memory device, the method comprising:
-
receiving data sectors;
wherein each data sector belongs to a memory space subset out of multiple memory space subsets;
wherein the multiple memory space subsets comprise a plurality of logical memory blocks;writing each data sector into a data block that is allocated to a memory space subset that is associated with the data sector;
wherein the data block belongs to a buffer of the non-volatile memory device;maintaining a management data structure that comprises location metadata about a location of each data sector in the buffer; if a criterion is fulfilled and before the buffer becomes full, then selecting a set of logical blocks to be merged and merging data sectors stored at different data blocks and belong to the selected set of logical memory blocks of logical blocks to be merged into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer; and wherein the selecting of the set of logical blocks to be merged comprises; determining a permutation transformation on a set of logical block indices; selecting a set of indices; and computing the logical block indices by employing the permutation on the set of indices. - View Dependent Claims (12)
-
-
13. A method of managing a non-volatile memory device, the method comprising:
-
receiving data sectors;
wherein each data sector belongs to a memory space subset out of multiple memory space subsets;
wherein the multiple memory space subsets comprise a plurality of logical memory blocks;writing each data sector into a data block that is allocated to a memory space subset that is associated with the data sector;
wherein the data block belongs to a buffer of the non-volatile memory device;maintaining a management data structure that comprises location metadata about a location of each data sector in the buffer; merging, if a criterion is fulfilled and before the buffer becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer; performing a cleaning process that comprises writing data sectors that are associated with a group of one or more logical memory blocks and are stored at one or more data blocks to one or more currently open data blocks of the buffer; determining the group of one or more logical memory blocks by;
computing a quantity in response to an instantaneous number of logical memory blocks which have at least one associated data sector in the buffer in response to a number of data blocks in the buffer, and in response to a predefined constant; andcomputing, based on said quantity and on at least one previously computed quantity that was computed during at least one previous cleaning process that preceded the current cleaning process, an integer number of logical memory blocks to be cleaned. - View Dependent Claims (14, 15, 16)
-
-
17. A non-transitory computer readable medium that stores instructions that once executed by a memory controller cause the memory controller to:
-
compute, for each suggested number of memory space subsets out of multiple suggested numbers, a quantity thereby providing multiple quantities to the multiple suggested numbers;
wherein each quantity is calculated in response to;
(a) a number of transaction timeout durations required to perform a merge of a logical memory block;
(b) an instantaneous number of logical memory blocks which have at least one associated data sectors in a buffer;
(c) a number of data sectors in a data block of the buffer;
(d) the suggested number of memory space subsets;
(e) a time duration for writing a data sector;
(f) a number of data blocks in the buffer, and (g) a time duration for performing a merge of a logical memory block;select, out of the multiple suggested numbers of memory space subsets, a selected suggested number that yields a highest value quantity out of the multiple quantities; partition, in response to the selected suggested number, the memory space to multiple memory space subsets; receive data sectors;
wherein each data sector belongs to a memory space subset out of the multiple memory space subsets;
wherein the multiple memory space subsets comprise a plurality of logical memory blocks;write each data sector into a data block that is allocated to a memory space subset that is associated with the data sector;
wherein the data block belongs to a buffer of the non-volatile memory device;maintain a management data structure that comprises location metadata about a location of each data sector in the buffer; and merge, if a criterion is fulfilled and before the buffer becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer.
-
-
18. A non-transitory computer readable medium that stores instructions that once executed by a memory controller cause the memory controller to:
-
receive data sectors;
wherein each data sector belongs to a memory space subset out of multiple memory space subsets;
wherein the multiple memory space subsets comprise a plurality of logical memory blocks;write each data sector into a data block that is allocated to a memory space subset that is associated with the data sector;
wherein the data block belongs to a buffer of the non-volatile memory device;maintain a management data structure that comprises location metadata about a location of each data sector in the buffer; if a criterion is fulfilled and before the buffer becomes full, then select a set of logical blocks to be merged and merge data sectors stored at different data blocks and belong to the selected set of logical memory blocks of logical blocks to be merged into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer; and wherein a selecting of the set of logical blocks to be merged comprises; determining a permutation transformation on a set of logical block indices;
selecting a set of indices; and
computing the logical block indices by employing the permutation on the set of indices.
-
-
19. A non-transitory computer readable medium that stores instructions that once executed by a memory controller cause the memory controller to:
-
receive data sectors;
wherein each data sector belongs to a memory space subset out of multiple memory space subsets;
wherein the multiple memory space subsets comprise a plurality of logical memory blocks;write each data sector into a data block that is allocated to a memory space subset that is associated with the data sector;
wherein the data block belongs to a buffer of the non-volatile memory device;maintain a management data structure that comprises location metadata about a location of each data sector in the buffer; merge, if a criterion is fulfilled and before the buffer becomes full, data sectors stored at different data blocks and belong to a same set of logical memory blocks into a sequential portion of the non-volatile memory device, wherein the sequential portion differs from the buffer; perform a cleaning process that comprises writing data sectors that are associated with a group of one or more logical memory blocks and are stored at one or more data blocks to one or more currently open data blocks of the buffer; determine the group of one or more logical memory blocks by;
computing a quantity in response to an instantaneous number of logical memory blocks which have at least one associated data sector in the buffer in response to a number of data blocks in the buffer, and in response to a predefined constant; andcompute, based on said quantity and on at least one previously computed quantity that was computed during at least one previous cleaning process that preceded the current cleaning process, an integer number of logical memory blocks to be cleaned.
-
Specification