Selective Register Allocation for Snapshot-Based Restoration

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The high cost and performance penalties associated with saving and restoring registers during function calls in computing environments, particularly for short functions, due to the need to save and restore callee-saved and caller-saved registers, which incur significant expenses and penalties like load-hit-store and forwarding penalties.

Innovation Solution

A method that uses register renaming and snapshots to optimize the saving and restoring of registers, where a snapshot of register states is taken during bulk save operations and reused during bulk restore operations, minimizing the impact on performance by avoiding memory usage and reducing the need for explicit register saving and loading.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If registers are saved and restored using traditional stack methods, then register state preservation is achieved, but processing time increases and performance penalties occur

Engineering Contradiction:
Improveregister state preservationVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent creates a copy of the register state snapshot and stores it in a snapshot buffer, avoiding the need to repeatedly save and restore registers from memory. This copying mechanism allows rapid restoration of register states without incurring memory access penalties, directly resolving the contradiction between reliable state preservation and processing time efficiency

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent takes a snapshot of the register state in advance and stores it in a buffer before it is needed. This preliminary action eliminates the need for time-consuming save and restore operations during actual processing, as the register state is already prepared and readily available in the snapshot buffer

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If physical registers are allocated from all available registers, then allocation flexibility is maximized, but performance degrades due to interference with recovery and restoration snapshots

Engineering Contradiction:
Improveallocation flexibilityVSAvoidprocessing efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent segments the physical register space into two distinct groups: registers dedicated to recovery snapshots and registers dedicated to restoration snapshots. This segmentation allows the system to maintain high allocation flexibility within each segment while preventing interference between different snapshot types, thereby preserving processing efficiency

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent assigns different quality characteristics to different register groups based on their intended use. Recovery snapshot registers are optimized for branch misprediction recovery, while restoration snapshot registers are optimized for function call restoration. This local quality differentiation ensures that each register group performs its specific function efficiently without degrading overall system productivity

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10564977B2Selective register allocation
Publication Date: 2020.02.18 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10564977B2 patent drawing
  • US10564977B2 patent drawing
  • US10564977B2 patent drawing

AI summary

Selective register allocation. Based on determining that an unused physical register is unavailable for allocation, a physical register to be used for allocation is chosen from a selective group of physical registers. The selective group of physical registers is associated with a snapshot of one type of snapshot selected from a plurality of types of snapshots. The snapshot maps physical registers to architected registers. The physical register chosen for allocation is allocated.