IP Library Granted Patent US 9,736,071
Granted Patent B2
US 9,736,071 · App. 14/580,073 · Granted Aug 15, 2017

General input/output architecture, protocol and related methods to implement flow control

Inventors: Jasmin Ajanovic (Portland, OR); David Harriman (Portland, OR); Blaise Fanning (Folsom, CA); David Lee (Portland, OR)
Assignee: Intel Corporation
H04L47/10G06F5/06G06F13/124G06F13/385G06F13/4059G06F13/42G06F13/4221G06F13/4252G06F13/4265G06F13/4269G06F13/4282H04L47/30
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,736,071
App. No.
14/580,073
Granted
Aug 15, 2017
Kind
B2
Abstract

An enhanced general input/output communication architecture, protocol and related methods are presented.

Claims (37)

1. An apparatus comprising:

a device comprising logic to:

receive a flow control packet over a general purpose I/O interconnect, wherein the interconnect is to comprise a differential, point-to-point serial data link;

maintain one or more flow control credit values, based on information in the flow control packet, to represent buffer capacity of a receiver for each of a plurality of virtual channels, wherein flow control credit values of the plurality of virtual channels are maintained for each of a plurality of flow control credit types and the plurality of flow control credit types comprise posted request headers, posted request data payload, non-posted request headers, non-posted request data payload, completion headers, and completion data payload; and

determine whether to send a transaction layer packet to the receiver using the virtual channel based at least in part on the flow control credit value.

2. The apparatus of claim 1 , wherein the interconnect comprises at least one of a physical layer to support a Peripheral Component Interconnect Express (PCIe)-based protocol layer and a physical layer including one or more other protocols.

3. The apparatus of claim 1 , wherein the interconnect is compliant with a PCIe-based protocol.

4. The apparatus of claim 1 , wherein the flow control credit limit values represent a total number of flow control credits made available for at least one of the plurality of virtual channels.

5. The apparatus of claim 4 , wherein the flow control information indicates the flow control credit limit value.

6. The apparatus of claim 1 , wherein the logic is to maintain a value of flow control credits consumed since initialization of at least one of the plurality of virtual channels.

7. The apparatus of claim 6 , wherein determining whether to send a data packet is to be based at least in part on the value of the flow control credits consumed.

8. The apparatus of claim 7 , wherein the data packet is to be sent when a sum of an amount of flow control credits associated with the data packet and the flow control credits consumed does not exceed a flow control credit limit for a corresponding one of the plurality of virtual channels.

9. The apparatus of claim 7 , wherein the data packet is to be delayed when a sum of an amount of flow control credits associated with the data packet and the flow control credits consumed exceeds a flow control credit limit a corresponding one of the plurality of virtual channels.

10. The apparatus of claim 1 , wherein the plurality of virtual channels includes at least eight virtual channels.

11. The apparatus of claim 1 , wherein the plurality of virtual channels includes a default virtual channel.

12. The apparatus of claim 1 , wherein the logic is to maintain a respective flow control register for each of the plurality of virtual channels.

13. An apparatus comprising logic, implemented at least in part in hardware, to be coupled to an interconnect to:

maintain a count of flow control credits to be granted to a transmitter for each of a plurality of virtual channels, wherein a count is maintained for each of a plurality of flow control credit types and the plurality of flow control credit types comprise posted request headers, posted request data payload, non-posted request headers, non-posted request data payload, completion headers, and completion data payload;

assemble a flow control packet to include flow control information to represent buffer capacity associated with at least one of the plurality of virtual channels; and

send the flow control packet to the transmitter.

14. The apparatus of claim 13 , wherein the interconnect comprises at least one of a physical layer to support a PCIe-based protocol layer and a physical layer including one or more other protocols.

15. The apparatus of claim 13 , wherein the interconnect is compliant with a PCIe-based protocol.

16. The apparatus of claim 13 , wherein the logic is to participate in initialization of flow control for at least a particular one of the plurality of virtual channels, and the flow control packet is to be sent in association with the initialization and is to identify a flow control credit limit for the particular virtual channel.

17. The apparatus of claim 13 , wherein the flow control packet is to update a value of a flow control credit limit for at least a particular one of the plurality of virtual channels.

18. The apparatus of claim 13 , wherein the flow control packet is to include an identifier of a corresponding one of the plurality of virtual channels.

19. The apparatus of claim 13 , wherein the flow control packet comprises a data link layer packet.

20. A system comprising:

an interconnect;

a first device; and

a second device communicatively coupled to the first device using the interconnect, the second device to:

receive a flow control packet over a general purpose I/O interconnect, wherein the interconnect is to comprise a differential, point-to-point serial data link;

maintain one or more flow control credit values, based on information in the flow control packet, to represent buffer capacity of a receiver for each of a plurality of virtual channels, wherein flow control credit values of the plurality of virtual channels are to be maintained for each of a plurality of flow control credit types and the plurality of flow control credit types comprise posted request headers, posted request data payload, non-posted request headers, non-posted request data payload, completion headers, and completion data payload; and

determine whether to send a transaction layer packet to the receiver using the virtual channel based at least in part on the flow control credit value.

21. The system of claim 20 , wherein the interconnect comprises a Peripheral Component Interconnect Express (PCIe).

22. The system of claim 20 , wherein the device comprises an endpoint.

23. The system of claim 20 , wherein the second device comprises a switch.

24. The system of claim 20 , wherein the second device comprises a root complex.

Continuity (5)
Division 13729953 · Dec 28, 2012
Continuation 12395497 · Feb 27, 2009
Continuation 10227601 · Aug 23, 2002
Provisional Application 60314708 · Aug 24, 2001
Related Publication 20150178241A1 · Jun 25, 2015