Title: Datapaths
1Datapaths Control Unitspart I
2Algorithmic Computations
We wish to develop a systematic procedure that we
can use to design hardware to perform Algorithmic
Computations.
The purpose of this discussion is to develop
hardware. We are not concerned with the process
of creating algorithms. Do not be distracted by
the small details. Keep your focus on the overall
structure.
3Examples of Algorithms
2a) R YX can be computed by multiplying Y by
itself X times. R (Y)(Y).(Y) iterated X
times.
4Defining a Calculation Entity
Before proceeding we must have some idea of how
our Calculation Entity is to be used in relation
to other circuits.
We shall pretend that the operands and results
are all stored in a memory bank. There is another
external circuit that coordinates the memory
accesses with our Entity using two signals called
Start and Done.
- For all clock cycles that the Calculation Entity
is busy in the middle of a calculation, Done
0. - The signal Done 1 when the Result is correct
and both the Done signal and the Result hold
their values until it is time for a new
calculation. - A calculation begins on the first clock edge
when Start 1. - The Operands are assumed to have their correct
values whenever Start 1.
5Coordinating Data Transfers
The Start and Operands are ignored during any
clock cycles that the Calculation Entity is busy
in the middle of a calculation. (This choice
prevents a calculation from being aborted in the
middle. We could have chosen a different protocol
that allows calculations to be interrupted before
they complete)
6Operand and Result Representations
We must also define the precise meaning of all
the bits in the Operands and Result. Example
- 2) Powers
- both X and Y are 4-bit unsigned binary integer.
Notice that 1515 4.3 x 1017 . The result is so
large that we should probably consider coding the
result as a floating-point number. We will have
to be specific about the details of the floating
point representation but we can postpone these
details till later.
- 3) Reciprocals
- Let us say that X is an 6-bit unsigned binary
fraction, where 0.5 X ! 1 . - Thus 1 ! R 2.
- (Notice that we cannot allow X 0.) For
simplicity we shall choose R to be an 8-bit
number, the two MSBs for the integer and 6 LSBs
to represent the fractional part. We may have to
change the choice later.
7Single Cycle Circuitry
Now we try some rough sketches of purely
combinational circuits that perform the
calculation in a single cycle.
Notice that algorithm (2a) cannot be implemented
as a purely combinational circuit.
8Algorithm Flowcharts
9Basic Structure of the Flowcharts
- The flowcharts have lots of features in common.
- Main Variables are initialized in the beginning.
- Loop Control Variables are initialized in the
beginning. - There is a test to determine whether the
calculation is DONE. - The main variables are accessed and updated
inside the main loop. - The loop control variables are updated inside the
main loop.
10Using Registers for Variables
In the previous flowcharts we used symbols to
represent variables that could hold relevant
information about the calculation. In some cases
the variables held intermediate values of data
and in other cases the variables held information
that was needed to control the flow of the
calculation. Ie. Loop counters.
In circuitry, these variables must be implemented
as registers that update their contents every
clock cycle. We must introduce some additional
control signals that allow us to choose the
exact clock cycle when a register must change to
a new value.
11Microoperations
In addition to simple movement of data we also
have situations whereby simple transformations
occur on the data as it is being copied. These
transformations are called Microoperations The
Algorithm can be viewed as a collection of
microoperations being sequenced in the correct
order as specified by the flowchart.
12Register Transfer Statements
The register transfers are controlled by
specific variables. We have many possible
situations that could occur.
a X ) X Y b Y ) X Z This reads
Register X is updated with the sum of the
values from register X and Y on every clock cycle
when a 1 and also Register Y is updated with
the sum of the values from register X and Z on
every clock cycle when b 1
a X ) Y b X ) Z This example has a
problem. If both a 1 and b 1 in the same
cycle the value of register X is ambiguous. We
solve the problem by making the conditions
mutually exclusive.
OR
13Partitioning the Calculation Entity
We have finally arrived at the conclusion. The
final circuit can be divided into TWO separate
sub-circuits, called the Datapath and the Control
Unit. The Datapath is the part of the circuit
that contains all the registers and all the
combinational circuitry that perform the
microoperations. The Control Unit is in its
simplest form a Finite State Machine. The outputs
of this finite state machine are the control
signals that coordinate register transfers. The
inputs to this FSM are the status signals that
are derived from the contents of the datapath
registers.