Context-Based Memory Layout Generation for Software

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers of software programs often create objects and data structures without considering memory alignment, leading to sub-optimal execution and increased memory consumption due to unnecessary padding, which reduces cache utilization and inefficiently uses memory.

Innovation Solution

A system that determines the structure of a software program and generates memory layouts for object instances by applying various execution contexts, decoupling from the local execution context, and provides visualizations to identify and suggest refactorings that reduce memory usage, including graphical distinctions between data and padding.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If developers declare fields without considering alignment requirements, then the software program is easier to develop, but memory consumption increases due to unnecessary padding

Engineering Contradiction:
Improveease of developmentVSAvoidmemory consumption
Core Design Contradiction:
Ease of manufactureVSQuantity of substance

Solution Approach 1:

The system performs preliminary analysis of the software program's structure and execution context to determine optimal memory layouts before the program runs. By pre-calculating field alignments and padding requirements based on the target execution environment, the system generates optimized memory layout configurations that reduce unnecessary padding while maintaining ease of development.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system introduces an intermediary layer between the source code and the actual memory allocation. This intermediary analysis apparatus examines the program structure and execution context to generate optimized memory layout descriptions, which then guide the memory allocation process. This mediator enables developers to write code without worrying about alignment details while achieving optimized memory usage.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Manufacturing precision

If padding is increased to satisfy alignment requirements, then memory layout compliance is improved, but cache utilization decreases

Engineering Contradiction:
Improvememory layout complianceVSAvoidcache utilization
Core Design Contradiction:
Manufacturing precisionVSProductivity

Solution Approach 1:

The system dynamically changes memory layout parameters based on the target execution context. By analyzing the specific hardware architecture, word size, and alignment requirements of the target environment, the system adjusts field offsets and padding amounts to achieve optimal cache utilization while still satisfying alignment constraints. This contextual parameter adjustment allows the same program to be efficiently deployed across different platforms.

Inventive Principle:
Principle #35Parameter changes

3Adaptability or versatility

If memory layouts are optimized for different execution contexts, then adaptability improves, but the complexity of determining multiple layouts increases

Engineering Contradiction:
Improveadaptability to execution contextsVSAvoidcomplexity of memory layout determination
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system creates a universal memory layout determination apparatus that can analyze and generate optimized memory layouts for multiple execution contexts. This multi-functional system handles various target environments (different architectures, word sizes, alignment requirements) through a unified analysis framework, eliminating the need for separate manual optimization processes for each platform.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The system generates copies of the memory layout configuration for each target execution context. By creating context-specific memory layout descriptions from the same source program structure, the system enables the program to be adapted to different environments without modifying the source code. Each execution context receives an optimized memory layout copy tailored to its specific requirements.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS9552192B2Context-based generation of memory layouts in software programs
Publication Date: 2017.01.24 ORACLE INT CORP
  • US9552192B2 patent drawing
  • US9552192B2 patent drawing
  • US9552192B2 patent drawing

AI summary

The disclosed embodiments provide a system that facilitates execution of a software program. During operation, the system determines a structure of a software program and an execution context for the software program from a set of possible execution contexts for the software program. Next, the system generates memory layouts for a set of object instances in the software program at least in part by applying the execution context to the structure independently of a local execution context on the computer system. The system then stores the memory layouts in association with the software program.