Buffered Indexing for Hierarchical Cache Coherency
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing computer designs face challenges in maintaining coherency of entries in hierarchical tables without impacting service time or requiring excessive space or logic, particularly in dynamic high-speed access tables like translation caches.
Innovation Solution
A hierarchical organization with buffered indexing is implemented, where multiple lower-level entries are linked to single higher-level entries, using index sets (Current, Dirty, and Clean) to manage index values, allowing for background invalidation and scrubbing to prevent coherency risks, thus maintaining coherency without impacting request service times.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If hierarchical organization is used to share common information among entries, then space efficiency is improved, but maintaining coherency becomes more complex
Solution Approach 1:
The patent applies preliminary action by pre-incrementing the index value at the time of parent entry replacement or invalidation, rather than waiting until coherency checks are needed. This proactive update of the index value in the buffered index allows child entries to be efficiently validated later by simple comparison, resolving the coherency maintenance complexity while preserving space efficiency benefits of hierarchical organization
Solution Approach 2:
The patent introduces a buffered index as an intermediary structure between parent and child entries. This buffered index stores incremented index values that mediate the coherency relationship, allowing child entries to be validated by comparing their stored index values against the buffered index without requiring complex real-time coordination or exhaustive searches, thus reducing coherency maintenance complexity
2Reliability
If invalidation of child entries is performed exhaustively, then coherency is maintained, but service time of requests is impacted
Solution Approach 1:
The patent applies preliminary action by pre-updating the buffered index value when a parent entry is replaced or invalidated, so that coherency information is prepared in advance. This eliminates the need for time-consuming exhaustive invalidation searches when requests arrive, as child entries can be quickly validated by comparing their stored index values against the pre-updated buffered index, thus maintaining coherency without impacting service time
Solution Approach 2:
The patent uses partial action by only invalidating or scrubbing child entries when their stored index values no longer match the current buffered index value, rather than exhaustively invalidating all child entries. This selective approach maintains coherency while minimizing the time spent on invalidation operations, allowing most child entries to remain valid and accessible without time-consuming checks
3Reliability
If multiple index sets are maintained for buffered indexing, then coherency management is improved, but space requirement increases
Solution Approach 1:
The patent applies local quality by maintaining multiple index sets (current, dirty, clean) with different states and purposes. Each index set serves a specific local function: the current index set for active coherency management, the dirty index set for pending updates, and the clean index set for pre-allocation. This localized specialization allows efficient coherency management while optimizing space usage by only maintaining necessary copies of index values rather than duplicating the entire index structure
Data Source
AI summary
Buffered indexing for a computer's array such as a cache is used to synchronize parent entries with children and allow background invalidation (that is, suspending the invalidation should a new request of the array come in, resuming the invalidation after the request is satisfied) of the child entries. A method for synchronization uses linking of (multiple) entries in lower-level tables to single entries in a higher-level table with a buffered index value. This index value increments each time the higher-level entry is replaced or invalidated (and thus disassociated with its corresponding lower-level entries). Multiple sets of index values are maintained, so that when one set is exhausted, processing can continue with one of the other sets. All corresponding lower-level entries with index values from the old (dirty) set can then be scrubbed (invalidated) while new entries are built from the new (clean) set. Scrubbing can take place in the background, and can be suspended and resumed at any time so as to not impact request service times of the tables.


