WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Reconfigurable, fault tolerant, multistage interconnect network and protocol    
United States Patent5321813   
Link to this pagehttp://www.wikipatents.com/5321813.html
Inventor(s)McMillen; Robert J. (Encinitas, CA); Watson; M. Cameron (Los Angeles, CA); Chura; David J. (Redondo Beach, CA)
AbstractA multistage interconnect network (MIN) capable of supporting massive parallel processing, including point-to-point and multicast communications between processor modules (PMs) which are connected to the input and output ports of the network. The network is built using interconnected switch nodes arranged in 2 log.sub.b N stages, wherein b is the number of switch node input/output ports, N is the number of network input/output ports and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N. The additional stages provide additional paths between network input ports and network output ports, thereby enhancing fault tolerance and lessening contention.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Inventor     McMillen; Robert J. (Encinitas, CA); Watson; M. Cameron (Los Angeles, CA); Chura; David J. (Redondo Beach, CA)
Owner/Assignee     Teradata Corporation (El Segundo, CA)
Patent assignment
All assignments
Publication Date     June 14, 1994
Application Number     07/694,110
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     May 1, 1991
US Classification     714/798 370/244 370/388 370/390 370/422 370/447
Int'l Classification     G06F 013/00
Examiner     Richardson; Robert L.
Assistant Examiner    
Attorney/Law Firm     Merchant, Gould, Smith, Edell, Welter & Schmidt
Address
Parent Case    
Priority Data    
USPTO Field of Search     370/60 370/60.1 370/94.1 370/95.1 395/200 395/275
Patent Tags     reconfigurable, fault tolerant, multistage interconnect network and protocol
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5119370
Terry
370/354
Jun,1992

[0 after 0 votes]
4962497
Ferenc
370/354
Oct,1990

[0 after 0 votes]
4829227
Turner
370/422
May,1989

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A communications system, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) means for connecting the switch nodes together in a multistage interconnect network, the means for connecting comprising forward channel and back channel signal paths coupled to each of the input and output ports in the switch nodes, wherein the back channel signal paths have a narrower bandwidth relative to the forward channel signal paths to simplify packaging.

2. The system of claim 1, further comprising:

(c) multicast means, operative within the network, for transmitting forward channel messages from a source to one or more destinations; and

(d) back channel merge means, within each switch node, for combining back channel replies received from the destinations into a single result, wherein the result is transmitted on the back channel to the source.

3. The system of claim 1, wherein the means for connecting comprises cabling means for wiring between switch nodes in different stages so that the forward channels and back channel signal paths are laid out in one or more copies of a universal wiring pattern.

4. The system of claim 3, wherein the universal wiring pattern comprises a permutation of connections between switch node input and output ports that swaps the least significant two base b digits of a port's level number representation, where b is the switch node size.

5. The system of claim 3, wherein the means for wiring comprises means for wiring every stage in a network of size N=x.sup.n, n>1, with x.sup.n-2 copies of the universal wiring pattern, wherein x is a total number of output ports on a switch node.

6. The system of claim 1, wherein the means for connecting comprises means for interconnecting the switch nodes together to simplify the cabling, wherein a pattern of interconnections between switch nodes in each stage of the network is completely specified by permuting the digits of a level number representing a port of a switch node.

7. The system of claim 6, wherein the means for interconnecting comprises means for connecting switch node output ports identified by (S: x.sub.n-1 . . . x.sub.1 x.sub.0) to switch node input ports identified by (S+1: PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 }), wherein S indicates a switch node in a specific stage, n refers to a total number of stages in the network, and x is a level number of a switch node port represented as (x.sub.n-1 . . . x.sub.1 x.sub.0).sub.b in a base b corresponding to a size of the switch nodes, wherein 0.ltoreq.x.sub.i =b, 0.ltoreq.i<n.

8. The network of claim 7, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.2.sub.0 {x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 for a network wherein n=2.

9. The network of claim 7, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.1 x.sub.0 x.sub.2 for a network wherein n=3.

10. The network of claim 7, wherein PERMUTE.sup.n.sub.S }x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 }x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 }x.sub.2 x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 x.sub.2 for a network wherein n=3.

