# Arithmetic Logic Shift Unit

**3/5**

Instead of having individual registers performing the microoperations directly, computer systems employ a number of storage registers connected to a common operational unit called an arithmetic logic unit, abbreviated **ALU**.

To perform a microoperation, the contents of specified registers are placed in the inputs of the common ALU. The ALU performs an operation and the result of the operation is then transferred to a destination register. The **ALU** is a combinational circuit, so that the entire register transfer operation from the source registers through the ALU and into the destination register can be performed during one clock pulse period. The shift microoperations are often overall in a separate unit, but sometimes the shift unit is made part of the overall ALU.

The arithmetic, logic, and shift circuits can be combined into one ALU with common selection variables. One stage of an arithmetic logic shift unit is shown in Fig. 4-13. The subscript i designates a typical stage. Inputs A1 and B1 are applied to both the arithmetic and logic units.

A particular microoperation is selected with inputs S1 and S0. A 4 x 1 multiplexer at the output chooses between an arithmetic output in E_{i} and a logic output in H_{i}. The data in the multiplexer are selected with inputs S3 and S2. The other two data inputs to the multiplexer receive inputs A_{i - 1} for the shift-right operation and A_{i + 1} for the shift-left operation. Note that the diagram shows just one typical stage. The circuit of Fig. 4-13 must be repeated n times for an n-bit ALU. The output carry C_{i + 1} of a given arithmetic stage must be connected to the input carry C_{i} of the next stage in sequence. The input carry to the first stage is the input carry C_{in}, which provides a selection variable for the arithmetic operations.

The circuit whose one stage is specified in Fig. 4-13 provides eight arithmetic operation, four logic operations, and two shift operations. Each operation is selected with the five variables S3, S2, S1, S0, and C_{in} The input carry C_{in} is used for selecting an arithmetic operation only.

Table 4-B lists the 14 operations of the ALU. The first eight are arithmetic operations and are selected with S_{3}S_{2} = 00. The next four are logic operations and are selected with S_{3}S_{2} = 01. The input carry has no effect during the logic operations and is marked with don't-care x's. The last two operations are shift operations and are selected with S_{3}S_{2} = 10 and 11. The other three selection inputs have no effect on the shift.

**3/5**