7.7.2. 架构

QEMU 支持两种操作模式:用户模式仿真和系统模式仿真。用户模式仿真 允许一种架构的 CPU 构建的程序在另一种架构的 CPU 上执行,动态翻译/转换相应的指令/系统调用等。如果在相同架构的系统上进行用户模式仿真,可以实现近似本地的性能。

系统模式仿真允许对整个系统进行仿真,包括处理器和配套的外围设备。

QEMU的优势在于其快速、可移植的动态翻译程序。动态翻译程序 允许在运行时将用于目标(Guest)CPU 的指令转换为用于主机 CPU,从而实现仿真。

QEMU 实现动态翻译的方法是,首先将目标指令转换为微操作。这些微操作是一些编译成对象的 C 代码。然后构建核心翻译程序。它将目标指令映射到微操作以进行动态翻译。这不仅可产生高效率,而且还可以移植。

QEMU 的动态翻译程序还缓存了翻译后的代码块,使翻译程序的内存开销最小化。当初次使用目标代码块时,翻译该块并将其存储为翻译后的代码块。QEMU 将最近使用的翻译后的代码块缓存在一个 16 MB 的块中。QEMU 甚至可以通过在缓存中将翻译后的代码块变为无效来支持代码的自我修改。