Floating Tag Cache Mapping for Compressed Object Fragmentation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Sectored caches do not effectively reduce cache fragmentation and are complex due to handling various object sizes, leading to inefficiencies in cache capacity usage.
Innovation Solution
Implementing a floating tag system that allows multiple compressed objects to share a single cache line, using additional tags that dynamically map to cache lines, reducing fragmentation and simplifying the design.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If sectored caches are used to store smaller objects in subsections of cache lines, then tag storage is reduced by reusing tag bits across adjacent cache lines, but cache fragmentation is not reduced and the design becomes complex
Solution Approach 1:
The patent divides the tag array into multiple independent tag groups, where each tag group can independently map to different cache lines. This segmentation allows flexible association between tags and cache lines without requiring complex tag bit reuse mechanisms, thereby reducing design complexity while improving cache utilization.
Solution Approach 2:
Each tag group is designed to be universal and can map to any cache line in the data array. This multi-functionality eliminates the need for dedicated tag-bit reuse logic specific to sectored caches, simplifying the overall design while enabling efficient cache capacity utilization through flexible tag-to-cache-line mappings.
2Device complexity
If fixed-size cache lines are used to store compressed objects, then cache structure is simple, but remaining space in cache lines is wasted when compressed objects are smaller than the cache line size
Solution Approach 1:
The patent introduces dynamic tag groups that can be selectively activated and mapped to different cache lines based on the size and access patterns of compressed objects. This dynamic approach allows the cache system to adapt to varying object sizes without changing the fixed cache line structure, thereby eliminating space waste while maintaining structural simplicity.
Solution Approach 2:
The system changes the mapping parameters between tag groups and cache lines dynamically. By adjusting which tag group maps to which cache line based on object characteristics, the system optimizes space utilization without requiring variable cache line sizes, thus maintaining simple fixed-size cache lines while reducing space waste.
3Adaptability or versatility
If compressed caches handle many different object sizes with complex tag management, then variable-sized objects are supported, but the cache design becomes very complex
Solution Approach 1:
The tag array is segmented into multiple independent tag groups, each capable of handling different object size scenarios. This segmentation eliminates the need for a single complex tag management system that must handle all object sizes, thereby supporting variable-sized objects while reducing overall tag management complexity.
Solution Approach 2:
The patent introduces tag group selection logic as an intermediary between the cache control logic and the tag array. This intermediary selectively activates appropriate tag groups based on object characteristics, simplifying the tag management complexity by avoiding the need for a monolithic complex tag management system while maintaining adaptability to various object sizes.
Data Source
AI summary
A method and device are provided in which a controller of a storage device determines whether entries of a tag array and a floating tag array, in a cache memory of the storage device, include an entry that corresponds to an object, in a data array of the cache memory, that is to be fetched or updated. In case that the entries comprise the entry that corresponds to the object, the controller also fetches or updates the object in the data array. The entries comprise tag entries of the tag array and floating tag entries of the floating tag array. The floating tag entries are associated with objects in one or more data entries of the data array, and the objects are smaller than or equal to a data entry size of the data array.


