Wed, 11 Feb 2009, 21:10






A student is in my office asking about micro-code, micro-op, micro-instruction.
I have interrupted him to share our discussion with everyone.

I call it micro-* in the regular expression sense of the symbol *.  (If you
don't know what I mean by regular expressions, don't worry.  This is not the 
time or the place for that discussion.)

Microcode is generally the term to describe the set of microinstructions
that a microprogrammed computer executes to provide the functionality of 
the ISA layer. 

Microinstructions are horizontal or vertical.  

Horizontal microinstructions (e.g., the LC-3b) have the property that 
pretty much every control signal can be asserted or not in a given 
microinstruction, with minimal if any further decoding.  This allows
for multiple micro-ops to be performed concurrently in a single clock cycle.

Vertical microinstructions tend to have one micro-op per microinstruction.
Kind of like assembly language level instructions, only at a lower level of
granularity of the work specified.  In that, that is where the word micro
comes from in this context.  Substantial decoding is usually required to go 
from vertical microinstruction to carrying out the work.

A micro-op is a single operation done at the lowest level of interaction
with hardware.  It may require one or more control signals to be carried out.
For example, state 18 in our LC-3b state machine carries out two micro-ops
in its one microinstruction.  MAR gets PC and PC gets PC=2.  To perform the
micro-op MAR gets PC, one needs the control signals to GatePC and LD.MAR.

If this bothered you also, I hope this helps.

Yale Patt