11. The network of claim 7, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.4.sub.0 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x.sub.1, PERMUTE.sup.4.sub.1 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.1 x.sub.0 x.sub.3 x.sub.2, and PERMUTE.sup.4.sub.2 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x.sub.1 for a network wherein n=4.

12. The network of claim 11, wherein PERMUTE.sup.4.sub.0 and PERMUTE.sup.4.sub.2 leave the most significant two digits undisturbed, so that an interconnection length in stages 0 and 2 are minimized.

13. The system of claim 6, wherein the means for interconnecting comprises means for connecting switch node output ports identified by (S+1: PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 }) to switch node input ports identified by (S: x.sub.n-1 . . . x.sub.1 x.sub.0), wherein S indicates a switch node in a specific stage, n refers to a total number of stages in the network, and x is a level number of a switch node port represented as (x.sub.n-1 . . . x.sub.1 x.sub.0).sub.b in a base b corresponding to a size of the switch nodes, wherein 0.ltoreq.x.sub.i <b and 0.ltoreq.i<n.

14. The network of claim 13, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.2.sub.0 {x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 for a network wherein n=2.

15. The network of claim 13, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.1 x.sub.0 x.sub.2 for a network wherein n=3.

16. The network of claim 13, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 x.sub.2 for a network wherein n=3.

17. The network of claim 13, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.4.sub.0 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x.sub.1, PERMUTE.sup.4.sub.1 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.1 x.sub.0 x.sub.3 x.sub.2, and PERMUTE.sup.4.sub.2 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x.sub.1 for a network wherein n=4.

18. The network of claim 17, wherein PERMUTE.sup.4.sub.0 and PERMUTE.sup.4.sub.2 leave the most significant two digits undisturbed, so that an interconnection length in stages 0 and 2 are minimized.

19. The system of claim 1, wherein the means for connecting comprises means for arranging the switch nodes in more than log.sub.b N stages, wherein b is a total number of switch node input/output ports, N is a total number of network I/O ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N, thereby providing additional communication paths between any network input port and network output port to enhance fault tolerance and lessen contention.

20. The system of claim 19, wherein the switch nodes are arranged in 2 log.sub.b N stages.

21. A method of communicating among a plurality of switch nodes connected together in a multistage interconnect network, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports, the method comprising:

(a) transmitting messages between switch nodes using a forward channel coupled to each of the input and output ports in the switch nodes; and

(b) transmitting between switch nodes using a back channel coupled to each of the input and output ports in the switch nodes, wherein the back channels have a narrower bandwidth relative to the forward channels to simplify packaging.

22. The method of claim 21, further comprising:

(c) transmitting forward channel messages from a source to one or more destinations; and

(d) combining back channel replies received from the destinations into a single result, wherein the result is transmitted on the back channel to the source.

23. A communication system having a plurality of ports for concurrently transferring messages between different ones of the ports, comprising:

(a) a plurality of agents connected to the system, each including means providing interconnect request messages containing routing tags for communicating with other agents, means for transmitting variable length data messages, and means for transmitting response messages of different types having values in accordance with a predetermined protocol; and

(b) network means for intercoupling the agents, the network means comprising a plurality of switch nodes arranged in a multistage interconnect network and each having a plurality of forward channel and back channel signal paths with selectable interconnections between different terminals of the switch nodes, the back channel signal paths having a narrower bandwidth relative to the forward channel signal paths, the switch nodes also including means responsive to the routing tags in the messages for selecting signal paths between switch nodes in order to establish a complete path through the network, and the switch nodes further comprising means for reserving the complete path during the transmission of variable length data messages, once request messages and response messages thereto have been successfully interchanged.

24. A communications system, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) means for interconnecting the switch nodes together in a multistage interconnect network to simplify the cabling therebetween, wherein a pattern of interconnections between different stages of switch nodes is specified by permuting the digits of a level number representing a port of a switch node.

