|
<< Click to Display Table of Contents >> Navigation: ASA-EMulatR Reference Guide > Introduction > Architecture Overview > Chapter 4 - Functional Execution Domains ("Boxes) > 4.10 Cross-Box Interaction Rules |
To prevent architectural drift, the emulator enforces strict interaction rules. These rules are non-negotiable architectural invariants. Violating any of these rules introduces subtle correctness bugs.
1.IBox never mutates architectural state — it is purely front-end
2.EBox never performs memory I/O — all memory operations route through MBox
3.MBox never decides ordering — ordering semantics are exclusively CBox's domain
4.CBox never computes values — it manages ordering, visibility, and serialization
5.PalBox always serializes — CALL_PAL is always a serialization boundary
6.Pipeline controls timing; Boxes control meaning — Boxes never advance the pipeline or own cycles
•Boxes do not own architectural state — state lives in the pipeline slot, register files, and shared subsystems
•Boxes do not call the pipeline — they write results to the slot and return
•Boxes do not advance cycles — the pipeline's tick() method controls time
•Boxes do not communicate implicitly — all cross-domain coordination happens through pipeline slots, shared subsystems (GuestMemory, ReservationManager), or explicit APIs
•Boxes do not call other Boxes directly — unless explicitly allowed (e.g., a grain may call both EBox for address computation and MBox for the memory access)
IBox → GuestMemory (fetch), Ev6Translator (ITB), GrainResolver (decode)
EBox → Register files (read/write via slot), FaultDispatcher (exception signaling)
FBox → FP register files (read/write via slot), FPCR (FP control register)
MBox → GuestMemory (load/store), Ev6Translator (DTB), ReservationManager (LL/SC)
CBox → WriteBufferManager (drain), MemoryBarrierCoordinator (SMP), BranchPredictor, mmio_Manager
PalBox → PalService (PAL call implementation), IRQPendingState (interrupts), InterruptRouter
See Also: Chapter 11 - Architectural Invariants; Chapter 14 – Execution Domains (“Boxes”).