<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.
Micro Assembly Language « microcentury « Micro
Channel Architecture « microcode » Microcom
Networking Protocol » microcomputer »