We only care about microprogrammed control units which are a type of CPU control unit that generate the control signals needed to execute machine instructions by reading Microcode from the main ROM. This control unit, controls the Finite State Machine that keeps track of the states of all of the gates and mux signals and such, directing the control flow of the ISA and Macrostates. Not all control units use microcode.

Georgia Tech

Georgia Tech seems to uniquely call microprogrammed control units microcontrollers and microcontrol unit

3 ROM Control Unit

3 ROM Control Unit from LC 4200 architecture.

Main Rom

Contains the Microcode

Sequencer ROM

Maps Opcode to address in Main Rom Only is used after fetch3

Conditional ROM

Maps CmpTarget to address in Main Rom When doing a conditional branch, CC ROM’s current selected address or the next state bits will be used. The CC ROM contains addresses of the beginning of different microstates needed for branching. It would probably look something like this

CmpTarget (Input)CC ROM Content (Output Address)Corresponding “True” Condition
00Address of BEQ_Branch_MicrostateFor a BEQ instruction, when SR1 == SR2.
01Address of BGT_Branch_MicrostateFor a BGT instruction, when SR1 > SR2.
10Address of CLMP_LessThan_MicrostateFor a CLMP instruction, when DR < SR1.
11Address of CLMP_MoreThan_MicrostateFor a CLMP instruction, when DR > SR2.

Flat ROM

  • More space
  • Faster since only one ROM access in each microinstruction
  • Add a T bit to the ROM
    • AND the T bit and the Z reg become the 6th address bit
    • This will result in branching behavior
  • Add an M bit to the ROM
    • AND the M bit and the OP to become the 7-10 address bits
    • This will result in branching behavior
  • Clone fetch in microcode

Hardwired

  • More expensive
  • Doesn’t have to wait on any ROMs