Temporary Register Reuse in Processing Pipelines

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In data processing systems with multiple register files, the frequent allocation of new temporary registers for temporary-register-using instructions leads to unnecessary register move operations, occupying pipeline slots and bandwidth, and increasing power consumption, especially when multiple instructions reuse the same source register.

Innovation Solution

The processing pipeline detects whether a temporary-register-using instruction follows an earlier instruction that specified the same source register, and if so, reuses the temporary variable stored in the second register file, suppressing the need for additional register move micro-operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a new temporary register is allocated for each temporary-register-using instruction, then the instruction can be executed correctly, but unnecessary register move operations are generated consuming pipeline slots and bandwidth

Engineering Contradiction:
Improveinstruction execution throughputVSAvoidpower consumption from register move operations
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent recovers and reuses temporary registers that are no longer needed by earlier instructions. When a later temporary-register-using instruction requests a temporary register, the system checks if an earlier instruction's temporary register is still valid (not overwritten by intervening instructions). If valid, the later instruction reuses that register instead of allocating a new one, thereby discarding the notion that each instruction needs a dedicated temporary register and recovering the register resource for reuse.

Inventive Principle:
Principle #34Discarding and recovering

Solution Approach 2:

The patent makes temporary registers universal by allowing them to serve multiple temporary-register-using instructions rather than being dedicated to a single instruction. A temporary register allocated for an earlier instruction can be reused by later instructions that need temporary storage, making the register serve multiple functions and multiple instructions, thereby reducing the total number of temporary registers needed and eliminating redundant register move operations.

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

2Reliability

If new temporary registers are allocated for each instruction, then register availability is maintained, but register pressure increases causing potential stalls

Engineering Contradiction:
Improveregister availabilityVSAvoidpipeline stall frequency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system discards the conservative approach of maintaining dedicated temporary registers for each instruction and instead recovers temporary registers for reuse. By tracking which temporary registers are still valid (not overwritten), the system can safely reuse them, thereby reducing register pressure while maintaining reliability through validation checks.

Inventive Principle:
Principle #34Discarding and recovering

Solution Approach 2:

The patent changes the parameter of register allocation from static (one register per instruction) to dynamic (registers allocated and reused based on actual needs). The system monitors the validity state of temporary registers and allocates them dynamically, changing the register availability parameter from a fixed guarantee to a validated flexible state, thereby reducing register pressure while maintaining reliability.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If register move micro-operations are processed for each temporary-register-using instruction, then data is transferred correctly, but pipeline slots are occupied reducing overall throughput

Engineering Contradiction:
Improvedata transfer accuracyVSAvoidpipeline throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent discards redundant register move micro-operations by recovering and reusing temporary registers. When a later instruction can reuse a temporary register from an earlier instruction, the system discards the unnecessary register move operation that would have transferred data again, thereby maintaining data transfer accuracy (the data is already in the correct register) while improving pipeline throughput by eliminating wasted operations.

Inventive Principle:
Principle #34Discarding and recovering

Solution Approach 2:

The patent extracts and removes redundant register move micro-operations from the instruction execution flow. By detecting when a temporary register can be reused, the system extracts the unnecessary data transfer step and removes it from the pipeline, thereby maintaining correctness (the data is already where it needs to be) while improving throughput by reducing the number of micro-operations that must be processed.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS11036511B2Processing of a temporary-register-using instruction including determining whether to process a register move micro-operation for transferring data from a first register file to a second register file based on whether a temporary variable is still available in the second register file
Publication Date: 2021.06.15 ARM LTD
  • US11036511B2 patent drawing
  • US11036511B2 patent drawing
  • US11036511B2 patent drawing

AI summary

An apparatus has a processing pipeline, and first and second register files. A temporary-register-using instruction is supported which controls the pipeline to perform an operation using a temporary variable derived from an operand stored in the first register file. In response to the instruction, when a predetermined condition is not satisfied, the pipeline processes at least one register move micro-operation to transfer data from the at least one source register of the first register file to at least one newly allocated temporary register of the second register file. When the condition is satisfied, the operation can be performed using a temporary variable already stored in the temporary register of the second register file used by an earlier temporary-register-using instruction specifying the same source register for determining the temporary variable, in the absence of an intervening instruction for rewriting the source register.