Abstract:
A shifter design which is useful in microprocessors is presented. The shifter can perform the operations of a shift right, shift left and shift right arithmetic in which the sign bit of the shifted data word is replicated into the vacated bit positions caused by the shift to the right. The shifter has a rotation count unit, a rotation unit, a mask decoder unit and a logic unit for high-speed operation and occupies a minimal amount of area in an integrated circuit.

Description:
BACKGROUND OF THE INVENTION 
     The present invention is related to the field of microprocessor design and, more particularly, to the design of shifter units used in microprocessor. 
     A common operation in microprocessor design is a shift operation by which the bits of a word are shifted into lower order bit positions (shift right) or into higher order bit positions (shift left). A shifter unit is a troublesome circuit block in a microprocessor due to the large amount of crossing wires, i.e., datapaths, in the unit. This is especially true for modern microprocessors having wide, i.e., 32 bits and more, busses. Prior shifter units in microprocessors included multiplexer circuits with duplicate logic to perform a shift right function and to perform a shift left function. Other shifter units used crosspoint switches which inherently occupy much space on an integrated circuit. 
     The present invention has the ability for performing three types of shift operations. A shifter according to the present invention can shift right, shift left, and can shift right arithmetic in which the sign bit of the data word to be shifted is replicated into the vacated bit positions caused by the shift to the right. The shifter occupies a minimal area in the integrated circuit comprising the microprocessor and performs its operations in a single clock cycle for high speed operation. 
     SUMMARY OF THE INVENTION 
     To accomplish these ends, the present invention provides for a shifter which moves input bits in a word right or left by a specified amount in response to an instruction. The shifter has a rotation count unit, a rotation unit, a mask decoder unit and a logic unit. The rotation count unit receives signals specifying an amount of shift of the input bits right or left by the instruction. In response, the rotation count unit generates rotational control bits. The rotation unit receives the input bits and rotates the input bits by a specified amount responsive to the rotational control bits. The mask decoder unit generates masking bits in response to said rotational control bits. The logic unit, which is connected to the mask decode unit and the rotation unit, combines the masking bits and rotated input bits. The shifter performs these operations in one clock cycle. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a shift unit according to the present invention; and 
     FIG. 2 is a representation of the operation of the logic unit. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     FIG. 1 illustrates the elements and organization of a shifter unit according to the present invention. A 32-bit data word which is to be shifted is received by the rotation block 10. The shift amount, i.e., the number of places by which the bits in the word are to be shifted, are specified in an instruction. The specified shift amount is sent to a rotation count block 11 which generates a 5-bit signal to the rotation block 10. Besides the shift amount signals, the rotation count block 11 receives a control signal which specifies the direction of the shift, right or left. The rotation block 10 rotates only to the right. For shifts to the right, the 5 rotation bits from the rotation count block 11 simply represent the shift count, the shift amount by which the 32-bit word is to be shifted. For shifts to the left, however, the rotation count block 11 generates the rotation bits for a rotate right sufficient to equal the shift to the left specified by the instruction. 
     The rotation count bits are also received by a mask decoder block 12, which generates a 32-bit word of masking bits. The word of masking bits has logic 0 in all bit positions except for logic 1&#39;s which are left-justified. The number of logic 1&#39;s is equivalent to the amount of rotation specified by the rotation count block 11. Mask decoder circuits are familiar to integrated circuit designers. A mask decoder circuit which is particular suitable to the implementation of the present invention is described in U.S. application Ser. No. 08/550,944, filed of even date by the present inventor and entitled, &#34;MASK DECODER CIRCUIT OPTIMIZED FOR DATA PATH&#34;, now U.S. Pat. No. 5,670,900. 
     The rotation count block 11 also generates a 0 count signal when the shift amount (and the rotation amount) are 0. The 0 count signal is fed into an OR logic gate 14. The OR logic gate 14 has a second input terminal which also receives the control signal which specifies whether the amount shifted is in the right or left direction. In the present example, a logic 1 signal indicates a shift to the right. 
     The rotated input bits from the rotation block 10 and the masking bits from the mask decoder block 12 are each fed into a logic block 13. Generally speaking, the logic block. 13 performs a bit position by bit position logical combination of the 32 bits from the rotation block 10 and the 32 bits of the mask decoder block 12. The result is a 32-bit data out word which has been shifted according to the computer instruction. The logic block 13 receives the output signal of the OR logic gate 14 as one control signal. The control block 13 also receives the output signal of an AND logic gate 15 as a second control signal. The AND logic gate 15 has one input terminal connected to a line indicative of whether the instruction is an arithmetic operation or not and the second input terminal is connected to a line which carries the sign bit, i.e., the most significant bit of the input data word. The arithmetic operation signal is a logic 1 when the computer instruction specifies an arithmetic operation. 
     The general operation of the shifter unit illustrated in FIG. 1 is illustrated in FIG. 2. The input data bits are sent to the logic block 13 after rotation by the block 10. The 32 masking bits are generated by the mask decoder block 12 in response to the rotation count bits from the rotation count block 11. Depending upon the control signals from the logic gates 14 and 15, the logic block 13 may invert the masking bits and then logically combine them on a bit-by-bit basis with the rotated input data bits. The logical operation can be an OR or an AND operation. 
     In this manner, a shift right, a shift left, and a shift right arithmetic may be achieved easily. In a shift right, the masking bits are inverted and logically ANDed with the rotated input bits by the logic block 13. The result is that the high order bit places which have been vacated in the shift to the right contain logic 0&#39;s. 
     For a shift left, the masking bits remain uninverted and are logically ANDed with the rotated input data bits. In this case the lower order bit places, which have been vacated by a shift to the left, are filled with logic 0&#39;s. Likewise, note that a 0 shift to the left also results in an output data word which matches the input data word. The OR gate 14 handles the special case of shift left by zero. Note that if the shift amount is 0, no shift, the output data word is the same as the input data word, as expected. 
     Shift right arithmetic with sign bit=0 works exactly as the shift right operations. For the shift right arithmetic with sign bit=1, the masking bits and rotated input bits are logically ORed. Note that all the high order bit places which have been vacated by the shift to the right are filled with logic 1&#39;s. In either case, the sign bit has been extended to the vacated bit places in the shift to the right. 
     While the above is a complete description of the preferred embodiments of the present invention, various alternatives, modifications and equivalents may be used. It should be evident that the present invention is equally applicable by making appropriate modifications to the embodiment described above. Therefore, the above description should not be taken as limiting the scope of invention which is defined by the metes and bounds of the appended claims.