Architecture overview

This chapter explains which components make up the system, how a session flows, how memory and vfio-user connect QEMU with the device models, and what trade-offs those choices make.

What this chapter covers

Design goals

  • Run a real Linux guest and the ROCm software stack in QEMU, with a usable CPU, PCIe enumeration and standard devices;

  • model MI300X performance in gem5 so timing and microarchitecture work is separate from functional correctness;

  • connect the two with the standard vfio-user protocol, without co-simulation patches on the QEMU side;

  • declare machines and devices in YAML, with plans that can be previewed, supervised and cleaned up;

  • share guest memory and VRAM through memory-mapped files instead of copying large buffers.

Relation to the other chapters

Chapter

Content

Getting Started

Builds and the first session

This chapter

Components, execution flow, memory, protocol and decisions

Cosim Launcher

CLI, YAML pipeline, session lifecycle and the Rust workspace

QEMU and gem5

QEMU vhost/device model and gem5 MI300X model details

Topology and hardware support

Machine catalog, host/device/vHost and writing YAML