显然,QEMU是唯一能够在新的苹果硅(M1、M2等)上模仿x86操作系统的开源代码。
苹果公司生产了Rosetta 2,理论上,它所做的和QEMU在这些场景中所做的完全一样。它将x86 (英特尔)指令转换为新的苹果硅处理器支持的指令集。
Rosetta 2具有出色的性能,一些x86应用程序甚至比在本地x86硬件上运行的性能更好。另一方面,在苹果硅上运行x86 Linux时,QEMU甚至没有接近它。
罗塞塔怎么能有这么好的表现?有什么“秘密”只有苹果知道,他们的架构从来没有与QEMU项目共享?任何禁止QEMU访问的API?
发布于 2022-09-06 16:34:01
Rosetta和QEMU都是仿真器。然而,他们以截然不同的方式处理这个问题。
QEMU
为了模拟Linux系统,QEMU还必须模拟存储设备、控制台输出设备、以太网设备、键盘和整个CPU。有了这个框架,它就能模仿每一条指令,只要及时翻译就能完成所有的事情。从Linux内核到/bin/ls命令。
QEMU的英特尔模仿通常很少有限制。您可以运行大多数英特尔操作系统和相关应用程序。
罗塞塔2
另一方面,苹果的模仿发生在应用程序发布之前。整个二进制文件都是从x86转换到苹果硅的,并发布了。翻译完后,应用程序实际上是进行本机arm64系统调用的本机macOS二进制文件。
苹果的文档是这样解释的:
如果一个可执行文件只包含英特尔指令,macOS会自动启动Rosetta并开始翻译过程。翻译完成后,系统将启动已翻译的可执行文件以代替原文件。然而,翻译过程需要时间,因此用户可能会感觉到翻译后的应用程序启动或运行的速度有时会更慢。
罗塞塔2有一些重大的限制。例如,您不能使用Intel内核扩展、虚拟化x86_64计算机平台(例如并行)的虚拟机应用程序,也不能使用AVX/AVX 2/AVX 512矢量指令。
https://stackoverflow.com/questions/73605175
复制相似问题