Salvaging Hardware Transactions via Salvage Indicator Instructions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The increasing number of CPU cores and shared memory systems leads to scalability issues due to hot spots in shared queues or data structures protected by traditional semaphores, making it challenging to achieve efficient transactional execution in multi-threaded environments, with frequent transactional aborts resulting in inefficiency.

Innovation Solution

A method for salvaging hardware transactions using a salvage indicator instruction, where the processor detects a pending failure and determines if a salvage indication has been recorded, allowing it to avoid aborting the transaction and execute an about-to-fail handler if the indication is present, thereby preserving speculative state.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If hardware transactional memory is used to achieve atomic operations, then transaction execution performance is improved, but transaction abort rate increases leading to reduced productivity

Engineering Contradiction:
Improvetransaction execution performanceVSAvoidtransaction commit success rate
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system performs preliminary actions by saving speculative state during transaction execution before an abort occurs. The salvage indicator instruction is executed in advance to mark transactions that have completed sufficient work, enabling the hardware to preserve partial results and reduce abort penalties when conflicts are detected.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of completely discarding speculative state on transaction abort, the system recovers useful information by detecting the salvage indicator and preserving partial execution results. This allows the transaction to be resumed or restarted with retained state, reducing the frequency and impact of aborts.

Inventive Principle:
Principle #34Discarding and recovering

2Reliability

If traditional semaphores are used for protecting shared data structures, then synchronization is achieved, but scalability deteriorates due to hot spots in shared queues

Engineering Contradiction:
Improvedata structure protectionVSAvoidn-way scaling performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent replaces traditional software-based semaphore mechanisms with hardware transactional memory mechanisms. This substitution eliminates the need for software lock management and shared queue synchronization, allowing concurrent transactions to execute without mechanical blocking and achieving superior scalability.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

Hardware transactional memory acts as an intermediary layer between software threads and shared data structures. It provides automatic conflict detection and resolution, eliminating the need for explicit software synchronization primitives and enabling finer-grained concurrent access.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If finer-grained locking is implemented in software to improve scalability, then concurrency is improved, but system complexity increases making it error-prone

Engineering Contradiction:
Improvesoftware scalabilityVSAvoidlocking implementation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent replaces complex software locking implementations with hardware-based transactional memory mechanisms. This substitution automatically handles conflict detection, serialization, and synchronization, eliminating the need for programmers to manually implement fine-grained locking and reducing software complexity.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

Hardware transactional memory provides self-service synchronization by automatically detecting conflicts between transactions and managing serialization ordering. The system handles its own coordination needs without requiring external software intervention, simplifying the overall system architecture.

Inventive Principle:
Principle #25Self-service

4Quantity of substance

If hardware interconnects are used for communication, then bandwidth is improved, but latency increases due to physical dimensions and speed of light limits

Engineering Contradiction:
Improveinterconnect bandwidthVSAvoidcommunication latency
Core Design Contradiction:
Quantity of substanceVSSpeed

Solution Approach 1:

Transaction attributes and conflict information are communicated through the memory hierarchy as intermediaries rather than through dedicated high-speed interconnects. The transactional memory hardware uses existing memory pathways to propagate state information, avoiding the latency penalties of light-speed limited interconnect communication.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9342397B2Salvaging hardware transactions with instructions
Publication Date: 2016.05.17 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US9342397B2 patent drawing
  • US9342397B2 patent drawing
  • US9342397B2 patent drawing

AI summary

A transactional memory system salvages a hardware transaction. A processor of the transactional memory system executes a salvage indicator instruction, such execution including obtaining a salvage indication information specified by the salvage indicator instruction, and saving the salvage indication information comprising a salvage indication. Based on a pending point of failure being detected, the processor uses the saved salvage indication information to avoid aborting a hardware transaction, wherein absent salvage indication information, the pending point of failure causes a hardware transaction to abort. The processor detects the point of failure, and based on the detecting, determines whether the salvage indication has been recorded. Based on determining that the salvage indication has been recorded, the processor executes an about-to-fail handler, and based on determining that the salvage indication has not been recorded, the processor aborts the transactional execution of the code region.