Skip to main content

3. Principles of Microprogrammed Control

This section details the core theory of the microprogrammed control unit, the flexible alternative to the hardwired FSM. This approach fundamentally changes the design from a complex, fixed logic circuit to a simple, programmable one.

  • 3.1 Core Concept: The "Computer-within-a-Computer"

    • The most effective analogy for a microprogrammed control unit is that it is a "computer-within-a-computer." The main CPU (which has assembly instructions like ADD, LDA, JMP) is the "outer" computer. The Control Unit itself is a tiny, hidden, "inner" computer.
    • This inner computer has its own simple program, called a microprogram. The microprogram is composed of a sequence of instructions called micro-instructions.
    • The key relationship is this: One assembly instruction (like LDA) is interpreted by the CU as a command to run a specific micro-routine (a "subroutine" of micro-instructions). The micro-routine is the step-by-step recipe that defines how to execute that single assembly instructior.
  • 3.2 Architectural Components

    • To function as a simple computer, the microprogrammed CU has its own set of internal hardware components, separate from the main datapath.

    • 3.2.1 Control Store (or Control Memory):

      • This is a small, high-speed Read-Only Memory (ROM) that is located inside the Control Unit.
      • Its sole purpose is to store the entire microprogram—that is, all the micro-routines for every assembly instruction in the CPU's instruction set (e.g., the routines for LDA, STA, ADD, JMP, etc.).
    • 3.2.2 Micro-Sequencer (Next Address Logic):

      • This is the "Program Counter" for the Control Unit (often called a uPC or "micro-Program Counter").
      • Its job is to determine the address of the next micro-instruction to be fetched from the Control Store.
      • It decides this address based on several inputs: the main instruction's opcode (for the initial "decode" jump), CPU status flags (for conditional branches like JEQ), and sequencing fields from the current micro-instruction (e.g., SEQ_NEXT, SEQ_FETCH).
    • 3.2.3 Micro-instruction Register (uIR):

      • This is a register that holds the current micro-instruction that was just fetched from the Control Store.
      • This is the most critical component for execution: the output bits of this register are the actual control signals that are sent to the datapath.
      • For example, a 16-bit uIR might directly output 16 control signals (like Register_Enable, ALU_Subtract, Memory_Write, etc.) to the rest of the CPU.