System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
First Claim
1. A method for preventing deadlock in a multiprocessor computer system having a plurality of processing nodes interconnected by a defined interconnection topology, in which a communication from a source processing node to a target processing node passes through one or more intermediate nodes en route to the target processing node, the method comprising:
- assigning a unique node identifier value to each processing node in the defined interconnection topology;
for each link in the defined interconnection topology, associating a set of virtual channels, each virtual channel having corresponding communication buffers to store communication data, each virtual channel assigned a unique virtual channel identifier value;
assigning a first virtual channel identifier value to a communication, the first virtual channel identifier value indicating a virtual channel on which to convey the communication from the source processing node to an intermediate processing node in the defined interconnection topology;
at the intermediate processing node;
receiving the communication;
identifying a node identifier value of a previous hop node from which the communication is received;
identifying a node identifier value of a next hop node on which to forward the communication from the intermediate processing node towards the target processing node;
initiating a comparison of a node identifier value assigned to the intermediate processing node to both the node identifier value of the previous hop node and the node identifier value of the next hop node;
based on results of the comparison, assigning a second virtual channel identifier value to the communication in place of the first virtual channel identifier value, the second virtual channel identifier value indicating a virtual channel on which to convey the communication from the intermediate processing node to the next hop node toward the target processing node, wherein assignment of the second virtual channel identifier value is in accordance with pre-defined rules to avoid a cycle of dependency of communication buffer resources; and
receiving the communication at the target processing node;
encoding the communication sent to the intermediate processing node to include a string of route information, the string of route information indicating a link on which the communication is transmitted to the intermediate processing node;
at the intermediate processing node receiving the communication, applying a bit shift operation to the string of route information to produce a shifted string of route information; and
utilizing the shifted string of route information to identify an egress link of the intermediate processing node upon which to forward the communication on a path to the target processing node.
3 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for preventing deadlock in richly-connected multiprocessor computer system using dynamic assignment of virtual channels. Deadlock is prevented in a multiprocessor computer system having a large plurality of processing nodes interconnected by a defined interconnection topology. Each link in the interconnection topology is associated with a set of virtual channels. Each virtual channel has corresponding communication buffers to store communication data and each virtual channel has an associated virtual channel identifier. Each communication between a source processing node and a target processing node is assigned an initial virtual channel to convey the communication from the source processing node. At an intermediate processing node, a different virtual channel is assigned to convey the communication toward the target processing node, in accordance with pre-defined rules to avoid a cycle of dependency of communication buffer resources.
30 Citations
14 Claims
-
1. A method for preventing deadlock in a multiprocessor computer system having a plurality of processing nodes interconnected by a defined interconnection topology, in which a communication from a source processing node to a target processing node passes through one or more intermediate nodes en route to the target processing node, the method comprising:
-
assigning a unique node identifier value to each processing node in the defined interconnection topology; for each link in the defined interconnection topology, associating a set of virtual channels, each virtual channel having corresponding communication buffers to store communication data, each virtual channel assigned a unique virtual channel identifier value; assigning a first virtual channel identifier value to a communication, the first virtual channel identifier value indicating a virtual channel on which to convey the communication from the source processing node to an intermediate processing node in the defined interconnection topology; at the intermediate processing node; receiving the communication; identifying a node identifier value of a previous hop node from which the communication is received; identifying a node identifier value of a next hop node on which to forward the communication from the intermediate processing node towards the target processing node; initiating a comparison of a node identifier value assigned to the intermediate processing node to both the node identifier value of the previous hop node and the node identifier value of the next hop node; based on results of the comparison, assigning a second virtual channel identifier value to the communication in place of the first virtual channel identifier value, the second virtual channel identifier value indicating a virtual channel on which to convey the communication from the intermediate processing node to the next hop node toward the target processing node, wherein assignment of the second virtual channel identifier value is in accordance with pre-defined rules to avoid a cycle of dependency of communication buffer resources; and receiving the communication at the target processing node; encoding the communication sent to the intermediate processing node to include a string of route information, the string of route information indicating a link on which the communication is transmitted to the intermediate processing node; at the intermediate processing node receiving the communication, applying a bit shift operation to the string of route information to produce a shifted string of route information; and utilizing the shifted string of route information to identify an egress link of the intermediate processing node upon which to forward the communication on a path to the target processing node. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for preventing deadlock in a multiprocessor computer system having a plurality of processing nodes interconnected by a defined interconnection topology, in which a communication from a source processing node to a target processing node passes through one or more intermediate nodes en route to the target processing node, the method comprising:
-
for each link in the defined interconnection topology, associating a set of virtual channels, each virtual channel having corresponding communication buffers to store communication data and each virtual channel having an associated virtual channel identifier; for each communication between a source processing node and a target processing node, assigning an initial virtual channel on which to convey a communication from the source processing node; at an intermediate processing node, assigning a different virtual channel to the communication in lieu of the initial virtual channel to convey the communication toward the target processing node via the different virtual channel, wherein assignment of the different virtual channel is in accordance with pre-defined rules to avoid a cycle of dependency of communication buffer resources; receiving the communication at the target processing node; wherein each processing node is assigned a processing node identifier, and wherein the rules to avoid a cycle of dependency consider the processing node identifiers of the intermediate processing node in relation to an immediately prior processing node relative to the intermediate processing node and an immediately subsequent processing node relative to the intermediate processing node, both the immediately prior processing node and the immediately subsequent processing node disposed in a path of the communication through the topology; and wherein the processing node identifiers are numbers and wherein the rules determine if the intermediate processing node has a greater identifier value than identifier values of both the immediately prior processing node and the immediately subsequent processing node and, if so, the rules decrementing a virtual channel identifier value assigned to the communication. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A multiprocessor computer system comprising:
-
a plurality of processing nodes; a defined interconnection topology having links interconnecting the processing nodes; wherein each processing node in the multiprocessor computer system includes link logic to transmit data on, and receive data from, links connected to the processing node, communication buffers to store communication data from the links; and virtual channel assignment logic to associate a virtual channel identifier with a communication buffer, wherein the virtual channel assignment logic includes logic to assign an initial virtual channel for a communication if the node is the source of the communication, and wherein the virtual channel assignment logic includes logic to dynamically and conditionally assign a different virtual channel to a communication in which the processing node is an intermediate node in the communication, wherein the logic to dynamically assign a different virtual channel uses pre-defined rules to determine if the different virtual channel should be assigned to the communication, and wherein the predefined rules avoid a cycle of dependency of communication buffer resources; wherein the intermediate processing node is configured to; receive a string of route information in the communication, the string of route information indicating a link on which the communication is transmitted to the intermediate node; apply a bit shift operation to the string of route information to produce a shifted string of route information; and utilize the shifted string of route information to identify an egress link of the intermediate node upon which to forward the communication on a path toward a target processing node. - View Dependent Claims (12, 13, 14)
-
Specification