Decoupled Cache Coherence Directory Architecture for Many-Core Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The scalability of cache coherence protocols becomes increasingly challenging with the rapid increase in the number of cores on a chip, particularly due to power and area issues when applying directory coherence to many-core domains.
Innovation Solution
A cache coherence directory architecture, called SelectDirectory, decouples the tag array and data array, allocating data entries only for actively shared blocks, and de-allocating them when blocks become temporarily private or get evicted, thereby reducing directory size without degrading performance.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If directory coherence protocol is applied to many-core domain, then cache coherence is maintained, but power consumption and area increase significantly
Solution Approach 1:
The patent segments the directory structure into two independent arrays: tag array and data array. The tag array stores tag information for all cache blocks, while the data array stores sharing information only for actively shared blocks. This segmentation allows the system to maintain coherence tracking for all blocks while reducing the size of the data array, thereby lowering power consumption and area without compromising coherence reliability.
Solution Approach 2:
The patent implements dynamic allocation of data entries in the data array based on the sharing state of cache blocks. Data entries are allocated only when blocks become actively shared and deallocated when blocks become temporarily private. This dynamic behavior allows the directory to adapt to changing sharing patterns, maintaining necessary coherence information while minimizing the active directory size, thus reducing power consumption and area.
2Reliability
If directory coherence protocol is applied to many-core domain, then cache coherence is maintained, but area increases significantly
Solution Approach 1:
The patent segments the directory structure into two independent arrays: tag array and data array. The tag array stores tag information for all cache blocks, while the data array stores sharing information only for actively shared blocks. This segmentation allows the system to maintain coherence tracking for all blocks while reducing the size of the data array, thereby lowering power consumption and area without compromising coherence reliability.
Solution Approach 2:
The patent applies different storage strategies to different types of cache blocks based on their sharing characteristics. For temporarily private blocks, only tag information is stored in the tag array. For actively shared blocks, additional data entries are allocated in the data array to track sharing information. This local quality approach ensures that area is used efficiently by storing detailed sharing information only where necessary.
3Ease of operation
If data entries are allocated for all cache blocks, then sharing information is always available, but directory size increases
Solution Approach 1:
The patent implements dynamic allocation of data entries in the data array based on the sharing state of cache blocks. Data entries are allocated only when blocks become actively shared and deallocated when blocks become temporarily private. This dynamic behavior allows the directory to adapt to changing sharing patterns, maintaining necessary coherence information while minimizing the active directory size, thus reducing power consumption and area.
Solution Approach 2:
The patent changes the parameter of directory entry allocation from static (always allocated) to dynamic (allocated based on sharing state). By monitoring the sharing state parameter and adjusting data entry allocation accordingly, the system ensures sharing information is available when needed while minimizing directory size when blocks are private.
Data Source
AI summary
A data processing method includes allocating a tag entry in a tag array for a data block; allocating a data entry in a data array for the data block when the data block is actively shared; and de-allocating the data entry when the data block is temporarily private or gets evicted in the data array.


