Self-timed data streaming receiver and transmitter having reduced latency and increased data streaming capability
RELATED PATENT 
     This application is related to U.S. Pat. No. 5,333,279, issued on Jul. 26th, 1994, entitled &#34;Self-Timed Mesh Routing Chip With Data Broadcasting,&#34; assigned to the same assignee of Intel Incorporated, Santa Clara, Calif. 
     FIELD OF THE INVENTION 
     The present invention relates to routing circuitry in a massively parallel supercomputer. In particular, the present invention relates to a data streaming, self-timing transceiver for a routing chip. 
     BACKGROUND OF THE INVENTION 
     Massively parallel computers use many microprocessors operating in parallel. The microprocessors are connected together by a mesh of routing chips. Routing chips route data in the form of flow control units, called flits, which typically include 16 data bits and two parity bits. Each routing chip transmits and receives flits from adjacent routing chips, as well as transmitting and receiving flits from the microprocessor with which the routing chip is associated. 
     The mesh operates without a master clock, using a self-timing, two cycle signaling protocol. A routing chip signals transmission of a flit to one of its neighbors by toggling a request signal, REQ. After the neighboring routing chip loads the flit, it acknowledges receipt of the flit by toggling an acknowledge signal, ACK. 
     Interlock signaling refers to a two cycle signaling protocol that requires acknowledgment of a transmit request prior to transmission of another flit. Interlock signaling works well when distances between the source and destination of a flit are small. As the distances between the source and destination increase, due to increased mesh size, the rate of flit transmission decreases. 
     Data streaming can increase the flit transmission rate and prevent interlock by permitting a number of consecutive flits to be transmitted without acknowledgment provided that the streaming depth is matched to the distance between the source and destination. Increased distance between source and destination routing chips requires increased streaming depth to avoid interlock. If the streaming depth of routing chips is not matched to the distance between source and destination then data streaming will defer but not prevent interlock and decreased flit transmission rate. Routing chips using data streaming begin operating in interlock when the maximum number of flits that can be consecutively transmitted without acknowledgment have been transmitted. 
     The Paragon™ Supercomputer manufactured by Intel Corporation of Santa Clara, Calif., uses a prior mesh routing chip that allows up to four flits to be transmitted prior to requiring receipt of an acknowledgment. FIG. 1 illustrates a portion of that prior mesh routing chip (MRC). The MRC includes routing control circuitry, a receiver and a transmitter. The transmitter uses a self-timed fall-through, First-In, First-Out register (FIFO) to keep track of whether the number of unacknowledged transmit requests exceeds a maximum number. Similarly, the receiver includes another self-timed fall-through FIFO, which stores flits received by the routing chip. Acknowledgment of a flit occurs after a flit reaches the last stage of the second FIFO. 
     Both FIFOs include four serially coupled, self-timing tracking units, which use a four cycle signaling protocol. Additionally, the receiver FIFO includes a latch coupled to each tracking unit to store flits as they are received. Each tracking unit indicates that it contains valid data to its downstream neighbor via an active full signal, FULL. The downstream tracking unit indicates that it has begun loading the data by bringing a load signal active and indicates completion of the loading by bringing the load signal inactive. In response, the transmitting upstream tracking unit brings its full signal inactive. The relationship between the full signal and the load signal is illustrated in FIG. 2. 
     Data streaming increases the latency of the mesh routing chip by increasing the time required to process received flits, acknowledge received flits and process acknowledgments of transmitted flits. 
     SUMMARY OF THE INVENTION 
     An object of the present invention is to provide a self-timed data streaming receiver with increased storage capacity and reduced latency. 
     Another object of the present invention is to provide a self-timed data streaming transmitter that can track a larger number of unacknowledged transmit requests and provide decreased latency time in responding to acknowledgments. 
     A still further object of the present invention is to provide a self-timed data streaming transceiver that avoids interlock in situations that would cause interlock in prior self-timed data streaming transceivers of equal streaming depth. 
     A self-timed, data streaming receiver for a routing chip is described. Incoming flits are received by a distributor, which distributes flits between two self-timing, First In First Out registers (FIFOs). A collector coupled to both FIFOs at their opposite ends takes the two streams of flits and recreates the original stream of flits prior to coupling the flits to routing control circuitry. 
     Also described is a self-timed data streaming transmitter, which permits the routing chip to transmit a number of consecutive flits without acknowledgment. A distributor responds to each transmit request by loading one of two FIFOs. Located at the opposite FIFO ends, a collector clears a bit out of one of the FIFOs whenever the collector receives an acknowledgment. Thus, the transmitter is able to transmit another unacknowledged flit. 
     Other objects, features, and advantages of the present invention will be apparent from the accompanying drawings and the detailed description that follows. 
    
    
     BRIEF DESCRIPTION OF THE FIGURES 
     The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which references indicate similar elements and in which: 
     FIG. 1 is a block diagram of a prior self-timed, data streaming transceiver. 
     FIG. 2 is a timing diagram of the signals of a four cycle signaling protocol. 
     FIG. 3 is a block diagram of a portion of a mesh of a supercomputer. 
     FIG. 4 is a block diagram of a self-timed, data streaming receiver. 
     FIG. 5 is a schematic diagram of a distributor. 
     FIG. 6 is a block diagram of a self-timed FIFO. 
     FIG. 7 is a timing diagram of input and output signals of a control unit within a storage unit. 
     FIG. 8A is a schematic diagram of a collector. 
     FIG. 8B is a schematic diagram of an alternate embodiment of the flip-flop of the collector. 
     FIG. 9 is a block diagram of a self-timed, data streaming transmitter. 
     FIG. 10A is a block diagram of an alternate embodiment of a self-timed data streaming receiver. 
     FIG. 10B is a block diagram of an alternate embodiment of a self-timed data streaming transmitter. 
    
    
     DETAILED DESCRIPTION 
     FIG. 3 illustrates in block diagram form a portion of a mesh in a massively parallel computer. The portion shown includes five routing chips, A, B, C and D, each of which is paired with a microprocessor. Each routing chip includes five ports even though all five ports are illustrated only for routing chip B 22. The five ports allow each routing chip to communicate with its associated microprocessor and its four neighboring routing chips. 
     As will be described in detail below, each port includes a transceiver 24, even though only the transceiver for port 1 of routing chip B 22 is illustrated. Each transceiver 24 includes a transmitter 26 and a receiver 28 dedicated to communicating with either the routing chip&#39;s associated microprocessor or one of the four neighboring routing chips. Briefly described, receiver 28 divides the data streaming of flits between two self-timing, fall-through FIFOs. A distributor alternately distributes flits to the two FIFOs. A collector multiplexes both FIFO outputs to produce a single stream of flits for input to the routing control circuitry. Transmitter 26 also uses two self-timed, fall-through FIFOs to track the number of flits transmitted without acknowledgment. A distributor alternately distributes transmit requests to the two FIFOs. Representations of the unacknowledged transmit requests from both FIFOs reach a collector, where the representations are cleared by the collector in response to acknowledgments. The clearing of representations ripples through the FIFOs, allowing the distributor to indicate to routing control circuitry 30 that another flit may be transmitted. 
     FIG. 4 illustrates receiver 28 of port 1, which receives flits transmitted from routing chip A to routing chip B 22. As compared to prior self-timing, data streaming receivers, receiver 28 provides increased data streaming capability with reduced latency times. Receiver 28 includes a REQ converter 42, distributor 44, two fall-through, self-timing FIFOs 46 and 48 and collector 50. Distributor 44, FIFOs 46 and 48 and collector 50 all use four cycle signaling. In other words, devices 44, 46, 48 and 50 each include at least one full input, one full output, one load input and one load output, which serve the purposes described in the Background. 
     Routing chip A indicates that it is driving valid flit data to routing chip B on lines DATAAB 52 by toggling its transmit request line, REQAB 54. Converter 42 converts the two cycle transmit request REQAB 54 into a four cycle signal. In particular, converter 42 brings FULLE signal 56 active. Converter 42 holds FULLE 56 active until distributor 44 indicates that it has loaded the flit on lines 52. 
     Provided that both FIFOs 46 and 48 are not full, distributor 44 responds to active FULLE 56 by enabling one of FIFOs 46 and 48 to load the flit represented by DATAAB 52. Distributor 44 alternately enables FIFOs 46 and 48 so that flit storage &#34;ping-pongs&#34; between them. Distributor 44 enables the top branch FIFO 46 to load the flit received by bringing active FULLDT signal 58. Distributor 44 enables the bottom branch FIFO 48 to load the flit received by bringing active FULLDB signal 60. Distributor 44 holds active whichever full signal it asserted until the enabled FIFO 46 or 48 indicates that it has loaded the flit, via either LDTD 62 or LDBD 64. Distributor 44 indicates to converter 42 when the enabled FIFO has loaded the flit via its output signal LDE 57. 
     FIG. 5 illustrates an embodiment of distributor 44 schematically. Distributor 44 generates its two full output signals 58 using toggle flip-flop 100 and AND gates 106 and 108. When routing chip B 22 is powered up, reset signal RSTI 97 goes active low and resets T flip-flop 100. This forces Q output 102 low and its complement 104 high. As long as FULLE 56 is inactive low, the outputs of AND gates 106 and 108 are both low and neither FIFO 46 or 48 is enabled to load a flit. The first time FULLE 56 goes active high, FULLDB 60 goes high enabling bottom branch FIFO 48. When FULLE 56 goes low, FULLDB 60 goes inactive and T-flip-flop 100 toggles its outputs. As a result, the next time FULLE 56 goes high, FULLDT 58 goes active high and enables top branch FIFO 46. Thus, distributor 44 alternately enables top branch FIFO 46 and bottom branch FIFO 48 to load received flits. In alternate embodiments of distributor 44, the demultiplexing function of T-flip-flop 100 is done by using REQAB 54 as a select to generate FULLDT 58 and FULLDB 60. 
     In the embodiment of FIG. 5, distributor 44 generates its load output signal, LDE 57, using OR gate 110. OR gate 110 receives load input signals 62 and 64 from FIFOs 46 and 48. Only one signal 62 or 64 will be active at a time because only one FIFO 46 or 48 is enabled to load a flit at a time. Thus, whenever one of signals 62 or 64 goes active high, LDE 57 goes active high. LDE 57 will not signal that it has completed loading the flit until one of FIFOs 46 or 48 signals that it has completed loading the flit. In alternate embodiments of distributor 44, OR gate 110 is replaced by a combination of NAND gates and inverters. 
     Given this understanding of distributor 44, consider again receiver 28 of FIG. 3. As stated, distributor 44 controls the distribution of flits into FIFOs 46 and 48. Top Branch FIFO 46 and bottom branch FIFO 48 operate identically and in parallel, both passing flits through a series of storage devices until they reach the FIFO output. The streaming depth of receiver 28 is equal to the sum of the streaming depths of FIFOs 46 and 48, but the maximum latency of receiver 28 is not the sum of the time required for a flit to fall-through both FIFOs 46 and 48. The maximum latency of receiver 28 is the time required for a flit to fall through the FIFO 46 or 48 with the greatest storage capacity. This is because every flit passes through only one FIFO 46 or 48. For embodiments in which FIFOs 46 and 48 have the same streaming depth, the latency of receiver 28 is half what would be experienced in a prior data streaming receiver having the same streaming depth. 
     The streaming depth of receiver 28 can be further increased with little or no increase in receiver latency by adding additional FIFOs in parallel with FIFOs 46 and 48. The increase in streaming depth is the total additional storage capacity of the additional FIFOs. Whether or not there would be any increase in latency depends upon whether the storage capacity of any of the additional FIFOs exceeds that of either FIFO 46 or 48. 
     Preferably, FIFOs 46 and 48 have the same flit storage capacity. In one embodiment, both FIFOs 46 and 48 have a streaming depth of 8 flits, which gives receiver 28 a streaming depth of 16 flits. Alternate embodiments of receiver 28 in which FIFOs 46 and 48 have differing storage capacities will function equally well. 
     FIG. 6 illustrates in block diagram form the general form of a FIFO 120, upon which both FIFOs 46 and 48 are preferably based. FIFO 120 includes a number of serially coupled, self-timing storage units 122, also called self-timing latches 122. The streaming depth of FIFO 120 depends upon the number of storage latches 122 used. Data is input into FIFO 120 by distributor 44 at the far left of FIG. 6 and is output at the far right to collector 50. Stated another way, flits are input upstream and flow downstream. 
     Each self-timing latch 122 includes a control unit 124 and a D-type latch 126, even though they are illustrated for only one latch 122. D-type latch 126 stores a flit of data, thus the width of latch 126 depends upon the number of bits included in a flit. The loading of D-type latch 126 is controlled by its enable input 127. When enabled, latch 126 latches the data applied to inputs 128 and couples them to outputs 129. 
     Control unit 124 controls the enabling of its associated D-type latch 126 via latch load signal LATLD 130. Control unit 124 determines when to enable latch 126 based upon whether latch 126 stores a valid flit that has not been loaded yet and upon whether there is valid upstream data. Control unit 124 determines whether the data stored in latch 126 has been loaded by the immediately adjacent downstream latch 122 based upon the state of its full output signal, FLO 132, and the state of LDINI 138 from its downstream neighbor. Control unit 124 determines whether there is valid data applied to latch 126 based upon its full input signal, FULL 134. 
     Control unit 124 includes three NAND gates 140, 142 and 144, as well as inverters 146 and 148. Control unit 124 is reset when routing chip 22 is powered up by RESETI 97, which is active low. RESETI 97 is coupled to an input of NAND gate 144, as a result, active RESETI 97 forces high the output of NAND gate 144. LATLD 130 is an inverted version of the output from NAND gate 144. Thus, active RESETI 97 brings LATLD 130 low. Inverter 148 inverts LATLD 130 and provides its output, LDOUTI 136, to the input of NAND gate 140. As a result, active RESETI 97 applies one high input signal to NAND gate 140. Active RESETI 97 also applies another high input signal to NAND gate 140 to bring its output inactive low in response to power-up. The second signal applied as an input to NAND gate 140 is the output of NAND gate 142. The output of NAND gate 142 is forced high upon power-up because RESETI 97 is an input. 
     We know that active RESETI 97 forces LDINI 138 inactive high because it is the load output from an identical downstream control unit 124. We also know that active RESETI 97 forces input signal FULL 134 inactive low because it is generated either by distributor 44 or an identical upstream control unit 124. FIG. 7 illustrates the state of all inputs and outputs to control unit 124 in response to RESETI 97 going active low at time t 1 . 
     At time t 2  RESETI 97 returns inactive high. While this changes the state of an input into both NAND gates 142 and 144, neither gate changes its output. The output of NAND gate 142 remains high because one of its inputs is coupled to FLO 132, which active RESETI 97 forced low and which remains low. The output of NAND gate 144 remains high at time t 2  because one of its inputs is coupled to FULL 134, which active RESETI 97 also forced low and which remains low. NAND gates 140 and 142 implement a latch whose state is maintained until their inputs change in a specific manner. 
     At time t 3  latch 122&#39;s upstream neighbor signals that it stores valid data by bringing FULL 134 active high. NAND gate 144 responds to the change in FULL 134 by forcing its output low. As a result, inverter 146 drives LATLD 130 active high and latch 126 begins to latch the data applied to its inputs 128. A short time afterward, inverter 148 responds by driving LDOUTI 136 active low. This indicates to the upstream neighbor that latch 122-has begun loading the flit and makes FULL 134 inactive. Shortly after LDOUTI 136 goes low, NAND gate 140 responds by driving its output, FLO 132, active high. Thus, control unit 124 informs its downstream neighboring latch 122 that valid data is being applied to its inputs. FLO 132 going high also causes output of NAND gate 142 to go low, changing the state of the NAND gate latch formed by gates 140 and 142 to a state opposite to that after RESET. The loading pulse of LATLD 130 ends when the output of NAND 142 goes low. This decouples the data inputs 128 from outputs 129. This also releases the upstream neighbors control unit 124 to load its data unit 126 with a new flit. 
     At some time t 4 , LDINI 138 goes active indicating that the downstream latch 122 has begun to latch the data coupled to it by its upstream neighbor. This causes the NAND gate latch formed by gate 140 and 142 to change its state. In response, FLO 132 goes inactive. 
     Eventually at t 5  LDINI 138 goes inactive and control unit 124 returns to the state it was in after RESET, i.e., ready to load latch 126 with a new flit. 
     In the manner just described, flits propagate in parallel through FIFOs 46 and 48 until they reach the inputs to collector 50, as shown in FIG. 4. Top branch FIFO 46 indicates that it has a flit ready for collector 50 by bringing its full output signal, FULLTC 70, active high. Bottom branch FIFO 48 brings its full output signal, FULLBC, active high to signal that it has a flit ready to be loaded into collector 50. Collector 50 takes the two streams of flits and recreates the stream originally input to receiver 28. In other words, collector 50 collects the flits in the same order that they were distributed to FIFOs 46 and 48 even if they do not reach collector 50 in that order. Collector 50 recreates the original data stream input to receiver 28 by using collecting rules identical to the distribution rules of distributor 44. Collector 50 alternately loads flits from FIFOs 46 and 48 and begins collecting flits with the same FIFO to which distributor 44 distributed the first flit. As a result, collector 50 is able recreate the original flit stream even if flits propagate through one FIFO more quickly than the other. 
     Collector 50 also informs the appropriate FIFO 46 or 48 when it has loaded a flit from it, thereby enabling that FIFO to move the remaining flits downstream and possibly load another flit at the far upstream end. In other words, collector 50 generates the load input signals needed by the storage unit furthest downstream in both FIFOs 46 and 48. These signals are LDCT 74 and LDCB 76. The flit output by collector 50 is then coupled routing control circuitry for processing. 
     FIG. 8A illustrates an embodiment of collector 50 schematically. Collector 50 includes toggle flip-flop 150, AND gates 156 and 158 and OR gate 160. Toggle flip-flop 150 is reset upon powering up of routing chip 22 by active low reset signal RSTI 97. Active RSTI 97 forces output 152 low and its complement, output 154, high. Upon reset the load input signal for collector 50, LDCI 82, is also forced inactive low. As a result, both LDCT 70 and LDCB 72 are both forced inactive low. Consequently, collector 50 cannot load flits from either FIFO 46 or 48 at this point. (Because control unit 124 expects a load input signal which is active low, the load signals generated by collector 50 will have to be inverted prior to coupling them to FIFOs 46 and 48.) 
     The first time LDCI 82 goes active high, LDCB 76 goes high informing bottom branch FIFO 48 that collector 50 has began loading its flit. When LDCI 82 returns low, LDCB 76 also goes low informing bottom branch FIFO 48 that its flit has been completely loaded. Also in response to LDCI 82 returning low, T-flip-flop 150 toggles state. T-flip-flop 150 also generates select signal DSEL 81, which is used to select which FIFO 46 or 48 sends data to routing circuitry 30. As a result, when LDCI 82 again goes high LDCT 74 goes high informing top branch FIFO 46 that its flit has began to be loaded, and the correct data is selected by multiplexer 51. Collector 50 thus alternately loads flit from top branch FIFO 46 and bottom branch FIFO 48. 
     In alternative embodiments of collector 50, T flip-flop 150 may be replaced with circuit 151 of FIG. 8B. Circuit 15 includes two latches and an inverter. 
     Collector 50 informs routing control circuitry 30 that it has a valid flit whenever either FIFO 46 or 48 stores a flit that is ready to be loaded. Collector 50 performs this function using OR gate 160, whose inputs are FULLTC 70 and FULLBC 72, the two full output signals generated by FIFOs 46 and 48. 
     In alternate embodiments of collector 50, OR gate 160 and AND gates 156 and 158 may be implemented using a combination of NAND gates and inverters. 
     FIG. 9 illustrates in block diagram form transmitter 26. Transmitter 26 transmits flits from routing chip B 22 to routing chip A. Routing chip B22 accompanies each flit it transmits with a transmit request, signaled by REQBA. Converter 162 generates REQBA from a four cycle signal, FULLI 161, which is output by routing control circuitry 30. FULLI 161 is also coupled to bookkeeping circuitry 170 so that it may track the number of unacknowledged flits transmitted by transmitter 26. Note that proper operation of routing chip 22 requires that transmitter 26 send no more unacknowledged flits than the receiving routing chip is capable of data streaming. That is to say, the streaming depth of each transmitter cannot exceed the streaming depth of the receiver to which it is transmiting. The converse is not true. 
     Bookkeeping circuitry 170 operates much like the data streaming portion of receiver 28. Rather than streaming flits, bookkeeping circuitry 170 streams a single bit at time. Each bit streamed through bookkeeping circuitry 170 represents a flit transmitted by receiver 26 which has not been acknowledged. When the receiving routing chip, routing chip A, acknowledges receipt of a flit by toggling ACKAB, a bit is loaded from, or removed from, bookkeeping circuitry 170. This permits routing control circuitry 30 to transmit another flit, if it so desires. 
     Distributor 172 is realized using the distributor circuitry of FIG. 5. Thus, the discussion of FIG. 5 applies equally to distributor 172. 
     Bookkeeping circuitry 170 achieves increased streaming depth while reducing the latency time required to process incoming acknowledgments. Bookkeeping circuitry 170 does so using two FIFOs 174 and 176, which operate in parallel like those of receiver 28. As a result, the maximum number of unacknowledged transmit requests that can be transmitted and tracked is the sum of the streaming depths of FIFOs 174 and 176. Once both FIFOs are full, routing control circuitry 30 cannot transmit another flit until an ACKAB is received. Thus, transmitter 26 decreases the likelihood of interlock, or congestion, but does not prevent it. 
     The latency time of transmitter is the time required for the ACKAB stimulus to propagate through the FIFO 174 or 176 having the greatest storage capacity. As with receiver 28, the streaming depth of bookkeeping circuitry 170 can be increased by adding additional FIFOs in parallel with FIFOs 174 and 176. 
     Preferably FIFOs 174 and 176 have the same streaming depth, though transmitter 26 will operate well even if they do not. In one embodiment, both FIFOs have a streaming depth equal to that of FIFOs 46 and 48; i.e. equal to 8. 
     FIFOs 174 and 176 differ from FIFOs 46 and 48 in that they need not include D-latches 126. Because FIFOs 174 and 176 track one bit at a time, each bit representing an unacknowledged transmit request, FIFOs 174 and 176 can be constructed from a number of serially coupled, self-timing control units 124. The operation of control units 124 was described previously with respect to FIGS. 6 and 7. 
     Collector 178 distributes acknowledgments between FIFOs 174 and 176. Collector 178 does so whenever converter 164 asserts LDCE 165 in response to a change in the state of ACKAB. Collector 178 is realized using the collector circuitry discussed with respect to FIG. 8. 
     FIG. 10A illustrates in block diagram form alternate embodiment 28a of receiver 28. Embodiment 28a provides backward compatibility with previous data streaming routing chips, which have a streaming depth of only 4 flits. Switches 190, when appropriately programmed, allow the routing chip user to enable the deepstreaming capabilities provided by the distributor, collector and the FIFOs operating in parallel in between them. The output of the collector is then coupled to the prior FIFO, which has less storage capacity than the other two FIFOs and is thus called the shallow streaming FIFO. Alternately, the routing chip user can program switches 190 to bypass the deep data streaming portion of the receiver and use only the shallow streaming unit. 
     FIG. 10B illustrates an alternate embodiment 26a of transmitter 26. Note that the shallow streaming unit has been split in two and the deep streaming unit inserted in the gap. (A similar embodiment of receiver 28 is possible as well). The switches 190 allow a user to switch between deep and shallow streaming. 
     Thus, a self-timed receiver and a self-timed transmitter have been described that provide increased data streaming depth and reduced latency using multiple data streaming FIFOs operating in parallel. 
     In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.