25. The system of claim 24, wherein the means for interconnecting comprises means for connecting switch node ports identified by (S: x.sub.n-1 . . . x.sub.1 x.sub.0) to switch node ports identified by (S+1: PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 }), wherein S indicates a switch node in a specific stage, n refers to a total number of stages in the network, and x is a level number of a switch node port represented as (x.sub.n-1 . . . x.sub.1 x.sub.0).sub.b in a base b corresponding to a size of the switch nodes, wherein 0.ltoreq.x.sub.i <b and 0.ltoreq.i<n.

26. The network of claim 25, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.2.sub.0 {x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 for a network wherein n=2.

27. The network of claim 25, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.1 x.sub.0 x.sub.2 for a network wherein n=3.

28. The network of claim 25, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 x.sub.2 for a network wherein n=3.

29. The network of claim 25, wherein PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.4.sub.0 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x.sub.1, PERMUTE.sup.4.sub.1 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.1 x.sub.0 x.sub.3 x.sub.2, and PERMUTE.sup.4.sub.2 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x.sub.1 for a network wherein n=4.

30. The network of claim 29, wherein PERMUTE.sup.4.sub.0 and PERMUTE.sup.4.sub.2 leave the most significant two digits undisturbed, so that an interconnection length in stages 0 and 2 are minimized.

31. A communications apparatus, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) means for connecting the switch nodes together in a multistage interconnect network by connecting switch node ports identified by (S: x.sub.n-1 . . . x.sub.1 x.sub.0) to switch node ports identified by (S+1: PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 }), wherein S indicates a switch node in a specific stage, n refers to a total number of stages in the network and hence its size, and x is a level number of a switch node port represented as (x.sub.n-1 . . . x.sub.1 x.sub.0).sub.b in a base b corresponding to the size of the switch nodes, wherein 0.ltoreq.x.sub.i <b, 0.ltoreq.i<n and PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.2.sub.0 {x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 for a network wherein n=2.

32. A communications apparatus, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) means for connecting the switch nodes together in a multistage interconnect network by connecting switch node ports identified by (S: x.sub.n-1 . . . x.sub.1 x.sub.0) to switch node ports identified by (S+1: PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 }), wherein S indicates a switch node in a specific stage, n refers to a total number of stages in the network and hence its size, and x is a level number of a switch node port represented as (x.sub.n-1 . . . x.sub.1 x.sub.0).sub.b in a base b corresponding to the size of the switch nodes, wherein 0.ltoreq.x.sub.i <b, 0.ltoreq.i<n and PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.1 x.sub.0.sub.x.sub.2 for a network wherein n=3.

33. A communications apparatus, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) means for connecting the switch nodes together in a multistage interconnect network by connecting switch node ports identified by (S: x.sub.n-1 . . . x.sub.1 x.sub.0) to switch node ports identified by (S+1: PERMUTE.sup.n.sub.S }x.sub.n-1 . . . x.sub.1 x.sub.0 }), wherein S indicates a switch node in a specific stage, n refers to a total number of stages in the network and hence its size, and x is a level number of a switch node port represented as (x.sub.n-1 . . . x.sub.1 x.sub.0).sub.b in a base b corresponding to the size of the switch nodes, wherein 0.ltoreq.x.sub.i <b, 0.ltoreq.i<n and PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.3.sub.0 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.2 x.sub.0 x.sub.1 and PERMUTE.sup.3.sub.1 {x.sub.2 x.sub.1 x.sub.0 }=x.sub.0 x.sub.1 x.sub.2 for a network wherein n=3.

