Method for dynamically and efficiently caching objects by subdividing cache memory blocks into equally-sized sub-blocks
First Claim
1. In a logical cache memory including a plurality of maximal-size pages beginning at a logical cache base memory address, each maximal-size logical cache memory page configured to store data objects of a given size, a method for dynamically reconfiguring one of the logical cache memory pages to store data objects having a size different from the size of the data object previously stored by that cache page, the method comprising the steps of:
- (a) receiving a data object to be cached having a size smaller than the maximal size;
(b) determining whether one of a plurality of logical cache memory pages is already configured to store data objects having the smaller size of the received data object;
(c) selecting, when no logical cache memory page is already configured to store data objects having the smaller size of the received data object, one of the maximal logical cache memory pages; and
(d) reconfiguring the selected cache page into more than two equally-sized blocks for storing data objects having the smaller size of the received data object.
3 Assignments
0 Petitions
Accused Products
Abstract
A method for dynamically caching data objects in a logical cache memory begins by organizing the logical cache memory into a set of maximally equally-sized, contiguous pages that begin at a logical cache base address. Any one of the maximal size logical cache pages may be dynamically subdivided into a set of smaller pages of equal size. The smaller size pages cache data objects having a smaller size than the maximum possible data object size. Each subdivided page stores only those smaller size data objects. The logical address for a page is mapped to at least a maximal size page index identifying the position of the maximal size logical page in the cache and, if the page is a smaller size page, the page location is also mapped to a smaller size page index which identifies a particular one of the smaller size pages located within a maximal size page. Pages are dynamically reconfigured based on a least-recently-used policy. A maximal size page may be reconfigured to provide for storage of multiple smaller sized pages and a set of smaller sized pages may be reconfigured to provide storage for a maximal size page. In one aspect, maximally sized pages may be chained together to provide for storage of data objects which exceed the size of the pages. Chained pages may be contiguous or non-contiguous.
157 Citations
23 Claims
-
1. In a logical cache memory including a plurality of maximal-size pages beginning at a logical cache base memory address, each maximal-size logical cache memory page configured to store data objects of a given size, a method for dynamically reconfiguring one of the logical cache memory pages to store data objects having a size different from the size of the data object previously stored by that cache page, the method comprising the steps of:
-
(a) receiving a data object to be cached having a size smaller than the maximal size; (b) determining whether one of a plurality of logical cache memory pages is already configured to store data objects having the smaller size of the received data object; (c) selecting, when no logical cache memory page is already configured to store data objects having the smaller size of the received data object, one of the maximal logical cache memory pages; and (d) reconfiguring the selected cache page into more than two equally-sized blocks for storing data objects having the smaller size of the received data object. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. In a logical cache memory including a plurality of maximal-size pages beginning at a logical cache base memory address, each maximal-size logical cache memory page configured to store data objects of a given size, a method for dynamically reconfiguring one of the logical cache memory pages to store data objects having a size different from the size of the data object previously stored by that cache page, the method comprising the steps of:
-
(a) receiving a data object to be cached having a size greater than the maximal size; (b) subdividing the data object into first and second data chunks; (c) assigning a first chunk index to the first data chunk and a second chunk index to the second data chunk, each index representing the maximal-size page in which the respective data chunk is stored; and (d) storing the second chunk index at a location in a control store that corresponds to the first chunk index for use in identifying the location of the second data chunk. - View Dependent Claims (12, 13)
-
-
14. A method for efficiently caching data objects in a logical cache memory including a plurality of maximal-size pages beginning at a logical base memory address, the logical cache memory using prescribed portions of a plurality of heterogeneous physical memory units for storage of data, the method comprising:
-
(a) labeling each of the plurality of physical memory units with a unique rank index, the rank index indicative of the relative memory speed of the physical memory unit; (b) allocating a portion of each physical memory unit for use by the logical cache memory; (c) forming a continuous, addressable logical address space for the logical cache memory that encompasses the allocated portions of the physical memory units by ordering the allocated portions of the physical memory units based on the rank indices the logical cache memory beginning at a logical cache memory base address, each maximal-size page configured to store data objects of a maximal size and identified as storing data objects of a maximal-size, (d) receiving a data object to be cached having a size smaller than the maximal size; (e) determining whether one of the plurality of logical cache memory pages is already configured to store data objects having the smaller size of the received data object; (f) selecting, when no logical cache memory page is already configured to store data objects having the smaller size of the received data object, one of the maximal-size logical cache memory pages; and (g) reconfiguring the selected cache page into more than two equally-sized blocks for storing data objects having the smaller size of the received data object. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23)
-
Specification