Runtime Code Optimization for Cache Pollution Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Cache memory inefficiencies arise from storing infrequently used data, leading to cache pollution and reduced performance due to non-temporal instructions that are not optimized for caching, resulting in lower cache hit rates and energy inefficiency.

Innovation Solution

The implementation of a method to identify frequently executed code regions at runtime, generate profiling code, and replace non-temporal store and load instructions to optimize code, using Just-in-Time compilation and profile-guided optimization to automatically detect and replace instructions that do not benefit from caching, thereby reducing cache pollution and improving performance and energy efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If non-temporal store and load instructions are used to handle infrequently accessed data, then cache memory can be preserved for frequently accessed data, but cache hit ratio decreases due to cache pollution from non-temporal operations

Engineering Contradiction:
Improvecache hit ratioVSAvoidmemory access efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent dynamically changes the temporal characteristics of memory operations by identifying non-temporal store and load instructions and replacing them with specialized non-temporal instructions. This parameter change distinguishes between temporal operations (requiring cache) and non-temporal operations (bypassing cache), resolving the contradiction by allowing non-temporal data to be processed without polluting the cache, thereby maintaining high cache hit ratios for temporal data while improving overall memory access efficiency.

Inventive Principle:
Principle #35Parameter changes

2Speed

If data is stored in cache for future access, then access speed improves, but energy consumption increases due to unnecessary caching of infrequently used data

Engineering Contradiction:
Improvedata access speedVSAvoidenergy consumption
Core Design Contradiction:
SpeedVSUse of energy by moving object

Solution Approach 1:

The patent applies local quality by treating different memory operations differently based on their temporal characteristics. Temporal store and load operations are directed to cache memory for fast access, while non-temporal operations bypass the cache. This localized optimization ensures that only data requiring frequent access consumes cache energy, reducing overall energy consumption while maintaining high access speeds for frequently used data.

Inventive Principle:
Principle #3Local quality

3Loss of time

If cache memory is used for all store and load operations, then access time is reduced, but cache pollution occurs from infrequently accessed data reducing effective cache utilization

Engineering Contradiction:
Improvememory access timeVSAvoidcache utilization efficiency
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The patent segments memory operations into two distinct categories: temporal operations that benefit from caching and non-temporal operations that do not. By inserting markers to identify non-temporal store and load instructions and replacing them with specialized instructions, the system creates separate memory access paths. This segmentation prevents non-temporal data from polluting the cache, maintaining high cache utilization efficiency while ensuring fast access times for both cached and non-cached operations.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10379827B2Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment
Publication Date: 2019.08.13 INTEL CORP
  • US10379827B2 patent drawing
  • US10379827B2 patent drawing
  • US10379827B2 patent drawing

AI summary

Techniques are disclosed to identify a frequently-executed region of code during runtime execution of the code, generate initial profiling code for the frequently-executed region of code, cause the initial profiling code to be executed for a minimum number of processing cycles of the computer, and identify replacement candidate store instruction(s) that store a value that is not read by the frequently-executed region of code during execution of the initial profiling code. Replacement candidate load instruction(s) may also be identified that load a value that is not stored or loaded by the frequently-executed region of code during execution of the initial profiling code. Optimized code for the frequently-executed region of code may be generated by replacing each of the replacement candidate store or load instructions(s) with a non-temporal store or load instruction. The optimized code may be executed instead of the frequently-executed region of code during subsequent runtime execution.