Co-processor Result Retention for Bytecode Instruction Pipelining

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The inefficiency in processing platform-independent instructions, such as Java bytecode, arises from the need to translate and transmit each instruction separately to a coprocessor, leading to redundant data loading and processing, especially when subsequent instructions rely on previous results, which can significantly impact performance.

Innovation Solution

A data processing method that translates instructions into code suitable for a coprocessor and checks subsequent instructions to determine if they are of a predetermined type, allowing for the reuse of previous results without retransmitting data back to the CPU, thereby reducing load and store operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If each bytecode instruction is translated and transmitted separately to the coprocessor, then each instruction can be processed independently, but redundant data loading and transferring occurs significantly reducing processing efficiency

Engineering Contradiction:
Improveprocessing efficiencyVSAvoiddata transfer time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary action by checking the type of the next instruction before completing the current coprocessor operation. When a subsequent instruction is identified as requiring the same coprocessor and using the previous result, the system prepares to reuse the result without immediate transfer, thereby reducing redundant data transfers and improving processing efficiency

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements feedback by examining the type of the next instruction based on the current instruction being processed. This feedback mechanism allows the system to determine whether to transfer results back to the CPU or retain them in the coprocessor for subsequent operations, optimizing the data transfer strategy and reducing unnecessary transfers

Inventive Principle:
Principle #23Feedback

2Productivity

If result data is sent back to the CPU for each instruction, then data is available for subsequent instructions, but additional load and store operations are required increasing processing overhead

Engineering Contradiction:
Improveprocessing speedVSAvoiddata transfer operations
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs preliminary analysis of the next instruction type before completing the current coprocessor operation. When the next instruction is identified as requiring the same coprocessor and using the previous result, the system prepares to retain the result in the coprocessor without immediate transfer back to the CPU, thereby reducing redundant load and store operations

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The coprocessor serves itself by retaining result data in its registers for subsequent operations of the same type. Instead of requiring continuous data transfers back to the CPU and forward to the coprocessor, the coprocessor uses its own stored results, eliminating unnecessary data transfer overhead and simplifying the data transfer operations

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS7516302B2Efficient use of co-processor in platform independent instruction machine by controlling result transfer and translation and transfer timing of subsequent instruction based on instruction type for result forwarding
Publication Date: 2009.04.07 ARM LTD
  • US7516302B2 patent drawing
  • US7516302B2 patent drawing
  • US7516302B2 patent drawing

AI summary

A data processing method for processing a sequence of platform independent instructions on a data processing apparatus comprising a CPU and at least one further processor is disclosed. The data processing method comprises the steps of: (i) within said CPU translating an instruction from said sequence of instructions into code suitable for processing by one of said at least one further processors and outputting said code to said one further processor; (ii) receiving said code and receiving associated data at said one further processor said received associated data in response to said received code to generate resultant data; (iii) within said CPU checking a subsequent instruction to see if it is one of a predetermined type of instruction; and (iva) in response to said subsequent instruction being one of said predetermined type, translating said instruction into code specifying at least one operation to be performed by said one further processor on resultant data from said previous instruction and outputting said code from said CPU to said one further processor; or (ivb) in response to said subsequent instruction not being one of said predetermined type outputting said resultant data from said one processor to said CPU and storing said resultant data in said CPU prior to translating said subsequent instruction.