Linux + QEMU 实现系统态翻译
qeme code flow [ref]
HAMT : 利用 Dune 构建裸金属环境
利用 dune 可以将 QEMU 放到 guest 态, 从而 QEMU 可以直接访问 TLB 来加速访存
Captive : 利用 unikernel 构建裸金属环境
captive 将二进制翻译器放到 guest 态从而其可以获取直接访问系统资源的能力。
[A Retargetable System-Level
DBT Hypervisor]
这启发我们, 其实可以将二进制翻译器直接放到裸金属上。
Transmeta
Transmeta 公司推出的 Crusoe VLIW 芯片,其利用 Code Morphing Software (CMS) 将 X86 指令翻译为 VLIW 指令,并使用硬件加速 Speculation , Precise exceptions 和 MMIO 访问等。 [The Transmeta Code Morphing Software: Using Speculation, Recovery, and Adaptive Retranslation to Address Real-Life Challenges]
Linux Kernel Maps [ref]
Linux 内核很强大,但是对于系统态二进制翻译器而言,大多数功能不需要,其他的进程对于 QEMU 而言是只是干扰
QEMU 可以运行在各种操作系统上,支持 kvm tcg hvf xen 等 cpu 虚拟化方案,支持多种设备的模拟。但是我们只需要一个在 LoongArch 上运行的二进制翻译器。
unikernel: 只为一个进程服务的 guest os