|
<< Click to Display Table of Contents >> Navigation: ASA-EMulatR Reference Guide > Introduction > Architecture Overview > Chapter 12 – AlphaCPU Core > 12.13 Summary |
AlphaCPU is the sole execution authority in EMulatR. Nothing executes unless AlphaCPU allows it.
AlphaCPU.h — 952 lines (mostly header-only inline methods)
AlphaCPU.cpp — constructor, destructor, executeLoop() (MOC requirements)
RedirectReason.h — 11-value control flow redirect classification
1.AlphaCPU = one physical Alpha processor — one per QThread, independent execution, explicit CPUId
2.Owns all per-CPU state — six execution boxes (IBox, EBox, FBox, MBox, CBox, PalBox), pipeline, interrupt subsystem, fault dispatcher, translation engine
3.Does not own shared state — GuestMemory, ReservationManager, IPIManager, MemoryBarrierCoordinator accessed via injected references
4.executeLoop() is the run engine — while(!stop) { pause check → halt check → runOneInstruction() }
5.runOneInstruction() is the hot path — (1) check interrupts, (2) IBox fetch, (3) pipeline tick, (4) handle BoxResult flags
6.Faults dispatched only from WB — faultWasDispatched() gate ensures precise exception semantics
7.handleInterrupt() → claim → break reservation → deliverInterrupt → flush — all before next fetch
8.handleRedirect() unifies all control flow — 11 RedirectReason values covering branches, PAL, traps, interrupts
9.PAL integration via enterPalMode()/executeREI() — inline on critical path, full context save/restore
10.Four error severities — WARNING (log), RECOVERABLE (fault), FATAL (halt CPU), MACHINE_CHECK (architectural exception)
See Also: Chapter 13 – AlphaPipeline Implementation (next chapter).