Hierarchically tagged cache
First Claim
Patent Images
1. A method for cache management, comprising:
- identifying, by a cache device controller, a header of a received data access request as being associated with one of a filesystem layer, a physical mapping layer, or an indirection layer, where each layer is indicated with an indexing structure of headers and the indexing structure of each of the layers is in a cache corresponding to the cache device controller,wherein the cache device controller manages headers in the cache hierarchically, manages indexes of the physical mapping layer indexing structure to map to physical addresses for data buffers, manages indexes of the indirection layer indexing structure each to map to an index of the physical mapping layer, and manages indexes of the filesystem layer indexing structure each to map to an index of the indirection layer; and
accessing the data buffer when an index includes the header, wherein accessing the data buffer comprises hierarchically traversing the indexes of the layers to a physical address for the data buffer, beginning at the index of the layer identified as being associated with the header, wherein the header comprises metadata when associated with either the filesystem layer or the indirection layer;
when an index does not include the header, creating an entry, for the header, in the indexing structure of the layer identified as being associated with the header;
maintaining a generation count for each data buffer, wherein for each data buffer the generation count is incremented each time the data buffer is evicted from the cache or each time the data buffer is used to hold a different data block; and
maintaining a generation count in each index entry created that references a data buffer, wherein an index entry that has a generation count different from a generation count of the referenced data buffer is evicted.
2 Assignments
0 Petitions
Accused Products
Abstract
A hierarchically tagged cache provides abstraction between access requests for data and the cached data. The cache is managed by hierarchical layers of indexes including reference to the data. Access requests indicate a header for the requested data, which is associated with one of the layers. Cache management determines what layer is associated with the header, and can traverse the indexes, beginning at the layer associated with the header, to access the data. If the header does not exist at the index of that layer, it can be created. Indexes can be appropriately updated with indexes at each layer being referenced by one or more indexes of the layer higher up in the hierarchy.
-
Citations
18 Claims
-
1. A method for cache management, comprising:
-
identifying, by a cache device controller, a header of a received data access request as being associated with one of a filesystem layer, a physical mapping layer, or an indirection layer, where each layer is indicated with an indexing structure of headers and the indexing structure of each of the layers is in a cache corresponding to the cache device controller, wherein the cache device controller manages headers in the cache hierarchically, manages indexes of the physical mapping layer indexing structure to map to physical addresses for data buffers, manages indexes of the indirection layer indexing structure each to map to an index of the physical mapping layer, and manages indexes of the filesystem layer indexing structure each to map to an index of the indirection layer; and accessing the data buffer when an index includes the header, wherein accessing the data buffer comprises hierarchically traversing the indexes of the layers to a physical address for the data buffer, beginning at the index of the layer identified as being associated with the header, wherein the header comprises metadata when associated with either the filesystem layer or the indirection layer; when an index does not include the header, creating an entry, for the header, in the indexing structure of the layer identified as being associated with the header; maintaining a generation count for each data buffer, wherein for each data buffer the generation count is incremented each time the data buffer is evicted from the cache or each time the data buffer is used to hold a different data block; and maintaining a generation count in each index entry created that references a data buffer, wherein an index entry that has a generation count different from a generation count of the referenced data buffer is evicted. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A cache system comprising:
-
a cache storage device to store multiple data buffers; and a cache controller to, manage access to the data buffers of the cache storage device, the cache controller to identify a header indicated in a data access request as being associated with one of a filesystem layer, a physical mapping layer, or an indirection layer, where each layer is indicated with an indexing structure of headers and the indexing structures are in the cache storage device, manage the headers hierarchically, manage indexes of the physical mapping layer indexing structure to map to physical addresses for data buffers, manage indexes of the indirection layer indexing structure each to map to an index of the physical mapping layer, and manage indexes of the filesystem layer indexing structure each to map to an index of the indirection layer, access a data buffer when one of the indexing structures includes the header, wherein the cache controller to access the data buffer comprises the cache controller to hierarchically traverse the indexes of the layers to a physical address for the data buffer, beginning at the index of the layer identified as being associated with the header, wherein the header comprises metadata when associated with either the filesystem layer or the indirection layer; and when an index does not include the header, create an entry, for the header, in the indexing structure of the layer identified as being associated with the header; maintain a generation count for each data buffer, wherein for each data buffer the generation count is incremented each time the data buffer is evicted from the cache or each time the data buffer is used to hold a different data block; and maintain a generation count in each index entry created that references a data buffer, wherein an index entry that has a generation count different from a generation count of the referenced data buffer is evicted. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A non-transitory computer-readable storage medium having program instructions stored thereon, the program instructions comprising program instructions to:
-
identify a header of a received data access request as being associated with one of a filesystem layer, a physical mapping layer, or an indirection layer, where each layer is indicated with an indexing structure of headers and the indexing structure of each of the layers is in a cache of a computing device, manage headers in the cache hierarchically, manage indexes of the physical mapping layer indexing structure to map to physical addresses for data buffers, manage indexes of the indirection layer indexing structure each to map to an index of the physical mapping layer, and manage indexes of the filesystem layer indexing structure each to map to an index of the indirection layer; access the data buffer when an index includes the header, wherein the program instructions to access the data buffer comprise program instructions to hierarchically traverse the indexes of the layers to a physical address for the data buffer, beginning at the index of the layer identified as being associated with the header, wherein the header comprises metadata when associated with either the filesystem layer or the indirection layer; and when an index does not include the header, create an entry, for the header, in the indexing structure of the layer identified as being associated with the header; maintain a generation count for each data buffer, wherein for each data buffer the generation count is incremented each time the data buffer is evicted from the cache or each time the data buffer is used to hold a different data block; and maintain a generation count in each index entry created that references a data buffer, wherein an index entry that has a generation count different from a generation count of the referenced data buffer is evicted. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification