MicroPrommed Control Unit Overview
MicroPrommed Control Unit Overview
In a microinstruction format, the CD field (Condition Designator) specifies conditions for the execution of the microinstruction, such as U, I, S, or Z. The BR field (Branch) contains symbols that determine the type of branching, such as JMP or RET. The AD field (Address Designator) specifies the address field value using either a symbolic address, the symbol NEXT for the next address in sequence, or is left empty and converted to zeros if the BR field contains RET or MAP .
Address mapping transforms instruction code bits into a control memory address by applying a mapping process—a rule that associates specific instruction code patterns to particular microprogram routine addresses. This process is crucial because it ensures that each instruction triggers the appropriate microprogram routine, allowing the correct sequence of microoperations to execute the instruction .
The control word within a microinstruction specifies one or more micro-operations for the data processor. It interacts with the data processor by initiating these operations, which may include various control signals that direct data flow paths, execute arithmetic/logic operations, or control other processor functions. Once these micro-operations are executed, the control word's address sequencing logic determines the next microinstruction address .
The fetch routine begins with loading an initial address into the control address register when the computer powers on. This address is for the first microinstruction of the fetch routine. The routine is sequenced by incrementing the control address register through its microinstructions until the instruction is in the instruction register. This ensures the correct instruction is fetched by sequentially accessing microinstructions necessary for this operation .
Symbolic microinstructions are important because they provide a human-readable representation of microinstructions, making it easier to write and debug microprograms. They are translated into their binary equivalent using an assembler that interprets each symbolic line—consisting of a label, microoperations, and address designators—into a format that the control memory can use, ensuring each symbolic instruction is accurately represented as a binary microinstruction .
The ORG pseudo-instruction assists in defining microprogram routines by specifying the starting memory address for a new set of microinstructions in control memory. It instructs the assembler to place the next microinstruction at a specified location, such as ORG 64 setting the beginning at decimal address 64 (binary 1000000), helping organize and structure microprogram routines effectively within control memory .
The Microprogram Sequence Controller is responsible for determining the address of the next microinstruction. It achieves this by using specific bits from the current microinstruction to control address generation. It can increment the control address register, load an address from control memory, transfer an external address, or load an initial address to initiate control operations. The sequence can also depend on external input conditions, and the next address is computed while current microoperations are executed .
Subroutines in microprogramming are beneficial because they allow common sections of microcode, such as those for effective address computation, to be reused, saving microinstruction space and enhancing efficiency. The mechanism used to handle return addresses involves a subroutine register. During a subroutine call, the incremented control address register value is stored in this register. On return, the address from the subroutine register is restored to continue the main routine .
Returning to the next fetch routine is necessary to ensure continuous instruction execution following the completion of one instruction. It is typically accomplished by executing an unconditional branch microinstruction, which directs control to the first address of the fetch routine, effectively resetting the control flow to initiate the fetching of the next instruction, thus maintaining the instruction cycle .
The control address register can be modified by incrementing it, loading an address from control memory, transferring an external address, or loading an initial address at startup. These modifications ensure flexibility in microprogram execution by altering the sequence of microinstructions based on the program needs, allowing for branching, looping, and conditional execution based on status or external inputs, impacting the operational flow and allowing complex instruction execution .