Processor Cache Independent Prefetch Pipeline

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional prefetchers in processors face inefficiencies due to traffic conflicts between prefetch requests and other memory access requests, leading to delayed prefetch streams and increased latency, as they arbitrate within the same pipeline and have lower priority, resulting in significant prefetch penalties.

Innovation Solution

Implementing a cache memory system with an arbiter, tag array, and request queue that provides a separate and independent pipeline path for prefetch requests, allowing them to proceed independently and avoid contention with higher priority requests, thereby reducing latency and prefetch penalties.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If prefetch requests are processed through the same arbitration pipeline as other memory access requests, then the cache memory structure remains simple, but prefetch requests experience delays and increased latency due to lower priority arbitration

Engineering Contradiction:
Improvecache memory structureVSAvoidprefetch latency
Core Design Contradiction:
Device complexityVSLoss of time

Solution Approach 1:

The cache memory system is segmented into two independent pipelines: a main pipeline for regular memory access requests and a separate prefetch pipeline for prefetch requests. Each pipeline has its own arbitration logic, allowing prefetch requests to be processed independently without being delayed by the arbitration of other request types. This segmentation resolves the contradiction by maintaining structural simplicity while eliminating prefetch latency penalties.

Inventive Principle:
Principle #1Segmentation

2Productivity

If prefetch requests are given lower priority in the arbitration process, then higher priority requests are serviced first, but prefetch streams are delayed resulting in significant prefetch penalties

Engineering Contradiction:
Improvememory access throughputVSAvoidprefetch stream delay
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

Prefetch requests are extracted from the main arbitration pipeline and placed into a separate prefetch pipeline with dedicated arbitration logic. This extraction allows prefetch requests to bypass the priority-based arbitration that delays them, enabling prefetch streams to proceed without penalties while the main pipeline continues to service high-priority requests efficiently.

Inventive Principle:
Principle #2Taking out (Extraction)

3Loss of time

If an independent pipeline is implemented for prefetch requests, then prefetch latency is reduced, but the cache memory system becomes more complex

Engineering Contradiction:
Improveprefetch determination timeVSAvoidcache memory system
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The independent prefetch pipeline is merged with the main cache memory system at key points: the tag array shares the same data array, and both pipelines write to the same request queue structure. This merging approach allows the system to benefit from reduced prefetch latency while minimizing the increase in overall system complexity by reusing existing cache structures.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS10713172B2Processor cache with independent pipeline to expedite prefetch request
Publication Date: 2020.07.14 VIA ALLIANCE SEMICON CO LTD
  • US10713172B2 patent drawing
  • US10713172B2 patent drawing
  • US10713172B2 patent drawing

AI summary

A cache memory for a processor including an arbiter, a tag array and a request queue. The arbiter arbitrates among multiple memory access requests and provides a selected memory access request. The tag array has a first read port receiving the selected memory access request and has a second read port receiving a prefetch request from a prefetcher. The tag array makes a hit or miss determination of whether data requested by the selected memory access request or the prefetch request is stored in a corresponding data array. The request queue has a first write port for receiving the selected memory access request when it misses in the tag array, and has a second write port for receiving the prefetch request when it misses in the tag array. The additional read and write ports provide a separate and independent pipeline path for handing prefetch requests.