Store and Reserve Instruction for Cacheable Memory Polling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional information handling systems face inefficiencies in detecting the completion of DMA transfers due to high interrupt overhead and inefficient bus bandwidth usage in MMIO register polling, leading to wastage of resources like processor cycles and electrical power in cacheline polling mechanisms.

Innovation Solution

A design structure utilizing a store and reserve instruction for cacheline polling, where a reservation is set at a cacheable memory location, and the process stalls until the reservation is lost, allowing efficient detection of DMA completion without additional bus activity.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If MMIO register polling is used to detect DMA completion, then the completion detection is achieved, but bus bandwidth is inefficiently utilized

Engineering Contradiction:
ImproveDMA completion detectionVSAvoidbus bandwidth utilization
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent introduces a buffer flag (intermediary) stored in cacheable memory that mediates between the DMA operation and the processor's completion detection. The buffer flag acts as a signaling mechanism that can be updated by the DMA completion interrupt handler, allowing the processor to detect completion through cache-coherent memory access rather than direct MMIO polling, thus reducing bus bandwidth consumption while maintaining detection accuracy.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If interrupts are used to detect DMA completion, then the completion notification is achieved, but processor overhead is excessive

Engineering Contradiction:
ImproveDMA completion notificationVSAvoidprocessor overhead
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs preliminary action by setting up the buffer flag and establishing cache coherence before the DMA operation completes. The interrupt handler pre-updates the buffer flag in cacheable memory, so that when the processor needs to check completion status, the information is already prepared and visible through normal cache access, eliminating the need for continuous polling or complex interrupt handling overhead.

Inventive Principle:
Principle #10Preliminary action

3Measurement precision

If cacheline polling is used without reservations, then DMA completion can be detected, but processor cycles are wasted

Engineering Contradiction:
ImproveDMA completion detectionVSAvoidprocessor cycles
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent implements self-service through the store-reserve instruction mechanism. When the processor issues a reserve instruction on the buffer flag address, the cache coherence hardware automatically monitors for changes to that cacheline. If another processor or device modifies the buffer flag, the reserve is automatically lost and the processor is notified, eliminating the need for active polling loops and allowing the processor to perform other useful work while waiting for DMA completion.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9009420B2Structure for performing cacheline polling utilizing a store and reserve instruction
Publication Date: 2015.04.14 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US9009420B2 patent drawing
  • US9009420B2 patent drawing
  • US9009420B2 patent drawing

AI summary

A design structure for performing cacheline polling utilizing a store and reserve instruction are disclosed. In accordance with one embodiment of the present invention, a first process initially requests an action to be performed by a second process. A reservation is set at a cacheable memory location via a store operation. The first process reads the cacheable memory location via a load operation to determine whether or not the requested action has been completed by the second process. The load operation of the first process is stalled until the reservation on the cacheable memory location is lost. After the requested action has been completed, the reservation in the cacheable memory location is reset by the second process.