Hierarchical Instruction Pool Allocation for Processor Stalls

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In processors like the Intel Itanium, preparing instruction groups for simultaneous execution is inefficient due to finite resources and specific issue rules, leading to stalls and underutilization of functional units, especially in dynamic binary translation where human intervention is not possible.

Innovation Solution

A method involving hierarchical pools associated with issue ports allows instructions to be optimally allocated, reducing occupancy in subsidiary pools and forming instruction groups that effectively utilize processor resources, thereby minimizing stalls and optimizing resource usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If instructions are prepared for simultaneous execution in pipelined processors, then processor throughput is improved, but resource allocation becomes more complex due to finite functional units and issue rules

Engineering Contradiction:
Improveprocessor throughputVSAvoidinstruction group preparation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The instruction preparation process is segmented into multiple issue ports (e.g., I0, I1, M0, M1, F0, F1, B0, B1), each handling specific types of instructions. This segmentation allows parallel processing of different instruction types through dedicated functional units, improving throughput while managing complexity through structured organization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Issue ports act as intermediary components between the instruction fetch unit and functional execution units. These intermediaries buffer and route instructions appropriately, decoupling the complexity of resource allocation from the instruction stream and enabling efficient simultaneous execution without direct complex management.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If more instructions are placed in instruction groups for simultaneous execution, then processor utilization is improved, but stalls increase when functional units become overloaded

Engineering Contradiction:
Improveprocessor utilizationVSAvoidexecution stalls
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system dynamically adjusts the number and types of instructions in each issue port based on the current state of functional units. When functional units are available, more instructions are issued; when overloaded, the system reduces instruction issuance to prevent stalls, optimizing the balance between utilization and execution smoothness.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

Instruction group composition is made dynamic rather than static. The processor adapts the mix of instruction types (integer, memory, floating point, branch) in each issue port based on real-time functional unit availability, allowing optimal processor utilization while minimizing stalls through flexible resource allocation.

Inventive Principle:
Principle #15Dynamics

3Reliability

If instruction allocation follows strict issue rules for each functional unit, then execution correctness is maintained, but resource underutilization occurs when rules are too restrictive

Engineering Contradiction:
Improveexecution correctnessVSAvoidfunctional unit utilization
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Issue ports are designed with universal capabilities to handle multiple instruction types (integer, memory, floating point, branch) depending on functional unit availability. This multi-functionality allows the system to maintain execution correctness through issue rules while maximizing resource utilization by flexibly allocating different instruction types to appropriate functional units.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS7934203B2Preparing instruction groups for a processor having multiple issue ports
Publication Date: 2011.04.26 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US7934203B2 patent drawing
  • US7934203B2 patent drawing
  • US7934203B2 patent drawing

AI summary

During program code conversion, such as in a dynamic binary translator, automatic code generation provides target code 21 executable by a target processor 13. Multiple instruction ports 610 disperse a group of instructions to functional units 620 of the processor 13. Disclosed is a mechanism of preparing an instruction group 606 using a plurality of pools 700 having a hierarchical structure 711-715. Each pool represents a different overlapping subset of the issue ports 610. Placing an instruction 600 into a particular pool 700 also reduces vacancies in any one or more subsidiary pools in the hierarchy. In a preferred embodiment, a counter value 702 is associated with each pool 700 to track vacancies. A valid instruction group 606 is formed by picking the placed instructions 600 from the pools 700. The instruction groups are generated accurately and automatically. Decoding errors and stalls are minimized or completely avoided.