IP Library Granted Patent US 7,643,477
Granted Patent B2
US 7,643,477 · App. 11/211,046 · Granted Jan 5, 2010

Buffering data packets according to multiple flow control schemes

Assignee: Intel Corporation
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 7,643,477
App. No.
11/211,046
Granted
Jan 5, 2010
Kind
B2
Abstract

In one embodiment, the present invention includes an apparatus that has multiple buffers, including a first buffer dedicated to a first virtual channel of a first virtual network and a second buffer shared among virtual channels of a second virtual network. The shared buffer may be implemented as a shared adaptive buffer, and the buffers can be controlled using different flow control schemes, such as on a packet and flit basis. Other embodiments are described and claimed.

Claims (29)

1. An apparatus comprising:

a buffer pool including a first buffer to be dedicated to a first virtual channel of a first virtual network, the first buffer of a multi-flit size, and a third buffer to be dedicated to a second virtual channel of the first virtual network, the third buffer of a single flit size; and

a second buffer to be shared among a plurality of virtual channels of a second virtual network, the second buffer of a multi-flit size, and wherein each of the first and second virtual channels have dedicated credits and flow control of the buffer pool is according to a packet-based flow control scheme and flow control of the second buffer is according to a flit-based flow control scheme.

2. The apparatus of claim 1 , wherein the second buffer comprises a shared adaptive buffer shared among the plurality of virtual channels.

3. The apparatus of claim 1 , wherein the first buffer is to be controlled on a packet basis.

4. The apparatus of claim 3 , wherein the second buffer is to be controlled on a flit basis.

5. The apparatus of claim 1 , further comprising a shared counter associated with the second buffer to store a value corresponding to a credit level of the second buffer, the shared counter controlled on a message size basis.

6. The apparatus of claim 5 , further comprising a first response credit counter associated with the first buffer to store a value corresponding to a response credit level of the first buffer, the first response credit counter controlled on a per message basis.

7. The apparatus of claim 6 , wherein the first buffer is to send a back pressure signal to stall a protocol layer if insufficient credits are available in the first response credit counter.

8. The apparatus of claim 6 , further comprising a first request credit counter associated with the second buffer to store a value corresponding to a request credit level of the second buffer.

9. The apparatus of claim 1 , wherein the apparatus comprises a first agent to be coupled to a second agent via a point-to-point interconnect.

10. The apparatus of claim 1 , wherein the second buffer is to be a primary communication channel and the buffer pool is to be a secondary communication channel.

11. A method comprising:

buffering a first message to be sent via a first virtual channel in a first buffer of a link layer of a first endpoint, the first buffer dedicated to the first virtual channel;

buffering a second message to be sent via a second virtual channel in a second buffer of the link layer of the first endpoint, the second buffer shared by a plurality of virtual channels including the second virtual channel; and

sending the first message via the first virtual channel from the first endpoint to a second endpoint coupled to the first endpoint if a credit counter associated with the first buffer has a sufficient credit value, wherein the credit counter is controlled on a per message basis and is updated responsive to a return credit value received from the second endpoint, and otherwise sending a back pressure signal from the link layer to a protocol layer of the first endpoint.

12. The method of claim 11 , further comprising sending the second message via the second virtual channel if a shared credit counter associated with the second buffer has a sufficient credit value, wherein the shared credit counter is controlled on a message size basis.

13. The method of claim 11 , further comprising enabling the second buffer to be a primary buffer of a system and the first buffer to be a secondary buffer of the system.

14. The method of claim 11 , further comprising:

controlling messages to be sent via the first virtual channel according to a first flow control protocol; and

controlling messages to be sent via the second virtual channel according to a second flow control protocol.

15. The method of claim 14 , wherein the first flow control protocol comprises a packet-based protocol and the second flow control protocol comprises a flit-based protocol.

16. A system comprising:

a first agent having a first non-shared counter to count credits for a first non-shared buffer dedicated to a first virtual channel of a non-shared virtual network and a first shared counter to count credits for a first shared buffer to be shared by a first plurality of virtual channels of a shared adaptive virtual network, wherein the first non-shared counter is to count credits according to a first flow control scheme and the first shared counter is to count credits according to a second flow control scheme and the first shared buffer is to be used over the first non-shared buffer if sufficient credits are available in the first shared counter to transmit a packet;

a second agent coupled to the first agent, the second agent having a second non-shared counter to count credits for a second non-shared buffer dedicated to a second virtual channel and a second shared counter to count credits for a second shared buffer to be shared by a second plurality of virtual channels, wherein the second agent is to send a shared counter return credit upon receipt of a packet from the first shared buffer and the first shared counter is to update the credits for the first shared buffer in accordance with the shared counter return credit; and

a dynamic random access memory (DRAM) coupled to the first agent and the second agent.

17. The system of claim 16 , wherein the first non-shared counter is to count credits on a message basis and the first shared counter is to count credits on a flit basis.

18. The system of claim 16 , further comprising a serial interconnect to couple the first agent and the second agent.

19. The system of claim 16 , wherein the first non-shared counter includes a response counter and a request counter.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2005
From: SPINK, AARON T.; HUM, HERBERT H.J.
To: INTEL CORPORATION
Reel/Frame 016919/0190 →
Continuity (1)
Related Publication 20070053350A1 · Mar 8, 2007