Inline Stack Context Summary Map for Binary Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing feedback-directed optimization techniques face challenges in accurately representing and mapping application profiles back to the compiler, which affects the performance of binary optimizations, particularly due to the complexity of function calls and nested calls in applications.

Innovation Solution

The method involves using an inline stack to collect and summarize execution counts of instructions, creating a context summary map to compare execution counts with a threshold, and annotating profiles to generate an optimized binary by inlining frequently executed functions, thereby improving binary performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If function calls are profiled to understand execution frequency, then compiler optimization decisions can be improved, but the complexity of representing and mapping profiles back to the compiler increases

Engineering Contradiction:
Improvecompiler optimization performanceVSAvoidprofile representation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The profile data is segmented into distinct components: inline stacks representing call sites, context summaries for each function, and annotated profiles with execution counts. This segmentation allows the compiler to process only relevant portions of profile data for each optimization decision, reducing overall complexity while maintaining optimization effectiveness.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Context summary maps serve as intermediaries between the raw profile data and the compiler's optimization decisions. These maps aggregate execution counts and provide summarized information that the compiler can use without processing the complete, complex profile structure directly, thus simplifying the mapping process.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Speed

If function calls are inlined to improve performance, then binary execution speed increases, but the binary size and compilation complexity increase

Engineering Contradiction:
Improvebinary execution speedVSAvoidcompilation complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

Instead of inlining all function calls uniformly, the system applies inlining selectively based on local characteristics: execution frequency from profile data, function size, and call site context. Frequently called functions with small size are inlined, while larger or less frequently called functions remain as separate calls, optimizing the trade-off between execution speed and compilation complexity.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system changes the parameter of inlining decision from a static compiler option to a dynamic decision based on runtime profile parameters such as execution count, call site frequency, and function characteristics. This allows the compiler to adapt inlining decisions to actual program behavior, improving performance while managing complexity through data-driven decisions.

Inventive Principle:
Principle #35Parameter changes

3Measurement precision

If comprehensive profile data is collected to accurately represent runtime behavior, then optimization accuracy improves, but the overhead of profiling and data processing increases

Engineering Contradiction:
Improveruntime behavior accuracyVSAvoidprofiling overhead
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The system collects profile data selectively rather than comprehensively: it focuses on capturing execution counts for function calls and basic blocks that are relevant to optimization decisions. Not all possible profile information is collected, only the essential data needed for effective optimization, thus reducing profiling overhead while maintaining sufficient accuracy.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

Essential profile information is extracted from the complete runtime behavior data: execution counts, call frequencies, and basic block profiles are extracted as the key metrics needed for optimization. Non-essential or redundant profile data is omitted, reducing the time and resources required for profiling while preserving the accuracy needed for effective optimization decisions.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9009691B1Using an inline stack to improve performance of an applications binary
Publication Date: 2015.04.14 GOOGLE LLC
  • US9009691B1 patent drawing
  • US9009691B1 patent drawing
  • US9009691B1 patent drawing

AI summary

A system and method for using inline stacks to improve the performance of application binaries is included. While executing a first application binary, profile data may be collected about the application that includes which callee functions are called from the application's callsites and the number of times each inline stack is executed. A context summary map may be created from the collected profile data which shows a summary of the total execution count of all instructions in the callee function for each callsite inlined in the application's normal binary. Using the context summary map, each function callsite's execution count may be compared with a predetermined threshold to determine if the function should be inlined. Then the application's profile may be annotated and a second application binary, an optimized binary, may be generated using the annotated profile.