General input/output architecture, protocol and related methods to implement flow control
First Claim
Patent Images
1. A method comprising:
- initializing a flow control mechanism within an general input/output (GIO) interface of a transmitting device, the flow control mechanism initially associated with a first virtual channel upon initialization of the first virtual channel;
receiving, at the flow control mechanism from a GIO interface of a receiving device coupled with the GIO interface of the transmitting device via the virtual channel, an indication of a number of credits allocated for transmission of content from the transmitting device to the receiving device, wherein each credit indicates amount of content that can be transmitted;
dynamically tracking, by the flow control mechanism of the transmitting device, buffer availability associated with the GIO interface of the receiving device via the first virtual channel by monitoring the indication of the number of credits; and
selectively suspending, by the transmitting device, transmission of content to the remote GIO interface of the receiving device through the virtual channel when the GIO interface of the transmitting device determines that the receive buffer availability has reached a threshold amount;
wherein the flow control mechanism of the transmitting device dynamically tracks the buffer availability using a first register to track a number of credits consumed, a second register to track a credit limit, and a third register to track a number of credits allowed by the receiver; and
wherein the flow control mechanism of the transmitting device maintains and tracks separate indicators of credits for the following types of packet information for each virtual channel associated with the GIO interface;
posted request headers (PH), posted request data (PD), non-posted request headers (NPH), non-posted request data (NPD), read write and message completion headers (CPLH), and read and message completion data (CPLD).
1 Assignment
0 Petitions
Accused Products
Abstract
An enhanced general input/output communication architecture, protocol and related methods are presented.
-
Citations
27 Claims
-
1. A method comprising:
-
initializing a flow control mechanism within an general input/output (GIO) interface of a transmitting device, the flow control mechanism initially associated with a first virtual channel upon initialization of the first virtual channel; receiving, at the flow control mechanism from a GIO interface of a receiving device coupled with the GIO interface of the transmitting device via the virtual channel, an indication of a number of credits allocated for transmission of content from the transmitting device to the receiving device, wherein each credit indicates amount of content that can be transmitted; dynamically tracking, by the flow control mechanism of the transmitting device, buffer availability associated with the GIO interface of the receiving device via the first virtual channel by monitoring the indication of the number of credits; and selectively suspending, by the transmitting device, transmission of content to the remote GIO interface of the receiving device through the virtual channel when the GIO interface of the transmitting device determines that the receive buffer availability has reached a threshold amount; wherein the flow control mechanism of the transmitting device dynamically tracks the buffer availability using a first register to track a number of credits consumed, a second register to track a credit limit, and a third register to track a number of credits allowed by the receiver; and wherein the flow control mechanism of the transmitting device maintains and tracks separate indicators of credits for the following types of packet information for each virtual channel associated with the GIO interface;
posted request headers (PH), posted request data (PD), non-posted request headers (NPH), non-posted request data (NPD), read write and message completion headers (CPLH), and read and message completion data (CPLD). - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A general input/output (GIO) interface in a transmitting device comprising:
-
a physical layer, to couple the GIO interface to a GIO communication link; and a transaction layer, coupled with the physical layer through a data link layer, the transaction layer including a flow control mechanism dynamically established upon initialization of a first virtual channel between the GIO interface and a remote GIO interface of a receiving device, the flow control mechanism to; populate a credit limit buffer of the flow control mechanism with a value received from the remote GIO interface denoting a number of flow control credits allocated to the virtual channel during initialization of the virtual channel; dynamically track additional buffer availability associated with a virtual channel between the GIO interfaces of the transmitting and receiving device using a first register to track a number of credits consumed, a second register to track a credit limit and a third register to track a number of credits allowed by the receiver; and suspend the transmissions from the transmitting device via any one of the virtual channels if it is determined by the transmitting device that the buffer availability has reached a threshold amount; wherein the flow control mechanism maintains and tracks separate indicators of credits for the following types of packet information for each virtual channel associated with the GIO interface;
posted request headers (PH), posted request data (PD), non-posted request headers (NPH), non-posted request data (NPD), read write and message completion headers (CPLH), and read and message completion data (CPLD). - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A storage medium comprising content which, when executed by an accessing device, causes the device to implement a general input/output interface (GIO) to:
-
initialize a flow control mechanism initially associated with a first virtual channel upon initialization of the first virtual channel; receive, at the flow control mechanism from a GIO interface of a receiving device coupled with the GIO interface of the transmitting device via the first virtual channel, an indication of a number of credits allocated for transmission of content from the transmitting device to the receiving device, wherein each credit indicates amount of content that can be transmitted; dynamically track, by the flow control mechanism of the transmitting device, buffer availability associated with the GIO interface of the receiving device via the first virtual channel by monitoring the indication of the number of credits; and selectively suspend, by the transmitting device, transmission of content to the remote GIO interface of the receiving device through the first virtual channel when the GIO interface of the transmitting device determines that the receive buffer availability has reached a threshold amount; wherein the flow control mechanism of the transmitting device dynamically track the buffer availability using a first register to track a number of credits consumed, a second register to track a credit limit, and a third register to track a number of credits allowed by the receiver; and wherein the flow control mechanism of the transmitting device maintains and tracks separate indicators of credits for the following types of packet information for each virtual channel associated with the GIO interface;
posted request headers (PH), posted request data (PD), non-posted request headers (NPH), non-posted request data (NPD), read write and message completion headers (CPLH), and read and message completion data (CPLD). - View Dependent Claims (25, 26, 27)
-
Specification