Store Queue Architecture Using CAM and Program-Order Queue
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional store queue designs become impractical as they grow in size due to increased memory latencies, leading to performance issues and complexity, with existing solutions either being area-efficient but slow or degrading data cache performance.
Innovation Solution
A store queue architecture utilizing a high-capacity content-addressable memory (CAM) that holds pending stores and a program-order queue to apply stores to the memory subsystem in program order, with a priority CAM and pipeline CAM to manage store order and latency, and a finite state machine to control operations, enabling efficient store queue operations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If conventional store queue designs are used to accommodate larger memory latencies, then the store queue size must increase, but the circuit complexity and practicality decrease
Solution Approach 1:
The patent divides the store queue into two separate data structures: a Bloom filter for fast hit/miss determination and a linear list for storing actual store entries. This segmentation allows the system to handle large numbers of stores without requiring complex circuitry for address matching, as the Bloom filter provides rapid filtering before detailed processing occurs in the linear list.
Solution Approach 2:
The Bloom filter acts as an intermediary between the incoming load address and the linear list of stores. It pre-filters addresses to determine if a hit is possible before accessing the full store queue, reducing the complexity of address matching circuitry while maintaining the ability to handle large store queue sizes.
2Area of stationary object
If a two-level store queue implementation is used with RAM and linear search, then area efficiency improves, but access speed deteriorates
Solution Approach 1:
The Bloom filter performs preliminary action by pre-evaluating whether a hit is possible before the system proceeds to search the linear list. This preliminary filtering prevents unnecessary searches through the entire linear list, significantly improving access speed while maintaining area efficiency through the use of RAM-based implementation.
3Quantity of substance
If L1 data cache is used to hold store values, then store queue capacity increases, but data cache performance deteriorates
Solution Approach 1:
The patent segments the store buffering function from the L1 data cache by implementing a separate store queue structure using Bloom filter and linear list. This segmentation allows the L1 cache to maintain its optimized performance characteristics while the store queue handles store value buffering independently, preventing performance degradation in either component.
4Stability of the object's composition
If conventional store queue designs are used, then program order tracking is maintained, but lookup complexity increases when queue size grows
Solution Approach 1:
The patent segments the functionality of program order tracking from the address lookup process. The Bloom filter handles address-based lookup independently of program order, while program order tracking is maintained separately through the sequential structure of the linear list. This segmentation allows efficient lookup operations without the complexity of maintaining program order within the lookup circuitry itself.
Data Source
Figure 1
Figure 2A
Figure 2B
AI summary
One embodiment of the present invention provides a store queue that applies the stores to a memory subsystem in program order. This store queue includes a content-addressable memory (CAM), which holds pending stores and facilitates looking up stores based on addresses for the stores, wherein the CAM does not keep track of program order between stores to different addresses. The store queue also includes a program-order queue which keeps track of program order between the stores in the CAM and thereby facilitates applying the stores to the memory subsystem in program order. In a variation on this embodiment, the CAM is a priority CAM which holds separate copies of multiple stores with identical addresses, and when a lookup based on an address matches multiple stores, returns the youngest matching store.