THIRTY-TWO BIT BIT-SLICE

Abstract: A thirty-two bit, cascadable, microprogrammable, bit-slice is disclosed which includes a seven-port random access memory (RAM) unit, a funnel shifter, a mask generator, an arithmetic logic unit (ALU), and a merge logic unit.

Description: The present invention relates to integrated circuit type microprocessors generally and more particularly to a thirty-two bit, cascadable, microprogrammable, bit-slice as disclosed in the preamble of claim 1. A bit-slice is a multi-device microprocessor in which the control portion (which is also referred to as an address controller, a microprogram sequencer, or a state machine) is contained on one device, and one or more identical arithmetic and logic unit (ALU) portions and register file portions are contained on separate (cascadable) devices called slices. The state of the prior art has progressed from four-bit slices of the type which are commonly designated 74181 (arithmetic logic unit only), to four-bit slices of the type which are commonly designated 2901 (arithmetic logic unit and register file), to sixteen-bit slices of the type which are commonly designated 29116 (not cascadable). A sixteen-bit slice typical of the state of the prior art is disclosed in the United States Patent 4,467,444 which issued to Harmon, Jr. et al. Included is an arithmetic logic unit (which is designated 62 in the above mentioned patent), a two-port thirty-two word by sixteen-bit random access memory (RAM) unit (48), and a barrel shifter (64). Typical applications and recent bit-slice devices are discussed in the publication "The role of bit slice in modern digital systems - part 2", D. Brain, Electronic Engineering, vol. 58, no. 711, March 1986, pages 47 to 55, London, GB. Although useful, the above mentioned slices are disadvantageous in that a relatively large number of devices are required to perform a number of operations. Additionally, the above mentioned slices are disadvantageous in that a relatively long period of time (a relatively large number of clocking signal cycles) are required to perform a number of operations. For example, for use with a data base having packed data, a need exists for a means of selecting a field in a word of data and of operating upon the field in one cycle. Further, for use with a frame buffer of a (video) graphics display, a need exists for a means of doing a bit-block move (bit blit) in one cycle. In otherwords of extracting a group of bits representing pixels of a display region (not necessarily on modulo-thirty-two bit boundaries), normalizing it, rotating it into place, and merging it into a destination region of the display in one cycle. SUMMARY OF THE PRESENT INVENTION It is therefore the primary object of the present invention to provide a means of doing complex operations in one cycle. Another object of the present invention is to provide a means of doing complex operations with a relative small number of devices. The processor according to the invention is set out in claim 1. Briefly, the presently preferred embodiment of the present invention includes a seven-port random access memory (RAM) unit, a funnel shifter, a mask generator, an arithmetic logic unit (ALU), and a merge logic unit. The ability to provide a means of doing complex operations in one cycle is the principal advantage of the present invention. Another advantage of the present invention is the ability it affords to provide a means of doing complex operations with a relative small number of devices. These and other objects and advantages of the present invention will no doubt be obvious to those skilled in the art after having read the following detailed description of the presently preferred embodiment which is illustrated in the figure of the drawing. IN THE DRAWING FIGURE 1 is a schematic diagram of the presently preferred embodiment in accordance with the present invention of a thirty-two bit, cascadable, microprogrammable, bit-slice. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT In accordance with the present invention illustrated in FIGURE 1 of the drawing generally designated by the number 100 is the presently preferred embodiment of a thirty-two bit, cascadable, microprogrammable, bit-slice. Bit-slice 100 is shown to include a thirty-two bit (C1) register (REG), which is designated 110; a thirty-two bit (C2) register (REG), which is designated 112; a (C) multiplexer (MUX), which is designated 114; an adder, which is designated 116; a pair of decoders (DEC), which are respectively designated 118 and 120; an (A) multiplexer (MUX), designated 122; a (T) multiplexer (MUX) 124; a (B) multiplexers (MUX) 126; a seven-port random access memory (RAM) unit (register file) 128; an (A) latch 130; a (T) latch 132; a (Q) latch 134; a (B) latch 136; an (X) multiplexer (MUX) 138; an (S) multiplexer (MUX) 140; and a (Y) multiplexer (MUX) 142. (C1) register 110 has a set of thirty-two data inputs, each of which is connected to a respective line of a thirty-two line (Z) bus designated 150. Further, (C1) register 110 has a clock input, which is connected to receive a system clocking signal (that, for clarity, is not shown); an enable input, which is connected to a line 152; and a set of thirty-two data outputs, each of which is connected to a respective line of a thirty-two line bus 154. (C1) register 110 is of the type which is suitable for storing a constant. More specifically, (C1) register 110 receives thirty-two signals each of which is developed on a respective one of the thirty-two lines of (Z) bus 150. (C1) register 110 is responsive to the system clocking signal in conjunction with an enabling signal developed on line 152 and operative to store the current state of the thirty-two (Z) bus 150 signals. Further, register develops on the thirty-two lines of bus 154 signals the states of which correspond each to a respective one of the stored states. (C2) register 112, which is similar to (C1) register 110, is configured with the set of thirty-two data inputs also each connected to a respective line of the thirty-two lines of (Z) bus 150, with the enable input connected to a line 160, and with the set of thirty-two data outputs each connected to a respective line of a thirty-two line bus 162. (C2) register 112 is also of the type which is suitable for storing a constant. (C) multiplexer 114 has a set of thirty-two data inputs, each of which is connected to a respective line of the thirty-two lines of bus 154; another set of thirty-two data inputs, each of which is connected to a respective line of the thirty-two lines of bus 162; a control (select) input, which is connected to a line 170; and a set of thirty-two data outputs, each of which is connected to a respective line of a thirty-two line bus 172. (C) multiplexer 114 is of the type which develops a signal on each of the thirty-two lines of bus 172. The state of the bus 172 signals correspond either each to the state of a respective one of the thirty-two bus 154 signals or each to the state of a respective one of the thirty-two bus 162 signals as determined (selected) by the state of a controlling signal developed on line 170. Adder 116 has a set of thirty-two data (first addend) inputs, each of which is connected to a respective line of the thirty-two lines of bus 172; another set of thirty-two data (second addend) inputs, each of which is connected to a respective line of a thirty-two line (T) bus 180; a carry input, which is connected to a (T0) line 182; a carry output, which is connected to a (T31) line 184; and a set of thirty-two data (sum) outputs, each of which is connected to a respective line of a thirty-two line bus 186. Adder 116 is of the type which develops on the thirty-two lines of bus 186 signals the state of which represents the binary sum of the number represented by the state of the signals developed on the thirty-two lines of bus 172 (first addend) plus the number represented by the state of the signals developed on the thirty-two lines of (T) bus 180 (second addend) plus a number represented by the state of a carry signal externally developed on (T0) line 182. Further, adder 116 develops on (T31) line 184 a signal the state of which indicates whether a carry results from the addition. In other words, when signals representing an address are successively developed on (T) bus 180 (by seven-port RAM unit 128, as will become apparent shortly) adder 116 successively increments the address by a constant represented by the signals developed either by (C1) register 110 on bus 154 or by (C2) register 112 on bus 162. Decoder 118 has three inputs connected, one to a line 190 to receive an externally generated A/Z bus selecting signal, another to a line 192 to receive an externally generated B/Z bus selecting signal, and the other one to a line 194 to receive an externally generated A-B bus exchanging signal. Additionally, decoder 118 has three outputs, each of which is connected to a respective line of a three line bus 196. Responsive to the signals externally generated on lines 190, 192, and 194, decoder 118 develops on the three lines of bus 196 signals for controlling multiplexers 122 and 126, as will become apparent shortly. Decoder 120 has a pair of inputs, each of which is connected to a respective line of a two line bus 200 to receive externally generated T-bus selecting signals. Further, decoder 120 has three additional inputs, each of which is connected to a respective one of three lines that are designated 204, 206, and 208 to receive a respective one of four externally generated signals that include a multiply selecting signal, a divide selecting signal, and a load T selecting signal. Additionally, decoder 120 has a pair of inputs, each of which is connected to a respective line of a two line bus 210 to receive slice number designating signals. Finally, decoder 120 has an output, which is connected to line 170 upon which the decoder develops the (C) multiplexer 114 controlling signal, and three outputs, each of which is connected to a respective line of a three line bus 212 upon which the decoder develops signals for controlling multiplexer 124, as will become apparent shortly. (A) multiplexer 122 has a first set of thirty-two data inputs, each of which is connected to a respective line of a thirty-two line (DA) bus 220; a second set of thirty-two data inputs, each of which is connected to a respective line of a thirty-two line (DB) bus 222; and a third set of thirty-two data inputs, each of which is connected to the respective line of the thirty-two lines of (Z) bus 150. Additionally, (A) multiplexer 122 has a pair of control (select) inputs, each of which is connected to one of the lines of the two lines of bus 196, and a set of thirty-two data outputs, each of which is connected to a respective line of a thirty-two line bus 224. (A) multiplexer 122 is of the type which develops on each of the thirty-two lines of bus 224 signals the state of which correspond either each to the state of a respective one of the thirty-two (DA) bus 220 signals, each to the state of the respective one of the thirty-two (DB) bus 222 signals, or each to the state of the respective one of the thirty-two (Z) bus 150 signals as determined (selected) by the state of the controlling signals developed on the three lines of bus 196. Skipping for a moment, (B) multiplexer 126 is similar to (A) multiplexer 122. Like (A) multiplexer 122, the three sets of data inputs of (B) multiplexer 126 are connected, each to a respective one of the three buses 220, 150, and 222; and, the pair of control (select) inputs of the multiplexer are connected to two of the lines of bus 196. The set of thirty-two data outputs of (A) multiplexer 126 are connected, each to a respective line of a thirty-two line bus 232. The following truth (function) table illustrates the logical states of decoder 118 and multiplexers 122 and 126. In otherwords, when the A-B bus exchanging signal externally generated on line 194, the A/Z bus selecting signal externally generated on line 190, and the B/Z bus selecting signal externally generated on line 192 all have a low logic level (0), (A) multiplexer 122 selects (DA) bus 220; and, (B) multiplexer 126 selects (Z) bus 150. When the B/Z bus selecting signal externally generated on line 192 has a high logic level (1) and other signals have a low logic level, (A) multiplexer 122 selects (Z) bus 150; and, (B) multiplexer 126 selects (DB) bus 222. And, Finally, when the A-B bus exchanging signal externally generated on line 192 has a high logic level, irrespective of the state of the other signals, (A) multiplexer 122 selects (DB) bus 222; and, (B) multiplexer 126 selects (DA) bus 220. (T) multiplexer 124 has six sets of thirty-two data inputs. The first set of thirty-two (T) multiplexer 124 data inputs are connected, each to the respective line of the thirty-two lines of bus 186. The second set of thirty-two (T) multiplexer 124 data inputs (2T) are connected, each to the next higher order line of (T) bus 180. In otherwords, the lowest order data input of the second set of (T) multiplexer 124 data inputs is connected to the second lowest order line of (T) bus 180; the second lowest order data input is connected to the third lowest order line; and, so on. The highest order data input of the second set of (T) multiplexer 124 data inputs is connected to (T31) line 184. The third set of thirty-two (T) multiplexer 124 data inputs (T/2) are connected, each to the next lower order line of (T) bus 180. In otherwords, the highest order data input of the third set of (T) multiplexer 124 data inputs is connected to the second highest order line of (T) bus 180; the second highest order data input is connected to the third highest order line; and, so on. The lowest order data input of the third set of (T) multiplexer 124 data inputs is connected to (T0) line 182. The fourth set of thirty-two (T) multiplexer 124 data inputs are connected, each to the respective line of the thirty-two lines of (Z) bus 150. Each of the thirty-two (T) multiplexer 124 data inputs of the fifth set of data inputs is connected to a respective line of a thirty-two line (R) bus 240. Finally, the sixth set of thirty-two (T) multiplexer 124 data inputs are connected, each to the respective line of an (immediate) bus formed by combining four other buses. Combined are the lines of a seven line (SP) bus 242 (lowest order data inputs), the lines of a three line (W) bus 244 (next lowest order data inputs), the two lines of bus 200, the lines of a five line bus 246, and a line 247 (highest order data input). Additionally, (T) multiplexer 124 has a set of three control (select) inputs, which are connected, each to the respective line of the three lines of bus 212, and a set of thirty-two data outputs, which are connected, each to a respective line of a thirty-two line bus 248. (T) multiplexer 124 is of the type which develops a signal on each of the thirty-two lines of bus 248 the state of which correspond each to the state of a respective one of the thirty-two signals developed on the selected bus. The logical states of decoder 120 and (T) multiplexer 124 are illustrated by the following truth table: Seven-port random access memory (RAM) unit (register file) 128 has three sets of thirty-two data inputs. The first set of thirty-two data inputs (AIN) are each connected to the respective line of the thirty-two lines of bus 224; the second set of thirty-two data inputs (TIN) are each connected to the respective line of the thirty-two lines of bus 248; and, the third set of thirty-two data inputs (BIN) are each connected to a respective line of the thirty-two lines of bus 232. In addition, seven-port random access memory unit 128 has four sets of six address inputs (AddrA, AddrT, AddrB, and AddrQ). Each of the the address inputs are connected, the first set (AddrA) to a respective line of a six line bus 250, the second set (AddrT) to a respective line of another six line bus 252, the third set (AddrB) to a respective line of another six line bus 254, and the fourth set (AddrQ) to a respective line of still another six line bus 256. Additionally, seven-port random access memory (RAM) unit 128 has three write enable inputs which are connected, the first (/WEA) to a line 260, the second (/WET) to a line 262, and the third (/WEB) to a line 264. Further, unit 128 has a clock input, which is connected to receive the system clocking signal (that, for clarity, is not shown). Finally, unit 128 has four sets of thirty-two data outputs (AOUT, TOUT, QOUT, and BOUT). Each of the data outputs are connected, the first set (AOUT) each to a respective line of a thirty-two line bus 270, the second set (TOUT) each to a respective line of another thirty-two line bus 272, the third set (QOUT) each to a respective line of another thirty-two line bus 274, and the fourth set (BOUT) to a respective line of still another thirty-two line bus 276. Employed in seven-port random access memory (RAM) unit 128 (but not shown) are memory cells arranged as sixty-four words each of thirty-two bits (cells). Also employed in unit 128 are four address decoders (A, T, B, and Q) each connected to receive the addressing signals developed at the respective set of address inputs. The address decoders are each of the type which is responsive to the respective addressing signal and operative to develop selecting all thirty-two cells (bits) of the designated word. In addition, unit 128 employs four, thirty-two line, internal buses (A, T, B, and Q). Further, unit 128 employs bus drivers configured to couple the various signals developed on the lines connected to the three sets of data inputs (AIN connected to bus 224, TIN connected to bus 248, and BIN connected to bus 252) each to the respective one of the lines of the respective one of the three internal buses (A, T, and B), when the system clocking signal has a low logic level and when a low logic level enabling signal is developed at the respective write enable input (/WEA connected to line 260, /WET connected to line 262, and /WEB connected to line 264). Still further, seven-port random access memory (RAM) unit 128 employs sense amplifiers configured to develop from each of the the various signals developed on the four internal buses (A, T, B, and Q) a signal for driving the respective one of the lines connected to the respective one of the four sets of data outputs (AOUT connected to bus 270, TOUT connected to bus 272, QOUT connected to bus 274, and BOUT connected to bus 276. Finally, as previously indicated, unit 128 employs cells comprising sixty-four words by thirty-two bits (cells). Each cell contains a first and a second cross coupled inverter. In other words, the input of the first inverter is connected to the output of the second inverter, the input of which is connected to the output of the first inverter. Additionally, each cell contains four transistors each of the channels of which is connected to selectively couple signals between the output of the first inverter and the respective line of the respective one of the four internal buses (A, T, B, and Q). The gate of each of the transistors is connected to receive the respective one of the thirty-two selecting signals developed by the respective one of the four address decoders (A, T, B, and Q). Under control of the A/Z B/Z and A-B signals externally generated on lines 190, 192, and 194, data represented by the signals developed on the thirty-two lines of (DA) bus 220, (Z) bus 150, or (DB) bus 222 can be written into any two, seven-port random access memory (RAM) unit 128 word locations whose addresses are specified by the addressing signals externally developed on the six lines of bus 250 (AddrA) and the six lines of bus 254 (AddrB) when the system clocking signal, the write enabling signal, (/WEA) externally generated on line 260, and the write enabling signal, (/WEB) externally generated on line 264, all have a low logic level. Additionally, data represented by the signal developed on the thirty-two lines of bus 186, (T) bus 180, (Z) bus 150, or (R) bus 240 can be written into any unit 128 word location whose address is specified by the addressing signals externally generated on the six lines of bus 252 (AddrT) when the system clocking signal and the write enabling signal, (/WET) externally generated on line 262, both have a low logic level. (Under control of a special instruction (load T, immediate), a sixteen-bit word of data in the immediate data field, which is represented by the state of signals externally developed on (T) bus 180 can be loaded directly into the unit 128 word location specified by the addressing signals externally generated on bus 252 (AddrT). During the execution of special instructions (multiply or divide), the word of data stored in the word location specified by the bus 252 (AddrT) signals can be shifted up or down.) Any four, seven-port random access memory (RAM) unit 128 word locations whose addresses are specified by the addressing signals externally developed on the six lines of bus 250 (AddrA), the six lines of bus 252 (AddrT), the six lines of bus 254 (AddrB), and the six lines of bus 256 (AddrQ) can be read simultaneously. (Identical data appears at the four sets of data outputs when the same address appears at the four sets of address inputs.) Latches 130, 132, 134, and 136 hold the data, when the state of the system clocking signal is low. (When the state of the system clocking signal is high, the latches are transparent.) (A) latch 130, (T) latch 132, (Q) latch 134, and (B) latch 136 each have a set of thirty-two data inputs, each of which is connected to the respective line of the respective one of the thirty-two line buses, 270, 272, 274, and 276. Further, the latches (130, 132, 134, and 136) each have a clock input, which is connected to receive the system clocking signal (that, for clarity, is not shown). Finally, the latches each have a set of thirty-two data outputs, each of which is connected to a respective line of a respective one of four thirty-two line buses, (A) latch 130 to an (A) bus 280, (T) latch 132 to (T) bus 180, (Q) latch 134 to a (Q) bus 284, and (B) latch 136 to a (B) bus 286. The latches (130, 132, 134, and 136) are each of the type which receive thirty-two signals each developed on a respective one of the thirty-two lines of the respective one of the four, thirty-two line buses 270, 272, 274, and 276 and which develop signals on each of the thirty-two lines of the respective one of the four, thirty-two line buses 280, 180, 284, 286. The state of the latch developed signals correspond each to the current state of the respective one of the received signals, when the logic level of the system clocking signal is high. When the state of the system clocking signal is low, the state of the latch developed signals correspond each to the state the respective one of the received signals had just before the level of the system clocking signal went low. Thirty-two bit, bit-slice 100 is connected to a pair of external, thirty-two line, bi-directional, data buses, respectively designated 300 (DA) and 302 (DB). Signals externally developed on the various lines of (DA) bus 300 are coupled each to the respective line of the thirty-two lines of (DA) bus 220 by thirty-two bus drivers represented by a buffer 304; and, signals externally developed on the various lines of (DB) bus 302 are coupled each to the respective line of the thirty-two lines of (DB) bus 222 by thirty-two additional bus drivers represented by another buffer 306. Signals developed on the various lines of a thirty-two line (A) bus 280 are coupled each to the respective line of (DA) bus 300 by thirty-two additional bus drivers represented by another buffer 312; and, signals developed on the various lines of another thirty-two line (B) bus 286 are coupled each to a respective line of (DB) bus 302 by thirty-two additional bus drivers represented by still another buffer 316. Buffers (bus drivers) 304 and 312 each employ an output enable input, which is coupled to a line 320 to receive an externally generated, output enabling signal (OEA); and buffers 306 and 316 also each employ an output enable input, which is coupled to a line 322 to receive another externally generated, output enabling signal (OEB). (X) multiplexer 138 is similar to (A) multiplexer 122. The three sets of data inputs of (X) multiplexer 138 are connected, each to the respective one of the three buses 220, 280, and 180. The pair of control (select) inputs of (X) multiplexer 138 are connected, one to line 320 and the other to a line 330. The set of thirty-two data outputs of (X) multiplexer 138 are connected, each to a respective line of a thirty-two line (X) bus 332. Skipping for a moment, (Y) multiplexer 142 is also similar to (A) multiplexer 122. The three sets of data inputs of (Y) multiplexer 142 are connected, each to a respective one of the three buses 284, 286, and 222. The pair of control (select) inputs of (Y) multiplexer 142 are connected, one to line 322 and the other to a line 340. The set of thirty-two data outputs of (Y) multiplexer 142 are connected, each to a respective line of a thirty-two line (Y) bus 342. (S) multiplexer 140 is of the type which has eight sets of thirty-two data inputs, which are connected, one set to (A) bus 280, another set to (T) bus 180, a third set to (Q) bus 284, a fourth set to (B) bus 286, a fifth set to (DA) bus 220, a sixth set to (DB) bus 222, a seventh set to (R) bus 240, and the last (eighth) set to a thirty-two line (M) bus 350. Additionally, (S) multiplexer 140 has three control (select) inputs, which are each connected to a respective line of a three line bus 352 to receive three externally generated control signals. Finally, (S) multiplexer 140 has a set of thirty-two data outputs, which are each connected to a respective line of a thirty-two line (S) bus 354. Under control of the signals externally generated on lines 320 and 322 (OEA and OEB) and the signals externally generated on the three lines of bus 352, the signals developed on buses 312, 180, 314, 220, 222, 240, or 350 can be selected for arithmetic logic unit (ALU) operations, funnel shifter operations, mask genertor operations, merge logic operations, or read out onto the lines of (DA) bus 300 or (DB) bus 302, as will become apparent shortly. Bit-slice 100 is shown to additionally include a funnel shifter 400, a mask generator 402, an (MR) multiplexer (MUX) 404, an arithmetic logic unit (ALU) 406, a merge logic unit 408, a (Z) multiplexer (MUX) 410, a zero detector 412, a multiplexer (MUX) 414, a priority encoder 416, and a multiplexer (MUX) 418. Funnel shifter 400 has a set of thirty-two data inputs, which are each connected to the respective line of the thirty-two lines of (X) bus 332 to receive signals representing a first (X) operand, and another set of thirty-two data inputs, which are each connected to the respective line of the thirty-two lines of (Y) bus 342 to receive signals representing a second (Y) operand. Additionally, funnel shifter 400 has an input, which is connected to line 247 to receive an externally generated Mlink signal which represents a fill number; a set of five inputs, which are each connected to a respective line of the five lines of bus 246 to receive externally generated funnel shifter 400 controlling signals; a set of two inputs, which are each connected to the respective line of the two lines of bus 210 to receive the slice number specifying signals; and a set of seven inputs, which are each connected to a respective line of the seven lines of (SP) bus 242 to receive externally generated signals designating a movable window (mask) start position. Further, funnel shifter 400 has a set of seven inputs, which are each connected to the respective lines of the seven lowest order lines of the thirty-two lines of (T) bus 180 to receive signals designating an alternative movable window start position. Finally, funnel shifter 400 has a set of thirty-two data outputs, which are each connected to a respective line of a thirty-two line (W) bus 438. Employed in funnel shifter 400 (but not shown) is a start position multiplexer having a set of seven data inputs, which are each connected to the respective line of the seven lines of bus 436 to receive the start position indicating (SP) signals; another set of seven data inputs, which are each connected to the respective line of the seven lowest order lines of (T) bus 180; and a number of data outputs, which are each connected to a respective line of an SP bus. Additionally, funnel shifter 400 employs a funnel input control unit having a set of five control inputs, which are each connected to a respective line of the five lines of bus 246 to receive the funnel shifter 400 controlling signals; a set of two inputs, which are each connected to the respective one of the two lines of bus 210 to receive the slice number specifying signals; a number of inputs, which are each connected to the respective line of the SP bus; and a number of outputs, which are each connected to a respective line of a control bus. Further, funnel shifter 400 employs an FH multiplexer and an FL multiplexer each having a set of thirty-two data inputs, which are each connected to the respective line of the thirty-two lines of (X) bus 332; another set of thirty-two data inputs, which are each connected to the respective line of the thirty-two lines of (Y) bus 342; an input, which is connected to receive a signal representing the sign of X; an input, which is connected to receive a signal representing the sign of Y; an input, which is connected to line 247 to receive the Mlink signal; an input, which is connected to receive a low logic level (0) signal; a number of inputs, which are each connected to the respective line of the control bus; and a set of thirty-two data outputs. Finally, funnel shifter 400 employs thirty-two multiplexers each having thirty-two data inputs, which are each connected to the appropriate data output of the sixty-four data outputs of the FH and FL multiplexers; a number of control inputs, which are each connected to the respective line of the control bus; and a data output, which is connected to the appropriate line of the thirty-two lines of (W) bus 438. Funnel shifter 400 operates on two thirty-two bit numbers (represented by the signals developed on (X) bus 332 and (Y) bus 342) and generates a thirty-two bit number (represented by signals the funnel shifter develops on (W) bus 438). Funnel shifter 400 performs all of the basic barrel-shift functions including shift up/down and rotate up/down N positions for thirty-two bit as well as sixty-four bit numbers in a single cycle. This high-speed shifting is very useful in operations such as the normalization of a mantissa for floating point arithmetic and in applications in which the packing and unpacking of data are frequent operations. In addition funnel shifter 400 can be used to extract a thirty-two bit output from a sliding window applied to sixty-four bit input. A seven-bit start position designated by the (SP) signals (0-6) developed on bus 242 is used to control a thirty-two bit sliding window (W) which operates upon a sixty-four bit word (FH, FL). A positive start position moves the sliding window toward the least significant bit, a negative start position (two's complement format) moves the sliding window toward the most significant bit. When the signals developed on (T) bus 180 and (Q) bus 284 are selected as inputs, the seven least significant bits of the (T) bus 180 signals are used to specify the start position and the least significant seven bits of the (Q) bus 284 signals are used to specify the width. The following funnel shifter 400 truth table illustrates the input selection. Mask generator 402 has a set of seven inputs, each of which is connected to a respective line of the seven lines of (SP) bus 242 to receive the externally generated, movable window start position designating signals; a set of thirty-two inputs, each of which is connected to the respective line of the thirty-two lines of (T) bus 180; a set of thirty-two inputs, each of which is connected to the respective line of the thirty-two lines of (Q) bus 284; and a set of three inputs, each of which is connected to a respective line of the three lines of (W) bus 244 to receive externally generated, alternative, width designating signals. Additionally, mask generator 402 has a set of two inputs, each of which is connected to a respective line of the two lowest order lines of a three line bus 452 to receive externally generated, mask generator 402 controlling, mask selecting signals, and a set of two inputs, each of which is connected to a respective line of the two lines of bus 210 to receive the slice number specifying signals. Further, mask generator 402 has a set of thirty-two outputs, each of which is connected to the respective line of the thirty-two lines of (M) bus 350. Under control of the mask generator 402 controlling, mask selecting signals, externally generated on the two lowest order lines of the three lines of bus 452, signals representing a mask (a pattern of logical ones) can be developed on (M) bus 350 by mask generator 402 in four different ways. The start position can be specified by the signals developed on the seven lines of (SP) bus 242 or by the signals developed on the seven lowest order lines of the thirty-two lines of (T) bus 180. The width (the number of ones) can be specified by the signals developed on the three lines of (W) bus 244 or by the signals developed on the the six lowest order lines of the thirty-two lines of (Q) bus 284. Alternatively, the signals developed on the thirty-two lines of (T) bus 180 or the signals developed on (Q) bus 284 can be coupled to (M) bus 350 as a mask (pattern of ones and zeros). (The ability to use the (T) bus 180 and/or (Q) bus 284 signals (in conjunction with seven-port random access memory (RAM) unit 128 and arithmetic logic unit (ALU) 406) permits the use of an old mask after it has been altered by an arithmetic logic unit operation.) In a sixty-four bit system in which two slices are cascaded, only the (T) bus 180 and (Q) bus 284 signals of the least significant slice are used to specify the mask start position and width. The signals developed on bus 452 are used to control the broadcasting of the seven least significant (T) bus 180 signals and the six least significant (Q) bus 284 signals to the most significant slice by means of (SP) bus 242, (W) bus 244, bus 200 and line 184. The following mask generator 402 truth table illustrates the signal broadcasting format. Employed in mask generator 402 (but not shown) are a number of "look up table" type units including one for "width mapping" numbers represented by (W) bus 244 signals, one for start position numbers and two for word length numbers. One of the word length look up table units is for numbers represented by (W) bus 244 signals; and, the other word length look up table units is for numbers represented by the six lowest order (Q) bus 284 signals. Additionally, mask generator 402 employs a start position multiplexer, a width multiplexer, a word length adder, a word length multiplexer, a logical AND unit, an output multiplexer, and a multiplexer control unit. The start position multiplexer has a set of seven data inputs, which are each connected to receive the respective one of the (SP) bus 242 signals, a set of seven data inputs, which are each connected to receive the respective one of the seven lowest order (T) bus 180 signals, a set of two control (select) inputs, which are each connected to receive the respective one of the two lowest order signals of the three bus 452 signals, and a set of data outputs, which are each connected to a respective line of a start position bus. The width mapping look up table unit has a set of three data inputs, which are each connected to receive the respective one of the three (W) bus 244 signals and a number of seven data outputs. The width multiplexer has a set of seven data inputs, which are each connected to the respective one of the seven data outputs of the width mapping look up table unit; a set of six data inputs, which are each connected to receive the respective one of the six lowest order (Q) bus 284 signals, a set of two control (select) inputs, which are each connected to receive the respective one of the two lowest order signals of the three bus 452 signals, and a set of data outputs. The word length adder has a set of data inputs, which are each connected to the respective line of the start position bus, another set of data inputs, which are each connected to the receive one of the width multiplexer data outputs, and a number of data outputs. The start position look up table unit has a set of data inputs, each of which is connected to the respective one of the start position bus lines and a number of data outputs. Both of the word length look up table units have a set of data inputs, each of which is connected to the respective one of the outputs of the word length adder and a number of data outputs. The word length multiplexer has two sets of data inputs, the data inputs of one set being connected each to the respective one of the data outputs of one of the word length look up table units and the data inputs of the other set being connected each to the respective one of the data outputs of the other word length look up table units. Additionally, the word length multiplexer has a set of two control (select) inputs, which are also each connected to receive the respective one of the two lowest order signals of the three bus 452 signals and a set of data outputs. Logical AND unit has a set of inputs, each of which is connected to the respective one of the data outputs of the start position look up table unit; another set of inputs, each of which is connected to the respective one of the data outputs of the word length multiplexer; and a set of sixty-four outputs. The output multiplexer has six sets of thirty-two data inputs. The combination of the data inputs of two of the sets of the data inputs of the output multiplexer are connected, each to the respective one of the sixty-four outputs of the logical AND unit. Still another set of the data inputs of the output multiplexer are connected, each to receive a respective one of the thirty-two (T) bus 180 signals; and, the last set of data inputs of the output multiplexer are connected, each to receive a respective one of the thirty-two (Q) bus 284 signals. Further, the output multiplexer has a set of two control (select) inputs and a set of thirty-two data outputs, which are each connected to the respective one of the thirty-two lines of (M) bus 350. Finally, the multiplexer control unit has a set of inputs, each of which is connected to a respective one of the outputs of the word length adder, a set of two inputs, each of which is connected to receive the respective one of the two lowest order signals of the three bus 452 signals, a set of two inputs, each of which is connected to receive a respective one of the two bus 210 signals, and a set of two outputs, each of which is connected to the respective one of the two control inputs of the output multiplexer. As previously indicated, under control of the signals, externally generated on the two lowest order lines of the three bus 452 lines, the start position can be specified either by the signals developed on the seven lines of (SP) bus 242 or by the signals developed on the seven lowest order lines of the thirty-two lines of (T) bus 180; and, the width can be specified either by the signals developed on the three lines of (W) bus 244 or by the signals developed on the the six lowest order lines of the thirty-two lines of (Q) bus 284. When the (W) bus 244 signals are selected, the data outputs of the width mapping table unit are selected, from which the actual word-length is calculated. The word length and the start position are decoded by means of bar graph tables in the look up table units. The sixty-four bit number represented by signals developed by the word length look up table unit is logically anded with the sixty-four bit number represented by the signals developed by the start position look up table unit. The following truth tables illustrate the operation of mask generator 402. (MR) multiplexer 404 is of the type which has six sets of thirty-two data inputs, which are connected, one set to (S) bus 354, another set to (A) bus 280, a third set to (Q) bus 284, and the fourth set to (DB) bus 222. The fifth set of (MR) multiplexer 404 data inputs are connected each to receive a low logic level; and the last (sixth) set of the multiplexer data inputs are connected each to receive a high logic level. Additionally, (MR) multiplexer 404 has two control (select) inputs, which are each connected to a respective line of a two line bus 470 to receive two externally generated control signals. Finally, (MR) multiplexer 404 has a set of thirty-two data outputs, which are each connected to a respective line of a thirty-two line (MR) bus 472. Arithmetic logic unit (ALU) 406 has a set of thirty-two first operand inputs, which are each connected to the respective line of the thirty-two lines of bus 438, and a set of thirty-two second operand inputs, which are each connected to the respective line of the thirty-two lines of (S) bus 354. Additionally, arithmetic logic unit 406 has three control inputs, which are each connected to a respective line of a three line bus 380. Further, arithmetic logic unit 406 has a carry input, and three tri-state outputs that include a sign output, an overflow output, a carry output, and a cascading carry output. The later input/outputs are connected, each to a respective line of a four line bus 382. Finally, arithmetic logic unit 406 has a set of thirty-two data outputs, which are each connected to a respective line of a thirty-two line bus 384. Arithmetic logic unit 406 is of the type which executes with full carry look ahead, the following binary operations that are shown with their respective operation codes. In addition, arithmetic logic unit 406 executes the following special instructions. Remark: This instruction is used to load sixteen bits of immediate data into the least significant sixteen bits of the seven-port random access memory unit 128 location which is specified by the bus 252 signals, whereby the most significant sixteen bits of the seven-port random access memory unit 128 location are unmodified. To load thirty-two bits of immediate data into the seven-port random access memory unit 128 location requires the following three instructions. 1 Load T, Sixteen Bits of Immediate Data 2 Shiftup T, Sixteen Positions 3 Load T, Sixteen Bits of Immediate Data The sign/magnitude two's complement instruction is used to convert a number between two's complement and sign/magnitude representation. Merge logic unit 408 has a set of thirty-two data inputs, each of which is connected to the respective line of the thirty-two lines of bus 438, a set of thirty-two data/control inputs, each of which is connected to the respective line of the thirty-two lines of (M) bus 350, and another set of thirty-two data inputs, each of which is connected to the respective line of the thirty-two lines of (MR) bus 472. Further, merge logic unit 408 has a set of three control (select) inputs, each of which is connected to the respective line of the three lines of bus 452, and a set of thirty-two data outputs, each of which is connected to a respective line of a thirty-two line bus 502. Employed in merge logic unit 408 (but not shown) are thirty-two multiplexers, each of which has a special control portion. The multiplexers are each of the type which has a (single) data input, that is connected to the respective line of the thirty-two lines of (M) bus 350, a (single) data/control input, that is connected to the respective line of the thirty-two lines of (M) bus 350, another (single) data input, that is connected to the respective line of the thirty-two lines of (MR) bus 472, three control (select) inputs, that are each connected to the respective line of the three lines of bus 452, and a (single) data output, that is connected to the respective line of the thirty-two lines of bus 502. In a merge mode (selected by signals developed on bus 452), each of the multiplexers develops on the respective line of bus 502 a signal the state of which corresponds either to the state of a signal developed on the respective line of bus 438 or to the state of a signal developed on the respective line of (MR) bus 472, as determined (selected) by the state of a signal developed on the respective line of (M) bus 350. In a pass through mode, each of the multiplexers develops the respective bus 502 signal so as to have a state which corresponds either to the state of the bus 438, to the state of the (M) bus 350 signal, or to the state of the (MR) bus 472 signal, as determined (selected) by the state of the bus 452 signals. The state of the (M) bus 350 signals are illustrated by the following truth table. The state of the bus 502 signals are illustrated by the following truth table. Both multiplexers 410 and multiplexer 414 are of the type which is similar to (C) multiplexer 114. One set of the data inputs of each of the multiplexers (410 and 414) is connected to bus 438; and, the other set of the data inputs is connected to (R) bus 240. The control (select) input of multiplexer 410 is connected to a line 522; and, the control input of multiplexer 414 is connected to a line 524. Finally, the set of data outputs of multiplexer 410 is connected to (Z) bus 150; and, the set of data outputs of multiplexer 414 is connected to a thirty-two line bus 526. Zero detector 412 has a set of thirty-two data inputs, each of which is connected to the respective line of bus 526, and a data output, which is connected to a line 530. Zero detector 412 is of the type which develops on line 530 a signal having a high logic level when (and only when) each of the signals developed on bus 526 has a low logic level (zero). Priority encoder 416 has a set of thirty-two data inputs, which are each connected to the respective one of the thirty-two lines of bus 502, and a set of six data outputs, each of which is connected to a respective line of the six lowest order lines of a thirty-two line bus 540. Priority encoder 416 is of the type which develops on the six lowest order lines of bus 540 signals, the state of which indicates the highest order input bit which is a one (the highest order line of bus 502 upon which a signal is developed that has a high logic level), as is indicated by the following truth table. Multiplexer 418, which is similar to (C) multiplexer 114, is configured with one set of the data inputs connected to bus 502, with the other set of the data inputs connected to bus 540, with the control (select) input connected to a line 550, and with the set of data outputs connected to (R) bus 240. Additionally, bit-slice 100 includes serial diagnostic circuitry of the type which is disclosed in the United States Patent Application number 06/888,701 of Michael J. Miller, which was filed on July 24, 1986.

Claims: A cascadable, microprogrammable, bit-slice (100) comprising in combination: a DA bus (220); a Z bus (150); a DB bus (222); an A multiplexer (122) including a first set of data inputs connected to said DA bus (220), a second set of data inputs connected to said Z bus (150), a third set of data inputs connected to said DB (222) bus, and a set of data outputs; an R bus (240); a T multiplexer (124) including a first set of data inputs connected to said Z (150) bus, a second set of data inputs connected to said R bus (240), and a set of data outputs; a B multiplexer (126) including a first set of data inputs connected to said DA bus (220), a second set of data inputs connected to said Z bus (150), a third set of data inputs connected to said DB bus (222), and a set of data outputs; a random access memory unit (128) including an A set of data inputs, an A set of address inputs, and an A set of data outputs, said random access memory unit (128) being responsive to an A address represented by signals externally developed at said A set of address inputs and operative to store at said A address a number represented by signals developed at said A set of data inputs and to develop at said A set of data output signals representing the number stored at said A address; an A bus (270) coupled to said random access memory unit A set of data outputs; a funnel shifter (400) including an X set of operand inputs, a Y set of operand inputs and a set of data outputs; a mask generator (402) including a first set of start position inputs, a first set of width inputs and a set of outputs; an arithmetic logic unit (406) including a set of first operand inputs, a set of second operand inputs, and a set of data outputs; an F bus (438) connected to said arithmetic logic unit set of data outputs; a merge logic unit (408); and a Z multiplexer (410) including a first set of data inputs connected to said F bus (438), and a set of data outputs connected to said Z bus (150), furthermore characterized by: a T bus (272, 180) coupled to a random access memory unit T set of data outputs; a Q bus (274, 284) coupled to a random access memory unit Q set of data outputs; a B bus (276, 286) coupled to a random access memory unit B set of data outputs; an X multiplexer (138) including a first set of data inputs connected to said DA bus (220), a second set of data inputs connected to said A bus (270, 280), a third set of data inputs connected to said T bus (180), and a set of data outputs; an S multiplexer (140) including a first set of data inputs connected to said A bus (280), a second set of data inputs connected to said T bus (180), a third set of data inputs connected to said Q bus (284), a fourth set of data inputs connected to said B bus (286), and a set of data outputs; a Y multiplexer (142) including a first set of data inputs connected to said Q bus (284), a second set of data inputs connected to said B bus (286), a third set of data inputs connected to said DB bus (222), and a set of data outputs; an X bus (332) connected to said X multiplexer set of data outputs; an S bus (354) connected to said S multiplexer set of data outputs; a Y bus (342) connected to said Y multiplexer set of data outputs; a W bus (438) connected to said funnel shifter set of data outputs; an M bus (350) connected to said mask generator set of outputs; an MR multiplexer (404) including a first set of data inputs connected to said S bus (354) and a set of data outputs; an MR bus (472) connected to said MR multiplexer set of data outputs; and first coupling means (418) coupling a merge logic unit set of data outputs (502) to said R bus (240); in which said bit-slice (100) is a thirty-two bit bit-slice; said random access memory unit (128) is a seven-port RAM including said A set of data inputs connected to said A multiplexer set of data outputs, a T set of data inputs connected to said T multiplexer set of data outputs, a B set of data inputs connected to said B multiplexer set of data outputs, a T, a Q, and a B set of address inputs, and said T, Q, and B set of data outputs; said random access memory unit (128) is responsive to a T address represented by signals externally developed at said T set of address inputs and operative to store at said T address a number represented by signals developed at said T set of data inputs and to develop at said T set of data outputs signals representing the number stored at said T address, is further responsive to a Q address represented by signals externally developed at said Q set of address inputs and operative to develop at said Q set of data outputs signals representing a number stored at said Q address, and is responsive to a B address represented by signals externally developed at said B set of address inputs and operative to store at said B address a number represented by signals developed at said B set of data inputs and to develop at said B set of data outputs signals representing the number stored at said B address; said funnel shifter is connected to said X bus with its X set of inputs and to said Y bus with its Y set of inputs. said mask generator (402) is connected to said T bus (180), and said first set of width inputs is connected to said Q bus (284); said arithmetic logic unit (406) is connected to said W bus (438) with its set of first operand inputs, and said set of second operand inputs is connected to said S bus (354); and said merge logic unit (408) is including a first set of data inputs connected to said F bus (438), a set of data/control inputs connected to said M bus (350), a second set of data inputs connected to said MR bus (472), and said set of data outputs; and in which said Z multiplexer (410) is including a second set of data inputs connected to said R bus (240). A thirty-two bit, cascadable, microprogrammable, bit-slice as recited in claim 1 wherein said T multiplexer further includes a third set of data inputs and wherein said thirty-two bit, cascadable, microprogrammable, bit-slice further comprises a C1 register including a set of data inputs connected to said Z bus and a set of data outputs and second coupling means coupling said C1 register data outputs to said T multiplexer third set of data inputs. A thirty-two bit, cascadable, microprogrammable, bit-slice as recited in claim 2 wherein said second coupling means includes a C multiplexer having a first set of data inputs connected to said C1 register data outputs, a second set of data inputs, and a set of data outputs and an adder having a set of first addend inputs connected to said C multiplexer data outputs, a second set of addend inputs connected to said T bus, and a set of sum outputs connected to said T multiplexer third set of data inputs and wherein said thirty-two bit, cascadable, microprogrammable, bit-slice further comprises a C2 register including a set of data inputs connected to said Z bus and a set of data outputs connected to said C multiplexer second set of data inputs. A thirty-two bit, cascadable, microprogrammable, bit-slice as recited in claim 1 wherein said S multiplexer further includes a fifth set of data inputs connected to said DA bus, a sixth set of data inputs connected to said DB bus, a seventh set of data inputs connected to said R bus, and an eighth set of data inputs connected to said M bus. A thirty-two bit, cascadable, microprogrammable, bit-slice as recited in claim 1 wherein said MR multiplexer further includes a second set of data inputs connected to said A bus, a third set of data inputs connected to said Q bus, and a fourth set of data inputs connected to said DB bus. A thirty-two bit, cascadable, microprogrammable, bit-slice as recited in claim 1 wherein said first coupling means includes a priority encoder having a set of data inputs connected to said merge logic unit set of data outputs and a set of data outputs and a multiplexer including a first set of data inputs connected to said merge logic unit set of data outputs, a second set of data inputs connected to said priority encoder set of data outputs, and a set of data outputs connected to said R bus. A thirty-two bit, cascadable, microprogrammable, bit-slice as recited in claim 1 further comprising a zero detector including a set of data inputs and a data output and a multiplexer including a first set of data inputs connected to said F bus, a second set of data inputs connected to said R bus, and a set of data outputs connected to said zero detector set of data inputs. A thirty-two bit, cascadable, microprogrammable, bit-slice as recited in claim 1 wherein said T bus includes a number of lines and wherein said T multiplexer further includes a third set of data inputs each connected to the next high order one of said T bus lines and a fourth set of data inputs each connected to the next lower order one of said T bus lines.

Inventors: MICK, JOHN R., MILLER, MICHAEL J., NGOC, DANH LE
Applicants: INTEGRATED DEVICE TECHNOLOGY, INC.
Application year: 1987
Main classification: G06F15
IPC codes: G06F7, G06F9, G06F15