Non-Posted Request Deadlock Avoidance via Forward Progress Indicators

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Devices in communications environments, such as PCIe devices, face deadlocks due to ordering rules that prevent non-posted requests from passing when posted writes are stalled, leading to potential system failures and errors.

Innovation Solution

Implementing a forward progress indicator within the device's port configuration space to determine if the port is making progress on inbound requests, allowing the request engine to delay or hold non-posted requests until forward progress is ensured, thus avoiding deadlocks and maintaining device operability during partial recovery situations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If non-posted requests are sent without checking port status, then request throughput is improved, but deadlock occurs when posted writes are stalled

Engineering Contradiction:
Improverequest throughputVSAvoiddeadlock avoidance
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent applies preliminary action by checking the forward progress indicator before sending non-posted requests. The request engine queries the indicator status in advance to determine whether the port is making forward progress on inbound posted requests. This preliminary check prevents sending requests that would cause deadlock, while still allowing high throughput when the port is healthy and making progress.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If non-posted requests are held when forward progress is blocked, then deadlock is avoided, but request processing delay increases

Engineering Contradiction:
Improvedeadlock avoidanceVSAvoidrequest processing delay
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent implements feedback through the forward progress indicator, which continuously reports the port's processing status. The request engine queries this indicator and adjusts its request sending behavior based on the feedback. When the indicator shows forward progress is blocked, the engine holds non-posted requests; when progress is being made, requests are sent immediately. This feedback mechanism minimizes unnecessary delays while preventing deadlock.

Inventive Principle:
Principle #23Feedback

3Difficulty of detecting and measuring

If a forward progress indicator is implemented, then deadlock detection capability is improved, but device complexity increases

Engineering Contradiction:
Improveforward progress detectionVSAvoidport configuration space
Core Design Contradiction:
Difficulty of detecting and measuringVSDevice complexity

Solution Approach 1:

The patent uses an intermediary approach by introducing a forward progress indicator as a status bit in the port configuration space. This indicator acts as a mediator between the port's internal state and the request engine's decision-making process. Rather than requiring complex deadlock detection logic, the indicator provides a simple binary signal that the request engine can query to determine whether to send non-posted requests, thus adding minimal complexity while enabling effective deadlock avoidance.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8516177B2Avoiding non-posted request deadlocks in devices by holding the sending of requests
Publication Date: 2013.08.20 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US8516177B2 patent drawing
  • US8516177B2 patent drawing
  • US8516177B2 patent drawing

AI summary

Processing within a device is controlled in order to avoid a deadlock situation. A local request engine of the device determines prior to making a request whether the port of the device that is to service the request is making forward progress in processing other requests. If forward progress is being made, then the request is forwarded to the port. Otherwise, the request is held. This avoids a deadlock situation and allows the device to remain operative even in partial recovery situations.