34. A communications apparatus, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) means for connecting the switch nodes together in a multistage interconnect network by connecting switch node ports identified by (S: x.sub.n-1 . . . x.sub.1 x.sub.0) to switch node ports identified by (S+1: PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 }), wherein S indicates a switch node in a specific stage, n refers to a total number of stages in the network and hence its size, and x is a level number of a switch node port represented as (x.sub.n-1 . . . x.sub.1 x.sub.0).sub.b in a base b corresponding to the size of the switch nodes, wherein 0.ltoreq.x.sub.i <b, 0.ltoreq.i<n and PERMUTE.sup.n.sub.S {x.sub.n-1 . . . x.sub.1 x.sub.0 } is equivalent to PERMUTE.sup.4.sub.0 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x.sub.1, PERMUTE.sup.4.sub.1 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub. 1 x.sub.0 x.sub.3 x.sub.2, and PERMUTE.sup.4.sub.2 {x.sub.3 x.sub.2 x.sub.1 x.sub.0 }=x.sub.3 x.sub.2 x.sub.0 x .sub.1 for a network wherein n=4.

35. A communications network, comprising:

(a) a plurality of switch nodes arranged into a multistage interconnect network having a plurality of input and output ports, each port being coupled to an agent to effect communication between agents through the network;

(b) the network having a multiple of log.sub.b N stages of interconnected switch nodes, wherein b is a total number of switch node input/output ports, N is the number of network I/O ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N, thereby providing additional paths between any network input port and network output port to enhance fault tolerance and lessen contention; and

(c) the network having a loop-back point indicating where the stages of the network are physically folded together so that corresponding switch nodes in similarly numbered stages on either side of the loop-back point are located adjacent to each other, thereby simplifying packaging and minimizing signal path lengths.

36. An apparatus for concurrently transferring messages between different ports, comprising:

(a) multistage interconnect network means for interconnecting a plurality of switch nodes for communication therebetween, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) dynamic configuration means for determining how the switch nodes are interconnected and hence a topology of the multistage interconnect network means, so that messages can be routed correctly between the switch nodes.

37. The apparatus of claim 36, wherein the dynamic configuration means further comprises:

(1) means for communicating addresses between switch nodes, wherein one switch node communicates its location to another switch node connected thereto; and

(2) tag mapping table means, in each switch node, for storing routing information derived from the addresses of the switch nodes, so that messages can be routed correctly between the switch nodes.

38. The apparatus of claim 37, further comprising initializing means for querying the switch nodes at startup to determine how they are interconnected and for generating the tag mapping table means in response thereto.

39. A network, comprising:

(a) a plurality of switch nodes, each having a first plurality of input ports, a second plurality of output ports, and path selector means for selectively connecting the switch node input ports to the switch node output ports;

(b) means for interconnecting the switch nodes in a relatively arbitrary manner to effect a multistage interconnect network, the network having a first plurality of input ports, a second plurality of output ports, and means for routing messages through the network by transmitting a message from one switch node to another switch node; and

(c) means for determining how the switch nodes have been interconnected and for constructing routing tables for each switch node in response thereto, so that the path selector means can connect an input port receiving a message to an output port for transferring the message in order to correctly transmit the message.

40. The network of claim 39, wherein the means for determining comprises:

(1) topology determination means for communicating addresses between the switch nodes, so that a topology for the network can be determined; and

(2) message routing means for storing routing information derived from the addresses of the switch nodes, so that messages can be routed correctly through the network.

41. A communications apparatus, comprising:

(a) network means for providing bidirectional data transmission between agents, the network means comprising switch nodes connected together in a multistage interconnect network, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) tag mapping table means, in each switch node, for storing routing information derived from the addresses of the switch nodes, so that the data transmission can be routed correctly through the network means.

42. A method for communicating in a network comprising a plurality of switch nodes, each switch node having a first plurality of input ports, a second plurality of output ports, and path selector means for selectively connecting the switch node input ports to the switch node output ports, the method comprising:

(a) interconnecting the switch nodes in a relatively arbitrary manner to effect a multistage interconnect network;

(b) determining how the switch nodes have been interconnected;

(c) constructing routing tables for each switch node according to how the switch nodes have been interconnected; and

(d) transferring messages through the network according to the routing tables, wherein each switch node that receives the messages uses a routing table to determine which output port should receive the message.

43. The method of claim 42, wherein the determining step comprises:

(1) communicating addresses between the switch nodes, so that a topology for the network can be determined; and

(2) storing routing information derived from the addresses of the switch nodes, so that messages can be routed correctly through the network.

