64-bit x86 Emulation Officially Coming to Windows on ARM
For the last couple of years, it’s been possible to buy an ARM PC that runs Windows, with an average user experience that ranges from “acceptable” to “lousy,” depending on what kind of work you need to do with your PC.
Some of the problems Windows 10 on ARM is grappling with today are the same issues Windows RT suffered from in 2012. While Windows on ARM in 2020 has the x86 emulation capabilities that Windows RT lacked, the feature has been subject to certain restrictions regarding software support. Only 32-bit applications have been supported — and not all of them. Emulated 32-bit gaming is a very hit and miss affair, as this post from Reddit shows.
Now, however, some of these restrictions are going away. In a recent blog post, Microsoft said future versions of Microsoft Edge will use less battery, and that the company is building a native Teams client optimized for Windows on ARM. Finally, the company writes: “We will also expand support for running x64 apps, with x64 emulation starting to roll out to the Windows Insider Program in November.”
This is a Big Deal… if the CPUs Can Handle It
On paper, getting x86-64 emulation into ARM is absolutely a big deal. Customers resist being stuck in situations where a piece of software they need to run might be incompatible with their processor. But how effectively will 64-bit x86 applications be able to run on ARM CPUs?
This is very much an open question. Check reviews of the Surface Pro X, and you’ll note that none of them have very nice things to say about the software side of the experience. There are a handful of native applications that run well and everything that falls into the x86 emulation flavor winds up varying degrees of bad. Many games don’t work (emulation support is limited to OGL 1.1). Games that rely on anti-cheat software don’t work, because that software hasn’t been ported to ARM yet. Microsoft has a full list of the current limitations here.
In order to make 64-bit Windows on ARM an attractive prospect, Microsoft needs to deliver four specific things:
Native Apps: One of the ways to make 64-bit x86 emulation more attractive is to reassure people they’ll hardly ever need to use it. This may require straight-up paying the Top 500 most-commonly installed PC app vendors to port their software. x86 has a four-decade lead on ARM when it comes to the total number of native applications, and throwing some cash at this problem is the most straightforward way to make it go away.
Low-Level Driver and API Support: API support can overlap with app support depending on the context, but I decided to group it up with drivers for thematic purposes. The shift to supporting 64-bit x86 applications should include better driver support at every level, from anti-cheat software to accessories and peripherals. One of Microsoft’s biggest goals with the next version of Windows on ARM systems should be to eliminate as many low-level snags and “gotchas” as is humanly possible. Find a way to extend gaming support to a version of OpenGL written after the Clinton Administration.
Faster SoCs: It’s not enough to improve the software side of the equation — the hardware inside these systems needs to come up a few notches as well. This is the Achilles heel of emulation; it’s much harder to improve performance when simultaneously performing code translation. This pressure should reduce as more native applications and better low-level driver and API support become available.
Smooth performance: Several reviews of the Surface Pro X note that the unit often stutters or performs erratically when emulating x86. It’s worth making tasks take slightly longer if the result is a smoother end-user experience. Apps that stutter or hang erratically are much more difficult to navigate than apps that respond at slower but more consistent rates. Faster SoCs, as mentioned above, will help resolve these issues.
How Microsoft responds to the above list will shape the conflict between x86 and ARM in the traditional desktop/laptop space. If the company begins aggressively working to make ARM a full partner in terms of overall software availability, DirectX support, and future game releases, it’s going to bring x86 into direct conflict with ARM in relatively short order. This would be especially true if Nvidia were to use its ARM ownership to build CPU cores specifically intended to challenge Intel and AMD in their core spaces.
Trends like this are why I’ve said we’re looking at the most interesting CPU market in decades. How Microsoft treats ARM will shape the x86-versus-ARM competition. So will Nvidia’s decisions about how to best-leverage its new IP. RISC-V is continuing to gain steam. As for these Windows on ARM systems, Microsoft has said it’s working with Acer, HP, Lenovo, Samsung, and its own Surface division to bring Windows 10 on ARM to customers.