Claims
- 1. In a massively parallel computing system comprising a plurality of nodes configured in m multi-dimensions, each node including a computing device, a method for routing packets towards their destination nodes comprising the steps of:
a.) inputting said packets from at least one of 2m directions via at least one of a corresponding number of input links into a corresponding at least one of a plurality of virtual channels; b.) inputting local packets from a local of said nodes to at least one of a plurality of processor injection FIFO's; c.) generating a 2m plurality of output status bit vectors, each of said output status bit vectors describing the availability of its link, the availability of downstream virtual channels, and a downstream buffer space indication for all virtual channels associated with its direction; d.) establishing a general arbitration policy wherein arbitration decisions are made based on a contents of said 2m plurality of output status bit vectors; e.) outputting according to said general arbitration policy said packets via at least one transfer path to corresponding output links, wherein said packets are advanced towards said destination nodes; and f.) repeating the previous steps for as long as any of said packets and said local packets are available for input.
- 2. The method for routing packets as claimed in claim 1, further comprising using hint bits from packet headers of said packets wherein said hint bits indicate which of said 2m directions are feasible for each of said packets to move in, whereby said establishing said general arbitration policy is completed more quickly.
- 3. The method for routing packets as claimed in claim 1, further comprising:
creating said 2m of a plurality of possible bit vectors for each direction, wherein each of said plurality of possible bit vectors indicates whether further movement of any one of said packets in said each direction for each of said virtual channels is still a routing goal.
- 4. The method for routing packets as claimed in claim 3, wherein performing an input phase of said establishing said general arbitration policy comprises:
a.) determining which of said packets not at their destination are completely blocked; b.) determining which of said packets not at their destination are unblocked; c.) determining which of said packets at their destination are blocked; d.) determining which of said packets at their destination are unblocked.
- 5. The method for routing packets as claimed in claim 4, comprising creating said 2m of a plurality of input status bit vectors, corresponding to said 2m directions, wherein each of said input status bit vectors describes a ready to arbitrate indication, and an input fullness of buffers indication for each of said plurality of virtual channels and said plurality of processor injection FIFO's associated with one of said 2m directions.
- 6. The method for routing packets as claimed in claim 5, further comprising:
randomizing said input fullness of buffers indication of said input status bit vectors in a current arbitration cycle if a predefined arbitration cycle criteria has been met; performing a longest queue priority arbitration in said current arbitration cycle if said predefined arbitration cycle criteria has not been met.
- 7. The method for routing packets as claimed in claim 6, further comprising generating an input arbitration priority for said packets from a highest priority to a lowest priority as follows;
a.) an unblocked one of said packets at the head of a priority virtual channel; b.) an unblocked one of said packets in a by-pass path, if said one of said packets is a high priority packet and there are no said packets in the priority virtual channel; c.) an unblocked one of said packets in a non-priority virtual channel having a highest said fullness of buffers indication; d.) an unblocked one of said packets in the by-pass path, provided it is a non-priority packet.
- 8. The method for routing packets as claimed in claim 7, further comprising selecting for each said unblocked one packet, an output direction and an output virtual channel according to the following steps:
a.) for said high priority unblocked packet, selecting a direction and a priority virtual channel for which a priority virtual channel bit of the possible bit vector indicates the direction is still a routing goal of said high priority unblocked packet; b.) for said non-priority unblocked packet which is not dynamically routable, selecting a direction and an escape virtual channel for which an escape virtual channel bit of the possible bit vector indicates the direction is still a routing goal of said non-priority unblocked packet which is not dynamically routable; c.) for said non-priority unblocked packet which is dynamically routable, selecting a direction and a dynamic virtual channel for which the possible bit vector indicates the direction is still a routing goal and for which the output status bit vector indicates the greatest said buffer space indication, wherein if no such channel and direction combination exists then selecting a direction and escape virtual channel for which the escape virtual channel bit of the possible bit vector indicates said direction is still a routing goal.
- 9. The method for routing packets as claimed in claim 8, wherein performing an output phase of said establishing said general arbitration policy comprises:
setting the current output phase arbitration cycle to high priority for a processor injection FIFO according to a predefined output phase arbitration cycle criteria; setting the current output phase arbitration cycle to low priority for a processor injection FIFO according to said predefined output phase arbitration cycle criteria.
- 10. The method for routing packets as claimed in claim 9, further comprising generating an output arbitration priority for said packets from a highest priority to a lowest priority, wherein the current output phase arbitration cycle is low priority for a processor injection FIFO, as follows;
a.) said unblocked one of said packets at the head of said priority virtual channel that has the highest input fullness of buffers indication out of a plurality of priority virtual channels; b.) a high priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of a plurality of processor injection FIFO's; c.) an unblocked one of said packets in a non-priority virtual channel having a highest said input fullness of buffers indication out of a plurality of non-priority virtual channels; d.) a normal priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of a plurality of processor injection FIFO's.
- 11. The method for routing packets as claimed in claim 9, further comprising generating an output arbitration priority for said packets from a highest priority to a lowest priority, wherein the current output phase arbitration cycle is high priority for a processor injection FIFO, as follows;
a.) a high priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of said plurality of FIFO's; b.) said unblocked one of said packets at the head of said priority virtual channel that has the highest input fullness of buffers indication out of said plurality of priority virtual channels; c.) a normal priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of said plurality of processor injection FIFO's; d.) an unblocked one of said packets in a non-priority virtual channel having a highest said input fullness of buffers indication out of a plurality of said non-priority virtual channels.
- 12. In a massively parallel computing system comprising a plurality of nodes configured in m multi-dimensions, each node including a computing device, a system for routing packets towards their destination nodes comprising:
a.) means for inputting said packets from at least one of 2m directions via at least one of a corresponding number of input links into a corresponding at least one of a plurality of virtual channels; b.) means for inputting local packets from a local of said nodes to at least one of a plurality of processor injection FIFO's; c.) means generating a 2m plurality of output status bit vectors, each of said output status bit vectors describing the availability of its link, the availability of downstream dynamic virtual channels, and a downstream buffer space indication for all virtual channels associated with its direction; d.) means for establishing a general arbitration policy wherein arbitration decisions are made based on a contents of said 2m plurality of output status bit vectors; e.) means for outputting according to said general arbitration policy said packets via at least one transfer path to corresponding output links, wherein said packets are advanced towards said destination nodes; and f.) means for repeating the previous steps for as long as any of said packets and said local packets are available for input.
- 13. In a massively parallel computing system comprising a plurality of nodes configured in m multi-dimensions, each node including a computing device, a program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for routing packets towards their destination, said method steps comprising:
a.) inputting said packets from at least one of 2m directions via at least one of a corresponding number of input links into a corresponding at least one of a plurality of virtual channels; b.) inputting local packets from a local of said nodes to at least one of a plurality of processor injection FIFO's; c.) generating a 2m plurality of output status bit vectors, each of said output status bit vectors describing the availability of its link, the availability of downstream dynamic virtual channels, and a downstream buffer space indication for all virtual channels associated with its direction; d.) establishing a general arbitration policy wherein arbitration decisions are made based on a contents of said 2m plurality of output status bit vectors; e.) outputting according to said general arbitration policy said packets via at least one transfer path to corresponding output links, wherein said packets are advanced towards said destination nodes; and f.) repeating the previous steps for as long as any of said packets and said local packets are available for input.
- 14. The method for routing packets as claimed in claim 13, further comprising using hint bits from packet headers of said packets wherein said hint bits indicate which of said 2m directions are feasible for each of said packets to move in, whereby said establishing said general arbitration policy is completed more quickly.
- 15. The method for routing packets as claimed in claim 13, further comprising:
creating said 2m of a plurality of possible bit vectors for each direction, wherein each of said plurality of possible bit vectors indicates whether further movement of any one of said packets in said each direction for each of said virtual channels is still a routing goal.
- 16. The method for routing packets as claimed in claim 15, wherein performing an input phase of said establishing said general arbitration policy comprises:
a.) determining which of said packets not at their destination are completely blocked; b.) determining which of said packets not at their destination are unblocked; c.) determining which of said packets at their destination are blocked; d.) determining which of said packets at their destination are unblocked.
- 17. The method for routing packets as claimed in claim 16, comprising creating said 2m of a plurality of input status bit vectors, corresponding to said 2m directions, wherein each of said input status bit vectors describes a ready to arbitrate indication, and an input fullness of buffers indication for each of said plurality of virtual channels and said plurality of processor injection FIFO's associated with one of said 2m directions.
- 18. The method for routing packets as claimed in claim 17, further comprising:
randomizing said input fullness of buffers indication of said input status bit vectors in a current arbitration cycle if a predefined arbitration cycle criteria has been met; performing a longest queue priority arbitration in said current arbitration cycle if said predefined arbitration cycle criteria has not been met.
- 19. The method for routing packets as claimed in claim 18, further comprising generating an input arbitration priority for said packets from a highest priority to a lowest priority as follows;
a.) an unblocked one of said packets at the head of a priority virtual channel; b.) an unblocked one of said packets in a by-pass path, if said one of said packets is a high priority packet and there are no said packets in the priority virtual channel; c.) an unblocked one of said packets in a non-priority virtual channel having a highest said fullness of buffers indication; d.) an unblocked one of said packets in the by-pass path, provided it is a non-priority packet.
- 20. The method for routing packets as claimed in claim 19, further comprising selecting for each said unblocked one packet, an output direction and an output virtual channel according to the following steps:
a.) for said high priority unblocked packet, selecting a direction and a priority virtual channel for which a priority virtual channel bit of the possible bit vector indicates the direction is still a routing goal of said high priority unblocked packet; b.) for said non-priority unblocked packet which is not dynamically routable, selecting a direction and an escape virtual channel for which an escape virtual channel bit of the possible bit vector indicates the direction is still a routing goal of said non-priority unblocked packet which is not dynamically routable; c.) for said non-priority unblocked packet which is dynamically routable, selecting a direction and a dynamic virtual channel for which the possible bit vector indicates the direction is still a routing goal and for which the output status bit vector indicates the greatest said buffer space indication, wherein if no such channel and direction combination exists then selecting a direction and escape virtual channel for which the escape virtual channel bit of the possible bit vector indicates said direction is still a routing goal.
- 21. The method for routing packets as claimed in claim 20, wherein performing an output phase of said establishing said general arbitration policy comprises:
setting the current output phase arbitration cycle to high priority for a processor injection FIFO according to a predefined output phase arbitration cycle criteria; setting the current output phase arbitration cycle to low priority for a processor injection FIFO according to said predefined output phase arbitration cycle criteria.
- 22. The method for routing packets as claimed in claim 21, further comprising generating an output arbitration priority for said packets from a highest priority to a lowest priority, wherein the current output phase arbitration cycle is low priority for a processor injection FIFO, as follows;
a.) said unblocked one of said packets at the head of said priority virtual channel that has the highest input fullness of buffers indication out of a plurality of priority virtual channels; b.) a high priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of a plurality of processor injection FIFO's; c.) an unblocked one of said packets in a non-priority virtual channel having a highest said input fullness of buffers indication out of a plurality of non-priority virtual channels; d.) a normal priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of a plurality of processor injection FIFO's.
- 23. The method for routing packets as claimed in claim 21, further comprising generating an output arbitration priority for said packets from a highest priority to a lowest priority, wherein the current output phase arbitration cycle is high priority for a processor injection FIFO, as follows;
a.) a high priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of said plurality of FIFO's; b.) said unblocked one of said packets at the head of said priority virtual channel that has the highest input fullness of buffers indication out of said plurality of priority virtual channels; c.) a normal priority packet from a processor injection FIFO that has a highest input fullness of buffers indication out of said plurality of processor injection FIFO's; d.) an unblocked one of said packets in a non-priority virtual channel having a highest said input fullness of buffers indication out of a plurality of said non-priority virtual channels.
- 24. In a massively parallel computing system comprising a plurality of computing processor nodes configured in m multi-dimensions, each node including a computing device, a network switch for routing packets towards their destination nodes comprising:
a.) at least one input unit for inputting said packets from at least one of 2m directions via at least one of a corresponding number of input links into a corresponding at least one of a plurality of virtual channels; b.) at least one input link for inputting local packets from a local of said nodes to at least one of a plurality of processor injection FIFO's; c.) an output status bit vector generator for generating a 2m plurality of output status bit vectors, each of said output status bit vectors describing the availability of its link, the availability of downstream dynamic virtual channels, and a downstream buffer space indication for all virtual channels associated with its direction; d.) an input arbiter and an output arbiter for establishing a general arbitration policy wherein arbitration decisions are made based on a contents of said 2m plurality of output status bit vectors; e.) at least one output link for outputting according to said general arbitration policy said packets via at least one transfer path to corresponding output links, wherein said packets are advanced towards said destination nodes.
- 25. The network switch as claimed in claim 24 comprising an integration of said network switch on the same integrated circuit as said computer processor nodes.
- 26. The network switch as claimed in claim 24 comprising at least one processor reception FIFO dedicated to said at least one input unit, wherein there is a plurality of processor reception FIFO's for the same plurality of input units, whereby contention among a plurality of input units is decreased.
- 27. In a massively parallel computing system comprising a plurality of computing processor nodes configured in m multi-dimensions, each node including a computing device, a virtual cut through network switch with dynamic routing for routing packets towards their destination nodes comprising:
an integration of said network switch on the same integrated circuit as said computer processor nodes.
- 28. The virtual cut through network switch as claimed in claim 27, comprising:
at least one processor reception FIFO dedicated to said at least one input unit, wherein there is a plurality of processor reception FIFO's for the same plurality of input units, whereby contention among a plurality of input units is decreased.
CROSS-REFERENCE
[0001] The present invention claims the benefit of commonly-owned, co-pending U.S. Provisional Patent Application Serial No. 60/271,124 filed Feb. 24, 2001 entitled MASSIVELY PARALLEL SUPERCOMPUTER, the whole contents and disclosure of which is expressly incorporated by reference herein as if fully set forth herein. This patent application is additionally related to the following commonly-owned, co-pending U.S. patent applications filed on even date herewith, the entire contents and disclosure of each of which is expressly incorporated by reference herein as if fully set forth herein. U.S. patent application Ser. No. (YOR920020027US1, YOR920020044US1 (15270)), for “Class Networking Routing”; U.S. patent application Serial No. (YOR920020028US1 (15271)), for “A Global TreeNetwork for Computing Structures”; U.S. patent application Ser. No. (YOR920020029US1 (15272)), for ‘Global Interrupt and Barrier Networks”; U.S. patent application Ser. No. (YOR920020030US1 (15273)), for ‘Optimized Scalable Network Switch”; U.S. patent application Ser. No. (YOR920020031US1, YOR920020032US1 (15258)), for “Arithmetic Functions in Torus and Tree Networks’; U.S. patent application Ser. No. (YOR920020033US1, YOR920020034US1 (15259)), for ‘Data Capture Technique for High Speed Signaling”; U.S. patent application Serial No. (YOR920020035US1 (15260)), for ‘Managing Coherence Via Put/Get Windows’; U.S. patent application Ser. No. (YOR920020036US1, YOR920020037US1 (15261)), for “Low Latency Memory Access And Synchronization”; U.S. patent application Ser. No. (YOR920020038US 1 (15276), for ‘Twin-Tailed Fail-Over for Fileservers Maintaining Full Performance in the Presence of Failure”; U.S. patent application Ser. No. (YOR920020039US 1 (15277)), for “Fault Isolation Through No-Overhead Link Level Checksums’; U.S. patent application Ser. No. (YOR920020040US1 (15278)), for “Ethernet Addressing Via Physical Location for Massively Parallel Systems”; U.S. patent application Ser. No. (YOR920020041US1 (15274)), for “Fault Tolerance in a Supercomputer Through Dynamic Repartitioning”; U.S. patent application Ser. No. (YOR920020042US1 (15279)), for “Checkpointing Filesystem”; U.S. patent application Ser. No. (YOR920020043US1 (15262)), for “Efficient Implementation of Multidimensional Fast Fourier Transform on a Distributed-Memory Parallel Multi-Node Computer”; U.S. patent application Ser. No. (YOR9-20010211US2 (15275)), for “A Novel Massively Parallel Supercomputer”; and U.S. patent application Ser. No. (YOR920020045US1 (15263)), for “Smart Fan Modules and System”.
PCT Information
Filing Document |
Filing Date |
Country |
Kind |
PCT/US02/05569 |
2/25/2002 |
WO |
|