44. A communications system, comprising:

(a) network means for providing bidirectional data transmission between agents connected thereto, the network means comprising switch nodes connected together in a multistage interconnect network, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) self-diagnosing means, integrated with the network, for detecting and reporting any errors that occur within the network.

45. The system of claim 44, wherein the self-diagnosing means comprises diagnostic processor means for monitoring the state of the network means, for performing self-tests on the components of the network means, and for initializing the network means.

46. The system of claim 45, wherein the diagnostic processor means comprises means for configuring routing tables and input and output enable vectors for the network means so that fault conditions in the network means can be bypassed.

47. A communications system, comprising:

(a) a multistage interconnect network comprising a plurality of interconnected active logic switch nodes;

(b) diagnostic means for detecting and reporting any errors that occur within the network, and for isolating the errors without propagating them, thereby improving diagnosability and serviceability;

(c) reconfiguration means for reconfiguring the network when an error is detected, without interrupting communications in the system, so that any degradation in performance is minimized.

48. The system of claim 47, wherein the reconfiguration means further comprises means for reconfiguring routing tables and input and output enable vectors in the network, so that all communications are routed around a faulty section of the network.

49. The system of claim 47, wherein the network further comprises redundant networks for providing added bandwidth and fault tolerance to the system.

50. The system of claim 49, further comprising control means for load leveling message transmission through the redundant networks.

51. The system of claim 49, further comprising control means for switching between the redundant networks when a failure occurs, so that if one or more of the redundant networks is not available, the others can take over, thereby providing for graceful degradation in the presence of malfunctions.

52. A method for communicating in a multistage interconnect network comprising a plurality of interconnected active logic switch nodes, the method comprising the steps of:

(a) detecting and reporting any errors that occur within the network, and isolating the errors without propagating them, thereby improving serviceability; and

(b) reconfiguring the network when an error is detected, without interrupting communications in the system, so that any degradation in performance in the reconfigured network is minimized.

53. The method of claim 52, wherein the reconfiguring step further comprises reconfiguring routing tables and input and output enable vectors in the network, so that all communications are routed around a faulty section of the network.

54. The method of claim 52, further comprising load leveling message transmission through redundant networks.

55. The method of claim 52, further comprising switching between redundant networks when a failure occurs, so that if one or more of the redundant networks is not available, the others can take over, thereby providing for graceful degradation in the presence of malfunctions.

56. A communications system, comprising:

(a) a multistage interconnect network comprising a plurality of interconnected active logic switch nodes;

(b) each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports;

(c) the multistage interconnect network comprising more than log.sub.b N stages of switch nodes, wherein b is a total number of switch node input/output ports, N is a total number of network input/output ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N, the stages thereby providing a plurality of paths between any network input port and network output port to enhance fault tolerance and lessen contention;

(d) diagnostic means for detecting and reporting any errors that occur within the network, thereby improving serviceability; and

(e) reconfiguration means for reconfiguring the network, without interrupting the communications in the system, when an error is detected, and for isolating the error without propagating it, so that any degradation in performance in the reconfigured network is minimized.

57. The system of claim 56, wherein the switch nodes further comprise tag mapping table means, associated with each input port of a switch node, for interpreting a routing tag to determine which output port of the switch node to select in order to route correctly a connect request through the network.

58. The system of claim 57, wherein the tag mapping table means comprises a memory array with a plurality of entries for translating the routing tag to an output port selection, wherein the array provides a one-to-one mapping between a logical port selection provided by the routing tag and a physical port selection.

59. The system of claim 58, wherein each entry in the array is derived from an appropriate field of the routing tag according to a stage of the switch node within the network.

60. The system of claim 56, wherein the switch nodes further comprise input enable vectors for indicating which input ports of the switch node are operational.

61. The system of claim 56, wherein the switch nodes further comprise output enable vectors for indicating which output ports of the switch node are operational.

62. The system of claim 59, wherein the tag mapping table means comprises a lookup table for mapping the routing tag to a physical output port based on the way in which the network is cabled.

