Control - Unit Design
Control - Unit Design
Control Unit is the part of the computer’s central processing unit (CPU), which directs the
operation of the processor. It was included as part of the Von Neumann Architecture by John
von Neumann. It is the responsibility of the Control Unit to tell the computer’s memory,
arithmetic/logic unit and input and output devices how to respond to the instructions that have
been sent to the processor. It fetches internal instructions of the programs from the main
memory to the processor instruction register, and based on this register contents, the control
unit generates a control signal that supervises the execution of these instructions.
A control unit works by receiving input information to which it converts into control signals,
which are then sent to the central processor. The computer’s processor then tells the attached
hardware what operations to perform. The functions that a control unit performs are dependent
on the type of CPU because the architecture of CPU varies from manufacturer to manufacturer.
Examples of devices that require a CU are:
Control Processing Units(CPUs)
Graphics Processing Units(GPUs)
Microprogram control unit
Computer Organization | Instruction Formats (Zero, One, Two and Three Address Instruction)
A stack based computer do not use address field in instruction.To evaluate a expression
first it is converted to revere Polish Notation i.e. Post fix Notation.
Expression: X = (A+B)*(C+D)
Postfixed : X = AB+CD+*
TOP means top of stack
M[X] is any memory location
PUSH A TOP = A
PUSH B TOP = B
PUSH C TOP = C
PUSH D TOP = D
LOAD A AC = M[A]
ADD B AC = AC + M[B]
STORE T M[T] = AC
LOAD C AC = M[C]
ADD D AC = AC + M[D]
MUL T AC = AC * M[T]
STORE X M[X] = AC
MOV R2, C R2 = C
ADD R2, D R2 = R2 + D
MUL R1, R2 R1 = R1 * R2
MOV X, R1 M[X] = R1
Expression: X = (A+B)*(C+D)
R1, R2 are registers
M[] is any memory location
The instruction cycle (also known as the fetch–decode–execute cycle or simply the fetch-
execute cycle) is the cycle which the central processing unit (CPU) follows from boot-up until
the computer has shut down in order to process instructions. It is composed of three main
stages: the fetch stage, the decode stage, and the execute stage.
This is a simple diagram illustrating the individual stages of the fetch-decode-execute cycle.
In simpler CPUs, the instruction cycle is executed sequentially, each instruction being
processed before the next one is started. In most modern CPUs, the instruction cycles are
instead executed concurrently, and often in parallel, through an instruction pipeline: the next
instruction starts being processed before the previous instruction has finished, which is possible
because the cycle is broken up into separate.
Microinstruction Sequencing:
A micro-program control unit can be viewed as consisting of two parts:
Depending on the current microinstruction condition flags, and the contents of the instruction
register, a control memory address must be generated for the next micro instruction.
There are three general techniques based on the format of the address information in the
microinstruction:
The simplest approach is to provide two address field in each microinstruction and multiplexer
is provided to select:
The address selection signals are provided by a branch logic module whose input consists of
control unit flags plus bits from the control partition of the micro instruction.
Single Address Field:
Two-address approach is simple but it requires more bits in the microinstruction. With a
simpler approach, we can have a single address field in the micro instruction with the following
options for the next address.
Address Field.
Based on OPcode in instruction register.
Next Sequential Address.
The address selection signals determine which option is selected. This approach reduces the
number of address field to one. In most cases (in case of sequential execution) the address field
will not be used. Thus the microinstruction encoding does not efficiently utilize the entire
microinstruction.
Variable Format:
In this approach, there are two entirely different microinstruction formats. One bit designates
which format is being used. In this first format, the remaining bits are used to activate control
signals. In the second format, some bits drive the branch logic module, and the remaining bits
provide the address. With the first format, the next address is either the next sequential address
or an address derived from the instruction register. With the second format, either a conditional
or unconditional branch is specified.
Horizontal Microprogramming
In horizontal microprogramming, each bit is identified specifically with a single control point,
which indicates that the corresponding micro-operation is to be executed. Since each
microinstruction is capable enough to control several resources simultaneously, it has the
potential advantage of more efficient hardware utilization and in addition, it requires smaller
number of microinstructions per microprogram. It allows higher degree of parallelism with a
minimum amount of encoding and separate control fields. However, developing microprograms
that use resources optimally or efficiently is a complex task. Horizontal microprogramming
offers great flexibility because each control bit is independent of each other. It has greater
length so it typically contains more information than vertical microinstructions.
Vertical Microprogramming
Vertical microprogramming employs a variable format and higher degree of encoding, as
opposed to horizontal microprogramming. It not only shortens the length of the
microinstruction, but also prevents the increasing memory capacity from directly affecting the
microinstruction length. Each vertical microinstruction generally represents a single micro-
operation. A code is used for each micro-operation to be performed and the decoder translates
the code into individual control signals. Because only the micro-operation to be performed is
specified, the microinstruction fields are fully utilized. Plus vertical microprograms are easier to
write than their horizontal counterparts. Vertical microinstruction resembles the conventional
machine language format comprising one operation and a few operands. It is consequently easy
to use for microprogramming. It generally consists of four to six fields that require
approximately 16 to 32 bits per instruction.
– Vertical microprograms have a better code density which is beneficial for the size of the
control store. Vertical microinstruction resembles the conventional machine language format
comprising one operation and a few operands. Each vertical microinstruction represents a single
micro-operation, while operands may specify the data sink and source. Horizontal
microprograms, on the other hand, generally represent multiple micro-operations that are
executed at the same time. In extreme cases, each horizontal microinstruction controls several
hardware resources simultaneously.
Flexibility
– Horizontal microprograms offer improved flexibility because each control bit is independent
of each other. It has greater length so it typically contains more information than vertical
microinstructions. Horizontal microinstructions with 48 or more bits are quite common.
Horizontal microprograms have the potential advantage of utilizing hardware more efficiently
and on top of it, it requires smaller numbers of microinstructions per microprogram. Vertical
microinstructions, on the other hand, are more compact but less flexible than horizontal
microinstructions. The vertical approach is consequently easy to use for microprogramming.
Horizontal vs. Vertical Microprogramming: Comparison Chart
Summary of Horizontal and Vertical Microprogramming
As opposed to horizontal microinstructions, the vertical microinstruction represents single
micro-operations. Horizontal microprograms allow higher degree of parallelism with a
minimum amount of encoding and separate control fields whereas the control bits are encoded
in vertical microprograms. The choice between the two approaches needs to be made carefully.
However, in practical, designers use a combination of horizontal and vertical microinstruction
formats so that the resulting structure is compact yet efficient.
Immediate Mode
In this mode, the operand is specified in the instruction itself. An immediate mode instruction
has an operand field rather than the address field.
For example: ADD 7, which says Add 7 to contents of accumulator. 7 is the operand here.
Register Mode
In this mode the operand is stored in the register and this register is present in CPU. The
instruction has the address of the Register where the operand is stored.
Advantages
Disadvantages
For Example: ADD R1, 4000 - In this the 4000 is effective address of operand.
NOTE: Effective Address is the location where operand is present.
Indirect Addressing Mode
In this, the address field of instruction gives the address where the effective address is stored in
memory. This slows down the execution, as this includes multiple memory lookups to find the
operand.
Instruction Cycle
An instruction cycle, also known as fetch-decode-execute cycle is the basic operational process
of a computer. This process is repeated continuously by CPU from boot up to shut down of
computer.
Following are the steps that occur during an instruction cycle:
The cycle is then repeated by fetching the next instruction. Thus in this way the instruction
cycle is repeated continuously.