Programmable Prefetcher for Dynamic Memory Access Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional processors with predetermined prefetchers often fail to optimize memory access performance due to inefficiencies in predicting future memory requests, leading to suboptimal cache hit rates and increased latency.

Innovation Solution

A programmable prefetcher that can be configured with custom prefetch programs to anticipate and load specific data into the cache, allowing for optimized prefetch operations based on the specific needs of individual processes or applications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If a conventional processor uses predetermined prefetchers with fixed algorithms, then the device complexity is reduced and ease of manufacture is improved, but the adaptability to different processes and memory access patterns deteriorates

Engineering Contradiction:
Improveease of manufactureVSAvoidadaptability
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The prefetcher is implemented as a dynamic, reconfigurable component that can change its behavior during runtime. The logic element array can be programmed with different prefetch algorithms and parameters adapted to specific process requirements, transforming a static prefetcher into a dynamic one that responds to varying memory access patterns

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system enables parameter changes in the prefetcher by allowing modification of prefetch distance, cache line size, and algorithm type through programming the logic elements. This permits optimization of prefetch behavior for different workloads without changing the hardware architecture

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If the programmable prefetcher loads multiple prefetch programs into the logic element array, then the adaptability improves, but the device complexity and difficulty of detecting and measuring increases

Engineering Contradiction:
ImproveadaptabilityVSAvoiddifficulty of detecting and measuring
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

Solution Approach 1:

The system incorporates feedback mechanisms where performance metrics from memory access patterns are monitored and used to adjust prefetch program selection and configuration. This feedback loop enables automatic optimization while managing the complexity of having multiple programmable prefetch programs

Inventive Principle:
Principle #23Feedback

3Speed

If the processor uses traditional cache memory hierarchy, then the speed of memory access is improved for frequently accessed data, but the loss of time occurs during cache misses requiring external memory access

Engineering Contradiction:
ImprovespeedVSAvoidloss of time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The programmable prefetcher performs preliminary actions by predicting future memory access needs and loading data into the cache before actual access occurs. This advance preparation reduces cache misses and the associated time loss, as data is already in the fast cache when needed

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP3316146B1Processor with programmable prefetcher
Publication Date: 2020.07.22 VIA ALLIANCE SEMICON CO LTD
  • EP3316146B1 patent drawingFigure 1
  • EP3316146B1 patent drawingFigure 2
  • EP3316146B1 patent drawingFigure 3

AI summary

A processor including a front end, at least one load pipeline, and a memory system that further includes a programmable prefetcher for prefetching information from an external memory. The front end converts fetched program instructions into microinstructions including load microinstructions and dispatches microinstructions for execution. The load pipeline executes dispatched load microinstructions and provides load requests to the memory system. The programmable prefetcher includes a load monitor, a programmable prefetch engine, and a prefetch requester. The load monitor tracks the load requests. The prefetch engine is configured to be programmed by at least one prefetch program to operate as a programmed prefetcher, such that during operation of the processor, the programmed prefetcher generates at least one prefetch address based on the load requests issued by the processor. The prefetch requester submits the at least one prefetch address to prefetch information from the memory system.