63. The system of claim 59, wherein the tag mapping table means further comprises means for initializing each entry in the tag mapping table means to be numerically equivalent to its address offset, such that a physical port selection is equal to a logical port selection, thereby providing default values that are appropriate for fully configured networks.

64. The system of claim 63, wherein the tag mapping table means further comprises means for overlaying the default values when a configuring agent has determined an actual topology for the network.

65. A communications system, comprising:

(a) a network comprising at least two input ports and two output ports, and capable of simultaneous communications between a different pair of input and output ports;

(b) message routing means, within the network, for accepting a connect request containing a routing tag identifying an output port destination for the message, and for steering the connect request to the output port destination;

(c) back-off means, within the network, for cancelling the connect request when the output port destination is unavailable; and

(d) retry means, triggered by the back-off means, for delaying a retry of the connect request, and for trying a different connect request between the input port and a different output port destination, thereby reducing contention in the network.

66. The system of claim 65, wherein the network further comprises:

(1) a plurality of switch nodes, each comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports;

(2) tag mapping table means, associated with each input port of a switch node, for interpreting the routing tag to determine which output port of the switch node to select in order to route correctly the connect request through the network.

67. The system of claim 65, wherein the message routing means further comprises monocast blocking means for disabling the back-off means and for waiting until a desired path through the network becomes available.

68. The system of claim 65, wherein the message routing means further comprises monocast pipelining means for sending messages from sending agents to receiving agents without waiting for acknowledgments to connect requests from the receiving agents.

69. A communications method for a network comprising at least two input ports and two output ports, and capable of simultaneous communications between a different pair of input and output ports, the method comprising the steps of:

(a) accepting a connect request containing a routing tag identifying an output port destination for the message, and steering the connect request to the output port destination;

(b) cancelling the connect request when the output port destination is unavailable; and

(c) delaying a retry of the connect request, and for trying a different connect request from the input port, thereby reducing contention in the network.

70. The method of claim 69, further comprising interpreting the routing tag to determine which output port of the switch node to select in order to route correctly the connect request through the network.

71. The method of claim 69, wherein the accepting step further comprises preventing cancellation of connect requests and waiting until a desired path through the network becomes available.

72. The method of claim 69, wherein the accepting step further comprises transmitting messages from sending agents to receiving agents without waiting for acknowledgments to connect requests from the receiving agents.

73. A communications apparatus, comprising:

(a) a multistage interconnect network comprising a plurality of interconnected active logic switch nodes;

(b) each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports;

(c) the multistage interconnect network comprising more than log.sub.b N stages of switch nodes, wherein b is a total number of switch node input/output ports, N is a total number of network input/output ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N, thereby providing a plurality of paths between any network input port and network output port to enhance fault tolerance and lessen contention; and

(d) load balancing means, in each switch node, for distributing messages among the plurality of output ports so that messages are evenly distributed throughout the network.

74. The apparatus of claim 73, wherein the load balancing means comprises:

(1) means, within each switch node, for choosing a switch node output port similarly numbered as a requesting switch node input port when the similarly numbered switch node output port is available; and

(2) means, within each switch node, for choosing a next available switch node output port when the similarly numbered switch node output port is not available.

75. The apparatus of claim 74, wherein the load balancing means further comprises means for selecting a second output port of a switch node having a next higher port number than the input port of the switch node that received the connect request when the first output port is unavailable.

76. A system for concurrently transferring messages between different ports, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting the input ports to the output ports; and

(b) means for interconnecting the switch nodes in a multistage interconnect network having a first plurality of network input ports and a second plurality of network output ports;

(c) partitioning means for grouping the network ports into logically independent subsets, wherein each subset is a supercluster; and

(d) multicast means, operative within the network, for transmitting a message from a network input port to one or more network output ports grouped in a supercluster, wherein messages transmitted within any one supercluster are prevented from interfering with messages transmitted within any other supercluster.

77. The system of claim 76, wherein the partitioning means further comprises:

