Beruflich Dokumente
Kultur Dokumente
\setupwhitespace [halfline]
This chapter introduces several concepts that are useful for understanding of the
KB11-C
Processor and the PDP-11/70 system. The first two of these concepts,
Microprogramming
(\in[ref:microprogramming]) and Parallel Operation or Pipelining
(\in[ref:pipelining]),
should be well understood before reading any further.
The other two paragraps, Virtual Machines (\in[ref:virtualmachines]) and Reentrant
and
Recursive Programming (),
discuss system concepts that may be easier to understand after a working
know\-led\-ge of the
PDP-11/70 has been acquired. The block diagrams in Appendx X show the
interconnection
between the several parts of the PDP-11/70, including the RH70 controllers.
\section [ref:microprogramming]{MICROPROGRAMMING}
The KB11-C Processor uses a microprogram control section which reduces the amount
of
combinational logic in the processor. This paragraph introduces the concept of
microprogramming by first describing a digital computer, then dividing the computer
into various parts, and finally, describing how some of these parts differ for a
microprogrammed processor.
Although a computer can effect complicated changes to the data it receives, it must
do so by combining a large number of simple changes in different ways. The part of
the
digital computer that actually operates on the data is the processor. A processor
is made up
of logical elements; some of these elements can store data, others can do such
simple
operations as complementing a data operand, combining two operands by addition or
by ANDing,
or reading a data operand from some other part of the computer. These simple
operations can be
combined into functional groups; such a group is called an instruction, operations
that combine,
change, or simply move the data, and operations that dispose of the data.
Instructions can be
further combined into programs, which use the cimbined instructions to construct
even more
complex operations.
The logical elements of a processor can only perform a small number of operations
at one time.
Therefore, to combineoperations into an instruction, the instruction is divided
into a series
of operations (or group of operations that can be performed simultaneously). The
processor does
each part of the series in order. One way to describe how the processor executes an
instruction is
to call each operation (or group of operations) a machince state. An instruction
then becomes
a sequence of machine states which the processor enters in a specific order.
The processor can be completely described in terms of machine states by listing all
the machine
states in which the processor can perform (i.e., all the different operations or
group of
operations that it can perform) and all the sequences in which these machine states
can occur.
The sequence of machine state is determined by the current state of the computer:
this includes
such information as the instruction being executed, the values of the data being
operated on,
and the results of previous instructions.
The data section in the KB11-C is usually referred as a {\it Data Paths} and is
described in Part 2,
Chapter 2. The control section is described in Section II, Chapter 1, Instruction
Decode and Microprogram
Control.
The processor can be completely described in terms of machine states by listing all
the machine
states in which the processor can perform (i.e., all the different operations or
group of
operations that it can perform) and all the sequences in which these machine states
can occur.
The sequence of machine state is determined by the current state of the computer:
this includes
such information as the instruction being executed, the values of the data being
operated on,
and the results of previous instructions.
In terms of machine state description, the processor can be divided into two parts.
The first part,
called the data section, includes the logic elements that perform the operations
which make up
a machine state. The second part, called the control section, includes all the
logic that determines
which operations are to be performed and what the next machine state should be. The
data section
and control section are discussed in the following paragraphs.
The data section in the KB11-C is usually referred as a {\it Data Paths} and is
described in Part 2,
Chapter 2. The control section is described in Section II, Chapter 1, Instruction
Decode and Microprogram
Control.
During each machine state, the data section performs operations selected by signals
from the control
section. The data section provides inputs to the control section. which help to
determine the next
machine state; the data section also exchanges data with other devices external to
the processor.
The data section can be divided into three functional sections; each section is
discussed in one of the
following paragraphs.
\subsubject {The Data Storage Section}
For the processor to combine data operands it must be able to store data
internally, while
simultaneously reading additional data. Often, a processor stores information about
the instruction
being executed, about the program from which the instruction was taken, and about
the a location of
the data being operated on, as well as a number of data operands. When the
processor must select some of the
internally-stored data, or store new data, the control section provides control
signals which cause the
aprropriate action within the data storage section.
\startnarrower
\startitemize [n,packed]
\item the current machine state
\item inputs from the data section (such as the instruction type or the data
values)
\item inpformation about external events.
\stopitemize
\stopnarrower
The sequence control section maintains information about the current machine state,
and receives information
from the data section and the external environment through the sensing section.
The number of logical elements in the processor os often reduced by sharing the
outputs of networks which generate imtermediate signals needed in the generation
od several control signals, or even in the generation if controls idgnals and
machine states. Unfortunatelly, while this reduces the size of the processor, it
increases the complexity and difficulty of understanding the device, because it
is no longer obvious what conditions cause each signal. In addition, the
distinction between the sequence control and the function generator is blurred,
which makes it more difficult to determine whether improper operation is caused
by a bad machine state sequence or, more simply, by teh wrong control signals
within an otherwise corrent machine state.
The two tasks of the sequence control section are to select the next machine
state, and to provide information about the current machine state to the
function generator. The only information that the function generator in a
microprogrammed processorrequires is which word to use as control signals.
Therefore, the sequence control simply provides an address that selects the
control word. The sequence control must also select the address of the next word
to determine the machine state sequence. Because the next machine state is
determined in part by the current machine state, information is stored in the
microprogram that helps to select the next state; the microprogram word contains
the control signal values and the address and sensing control information
required by the microprogram address generation logic (i.e., by the sequence
control).
In a microprogrammed control like the one described above, the two major
portions of the control section have been simplified to regular logival
structures. The function generator is entirely separate from the sequence
control, so it is easy isolate malfunctions to the microprogram storage or to
the address generator. In addition, the sensing logic is simplified, because
each sensed condition os reduced to a single signal and the sensing logic
selects the appropriate signals for the current machine state, based on signals
output from the microprogram storage. To summarize this discussion, a
microprogrammed processor has a simpler, more regular, more easily repaired
control structure, based on the generation of control signals from stored
information, and the selection of each machine state, based on information
stored in the current machine state, and on information from a simplified
sensing section.
When the processor works on the early part of an instruction at the same time
that ir completes the previous instruction, this form of parallel operation is
called {\it pipelining}. The processor attempts to make continous use of the
external data interface by fetching each word addressed by the Program Counter
(PC) in succession (incrementing the PC during each transfer), on the assumption
that the next word required will be the one following the current instruction.
In the pipelining analogy, the processor attempts to fill a pipe, corresponding
to the different parts of the processor used successively by each instruction,
with a series of instructions.
The current instruction often requires some other words from the external
storage. At times, the next instruction does not follow the current instruction
because the PC has been explicitly changed by the current instruction. HWhen
either of these two conditions occurs, the processor must stop the data transfer
begun after the instruction fetch and begin a data transfer with a different
address. In the pipelining analogy, this is a break in the smooth flow of
instructions through the pipe; some time is lost before the pipe drains (the
current instruction is completed) and can be refilled (a new instruction fetched
and a transfer begun to read the word following that instruction).
A second form of parallel operation occurs in the KB11-C to further improve the
utilization of the processor. Because the processor includes several types of
data storage and data manipulation elements, with different interconnections,
several data transfers can take place within the processor simultaneously. As an
example, during the same machine state that completes an external data transfer,
the processor can read a general register into a temporary storage register, and
perform an addition that adds a constant to the program counter.
\stopchapter