Cache Layout Optimization via Linker Code Rearrangement

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Cache misses and collisions limit the performance potential of cache memory due to its limited size, as programs are larger than cache memory, leading to delays and reduced access speed.

Innovation Solution

A method and system that analyze cache access data and execution paths to optimize code layout by rearranging program code, using a linker to generate a second layout that reduces cache contention and collisions, ensuring frequently accessed or critical routines are cached efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If the program is stored in the larger random access memory (RAM) because the cache memory is limited in size, then the program can be fully stored, but cache collisions and cache misses occur frequently

Engineering Contradiction:
Improveprogram storage capacityVSAvoidcache hit rate
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The invention performs preliminary analysis of cache access patterns during program execution and uses this information to pre-arrange the program layout before execution. By analyzing which code sections will be frequently accessed and placing them in cache-friendly locations in advance, the system reduces cache misses and collisions without requiring larger cache memory.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention changes the layout parameter of the program code based on cache access characteristics. By modifying how the program is organized in memory (specifically, arranging code sections according to their cache access frequency and patterns), the system optimizes cache performance while maintaining the same limited cache size.

Inventive Principle:
Principle #35Parameter changes

2Speed

If data is copied from main memory to cache memory during cache fill operations, then data becomes readily accessible, but cache miss delays retrieval/write time

Engineering Contradiction:
Improvedata access speedVSAvoidcache fill time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The system performs preliminary cache analysis to identify which data sections will be frequently accessed. By pre-positioning these hot data sections in cache-friendly memory locations before execution, the system reduces the frequency of cache misses and subsequent cache fill operations, thereby reducing the overall time lost to cache fills.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention identifies and prioritizes critical code sections that must be executed quickly. By arranging these time-critical sections in locations that maximize cache hits, the system effectively skips the time-consuming cache fill operation for the most important code paths, rushing through critical execution paths with minimal delay.

Inventive Principle:
Principle #21Skipping (Rushing through)

3Reliability

If the CPU attempts to store the entire program in cache memory, then all data would be readily accessible, but the cache memory size is insufficient

Engineering Contradiction:
Improvecache access reliabilityVSAvoidcache memory capacity
Core Design Contradiction:
ReliabilityVSVolume of stationary object

Solution Approach 1:

Instead of treating the entire program uniformly, the invention applies different placement strategies to different parts of the program based on their local characteristics. Frequently accessed code sections are placed in cache-optimized locations, while less frequently accessed sections are placed elsewhere. This local optimization approach maximizes the effective use of limited cache capacity.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system changes the organization parameter of the program based on cache capacity constraints. By analyzing cache access patterns and reorganizing the program layout accordingly, the system fits more frequently accessed code into the limited cache memory space, effectively increasing the proportion of program that can be stored in cache without physically expanding cache capacity.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8266605B2Method and system for optimizing performance based on cache analysis
Publication Date: 2012.09.11 WIND RIVER SYSTEMS INC
  • US8266605B2 patent drawing
  • US8266605B2 patent drawing
  • US8266605B2 patent drawing

AI summary

Described is a method and system for optimizing a code layout for execution on a processor including internal and/or external cache memory. The method and system includes executing a program having a first layout, generating at least one memory access parameter for the program, the memory access parameter being based on a cache memory of a computing system on which the program is designed to run and constructing a second layout for the program as a function of the at least one memory access parameter.