Superscalar Instruction Dispatch via Capability Vectors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Superscalar processors face challenges in issuing instructions without content-addressable memory, leading to potential data and structural hazards, particularly when scaling the number of functional units, as existing techniques require scanning through lists of instructions or using associative structures that are not scalable.

Innovation Solution

The proposed solution involves each functional unit asserting a capability vector indicating its available operations, allowing the dispatch mechanism to determine suitable units for instruction issuance without the need for content-addressable memory or associative structures, enabling decentralized control and scalability by swapping functional pipelines at design time.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If reservation station technique is used to prevent hazards, then data and structural hazards are avoided, but the system requires content-addressable memory which increases device complexity and is difficult to implement in FPGAs

Engineering Contradiction:
Improvehazard preventionVSAvoidcontent-addressable memory requirement
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system divides the functional units into multiple segments, each maintaining its own ready list and capability vector. This segmentation eliminates the need for a centralized content-addressable memory structure, as each segment independently tracks its own instruction readiness status, thereby reducing overall device complexity while maintaining hazard prevention capabilities.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The capability vector acts as an intermediary data structure that replaces the need for content-addressable memory. Instead of directly scanning instruction lists to detect hazards, the system uses capability vectors to encode and transmit readiness information between functional units and the dispatch mechanism, simplifying the memory requirements while preserving reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If scanning through instruction lists is used to detect hazards, then read and write port conflicts are identified, but the process becomes time-consuming and reduces instruction dispatch throughput

Engineering Contradiction:
Improveconflict detection accuracyVSAvoidinstruction dispatch throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs preliminary encoding of instruction capabilities into capability vectors at the time of instruction issuance. This preliminary action allows the dispatch mechanism to quickly determine functional unit readiness without performing time-consuming scans of instruction lists during the dispatch phase, thereby maintaining both conflict detection accuracy and high throughput.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system transforms the representation of instruction readiness from a detailed instruction list format into a compressed capability vector format. This parameter change enables faster processing by the dispatch mechanism, as the encoded capability vectors can be evaluated in constant time rather than requiring linear scanning through instruction lists, thus improving productivity without sacrificing reliability.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If re-order buffers or associative structures are used to avoid hazards, then structural hazards are prevented, but the number of functional units cannot be easily scaled

Engineering Contradiction:
Improvestructural hazard preventionVSAvoidfunctional unit scalability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The system segments the hazard prevention mechanism into independent functional units, each with its own ready list and capability vector. This segmentation allows the number of functional units to be freely scaled without requiring a corresponding increase in centralized buffer or associative structure capacity, as each unit operates independently with its own local data structures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The capability vector structure serves multiple functions simultaneously: it encodes instruction readiness information, enables hazard detection, and facilitates dispatch decisions. This multi-functionality eliminates the need for separate re-order buffers or associative structures, allowing the system to scale functional units without being constrained by fixed buffer capacities or associative memory sizes.

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

4Measurement precision

If centralized control with content-addressable memory is used, then instruction dispatch accuracy is maintained, but the system becomes difficult to implement in field-programmable gate arrays

Engineering Contradiction:
Improveinstruction dispatch accuracyVSAvoidFPGA implementability
Core Design Contradiction:
Measurement precisionVSEase of manufacture

Solution Approach 1:

The system extracts the content-addressable memory component from the dispatch mechanism and replaces it with distributed capability vectors maintained by individual functional units. This extraction eliminates the need for complex CAM hardware that is difficult to implement in FPGAs, while preserving dispatch accuracy through the encoded capability information in the vectors.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system replaces the mechanical/content-addressable memory-based hazard detection mechanism with a software/logic-based capability vector encoding scheme. This substitution uses simple bitwise operations and logical comparisons instead of complex CAM hardware, making the system much easier to implement in FPGAs while maintaining the same level of instruction dispatch accuracy.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS11243778B1Instruction dispatch for superscalar processors
Publication Date: 2022.02.08 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11243778B1 patent drawing
  • US11243778B1 patent drawing
  • US11243778B1 patent drawing

AI summary

The present disclosure relates to instruction dispatch mechanisms for superscalar processors having a plurality of functional units for executing operations simultaneously. Each particular functional unit of the plurality of functional units may be configured to output a capability vector indicating a set of operations that the particular functional unit is currently available to perform. As instructions are received in an issue queue, the functional unit to execute the instruction is selected by comparing capabilities required by the instruction to the asserted capabilities of each of the functional units. A functional unit may reset or de-assert a particular functionality while performing an operation and then re-assert the capability when the instruction is completed. A result of the operation may be stored in a skid buffer for at least as long as the chain execution time in order to avoid resource hazards are a write port of the vector register file.