Background of the Invention
The present invention relates to a high speed digital crossbar switch for selecting and transferring data from multiple sources to multiple destinations. More particularly, the present invention relates to a crossbar switch which can be dynamically programmed so that it is suitable for use in reconfigurable networks for fault-tolerant routing.
The conventional Von Neumann computer architecture utilizes only a single (or a few) transmissions to be broadcast at any given time. Such machines use hard wired switching networks which limit their application range. This limitation in transmission capability translates into computers which are unable to perform to the extent required for the solution of such complex problems as integrated circuit simulation, global weather predictions, monte carlo simulations in solid state particle physics or fault simulation of a nuclear reactor.
Accordingly, it is an object of the invention to provide a digital crossbar switch capable of selecting and transferring data from multiple sources to multiple destinations. It is a further object to provide a digital crossbar switch that can be dynamically reprogrammed.
Summary of the Invention
According to the present invention there is provided a digital crossbar switch which includes a plurality of multiplexer logic units, a preselected number of input/output data buses coupled to each of the logic units, and an internal data bus coupled to each of the logic units for transmitting data to and from each of the multiplexer logic units. Each logic unit has an input multiplexer for controlling the passage of the preselected number of inputs to the internal data bus and a multiplexer having its input coupled to the internal data bus. A control source controls the transmission of bits from the internal data bus to the output of an associated logic unit. An input multiplexer control source controls the passage of input signals to the internal data bus.
Brief Description of the Drawings
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as other features and advantages thereof, will be best understood by reference to the detailed description which follows, read in conjunction with the accompanying drawings, wherein:
FIG. 1 is a schematic diagram of a 64 bit digital crossbar switch in which the data bus is represented as being at the center and connected to each multiplexer logic unit;
FIG. 2 is a more detailed block diagram of a preferred embodiment of a digital crossbar switch;
FIG. 3 is a schematic diagram of each multiplexer logic unit in the switch.
Detailed Description With Reference to the Drawings
Referring to FIG. 1 there is shown in representative form only a 64 bit digital crossbar switch which has 16 individual multiplexer logic units 14 connected to corresponding sets of 4 input/output pins by line 10 and line 16. Input data can be sent directly to a 64-bit data bus along 4-bit line 12 and data from the data bus can be received by each logic unit 14 along 64-bit line 20.
Referring to FIG. 2, 64-bit internal data bus 20 connects to each of the 16 multiplexer logic units 14. Four-bit input/output data buses 10 are connected to each multiplexer logic unit 14 for inputting data or for receiving output data from the corresponding logic unit 14. A data output enable control signal OED' on line 72 enables or disables the outputting of channels of data from a 16:1 multiplexer 62 through a buffer 70 onto input/output data bus 10. While the number of bits in input/output data bus 10 is 4 in practice this number, (hereinafter referred to as the channel width), may be any convenient number. The internal data bus 20 is organized into two halves. The first half, MSH, corresponds to the most significant half, (D63-D32), and the second half, LSH, corresponds to the least significant half, (D31-D0). However, the internal data bus 20 could be partitioned into any number of parts. In addition, the multiplexer logic groups are also arranged into two groups of 8 each. One group 17 corresponds to the most significant group while the other corresponds to the least significant group 19. While such an organization is useful for functions such as LSH/MSH swapping other organizations are clearly possible involving any desired rooting permutation between the channels.
A control input/output unit 22 consists of 16 buffer circuits 23 each having an output enable line connected to an OEC' signal line 28. Each buffer circuit 23 has its input connected to an output of a corresponding 4:1 multiplexer 25 and its output connected by a line 30 to a CNTR pin 27. Multiplexer 25 is controlled by the control address select signals CRADR1-CRADR0. A bypass line 29 connects line 30 directly to a load bus 26 for loading in data to the multiplexer logic units 16 bits at a time. Control words are read out of the control input/output 22 16-bits at a time on line 26 into the multiplexer logic units 14 in response to a control source signal CRSRCE being low. Control words in a program can also be read back from the multiplexer logic units 14. In this case output enable control signal OEC' is taken low. The control address select signals CRADR1-CRADR0 select the four addresses of the 16-bit words to be read out on the CNTR outputs. The control select signals CRSEL0 and CRSEL1 control the passage of control information in each associated multiplexer logic unit 14. The other logic signals are explained below with reference to FIG. 3 which is a detailed block diagram of each multiplexer logic unit 14.
Referring to FIG. 3, each multiplexer logic unit 14 consists of a 16:1 multiplexer 62 having 16 4-bit input lines connected to a 64 bit data bus 20 and having an output on 4-bit line 68. Line 68 inputs to a three-state buffer 70. The output of buffer 70 connects to 4-bit input/output data bus 10. Data output enable signal OED' inhibits the output of data from buffer 70 when high and places it in a state in which it has a high output impedance. The input/output data bus 10 is coupled by line 74 to both an input of input multiplexer 82 and to the input of an input data register 80. Clock signals MSCLK and LSCLK are used to load the input registers 80 corresponding to the MSH 17 and LSH 19 group of multiplexer units 14 with the correct sequence of 4-bit data groups.
The select data least significant, SELDLS, or select data most significant, SELDMS, control signals control the selection of LSH and MSH data, respectively, from either the input data register 80 or real-time input on line 74. Data groups output from input multiplexer 82 on line 84 are directed to the internal data bus 20.
The passage of data through multiplexer 62 is controlled by signals on 4-bit line 64 from 4:1 multiplexer 66. There are 4 different inputs to multiplexer 66 the selection of which is controlled by multiplexer control select signals, CRSEL1 and CRSEL0, on line 105. The input on line 134 from MSH/LSH Exchange 132 when transmitted through multiplexer 66 results in an exchange or swap of corresponding groups between the MSH and the LSH of the 64 bit data word at the input of multiplexer 62. The input on line 124 from readback unit 130 results in a simple transmission or the 64-bit word through the 16:1 multiplexer 62 without alteration.
The remaining two inputs to multiplexer 66 come from two control flip-flop banks CF1 126 and CF2 128. Each CF bank 126 and 128 consists of four D-type edge-triggered flip-flops. Each CF bank can store a four-bit word to be used in selecting the output of the 16:1 multiplexer 62. Thus, a total of 16 words can be stored in each flip-flop bank consisting of all 16 CF1 or CF2 words. Inputs to the flip flop banks 126 and 128 come from a control input multiplexer 88. The inputs to multiplexer 88 come from either a 4 bit line 87 connected to internal data bus 20 from 4 bit line 90 of FIG. 3 which connects to a set of 4 of lines 29 of the control input/output unit 22. When a bank 126 or 128 of flip-flops corresponding to all 16 CF words in the multiplexer logic units 14 are to be loaded, the 16 control words (or 64 bits) are loaded in four cycles in response to a control clock signal CRCLK on line 108 when the words come through control unit 22. When data from the internal data bus 20 is loaded it comes in a group of 4 bits on line 87 and is loaded into one of the banks of flip flops 126 or 128 in a single clock cycle. The signal CRWRITE controls the destination of the output of multiplexer 88 into either CF1 126 or CF2 128.
The 4-bit words stored in each CF bank 126 and 128 can be read out through a 2:1 multiplexer 106 on line 103. The multiplexer 106 is controlled by a read control signal CREAD on line 104 which selects one of two inputs from either control word 127 or 129. Line 103 couples to the input of 4:1 multiplexer 25 shown in FIG. 2.
The output of 4:1 multiplexer 66, in response to a control select signal CRSEL1 and CRSEL0, is directed along a 4-bit line to a control input of 16:1 multiplexer 62 and directs the passage of information on lines 86 through the multiplexer 62.
Control of the input and output multiplexers determines the input-to-output pattern for the entire crossbar switch. Many different switching configurations can be set up by selecting the appropriate data inputs and by programming the control flip flops to determine the outputs from the 16:1 multiplexers. The output control source select CRSEL has the effect shown in table 1. In addition to the two banks of programmable flip-flops 126 and 128, two hard-wired control functions can be selected. The MSH/LSH exchange directs the input groups from each half of the switch to the control flip flops or data outputs directly opposite, for example, D23-D20.rarw..fwdarw. D55-D52. The read-back function causes all 64 input bits to be output on the same input/output data bus lines on which they were input.
A CF unit can store a four-bit word (CFN3-CFN0) to select the output of the 16 to 1 multiplexer. One control word is loaded in each CF unit, for a total of 16 words in each flip-flop bank. Table 2 lists the output multiplexer control words, which can be loaded either 16 bits at a time on the control I/Os (CNTR15-CNTR0) or all 64 bits at once on the data inputs (D63-D0). Each control word in Table 2 can be stored in a CF bank 126 or 128 and sent as an internal control signal to the 16 to 1 multiplexer 62. For example, any CF control word loaded with "LHHH" can be used to select inputs D31-D28 as the output from the 16 to 1 multiplexer 62, or all 16 CF words 127 and 129 in either bank 126 or 128, respectively, can be loaded with "LHHH" and the same output will be selected by the entire switch.
The source for loading control words in banks 126 and 128 is selected by CRSRCE 92. An enable signal on lines 100 and 101 selects whether word 127 or 129 is loaded for a given multiplexer unit 14. The control signal values and corresponding source and destination of loading are shown in Table 3. In the case of loading control words into flip-flop banks 126 and 128 from data input/output buses 10, data groups (in this case groups of 4-bits) are sent to the internal data bus 20 by one half of the multiplexer logic units 14 of the crossbar switch and are loaded into the control flip-flops of corresponding units 14 of the other half of the switch. For instance, data inputs D3-D0 go to the data bus and then to the control flip flops for data outputs D35-D32, while the inputs D35-D32 are sent to the control flip-flops for D3-D0.
When a bank of flip-flops 126 or 128 are being loaded from the data inputs, the four signals, WE', CRSRCE, CRWRITE, and the control flip-flop clock CRCLK are used in combination. In this case the resulting EN1, EN2, . . . , EN32 output signals are applied to the control words 127 and 129 of each logic unit 14 on lines 100 and 101. Table 4 shows the pattern of exchange when a bank of flip flops is loaded from data inputs.
The Control Input/Output 22 shown in FIG. 2 can load four control words per CRCLK cycle to the flip flop addresses (CFXX where XX stands for the number of the control flip-flop) selected by CRADR1 and CRADR0. The same address signals can be used to read out the flip-flop settings except that OEC' is pulled low and no CRCLK signal is needed. The control signals used to load the control flip-flops from the CNTR input/outputs 30 of the control input/output unit 22 are shown in Table 5.
Programming the crossbar switch involves the use of a few control signals to set up control words in the banks of flip flops 126 and 128. By way of example, if loading control words from input/output 30, the microcode sequence necessary to broadcast any of the 16 data input groups to the other 15 data groups for output is shown in Table 6 using input group D63-D60 as the group of bits being broadcast.
The low signal on CRSRCE 92 selects CNTR15-CNTR0 in control input/output 22 as the input source, and the low signal on CRWRITE causes line 100 to select flip-flop bank 126 as the destination. Table 2 shows that to select data on D63-D60 as the output nibble the four bits in the control word CFN3-CFN0 must be high; therefore the CNTR15-CNTR0 inputs are coded high. The four microcode instructions shown in Table 6 load the same control word from CNTR15-CNTR0 into all 16 CF words of bank 126.
Once the control flip-flops have been loaded, the switch can be used to broadcast bit group D63-D60 as programmed. The microcode instruction to execute the broadcast is shown as the last instruction in Table 6. The data to be broadcast is input on D63-D60. The high signal on SELDMS selects a real-time data input for the broadcast. MSCLK and LSCLK as shown in FIGS. 2 and 3 can be used to load the input register 80 if the input group is to be retained. No register clock signals are needed if the input data is not being stored.
The bank of control flip-flops not selected as a control source can be loaded with new control words or read out on CNTR15-CNTR0 while the switch is operating. For example, the MSH data inputs can be used to load flip-flop bank 128 of the LSH while bank 126 of the LSH is controlling data input/output.
A second, more complicated example of the loading and use of control words to program the crossbar switch involves programming the crossbar switch to swap corresponding groups between the MSH and the LSH (first group in the LSH for first group in the MSH and so on). This swap can be implemented using the hard-wired logic circuit selected when the control select signal CRSEL1 is high and CRSEL0 low. Programming this swap without using the MSH/LSH exchange logic unit 132 requires loading a different control word into each mux logic group.
This programming proceeds by each group in one half, either LSH or MSH, selecting as output the input from the corresponding group in the other half. The input group from D35-D32 is to be output on D3-D0, the input from D3-D0 is output on D35-D32, and so on for the remaining group. As shown in Table 2, the flip-flops for D3-D0 have to be set to 1000 and the D35-D32 inputs must be low, the CF control words involved in this switching pattern are shown in Table 7 below.
With this list of control words and the signals in Table 5, the 16-bit control inputs on CNTR15-CNTR0 can be arranged to load the control flip-flops in four cycles. Table 8 shows the microcode instructions for loading the control words and executing the exchange.
In Table 8, group 128 of flip-flops is being programmed. Group 128 is selected by taking CRWRITE high and leaving CRSRCE low (see Table 3) when the control words are loaded on CNTR15-CNTR0. With write enable WE' held low, the control clock CRCLK is used to load the four sets of control words. Once the flip-flops are loaded, data can be input on D63-D0 and the programmed pattern of output selection can be executed. A microinstruction to select registered data inputs and group 128 as the control source is shown as the last instruction in Table 8.
The control flip-flops could also have been loaded from the data input groups in one control clock CRCLK cycle. All control words to set up a switching pattern should be loaded before the bank of flip-flops is selected as control source. Table 5 shows how input groups from one half are mapped onto the control flip-flops of the other half. The microcode instructions to load group 126 with the 16 control words in one cycle are presented in Table 9 below.
These control groups may be loaded from the input as a 64-bit real-time input word or as two 32-bit words stored previously. To use stored control words, MSCLK and LSCLK are used to load the LSH and MSH input registers with the correct sequence of control groups. Whenever the flip-flops are loaded from the data inputs, all 64 bits of control data must be present when the CRCLK is used so that all control groups in a program are loaded simultaneously. Table 10 presents the three microcode instructions to load the MSH and LSH input registers and then to pass the registered data to flip-flop bank 128.
The control words in a program can also be read back from the flip-flops using the CNTR outputs. Four instructions are necessary to read the 64 bits in a bank of flip-flops out on CNTR15-CNTR0. OEC' is taken low while no CRCLK signal is required. The high signal on CREAD selects bank 128 of flip-flops and CRADR1-CRADR0 select in sequence the four addresses of the 16-bit words to be read out on the CNTR outputs. Table 11shows the four microcode instructions.
The crossbar switch herein performs a range of switching operations, some controlled by hard-wired control functions and others programmed to suit the application. Since it can be dynamically reprogrammed, the crossbar switch supports alternate routing schemes which require reconfigurable data paths among multiple sources and destinations.
The crossbar switch can be used to switch data and address interconnections among multiple processors and memories in a reconfigurable architecture. This architecture combines groups of processors and memories to form larger processor elements which can be configured to perform parallel processing. These same processing elements can be reconfigured dynamically to support alternative networks or processing structures.
The crossbar switch in the embodiment herein could be cascaded to switch data from up to sixteen buses having any number of bits in each bus by simply coupling the bits in each bus in groups of 4 to as many switches as are required to handle the number of bits involved. The number of input/output data buses can also be expanded to any required number by coupling the required number of switches. Although groups of 4 bits have been described in the embodiment herein clearly any number of bits could be used in a channel. Also the number of ports could be increased. In addition, although only two groups of control flip-flops have been disclosed, more than two could be used to obtain an even larger number of different programmable switching patterns.
While this invention has been described with reference to an illustrative embodiment, this description is not intended to be construed in a limiting sense. Various modifications of the illustrative embodiment, as well as other embodiments of the invention, will be apparent to persons skilled in the art upon reference to this description. It is, therefore, contemplated that the appended claims will cover any such modifications or embodiments as fall within the true scope of the invention.