QEMU 与 gem5 介绍
本章介绍协同仿真中的两个模拟器:QEMU 负责客户机运行环境与功能仿真,gem5 负责 MI300X 的性能仿真。
功能仿真与性能仿真
QEMU 作为 vhost 运行客户机 Linux、amdgpu 驱动和 ROCm 程序,提供 CPU、内存与 PCIe 等运行环境。它也可以作为 device model 进程,通过 vfio-user 导出 PCI 设备,只保证功能正确,不提供微架构时序。gem5 则对 MI300X 的命令处理器、执行单元、缓存和内存层次建模,提供性能相关的时序行为。
仿真器 |
角色 |
关注点 |
|---|---|---|
QEMU(vhost) |
客户机运行环境 |
CPU、内存、PCIe、启动、QMP 与串口 |
QEMU(device model) |
PCI 设备功能模型 |
配置空间、BAR、中断等功能行为 |
gem5 |
MI300X 性能模型 |
PM4/SDMA、IH、GPU VM、Shader/CU 与 Ruby 内存层次 |
设备实现的选择
拓扑通过设备适配器决定设备由谁实现:gem5-mi300x使用 gem5 的 MI300X 性能模型,qemu-device使用 QEMU 提供的功能设备模型,mixed-models机器同时使用两类设备。第 5 章在机器目录中标注每个机器用到的适配器,适配器契约见 设备适配器。
本章内容
推荐阅读路径
先理解两个仿真器的分工:本页与 QEMU 的两个职责、gem5 的定位:性能仿真。
关心客户机如何启动:QEMU 作为 vhost。
关心 QEMU 功能设备模型:QEMU 作为 device model。
关心 MI300X 模型细节:MI300X PCI/BAR 接口及其后的页面。