Credit-Based Flow Control for PCIe Buffer Blocking
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
3Productivity
If a side buffer is introduced to store posted packets, then completion packets can be processed without blocking, but device complexity increases
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.
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.
Data Source
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.


