Unified Cache with Tag Array for Multi-Type Data Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional cache systems in processors are inflexible and space-intensive due to the need for multiple separate caches for different types of data, which limits their efficiency and increases the overall space required within the processor.
Innovation Solution
A cache system with a data array and a tag array that can store multiple types of data, using comparators to identify and retrieve data efficiently, and a content addressable memory to store identification bits, allowing for dynamic assignment of entries and a single I/O interface, thereby reducing space and improving flexibility.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If multiple separate caches are used to store different types of data, then data retrieval reliability is improved, but device complexity and space consumption increase
Solution Approach 1:
The patent combines multiple separate caches (instruction cache, data cache, unified cache) into a single cache structure that can store different types of data simultaneously. The cache includes a data array with multiple banks and a tag array with type identifiers that distinguish between different data types, allowing one cache to perform functions previously requiring multiple separate caches.
Solution Approach 2:
The cache is designed as a universal structure that can store and retrieve multiple types of data (instruction data, data operands, unified data) through a single interface. The tag array includes type identification fields that enable the cache to differentiate and properly handle different data types, making the cache multi-functional rather than dedicated to a single purpose.
2Reliability
If multiple separate caches are used to store different types of data, then data retrieval reliability is improved, but the space required within the processor increases
Solution Approach 1:
The patent combines multiple separate caches (instruction cache, data cache, unified cache) into a single cache structure that can store different types of data simultaneously. The cache includes a data array with multiple banks and a tag array with type identifiers that distinguish between different data types, allowing one cache to perform functions previously requiring multiple separate caches.
Solution Approach 2:
The cache is designed as a universal structure that can store and retrieve multiple types of data (instruction data, data operands, unified data) through a single interface. The tag array includes type identification fields that enable the cache to differentiate and properly handle different data types, making the cache multi-functional rather than dedicated to a single purpose.
3Device complexity
If a single cache stores multiple types of data, then device complexity is reduced, but data retrieval speed may be affected
Solution Approach 1:
The cache is segmented into multiple banks within the data array, each capable of independent operation. The tag array is also segmented with separate fields for type identification. This segmentation allows parallel access to different data types and prevents retrieval operations on one data type from interfering with others, maintaining high speed despite the unified structure.
Solution Approach 2:
The cache employs dynamic allocation and management of entries based on data type. The system can dynamically determine which bank to access based on the type identifier in the tag array, and can dynamically allocate cache space to different data types based on current processor needs, optimizing retrieval speed for the most frequently accessed data types.
Data Source
AI summary
A cache is provided, including a data array having a plurality of entries configured to store a plurality of different types of data, and a tag array having a plurality of entries and configured to store a tag of the data stored at a corresponding entry in the data array and further configured to store an identification of the type of data stored in the corresponding entry in the data array.