(1) means for grouping network ports into a supercluster of size 2.sup.m-p, wherein binary addresses for the grouped network ports are identical in p highest order bits thereof, thereby providing 2.sup.P superclusters of size 2.sup.m-p in the system, wherein m= log.sub.2 N , N is a total number of network input/output ports, and log.sub.2 N indicates a ceiling function providing the smallest integer not less than log.sub.2 N; and

(2) means for addressing each supercluster as {y.sub.m-1,y.sub.m-2, . . . ,y.sub.m-p }, wherein y.sub.i .epsilon. }0,1} and m-1.ltoreq.i.ltoreq.m-p.

78. The system of claim 77, further comprising means for recursively subdividing superclusters into smaller superclusters, so that the system can contain a plurality of superclusters of different sizes, wherein each size is a power of two.

79. The system of claim 77, further comprising means for allocating network ports to address blocks that are a power of two when each supercluster size is not a power of two and/or N is not a power of two.

80. The system of claim 76, wherein the partitioning means further comprises:

(1) means for generating a list of supercluster sizes; and

(2) means for calculating a smallest power of two not less than each supercluster size;

(3) means for adding up the calculated powers of two to determine a size of a network needed;

(4) means for calculating the smallest power of two not less than the size of the network;

(5) means for dividing the network in half recursively as needed until there is a section which is the size of each power of two that was calculated for each supercluster; and

(6) means for assigning the network ports in each supercluster to addresses in the corresponding range.

81. A method for concurrently transferring messages between different ports of a multistage interconnect network having a plurality of interconnected switch nodes, the method comprising the steps of:

(a) grouping the network ports into logically independent subsets, wherein each subset is a supercluster; and

(b) transmitting a message from a network input port to one or more network output ports grouped in a supercluster, wherein messages transmitted within any one supercluster are prevented from interfering with messages transmitted within any other supercluster.

82. The method of claim 81, wherein the grouping step further comprises:

(1) grouping network ports into a supercluster of size 2.sup.m-p, wherein binary addresses for the grouped network ports are identical in p highest order bits thereof, thereby providing 2.sup.P superclusters of size 2.sup.m-p in the system, wherein m= log.sub.2 N , N is a total number of network input/output ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.2 N; and

(2) addressing each supercluster as {y.sub.m-1,y.sub.m-2, . . . ,y.sub.m-p }, wherein y.sub.i .epsilon. {0,1}and m-1.ltoreq.i.ltoreq.m-p.

83. The method of claim 82, further comprising recursively subdividing superclusters into smaller superclusters, so that the network can contain a plurality of superclusters of different sizes, wherein each size is a power of two.

84. The method of claim 82, further comprising allocating network ports to address blocks that are a power of two when N is not a power of two.

85. The method of claim 81, wherein the grouping step further comprises:

(1) generating a list of supercluster sizes; and

(2) calculating a smallest power of two not less than each supercluster size;

(3) adding up the calculated powers of two to determine a size of a network needed;

(4) calculating the smallest power of two not less than the size of the network;

(5) dividing the network in half recursively as needed until there is a section which is the size of each power of two that was calculated for each supercluster; and

(6) assigning the network ports in each supercluster to addresses in the corresponding range.

86. A system for concurrently transferring messages between different ports, comprising:

(a) a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports; and

(b) means for connecting the switch nodes together in a multistage interconnect network, the means for connecting comprising forward channel and back channel signal paths; and

(c) multicast means, operative within the network, for transmitting forward channel messages from a source to one or more destinations; and

(d) back channel merge means, within each switch node, for combining back channel replies received from the destinations into a single result, wherein the result is transmitted on the back channel to the source.

87. The system of claim 86, wherein the multicast means comprises means for steering a multicast request for a supercluster to a bounce back point within the network means, wherein all multicast requests to the supercluster use the same bounce back point.

88. The system of claim 87, wherein the means for steering comprises means for steering a multicast request from one supercluster to a destination supercluster through a bounce back point for the destination supercluster.

89. The system of claim 86, wherein the multicast means comprises means for permitting only one multicast message at a time within a supercluster thereby preventing deadlock between competing multicast requests.

