Pending Request Buffer Cache Pre-fetch Merge

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computing systems with multiple processors and cache memories, maintaining cache coherence is challenging due to issues like stale data and differing write orders, which can lead to latency and inconsistencies across memory copies.

Innovation Solution

A pending request buffer system is implemented to manage cache requests, where requests for cache lines are stored and processed efficiently, with a control circuit handling pre-fetch and demand fetch requests by arbitrating between multiple sources and ensuring data consistency across cache memories.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If pre-fetch requests are issued to load cache lines before they are needed, then cache hit rate is improved, but latency is increased when the requested cache line is already in cache

Engineering Contradiction:
Improvecache hit rateVSAvoidlatency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The pre-fetch engine issues pre-fetch requests to load cache lines into the cache before they are actually needed by the processor. This preliminary action ensures that when the processor needs the data, it is already in the cache, improving cache hit rate and reducing latency for future accesses.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The pending request buffer acts as an intermediary between the pre-fetch engine and the cache memory. It stores pre-fetch requests that are currently being processed, allowing the system to track and manage multiple requests simultaneously. When a demand fetch request matches a pending pre-fetch request, the system can cancel the pre-fetch and serve the demand fetch directly, avoiding unnecessary latency.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If multiple cache requests are processed simultaneously from multiple sources, then productivity is improved, but cache coherence is worsened due to stale data and inconsistent write orders

Engineering Contradiction:
Improverequest processing throughputVSAvoidcache coherence
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The pending request buffer provides feedback about the state of ongoing pre-fetch requests. When a demand fetch request arrives, the system checks the pending request buffer to see if a matching pre-fetch request is already in progress. This feedback mechanism allows the system to coordinate between different request types and maintain coherence by canceling redundant pre-fetches or prioritizing demand fetches appropriately.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system dynamically adjusts the handling of cache requests based on real-time conditions. When a demand fetch request matches a pending pre-fetch request, the system can dynamically cancel the pre-fetch and process the demand fetch immediately, or vice versa depending on timing. This dynamic adaptation allows the system to maintain coherence while maximizing throughput by making optimal decisions about request processing order.

Inventive Principle:
Principle #15Dynamics

3Productivity

If write operations are delayed in cache before being propagated to main memory, then cache performance is improved, but data consistency is worsened causing stale data reads

Engineering Contradiction:
Improvecache write performanceVSAvoiddata consistency
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system segments write operations into different types: demand fetch writes and pre-fetch writes. Demand fetch writes are immediately propagated to main memory to ensure consistency, while pre-fetch writes can be delayed since they are speculative. The pending request buffer tracks which writes are associated with demand fetches versus pre-fetches, allowing selective propagation timing.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

For pre-fetch requests, the system performs preliminary writes to the cache without immediately propagating to main memory. This preliminary action improves cache performance by allowing fast write-back to cache. The write to main memory is delayed until the pre-fetch is confirmed to be needed or until the cache line is evicted, at which point the writeback ensures consistency.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9454486B2Cache pre-fetch merge in pending request buffer
Publication Date: 2016.09.27 APPLE INC
  • US9454486B2 patent drawing
  • US9454486B2 patent drawing
  • US9454486B2 patent drawing

AI summary

An apparatus for processing cache requests in a computing system is disclosed. The apparatus may include a pending request buffer and a control circuit. The pending request buffer may include a plurality of buffer entries. The control circuit may be coupled to the pending request buffer and may be configured to receive a request for a first cache line from a pre-fetch engine, and store the received request in an entry of the pending request buffer. The control circuit may be further configured to receive a request for a second cache line from a processor, and store the request received from the processor in the entry of the pending request buffer in response to a determination that the second cache line is the same as the first cache line.