Compiler Software Pipelining Initiation Interval Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing compiler technologies face challenges in reducing the number of execution cycles for loop processes due to hardware resource constraints and data dependence relations, limiting the effectiveness of software pipelining optimization.

Innovation Solution

A compiler apparatus that converts source programs into machine language by inserting transfer instructions into loop processes to alter data dependence relations, allowing for parallel execution and reducing the initiation interval and execution cycles through cyclic path analysis and transfer instruction insertion.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If software pipelining is applied to optimize loop execution, then instruction parallelism is improved, but the initiation interval cannot be reduced further due to hardware resource constraints and data dependence relations

Engineering Contradiction:
Improveloop execution efficiencyVSAvoidinitiation interval
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the loop body into multiple instruction groups (G1, G2, G3, etc.) that can be executed in parallel across different iterations. By dividing the loop body into independent instruction groups with proper dependence handling, the compiler can schedule instructions from different groups to execute simultaneously, reducing the initiation interval while respecting hardware resource constraints and data dependence relations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary analysis of data dependence relations and hardware resource constraints before generating the final instruction schedule. The compiler identifies loop-carried dependences and resource conflicts in advance, then pre-arranges instruction grouping and scheduling strategies that minimize the initiation interval while ensuring all constraints are satisfied during parallel execution.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If instructions are scheduled to execute in parallel across iterations, then execution cycles are reduced, but hardware resource conflicts increase

Engineering Contradiction:
Improveinstruction execution speedVSAvoidhardware resource coordination
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent applies different scheduling strategies to different instruction groups based on their specific resource requirements and dependence characteristics. Each instruction group is analyzed locally to determine its resource profile, and scheduling decisions are made tailored to each group's needs rather than applying a uniform scheduling approach, thereby reducing resource conflicts while maintaining parallel execution efficiency.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent introduces instruction groups as intermediary units between individual instructions and iterations. These groups act as mediators that bundle related instructions together, manage resource allocation within the group, and coordinate with other groups to reduce overall resource conflicts. The grouping mechanism provides an intermediate level of abstraction that simplifies resource coordination during parallel execution.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUSRE45199E1Compiler apparatus
Publication Date: 2014.10.14 SOCIONEXT INC
  • USRE45199E1 patent drawing
  • USRE45199E1 patent drawing
  • USRE45199E1 patent drawing

AI summary

A compiler apparatus, which can perform software pipelining optimization that has a considerable effect of reducing the number of execution cycles taken to complete a loop process, converts a source program into a machine program for a processor which is capable of parallel processing. The compiler apparatus is composed of: a parsing unit operable to parse the source program and then to convert the source program into an intermediate program which is described in an intermediate language; an optimization unit operable to optimize the intermediate program; and a conversion unit operable to convert the optimized intermediate program into the machine language program, wherein the optimization unit is operable to execute software pipelining, by inserting a transfer instruction, which is used for transferring data between operands, into a loop process included in the intermediate program so that a data dependence relation is changed.