IP Library Granted Patent US 8,971,329
Granted Patent B1
US 8,971,329 · App. 12/273,453 · Granted Mar 3, 2015

System and method for ordering of data transferred over multiple channels

Inventors: Randal G. Martin (San Jose, CA); Steven C. Miller (Livermore, CA); Mark D. Stadler (Mountain View, CA); David A. Kruckemyer (Mountain View, CA)
Assignee: Silicon Graphics International Corp.
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 8,971,329
App. No.
12/273,453
Granted
Mar 3, 2015
Kind
B1
Abstract

A multiple channel data transfer system ( 10 ) includes a source ( 12 ) that generates data packets with sequence numbers for transfer over multiple request channels ( 14 ). Data packets are transferred over the multiple request channels ( 14 ) through a network ( 16 ) to a destination ( 18 ). The destination ( 18 ) re-orders the data packets received over the multiple request channels ( 14 ) into a proper sequence in response to the sequence numbers to facilitate data processing. The destination ( 18 ) provides appropriate reply packets to the source ( 12 ) over multiple response channels ( 20 ) to control the flow of data packets from the source ( 12 ).

Claims (44)

1. A method for ordering data transferred over multiple channels, comprising:

receiving a plurality of data packets of a particular packet flow over different ones of a plurality of channels, each data packet including a respective sequence number, the plurality of data packets being received in a non-sequential order;

storing each of the plurality of data packets in a buffer according to its respective sequence number;

reading a first one of the plurality of data packets from the buffer according to its respective sequence number in response to storing in the buffer a second one of the plurality of data packets having an adjacent subsequent sequence number, in order to read the plurality of data packets in a sequential order;

setting a valid bit associated with data packets of the plurality of data packets in response to the data packets being stored in the buffer, wherein the valid bit is the next sequential valid bit relative to an immediately preceding valid bit; and

clearing the immediately preceding valid bit in response to data packets associated with the immediately preceding valid bit being read from the buffer.

2. The method of claim 1 , further comprising:

monitoring valid bits to identify that the data packets is ready to be read.

3. The method of claim 1 , further comprising:

reading the data packets from the buffer in response to the setting of the valid bit associated with the data packets, wherein clearing the valid bit associated with the data packets is in response to the data packets being read from an associated portion of the buffer.

4. The method of claim 3 , further comprising:

reading a next sequential data packets to the data packets upon setting of a valid bit associated with the next sequential data packets.

5. The method of claim 1 , wherein the sequence number is used to directly index into the buffer.

6. The method of claim 1 , further comprising:

generating a flow control credit for each data packet read from the buffer.

7. The method of claim 6 , further comprising:

transmitting each flow control credit to a source of the plurality of packets.

8. A non-transitory computer readable medium having embodied thereon a program executable by a processor for ordering data transferred over multiple channels, the executable code operable to cause one or more processors to:

receive a plurality of data packets of a particular packet flow over different ones of a plurality of channels, each data packet including a respective sequence number, the plurality of data packets being received in a non-sequential order;

store each of the plurality of data packets in a buffer according to its respective sequence number;

read a first one of the plurality of data packets from the buffer according to its respective sequence number in response to storing in the buffer a second one of the plurality of data packets having an adjacent subsequent sequence number, in order to read the plurality of data packets in a sequential order;

set a valid bit associated with data packets in response to the data packets associated with an immediately preceding valid bit being stored in the buffer, wherein the valid bit is the next sequential valid bit relative to the immediately preceding valid bit; and

clear the immediately preceding valid bit in response to the data packets associated with the immediately preceding valid bit being read from the buffer.

9. The non-transitory computer readable medium of claim 8 , wherein the executable code is further operable to cause the processors to:

monitor valid bits to identify that the data packets are ready to be read.

10. The non-transitory computer readable medium of claim 8 , wherein the executable code is further operable to cause the processors to:

read the data packets from the buffer in response to the setting of the valid bit associated with the data packets, wherein clearing the valid bit associated with the data packets is in response to the data packets being read from an associated portion of the buffer.

11. The non-transitory computer readable medium of claim 10 , wherein the executable code is further operable to cause the processors to:

read next sequential data packets to the data packets upon setting of the valid bit associated with the next sequential data packets.

12. The non-transitory computer readable medium of claim 8 , wherein the sequence number is used to directly index into the buffer.

13. The non-transitory computer readable medium of claim 8 , wherein the executable code is further operable to cause the processors to:

generate a flow control credit in response to each data packet being read from the buffer;

and to transmit each flow control credit to a source of the plurality of packets.

14. A system for ordering data transferred over multiple channels, the system comprising:

a processor;

a buffer; and

a memory for storing instructions which when executed from the memory cause the processor to:

receive a plurality of data packets of a particular packet flow in a non-sequential order over different ones of a plurality of channels, each data packet including a respective sequence number, store each of the plurality of data packets according to its respective sequence number in the buffer,

read a first one of the plurality of data packets stored in the buffer according to its respective sequence number in response to storing in the buffer a second one of the plurality of data packets having an adjacent subsequent sequence number, in order to read the plurality of data packets in a sequential order,

set a valid bit associated with data packets in response to the data packets associated with an immediately preceding valid bit being stored in the buffer, wherein the valid bit is the next sequential valid bit relative to the immediately preceding valid bit, and

clear the immediately preceding valid bit in response to the data packets associated with the immediately preceding valid bit being read from the buffer.

15. The system of claim 14 , wherein the data packets are read from the buffer in response to the setting of the valid bit associated with the data packets, and wherein the valid bit associated with the data packets is cleared in response to the data packets being read from an associated portion of the buffer.

16. The system of claim 15 , wherein next sequential data packets to the data packet is read upon setting of the valid bit associated with the next sequential data packets.

17. The system of claim 14 , wherein the sequence number is used to directly index into the buffer.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Aug 14, 2020
From: MORGAN STANLEY & CO., INCORPORATED
To: SILICON GRAPHICS, INC.
Reel/Frame 053497/0183 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2017
From: SILICON GRAPHICS INTERNATIONAL CORP.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 044128/0149 →
MERGER Recorded Apr 17, 2014
From: SGI INTERNATIONAL, INC.
To: SILICON GRAPHICS INTERNATIONAL CORP.
Reel/Frame 032703/0754 →
CHANGE OF NAME Recorded Apr 17, 2014
From: SILICON GRAPHICS INTERNATIONAL, INC.
To: SGI INTERNATIONAL, INC.
Reel/Frame 032712/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2014
From: SILICON GRAPHICS, INC.
To: SILICON GRAPHICS INTERNATIONAL, INC.
Reel/Frame 032703/0514 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2012
From: SILICON GRAPHICS, INC. ET AL.; SGI INTERNATIONAL, INC.
To: SILICON GRAPHICS INTERNATIONAL, CORP.
Reel/Frame 027904/0315 →
SECURITY AGREEMENT Recorded Jan 22, 2009
From: SILICON GRAPHICS, INC.
To: MORGAN STANLEY & CO., INCORPORATED
Reel/Frame 022137/0162 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2008
From: MARTIN, RANDAL G.; MILLER, STEVEN C.; STADLER, MARK D.; KRUCKEMYER, DAVID A.
To: SILICON GRAPHICS, INC.
Reel/Frame 021859/0061 →
Continuity (2)
Continuation 09910587 · Jul 20, 2001
Provisional Application 60219915 · Jul 21, 2000