- As I mentioned before, the ALU can perform many different kinds
of operations: arithmetic (+, -, *, /), logic operations
(AND, OR, Negate (NOT)), and shift and rotate operation.
- The ALU works quite differently than homo sapiens...
If you would ask a fellow human to compute 3 + 4,
he/she would most likely only do "3 + 4",
he/she would not compute "3 - 4", "3 * 4", "3 / 4", etc, etc.
because you did not ask for it.
- Well, the ALU is also a big switch - like the CPU
(well, you could have guessed.... the ALU resides
inside the CPU and you have just seen the multitude
of multiplexors (many-to-one switches !) inside the CPU).
The ability of the ALU to do the different kinds of operations
is derived from a many-to-one switch... yep, the multiplexor:
- The ALU performs every possible operation on its inputs
and then use multiplexors to pick out the desired result.
- Due to temporal limitations (we can only do so much in one semester),
the ALU discussed in this course will not have the abundance of
operations found in M68000 or SPARC.
Our ALU will only have 4 operations: +, NOT, AND and OR....
And the operands (and result) of the ALU are 4 bits long...
To select the desired operation among the 4 different possible
operations, we will need 2 "function" bits:
- 00 will mean: operand1 + operand2
- 01 will mean NOT(operand1)
- 10 will mean operand1 AND operand2
- 11 will mean operand1 OR operand2
The following figure shows our ALU and an example operation:
- If we attempt to design even this tiny ALU with the degital design
technique outlined in: click here,
we will find ourself - just like in the case of the 4 bit adder -
in very deep trouble...
To give you an idea what kind of trouble we are dealing with,
the following figure shows a glimpse of the logical table that
you would obtain when you apply the circuit design technique
given in the class notes
( click here):
- We will again take a piece-meal approach to construct the ALU,
following a similar technique we used to construct the 4-bit adder
circuit.
We will first design a 1-bit-ALU circuit that
can perform the desired operations on 1 bit operands.
We will than cascade this 1-bit-ALU circuit to obtain an ALU that
can perform the desired operations operands of any length.
- The following figure shows the internal structure of a 1-bit-ALU:
- The inputs of the circuit are:
- a = operand1
- b = operand2
- cin = carry in (we need that to do addition)
- The outputs of the circuit are:
- result = outcome of the operation
- cout = carry out (we need that to do addition)
- The circuit first computes all the possible outcomes: a+b, NOT(a),
(a AND b), and (a OR b).
- The desired result is then selected using a multiplexor,
the control signal of the multiplexor will be the
operation code in the computer instruction
(stored in the IR - instruction register)
- I have a logic-sim circuit program that illustrates the operation of
this 1-bit ALU: click here .
- We can construct a 4-bit ALU - an ALU that operates on
4 bit operands - by cascading 4 of these 1-bit-ALU's as follows:
- Note: I did not complete the connections from
a1, a2, b1 and b2
to the inputs of their 1-bit ALU's.
From the figure, from the material on the 4-bit adder
( click here),
and from class notes, it should be clear how they should be
connected.
- Same note on the connection from the 1-bit ALU to the outputs
z1 and z2.
- I have a logic-sim circuit program that illustrates the operation of
this 4-bit ALU: click here .