Apple’s Rosetta 2 vs Windows x86 Emulation: Everything Explained

Apple created history when it launched the new MacBooks with its in-house ARM-based Apple M1 processor, replacing Intel processors after more than a decade. With such a huge transition, there was a gargantuan task on Apple’s hand to maintain app compatibility on M1. However, it appears Apple has pulled it off through its powerful translation layer — Rosetta 2. We have already seen how Windows on ARM failed to entice users because of compatibility issues with x86 apps. So what makes Rosetta 2 so powerful and why Windows x86 emulation does not seem to have that promise? Well, to find the answer, let’s go ahead and compare Apple’s Rosetta 2 vs Windows x86 Emulation side by side.

Apple’s Rosetta 2 vs Windows x86 Emulation: Everything You Need to Know

Here, we have mentioned all the sections we have covered so you can easily find all the information. You can click on the link to seamlessly move between different sections.

How Apple’s Rosetta 2 Works?

After the introduction of Rosetta in 2006 during the PowerPC-Intel transition, Apple has announced a much-improved Rosetta 2 in 2020 for seamless Intel-Apple Silicon transition. For the uninitiated, Rosetta 2 is the translation layer that allows you to use Intel-based apps on Apple Silicon Macs. But how does this powerful translation layer work? There is little information on this subject so we will try to dissect Rosetta 2 and understand how Rosetta 2 functions.

Apple's Rosetta 2 vs Windows x86 Emulation

First of all, Rosetta 2 is a translation layer which means it translates the instruction sets of Intel x86 architecture into ARM-based Apple Silicon architecture. When I say instruction set, it means the commands (also called machine code in computing) needed to execute a program of one architecture on another. Since x86 and ARM architectures are drastically different, this translation is required for smooth functioning of Intel-based apps.

Now the question comes, how does this translation happen and how is Rosetta managing to run heavy x86 apps on ARM Macs seamlessly? You can attribute the main reason to the Ahead-of-time (AOT) compiler that Apple has deployed on Rosetta 2. Earlier with Rosetta in 2006, Apple was only using the Just-in-time (JIT) compiler for static binary translation. Now with the AOT compiler on Rosetta 2, Apple Silicon is able to translate and compile the code on the fly through dynamic binary translation.

What it means is that Rosetta 2 now uses both AOT and JIT compiler, depending on the scenario. Even before you have opened an app, Rosetta 2 uses the AOT compiler during the app installation to translate the code. It makes the Intel-based app behave like a Universal app made natively for the Apple Silicon. In cases where the parameters are not known or the values will be generated in the runtime, Rosetta 2 uses JIT for real-time translation.

In tandem, Rosetta 2 is able to translate x86 instruction sets to ARM-specific code much before and in a faster way, bringing the performance difference between Universal native apps and Intel-based apps to a narrow margin.

How Windows x86 Emulation Works?

Unlike Apple, Microsoft has not fully embraced ARM and there has been a slow development on this front. The company has so far licensed only a few ARM-based Windows laptops including the Surface Pro X and some always-connected PCs by HP, Lenovo, etc. The main reason behind the slow adoption of ARM-based Windows laptops is apparently the lack of support for x86-64 bit (Intel-based 64-bit) apps which cover the bulk of modern Windows apps.

As of now, ARM-based Windows laptops only support native apps built on the ARM instruction set and 32-bit Intel-based apps which run through Windows x86 Emulation. You can conclude that Windows x86 Emulation has been a bottleneck for smooth transitioning to ARM. Coming to the question, why can’t Microsoft pull off something like Rosetta 2 on Windows 10?

IrfanView running through x86 Emulator on Windows 10X

Well, to answer your question, it already does. Contrary to popular perception, Microsoft actually uses the same approach as Rosetta— translating the binaries to machine code through its WOW64 layer. According to a 2018 Microsoft document, “The WOW64 layer of Windows 10 allows x86 code to run on the ARM64 version of Windows 10. x86 emulation works by compiling blocks of x86 instructions into ARM64 instructions with optimizations to improve performance. A service caches these translated blocks of code to reduce the overhead of instruction translation and allow for optimization when the code runs again.”

Apart from that, in September 2020, Microsoft announced that a new x86 emulation is coming to ARM-based Windows laptops next year. In addition, it will also bring support for Intel-based 64-bit apps on ARM silicon. As for the compiler, there is very little information on this subject. However, it’s known that Microsoft has been using JIT for real-time translation and compilation. We will have to wait and see what the new x86 emulator has in the store when it launches next year.

Apple’s Rosetta 2 vs Windows x86 Emulation: Translation Performance

While the new Windows x86 emulation is due to arrive next year, there are some other issues that make x86 translation on Windows much slower than Rosetta. First off, macOS has to support only two architectures: ARM 64-bit and x86 64-bit. Apple did away with 32-bit app support in 2019. In comparison, Windows on ARM supports ARM 32-bit and 64-bit architecture; x86 32-bit and x86 64-bit that is coming next year. With such a resource overhead, it’s difficult to make translation faster.

Next, Windows has to maintain backward-compatibility with thousands of programs, plugins, tools, outdated libraries, and whatnot. Whereas, Apple’s tight control of the platform ensures developers are always on the modern framework for developing apps which in turn, helps in making such a huge transition. Besides that, as Apple has already done a successful transition from PowerPC to Intel Macs (2006-2009) in the past, it has a far better experience to pull something like this.

Lastly, the performance difference between Qualcomm’s Snapdragon 8cx (found on Windows-based ARM laptops) and Apple M1 is significant. Even the latest Snapdragon 888 is at least a generation behind the Apple A14 Bionic. There is good news though. Qualcomm has announced the next iteration of desktop processor — the Snapdragon 8cx Gen 2 5G — in September, and it will be available on ARM-based Windows laptops next year. The combination of a new chip and improved emulation may do the trick for Microsoft.

Apple’s Rosetta 2 vs Windows x86 Emulation: Which is the Winner?

It’s clear that Rosetta 2 is pretty powerful and Apple has done a fantastic job at bringing app support for Intel-based programs. At present, Windows on ARM may not look that promising, but given Microsoft’s announcement of the new emulation method, it surely raises hope for Windows users. It will be left to be seen if Microsoft one-ups Apple in the next quarter. Anyway, that is all from us. If you have any questions then comment down below and let us know.

Comments 2
  • Gohar says:

    I think you have AOT and JIT swapped – they now do JIT, they used to do AOT.

  • Hareesh says:

    thank you for such a detailed article

Leave a Reply