90. A method for concurrently transferring messages between different ports of multistage interconnect network, the network comprising a plurality of switch nodes, each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports, the switch nodes connected together via forward channel and back channel signal paths connected to every input and output port, the method comprising the steps of:

(a) transmitting forward channel messages from a source to one or more destinations; and

(b) combining back channel replies received from the destinations into a single result, wherein the result is transmitted on the back channel to the source.

91. The method of claim 90, wherein the transmitting step comprises steering a multicast request for a supercluster to a bounce back point within the network means, wherein all multicast requests to the supercluster use the same bounce back point.

92. The method of claim 91, wherein the steering step comprises steering a multicast request from one supercluster to a destination supercluster through a bounce back point for the destination supercluster.

93. The method of claim 90, wherein the transmitting step comprises permitting only one multicast message at a time within a supercluster, thereby preventing deadlock between competing multicast requests.

94. A system for concurrently transferring messages, comprising:

(a) a multistage interconnect network comprising a plurality of interconnected active logic switch nodes;

(b) each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports;

(c) the multistage interconnect network comprising more than log.sub.b N stages of switch nodes, wherein b is a total number of switch node input/output ports, N is a total number of network input/output ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N, the multistage interconnect network providing a plurality of paths between any network input port and network output port to enhance fault tolerance and lessen contention; and

(d) multicast steering means, within each switch node, for routing multicast requests to a specific input port of a specific switch node within the network, so that only one multicast request can occur at a time, thereby preventing deadlock between competing multicast requests.

95. The system of claim 94, further comprising:

(1) means for storing a reply from each network output port in the back channel; and

(2) means for collecting replies from the network output ports and for applying the replies to merge means for synchronously combining all of the replies, wherein the replies are sorted as they propagate through the merge means, so that only the reply having the highest priority is transmitted through the system.

96. The system of claim 95, wherein the merge means comprises low sort means for outputting a reply with a lowest key followed by an accompanying data word.

97. The system of claim 95, wherein the merge means further comprises add means for summing data words of all replies in a bit serial manner so that the result has the same number of bits as the operands.

98. An apparatus for concurrently transferring messages between different ports, comprising:

(a) a multistage interconnect network comprising a plurality of interconnected active logic switch nodes;

(b) each switch node comprising a first plurality of input ports, a second plurality of output ports, and means for selectively connecting said input ports to said output ports,

(c) the multistage interconnect network comprising more than log.sub.b N stages of switch nodes, wherein b is a total number of switch node input/output ports, N is a total number of network input ports and network output ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N, the multistage interconnect network providing a plurality of paths between any network input port and network output port to enhance fault tolerance and lessen contention; and

(d) deadlock avoidance means, within each switch node, for allowing only one routing multicast request at a time, thereby preventing deadlock between requests.

99. The system of claim 98, wherein the deadlock avoidance means further comprises means for allowing only one multicast request within a supercluster at a time and for allowing a plurality of multicast requests within different superclusters to occur at the same time.

100. A communications system, comprising:

(a) a plurality of switch nodes arranged into a multistage interconnect network having a plurality of input and output ports, each port being coupled to an agent to effect communication between agents through the network;

(b) the network having more than log.sub.b N stages of interconnected switch nodes, wherein b is a total number of switch node input/output ports, N is the number of network input/output ports, and log.sub.b N indicates a ceiling function providing the smallest integer not less than log.sub.b N; and

(c) the network having a plurality of turnaround points at the highest stage of switch nodes, the turnaround points logically differentiating between switch nodes that load balance messages through the network from switch nodes that direct messages to receiving agents;

(d) means for depopulating switch nodes from the highest stage to reduce the number of turnaround points in the network, as long as at least one path exists between every network input port and every network output port; and

(e) the input and output ports of the switch nodes in stages adjacent the highest stage sensing when the switch nodes in the highest stage ar removed and disabling the input and output ports in response thereto, thereby lowering the bandwidth of the network and lowering the cost of the network without a loss of functionality.

101. A communications apparatus, comprising:

(a) multistage interconnect network means for intercon