Compiler Code Placement in Active Memory for Distributed Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Computer systems with distributed processing and memory face inefficiencies in executing code, as code sections may be placed in memory locations inaccessible by processors, leading to suboptimal performance and increased latency.

Innovation Solution

A computer system with a main processor and active memory devices, where a compiler divides source code into sections, identifies executable sections, and transforms them into executable module code that determines processor type for execution based on access availability, copying code sections to appropriate memory devices and instruction buffers for distributed execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If code is placed in memory at a first location in a distributed memory system, then memory capacity is utilized, but the code becomes inaccessible to processors at second locations, leading to execution inefficiency

Engineering Contradiction:
Improvecode execution efficiencyVSAvoidmemory access coordination
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent applies the copying principle by creating replicas of code sections across multiple memory devices. When code needs to be executed by processors at different locations, the system automatically copies the relevant code sections to the appropriate memory devices, ensuring that each processor can access the code it needs without centralized coordination overhead.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent segments code into executable sections that can be independently placed and copied to different memory devices. This segmentation allows the system to divide large programs into smaller, manageable code sections that can be distributed across the memory hierarchy, with each section accessible to the processors that need to execute it.

Inventive Principle:
Principle #1Segmentation

2Productivity

If code sections are copied to multiple memory devices for distributed execution, then processing parallelism is improved, but memory bandwidth consumption increases

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidmemory bandwidth utilization
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent applies preliminary action by pre-copying code sections to the memory devices where they will be executed before the actual processing begins. This allows parallel execution to start immediately without incurring transfer delays during runtime, as the code is already in place at the target memory locations.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system applies local quality by optimizing code placement based on the specific execution requirements of different code sections. Frequently accessed or performance-critical code sections are kept in local memory close to the processors that need them, while less critical sections can be stored in remote memory, creating a hierarchical placement strategy that balances parallelism with bandwidth consumption.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS8930921B2Compilation and placement of instructions in a memory system
Publication Date: 2015.01.06 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US8930921B2 patent drawing
  • US8930921B2 patent drawing
  • US8930921B2 patent drawing

AI summary

According to one embodiment of the present invention, a computer system is provided where the computer system includes a main processor, first and second active memory device. The computer system is configured to perform a method including receiving an executable module generated by a compiler, wherein the executable module includes a code section identified as executable by a first processing element in the first active memory device and a second processing element in the second active memory device. The method includes copying the code section to memory in the first device based on the code section being executable on the first device, copying the code section from the first active memory device to an instruction buffer of the first processing element and copying the code section from the first device to the second device based on the code section being executable on the second device.