SIMD Code Generation via Reverse Instruction Queue Scanning

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for generating SIMD instructions often result in reduced execution efficiency due to increased data transfer between SIMD registers, as they sequentially combine instructions from the beginning of the instruction queue, leading to longer critical paths and lower performance.

Innovation Solution

An information processing apparatus that generates SIMD instructions by scanning the instruction queue from the end to the beginning, prioritizing combinations of instructions that minimize data transfer between SIMD registers, and selecting candidate instructions based on their dependency relationships and calculation types to create efficient SIMD instructions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If instructions are combined sequentially from the beginning of the instruction queue, then the code generation process is simple, but data transfer between SIMD registers increases and execution efficiency decreases

Engineering Contradiction:
Improvecode generation simplicityVSAvoidexecution efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The patent inverts the conventional approach by scanning the instruction queue from the end to the beginning instead of from the beginning. This reversal allows the code generation process to prioritize instruction combinations that minimize data transfer between SIMD registers, thereby improving execution efficiency while maintaining reasonable code generation complexity through a systematic reverse-scanning methodology

Inventive Principle:
Principle #13The other way round (Inversion)

2Productivity

If instructions are combined to maximize parallel degree, then more operations can be executed in parallel, but critical path length increases and execution time increases

Engineering Contradiction:
Improveparallel degreeVSAvoidcritical path length
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by analyzing dependency relationships between instructions before combining them into SIMD instructions. By examining which instructions depend on others and potential data transfer requirements in advance, the system can select instruction combinations that achieve high parallel degree while avoiding creation of excessively long critical paths, thus optimizing both parallelism and execution time

Inventive Principle:
Principle #10Preliminary action

3Ease of manufacture

If any two instructions with same calculation type are combined, then SIMD instruction generation is straightforward, but data transfer between SIMD registers increases

Engineering Contradiction:
Improveinstruction combination easeVSAvoiddata transfer overhead
Core Design Contradiction:
Ease of manufactureVSLoss of energy

Solution Approach 1:

The patent applies local quality by differentiating the selection criteria for instructions based on their specific characteristics, particularly their data dependency relationships. Instead of uniformly combining any two instructions with the same calculation type, the system selectively combines instructions that have compatible data dependencies and minimal transfer requirements, thereby reducing data transfer overhead while maintaining ease of generation through a structured selection process

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS9256437B2Code generation method, and information processing apparatus
Publication Date: 2016.02.09 FUJITSU LTD
  • US9256437B2 patent drawing
  • US9256437B2 patent drawing
  • US9256437B2 patent drawing

AI summary

A computer-readable recording medium having stored therein a program for causing a computer to execute a digital signature process includes determining that a first specific instruction for executing parallel calculations of the same type, each calculation operating on a different piece of data, is generated by combining first and second instructions included in a first code, retrieving, from the first code, a third instruction for calculating data referenced by the first instruction and a fourth instruction for calculating data referenced by the second instruction, and selecting the third and fourth instructions as candidates of instructions to be combined with each other preferentially to generate a second specific instruction which is different from the first specific instruction.