Pointer Prefetcher Sub-Cacheline Filtering for Irregular Memory Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing pointer prefetchers struggle with inaccurate and slow prefetching, leading to cache pollution and reduced CPU performance due to unnecessary prefetches and cache misses in irregular memory access patterns.

Innovation Solution

Implementing sub-cacheline filtering logic and a marker-based approach to determine the timeliness and accuracy of prefetches, using stride information and cache miss thresholds to optimize prefetch operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If pointer prefetchers are used to handle irregular memory access patterns, then prefetching capability is improved, but accuracy and speed deteriorate leading to cache pollution

Engineering Contradiction:
Improveprefetching capabilityVSAvoidprefetching accuracy
Core Design Contradiction:
Adaptability or versatilityVSMeasurement precision

Solution Approach 1:

The patent segments the cache line into multiple sub-cachelines and processes them individually. Instead of treating the entire cache line as one unit, the prefetcher divides it into smaller segments (e.g., 64-byte sub-cachelines within a 256-byte cache line) and generates prefetch requests for each segment separately. This segmentation allows for more precise control over which specific data segments are prefetched, reducing unnecessary cache pollution while maintaining prefetching capability for irregular memory access patterns.

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If pointer prefetchers prefetch entire cache lines, then prefetching coverage is improved, but cache pollution increases due to unnecessary prefetches

Engineering Contradiction:
Improveprefetching coverageVSAvoidcache pollution
Core Design Contradiction:
Quantity of substanceVSObject-generated harmful factors

Solution Approach 1:

The patent extracts and processes only the necessary sub-cachelines from the full cache line. By identifying which sub-cachelines contain valid data that needs prefetching and extracting only those specific segments for prefetch operations, the system avoids prefetching unnecessary data. This extraction approach maintains adequate prefetching coverage for required data while eliminating harmful cache pollution from unnecessary prefetches.

Inventive Principle:
Principle #2Taking out (Extraction)

3Adaptability or versatility

If pointer prefetchers are used for irregular memory access, then prefetching applicability is improved, but prefetching speed deteriorates causing cache misses

Engineering Contradiction:
Improveprefetching applicabilityVSAvoidprefetching speed
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The patent performs preliminary processing of the cache line by dividing it into sub-cachelines and identifying valid data segments before generating prefetch requests. This preliminary action includes validating pointers, determining which sub-cachelines contain useful data, and preparing prefetch requests in advance. By completing these preparatory steps beforehand, the system enables faster execution of actual prefetch operations, improving prefetching speed while maintaining applicability to irregular memory access patterns.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20250328471A1Technique for prefetching with a pointer prefetcher
Publication Date: 2025.10.23 QUALCOMM INC
  • US20250328471A1 patent drawing
  • US20250328471A1 patent drawing
  • US20250328471A1 patent drawing

AI summary

Certain aspects of the present disclosure provide techniques and apparatus for prefetching with a pointer prefetcher. Aspects include obtaining a triggering access comprising a virtual address denoting a beginning of a payload of a cache line. Aspects include determining a stride associated with the producer workload based, at least in part, on a virtual address of the producer workload. Aspects include determining a sub-cacheline trigger virtual address of the triggering access based, at least in part, on the line trigger virtual address of the triggering access, the virtual address of the producer workload, and the stride associated with the producer workload. Aspects include launching, starting at the sub-cacheline trigger virtual address of the triggering access, prefetches for data offsets within the cache line and pointed to by the stride associated with the producer workload.