|
<< Click to Display Table of Contents >> Navigation: ASA-EMulatR Reference Guide > Introduction > Architecture Overview > Chapter 1 - System Overview > 1.2 Design Goals and Guiding Principles |
EMulatR is designed around five primary goals, listed in strict priority order. Every design decision in the emulator is evaluated against these goals in this order.
The emulator must behave like real Alpha hardware in all architecturally visible ways, even when doing so complicates implementation. The emulator models Alpha's architectural semantics, not performance characteristics. Correctness is always prioritized over speed.
Execution must be understandable, reproducible, and inspectable. One iteration of the run loop corresponds to one hardware clock cycle, enabling deterministic replay and debugging. Correctness takes precedence over speculative aggressiveness.
Ordering and synchronization are never implicit. All serialization is driven by architectural mechanisms: barriers (MB, WMB, EXCB, TRAPB), PAL entry, and exceptions. All exceptions are delivered precisely at the architectural commit point (the Writeback stage).
Multiprocessor behavior is fundamental to the design, not layered on afterward. Multi-processor coordination is modeled with explicit barriers, reservation tracking, and IPI delivery. Every subsystem is designed with SMP correctness in mind from the outset.
Instruction decoding, execution, memory access, coherency, privilege, and devices are isolated into well-defined domains. Execution is partitioned into functional domains (Boxes) with well-defined interfaces and one-way dependency flow. No domain reaches into another's internal state.
See Also: 1.5 Non-Goals; Chapter 11 - Architectural Invariants