Distributed data cache with memory allocation model
First Claim
1. A memory allocation system for data caching comprising:
- a computer platform containing a computer software operating system capable of memory allocation;
a memory associated with the computer platform to store data; and
a cache controller associated with the memory to allocate memory portions independently of the operating system for storage of data, the cache controller receiving a first allocation request to allocate a first amount of memory to store a first data item and allocating one or more blocks of the memory, each having a predetermined block size, wherein the memory allocated in the one or more blocks of memory is approximately equal to the first amount of memory, the cache controller requesting a memory allocation from the operating system if the amount of memory allocated in the one or more blocks of memory is smaller than the first amount of memory, wherein the total memory allocated in the one or more blocks of memory and allocated by the operating system is sufficient to meet the first allocation request.
3 Assignments
0 Petitions
Accused Products
Abstract
A cache system allocates memory for storage of data items by defining a series of small blocks that are uniform in size. The system allocates one or more blocks from memory and assigns them for storage of a data item. If the data item exceeds the predetermined block size, more blocks are assigned for storage. If a residual portion of the data item less than the predetermined the block size remains, the operating system may allocate an additional small storage block to store the residual portion of the data item. The operating system allocates a large number of small blocks with a plurality of blocks having different sizes where a first plurality of blocks has one block size and a second plurality of blocks has a different block size. The large number of blocks allocated by the operating system avoid contention from multiple users requesting access to the data cache. The predetermined blocks are allocated by the data cache software itself and are not allocated by the operating system. In an exemplary embodiment, the blocks allocated by the data cache software need not be contiguous within the memory. Rather, each block contains a pointer to the start of the next block for a particular data item and the last block of the predetermined size blocks contains a pointer to the residual portion. A status list contains data indicating whether the particular blocks are free or used. When allocating blocks for storage of a data item, the system will use the status list to determine which blocks are free. The status list is updated to indicate the blocks have been allocated when a data item is stored within the cache. When a data item is removed from the cache, the status list is again updated to indicate that the availability of the blocks.
-
Citations
39 Claims
-
1. A memory allocation system for data caching comprising:
-
a computer platform containing a computer software operating system capable of memory allocation;
a memory associated with the computer platform to store data; and
a cache controller associated with the memory to allocate memory portions independently of the operating system for storage of data, the cache controller receiving a first allocation request to allocate a first amount of memory to store a first data item and allocating one or more blocks of the memory, each having a predetermined block size, wherein the memory allocated in the one or more blocks of memory is approximately equal to the first amount of memory, the cache controller requesting a memory allocation from the operating system if the amount of memory allocated in the one or more blocks of memory is smaller than the first amount of memory, wherein the total memory allocated in the one or more blocks of memory and allocated by the operating system is sufficient to meet the first allocation request. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-readable media containing computer instructions that cause a computer containing a computer software operating system capable of memory allocation to:
-
designate a portion of a memory associated with the computer platform to store data;
receive a first allocation request for a first amount of the memory to store a first data item;
allocate one or more blocks of the memory independently of the operating system, each having a predetermined block size, wherein the memory allocated in the one or more blocks of memory is approximately equal to the first amount of memory; and
request a memory allocation from the operating system if the amount of memory allocated in the one or more blocks of memory is smaller than the first amount of memory wherein the total memory allocated in the one or more blocks of memory and allocated by the operating system is sufficient to meet the first allocation request. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
receive a second allocation request for a second amount of the memory to store a second data item;
allocate one or more unallocated blocks of the memory independently of the operating system, each having a predetermined block size, wherein the memory allocated in the one or more blocks of memory is approximately equal to the second amount of memory; and
request a memory allocation from the operating system if the memory allocated in the one or more blocks of memory is smaller than the second amount of memory, wherein the total memory allocated in the one or more blocks of memory and allocated by the operating system is sufficient to meet the second allocation request.
-
-
25. The computer-readable media of claim 13, further comprising computer instructions to delete the first data item from the memory, thereby rendering the one or more blocks of memory allocated in response to the first allocation request available for allocation in response to another allocation request whereby further allocation acts may allocate the one or more blocks allocated for the first allocation request.
-
26. A method of allocating memory in a computer containing a computer software operating system capable of memory allocation, the method comprising:
-
designating a portion of a memory associated with the computer platform to store data;
receiving a first allocation request for a first amount of the memory to store a first data item;
allocating one or more blocks of the memory independently of the operating system, each having a predetermined block size, wherein the memory allocated in the one or more blocks of memory is approximately equal to the first amount of memory; and
requesting a memory allocation from the operating system if the memory allocated in the one or more blocks of memory is smaller than the first amount of memory, wherein the total memory allocated in the one or more blocks of memory and allocated by the operating system is sufficient to meet the first allocation request. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. A computer-readable medium having computer-executable instructions to perform a method of operating a computer, the computer having a memory, the computer further having an operating system that performs at least the function of allocating portions of the memory, the method comprising:
-
receiving a request for memory;
allocating one or more blocks of memory without requesting memory from the operating system, each of the blocks having a predetermined block size, said one or more blocks containing a first amount of memory;
determining that said first amount of memory is insufficient to meet said request; and
issuing a call to the operating system to allocate a second amount of memory, said first and second amounts of memory together being sufficient to meet said first request. - View Dependent Claims (37, 38, 39)
examining the status indicators associated with said one or more blocks to determine that said one or more blocks are free.
-
Specification