Multi-Bank Register File Operand Alignment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern multi-banked register files face challenges with access conflicts and inefficiencies due to the need for large switches and staging registers, which consume area, power, and introduce latency, especially when handling multiple threads with varying register usage patterns.

Innovation Solution

A system and method that eliminates or reduces the size of switches and staging registers by ensuring conflict-free and aligned register file accesses, where each function unit input is directly connected to a bank of the multi-bank register file, and a compiler or register allocation unit ensures that instructions access different banks in each cycle, using copy instructions to align operands if necessary.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a large multi-ported register file is built to support many threads, then data processing throughput is improved, but area and power consumption increase significantly

Engineering Contradiction:
Improvedata processing throughputVSAvoidregister file area
Core Design Contradiction:
ProductivityVSArea of stationary object

Solution Approach 1:

The register file is divided into multiple smaller banks instead of using a single large multi-ported register file. Each bank can be independently accessed, allowing parallel operations across different banks. This segmentation reduces the area required for each individual bank while maintaining the ability to support multiple threads through parallel access to different banks.

Inventive Principle:
Principle #1Segmentation

2Area of stationary object

If banked register files are used to reduce area, then area and power efficiency are improved, but access conflicts require additional switches and staging registers that increase complexity

Engineering Contradiction:
Improveregister file areaVSAvoidswitch and staging register complexity
Core Design Contradiction:
Area of stationary objectVSDevice complexity

Solution Approach 1:

The system performs preliminary actions by the compiler or register allocation unit to assign registers to specific banks and insert copy instructions before instructions. This pre-planning ensures that when instructions are executed, the required registers are already positioned in appropriate banks, eliminating the need for complex runtime switching and staging mechanisms.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Copy instructions serve as intermediaries to resolve bank conflicts. Instead of using complex switches and staging registers to handle conflicts, the system uses simple copy operations to duplicate register values into appropriate banks beforehand, providing a straightforward mechanism to eliminate access conflicts.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If switches and staging registers are added to eliminate bank conflicts, then access reliability is improved, but area and power consumption increase

Engineering Contradiction:
Improveaccess reliabilityVSAvoidswitch and staging register area
Core Design Contradiction:
ReliabilityVSArea of stationary object

Solution Approach 1:

Instead of using complex switching and staging infrastructure to ensure reliable access, the system copies register values into appropriate banks in advance through compiler-directed copy instructions. This copying approach provides reliable access by ensuring the correct data is already in the right bank, eliminating the need for area-consuming switches and staging registers.

Inventive Principle:
Principle #26Copying

4Reliability

If multi-cycle operations are used to handle bank conflicts, then access reliability is improved, but latency increases

Engineering Contradiction:
Improveaccess reliabilityVSAvoidoperation latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The compiler or register allocation unit performs preliminary actions by inserting copy instructions before instructions that would otherwise cause bank conflicts. This ensures that when the main instruction executes, all required data is already available in the appropriate banks, enabling single-cycle access and eliminating multi-cycle delays.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8555035B1Conflict-free register allocation using a multi-bank register file with input operand alignment
Publication Date: 2013.10.08 NVIDIA CORP
  • US8555035B1 patent drawing
  • US8555035B1 patent drawing
  • US8555035B1 patent drawing

AI summary

One embodiment of the present invention sets forth a technique for using a multi-bank register file that reduces the size of or eliminates a switch and/or staging registers that are used to gather input operands for instructions. Each function unit input may be directly connected to one bank of the multi-bank register file with neither a switch nor a staging register. A compiler or register allocation unit ensures that the register file accesses for each instruction are conflict-free (no instruction can access the same bank more than once in the same cycle). The compiler or register allocation unit may also ensure that the register file accesses for each instruction are also aligned (each input of a function unit can only come from the bank connected to that input).