Coprocessor Interface Unit for Out-of-Order Processor Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

There is a need for techniques and methods to effectively interface processors with out-of-order execution pipelines to coprocessors with in-order execution pipelines, as existing systems are prone to control, structural, and data hazard stalls.

Innovation Solution

A coprocessor interface unit is introduced, featuring an in-order instruction queue, a coprocessor load data queue, and a coprocessor store data queue, which allows for the interfacing of out-of-order execution pipelines with in-order execution pipelines by decoupling the operation of the coprocessor from the processor execution units, enabling instructions to be executed and data to be handled efficiently across different execution orders.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If an out-of-order processor is directly interfaced with an in-order coprocessor, then processing speed is improved, but control, structural, and data hazard stalls occur

Engineering Contradiction:
Improveprocessing speedVSAvoidexecution stability
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

A coprocessor interface unit is introduced as an intermediary component between the out-of-order processor and the in-order coprocessor. This interface unit includes an in-order instruction queue that receives instructions from the out-of-order processor, reorders them into program order, and forwards them to the coprocessor. This mediator resolves the incompatibility between out-of-order and in-order execution pipelines, preventing control, structural, and data hazard stalls while maintaining high processing speed.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If instructions are executed out-of-program-order, then productivity is improved, but synchronization with in-order coprocessor becomes difficult

Engineering Contradiction:
Improveinstruction throughputVSAvoidinterface complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The interface is segmented into distinct functional components: an in-order instruction queue for ordering instructions, a load data queue for managing data inputs, and a store data queue for managing data outputs. Each queue operates independently to handle specific aspects of the interface between out-of-order processor and in-order coprocessor, simplifying the overall interface complexity while maintaining high instruction throughput.

Inventive Principle:
Principle #1Segmentation

3Ease of manufacture

If an in-order coprocessor is used, then ease of manufacture is improved, but execution efficiency deteriorates due to stalls

Engineering Contradiction:
Improvecoprocessor simplicityVSAvoidexecution efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The in-order instruction queue performs preliminary ordering of instructions before they are sent to the in-order coprocessor. By pre-ordering instructions in program sequence and preparing the instruction stream in advance, the system eliminates the need for the coprocessor to handle out-of-order instructions, maintaining manufacturing simplicity while preventing execution stalls and improving overall efficiency.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7647475B2System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
Publication Date: 2010.01.12 ARM FINANCE OVERSEAS LTD
  • US7647475B2 patent drawing
  • US7647475B2 patent drawing
  • US7647475B2 patent drawing

AI summary

A processor includes a coprocessor interface unit that couples a coprocessor that executes instructions in-program order to an execution unit that executes instructions out-of-program order. The coprocessor interface unit includes a coprocessor store data queue. If data stored in a register of the coprocessor is to be stored in a register file of the execution unit, the data is transferred from the coprocessor to the coprocessor store data queue. A graduation unit coupled to the coprocessor is also provided. The graduation unit provides a signal to the coprocessor that determines whether an instruction executed by the coprocessor is permitted to alter an architectural state of the processor.