from
The Free On-line Dictionary of Computing (8 July 2008)
microcode
microprogramming
<programming> A technique for implementing the {instruction
set} of a processor as a sequence of microcode instructions
("microinstructions"), each of which typically consists of a
(large) number of bit fields and the address of the next
microinstruction to execute. Each bit field controls some
specific part of the processor's operation, such as a gate
which allows some {functional unit} to drive a value onto the
{bus} or the operation to be performed by the {ALU}. Several
microinstructions will usually be required to fetch, decode
and execute each {machine code} instruction
("{macroinstruction}"). The microcode may also be responsible
for {polling} for hardware {interrupts} between each
macroinstruction. Writing microcode is known as
"microprogramming".
Microcode may be classified as "horizontally encoded" or
"vertically encoded". Horizontal microcode is as described
above where there is a fairly direct correspondence between
the bit fields in a microinstruction and the control signals
sent to the various parts of the CPU. Not all combinations of
bits will be valid (e.g. two units driving the bus at once).
Vertical microcode is closer to {machine code} because a bit
field value may pass through some intermediate combinatory
logic which generates the actual control signals. This allows
a few bits of a microinstruction to determine several control
signals and ensure that only valid combinations of those
signals are generated (e.g. a field may be decoded to determine
which unit drives the bus). The disadvantage with vertical
encoding is that the encoding is usually fixed and takes extra
time compared with horizontal encoding which allows any
combination of signals to be generated and takes no time to
decode.
The alternative to a microcoded processor is a {hard-wired}
one where the control signals are generated directly from the
bits of the {machine code} instruction. This is more common
in modern {RISC} architectures because it is faster.
Microcode is usually stored in {ROM} chips though some
processors (e.g. the {Orion}) use fast RAM, making them
dynamically microprogrammable.
(1996-11-26)