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