Register Windows for Parallel Loop Iterations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In highly parallel strand-based architectures, the dynamic register renaming technique used in superscalar architectures is inefficient due to out-of-order instruction fetch and execution, limiting the ability to exploit inter-iteration parallelism in loops effectively.

Innovation Solution

An efficient register allocation scheme is implemented, where a binary translator decomposes loops into strands and allocates separate iteration windows for each loop iteration, allowing strands to execute with different register sets, thereby avoiding register overwriting and enabling high levels of instruction-level parallelism.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If dynamic register renaming technique is used in superscalar architectures, then inter-iteration parallelism can be exploited through out-of-order execution, but the technique becomes inefficient in highly parallel strand-based architectures due to out-of-order instruction fetch and the need to support much larger execution width

Engineering Contradiction:
Improveinter-iteration parallelism exploitationVSAvoidrenaming hardware complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the loop iterations into multiple segments or windows, where each window contains a subset of iterations that can be executed in parallel. This segmentation allows the system to manage register allocation in discrete blocks rather than requiring complex dynamic renaming across all iterations, thereby reducing hardware complexity while maintaining high parallelism.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension for register allocation by using iteration windows that add a temporal and spatial structure to register management. Instead of relying solely on complex renaming logic, the system organizes registers into windows corresponding to different iteration segments, enabling parallel execution across multiple dimensions of iteration space.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Productivity

If multiple loop iterations are processed simultaneously via multiple strands, then out-of-order fetch and execution is enabled, but dynamic register renaming becomes inapplicable due to the need to support much larger execution width than practical renaming hardware can afford

Engineering Contradiction:
Improveinstruction-level parallelismVSAvoidrenaming hardware
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the large execution width requirement into multiple smaller iteration windows, each handling a manageable subset of iterations. This segmentation allows practical renaming hardware to handle each window independently while the system as a whole achieves support for much larger execution width through parallel window processing.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial renaming within each iteration window rather than attempting to rename all registers across all iterations simultaneously. This partial action approach allows the system to achieve the effect of supporting large execution width by processing iterations in batches, using practical renaming hardware for each batch without requiring impractical full-system renaming capacity.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS10241801B2Method and apparatus to create register windows for parallel iterations to achieve high performance in HW-SW codesigned loop accelerator
Publication Date: 2019.03.26 INTEL CORP
  • US10241801B2 patent drawing
  • US10241801B2 patent drawing
  • US10241801B2 patent drawing

AI summary

An apparatus includes a register file and a binary translator to create a plurality of strands and a plurality of iteration windows, where each iteration window of the plurality of iteration windows is allocated a set of continuous registers of the register file. The apparatus further includes a buffer to store strand documentation for a strand from the plurality of strands, where the strand documentation for the strand is to include an indication of a current register base for the strand. The apparatus further includes an execution circuit to execute an instruction to update the current register base for the strand in the strand documentation for the strand based on a fixed step value and an iteration window size.