Region-Based Cache Directory Splitting for Multi-Node Coherency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The existing line-based cache directory schemes are unable to keep up with the exponential growth of CPU cache sizes, leading to inefficiencies in managing cache coherency across multi-node computer systems.

Innovation Solution

Implementing a region-based cache directory scheme that splits cache directories between processing nodes and memory, where each node tracks regions with multiple cache lines and includes reference counts to manage cache coherency, reducing the number of entries and filtering out unnecessary victim modifications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a line-based cache directory scheme is used to track each cache line individually, then cache coherency can be maintained accurately, but the size of the cache directory increases linearly with the total capacity of all CPU cache subsystems and cannot keep up with exponential growth of cache sizes

Engineering Contradiction:
Improvecache coherency maintenanceVSAvoidcache directory size
Core Design Contradiction:
ReliabilityVSVolume of stationary object

Solution Approach 1:

The cache directory is segmented into multiple regions, where each region tracks a subset of cache lines. Instead of having a single large directory tracking every cache line individually, the system divides the address space into regions and creates separate directory entries for each region, reducing the total number of directory entries needed while maintaining coherency tracking capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Multiple cache lines within the same region are merged into a single directory entry that tracks the coherency state for the entire region. This consolidation reduces the number of directory entries from one per cache line to one per region, allowing the directory size to grow more slowly than the total cache capacity.

Inventive Principle:
Principle #5Merging (Combining)

2Reliability

If cache directories are increased in size to track all cache lines, then coherency tracking becomes more accurate, but memory bandwidth and probe bandwidth are consumed inefficiently

Engineering Contradiction:
Improvecoherency tracking accuracyVSAvoidmemory bandwidth consumption
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

By segmenting the cache directory into regions, the system reduces the total number of directory entries that need to be probed and updated. This segmentation allows coherency tracking to be maintained with fewer memory accesses, reducing bandwidth consumption while preserving tracking accuracy at the region level.

Inventive Principle:
Principle #1Segmentation

3Volume of stationary object

If a region-based cache directory scheme is implemented to reduce directory size, then the number of entries is reduced and traffic to memory is minimized, but the complexity of managing reference counts and region tracking increases

Engineering Contradiction:
Improvecache directory sizeVSAvoidregion tracking mechanism
Core Design Contradiction:
Volume of stationary objectVSDevice complexity

Solution Approach 1:

The region-based directory entry is designed to serve multiple functions: it tracks coherency state for multiple cache lines within a region, maintains reference counts for efficiency tracking, and provides a compact representation that reduces memory usage. This multi-functionality justifies the added complexity by delivering multiple benefits from a single data structure.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The system changes the fundamental parameter of directory organization from individual cache line tracking to region-based tracking. This parameter change transforms the directory from a fine-grained structure to a coarser-grained structure, reducing size and traffic at the cost of increased management logic for region boundaries and reference counts.

Inventive Principle:
Principle #35Parameter changes

4Quantity of substance

If cache sizes grow exponentially with memory technology improvements, then more data can be cached locally, but line-based directory schemes cannot keep up with the growth

Engineering Contradiction:
Improvecache capacityVSAvoiddirectory scalability
Core Design Contradiction:
Quantity of substanceVSAdaptability or versatility

Solution Approach 1:

The region-based directory segmentation allows the system to scale to larger cache capacities by organizing the address space into manageable regions. As cache capacity grows exponentially, the number of regions grows much more slowly, providing a scalable directory structure that can accommodate future cache size increases without proportionally increasing directory complexity.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS12158845B2Region based split-directory scheme to adapt to large cache sizes
Publication Date: 2024.12.03 ADVANCED MICRO DEVICES INC
  • US12158845B2 patent drawing
  • US12158845B2 patent drawing
  • US12158845B2 patent drawing

AI summary

Systems, apparatuses, and methods for maintaining region-based cache directories split between node and memory are disclosed. The system with multiple processing nodes includes cache directories split between the nodes and memory to help manage cache coherency among the nodes' cache subsystems. In order to reduce the number of entries in the cache directories, the cache directories track coherency on a region basis rather than on a cache line basis, wherein a region includes multiple cache lines. Each processing node includes a node-based cache directory to track regions which have at least one cache line cached in any cache subsystem in the node. The node-based cache directory includes a reference count field in each entry to track the aggregate number of cache lines that are cached per region. The memory-based cache directory includes entries for regions which have an entry stored in any node-based cache directory of the system.