返回首页
最新
Miralis 是一个 RISC-V 固件,它实现了 RISC-V 固件的虚拟化。换句话说,它在用户空间中运行固件(M 模式软件在 U 模式下运行)。<p>这一点的实现本身就很有趣:实际上,并不是所有的指令集架构(ISA)都可以被虚拟化,固件模式同样如此。这一切归结于虚拟化的要求[1],如果你还没有接触过,这是一篇很值得阅读的文章。例如,Arm 的 EL3 不能被虚拟化,因为某些指令(如 `cpsid`)是敏感的,但不会触发陷阱(在用户空间中,`cpsid` 是一个无操作指令)。<p>如果你拥有 VisionFive 2 或 HiFive Premier P550,可以尝试一下,具体的说明在文档中[2, 3]。当然,它也可以在 QEMU 上运行。<p>作为一个研究项目,Miralis 还被用作探索其他研究想法的工具,例如超监视器的自动验证[4]。例如,我们通过将 Miralis 的实现与参考 RISC-V 可执行规范[5] 进行比较,验证了指令仿真,我们将其翻译为 Rust。<p>在 Miralis 上工作非常有趣,我希望你也会觉得它很有意思!<p>[1]: <a href="https://dl.acm.org/doi/pdf/10.1145/361011.361073" rel="nofollow">https://dl.acm.org/doi/pdf/10.1145/361011.361073</a><p>[2]: <a href="https://miralis-firmware.github.io/docs/platforms/visionfive2" rel="nofollow">https://miralis-firmware.github.io/docs/platforms/visionfive2</a><p>[3]: <a href="https://miralis-firmware.github.io/docs/platforms/premierp550" rel="nofollow">https://miralis-firmware.github.io/docs/platforms/premierp550</a><p>[4]: <a href="https://charlycst.github.io/papers/lightweight-hypervisor-verif.pdf" rel="nofollow">https://charlycst.github.io/papers/lightweight-hypervisor-verif.pdf</a><p>[5]: <a href="https://github.com/riscv/sail-riscv">https://github.com/riscv/sail-riscv</a>
如何解释在当今时代,尽管氛围编程有效,工程原理仍然重要?