IP Library Granted Patent US 7,830,905
Granted Patent B2
US 7,830,905 · App. 12/107,036 · Granted Nov 9, 2010

Speculative forwarding in a high-radix router

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,830,905
App. No.
12/107,036
Granted
Nov 9, 2010
Kind
B2
Abstract

A system and method for speculative forwarding of packets received by a router, wherein each packet includes phits and wherein one or more phits include a cyclic redundancy code (CRC). A packet is received and phits of the packet are forwarded to router logic. A cyclic redundancy code for the packet is calculated and compared to the packet's cyclic redundancy code. An error is generated if the cyclic redundancy codes don't match. If the cyclic redundancy codes don't match, a phit of the packet is modified to reflect the error, the CRC is corrected and the corrected CRC is forwarded to the router logic along with the phit reflecting the CRC error. At the router logic, a check is made to see if the packet is still within the router logic. If the packet is still within the router logic and there was a CRC error, the packet is discarded. If, however, the packet is no longer within the router logic and there was a CRC error, the packet is modified so that the next router discards the packet.

Claims (55)

1. A router, comprising:

a plurality of subswitches arranged in a n×p matrix, wherein each subswitch includes n inputs and p outputs, wherein both n and p are greater than one;

a plurality of input ports;

local control blocks connected to the plurality of input buffers, wherein the local control blocks include means for speculative forwarding of phits received by the router, wherein speculative forwarding comprises forwarding before a cyclic redundancy code has been verified;

a plurality of output ports, wherein each output port includes a multiplexer and an arbiter for selecting data to be switched onto the output port via the multiplexer;

a plurality of row busses, wherein each row bus receives data from one of the plurality of input ports and distributes the data to two or more of the plurality of subswitches; and

a plurality of column channels, wherein each column channel connects one of the outputs of one of the subswitches to an input of one of the multiplexers;

wherein each row bus includes a route selector, wherein the route selector includes a routing table which selects an output port for each packet and which routes the packet through one of the row busses to the selected output port.

2. The router of claim 1 , wherein n equals p.

3. The router of claim 1 , wherein the speculative forwarding means includes means for discarding packets with incorrect cyclic redundancy codes.

4. A router, comprising:

a plurality of subswitches arranged in a n×p matrix, wherein each subswitch includes n inputs and p outputs, wherein both n and p are greater than one;

a plurality of input ports;

local control blocks connected to the plurality of input buffers, wherein the local control blocks include means for speculative forwarding of phits received by the router, wherein speculative forwarding comprises forwarding before a cyclic redundancy code has been verified;

a plurality of output ports, wherein each output port includes a multiplexer and an arbiter for selecting data to be switched onto the output port via the multiplexer;

distribution means, connected to the input ports and the subswitches, for receiving data from one of the plurality of input ports and for distributing the data to two or more of the plurality of subswitches; and

a plurality of column channels, wherein each column channel connects one of the outputs of one of the subswitches to an input of one of the multiplexers;

wherein the distribution means includes a route selector, wherein the route selector includes a routing table which selects an output port for each packet and which routes the packet to the selected output port.

5. The router of claim 4 , wherein n equals p.

6. The router of claim 4 , wherein the speculative forwarding means includes means for discarding packets with incorrect cyclic redundancy codes.

7. 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:

a plurality of subswitches arranged in a n×p matrix, wherein each sub switch includes p inputs and p outputs;

a plurality of input ports;

local control blocks connected to the plurality of input buffers, wherein the local control blocks include means for speculative forwarding of phits received by the router, wherein speculative forwarding comprises forwarding before a cyclic redundancy code has been verified;

a plurality of output ports, wherein each output port includes a multiplexer and an arbiter for selecting data to be switched onto the output port via the multiplexer;

a plurality of row busses, wherein each row bus receives data from one of the plurality of input ports and distributes the data to two or more of the plurality of subswitches; and

a plurality of column channels, wherein each column channel connects one of the outputs of one of the subswitches to an input of one of the multiplexers;

wherein each row bus includes a route selector, wherein the route selector includes a routing table which selects an output port for each packet and which routes the packet through one of the row busses to the selected output port.

8. The computer system of claim 7 , wherein n equals p.

9. The computer system of claim 7 , wherein the speculative forwarding means includes means for discarding packets with incorrect cyclic redundancy codes.

10. A method of speculative forwarding of packets received by a router, wherein each packet includes phits and wherein one or more phits include a cyclic redundancy code (CRC), the method comprising:

receiving a packet and forwarding phits of the packet to router logic;

calculating a cyclic redundancy code;

comparing the calculated cyclic redundancy code to the packet's cyclic redundancy code and generating an error if the cyclic redundancy codes don't match;

if the cyclic redundancy codes don't match, modifying a phit of the packet to reflect the error, correcting the CRC and forwarding the corrected CRC with the phit reflecting the error to the router logic;

at the router logic, determining if the packet is still within the router logic;

if the packet is still within the router logic and there was a CRC error, discarding the packet; and

if the packet is no longer within the router logic and there was a CRC error, modifying the packet so that the next router discards the packet.

11. The method of claim 10 , wherein comparing the calculated cyclic redundancy code to the packet's cyclic redundancy code includes determining if the packet has a length greater than the maximum packet length.

12. A method of speculative forwarding of packets received by a router, wherein each packet includes phits and wherein one or more phits include a cyclic redundancy code (CRC), the method comprising:

receiving a packet comprising a plurality of phits;

calculating a cyclic redundancy code for the packet;

comparing the calculated cyclic redundancy code to the packet's cyclic redundancy code; and

if the cyclic redundancy codes don't match, discarding the packet in either the receiving router or a subsequent router.

13. A router, comprising:

an input operable to receive a packet comprising a plurality of phits;

a routing element operable to forward a packet before checking a cyclic redundancy code for the packet; and

an error handler operable to:

calculate a cyclic redundancy code for the packet;

compare the calculated cyclic redundancy code to the packet's cyclic redundancy code; and

if the cyclic redundancy codes don't match, cause the packet to be discarded in either the receiving router or a subsequent router.

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 29, 2008
From: SCOTT, STEVEN L.; HUBBARD, GREGORY; MARQUARDT, KELLY; BETHARD, ROGER A.; ABTS, DENNIS C.
To: CRAY INC.
Reel/Frame 021755/0499 →
Continuity (2)
Provisional Application 6092547000 · Apr 20, 2007
Related Publication 20090028172A1 · Jan 29, 2009