IP Library Granted Patent US 7,864,792
Granted Patent B2
US 7,864,792 · App. 12/107,019 · Granted Jan 4, 2011

Load balancing for communications within a multiprocessor computer system

Assignee: Cray, Inc.
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,864,792
App. No.
12/107,019
Granted
Jan 4, 2011
Kind
B2
Abstract

In a system having a N output ports, wherein N is an integer greater than one, a method of distributing packets across the plurality of output ports. A packet having two or more fields is received and a first number is computed as a function of one or more of the plurality of fields. A second number is computed that is modulo base N of the first number and an output port is selected as a function of the second number.

Claims (46)

1. A method of distributing packets across a plurality of output ports, comprising:

receiving a packet, wherein the packet includes a plurality of fields;

computing a first number as a function of one or more of the plurality of fields;

computing a second number that modulo base N of the first number; and

selecting an output port as a function of the second number.

2. The method of claim 1 , wherein the packet includes a destination number and wherein computing a first number includes hashing an input port and the destination number.

3. The method of claim 1 , wherein the packet includes a destination number and wherein computing a first number includes computing an XOR of an input port and the destination number.

4. The method of claim 1 , wherein the packet includes a destination number and two or more optional hash bits and wherein computing a first number includes hashing an input port with the destination number and the optional hash bits.

5. The method of claim 1 , wherein the packet includes a destination number and two or more optional hash bits and wherein computing a first number includes hashing the destination number with the optional hash bits.

6. The method of claim 1 , wherein the packet includes a destination number and two or more optional hash bits and wherein computing a first number includes computing an XOR of an input port with the destination number and the optional hash bits.

7. The method of claim 1 , wherein the packet includes a destination number, a control bit and two or more optional hash bits and wherein computing a first number includes:

if the control bit is not set, hashing an input port with the destination number; and

if the control bit is set, hashing an input port with the destination number and the optional hash bits.

8. The method of claim 1 , wherein the packet includes a destination number, a control bit and two or more optional hash bits and wherein computing a first number includes:

if the control bit is not set, hashing the destination number; and

if the control bit is set, hashing the destination number with the optional hash bits.

9. An article comprising a Non-transitory computer readable medium having instructions stored thereon, wherein the instructions, when executed in a computer, create a system for executing the method of claim 1 .

10. A method of distributing packets across a plurality of uplink and sidelink ports, comprising:

receiving a packet, wherein the packet includes a plurality of fields; computing a first number as a function of one or more of the plurality of fields; determining whether the packet is to be routed to an uplink port or a sidelink port;

if the packet is to be routed to an uplink port, computing a second number that modulo base N of the first number, and selecting an uplink port as a function of the second number; and

if the packet is to be routed to a sidelink port, computing a second number that modulo base M of the first number, and selecting a sidelink port as a function of the second number.

11. The method of claim 10 , wherein the packet includes a destination number and wherein computing a first number includes hashing an input port and the destination number.

12. The method of claim 10 , wherein the packet includes a destination number and wherein computing a first number includes computing an XOR of an input port and the destination number.

13. The method of claim 10 , wherein the packet includes a destination number and two or more optional hash bits and wherein computing a first number includes hashing an input port with the destination number and the optional hash bits.

14. The method of claim 10 , wherein the packet includes a destination number and two or more optional hash bits and wherein computing a first number includes hashing the destination number with the optional hash bits.

15. The method of claim 10 , wherein the packet includes a destination number and two or more optional hash bits and wherein computing a first number includes computing an XOR of an input port with the destination number and the optional hash bits.

16. The method of claim 10 , wherein the packet includes a destination number, a control bit and two or more optional hash bits and wherein computing a first number includes:

if the control bit is not set, hashing an input port with the destination number; and

if the control bit is set, hashing an input port with the destination number and the optional hash bits.

17. The method of claim 10 , wherein the packet includes a destination number, a control bit and two or more optional hash bits and wherein computing a first number includes:

if the control bit is not set, hashing the destination number; and

if the control bit is set, hashing the destination number with the optional hash bits.

18. An article comprising a Non-transitory computer readable medium having instructions stored thereon, wherein the instructions, when executed in a computer, create a system for executing the method of claim 10 .

19. A computer system, comprising:

a plurality of processor nodes;

a plurality of first routers; and

a plurality of second routers;

wherein each first router is connected to a processor node and to two or more second routers and wherein each first router includes means for receiving a packet having a plurality of fields and means for computing a first number as a function of two or more of the plurality of fields; and

wherein each first router further includes an uplink route selector which selects an uplink from N possible uplinks to the second routers, wherein the uplink route selector includes:

means for computing a second number that is modulo base N of the first number; and

means for selecting the uplink as a function of the second number.

20. The system according to claim 19 , wherein each first router further includes a sidelink route selector which selects a sidelink from M possible sidelinks to the other first routers, wherein the sidelink route selector includes:

means for computing a second number that is modulo base M of the first number; and

means for selecting the sidelink as a function of the second number.

21. The system according to claim 20 , wherein the means for computing a first number includes means for determining whether to compute the first number as a function of optional hash bits.

22. The system according to claim 19 , wherein the means for computing a first number includes means for determining whether to compute the first number as a function of optional hash bits.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2012
From: CRAY INC.
To: INTEL CORPORATION
Reel/Frame 028545/0797 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2008
From: SCOTT, STEVEN L.; ABTS, DENNIS C.; DALLY, WILLIAM J.
To: CRAY INC.
Reel/Frame 021687/0481 →
Continuity (2)
Provisional Application 6092547000 · Apr 20, 2007
Related Publication 20090041049A1 · Feb 12, 2009