Dynamic Register Allocation via Spill Count Monitoring

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The efficiency of processing cores is declining due to memory latency issues, and there is a need for a more optimal register allocation scheme to improve overall system performance by exposing available resources to dynamic compilers.

Innovation Solution

A computer system with a processor and main memory that includes a plurality of hardware threads, a first register table for architected registers, a second register table, and a mapping table to dynamically adjust the number of architected registers assigned to software threads, with a controller monitoring register usage and notifying threads to recompile for improved performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the number of architected registers is increased to improve thread execution efficiency, then register allocation optimality improves, but device complexity and resource consumption increase

Engineering Contradiction:
Improvethread execution efficiencyVSAvoidregister allocation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements dynamic adjustment of the number of architected registers based on runtime monitoring of spill counts. The register allocation is not fixed but adapts dynamically to changing workload characteristics, allowing the system to optimize for thread execution efficiency while managing complexity through adaptive rather than static configuration

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system monitors spill counts as feedback metrics and uses this information to dynamically adjust register allocation. The controller receives feedback about register usage patterns and modifies the number of architected registers accordingly, creating a closed-loop system that balances performance optimization with resource management

Inventive Principle:
Principle #23Feedback

2Productivity

If dynamic register allocation is implemented to improve system performance, then thread execution efficiency improves, but device complexity increases due to additional control mechanisms

Engineering Contradiction:
Improvesystem performanceVSAvoidcontrol mechanism complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs self-adjustment of register allocation based on monitored spill counts. The controller automatically modifies register allocation without requiring external intervention or complex manual configuration, allowing the system to optimize its own performance while managing the complexity of control mechanisms through autonomous operation

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent changes the parameter of architected register count dynamically based on runtime conditions. By adjusting this critical parameter in response to monitored performance metrics, the system achieves performance optimization while the complexity is managed through parameter adaptation rather than structural complexity

Inventive Principle:
Principle #35Parameter changes

3Quantity of substance

If more architected registers are allocated to software threads, then register availability improves, but memory latency issues worsen due to increased register table sizes

Engineering Contradiction:
Improveregister availabilityVSAvoidmemory latency
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The system dynamically adjusts the number of architected registers based on actual runtime needs rather than allocating a fixed large number. This dynamic approach ensures sufficient register availability when needed while avoiding the memory latency penalties associated with maintaining large register tables for all possible scenarios simultaneously

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11275614B2Dynamic update of the number of architected registers assigned to software threads using spill counts
Publication Date: 2022.03.15 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11275614B2 patent drawing
  • US11275614B2 patent drawing
  • US11275614B2 patent drawing

AI summary

A computer system includes a processor, main memory, and controller. The processor includes a plurality of hardware threads configured to execute a plurality of software threads. The main memory includes a first register table configured to contain a current set of architected registers for the currently running software threads. The controller is configured to change a first number of the architected registers assigned to a given one of the software threads to a second number of architected registers when a result of monitoring current usage of the registers by the software threads indicates that the change will improve performance of the computer system. The processor includes a second register table configured to contain a subset of the architected registers and a mapping table for each software thread indicating whether the architected registers referenced by the corresponding software thread are located in the first register table or the second register table.