Introduction: Communication protocols play a pivotal role in the world of data transmission. In such protocols, a transmitting device sends data to a receiving device, but there’s no guarantee that the entire data will be received successfully. Issues like overflow and underflow can disrupt the seamless flow of data. To address these situations, PCIe (Peripheral Component Interconnect Express) incorporates a vital concept known as flow control credits.
Flow Control Credits in PCIe: Flow control (FC) credits serve as indicators of available buffer space within the receiving device. These flow control credits are defined as Data Link Layer Packets (DLLPs) in the PCIe architecture. In Non-Flit mode, each Virtual Channel (VC) at each port possesses dedicated flow control credits. These credits are comprised of both headers and data, with header credits consisting of 5 Data Words (DW) for requests and 4 DW for completions, and data credits being 4 DW (16 Bytes) in size.
Types of Flow Control Transactions: These flow control credits utilize three types of transactions to define available buffer space: Posted (P), Non-posted (NP), and Completions (Cpl).
Flow Control Initialization: The available buffer space is communicated using three FC_INIT DLLPs in a defined order of transactions: Posted, Non-posted, and Completions. When the receiver advertises available credits, the transmitter uses this information to determine when and how to send packets, ensuring data isn’t lost in the process.
Addressing Potential Deadlocks: However, there is a possibility of encountering deadlock conditions in the link. This can occur when there is a mismatch in the transaction order, leading to traffic congestion. This is particularly concerning as data rates are set to increase or even double in PCIe 6.0, necessitating more virtual channels to handle the increased traffic. This, in turn, requires more buffer space and credits, resulting in higher costs and complex hardware designs.
Introducing Shared Flow Control Credits in Flit Mode: To tackle this issue, shared flow control credits were introduced in Flit mode. In this mode, a VC can have both shared and dedicated flow control credits. When the dedicated credits are exhausted, the remaining credits are stored in the shared flow control credits. This approach involves six FC_INIT DLLPs – three for dedicated credits and three for shared credits. Any overflowing credits from VCs are placed in the shared flow control credit pool, which can be utilized as needed.
Enhancing Efficiency and Reliability: One of the key advantages of shared flow control credits is that they can accommodate all types of transactions. In case an order mismatch occurs, the shared pool can be leveraged to ensure the necessary transactions are carried out, thus helping to prevent deadlock situations. Additionally, scaled flow control credits can be employed to allocate a fixed amount of credits, further enhancing the reliability and efficiency of the link while simultaneously reducing costs and simplifying hardware design.
Conclusion: In the evolving landscape of data transfer, PCIe continues to adapt and improve its protocols. The introduction of shared flow control credits in Flit mode represents a significant step forward in addressing the challenges posed by increasing data rates. This innovation not only ensures the reliable transmission of data but also contributes to cost savings and streamlined hardware designs, ultimately benefitting the entire industry. As data demands continue to grow, these advancements will play a vital role in maintaining efficient and robust communication protocols.