4.10 Cross-Box Interaction Rules

<< 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.

 

Normative Rules

 

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

 

Communication Rules

 

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)

 

Box Dependency Summary

 

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”).