Method for allocating memory in a solid state memory disk
First Claim
1. In a solid state memory having a plurality of blocks of memory wherein a portion of each block is located in at least one associated nonvolatile memory device, a method of allocating free memory to a calling process for a unit of data having a variable given size, the method comprising the steps of:
- A) selecting as a selected block a first block of memory to which data was last allocated if the first block has an amount of free memory equal to or greater than the given size;
B) if the amount of free memory in the first block is less than the given size, then1) for each appropriate block of memory;
a) generating a first number corresponding to an amount of free memory in that block;
b) generating a second number corresponding to an amount of memory containing invalid data in that block; and
c) summing the first and second numbers to generate a score;
2) selecting a second block having a greatest score as the select, block, if an amount of free memory in the selected block is not less than the given size; and
C) reserving the given size of free memory in the selected block.
0 Assignments
0 Petitions
Accused Products
Abstract
A method of allocating free physical memory in a solid state memory disk for a sector of data of a given size is described. Allocation begins by determining whether sufficient free memory remains in the block to which the previous sector of data was written. If there is not sufficient free memory remaining, then selection of another block to allocate the sector of data begins. The selection is based on the sum of the amount of free memory in a selected block and one of the following: 1) the amount of invalid data in the block; 2) the cycle count for the block; 3) the amount of invalid data as compared to a maximum amount of invalid data for all non-volatile memory devices associated with the block; and 4) the number of blocks already allocated to all non-volatile memory devices associated with the block. Afterward, the block with the greatest amount of available memory is selected to store the sector of data.
-
Citations
12 Claims
-
1. In a solid state memory having a plurality of blocks of memory wherein a portion of each block is located in at least one associated nonvolatile memory device, a method of allocating free memory to a calling process for a unit of data having a variable given size, the method comprising the steps of:
-
A) selecting as a selected block a first block of memory to which data was last allocated if the first block has an amount of free memory equal to or greater than the given size; B) if the amount of free memory in the first block is less than the given size, then 1) for each appropriate block of memory; a) generating a first number corresponding to an amount of free memory in that block; b) generating a second number corresponding to an amount of memory containing invalid data in that block; and c) summing the first and second numbers to generate a score; 2) selecting a second block having a greatest score as the select, block, if an amount of free memory in the selected block is not less than the given size; and C) reserving the given size of free memory in the selected block. - View Dependent Claims (2, 3)
-
-
4. In a solid state memory having a plurality of blocks of memory wherein a portion of each block is located in at least one associated nonvolatile memory device, a method of allocating free memory to a calling process for a unit of data having a variable given size, the method comprising the steps of:
-
A) selecting as a selected block a first block of memory to which data was last allocated if the first block has an amount of free memory equal to or greater than the given size; B) if the amount of free memory in the first block is less than the given size, then 1) for each appropriate block of memory; a) generating a first number corresponding to an amount of free memory in that block; b) generating a second number corresponding to a cycle count for that block; and c) summing the first and second numbers to generate a score; 2) selecting a second block having a greatest score as the selected block, if an amount of free memory in the selected block is not less than the given size; and C) reserving the given size of free memory in the selected block. - View Dependent Claims (5, 6)
-
-
7. In a solid state memory having a plurality of blocks of memory wherein a portion of each block is located in at least one associated nonvolatile memory device, a method of allocating free memory to a calling process for a unit of data having a variable given size, the method comprising the steps of:
-
A) selecting as a selected block a first block of memory to which data was last allocated if the first block has an amount of free memory equal to or greater than the given size; B) if the amount of free memory in the first block is less than the given size, then 1) for each appropriate block of memory; a) generating a first number corresponding to an amount of free memory in that block; b) generating a second number corresponding to an amount of memory containing invalid data as compared to a possible maximum amount of memory that can contain invalid data for all nonvolatile memory devices associated with that block; and c) summing the first and second numbers to generate a score; 2) selecting a second block having a greatest score as the selected block, if an amount of free memory in the selected block is not less than the given size; and C) reserving the given size of free memory in the selected block. - View Dependent Claims (8, 9)
-
-
10. In a solid state memory having a plurality of blocks of memory wherein a portion of each block is located in at least one associated nonvolatile memory device, a method of allocating free memory to a calling process for a unit of data having a variable given size, the method comprising the steps of:
-
A) selecting as a selected block a first block of memory to which data was last allocated if the first block has an amount of free memory equal to or greater than the given size; B) if the amount of free memory in the first block is less than the given size, then 1) for each appropriate block of memory; a) generating a first number corresponding to an amount of free memory in that block; b) generating a second number corresponding to a number of block portions already allocated in all nonvolatile memory devices associated with that block; and c) summing the first and second numbers to generate a score; 2) selecting a second block having a greatest score as the selected block, if an amount of free memory in the selected block is not less than the given size; and C) reserving the given size of free memory in the selected block. - View Dependent Claims (11, 12)
-
Specification