M1平台其他x86-64模拟器能否复用Rosetta 2的优化技术?
我十分好奇在Apple M1平台上,使用Rosetta 2运行x86-64二进制文件,与Docker Desktop借助QEMU实现的模拟方案二者之间存在巨大性能差异的原因。
我理解常规模拟运行速度慢的普遍原因,目前公开技术讨论中对Rosetta 2运行效率极高的核心解释为:通常情况下,ARM与x86采用完全相反且互不兼容的内存寻址方案,会产生极高的模拟开销,但M1芯片通过硬件优化支持两种寻址方案的内存访问,实际运行Rosetta 2转换的指令时,会设置一个标志位告知处理器切换为x86风格寻址模式。
假设上述解释合理,那么从技术层面来看,该优化是否可用于全硬件模拟场景,比如运行x86-64 Linux Docker容器,或是运行VMware Fusion/VirtualBox这类方案的全x86-64 Windows桌面虚拟机?还是说这类场景中的独立操作系统层会阻碍内存顺序优化的使用?
另外,该处理器模式(对应标志位或指令)是否已公开文档供第三方使用,还是苹果专属的私有特性?
2023年1月31日补充更新(供后续参考)
- 苹果于2022年6月左右通过Virtualization框架推出了Rosetta 2对Linux虚拟机的支持
- Mac版Docker Desktop也在2023年1月12日发布的
4.16.0版本中,推出了基于该特性实现x86容器运行支持的测试功能
内容的提问来源于stack exchange,提问作者NReilingh
相关产品推荐
相关产品推荐

