This document provides an introduction to the COMET Microarchitecture, a microprogrammable computer designed specifically to emulate the VAX-11 architecture. Written in March 1980 by Yale N. Patt, it aims to explain COMET's internal workings for those interested in its VAX implementation and for microcode development. It is explicitly not a general microprogramming text or a hardware reference manual.
Key aspects of the COMET microarchitecture include:
Overall Design: COMET consists of an 80-bit microinstruction control store (up to 16K words), a microsequencer, a 32-bit Data Path, and various registers. It communicates via internal buses (WBUS, MBUS, RBUS) and operates on a basic 320 nanosecond microcycle.
Microsequencer: Unlike systems with a dedicated microprogram counter, COMET's next microinstruction address (CSA) is determined in three ways:
NEXT field with specific internal signals (e.g., from VAX registers, buses, or flag bits) controlled by the BUT field.USTK) is used for nested subroutine calls, with addresses pushed by JSR/PUSH and popped by BUT/RETURN micro-orders.IRD1 and IRDX ROMs provide starting addresses for VAX instruction emulation and operand evaluation, respectively, indexed by VAX opcodes and internal status.Data Path: This is the computational core, featuring:
MUX, ALU, DQ, ALUSHF, ALUCI). Special functions are grouped under the ALPCTL field.SRKSTA) used for microsequencer branching.Register Back Up Stack (RBS) saves VAX register state during operand evaluation for interrupt recovery.VAX-11 Emulation Implementation:
BUT/IRD1 micro-order, which calls a hardware routine (DOSERVICE) to check for pending traps/interrupts before fetching the next VAX instruction opcode.microtraps (which force a branch to a fixed address and typically save the current microinstruction for re-execution after the fault is corrected), microprogrammed conditional branches, or ROM decodes. The process involves saving the VAX machine state (PC, PSL) on appropriate stacks and transitioning to service routines.User Microprogramming: COMET offers features to support user-defined microcode, enabling instruction set enhancements and performance tuning. The 80-bit microinstruction provides significant parallelism, allowing multiple operations (e.g., ALU function, memory access, and conditional branching) to occur simultaneously within a single microcycle.
The document concludes with detailed examples of microprogramming, including the emulation flow for a VAX INDEX instruction and the design considerations for a new user-defined instruction, demonstrating how COMET's microarchitecture features are leveraged for efficient execution.
Site structure and layout ©2025 Majenko Technologies