Compiler Data Placement for On-Chip Memory Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In conventional data processing systems, programmers face challenges in achieving high performance due to the complexity of manually specifying on-chip addresses, which can lead to data placement errors and increased development time, especially in high-performance environments where cache operations and misses result in significant performance penalties.

Innovation Solution

The introduction of a keyword-controlled data placement system allows programmers to categorically specify whether data should be placed on-chip or off-chip using the 'on_chip' or 'off_chip' qualifiers, enabling the compiler to determine the memory location, thereby avoiding performance penalties associated with uncontrolled placement and reducing the risk of data placement errors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If programmers manually specify on-chip addresses for data placement, then performance can be optimized through direct on-chip access, but development complexity increases and data placement errors occur

Engineering Contradiction:
Improvedata access speedVSAvoidprogram development complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The compiler automatically determines on-chip address allocation without programmer intervention. The system serves itself by having the compiler analyze data access patterns and autonomously place frequently accessed variables in on-chip memory, eliminating the need for manual address specification while maintaining performance optimization

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The compiler acts as an intermediary between the programmer and the hardware memory system. Instead of the programmer directly managing on-chip addresses, the compiler translates high-level variable declarations into optimized memory placement decisions, mediating between program logic and physical memory constraints

Inventive Principle:
Principle #24Intermediary (Mediator)

2Manufacturing precision

If programmers manually specify on-chip addresses, then data placement precision improves, but the risk of placement errors increases

Engineering Contradiction:
Improvedata placement precisionVSAvoiddata placement reliability
Core Design Contradiction:
Manufacturing precisionVSReliability

Solution Approach 1:

The compiler performs self-service by automatically analyzing the program's data access patterns and autonomously determining optimal on-chip address allocations. This eliminates human error in address specification while maintaining precise data placement, as the compiler systematically tracks variable usage and makes placement decisions based on actual program behavior

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system implements feedback mechanisms where the compiler monitors variable access patterns during compilation and adjusts address allocation decisions accordingly. Frequently accessed variables are automatically placed in on-chip memory based on this feedback, ensuring both precision and reliability without manual intervention

Inventive Principle:
Principle #23Feedback

3Loss of time

If the compiler automatically allocates on-chip memory, then program development time reduces, but memory allocation control decreases

Engineering Contradiction:
Improveprogram development timeVSAvoidmemory allocation control
Core Design Contradiction:
Loss of timeVSEase of operation

Solution Approach 1:

The compiler serves itself by automatically performing memory allocation decisions that would otherwise require programmer intervention. This self-service approach dramatically reduces development time while maintaining effective memory allocation control through the compiler's intelligent analysis of data access patterns and automatic placement of frequently used variables in on-chip memory

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS8694757B2Tracing command execution in a parallel processing system
Publication Date: 2014.04.08 STREAM PROCESSORS INC
  • US8694757B2 patent drawing
  • US8694757B2 patent drawing
  • US8694757B2 patent drawing

AI summary

Tracing command execution in a data processing system having a host processor and a co-processor. The host processor maintains a record of a plurality of commands for the co-processor, storing each of the plurality of commands is stored in a command queue. Hardware trace logic is provided to store one or more events based, at least in part, on transfer of the plurality of commands to a small memory. Software is executed to store the one or more events to a main memory, wherein the one or more events are aggregated into a single memory trace within the main memory.