Multi-processor system for transferring data without incurring deadlock using hierarchical virtual channels
First Claim
1. A multi-processor computer system comprising:
- a plurality of nodes, each of the plurality of nodes including a global port for transmitting a plurality of packets to other ones of the plurality of nodes, each of the plurality of packets being associated with one of a plurality of channels having a hierarchical order from lowest to highest order; and
a switch, coupling the plurality of nodes, the switch including at least one buffer coupled to receive packets, said buffer including gencric entry slots for receiving and storing packets from a channel of any hierarchical order, and dedicated entry slots for receiving and storing packets from a channel of a predetermined hierarchical order, a packet entry into a generic entry slot being a generic entry, and a packet entry into a dedicated entry slot being a dedicated entry,wherein each of the plurality of nodes includes a plurality of sources, each of the sources for transmitting packets on one of the plurality of channels, and wherein the switch further comprises;
flow control logic for providing a flow control signal to selectively disable the transmission of packets by one or more of the plurality of sources responsive to an availability of the at least one generic entry and the at least one dedicated entry of each one of the plurality of channels, wherein the availability of the at least one generic entry and the at least one dedicated entry is determined by a number of packets in transit between the at least one source element and the destination buffer, such that the availability is a presence of the at least one generic entry and the at least one dedicated entry of each one of the plurality of channels.
3 Assignments
0 Petitions
Accused Products
Abstract
An architecture and coherency protocol for use in a large SMP computer system includes a hierarchical switch structure which allows for a number of multi-processor nodes to be coupled to the switch to operate at an optimum performance. Within each multi-processor node, a simultaneous buffering system is provided that allows all of the processors of the multi-processor node to operate at peak performance. A memory is shared among the nodes, with a portion of the memory resident at each of the multi-processor nodes. Each of the multi-processor nodes includes a number of elements for maintaining memory coherency, including a victim cache, a directory and a transaction tracking table. The victim cache allows for selective updates of victim data destined for memory stored at a remote multi-processing node, thereby improving the overall performance of memory. Memory performance is additionally improved by including, at each memory, a delayed write buffer which is used in conjunction with the directory to identify victims that are to be written into memory. An arb bus coupled to the output of the directory of each node provides a central ordering point for all messages that are transferred through the SMP. The messages comprise a number of transactions, and each transaction is assigned to a number of different virtual channels, depending upon the processing stage of the message. The use of virtual channels thus helps to maintain data coherency by providing a straightforward method for maintaining system order. Using the virtual channels and the directory structure, cache coherency problems that would previously result in deadlock may be avoided.
66 Citations
24 Claims
-
1. A multi-processor computer system comprising:
-
a plurality of nodes, each of the plurality of nodes including a global port for transmitting a plurality of packets to other ones of the plurality of nodes, each of the plurality of packets being associated with one of a plurality of channels having a hierarchical order from lowest to highest order; and a switch, coupling the plurality of nodes, the switch including at least one buffer coupled to receive packets, said buffer including gencric entry slots for receiving and storing packets from a channel of any hierarchical order, and dedicated entry slots for receiving and storing packets from a channel of a predetermined hierarchical order, a packet entry into a generic entry slot being a generic entry, and a packet entry into a dedicated entry slot being a dedicated entry, wherein each of the plurality of nodes includes a plurality of sources, each of the sources for transmitting packets on one of the plurality of channels, and wherein the switch further comprises; flow control logic for providing a flow control signal to selectively disable the transmission of packets by one or more of the plurality of sources responsive to an availability of the at least one generic entry and the at least one dedicated entry of each one of the plurality of channels, wherein the availability of the at least one generic entry and the at least one dedicated entry is determined by a number of packets in transit between the at least one source element and the destination buffer, such that the availability is a presence of the at least one generic entry and the at least one dedicated entry of each one of the plurality of channels. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A multi-processor computer system comprising:
-
a plurality of nodes, including source nodes, each of the plurality of nodes including a global port for transmitting a plurality of packets to other ones of the plurality of nodes, each of the plurality of packets being associated with one of a plurality of channels having a hierarchical order from lowest to highest order; and a switch, coupling the plurality of nodes, the switch including at least one buffer coupled to receive packets, said buffer including generic entry slots for receiving and storing packets from a channel of any hierarchical order, and dedicated entry slots for receiving and storing packets from a channel of a predetermined hierarchical order, a packet entry into a generic entry slot being a generic entry, and a packet entry into a dedicated entry slot being a dedicated entry; and a source count register at each of the plurality of source nodes, the source count register including a number of source count entries corresponding to the plurality of channels, each entry for storing a count of the number packet of the associated channel stored in the destination buffer. - View Dependent Claims (9)
-
-
10. An interface for transferring data between two elements of a computer system without incurring deadlock comprising:
-
at least one source clement capable of providing a plurality of packets, each of the plurality of packets associated with one of a plurality of channels; a destination, receiving packets from at least one source element; a destination buffer, coupled to at least one data line associated with the at least one source element and including a plurality of entries including at least one dedicated entry for each one of the plurality of channels and at least one generic entry for storing packets associated with any of the plurality of channels; and flow control logic, coupled to the at least one source element, for selectively disabling the transmission of packets by the at least one source element responsive to availability of the at least one generic entry and the at least one dedicated entry for each one of the plurality of channels, wherein the availability of the at least one generic entry and the at least one dedicated entry is determined by an estimated number of packets in transit between the at least one source element and the destination buffer. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A method for interfacing a plurality of source nodes to a shared buffer without incurring deadlock, each of the plurality of source nodes transmitting packets on a plurality of different channels comprising the steps of:
-
dedicating, in the shared buffer comprising a plurality of entries, at least one entry for each of the plurality of different channels of each of the source nodes, the remaining entries being generic entries for storing packets on any of the plurality of channels from any of the source nodes; monitoring, at each of the plurality of source nodes, the number of packets of each of the plurality of different channels that are stored in the shared buffer; monitoring, at the shared buffcr, whether the dedicated entries for each of the different channels for each of the plurality of source nodes are available; and providing a flow control signal to inhibit the writing of the shared buffer by the plurality of source nodes in response to a determined availability of generic entries in the shared buffer and further in response to a determined number of packets in transit between the plurality of source nodes and the dedicated buffer. - View Dependent Claims (23, 24)
-
Specification