10.13 Summary

<< Click to Display Table of Contents >>

Navigation:  ASA-EMulatR Reference Guide > Introduction > Architecture Overview > Chapter 10 – Devices and Memory-Mapped I/O (MMIO) >

10.13 Summary

The EMulatR device and MMIO subsystem provides a strongly ordered, interrupt-driven device model that matches Alpha AXP hardware behavior.

 

Device System Inventory

 

MMIOManager — MMIO dispatch engine, region table, handler routing (114 lines)

IDeviceEmulator — abstract device interface, lifecycle and MMIO contract (266 lines)

mmio_core — MMIOStatus enum (15 values), mmio_DeviceClass enum (15 classes), MMIOWindow struct, allocation/degradation types (405 lines)

mmio_structs — supporting MMIO data structures (82 lines)

DeviceCatalog — template database, PCI ID lookup, class defaults (130 lines)

DeviceTemplate — complete device specification with PCI identity, BAR/IRQ requirements, DMA capabilities (208 lines)

DMACoherencyManager — DMA cache coherency, LL/SC invalidation, SMP coordination (579 lines)

Total: 1,784 lines across seven MMIO/device headers.

 

Key Takeaways

 

1.MMIO is strongly ordered — no reordering, no buffering, no speculation, writes bypass write buffer

2.Devices are asynchronous — MMIO commands trigger work; completion signals via interrupts

3.MMIO access is synchronous — completes in EX stage, pipeline may stall, result returned immediately

4.IDeviceEmulator defines the device contract — initialize, onRead, onWrite, onReset, onFence

5.MMIOManager routes by physical address — function-pointer handlers for maximum performance

6.DeviceCatalog provides template-based device registration — PCI ID, class, and custom key lookups

7.DMA operates on GuestMemory — DMACoherencyManager handles cache coherency and LL/SC invalidation

8.PAL mediates privileged device control — all device interrupts enter PAL

9.SMP devices are globally visible — concurrent vCPU access, device provides internal locking

10.Degraded devices are tracked, not fatal — system boots with reduced functionality

 

See Also: Chapter 11 - Architectural Invariants( next chapter).