12.13 Summary

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

 

Implementation Inventory

 

AlphaCPU.h — 952 lines (mostly header-only inline methods)

AlphaCPU.cpp — constructor, destructor, executeLoop() (MOC requirements)

RedirectReason.h — 11-value control flow redirect classification

 

Key Takeaways

 

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