Credit-Based Flow Control for PCIe Buffer Blocking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional credit-based flow control in PCIe systems can lead to blocking of completion packets by posted packets, hindering efficient packet processing.

Innovation Solution

Implementing a method where posted packets are temporarily stored in a side buffer before processing, allowing completion packets to be processed without immediate credit return, and sending a stale credit update to the sender, thereby preventing blocking and enabling continuous processing of completion packets.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional credit-based flow control is used in PCIe systems, then posted packets can be processed in order, but completion packets are blocked by posted packets in the receiver buffer

Engineering Contradiction:
Improvepacket processing orderVSAvoidcompletion packet processing rate
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The receiver buffer is segmented into two separate buffers: a first buffer for posted packets and a second buffer for completion packets. This segmentation allows completion packets to be processed independently without being blocked by posted packets, while maintaining the ability to track and manage packet credits separately for each buffer type.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A credit management mechanism acts as an intermediary between the sender and receiver, decoupling the processing of posted packets from completion packets. The receiver tracks credits for posted packets separately and can acknowledge completion packets even when posted packets are still being processed, allowing continuous flow of completion packets without waiting for posted packet processing to complete.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If posted packets are immediately processed and credits are returned, then buffer utilization is optimized, but completion packets must wait for posted packets to be processed

Engineering Contradiction:
Improvebuffer utilizationVSAvoidcompletion packet waiting time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by pre-allocating separate buffer spaces for posted and completion packets, and by pre-establishing credit tracking mechanisms. This allows completion packets to be immediately processed upon arrival without waiting for posted packets to be processed, as the infrastructure is already in place to handle both packet types independently.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The dual-buffer architecture enables continuous processing of completion packets independent of posted packet processing status. While posted packets are being processed in the first buffer, completion packets can simultaneously be processed in the second buffer, ensuring continuous useful action without interruptions or waiting periods.

Inventive Principle:
Principle #20Continuity of useful action

3Productivity

If a side buffer is introduced to store posted packets, then completion packets can be processed without blocking, but device complexity increases

Engineering Contradiction:
Improvepacket processing throughputVSAvoidbuffer structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The buffer structure is segmented into distinct first and second buffers with clearly defined roles. This segmentation, while adding structural elements, provides a simple and manageable architecture where each buffer handles specific packet types, reducing the complexity of packet management logic compared to a single unified buffer with complex arbitration requirements.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The credit management mechanism serves multiple functions: it tracks buffer occupancy for posted packets, manages flow control credits, and enables independent processing of completion packets. This multi-functionality reduces the need for separate control mechanisms, offsetting the added buffer structure complexity with consolidated control logic.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8352648B1Credit-based flow control
Publication Date: 2013.01.08 XILINX INC
  • US8352648B1 patent drawing
  • US8352648B1 patent drawing
  • US8352648B1 patent drawing

AI summary

An embodiment of a method for credit-based flow control is disclosed. For this embodiment of the method, a first transaction layer packet from a sending device is loaded into a receiver buffer of a receiving device. A second transaction layer packet is loaded into the receiver buffer, where the second transaction layer packet is of a different packet type than the first transaction layer packet. The first transaction layer packet is unloaded from the receiver buffer without return of a credit for the unloading of the first transaction layer packet from the receiver buffer. The first transaction layer packet is loaded into a side buffer, and the credit for the first transaction layer packet is sent to the sending device responsive to unloading or anticipated unloading of the first transaction layer packet from the side buffer.